diff options
Diffstat (limited to 'src/main/java/com')
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. */ |