aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Peter Schmitt <schmitt@google.com>2015-09-10 18:36:10 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-09-11 09:45:28 +0000
commit5831c6957d29e8fda0383bfe337533444c5155c8 (patch)
tree54f2f5fd122d6cb2b9be17e23a401bad78e9bb04 /src/main/java/com
parent8faeb8ff5b1b3b14b57c010b44a09ff4bdb09294 (diff)
Propagate includes and defines attributes from cc_library to dependent objc_libraries.
-- MOS_MIGRATED_REVID=102775222
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java5
3 files changed, 13 insertions, 1 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 05eaa44702..6c2f99cf7b 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
@@ -25,6 +25,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.Flag.USES_SW
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.HEADER;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.IMPORTED_LIBRARY;
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.SDK_DYLIB;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.SDK_FRAMEWORK;
@@ -235,6 +236,7 @@ public final class CompilationSupport {
"-iquote", ObjcCommon.userHeaderSearchPaths(ruleContext.getConfiguration()))
.addBeforeEachExecPath("-include", compilationArtifacts.getPchFile().asSet())
.addBeforeEachPath("-I", objcProvider.get(INCLUDE))
+ .addBeforeEachPath("-isystem", objcProvider.get(INCLUDE_SYSTEM))
.add(otherFlags)
.addFormatEach("-D%s", objcProvider.get(DEFINE))
.add(coverageFlags.build())
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 7c2c1d9a44..657062b730 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
@@ -33,6 +33,7 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.GENERAL_RESO
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.HEADER;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.IMPORTED_LIBRARY;
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.INSTRUMENTED_SOURCE;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LIBRARY;
import static com.google.devtools.build.lib.rules.objc.ObjcProvider.LINKED_BINARY;
@@ -399,8 +400,12 @@ public final class ObjcCommon {
.addTransitiveWithoutPropagating(directDepObjcProviders);
for (CppCompilationContext headerProvider : depCcHeaderProviders) {
- // TODO(bazel-team): Also account for custom include settings to go into header search paths
objcProvider.addTransitiveAndPropagate(HEADER, headerProvider.getDeclaredIncludeSrcs());
+ objcProvider.addAll(INCLUDE, headerProvider.getIncludeDirs());
+ // TODO(bazel-team): This pulls in stl via CppHelper.mergeToolchainDependentContext but
+ // probably shouldn't.
+ objcProvider.addAll(INCLUDE_SYSTEM, headerProvider.getSystemIncludeDirs());
+ objcProvider.addAll(DEFINE, headerProvider.getDefines());
}
for (CcLinkParamsProvider linkProvider : depCcLinkProviders) {
objcProvider.addTransitiveAndPropagate(
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 24f33e479c..e8be3684fa 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
@@ -105,6 +105,11 @@ public final class ObjcProvider implements TransitiveInfoProvider {
public static final Key<PathFragment> INCLUDE = new Key<>(LINK_ORDER);
/**
+ * Include search paths specified with {@code -isystem} on the command line.
+ */
+ public static final Key<PathFragment> INCLUDE_SYSTEM = new Key<>(LINK_ORDER);
+
+ /**
* Key for values in {@code defines} attributes. These are passed as {@code -D} flags to all
* invocations of the compiler for this target and all depending targets.
*/