aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-09-23 22:58:43 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2015-09-24 14:20:18 +0000
commitd7f6e701b890498c054324571f4c816a96f6a89a (patch)
treeef87de9ba738702bf2b4aac7b8ac26464740a7bc /src
parent53330510c6ea5cd6257b9981b44e52d15a9e01aa (diff)
Propagates cc_library linkopts attribute to dependent objc_libraries.
-- MOS_MIGRATED_REVID=103792157
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java5
3 files changed, 12 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index e20ae818ef..521784ad1d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -778,6 +778,7 @@ public final class CompilationSupport {
.addExecPaths(ccLibraries)
.addBeforeEach("-force_load", Artifact.toExecPaths(objcProvider.get(FORCE_LOAD_LIBRARY)))
.add(extraLinkArgs)
+ .add(objcProvider.get(ObjcProvider.LINKOPT))
.build();
if (ruleContext.getConfiguration().isCodeCoverageEnabled()) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index 8018218436..64e050db9a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -35,6 +35,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INCLUDE;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.INCLUDE_SYSTEM;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LIBRARY;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINKED_BINARY;
+import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINKOPT;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.MODULE_MAP;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_DYLIB;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_FRAMEWORK;
@@ -61,6 +62,7 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.rules.cpp.CcCommon;
+import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
import com.google.devtools.build.lib.rules.cpp.CppCompilationContext;
import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
@@ -462,8 +464,10 @@ public final class ObjcCommon {
objcProvider.addAll(DEFINE, headerProvider.getDefines());
}
for (CcLinkParamsProvider linkProvider : depCcLinkProviders) {
- objcProvider.addTransitiveAndPropagate(
- CC_LIBRARY, linkProvider.getCcLinkParams(true, false).getLibraries());
+ CcLinkParams params = linkProvider.getCcLinkParams(true, false);
+ objcProvider
+ .addAll(LINKOPT, params.flattenedLinkopts())
+ .addTransitiveAndPropagate(CC_LIBRARY, params.getLibraries());
}
if (compilationAttributes.isPresent()) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
index 5e3e5204e8..d534a40638 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java
@@ -208,6 +208,11 @@ public final class ObjcProvider implements TransitiveInfoProvider {
public static final Key<LinkerInputs.LibraryToLink> CC_LIBRARY = new Key<>(LINK_ORDER);
/**
+ * Linking options from dependencies.
+ */
+ public static final Key<String> LINKOPT = new Key<>(LINK_ORDER);
+
+ /**
* Flags that apply to a transitive build dependency tree. Each item in the enum corresponds to a
* flag. If the item is included in the key {@link #FLAG}, then the flag is considered set.
*/