aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Tobias Werth <twerth@google.com>2016-12-22 13:44:20 +0000
committerGravatar Klaus Aehlig <aehlig@google.com>2016-12-22 16:39:29 +0000
commita2f2c40afd9221684dbac5984d1d9489d548c3ec (patch)
tree96eb42615d08a6e831b9eb039a59710f957b9657 /src/main/java/com/google/devtools/build/lib
parent8baff88b26276558559a4e30452743025ee4cf02 (diff)
-- PiperOrigin-RevId: 142758502 MOS_MIGRATED_REVID=142758502
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleCommandLineOptions.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/AppleConfiguration.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleCrosstoolTransition.java82
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java13
7 files changed, 17 insertions, 141 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
index 52e4f4cbbf..a539a6c77c 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelConfigurationCollection.java
@@ -19,7 +19,6 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.HashBasedTable;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
import com.google.common.collect.ListMultimap;
import com.google.common.collect.Table;
import com.google.devtools.build.lib.analysis.ConfigurationCollectionFactory;
@@ -35,10 +34,7 @@ import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
import com.google.devtools.build.lib.packages.Attribute.Transition;
-import com.google.devtools.build.lib.packages.Target;
-import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppRuleClasses.LipoTransition;
-import com.google.devtools.build.lib.rules.objc.AppleCrosstoolTransition;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@@ -108,17 +104,6 @@ public class BazelConfigurationCollection implements ConfigurationCollectionFact
return super.getDynamicTransition(configurationTransition);
}
}
-
- @Override
- public BuildConfiguration toplevelConfigurationHook(Target toTarget) {
- return (AppleConfiguration.APPLE_CROSSTOOL_RULE_CLASSES
- .contains(toTarget.getAssociatedRule().getRuleClass()))
- ? Iterables.getOnlyElement(
- configuration
- .getTransitions()
- .getSplitConfigurations(AppleCrosstoolTransition.APPLE_CROSSTOOL_TRANSITION))
- : configuration;
- }
}
@Override
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 6724465d02..648e3963a4 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
@@ -136,16 +136,6 @@ public class AppleCommandLineOptions extends FragmentOptions {
help = "Specifies to target CPU of iOS compilation.")
public String iosCpu;
- @Option(
- name = "apple_crosstool_top",
- defaultValue = "@bazel_tools//tools/cpp:toolchain",
- category = "version",
- converter = LabelConverter.class,
- help = "The label of the crosstool package to be used in Apple and Objc rules and their"
- + " dependencies."
- )
- public Label appleCrosstoolTop;
-
@Option(name = "apple_platform_type",
defaultValue = "IOS",
category = "undocumented",
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 b685056f65..34a6a05664 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
@@ -65,20 +65,8 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
**/
public static final String APPLE_SDK_PLATFORM_ENV_NAME = "APPLE_SDK_PLATFORM";
- /**
- * Rule classes that need a top level transition to the apple crosstool.
- *
- * <p>This list must not contain any rule classes that require some other split transition, as
- * that transition would be suppressed by the top level transition to the apple crosstool. For
- * example, if "apple_binary" were in this list, the multi-arch transition would not occur.
- */
- public static final ImmutableList<String> APPLE_CROSSTOOL_RULE_CLASSES = ImmutableList.of(
- "objc_library",
- "objc_binary",
- "experimental_objc_library");
-
private static final DottedVersion MINIMUM_BITCODE_XCODE_VERSION = DottedVersion.fromString("7");
-
+
private final DottedVersion iosSdkVersion;
private final DottedVersion iosMinimumOs;
private final DottedVersion watchosSdkVersion;
@@ -640,7 +628,5 @@ public class AppleConfiguration extends BuildConfiguration.Fragment {
APPLEBIN_WATCHOS,
/** Distinguisher for {@code apple_binary} rule with "tvos" platform_type. */
APPLEBIN_TVOS,
- /** Distinguisher for the apple crosstool configuration. */
- APPLE_CROSSTOOL,
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleCrosstoolTransition.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleCrosstoolTransition.java
deleted file mode 100644
index 647c97a3be..0000000000
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleCrosstoolTransition.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2016 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.rules.objc;
-
-import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
-import com.google.devtools.build.lib.analysis.config.BuildOptions;
-import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
-import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions;
-import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
-import com.google.devtools.build.lib.rules.cpp.CppOptions;
-import java.util.List;
-
-/**
- * Transition that produces a configuration that causes c++ toolchain selection to use the
- * CROSSTOOL given in apple_crosstool_top.
- */
-public class AppleCrosstoolTransition implements SplitTransition<BuildOptions> {
-
- /**
- * A singleton instance of AppleCrosstoolTransition.
- */
- public static final SplitTransition<BuildOptions> APPLE_CROSSTOOL_TRANSITION =
- new AppleCrosstoolTransition();
-
- @Override
- public boolean defaultsToSelf() {
- return true;
- }
-
- @Override
- public List<BuildOptions> split(BuildOptions buildOptions) {
- BuildOptions result = buildOptions.clone();
- result.get(AppleCommandLineOptions.class).configurationDistinguisher =
- ConfigurationDistinguisher.APPLE_CROSSTOOL;
-
-
- // TODO(b/29355778): Once ios_cpu is retired, introduce another top-level flag (perhaps
- // --apple_cpu) for toolchain selection in top-level consuming rules.
- String cpu = "ios_" + buildOptions.get(AppleCommandLineOptions.class).iosCpu;
- setAppleCrosstoolTransitionConfiguration(buildOptions, result, cpu);
- return ImmutableList.of(result);
- }
-
- /**
- * Sets configuration fields required for a transition that uses apple_crosstool_top in place of
- * the default CROSSTOOL.
- *
- * @param from options from the originating configuration
- * @param to options for the destination configuration. This instance will be modified
- * to so the destination configuration uses the apple crosstool
- * @param cpu {@code --cpu} value for toolchain selection in the destination configuration
- */
- public static void setAppleCrosstoolTransitionConfiguration(BuildOptions from,
- BuildOptions to, String cpu) {
- to.get(BuildConfiguration.Options.class).cpu = cpu;
- to.get(CppOptions.class).crosstoolTop =
- from.get(AppleCommandLineOptions.class).appleCrosstoolTop;
-
- // --compiler = "compiler" for all OSX toolchains. We do not support asan/tsan, cfi, etc. on
- // darwin.
- to.get(CppOptions.class).cppCompiler = "compiler";
-
- // OSX toolchains always use the runtime of the platform they are targeting (i.e. we do not
- // support custom production environments).
- to.get(CppOptions.class).libcTop = null;
- to.get(CppOptions.class).glibc = null;
- }
-
-}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
index ba091e3ab0..1425c597db 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchSplitTransitionProvider.java
@@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
import com.google.devtools.build.lib.packages.Attribute.SplitTransitionProvider;
@@ -31,6 +32,7 @@ import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
import com.google.devtools.build.lib.rules.apple.Platform.PlatformType;
import com.google.devtools.build.lib.rules.objc.ObjcRuleClasses.MultiArchPlatformRule;
+
import java.util.List;
/**
@@ -159,20 +161,17 @@ public class MultiArchSplitTransitionProvider implements SplitTransitionProvider
splitOptions.get(AppleCommandLineOptions.class).applePlatformType = platformType;
splitOptions.get(AppleCommandLineOptions.class).appleSplitCpu = cpu;
+ // Set for backwards compatibility with rules that depend on this flag, even when
+ // ios is not the platform type.
+ // TODO(b/28958783): Clean this up.
+ splitOptions.get(AppleCommandLineOptions.class).iosCpu = cpu;
if (splitOptions.get(ObjcCommandLineOptions.class).enableCcDeps) {
// Only set the (CC-compilation) CPU for dependencies if explicitly required by the user.
// This helps users of the iOS rules who do not depend on CC rules as these CPU values
// require additional flags to work (e.g. a custom crosstool) which now only need to be
// set if this feature is explicitly requested.
- String platformCpu = String.format("%s_%s", platformType, cpu);
- AppleCrosstoolTransition.setAppleCrosstoolTransitionConfiguration(buildOptions,
- splitOptions, platformCpu);
- } else {
- // If the new configuration does not use the apple crosstool, then it needs ios_cpu to be
- // to decide architecture.
- // TODO(b/29355778, b/28403953): Use a crosstool for any apple rule, and remove this
- // "else" clause. Deprecate ios_cpu.
- splitOptions.get(AppleCommandLineOptions.class).iosCpu = cpu;
+ splitOptions.get(BuildConfiguration.Options.class).cpu =
+ String.format("%s_%s", platformType, cpu);
}
splitOptions.get(AppleCommandLineOptions.class).configurationDistinguisher =
configurationDistinguisher;
@@ -186,4 +185,4 @@ public class MultiArchSplitTransitionProvider implements SplitTransitionProvider
return true;
}
}
-}
+} \ No newline at end of file
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 7dc9e6800a..c2f45b5cd0 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
@@ -251,8 +251,7 @@ public class ObjcCommandLineOptions extends FragmentOptions {
public List<SplitTransition<BuildOptions>> getPotentialSplitTransitions() {
return ImmutableList.<SplitTransition<BuildOptions>>builder().add(
IosApplication.SPLIT_ARCH_TRANSITION, IosExtension.MINIMUM_OS_AND_SPLIT_ARCH_TRANSITION,
- AppleWatch1Extension.MINIMUM_OS_AND_SPLIT_ARCH_TRANSITION,
- AppleCrosstoolTransition.APPLE_CROSSTOOL_TRANSITION)
+ AppleWatch1Extension.MINIMUM_OS_AND_SPLIT_ARCH_TRANSITION)
.addAll(MultiArchSplitTransitionProvider.getPotentialSplitTransitions())
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
index 90944aa2ef..1197cd3bf0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
@@ -47,6 +47,7 @@ import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -1343,7 +1344,7 @@ public final class ReleaseBundlingSupport {
ImmutableList.Builder<BuildOptions> splitBuildOptions = ImmutableList.builder();
for (String iosCpu : iosMultiCpus) {
BuildOptions splitOptions = buildOptions.clone();
- setArchitectureOptions(splitOptions, buildOptions, iosCpu);
+ setArchitectureOptions(splitOptions, iosCpu);
setAdditionalOptions(splitOptions, buildOptions);
splitOptions.get(AppleCommandLineOptions.class).configurationDistinguisher =
getConfigurationDistinguisher();
@@ -1371,19 +1372,17 @@ public final class ReleaseBundlingSupport {
*/
protected void setAdditionalOptions(BuildOptions splitOptions, BuildOptions originalOptions) {}
- private static void setArchitectureOptions(BuildOptions splitOptions,
- BuildOptions originalOptions, String iosCpu) {
+ private void setArchitectureOptions(BuildOptions splitOptions, String iosCpu) {
splitOptions.get(AppleCommandLineOptions.class).applePlatformType = PlatformType.IOS;
splitOptions.get(AppleCommandLineOptions.class).appleSplitCpu = iosCpu;
splitOptions.get(AppleCommandLineOptions.class).iosCpu = iosCpu;
- if (splitOptions.get(ObjcCommandLineOptions.class).enableCcDeps) {
+ if (splitOptions.get(ObjcCommandLineOptions.class).enableCcDeps) {
// Only set the (CC-compilation) CPU for dependencies if explicitly required by the user.
// This helps users of the iOS rules who do not depend on CC rules as these CPU values
// require additional flags to work (e.g. a custom crosstool) which now only need to be set
// if this feature is explicitly requested.
- AppleCrosstoolTransition.setAppleCrosstoolTransitionConfiguration(originalOptions,
- splitOptions, "ios_" + iosCpu);
- }
+ splitOptions.get(BuildConfiguration.Options.class).cpu = "ios_" + iosCpu;
+ }
}
@Override