From 713dba0e65c563aace636370d21c18782dc72380 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Tue, 19 Sep 2023 12:40:56 -0700 Subject: [PATCH 1/5] Use platforms inside Apple rules transitions This makes C++ toolchain selection work without using platform mapping for Apple rules. PiperOrigin-RevId: 561560820 --- README.md | 5 +- apple/internal/transition_support.bzl | 36 +++++-- platform_mappings | 137 -------------------------- 3 files changed, 31 insertions(+), 147 deletions(-) delete mode 100644 platform_mappings diff --git a/README.md b/README.md index c561e08ca5..e1939dc312 100644 --- a/README.md +++ b/README.md @@ -21,11 +21,8 @@ repository. ## Quick setup -1. Copy the latest `MODULE.bazel` or `WORKSPACE` snippet from [the releases +Copy the latest `MODULE.bazel` or `WORKSPACE` snippet from [the releases page](https://github.com/bazelbuild/rules_apple/releases). -2. Copy the -[`platform_mappings`](https://github.com/bazelbuild/rules_apple/blob/master/platform_mappings) -file to the root of your repo ## Examples diff --git a/apple/internal/transition_support.bzl b/apple/internal/transition_support.bzl index b98615b1ff..f16a0d63bc 100644 --- a/apple/internal/transition_support.bzl +++ b/apple/internal/transition_support.bzl @@ -48,6 +48,29 @@ _PLATFORM_TYPE_TO_CPUS_FLAG = { "watchos": "//command_line_option:watchos_cpus", } +# Following map provides and ad-hoc platform mapping +# It's no longer needed once --apple_platforms is set everywhere and toolchain resolution enabled +_CPU_TO_PLATFORM = { + "darwin_x86_64": "@build_bazel_apple_support//platforms:macos_x86_64", + "darwin_arm64": "@build_bazel_apple_support//platforms:macos_arm64", + "darwin_arm64e": "@build_bazel_apple_support//platforms:darwin_arm64e", + "ios_x86_64": "@build_bazel_apple_support//platforms:ios_x86_64", + "ios_arm64": "@build_bazel_apple_support//platforms:ios_arm64", + "ios_sim_arm64": "@build_bazel_apple_support//platforms:ios_sim_arm64", + "ios_arm64e": "@build_bazel_apple_support//platforms:ios_arm64e", + "tvos_sim_arm64": "@build_bazel_apple_support//platforms:tvos_sim_arm64", + "tvos_arm64": "@build_bazel_apple_support//platforms:tvos_arm64", + "tvos_x86_64": "@build_bazel_apple_support//platforms:tvos_x86_64", + "visionos_arm64": "@build_bazel_apple_support//platforms:visionos_arm64", + "visionos_sim_arm64": "@build_bazel_apple_support//platforms:visionos_sim_arm64", + "visionos_x86_64": "@build_bazel_apple_support//platforms/simulator:visionos_x86_64", + "watchos_armv7k": "@build_bazel_apple_support//platforms:watchos_armv7k", + "watchos_arm64": "@build_bazel_apple_support//platforms:watchos_arm64", + "watchos_device_arm64": "@build_bazel_apple_support//platforms:watchos_arm64", + "watchos_arm64_32": "@build_bazel_apple_support//platforms:watchos_arm64_32", + "watchos_x86_64": "@build_bazel_apple_support//platforms:watchos_x86_64", +} + def _platform_specific_cpu_setting_name(platform_type): """Returns the name of a platform-specific CPU setting. @@ -237,6 +260,11 @@ def _command_line_options( Returns: A dictionary of `"//command_line_option"`s defined for the current target. """ + cpu = _cpu_string( + environment_arch = environment_arch, + platform_type = platform_type, + settings = settings, + ) return { build_settings_labels.use_tree_artifacts_outputs: force_bundle_outputs if force_bundle_outputs else settings[build_settings_labels.use_tree_artifacts_outputs], @@ -247,17 +275,13 @@ def _command_line_options( # architecture and environment, therefore we set `environment_arch` when it is available. "//command_line_option:apple_split_cpu": environment_arch if environment_arch else "", "//command_line_option:compiler": None, - "//command_line_option:cpu": _cpu_string( - environment_arch = environment_arch, - platform_type = platform_type, - settings = settings, - ), + "//command_line_option:cpu": cpu, "//command_line_option:crosstool_top": ( settings["//command_line_option:apple_crosstool_top"] ), "//command_line_option:fission": [], "//command_line_option:grte_top": None, - "//command_line_option:platforms": [apple_platforms[0]] if apple_platforms else [], + "//command_line_option:platforms": [apple_platforms[0]] if apple_platforms else [_CPU_TO_PLATFORM[cpu]], "//command_line_option:ios_minimum_os": _min_os_version_or_none( minimum_os_version = minimum_os_version, platform = "ios", diff --git a/platform_mappings b/platform_mappings deleted file mode 100644 index aca5e1079c..0000000000 --- a/platform_mappings +++ /dev/null @@ -1,137 +0,0 @@ -platforms: - @build_bazel_apple_support//platforms:macos_x86_64 - --apple_platform_type=macos - --cpu=darwin_x86_64 - - @build_bazel_apple_support//platforms:macos_arm64 - --apple_platform_type=macos - --cpu=darwin_arm64 - - @build_bazel_apple_support//platforms:darwin_arm64e - --apple_platform_type=macos - --cpu=darwin_arm64e - - @build_bazel_apple_support//platforms:ios_i386 - --apple_platform_type=ios - --cpu=ios_i386 - - @build_bazel_apple_support//platforms:ios_x86_64 - --apple_platform_type=ios - --cpu=ios_x86_64 - - @build_bazel_apple_support//platforms:ios_sim_arm64 - --apple_platform_type=ios - --cpu=ios_sim_arm64 - - @build_bazel_apple_support//platforms:ios_armv7 - --apple_platform_type=ios - --cpu=ios_armv7 - - @build_bazel_apple_support//platforms:ios_arm64 - --apple_platform_type=ios - --cpu=ios_arm64 - - @build_bazel_apple_support//platforms:ios_arm64e - --apple_platform_type=ios - --cpu=ios_arm64e - - @build_bazel_apple_support//platforms:tvos_x86_64 - --apple_platform_type=tvos - --cpu=tvos_x86_64 - - @build_bazel_apple_support//platforms:tvos_sim_arm64 - --apple_platform_type=tvos - --cpu=tvos_sim_arm64 - - @build_bazel_apple_support//platforms:tvos_arm64 - --apple_platform_type=tvos - --cpu=tvos_arm64 - - @build_bazel_apple_support//platforms:watchos_i386 - --apple_platform_type=watchos - --cpu=watchos_i386 - - @build_bazel_apple_support//platforms:watchos_x86_64 - --apple_platform_type=watchos - --cpu=watchos_x86_64 - - @build_bazel_apple_support//platforms:watchos_arm64 - --apple_platform_type=watchos - --cpu=watchos_arm64 - - @build_bazel_apple_support//platforms:watchos_armv7k - --apple_platform_type=watchos - --cpu=watchos_armv7k - - @build_bazel_apple_support//platforms:watchos_arm64_32 - --apple_platform_type=watchos - --cpu=watchos_arm64_32 - -flags: - --cpu=darwin_x86_64 - --apple_platform_type=macos - @build_bazel_apple_support//platforms:macos_x86_64 - - --cpu=darwin_arm64 - --apple_platform_type=macos - @build_bazel_apple_support//platforms:macos_arm64 - - --cpu=darwin_arm64e - --apple_platform_type=macos - @build_bazel_apple_support//platforms:darwin_arm64e - - --cpu=ios_i386 - --apple_platform_type=ios - @build_bazel_apple_support//platforms:ios_i386 - - --cpu=ios_x86_64 - --apple_platform_type=ios - @build_bazel_apple_support//platforms:ios_x86_64 - - --cpu=ios_sim_arm64 - --apple_platform_type=ios - @build_bazel_apple_support//platforms:ios_sim_arm64 - - --cpu=ios_armv7 - --apple_platform_type=ios - @build_bazel_apple_support//platforms:ios_armv7 - - --cpu=ios_arm64 - --apple_platform_type=ios - @build_bazel_apple_support//platforms:ios_arm64 - - --cpu=ios_arm64e - --apple_platform_type=ios - @build_bazel_apple_support//platforms:ios_arm64e - - --cpu=tvos_x86_64 - --apple_platform_type=tvos - @build_bazel_apple_support//platforms:tvos_x86_64 - - --cpu=tvos_sim_arm64 - --apple_platform_type=tvos - @build_bazel_apple_support//platforms:tvos_sim_arm64 - - --cpu=tvos_arm64 - --apple_platform_type=tvos - @build_bazel_apple_support//platforms:tvos_arm64 - - --cpu=watchos_i386 - --apple_platform_type=watchos - @build_bazel_apple_support//platforms:watchos_i386 - - --cpu=watchos_x86_64 - --apple_platform_type=watchos - @build_bazel_apple_support//platforms:watchos_x86_64 - - --cpu=watchos_arm64 - --apple_platform_type=watchos - @build_bazel_apple_support//platforms:watchos_arm64 - - --cpu=watchos_armv7k - --apple_platform_type=watchos - @build_bazel_apple_support//platforms:watchos_armv7k - - --cpu=watchos_arm64_32 - --apple_platform_type=watchos - @build_bazel_apple_support//platforms:watchos_arm64_32 From 6208394e13097696fb7f77d8a3414f2d6bc85e0a Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Tue, 19 Sep 2023 13:10:23 -0700 Subject: [PATCH 2/5] versiobn check --- apple/internal/transition_support.bzl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apple/internal/transition_support.bzl b/apple/internal/transition_support.bzl index f16a0d63bc..4e5b4d03c7 100644 --- a/apple/internal/transition_support.bzl +++ b/apple/internal/transition_support.bzl @@ -39,6 +39,7 @@ load( ) _supports_visionos = hasattr(apple_common.platform_type, "visionos") +_is_bazel_7 = not hasattr(apple_common, "apple_crosstool_transition") _PLATFORM_TYPE_TO_CPUS_FLAG = { "ios": "//command_line_option:ios_multi_cpus", @@ -266,6 +267,7 @@ def _command_line_options( settings = settings, ) + default_platforms = [_CPU_TO_PLATFORM[cpu]] if _is_bazel_7 else [] return { build_settings_labels.use_tree_artifacts_outputs: force_bundle_outputs if force_bundle_outputs else settings[build_settings_labels.use_tree_artifacts_outputs], "//command_line_option:apple configuration distinguisher": "applebin_" + platform_type, @@ -281,7 +283,7 @@ def _command_line_options( ), "//command_line_option:fission": [], "//command_line_option:grte_top": None, - "//command_line_option:platforms": [apple_platforms[0]] if apple_platforms else [_CPU_TO_PLATFORM[cpu]], + "//command_line_option:platforms": [apple_platforms[0]] if apple_platforms else default_platforms, "//command_line_option:ios_minimum_os": _min_os_version_or_none( minimum_os_version = minimum_os_version, platform = "ios", From 71d9e3aaae19d010f60115736c9b833da12ed1c9 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Tue, 19 Sep 2023 13:14:48 -0700 Subject: [PATCH 3/5] Discard changes to platform_mappings --- platform_mappings | 137 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 platform_mappings diff --git a/platform_mappings b/platform_mappings new file mode 100644 index 0000000000..aca5e1079c --- /dev/null +++ b/platform_mappings @@ -0,0 +1,137 @@ +platforms: + @build_bazel_apple_support//platforms:macos_x86_64 + --apple_platform_type=macos + --cpu=darwin_x86_64 + + @build_bazel_apple_support//platforms:macos_arm64 + --apple_platform_type=macos + --cpu=darwin_arm64 + + @build_bazel_apple_support//platforms:darwin_arm64e + --apple_platform_type=macos + --cpu=darwin_arm64e + + @build_bazel_apple_support//platforms:ios_i386 + --apple_platform_type=ios + --cpu=ios_i386 + + @build_bazel_apple_support//platforms:ios_x86_64 + --apple_platform_type=ios + --cpu=ios_x86_64 + + @build_bazel_apple_support//platforms:ios_sim_arm64 + --apple_platform_type=ios + --cpu=ios_sim_arm64 + + @build_bazel_apple_support//platforms:ios_armv7 + --apple_platform_type=ios + --cpu=ios_armv7 + + @build_bazel_apple_support//platforms:ios_arm64 + --apple_platform_type=ios + --cpu=ios_arm64 + + @build_bazel_apple_support//platforms:ios_arm64e + --apple_platform_type=ios + --cpu=ios_arm64e + + @build_bazel_apple_support//platforms:tvos_x86_64 + --apple_platform_type=tvos + --cpu=tvos_x86_64 + + @build_bazel_apple_support//platforms:tvos_sim_arm64 + --apple_platform_type=tvos + --cpu=tvos_sim_arm64 + + @build_bazel_apple_support//platforms:tvos_arm64 + --apple_platform_type=tvos + --cpu=tvos_arm64 + + @build_bazel_apple_support//platforms:watchos_i386 + --apple_platform_type=watchos + --cpu=watchos_i386 + + @build_bazel_apple_support//platforms:watchos_x86_64 + --apple_platform_type=watchos + --cpu=watchos_x86_64 + + @build_bazel_apple_support//platforms:watchos_arm64 + --apple_platform_type=watchos + --cpu=watchos_arm64 + + @build_bazel_apple_support//platforms:watchos_armv7k + --apple_platform_type=watchos + --cpu=watchos_armv7k + + @build_bazel_apple_support//platforms:watchos_arm64_32 + --apple_platform_type=watchos + --cpu=watchos_arm64_32 + +flags: + --cpu=darwin_x86_64 + --apple_platform_type=macos + @build_bazel_apple_support//platforms:macos_x86_64 + + --cpu=darwin_arm64 + --apple_platform_type=macos + @build_bazel_apple_support//platforms:macos_arm64 + + --cpu=darwin_arm64e + --apple_platform_type=macos + @build_bazel_apple_support//platforms:darwin_arm64e + + --cpu=ios_i386 + --apple_platform_type=ios + @build_bazel_apple_support//platforms:ios_i386 + + --cpu=ios_x86_64 + --apple_platform_type=ios + @build_bazel_apple_support//platforms:ios_x86_64 + + --cpu=ios_sim_arm64 + --apple_platform_type=ios + @build_bazel_apple_support//platforms:ios_sim_arm64 + + --cpu=ios_armv7 + --apple_platform_type=ios + @build_bazel_apple_support//platforms:ios_armv7 + + --cpu=ios_arm64 + --apple_platform_type=ios + @build_bazel_apple_support//platforms:ios_arm64 + + --cpu=ios_arm64e + --apple_platform_type=ios + @build_bazel_apple_support//platforms:ios_arm64e + + --cpu=tvos_x86_64 + --apple_platform_type=tvos + @build_bazel_apple_support//platforms:tvos_x86_64 + + --cpu=tvos_sim_arm64 + --apple_platform_type=tvos + @build_bazel_apple_support//platforms:tvos_sim_arm64 + + --cpu=tvos_arm64 + --apple_platform_type=tvos + @build_bazel_apple_support//platforms:tvos_arm64 + + --cpu=watchos_i386 + --apple_platform_type=watchos + @build_bazel_apple_support//platforms:watchos_i386 + + --cpu=watchos_x86_64 + --apple_platform_type=watchos + @build_bazel_apple_support//platforms:watchos_x86_64 + + --cpu=watchos_arm64 + --apple_platform_type=watchos + @build_bazel_apple_support//platforms:watchos_arm64 + + --cpu=watchos_armv7k + --apple_platform_type=watchos + @build_bazel_apple_support//platforms:watchos_armv7k + + --cpu=watchos_arm64_32 + --apple_platform_type=watchos + @build_bazel_apple_support//platforms:watchos_arm64_32 From d36bbb54011c4978daa94e3bdfa417740ba0f7f5 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Tue, 19 Sep 2023 13:18:08 -0700 Subject: [PATCH 4/5] Discard changes to README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e1939dc312..c561e08ca5 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,11 @@ repository. ## Quick setup -Copy the latest `MODULE.bazel` or `WORKSPACE` snippet from [the releases +1. Copy the latest `MODULE.bazel` or `WORKSPACE` snippet from [the releases page](https://github.com/bazelbuild/rules_apple/releases). +2. Copy the +[`platform_mappings`](https://github.com/bazelbuild/rules_apple/blob/master/platform_mappings) +file to the root of your repo ## Examples From 972c13a65706a8e7c6d4f9be0f015441461649e4 Mon Sep 17 00:00:00 2001 From: Keith Smiley Date: Tue, 19 Sep 2023 13:18:33 -0700 Subject: [PATCH 5/5] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c561e08ca5..432888a23c 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ repository. page](https://github.com/bazelbuild/rules_apple/releases). 2. Copy the [`platform_mappings`](https://github.com/bazelbuild/rules_apple/blob/master/platform_mappings) -file to the root of your repo +file to the root of your repo (only required for bazel 6.x) ## Examples