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_arm64
been implemented asios_arm64e
?