Last active
April 21, 2023 03:28
-
-
Save indragiek/e14162c0098d97ee976bceae9441f04d to your computer and use it in GitHub Desktop.
Bazel 3.7.1 patch to build an arm64 slice targeting the iOS Simulator. Use it by running `bazel build ... --cpu=ios_sim_arm64 --apple_platform_type=ios`
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java b/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java | |
| index 7759984b03..6f41eca83b 100644 | |
| --- a/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java | |
| +++ b/src/main/java/com/google/devtools/build/lib/rules/apple/ApplePlatform.java | |
| @@ -42,7 +42,7 @@ public enum ApplePlatform implements ApplePlatformApi { | |
| CATALYST("catalyst", "MacOSX", PlatformType.CATALYST, true); | |
| private static final ImmutableSet<String> IOS_SIMULATOR_TARGET_CPUS = | |
| - ImmutableSet.of("ios_x86_64", "ios_i386"); | |
| + ImmutableSet.of("ios_x86_64", "ios_i386", "ios_sim_arm64"); | |
| private static final ImmutableSet<String> IOS_DEVICE_TARGET_CPUS = | |
| ImmutableSet.of("ios_armv6", "ios_arm64", "ios_armv7", "ios_armv7s", "ios_arm64e"); | |
| private static final ImmutableSet<String> WATCHOS_SIMULATOR_TARGET_CPUS = | |
| diff --git a/tools/osx/crosstool/cc_toolchain_config.bzl b/tools/osx/crosstool/cc_toolchain_config.bzl | |
| index 6ca6b8ef0c..d490b2ce1a 100644 | |
| --- a/tools/osx/crosstool/cc_toolchain_config.bzl | |
| +++ b/tools/osx/crosstool/cc_toolchain_config.bzl | |
| @@ -63,6 +63,8 @@ def _impl(ctx): | |
| toolchain_identifier = "darwin_arm64e" | |
| elif (ctx.attr.cpu == "ios_arm64"): | |
| toolchain_identifier = "ios_arm64" | |
| + elif (ctx.attr.cpu == "ios_sim_arm64"): | |
| + toolchain_identifier = "ios_sim_arm64" | |
| elif (ctx.attr.cpu == "ios_arm64e"): | |
| toolchain_identifier = "ios_arm64e" | |
| elif (ctx.attr.cpu == "ios_armv7"): | |
| @@ -94,6 +96,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -110,6 +113,8 @@ def _impl(ctx): | |
| if (ctx.attr.cpu == "ios_arm64"): | |
| target_system_name = "arm64-apple-ios" | |
| + elif (ctx.attr.cpu == "ios_sim_arm64"): | |
| + target_system_name = "arm64-apple-ios-simulator" | |
| elif (ctx.attr.cpu == "tvos_arm64"): | |
| target_system_name = "arm64-apple-tvos" | |
| elif (ctx.attr.cpu == "watchos_arm64_32"): | |
| @@ -151,6 +156,8 @@ def _impl(ctx): | |
| target_cpu = "darwin_arm64e" | |
| elif (ctx.attr.cpu == "ios_arm64"): | |
| target_cpu = "ios_arm64" | |
| + elif (ctx.attr.cpu == "ios_sim_arm64"): | |
| + target_cpu = "ios_sim_arm64" | |
| elif (ctx.attr.cpu == "ios_arm64e"): | |
| target_cpu = "ios_arm64e" | |
| elif (ctx.attr.cpu == "ios_armv7"): | |
| @@ -177,6 +184,7 @@ def _impl(ctx): | |
| if (ctx.attr.cpu == "armeabi-v7a"): | |
| target_libc = "armeabi-v7a" | |
| elif (ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -206,6 +214,7 @@ def _impl(ctx): | |
| elif (ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -227,6 +236,7 @@ def _impl(ctx): | |
| elif (ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -343,6 +353,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -474,6 +485,39 @@ def _impl(ctx): | |
| ), | |
| ], | |
| ) | |
| + elif (ctx.attr.cpu == "ios_sim_arm64"): | |
| + objc_compile_action = action_config( | |
| + action_name = ACTION_NAMES.objc_compile, | |
| + flag_sets = [ | |
| + flag_set( | |
| + flag_groups = [flag_group(flags = ["-arch", "arm64"])], | |
| + ), | |
| + ], | |
| + implies = [ | |
| + "compiler_input_flags", | |
| + "compiler_output_flags", | |
| + "objc_actions", | |
| + "apply_default_compiler_flags", | |
| + "apply_default_warnings", | |
| + "framework_paths", | |
| + "preprocessor_defines", | |
| + "include_system_dirs", | |
| + "version_min", | |
| + "objc_arc", | |
| + "no_objc_arc", | |
| + "apple_env", | |
| + "user_compile_flags", | |
| + "sysroot", | |
| + "unfiltered_compile_flags", | |
| + "apply_simulator_compiler_flags", | |
| + ], | |
| + tools = [ | |
| + tool( | |
| + path = "wrapped_clang", | |
| + execution_requirements = xcode_execution_requirements, | |
| + ), | |
| + ], | |
| + ) | |
| elif (ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "darwin_arm64e"): | |
| objc_compile_action = action_config( | |
| @@ -800,6 +844,7 @@ def _impl(ctx): | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "tvos_arm64" or | |
| ctx.attr.cpu == "darwin_arm64"): | |
| objcpp_executable_action = action_config( | |
| @@ -1213,6 +1258,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -1295,6 +1341,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -1358,6 +1405,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -1472,6 +1520,7 @@ def _impl(ctx): | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "tvos_arm64" or | |
| ctx.attr.cpu == "darwin_arm64"): | |
| objcpp_compile_action = action_config( | |
| @@ -1755,6 +1804,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -1816,6 +1866,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -1912,6 +1963,7 @@ def _impl(ctx): | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "tvos_arm64" or | |
| ctx.attr.cpu == "darwin_arm64"): | |
| objc_archive_action = action_config( | |
| @@ -2240,6 +2292,7 @@ def _impl(ctx): | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "tvos_arm64" or | |
| ctx.attr.cpu == "darwin_arm64"): | |
| objc_executable_action = action_config( | |
| @@ -2676,6 +2729,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -2763,6 +2817,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -2828,6 +2883,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -2946,6 +3002,7 @@ def _impl(ctx): | |
| ], | |
| ) | |
| elif (ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "tvos_arm64"): | |
| objc_fully_link_action = action_config( | |
| action_name = "objc-fully-link", | |
| @@ -3211,6 +3268,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -3253,6 +3311,7 @@ def _impl(ctx): | |
| if (ctx.attr.cpu == "armeabi-v7a" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -3409,6 +3468,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -3504,6 +3564,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "tvos_arm64" or | |
| @@ -3554,6 +3615,7 @@ def _impl(ctx): | |
| if (ctx.attr.cpu == "armeabi-v7a" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -3681,6 +3743,26 @@ def _impl(ctx): | |
| ), | |
| ], | |
| ) | |
| + elif (ctx.attr.cpu == "ios_sim_arm64"): | |
| + default_link_flags_feature = feature( | |
| + name = "default_link_flags", | |
| + enabled = True, | |
| + flag_sets = [ | |
| + flag_set( | |
| + actions = all_link_actions + | |
| + ["objc-executable", "objc++-executable"], | |
| + flag_groups = [ | |
| + flag_group( | |
| + flags = [ | |
| + "-no-canonical-prefixes", | |
| + "-target", | |
| + "arm64-apple-ios-simulator", | |
| + ], | |
| + ), | |
| + ], | |
| + ), | |
| + ], | |
| + ) | |
| elif (ctx.attr.cpu == "tvos_arm64"): | |
| default_link_flags_feature = feature( | |
| name = "default_link_flags", | |
| @@ -4051,7 +4133,8 @@ def _impl(ctx): | |
| # This stub doesn't have a sensible value for this feature | |
| version_min_feature = feature(name = "version_min") | |
| elif (ctx.attr.cpu == "ios_i386" or | |
| - ctx.attr.cpu == "ios_x86_64"): | |
| + ctx.attr.cpu == "ios_x86_64" or | |
| + ctx.attr.cpu == "ios_sim_arm64"): | |
| version_min_feature = feature( | |
| name = "version_min", | |
| flag_sets = [ | |
| @@ -4562,6 +4645,7 @@ def _impl(ctx): | |
| if (ctx.attr.cpu == "armeabi-v7a" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -4789,6 +4873,37 @@ def _impl(ctx): | |
| ), | |
| ], | |
| ) | |
| + elif (ctx.attr.cpu == "ios_sim_arm64"): | |
| + unfiltered_compile_flags_feature = feature( | |
| + name = "unfiltered_compile_flags", | |
| + flag_sets = [ | |
| + flag_set( | |
| + actions = [ | |
| + ACTION_NAMES.assemble, | |
| + ACTION_NAMES.preprocess_assemble, | |
| + ACTION_NAMES.c_compile, | |
| + ACTION_NAMES.cpp_compile, | |
| + ACTION_NAMES.cpp_header_parsing, | |
| + ACTION_NAMES.cpp_module_compile, | |
| + ACTION_NAMES.cpp_module_codegen, | |
| + ACTION_NAMES.linkstamp_compile, | |
| + ], | |
| + flag_groups = [ | |
| + flag_group( | |
| + flags = [ | |
| + "-no-canonical-prefixes", | |
| + "-Wno-builtin-macro-redefined", | |
| + "-D__DATE__=\"redacted\"", | |
| + "-D__TIMESTAMP__=\"redacted\"", | |
| + "-D__TIME__=\"redacted\"", | |
| + "-target", | |
| + "arm64-apple-ios-simulator", | |
| + ], | |
| + ), | |
| + ], | |
| + ), | |
| + ], | |
| + ) | |
| elif (ctx.attr.cpu == "tvos_arm64"): | |
| unfiltered_compile_flags_feature = feature( | |
| name = "unfiltered_compile_flags", | |
| @@ -5322,6 +5437,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -5530,6 +5646,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| ctx.attr.cpu == "ios_x86_64" or | |
| @@ -5741,6 +5858,7 @@ def _impl(ctx): | |
| elif (ctx.attr.cpu == "armeabi-v7a" or | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -5872,6 +5990,7 @@ def _impl(ctx): | |
| ) | |
| elif (ctx.attr.cpu == "armeabi-v7a" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -5932,6 +6051,7 @@ def _impl(ctx): | |
| ) | |
| if (ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "tvos_arm64" or | |
| @@ -6024,6 +6144,7 @@ def _impl(ctx): | |
| ) | |
| if (ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| @@ -6288,6 +6409,7 @@ def _impl(ctx): | |
| ctx.attr.cpu == "darwin_arm64" or | |
| ctx.attr.cpu == "darwin_arm64e" or | |
| ctx.attr.cpu == "ios_arm64" or | |
| + ctx.attr.cpu == "ios_sim_arm64" or | |
| ctx.attr.cpu == "ios_arm64e" or | |
| ctx.attr.cpu == "ios_armv7" or | |
| ctx.attr.cpu == "ios_i386" or | |
| diff --git a/tools/osx/crosstool/osx_archs.bzl b/tools/osx/crosstool/osx_archs.bzl | |
| index 14fad06a5f..97a0baa19a 100644 | |
| --- a/tools/osx/crosstool/osx_archs.bzl | |
| +++ b/tools/osx/crosstool/osx_archs.bzl | |
| @@ -20,6 +20,7 @@ OSX_TOOLS_NON_DEVICE_ARCHS = [ | |
| "darwin_arm64e", | |
| "ios_i386", | |
| "ios_x86_64", | |
| + "ios_sim_arm64", | |
| "watchos_i386", | |
| "watchos_x86_64", | |
| "tvos_x86_64", | |
| @@ -50,6 +51,7 @@ OSX_TOOLS_CONSTRAINTS = { | |
| "armeabi-v7a": ["@platforms//cpu:arm"], | |
| "ios_armv7": ["@platforms//os:ios", "@platforms//cpu:arm"], | |
| "ios_arm64": ["@platforms//os:ios", "@platforms//cpu:aarch64"], | |
| + "ios_sim_arm64": ["@platforms//os:ios", "@platforms//cpu:aarch64"], | |
| "ios_arm64e": ["@platforms//os:ios", "@platforms//cpu:aarch64"], | |
| "watchos_armv7k": ["@platforms//os:ios", "@platforms//cpu:arm"], | |
| "watchos_arm64_32": ["@platforms//os:ios", "@platforms//cpu:aarch64"], |
Something like this is finally starting to land upstream, here's the updated version of a change like this bazelbuild/bazel#13870
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
looking at bazel:master today, has your
ios_sim_arm64been implemented asios_arm64e?