diff options
author | 2015-04-09 22:04:18 +0000 | |
---|---|---|
committer | 2015-04-10 08:03:30 +0000 | |
commit | 48f321dd0f8017a3b2ebe8547219e359f6535a6b (patch) | |
tree | f8ebc645f005bf900c14d4e58bb982ef6133f2f7 /src/main | |
parent | 92e30d98c1609fb5f84a52585b3cd8c5ebc9f9ab (diff) |
objc: Add flag to disable per-proto includes
--
MOS_MIGRATED_REVID=90750827
Diffstat (limited to 'src/main')
3 files changed, 25 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java index 4c790267b5..4fa7f85c1a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java @@ -121,6 +121,12 @@ public class ObjcCommandLineOptions extends FragmentOptions { converter = LabelConverter.class) public Label defaultProvisioningProfile; + @Option(name = "objc_per_proto_includes", + defaultValue = "true", + category = "undocumented", + help = "Whether to add include path entries for every individual proto file.") + public boolean perProtoIncludes; + @VisibleForTesting static final String DEFAULT_MINIMUM_IOS = "7.0"; @VisibleForTesting static final String DEFAULT_IOS_CPU = "i386"; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java index 32c517ddb5..6d4310d5cd 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java @@ -57,6 +57,7 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment { private final CompilationMode compilationMode; private final List<String> iosMultiCpus; private final String iosSplitCpu; + private final boolean perProtoIncludes; // We only load these labels if the mode which uses them is enabled. That is know as part of the // BuildConfiguration. This label needs to be part of a configuration because only configurations @@ -86,6 +87,7 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment { this.defaultProvisioningProfileLabel = objcOptions.defaultProvisioningProfile; this.iosMultiCpus = Preconditions.checkNotNull(objcOptions.iosMultiCpus, "iosMultiCpus"); this.iosSplitCpu = Preconditions.checkNotNull(objcOptions.iosSplitCpu, "iosSplitCpu"); + this.perProtoIncludes = objcOptions.perProtoIncludes; } public String getIosSdkVersion() { @@ -263,4 +265,11 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment { } } } + + /** + * @return whether to add include path entries for every proto file's containing directory. + */ + public boolean perProtoIncludes() { + return this.perProtoIncludes; + } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java index 85ca0b0c45..f4a9a10fd3 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java @@ -153,11 +153,16 @@ public class ObjcProtoLibrary implements RuleConfiguredTargetFactory { .setPchFile(Optional.<Artifact>absent()) .build(); - ImmutableSet<PathFragment> searchPathEntries = new ImmutableSet.Builder<PathFragment>() - .add(workspaceRelativeOutputDir) - .add(generatedProtoDir) - .addAll(Iterables.transform(protoGeneratedHeaders, PARENT_PATHFRAGMENT)) - .build(); + ImmutableSet.Builder<PathFragment> searchPathEntriesBuilder = + new ImmutableSet.Builder<PathFragment>() + .add(workspaceRelativeOutputDir); + if (ruleContext.getConfiguration().getFragment(ObjcConfiguration.class).perProtoIncludes()) { + searchPathEntriesBuilder + .add(generatedProtoDir) + .addAll(Iterables.transform(protoGeneratedHeaders, PARENT_PATHFRAGMENT)); + } + ImmutableSet<PathFragment> searchPathEntries = searchPathEntriesBuilder.build(); + ObjcCommon common = new ObjcCommon.Builder(ruleContext) .setCompilationArtifacts(compilationArtifacts) .addUserHeaderSearchPaths(searchPathEntries) |