Skip to content

Commit

Permalink
Add support for macos in apple_*_xcframework rules
Browse files Browse the repository at this point in the history
  • Loading branch information
luispadron committed May 26, 2024
1 parent d4b6341 commit d8a3282
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 7 deletions.
11 changes: 6 additions & 5 deletions apple/internal/resource_actions/plist.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -341,19 +341,20 @@ def merge_root_infoplists(
else:
plist_key = "MinimumOSVersion"

input_files.append(environment_plist)
platform = platform_prerequisites.platform
sdk_version = platform_prerequisites.sdk_version
platform_with_version = platform.name_in_plist.lower() + str(sdk_version)
forced_plists.extend([
environment_plist.path,
if environment_plist:
input_files.append(environment_plist)
forced_plists.append(environment_plist.path)
forced_plists.append(
struct(
CFBundleSupportedPlatforms = [platform.name_in_plist],
DTPlatformName = platform.name_in_plist.lower(),
DTSDKName = platform_with_version,
**{plist_key: platform_prerequisites.minimum_deployment_os}
),
])
)
)

output_files = [output_plist]
if output_pkginfo:
Expand Down
15 changes: 13 additions & 2 deletions apple/internal/transition_support.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ load(
"@build_bazel_rules_apple//apple/build_settings:build_settings.bzl",
"build_settings_labels",
)
load(
"@bazel_skylib//lib:types.bzl",
"types",
)

_supports_visionos = hasattr(apple_common.platform_type, "visionos")
_is_bazel_7 = not hasattr(apple_common, "apple_crosstool_transition")
Expand Down Expand Up @@ -346,9 +350,16 @@ def _command_line_options_for_xcframework_platform(
"""
output_dictionary = {}
for target_environment in target_environments:
if not platform_attr.get(target_environment):
is_platform_attr_dict = types.is_dict(platform_attr)

if is_platform_attr_dict and not platform_attr.get(target_environment):
continue
for arch in platform_attr[target_environment]:
elif is_platform_attr_dict:
platform_attr = platform_attr[target_environment]
else:
platform_attr = platform_attr

for arch in platform_attr:
resolved_environment_arch = _resolved_environment_arch_for_arch(
arch = arch,
environment = target_environment,
Expand Down
5 changes: 5 additions & 0 deletions apple/internal/xcframework_rules.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -864,6 +864,11 @@ built for those platform variants (for example, `x86_64`, `arm64`) as their valu
A dictionary of strings indicating which platform variants should be built for the tvOS platform (
`device` or `simulator`) as keys, and arrays of strings listing which architectures should be
built for those platform variants (for example, `x86_64`, `arm64`) as their values.
""",
),
"macos": attr.string_list(
doc = """
A list of strings indicating which architecture should be built for the macOS platform (for example, `x86_64`, `arm64`).
""",
),
"minimum_deployment_os_versions": attr.string_dict(
Expand Down
26 changes: 26 additions & 0 deletions test/starlark_tests/targets_under_test/apple/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -1530,3 +1530,29 @@ apple_metal_library(
hdrs = ["@build_bazel_rules_apple//test/testdata/resources:metal_hdrs"],
tags = common.fixture_tags,
)

apple_xcframework(
name = "ios_and_macos_dynamic_xcframework",
bundle_id = "com.google.example",
extension_safe = True,
infoplists = [
"//test/starlark_tests/resources:Info.plist",
],
ios = {
"simulator": ["x86_64"],
"device": ["arm64"],
},
macos = [
"arm64",
"x86_64",
],
minimum_os_versions = {
"ios": common.min_os_ios.baseline,
"macos": common.min_os_macos.baseline,
},
public_hdrs = [
"//test/starlark_tests/resources:shared.h",
],
tags = common.fixture_tags,
deps = [":fmwk_lib"],
)

0 comments on commit d8a3282

Please sign in to comment.