Skip to content

Commit

Permalink
Remove legacy Objc provider linking support
Browse files Browse the repository at this point in the history
Linking is always done with CcInfo with bazel 7.x (LTS) and above
  • Loading branch information
keith committed Dec 5, 2024
1 parent b5dc9d1 commit a283a15
Show file tree
Hide file tree
Showing 9 changed files with 297 additions and 152 deletions.
17 changes: 0 additions & 17 deletions apple/internal/apple_framework_import.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -262,11 +262,6 @@ def _apple_dynamic_framework_import_impl(ctx):
for dep in deps
if apple_common.Objc in dep
]
objc_provider = framework_import_support.objc_provider_with_dependencies(
additional_objc_providers = transitive_objc_providers,
dynamic_framework_file = [] if ctx.attr.bundle_only else framework.binary_imports,
)
providers.append(objc_provider)

# Create CcInfo provider.
cc_info = framework_import_support.cc_info_with_dependencies(
Expand Down Expand Up @@ -294,7 +289,6 @@ def _apple_dynamic_framework_import_impl(ctx):
framework_groups = _grouped_framework_files(framework_imports)
framework_dirs_set = depset(framework_groups.keys())
providers.append(framework_import_support.new_dynamic_framework_provider(
objc = objc_provider,
cc_info = cc_info,
framework_dirs = framework_dirs_set,
framework_files = depset(framework_imports),
Expand Down Expand Up @@ -393,17 +387,6 @@ def _apple_static_framework_import_impl(ctx):
for dep in deps
if apple_common.Objc in dep
])
providers.append(
framework_import_support.objc_provider_with_dependencies(
additional_objc_provider_fields = additional_objc_provider_fields,
additional_objc_providers = additional_objc_providers,
alwayslink = alwayslink,
sdk_dylib = sdk_dylibs,
sdk_framework = sdk_frameworks,
static_framework_file = framework.binary_imports,
weak_sdk_framework = weak_sdk_frameworks,
),
)

linkopts = []
if sdk_dylibs:
Expand Down
21 changes: 0 additions & 21 deletions apple/internal/apple_xcframework_import.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -494,17 +494,6 @@ def _apple_dynamic_xcframework_import_impl(ctx):
)
providers.append(apple_framework_import_info)

# Create Objc provider
objc_provider = framework_import_support.objc_provider_with_dependencies(
additional_objc_providers = [
dep[apple_common.Objc]
for dep in deps
if apple_common.Objc in dep
],
dynamic_framework_file = [] if ctx.attr.bundle_only else [xcframework_library.binary],
)
providers.append(objc_provider)

# Create CcInfo provider
cc_info = framework_import_support.cc_info_with_dependencies(
actions = actions,
Expand All @@ -525,7 +514,6 @@ def _apple_dynamic_xcframework_import_impl(ctx):

# Create AppleDynamicFrameworkInfo provider
apple_dynamic_framework_info = framework_import_support.new_dynamic_framework_provider(
objc = objc_provider,
cc_info = cc_info,
)
providers.append(apple_dynamic_framework_info)
Expand Down Expand Up @@ -626,15 +614,6 @@ def _apple_static_xcframework_import_impl(ctx):
for dep in deps
if apple_common.Objc in dep
])
objc_provider = framework_import_support.objc_provider_with_dependencies(
additional_objc_providers = additional_objc_providers,
alwayslink = alwayslink,
sdk_dylib = ctx.attr.sdk_dylibs,
sdk_framework = ctx.attr.sdk_frameworks,
weak_sdk_framework = ctx.attr.weak_sdk_frameworks,
static_framework_file = [xcframework_library.binary],
)
providers.append(objc_provider)

sdk_linkopts = []
for dylib in ctx.attr.sdk_dylibs:
Expand Down
62 changes: 3 additions & 59 deletions apple/internal/framework_import_support.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@ load("//apple/internal:providers.bzl", "new_appleframeworkimportinfo")
load("//apple/internal/utils:defines.bzl", "defines")
load("//apple/internal/utils:files.bzl", "files")

# TODO: Remove once we drop bazel 7.x
_OBJC_PROVIDER_LINKING = hasattr(apple_common.new_objc_provider(), "linkopt")

