aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Rumou Duan <rduan@google.com>2015-06-02 18:25:34 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-06-03 13:48:49 +0000
commitf289c573b07b4454038b0699370dad49536476ec (patch)
tree70c72c8992a232f159c222a81024cd95a713b01c /src/main/java/com
parentab928ff69a6645be09a6306f92592ad1f6002940 (diff)
Pass Bazel client workspace root to XcodeGen.
-- MOS_MIGRATED_REVID=95026119
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfiguration.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfigurationLoader.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java9
3 files changed, 23 insertions, 3 deletions
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 81a15e0b5c..c16d632090 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
@@ -18,6 +18,7 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
@@ -25,6 +26,7 @@ import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.rules.objc.ReleaseBundlingSupport.SplitArchTransition.ConfigurationDistinguisher;
import com.google.devtools.build.lib.syntax.Label;
+import com.google.devtools.build.lib.vfs.Path;
import java.util.ArrayList;
import java.util.List;
@@ -63,6 +65,7 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
private final String iosSplitCpu;
private final boolean perProtoIncludes;
private final ConfigurationDistinguisher configurationDistinguisher;
+ @Nullable private final Path clientWorkspaceRoot;
// 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
@@ -74,7 +77,8 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
@Nullable private final Label dumpSymsLabel;
@Nullable private final Label defaultProvisioningProfileLabel;
- ObjcConfiguration(ObjcCommandLineOptions objcOptions, BuildConfiguration.Options options) {
+ ObjcConfiguration(ObjcCommandLineOptions objcOptions, BuildConfiguration.Options options,
+ @Nullable BlazeDirectories directories) {
this.iosSdkVersion = Preconditions.checkNotNull(objcOptions.iosSdkVersion, "iosSdkVersion");
this.iosMinimumOs = Preconditions.checkNotNull(objcOptions.iosMinimumOs, "iosMinimumOs");
this.iosSimulatorDevice =
@@ -94,6 +98,7 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
this.iosSplitCpu = Preconditions.checkNotNull(objcOptions.iosSplitCpu, "iosSplitCpu");
this.perProtoIncludes = objcOptions.perProtoIncludes;
this.configurationDistinguisher = objcOptions.configurationDistinguisher;
+ this.clientWorkspaceRoot = directories != null ? directories.getWorkspace() : null;
}
public String getIosSdkVersion() {
@@ -294,4 +299,12 @@ public class ObjcConfiguration extends BuildConfiguration.Fragment {
public boolean perProtoIncludes() {
return this.perProtoIncludes;
}
+
+ /**
+ * Returns the absolute path of the root of Bazel client workspace. Null if passed-in
+ * {@link BlazeDirectories} is null or Bazel fails to find the workspace root directory.
+ */
+ @Nullable public Path getClientWorkspaceRoot() {
+ return this.clientWorkspaceRoot;
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfigurationLoader.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfigurationLoader.java
index e92c236900..9e9f4997a0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfigurationLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcConfigurationLoader.java
@@ -34,7 +34,7 @@ public class ObjcConfigurationLoader implements ConfigurationFragmentFactory {
Options options = buildOptions.get(BuildConfiguration.Options.class);
ObjcCommandLineOptions objcOptions = buildOptions.get(ObjcCommandLineOptions.class);
- return new ObjcConfiguration(objcOptions, options);
+ return new ObjcConfiguration(objcOptions, options, env.getBlazeDirectories());
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java
index ff24634aa0..de90a52f63 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/XcodeSupport.java
@@ -29,6 +29,7 @@ import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplic
import com.google.devtools.build.lib.rules.objc.ReleaseBundlingSupport.SplitArchTransition.ConfigurationDistinguisher;
import com.google.devtools.build.lib.rules.objc.XcodeProvider.Builder;
import com.google.devtools.build.lib.rules.objc.XcodeProvider.Project;
+import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.xcode.xcodegen.proto.XcodeGenProtos;
import com.google.devtools.build.xcode.xcodegen.proto.XcodeGenProtos.XcodeprojBuildSetting;
@@ -214,7 +215,13 @@ public final class XcodeSupport {
return new ByteSource() {
@Override
public InputStream openStream() {
- return XcodeGenProtos.Control.newBuilder()
+ XcodeGenProtos.Control.Builder builder = XcodeGenProtos.Control.newBuilder();
+ Path workspaceRoot = objcConfiguration.getClientWorkspaceRoot();
+ if (workspaceRoot != null) {
+ builder.setWorkspaceRoot(workspaceRoot.getPathString());
+ }
+
+ return builder
.setPbxproj(pbxproj.getExecPathString())
.addAllTarget(project.targets())
.addBuildSetting(XcodeGenProtos.XcodeprojBuildSetting.newBuilder()