aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/apple
diff options
context:
space:
mode:
authorGravatar Dmitry Shevchenko <dmishe@google.com>2016-10-03 22:12:28 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-10-04 08:55:09 +0000
commitdeeeb31f8ba0f196fbc9ca2a177d59d57ea50b32 (patch)
tree999abbd9c868be741495a0fc63a3ac77b7d31deb /src/main/java/com/google/devtools/build/lib/rules/apple
parent169e68f4f3fcc000cc4fedebf15a9ea9373784e4 (diff)
Add a way to select non-default Xcode toolchain
* Adds a flag --xcode_toolchain which sets TOOLCHAINS env variable for xcrun. * Updates swift_library to work with this flag when selecting Swift runtime location. * By default the flag has a null value and is not set in env. -- MOS_MIGRATED_REVID=135033093
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/apple')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java13
2 files changed, 24 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
index 5d2830a049..3d71ca5ad8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java
@@ -227,6 +227,17 @@ public class AppleCommandLineOptions extends FragmentOptions {
}
}
+ @Option(
+ name = "xcode_toolchain",
+ defaultValue = "null",
+ category = "flags",
+ help = "The identifier of an Xcode toolchain to use for builds. Currently only the toolchains "
+ + "that ship with Xcode are supported. For example, in addition to the default toolchain"
+ + " Xcode 8 has 'com.apple.dt.toolchain.Swift_2_3' which can be used for building legacy"
+ + " Swift code."
+ )
+ public String xcodeToolchain;
+
@Option(name = "apple_bitcode",
converter = AppleBitcodeMode.Converter.class,
// TODO(blaze-team): Default to embedded_markers when fully implemented.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
index 59a6fc1403..e0d242703f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java
@@ -84,6 +84,7 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
private final ImmutableList<String> tvosCpus;
private final AppleBitcodeMode bitcodeMode;
private final Label xcodeConfigLabel;
+ @Nullable private final String xcodeToolchain;
@Nullable private final Label defaultProvisioningProfileLabel;
private final boolean disableNativeSwiftRules;
@@ -127,6 +128,7 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
this.xcodeConfigLabel =
Preconditions.checkNotNull(appleOptions.xcodeVersionConfig, "xcodeConfigLabel");
this.defaultProvisioningProfileLabel = appleOptions.defaultProvisioningProfile;
+ this.xcodeToolchain = appleOptions.xcodeToolchain;
this.disableNativeSwiftRules = appleOptions.disableNativeSwiftRules;
}
@@ -519,6 +521,17 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
return Joiner.on('-').join(components);
}
+ /** Returns the identifier for an Xcode toolchain to use with tools. */
+ @SkylarkCallable(
+ name = "xcode_toolchain",
+ doc = "Identifier for the custom Xcode toolchain to use in build or None if not specified",
+ allowReturnNones = true,
+ structField = true
+ )
+ public String getXcodeToolchain() {
+ return xcodeToolchain;
+ }
+
/**
* Whether the native Swift support should be disabled. Used to deprecate said functionality.
*/