def _cc_info_with_dependencies(
*,
actions,
Expand Down Expand Up @@ -414,67 +411,15 @@ def _has_versioned_framework_files(framework_files):
return True
return False

def _objc_provider_with_dependencies(
*,
additional_objc_provider_fields = {},
additional_objc_providers = [],
alwayslink = False,
library = None,
dynamic_framework_file = None,
sdk_dylib = None,
sdk_framework = None,
static_framework_file = None,
weak_sdk_framework = None):
"""Returns a new Objc provider which includes transitive Objc dependencies.
Args:
additional_objc_provider_fields: Additional fields to set for the Objc provider constructor.
additional_objc_providers: Additional Objc providers to merge with this target provider.
alwayslink: Boolean to indicate if force_load_library should be set with the static
framework file.
library: File referencing a static library.
dynamic_framework_file: File referencing a framework dynamic library.
sdk_dylib: List of Apple SDK dylibs to link. Defaults to None.
sdk_framework: List of Apple SDK frameworks to link. Defaults to None.
static_framework_file: File referencing a framework static library.
weak_sdk_framework: List of Apple SDK frameworks to weakly link. Defaults to None.
Returns:
apple_common.Objc provider
"""
objc_provider_fields = {}
objc_provider_fields["providers"] = additional_objc_providers

if library:
objc_provider_fields["library"] = depset(library)

if dynamic_framework_file:
objc_provider_fields["dynamic_framework_file"] = depset(dynamic_framework_file)

if static_framework_file:
objc_provider_fields["imported_library"] = depset(static_framework_file)

if alwayslink:
objc_provider_fields["force_load_library"] = depset(static_framework_file)

if sdk_dylib:
objc_provider_fields["sdk_dylib"] = depset(sdk_dylib)
if sdk_framework:
objc_provider_fields["sdk_framework"] = depset(sdk_framework)
if weak_sdk_framework:
objc_provider_fields["weak_sdk_framework"] = depset(weak_sdk_framework)

objc_provider_fields.update(**additional_objc_provider_fields)
if not _OBJC_PROVIDER_LINKING:
objc_provider_fields = {"providers": additional_objc_providers}

return apple_common.new_objc_provider(**objc_provider_fields)

def _new_dynamic_framework_provider(**kwargs):
"""A wrapper API for the Bazel API of the same name to better support multiple Bazel versions
Args:
**kwargs: Arguments to pass if supported.
"""

# TODO: Remove once we drop bazel 7.x
_OBJC_PROVIDER_LINKING = hasattr(apple_common.new_objc_provider(), "linkopt")
if not _OBJC_PROVIDER_LINKING:
kwargs.pop("objc", None)

Expand Down Expand Up @@ -553,7 +498,6 @@ framework_import_support = struct(
get_swift_module_files_with_target_triplet = _get_swift_module_files_with_target_triplet,
has_versioned_framework_files = _has_versioned_framework_files,
new_dynamic_framework_provider = _new_dynamic_framework_provider,
objc_provider_with_dependencies = _objc_provider_with_dependencies,
swift_info_from_module_interface = _swift_info_from_module_interface,
swift_interop_info_with_dependencies = _swift_interop_info_with_dependencies,
)
9 changes: 0 additions & 9 deletions apple/internal/ios_rules.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,6 @@ load(
)
load("@build_bazel_rules_swift//swift:swift.bzl", "SwiftInfo")

# TODO: Remove once we drop bazel 7.x
_OBJC_PROVIDER_LINKING = hasattr(apple_common.new_objc_provider(), "linkopt")

def _ios_application_impl(ctx):
"""Implementation of ios_application."""
rule_descriptor = rule_support.rule_descriptor(
Expand Down Expand Up @@ -1707,12 +1704,6 @@ def _ios_dynamic_framework_impl(ctx):
),
),
)
if _OBJC_PROVIDER_LINKING:
additional_providers.append(
apple_common.new_objc_provider(
dynamic_framework_file = provider.framework_files,
),
)
providers.extend(additional_providers)

return [
Expand Down
Loading

0 comments on commit a283a15

Please sign in to comment.