diff --git a/apple/apple_binary.bzl b/apple/apple_binary.bzl index 16408f6a8e..50f7af92e9 100644 --- a/apple/apple_binary.bzl +++ b/apple/apple_binary.bzl @@ -55,14 +55,13 @@ def _apple_binary_impl(ctx): bundle_loader = ctx.attr.bundle_loader extra_linkopts = [] + extra_requested_features = [] if binary_type == "dylib": - extra_linkopts.append("-dynamiclib") + extra_requested_features.append("link_dylib") elif binary_type == "loadable_bundle": - extra_linkopts.extend([ - "-bundle", - "-Wl,-rpath,@loader_path/Frameworks", - ]) + extra_linkopts.append("-Wl,-rpath,@loader_path/Frameworks") + extra_requested_features.append("link_bundle") extra_linkopts.extend([ _linker_flag_for_sdk_dylib(dylib) @@ -82,6 +81,7 @@ def _apple_binary_impl(ctx): bundle_loader = bundle_loader, exported_symbols_lists = ctx.files.exported_symbols_lists, extra_linkopts = extra_linkopts, + extra_requested_features = extra_requested_features, platform_prerequisites = None, rule_descriptor = None, stamp = ctx.attr.stamp, diff --git a/apple/internal/ios_rules.bzl b/apple/internal/ios_rules.bzl index 89425eff02..4df81cdfae 100644 --- a/apple/internal/ios_rules.bzl +++ b/apple/internal/ios_rules.bzl @@ -816,13 +816,13 @@ def _ios_framework_impl(ctx): entitlements = None, exported_symbols_lists = ctx.files.exported_symbols_lists, extra_linkopts = [ - "-dynamiclib", "-install_name", "@rpath/{name}{extension}/{name}".format( extension = bundle_extension, name = bundle_name, ), ], + extra_requested_features = ["link_dylib"], platform_prerequisites = platform_prerequisites, rule_descriptor = rule_descriptor, stamp = ctx.attr.stamp, diff --git a/apple/internal/linking_support.bzl b/apple/internal/linking_support.bzl index 166f3146fb..27b6e90337 100644 --- a/apple/internal/linking_support.bzl +++ b/apple/internal/linking_support.bzl @@ -92,6 +92,8 @@ def _register_binary_linking_action( entitlements = None, exported_symbols_lists = [], extra_linkopts = [], + extra_requested_features = [], + extra_disabled_features = [], platform_prerequisites = None, rule_descriptor = None, stamp = -1): @@ -204,6 +206,8 @@ def _register_binary_linking_action( avoid_deps = all_avoid_deps, extra_linkopts = linkopts, extra_link_inputs = link_inputs, + extra_requested_features = extra_requested_features, + extra_disabled_features = extra_disabled_features, stamp = stamp, ) diff --git a/apple/internal/macos_rules.bzl b/apple/internal/macos_rules.bzl index d1661d75f1..3ce211f1f2 100644 --- a/apple/internal/macos_rules.bzl +++ b/apple/internal/macos_rules.bzl @@ -472,7 +472,7 @@ def _macos_bundle_impl(ctx): bundle_loader = ctx.attr.bundle_loader, entitlements = entitlements, exported_symbols_lists = ctx.files.exported_symbols_lists, - extra_linkopts = ["-bundle"], + extra_requested_features = ["link_bundle"], platform_prerequisites = platform_prerequisites, rule_descriptor = rule_descriptor, stamp = ctx.attr.stamp, @@ -932,7 +932,6 @@ def _macos_quick_look_plugin_impl(ctx): ) extra_linkopts = [ - "-dynamiclib", "-install_name", "\"/Library/Frameworks/{0}.qlgenerator/{0}\"".format(ctx.attr.bundle_name), ] @@ -941,6 +940,7 @@ def _macos_quick_look_plugin_impl(ctx): entitlements = entitlements, exported_symbols_lists = ctx.files.exported_symbols_lists, extra_linkopts = extra_linkopts, + extra_requested_features = ["link_dylib"], platform_prerequisites = platform_prerequisites, rule_descriptor = rule_descriptor, stamp = ctx.attr.stamp, @@ -1920,7 +1920,7 @@ def _macos_dylib_impl(ctx): # Dynamic libraries do not have entitlements. entitlements = None, exported_symbols_lists = ctx.files.exported_symbols_lists, - extra_linkopts = ["-dynamiclib"], + extra_requested_features = ["link_dylib"], platform_prerequisites = platform_prerequisites, rule_descriptor = rule_descriptor, stamp = ctx.attr.stamp, diff --git a/apple/internal/testing/apple_test_bundle_support.bzl b/apple/internal/testing/apple_test_bundle_support.bzl index 141cca3691..3121830c2d 100644 --- a/apple/internal/testing/apple_test_bundle_support.bzl +++ b/apple/internal/testing/apple_test_bundle_support.bzl @@ -343,7 +343,6 @@ def _apple_test_bundle_impl(*, ctx, product_type): extra_linkopts = [ "-framework", "XCTest", - "-bundle", ] link_result = linking_support.register_binary_linking_action( @@ -354,6 +353,7 @@ def _apple_test_bundle_impl(*, ctx, product_type): entitlements = None, exported_symbols_lists = ctx.files.exported_symbols_lists, extra_linkopts = extra_linkopts, + extra_requested_features = ["link_bundle"], platform_prerequisites = platform_prerequisites, rule_descriptor = rule_descriptor, stamp = ctx.attr.stamp, diff --git a/apple/internal/tvos_rules.bzl b/apple/internal/tvos_rules.bzl index dfe3b01815..4a4893aa08 100644 --- a/apple/internal/tvos_rules.bzl +++ b/apple/internal/tvos_rules.bzl @@ -478,13 +478,13 @@ def _tvos_framework_impl(ctx): entitlements = None, exported_symbols_lists = ctx.files.exported_symbols_lists, extra_linkopts = [ - "-dynamiclib", "-install_name", "@rpath/{name}{extension}/{name}".format( extension = bundle_extension, name = bundle_name, ), ], + extra_requested_features = ["link_dylib"], platform_prerequisites = platform_prerequisites, rule_descriptor = rule_descriptor, stamp = ctx.attr.stamp, diff --git a/apple/internal/xcframework_rules.bzl b/apple/internal/xcframework_rules.bzl index 167157371b..6129553edb 100644 --- a/apple/internal/xcframework_rules.bzl +++ b/apple/internal/xcframework_rules.bzl @@ -502,13 +502,13 @@ def _apple_xcframework_impl(ctx): # executables. Only macOS (which is not yet supported) is an outlier; this will require # changes to native Bazel linking logic for Apple binary targets. "-Wl,-rpath,@executable_path/Frameworks", - "-dynamiclib", "-install_name", "@rpath/{name}{extension}/{name}".format( extension = nested_bundle_extension, name = bundle_name, ), ], + extra_requested_features = ["link_dylib"], platform_prerequisites = None, # All required knowledge for 3P facing frameworks is passed directly through the given # `extra_linkopts`; no rule_descriptor is needed to share with this linking action.