Skip to content

Commit

Permalink
make visionOS backwards compat
Browse files Browse the repository at this point in the history
  • Loading branch information
keith committed Aug 12, 2023
1 parent bbf416f commit b47287e
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 6 deletions.
9 changes: 7 additions & 2 deletions test/rules/apple_verification_test.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

load("@bazel_skylib//lib:dicts.bzl", "dicts")

_supports_visionos = hasattr(apple_common.platform_type, "visionos")

def _transition_impl(_, attr):
output_dictionary = {
"//command_line_option:cpu": "darwin_x86_64",
Expand All @@ -29,6 +31,7 @@ def _transition_impl(_, attr):
"//command_line_option:visionos_cpus": "x86_64",
"//command_line_option:watchos_cpus": "x86_64",
})

else:
output_dictionary.update({
"//command_line_option:ios_multi_cpus": "arm64",
Expand All @@ -42,6 +45,9 @@ def _transition_impl(_, attr):
command_line_option = "//command_line_option:%s" % cpu_option
output_dictionary.update({command_line_option: cpu})

if not _supports_visionos:
output_dictionary.pop("//command_line_option:visionos_cpus", None)

return output_dictionary

_transition = transition(
Expand All @@ -53,9 +59,8 @@ _transition = transition(
"//command_line_option:ios_signing_cert_name",
"//command_line_option:macos_cpus",
"//command_line_option:tvos_cpus",
"//command_line_option:visionos_cpus",
"//command_line_option:watchos_cpus",
],
] + (["//command_line_option:visionos_cpus"] if _supports_visionos else []),
)

def _apple_verification_test_impl(ctx):
Expand Down
17 changes: 17 additions & 0 deletions test/test_data/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,26 @@ objc_library(
deps = ["objc_lib"],
)

config_setting(
name = "compiler_gcc",
flag_values = {
"@bazel_tools//tools/cpp:compiler": "gcc",
},
)

config_setting(
name = "supports_visionos",
values = {"define": "supports_visionos=1"},
)

starlark_apple_binary(
name = "visionos_binary",
minimum_os_version = "1.0",
platform_type = "visionos",
tags = TARGETS_UNDER_TEST_TAGS,
target_compatible_with = select({
":supports_visionos": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
deps = [":objc_main"],
)
20 changes: 16 additions & 4 deletions test/transitions.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,20 @@ _PLATFORM_TYPE_TO_CPUS_FLAG = {
"ios": "//command_line_option:ios_multi_cpus",
"macos": "//command_line_option:macos_cpus",
"tvos": "//command_line_option:tvos_cpus",
"visionos": "//command_line_option:visionos_cpus",
"watchos": "//command_line_option:watchos_cpus",
}

_PLATFORM_TYPE_TO_DEFAULT_ARCH = {
"ios": "x86_64",
"macos": "x86_64",
"tvos": "x86_64",
"visionos": "x86_64",
"watchos": "i386",
}

_supports_visionos = hasattr(apple_common.platform_type, "visionos")

def _cpu_string(*, environment_arch, platform_type, settings = {}):
if platform_type == "ios":
if environment_arch:
Expand Down Expand Up @@ -51,6 +55,13 @@ def _cpu_string(*, environment_arch, platform_type, settings = {}):
if watchos_cpus:
return "watchos_{}".format(watchos_cpus[0])
return "watchos_i386"
if platform_type == "visionos":
if environment_arch:
return "visionos_{}".format(environment_arch)
visionos_cpus = settings["//command_line_option:visionos_cpus"]
if visionos_cpus:
return "visionos_{}".format(visionos_cpus[0])
return "visionos_x86_64"

fail("ERROR: Unknown platform type: {}".format(platform_type))

Expand Down Expand Up @@ -104,16 +115,17 @@ def _command_line_options(*, apple_platforms = [], environment_arch = None, mini
return output_dictionary

_apple_platform_transition_inputs = [
"//command_line_option:apple_crosstool_top",
"//command_line_option:apple_platforms",
"//command_line_option:cpu",
"//command_line_option:apple_crosstool_top",
"//command_line_option:incompatible_enable_apple_toolchain_resolution",
"//command_line_option:ios_multi_cpus",
"//command_line_option:macos_cpus",
"//command_line_option:platforms",
"//command_line_option:tvos_cpus",
"//command_line_option:watchos_cpus",
"//command_line_option:incompatible_enable_apple_toolchain_resolution",
"//command_line_option:platforms",
]
] + (["//command_line_option:visionos_cpus"] if _supports_visionos else [])

_apple_rule_base_transition_outputs = [
"//command_line_option:apple configuration distinguisher",
"//command_line_option:apple_platform_type",
Expand Down

0 comments on commit b47287e

Please sign in to comment.