diff options
author | Keith Smiley <keithbsmiley@gmail.com> | 2023-03-23 11:36:33 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-23 18:36:33 +0000 |
commit | baea9a25eab592ae40520dd3511c688bc232f0ad (patch) | |
tree | 822ff954853ad139dafdcb09b8d77ae1e213ca39 | |
parent | 697a39795374bfe88e98e5b0034e1f201371fb59 (diff) | |
download | bazelbuild-apple_support-upstream/1.5.0.tar.gz |
Add config_settings for platforms (#179)upstream/1.5.0
This is a common pattern you need to select on. Since we have a limited
set of CPUs it's nice to provide a source of truth for this type of
thing
-rw-r--r-- | BUILD | 1 | ||||
-rw-r--r-- | configs/BUILD | 46 | ||||
-rw-r--r-- | configs/platforms.bzl | 89 | ||||
-rw-r--r-- | crosstool/BUILD.toolchains | 90 | ||||
-rw-r--r-- | crosstool/BUILD.tpl | 36 | ||||
-rw-r--r-- | platforms/BUILD | 161 |
6 files changed, 165 insertions, 258 deletions
@@ -24,6 +24,7 @@ filegroup( testonly = 1, srcs = [ "WORKSPACE", + "//configs:for_bazel_tests", "//constraints:for_bazel_tests", "//crosstool:for_bazel_tests", "//lib:for_bazel_tests", diff --git a/configs/BUILD b/configs/BUILD new file mode 100644 index 0000000..0e31575 --- /dev/null +++ b/configs/BUILD @@ -0,0 +1,46 @@ +load("@bazel_skylib//lib:selects.bzl", "selects") +load(":platforms.bzl", "APPLE_PLATFORMS_CONSTRAINTS") + +package(default_visibility = ["//visibility:public"]) + +selects.config_setting_group( + name = "apple", + match_any = [ + cpu + for cpu in APPLE_PLATFORMS_CONSTRAINTS.keys() + ], +) + +[ + config_setting( + name = cpu, + values = {"cpu": cpu}, + ) + for cpu in APPLE_PLATFORMS_CONSTRAINTS.keys() +] + +selects.config_setting_group( + name = "any_device", + match_any = [ + cpu + for cpu, constraints in APPLE_PLATFORMS_CONSTRAINTS.items() + if "@build_bazel_apple_support//constraints:device" in constraints + ], +) + +selects.config_setting_group( + name = "any_simulator", + match_any = [ + cpu + for cpu, constraints in APPLE_PLATFORMS_CONSTRAINTS.items() + if "@build_bazel_apple_support//constraints:simulator" in constraints + ], +) + +# Consumed by bazel tests. +filegroup( + name = "for_bazel_tests", + testonly = True, + srcs = glob(["**"]), + visibility = ["//:__pkg__"], +) diff --git a/configs/platforms.bzl b/configs/platforms.bzl new file mode 100644 index 0000000..262f751 --- /dev/null +++ b/configs/platforms.bzl @@ -0,0 +1,89 @@ +"""Defines all the Apple CPUs and their constraints""" + +APPLE_PLATFORMS_CONSTRAINTS = { + "darwin_arm64": [ + "@platforms//os:macos", + "@platforms//cpu:arm64", + "@build_bazel_apple_support//constraints:device", + ], + "darwin_arm64e": [ + "@platforms//os:macos", + "@platforms//cpu:arm64", + "@build_bazel_apple_support//constraints:device", + ], + "darwin_x86_64": [ + "@platforms//os:macos", + "@platforms//cpu:x86_64", + "@build_bazel_apple_support//constraints:device", + ], + "ios_arm64": [ + "@platforms//os:ios", + "@platforms//cpu:arm64", + "@build_bazel_apple_support//constraints:device", + ], + "ios_arm64e": [ + "@platforms//os:ios", + "@platforms//cpu:arm64", + "@build_bazel_apple_support//constraints:device", + ], + "ios_armv7": [ + "@platforms//os:ios", + "@platforms//cpu:armv7", + "@build_bazel_apple_support//constraints:device", + ], + "ios_i386": [ + "@platforms//os:ios", + "@platforms//cpu:i386", + "@build_bazel_apple_support//constraints:simulator", + ], + "ios_x86_64": [ + "@platforms//os:ios", + "@platforms//cpu:x86_64", + "@build_bazel_apple_support//constraints:simulator", + ], + "ios_sim_arm64": [ + "@platforms//os:ios", + "@platforms//cpu:arm64", + "@build_bazel_apple_support//constraints:simulator", + ], + "tvos_arm64": [ + "@platforms//os:tvos", + "@platforms//cpu:arm64", + "@build_bazel_apple_support//constraints:device", + ], + "tvos_x86_64": [ + "@platforms//os:tvos", + "@platforms//cpu:x86_64", + "@build_bazel_apple_support//constraints:simulator", + ], + "tvos_sim_arm64": [ + "@platforms//os:tvos", + "@platforms//cpu:arm64", + "@build_bazel_apple_support//constraints:simulator", + ], + "watchos_arm64": [ + "@platforms//os:watchos", + "@platforms//cpu:arm64", + "@build_bazel_apple_support//constraints:simulator", + ], + "watchos_arm64_32": [ + "@platforms//os:watchos", + "@platforms//cpu:arm64_32", + "@build_bazel_apple_support//constraints:device", + ], + "watchos_armv7k": [ + "@platforms//os:watchos", + "@platforms//cpu:armv7k", + "@build_bazel_apple_support//constraints:device", + ], + "watchos_i386": [ + "@platforms//os:watchos", + "@platforms//cpu:i386", + "@build_bazel_apple_support//constraints:simulator", + ], + "watchos_x86_64": [ + "@platforms//os:watchos", + "@platforms//cpu:x86_64", + "@build_bazel_apple_support//constraints:simulator", + ], +} diff --git a/crosstool/BUILD.toolchains b/crosstool/BUILD.toolchains index 8fddd94..d52bef7 100644 --- a/crosstool/BUILD.toolchains +++ b/crosstool/BUILD.toolchains @@ -1,83 +1,6 @@ -package(default_visibility = ["//visibility:public"]) +load("@build_bazel_apple_support//configs:platforms.bzl", "APPLE_PLATFORMS_CONSTRAINTS") -# Target constraints for each arch. -# TODO(apple-rules): Rename osx constraint to macOS. -OSX_TOOLS_CONSTRAINTS = { - "darwin_arm64": [ - "@platforms//os:osx", - "@platforms//cpu:arm64", - ], - "darwin_arm64e": [ - "@platforms//os:osx", - "@platforms//cpu:arm64", - ], - "darwin_x86_64": [ - "@platforms//os:osx", - "@platforms//cpu:x86_64", - ], - "ios_arm64": [ - "@platforms//os:ios", - "@platforms//cpu:arm64", - "@build_bazel_apple_support//constraints:device", - ], - "ios_arm64e": [ - "@platforms//os:ios", - "@platforms//cpu:arm64", - ], - "ios_armv7": [ - "@platforms//os:ios", - "@platforms//cpu:armv7", - ], - "ios_i386": [ - "@platforms//os:ios", - "@platforms//cpu:i386", - ], - "ios_x86_64": [ - "@platforms//os:ios", - "@platforms//cpu:x86_64", - ], - "ios_sim_arm64": [ - "@platforms//os:ios", - "@platforms//cpu:arm64", - "@build_bazel_apple_support//constraints:simulator", - ], - "tvos_arm64": [ - "@platforms//os:tvos", - "@platforms//cpu:arm64", - "@build_bazel_apple_support//constraints:device", - ], - "tvos_x86_64": [ - "@platforms//os:tvos", - "@platforms//cpu:x86_64", - ], - "tvos_sim_arm64": [ - "@platforms//os:tvos", - "@platforms//cpu:arm64", - "@build_bazel_apple_support//constraints:simulator", - ], - "watchos_arm64": [ - "@platforms//os:watchos", - "@platforms//cpu:arm64", - ], - "watchos_arm64_32": [ - "@platforms//os:watchos", - "@platforms//cpu:arm64_32", - ], - "watchos_armv7k": [ - "@platforms//os:watchos", - "@platforms//cpu:armv7k", - ], - "watchos_i386": [ - "@platforms//os:watchos", - "@platforms//cpu:i386", - ], - "watchos_x86_64": [ - "@platforms//os:watchos", - "@platforms//cpu:x86_64", - ], -} - -OSX_DEVELOPER_PLATFORM_CPUS = [ +_OSX_DEVELOPER_PLATFORM_CPUS = [ "arm64", "x86_64", ] @@ -87,13 +10,14 @@ OSX_DEVELOPER_PLATFORM_CPUS = [ name = "cc-toolchain-" + arch + "-" + cpu, exec_compatible_with = [ # These only execute on macOS. - "@platforms//os:osx", + "@platforms//os:macos", "@platforms//cpu:" + cpu, ], - target_compatible_with = OSX_TOOLS_CONSTRAINTS[arch], + target_compatible_with = APPLE_PLATFORMS_CONSTRAINTS[arch], toolchain = "@local_config_apple_cc//:cc-compiler-" + arch, toolchain_type = "@bazel_tools//tools/cpp:toolchain_type", + visibility = ["//visibility:public"], ) - for arch in OSX_TOOLS_CONSTRAINTS.keys() - for cpu in OSX_DEVELOPER_PLATFORM_CPUS + for arch in APPLE_PLATFORMS_CONSTRAINTS.keys() + for cpu in _OSX_DEVELOPER_PLATFORM_CPUS ] diff --git a/crosstool/BUILD.tpl b/crosstool/BUILD.tpl index 75eaa39..830a94c 100644 --- a/crosstool/BUILD.tpl +++ b/crosstool/BUILD.tpl @@ -1,37 +1,17 @@ package(default_visibility = ["//visibility:public"]) -OSX_TOOLS_NON_DEVICE_ARCHS = [ - "darwin_x86_64", - "darwin_arm64", - "darwin_arm64e", - "ios_i386", - "ios_x86_64", - "ios_sim_arm64", - "watchos_arm64", - "watchos_i386", - "watchos_x86_64", - "tvos_x86_64", - "tvos_sim_arm64", -] - -OSX_TOOLS_ARCHS = [ - "ios_armv7", - "ios_arm64", - "ios_arm64e", - "watchos_armv7k", - "watchos_arm64_32", - "tvos_arm64", -] + OSX_TOOLS_NON_DEVICE_ARCHS - +load("@build_bazel_apple_support//configs:platforms.bzl", "APPLE_PLATFORMS_CONSTRAINTS") load(":cc_toolchain_config.bzl", "cc_toolchain_config") +_APPLE_ARCHS = APPLE_PLATFORMS_CONSTRAINTS.keys() + CC_TOOLCHAINS = [( cpu + "|clang", ":cc-compiler-" + cpu, -) for cpu in OSX_TOOLS_ARCHS] + [( +) for cpu in _APPLE_ARCHS] + [( cpu, ":cc-compiler-" + cpu, -) for cpu in OSX_TOOLS_ARCHS] + [ +) for cpu in _APPLE_ARCHS] + [ ("k8|clang", ":cc-compiler-darwin_x86_64"), ("darwin|clang", ":cc-compiler-darwin_x86_64"), ("k8", ":cc-compiler-darwin_x86_64"), @@ -74,7 +54,7 @@ cc_toolchain_suite( ":xcrunwrapper.sh", ], ) - for arch in OSX_TOOLS_ARCHS + for arch in _APPLE_ARCHS ] [ @@ -92,7 +72,7 @@ cc_toolchain_suite( toolchain_config = arch, toolchain_identifier = arch, ) - for arch in OSX_TOOLS_ARCHS + for arch in _APPLE_ARCHS ] [ @@ -105,5 +85,5 @@ cc_toolchain_suite( ], tool_paths_overrides = {%{tool_paths_overrides}}, ) - for arch in OSX_TOOLS_ARCHS + for arch in _APPLE_ARCHS ] diff --git a/platforms/BUILD b/platforms/BUILD index 4033967..a872202 100644 --- a/platforms/BUILD +++ b/platforms/BUILD @@ -1,154 +1,21 @@ +load("//configs:platforms.bzl", "APPLE_PLATFORMS_CONSTRAINTS") + package(default_visibility = ["//visibility:public"]) -platform( +[ + platform( + name = cpu, + constraint_values = constraints, + ) + for cpu, constraints in APPLE_PLATFORMS_CONSTRAINTS.items() +] + +alias( name = "macos_x86_64", - constraint_values = [ - "@platforms//cpu:x86_64", - "@platforms//os:macos", - "@build_bazel_apple_support//constraints:device", - ], + actual = "darwin_x86_64", ) -platform( +alias( name = "macos_arm64", - constraint_values = [ - "@platforms//cpu:arm64", - "@platforms//os:macos", - "@build_bazel_apple_support//constraints:device", - ], -) - -platform( - name = "macos_arm64e", - constraint_values = [ - "@platforms//cpu:arm64e", - "@platforms//os:macos", - "@build_bazel_apple_support//constraints:device", - ], -) - -platform( - name = "ios_i386", - constraint_values = [ - "@platforms//cpu:i386", - "@platforms//os:ios", - "@build_bazel_apple_support//constraints:simulator", - ], -) - -platform( - name = "ios_x86_64", - constraint_values = [ - "@platforms//cpu:x86_64", - "@platforms//os:ios", - "@build_bazel_apple_support//constraints:simulator", - ], -) - -platform( - name = "ios_sim_arm64", - constraint_values = [ - "@platforms//cpu:arm64", - "@platforms//os:ios", - "@build_bazel_apple_support//constraints:simulator", - ], -) - -platform( - name = "ios_armv7", - constraint_values = [ - "@platforms//cpu:armv7", - "@platforms//os:ios", - "@build_bazel_apple_support//constraints:device", - ], -) - -platform( - name = "ios_arm64", - constraint_values = [ - "@platforms//cpu:arm64", - "@platforms//os:ios", - "@build_bazel_apple_support//constraints:device", - ], -) - -platform( - name = "ios_arm64e", - constraint_values = [ - "@platforms//cpu:arm64e", - "@platforms//os:ios", - "@build_bazel_apple_support//constraints:device", - ], -) - -platform( - name = "tvos_x86_64", - constraint_values = [ - "@platforms//cpu:x86_64", - "@platforms//os:tvos", - "@build_bazel_apple_support//constraints:simulator", - ], -) - -platform( - name = "tvos_sim_arm64", - constraint_values = [ - "@platforms//cpu:arm64", - "@platforms//os:tvos", - "@build_bazel_apple_support//constraints:simulator", - ], -) - -platform( - name = "tvos_arm64", - constraint_values = [ - "@platforms//cpu:arm64", - "@platforms//os:tvos", - "@build_bazel_apple_support//constraints:device", - ], -) - -platform( - name = "watchos_i386", - constraint_values = [ - "@platforms//cpu:i386", - "@platforms//os:watchos", - "@build_bazel_apple_support//constraints:simulator", - ], -) - -platform( - name = "watchos_x86_64", - constraint_values = [ - "@platforms//cpu:x86_64", - "@platforms//os:watchos", - "@build_bazel_apple_support//constraints:simulator", - ], -) - -platform( - name = "watchos_arm64", - constraint_values = [ - "@platforms//cpu:arm64", - "@platforms//os:watchos", - "@build_bazel_apple_support//constraints:simulator", - ], -) - -platform( - name = "watchos_armv7k", - constraint_values = [ - "@platforms//cpu:armv7k", - "@platforms//os:watchos", - "@build_bazel_apple_support//constraints:device", - ], -) - -platform( - name = "watchos_arm64_32", - constraint_values = [ - "@platforms//cpu:arm64_32", - "@platforms//os:watchos", - "@build_bazel_apple_support//constraints:device", - ], + actual = "darwin_arm64", ) |