diff options
author | 2015-06-02 18:25:34 +0000 | |
---|---|---|
committer | 2015-06-03 13:48:49 +0000 | |
commit | f289c573b07b4454038b0699370dad49536476ec (patch) | |
tree | 70c72c8992a232f159c222a81024cd95a713b01c /src/main/java/com | |
parent | ab928ff69a6645be09a6306f92592ad1f6002940 (diff) |
Pass Bazel client workspace root to XcodeGen.
--
MOS_MIGRATED_REVID=95026119
Diffstat (limited to 'src/main/java/com')
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() |