aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar ruperts <ruperts@google.com>2018-07-27 13:08:41 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-27 13:11:03 -0700
commit25e75dc2f15c8fd405226fd3a3f68a3a7f857392 (patch)
tree1156d36290ffb878fcdce1ba4d9db67369bb254d /src/main/java/com/google/devtools/build/lib/rules/objc
parentc9efd06dc6cfef400b288becf96aed1f5ba228b2 (diff)
Automated rollback of commit 71479d3ef1627a30b9ec75ca50e6a90cf7db6377.
*** Reason for rollback *** http://https://github.com/bazelbuild/bazel/commit/71479d3ef1627a30b9ec75ca50e6a90cf7db6377 broke thousands of targets in the nightly, notably: //abuse/ares/rulesystem/generator/python/rule_set:main (x1754) //net/encapdecap/common/templates:gen_dr_scopes (x903) //testing/cloud/vex/public:vex_main_internal (x782) //wireless/android/play/playlog/server:playlog_server (x401) *** Original change description *** C++: Removes calls to setCcLinkparamsStore of CcLinkingInfo.Builder This is in preparation for deleting CcLinkParamsStore. All remaining calls to the setCcLinkparamsStore method of the CcLinkingInfo builder have been removed. RELNOTES:none PiperOrigin-RevId: 206361808
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java42
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryCcLinkParamsStore.java61
2 files changed, 66 insertions, 37 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
index ff8e381864..42741b573b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.rules.objc;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -25,16 +24,12 @@ import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTa
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
-import com.google.devtools.build.lib.rules.cpp.ArtifactCategory;
import com.google.devtools.build.lib.rules.cpp.CcCompilationContext;
import com.google.devtools.build.lib.rules.cpp.CcCompilationInfo;
-import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore;
import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo;
-import com.google.devtools.build.lib.rules.cpp.LinkerInputs;
-import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink;
import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes;
import com.google.devtools.build.lib.syntax.Type;
-import com.google.devtools.build.lib.vfs.FileSystemUtils;
import java.util.Map;
import java.util.TreeMap;
@@ -110,14 +105,9 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory {
CcCompilationInfo.Builder ccCompilationInfoBuilder = CcCompilationInfo.Builder.create();
ccCompilationInfoBuilder.setCcCompilationContext(ccCompilationContext);
- CcLinkParams ccLinkParams = buildCcLinkParams(common);
- CcLinkingInfo ccLinkingInfo =
- CcLinkingInfo.Builder.create()
- .setStaticModeParamsForDynamicLibrary(ccLinkParams)
- .setStaticModeParamsForExecutable(ccLinkParams)
- .setDynamicModeParamsForDynamicLibrary(ccLinkParams)
- .setDynamicModeParamsForExecutable(ccLinkParams)
- .build();
+ CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create();
+ ccLinkingInfoBuilder.setCcLinkParamsStore(
+ new CcLinkParamsStore(new ObjcLibraryCcLinkParamsStore(common)));
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
.addNativeDeclaredProvider(common.getObjcProvider())
@@ -127,33 +117,11 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory {
.addProvider(
InstrumentedFilesProvider.class,
compilationSupport.getInstrumentedFilesProvider(objectFilesCollector.build()))
- .addNativeDeclaredProvider(ccLinkingInfo)
+ .addNativeDeclaredProvider(ccLinkingInfoBuilder.build())
.addOutputGroups(outputGroupCollector)
.build();
}
- public CcLinkParams buildCcLinkParams(ObjcCommon common) {
- ImmutableSet.Builder<LibraryToLink> libraries = new ImmutableSet.Builder<>();
- ObjcProvider objcProvider = common.getObjcProvider();
- for (Artifact library : objcProvider.get(ObjcProvider.LIBRARY)) {
- libraries.add(
- LinkerInputs.opaqueLibraryToLink(
- library,
- ArtifactCategory.STATIC_LIBRARY,
- FileSystemUtils.removeExtension(library.getRootRelativePathString())));
- }
- libraries.addAll(objcProvider.get(ObjcProvider.CC_LIBRARY));
-
- CcLinkParams.Builder builder = CcLinkParams.builder();
- builder.addLibraries(libraries.build());
-
- for (SdkFramework sdkFramework : objcProvider.get(ObjcProvider.SDK_FRAMEWORK)) {
- builder.addLinkOpts(ImmutableList.of("-framework", sdkFramework.getName()));
- }
-
- return builder.build();
- }
-
/** Throws errors or warnings for bad attribute state. */
private static void validateAttributes(RuleContext ruleContext) {
for (String copt : ObjcCommon.getNonCrosstoolCopts(ruleContext)) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryCcLinkParamsStore.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryCcLinkParamsStore.java
new file mode 100644
index 0000000000..a97ba8403d
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryCcLinkParamsStore.java
@@ -0,0 +1,61 @@
+// Copyright 2016 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.rules.objc;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.rules.cpp.AbstractCcLinkParamsStore;
+import com.google.devtools.build.lib.rules.cpp.ArtifactCategory;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
+import com.google.devtools.build.lib.rules.cpp.LinkerInputs;
+import com.google.devtools.build.lib.rules.cpp.LinkerInputs.LibraryToLink;
+import com.google.devtools.build.lib.vfs.FileSystemUtils;
+
+/**
+ * A {@link AbstractCcLinkParamsStore} to be propagated to dependent cc_{library, binary} targets.
+ */
+class ObjcLibraryCcLinkParamsStore extends AbstractCcLinkParamsStore {
+
+ private final ObjcCommon common;
+
+ /**
+ * Create a params store.
+ *
+ * @param common the {@link ObjcCommon} instance for this target.
+ */
+ public ObjcLibraryCcLinkParamsStore(ObjcCommon common) {
+ this.common = common;
+ }
+
+ @Override
+ protected void collect(
+ CcLinkParams.Builder builder, boolean linkingStatically, boolean linkShared) {
+ ObjcProvider objcProvider = common.getObjcProvider();
+
+ ImmutableSet.Builder<LibraryToLink> libraries = new ImmutableSet.Builder<>();
+ for (Artifact library : objcProvider.get(ObjcProvider.LIBRARY)) {
+ libraries.add(LinkerInputs.opaqueLibraryToLink(
+ library, ArtifactCategory.STATIC_LIBRARY,
+ FileSystemUtils.removeExtension(library.getRootRelativePathString())));
+ }
+ libraries.addAll(objcProvider.get(ObjcProvider.CC_LIBRARY));
+ builder.addLibraries(libraries.build());
+
+ for (SdkFramework sdkFramework : objcProvider.get(ObjcProvider.SDK_FRAMEWORK)) {
+ builder.addLinkOpts(ImmutableList.of("-framework", sdkFramework.getName()));
+ }
+ }
+} \ No newline at end of file