@@ -220,6 +220,7 @@ def new_objc_provider(
220
220
additional_objc_infos = [],
221
221
alwayslink = False ,
222
222
deps ,
223
+ private_deps ,
223
224
feature_configuration ,
224
225
is_test ,
225
226
libraries_to_link ,
@@ -263,7 +264,8 @@ def new_objc_provider(
263
264
# the Obj-C and C++ rules, we need to collect libraries from `CcInfo` and
264
265
# put them into the new `Objc` provider.
265
266
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 ):
267
269
static_libs = []
268
270
for linker_input in cc_info .linking_context .linker_inputs .to_list ():
269
271
for library_to_link in linker_input .libraries :
@@ -302,6 +304,26 @@ def new_objc_provider(
302
304
):
303
305
extra_linkopts .append ("-ObjC" )
304
306
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
+
305
327
return apple_common .new_objc_provider (
306
328
force_load_library = depset (
307
329
force_load_libraries ,
@@ -314,10 +336,7 @@ def new_objc_provider(
314
336
),
315
337
link_inputs = depset (additional_link_inputs + debug_link_inputs ),
316
338
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 ,
321
340
)
322
341
323
342
def register_link_binary_action (
0 commit comments