Skip to content

Commit 68bca45

Browse files
committed
Do not propagate module_map and umbrella_headers of objc private deps
1 parent 329d00a commit 68bca45

6 files changed

+30
-6
lines changed

swift/internal/linking.bzl

+24-5
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ def new_objc_provider(
220220
additional_objc_infos = [],
221221
alwayslink = False,
222222
deps,
223+
private_deps,
223224
feature_configuration,
224225
is_test,
225226
libraries_to_link,
@@ -263,7 +264,8 @@ def new_objc_provider(
263264
# the Obj-C and C++ rules, we need to collect libraries from `CcInfo` and
264265
# put them into the new `Objc` provider.
265266
transitive_cc_libs = []
266-
for cc_info in get_providers(deps, CcInfo):
267+
all_deps = deps + private_deps
268+
for cc_info in get_providers(all_deps, CcInfo):
267269
static_libs = []
268270
for linker_input in cc_info.linking_context.linker_inputs.to_list():
269271
for library_to_link in linker_input.libraries:
@@ -302,6 +304,26 @@ def new_objc_provider(
302304
):
303305
extra_linkopts.append("-ObjC")
304306

307+
providers = get_providers(
308+
deps,
309+
apple_common.Objc,
310+
)
311+
for private_dep in private_deps:
312+
if apple_common.Objc in private_dep:
313+
# For private deps, we only need to propagate linker inputs with Objc provider, but no compilation artifacts (eg module_map, umbrella_header).
314+
private_dep_objc_provider_kwargs = {
315+
"force_load_library": private_dep[apple_common.Objc].force_load_library,
316+
"imported_library": private_dep[apple_common.Objc].imported_library,
317+
"library": private_dep[apple_common.Objc].library,
318+
"linkopt": private_dep[apple_common.Objc].linkopt,
319+
"sdk_dylib": private_dep[apple_common.Objc].sdk_dylib,
320+
"sdk_framework": private_dep[apple_common.Objc].sdk_framework,
321+
"source": private_dep[apple_common.Objc].source,
322+
"weak_sdk_framework": private_dep[apple_common.Objc].weak_sdk_framework,
323+
}
324+
objc_provider = apple_common.new_objc_provider(**private_dep_objc_provider_kwargs)
325+
providers.append(objc_provider)
326+
305327
return apple_common.new_objc_provider(
306328
force_load_library = depset(
307329
force_load_libraries,
@@ -314,10 +336,7 @@ def new_objc_provider(
314336
),
315337
link_inputs = depset(additional_link_inputs + debug_link_inputs),
316338
linkopt = depset(user_link_flags + extra_linkopts),
317-
providers = get_providers(
318-
deps,
319-
apple_common.Objc,
320-
) + additional_objc_infos,
339+
providers = providers + additional_objc_infos,
321340
)
322341

323342
def register_link_binary_action(

swift/internal/swift_grpc_library.bzl

+1
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ def _swift_grpc_library_impl(ctx):
346346
swift_toolchain.implicit_deps_providers.objc_infos
347347
),
348348
deps = compile_deps,
349+
private_deps = [],
349350
feature_configuration = feature_configuration,
350351
is_test = ctx.attr.testonly,
351352
module_context = module_context,

swift/internal/swift_import.bzl

+1
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ def _swift_import_impl(ctx):
9191
# ignored on non-Apple platforms anyway.
9292
new_objc_provider(
9393
deps = deps,
94+
private_deps = [],
9495
feature_configuration = None,
9596
is_test = ctx.attr.testonly,
9697
libraries_to_link = libraries_to_link,

swift/internal/swift_library.bzl

+2-1
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,8 @@ def _swift_library_impl(ctx):
268268
additional_link_inputs = additional_inputs,
269269
additional_objc_infos = implicit_deps_providers.objc_infos,
270270
alwayslink = ctx.attr.alwayslink,
271-
deps = deps + private_deps,
271+
deps = deps,
272+
private_deps = private_deps,
272273
feature_configuration = feature_configuration,
273274
is_test = ctx.attr.testonly,
274275
module_context = module_context,

swift/internal/swift_module_alias.bzl

+1
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ def _swift_module_alias_impl(ctx):
121121
swift_toolchain.implicit_deps_providers.objc_infos
122122
),
123123
deps = deps,
124+
private_deps = [],
124125
feature_configuration = feature_configuration,
125126
is_test = ctx.attr.testonly,
126127
module_context = module_context,

swift/internal/swift_protoc_gen_aspect.bzl

+1
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,7 @@ def _swift_protoc_gen_aspect_impl(target, aspect_ctx):
498498
# We pass an empty list here because we already extracted the
499499
# `Objc` providers from `SwiftProtoCcInfo` above.
500500
deps = [],
501+
private_deps = [],
501502
feature_configuration = feature_configuration,
502503
is_test = False,
503504
module_context = module_context,

0 commit comments

Comments
 (0)