aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Daniel Wagner-Hall <danielwh@google.com>2015-04-09 22:04:18 +0000
committerGravatar Ulf Adams <ulfjack@google.com>2015-04-10 08:03:30 +0000
commit48f321dd0f8017a3b2ebe8547219e359f6535a6b (patch)
treef8ebc645f005bf900c14d4e58bb982ef6133f2f7 /src/main
parent92e30d98c1609fb5f84a52585b3cd8c5ebc9f9ab (diff)
objc: Add flag to disable per-proto includes
-- MOS_MIGRATED_REVID=90750827
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java15
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)