diff options
author | 2016-12-21 20:59:26 +0000 | |
---|---|---|
committer | 2016-12-22 09:56:43 +0000 | |
commit | 98398a2155caf62aff3deb14e82f539c750b9a03 (patch) | |
tree | 58254351d2c16ecc8bba1f63931a00830f68f688 | |
parent | c6d76bd7e3053ee245d86cb126248b211ed841b9 (diff) |
Rollback AppleCrosstoolChange
--
PiperOrigin-RevId: 142692398
MOS_MIGRATED_REVID=142692398
11 files changed, 17 insertions, 254 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 diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL b/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL index 5f8b523c88..14e38acd44 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL +++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/MOCK_CROSSTOOL @@ -21,10 +21,6 @@ default_toolchain { toolchain_identifier: "local_darwin" } default_toolchain { - cpu: "ios_x86_64" - toolchain_identifier: "local_ios" -} -default_toolchain { cpu: "x64_windows" toolchain_identifier: "local_windows_msys64" } @@ -358,52 +354,6 @@ toolchain { supports_interface_shared_objects: true } -# Stub crosstool to allow construction of apple crosstool configuration in a -# static configuration set. -# TODO(b/33804121): Remove this once dynamic configurations are in place. -toolchain { - toolchain_identifier: "local_ios" - - host_system_name: "local" - target_system_name: "local" - target_cpu: "ios_x86_64" - target_libc: "ios" - compiler: "compiler" - linking_mode_flags { mode: DYNAMIC } - - abi_version: "local" - abi_libc_version: "local" - - tool_path { name: "ar" path: "/usr/bin/libtool" } - tool_path { name: "compat-ld" path: "/usr/bin/ld" } - tool_path { name: "cpp" path: "/usr/bin/cpp" } - tool_path { name: "dwp" path: "/usr/bin/dwp" } - tool_path { name: "gcc" path: "/usr/bin/gcc" } - tool_path { name: "gcov" path: "/usr/bin/gcov" } - tool_path { name: "ld" path: "/usr/bin/ld" } - tool_path { name: "nm" path: "/usr/bin/nm" } - tool_path { name: "objcopy" path: "/usr/bin/objcopy" } - tool_path { name: "objdump" path: "/usr/bin/objdump" } - tool_path { name: "strip" path: "/usr/bin/strip" } - - needsPic: false - - builtin_sysroot: "" - cxx_flag: "-std=c++0x" - ar_flag: "-static" - ar_flag: "-s" - ar_flag: "-o" - linker_flag: "-lstdc++" - cxx_builtin_include_directory: "/usr/include" - cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain" - cxx_builtin_include_directory: "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs" - cxx_builtin_include_directory: "/opt/local/include" - cxx_builtin_include_directory: "/Library/Developer/CommandLineTools" - objcopy_embed_flag: "-I" - objcopy_embed_flag: "binary" - supports_interface_shared_objects: true -} - toolchain { toolchain_identifier: "local_windows_mingw" diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java index cc063b146a..dd2f474bf0 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java +++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java @@ -87,7 +87,6 @@ public final class BazelMockCcSupport extends MockCcSupport { " 'k8|compiler': ':cc-compiler-k8',", " 'piii|compiler': ':cc-compiler-piii',", " 'darwin|compiler': ':cc-compiler-darwin',", - " 'ios_x86_64|compiler': ':cc-compiler-ios_x86_64',", " 'armeabi-v7a|compiler': ':cc-compiler-armeabi-v7a',", " 'x64_windows|windows_msys64': ':cc-compiler-x64_windows',", " 'ppc|compiler': ':cc-compiler-ppc',", @@ -117,13 +116,6 @@ public final class BazelMockCcSupport extends MockCcSupport { " module_map = 'crosstool.cppmap', supports_header_parsing = 1,", " objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',", ")", - "cc_toolchain(name = 'cc-compiler-ios_x86_64', all_files = ':empty', ", - " compiler_files = ':empty',", - " cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ", - " linker_files = ':empty',", - " module_map = 'crosstool.cppmap', supports_header_parsing = 1,", - " objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',", - ")", "cc_toolchain(name = 'cc-compiler-armeabi-v7a', all_files = ':empty', ", " compiler_files = ':empty',", " cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ", diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD index c7df6cfc70..4e93a314d6 100644 --- a/tools/cpp/BUILD +++ b/tools/cpp/BUILD @@ -39,7 +39,6 @@ cc_toolchain_suite( "x64_windows|compiler": ":cc-compiler-x64_windows", "x64_windows_msvc|compiler": ":cc-compiler-x64_windows_msvc", "ppc|compiler": ":cc-compiler-ppc", - "ios_x86_64|compiler": ":cc-compiler-ios_x86_64", }, ) @@ -155,20 +154,6 @@ cc_toolchain( supports_param_files = 1, ) -cc_toolchain( - name = "cc-compiler-ios_x86_64", - all_files = ":empty", - compiler_files = ":empty", - cpu = "local", - dwp_files = ":empty", - dynamic_runtime_libs = [":empty"], - linker_files = ":empty", - objcopy_files = ":empty", - static_runtime_libs = [":empty"], - strip_files = ":empty", - supports_param_files = 0, -) - filegroup( name = "every-file-x64_windows", srcs = [ diff --git a/tools/cpp/CROSSTOOL b/tools/cpp/CROSSTOOL index bfe3e80aff..0922cf3363 100644 --- a/tools/cpp/CROSSTOOL +++ b/tools/cpp/CROSSTOOL @@ -43,12 +43,6 @@ default_toolchain { cpu: "ppc" toolchain_identifier: "local_linux" } - -default_toolchain { - cpu: "ios_x86_64" - toolchain_identifier: "ios_x86_64" -} - toolchain { abi_version: "armeabi-v7a" abi_libc_version: "armeabi-v7a" @@ -813,37 +807,3 @@ toolchain { compiler_flag: "-Xcompilation-mode=opt" } } - -# Stub crosstool to allow construction of apple crosstool configuration in a -# static configuration set. -# TODO(b/33804121): Remove this once dynamic configurations are in place. -toolchain { - toolchain_identifier: "ios_x86_64" - host_system_name: "x86_64-apple-macosx" - target_system_name: "x86_64-apple-ios" - target_cpu: "ios_x86_64" - target_libc: "ios" - compiler: "compiler" - abi_version: "local" - abi_libc_version: "local" - supports_gold_linker: false - supports_incremental_linker: false - supports_fission: false - supports_interface_shared_objects: false - supports_normalizing_ar: false - supports_start_end_lib: false - - tool_path { name: "ar" path: "/bin/false" } - tool_path { name: "compat-ld" path: "/bin/false" } - tool_path { name: "cpp" path: "/bin/false" } - tool_path { name: "dwp" path: "/bin/false" } - tool_path { name: "gcc" path: "/bin/false" } - tool_path { name: "gcov" path: "/bin/false" } - tool_path { name: "ld" path: "/bin/false" } - - tool_path { name: "nm" path: "/bin/false" } - tool_path { name: "objcopy" path: "/bin/false" } - tool_path { name: "objdump" path: "/bin/false" } - tool_path { name: "strip" path: "/bin/false" } - linking_mode_flags { mode: DYNAMIC } -} |