summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Smiley <keithbsmiley@gmail.com>2023-03-23 11:36:33 -0700
committerGitHub <noreply@github.com>2023-03-23 18:36:33 +0000
commitbaea9a25eab592ae40520dd3511c688bc232f0ad (patch)
tree822ff954853ad139dafdcb09b8d77ae1e213ca39
parent697a39795374bfe88e98e5b0034e1f201371fb59 (diff)
downloadbazelbuild-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--BUILD1
-rw-r--r--configs/BUILD46
-rw-r--r--configs/platforms.bzl89
-rw-r--r--crosstool/BUILD.toolchains90
-rw-r--r--crosstool/BUILD.tpl36
-rw-r--r--platforms/BUILD161
6 files changed, 165 insertions, 258 deletions
diff --git a/BUILD b/BUILD
index 5ade818..6ca8a67 100644
--- a/BUILD
+++ b/BUILD
@@ -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",
)