diff --git a/examples/ios_app/test/fixtures/project.xcodeproj/project.pbxproj b/examples/ios_app/test/fixtures/project.xcodeproj/project.pbxproj index 15d8389448..2b4d21a94c 100755 --- a/examples/ios_app/test/fixtures/project.xcodeproj/project.pbxproj +++ b/examples/ios_app/test/fixtures/project.xcodeproj/project.pbxproj @@ -1216,6 +1216,13 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = ( + "-framework", + Foundation, + "-weak_framework", + SwiftUI, + "-ObjC", + ); PRODUCT_MODULE_NAME = Utils; PRODUCT_NAME = Utils; SDKROOT = iphoneos; @@ -1355,6 +1362,10 @@ OTHER_LDFLAGS = ( "-filelist", "$(PROJECT_DIR)/test/fixtures/project.xcodeproj/rules_xcodeproj/targets/ios-x86_64-min15.0-applebin_ios-ios_x86_64-fastbuild-ST-d3e756bfe7fd/ExampleTests/ExampleTests.__internal__.__test_bundle.LinkFileList,$(BUILD_DIR)", + "-framework", + Foundation, + "-weak_framework", + SwiftUI, "-ObjC", ); OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined -Xcc -fmodule-map-file=$(PROJECT_DIR)/third_party/ExampleFramework.framework/Modules/module.modulemap -Xcc -fmodule-map-file=$(PROJECT_DIR)/bazel-ios_app/external/examples_ios_app_external/ExternalFramework.framework/Modules/module.modulemap -Xcc -fmodule-map-file=$(BUILD_DIR)/bazel-out/ios-x86_64-min15.0-applebin_ios-ios_x86_64-fastbuild-ST-d3e756bfe7fd/bin/CoreUtilsObjC/CoreUtilsObjC.swift.xcode.modulemap -Xcc -fmodule-map-file=$(BUILD_DIR)/bazel-out/ios-x86_64-min15.0-applebin_ios-ios_x86_64-fastbuild-ST-d3e756bfe7fd/bin/Utils/Utils.swift.xcode.modulemap -Xcc -fmodule-map-file=$(BUILD_DIR)/bazel-out/ios-x86_64-min15.0-applebin_ios-ios_x86_64-fastbuild-ST-d3e756bfe7fd/bin/TestingUtils/TestingUtils.swift.xcode.modulemap -Fthird_party -Fexternal/examples_ios_app_external"; @@ -1434,6 +1445,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined"; PRODUCT_MODULE_NAME = TestingUtils; PRODUCT_NAME = TestingUtils; @@ -1515,6 +1527,13 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = ( + "-framework", + Foundation, + "-weak_framework", + SwiftUI, + "-ObjC", + ); PRODUCT_MODULE_NAME = CoreUtils; PRODUCT_NAME = CoreUtilsObjC; SDKROOT = iphoneos; @@ -1591,6 +1610,10 @@ OTHER_LDFLAGS = ( "-filelist", "$(PROJECT_DIR)/test/fixtures/project.xcodeproj/rules_xcodeproj/targets/ios-x86_64-min15.0-applebin_ios-ios_x86_64-fastbuild-ST-d3e756bfe7fd/Example/Example.LinkFileList,$(BUILD_DIR)", + "-framework", + Foundation, + "-weak_framework", + SwiftUI, "-ObjC", ); OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined -Xcc -fmodule-map-file=$(PROJECT_DIR)/third_party/ExampleFramework.framework/Modules/module.modulemap -Xcc -fmodule-map-file=$(PROJECT_DIR)/bazel-ios_app/external/examples_ios_app_external/ExternalFramework.framework/Modules/module.modulemap -Xcc -fmodule-map-file=$(BUILD_DIR)/bazel-out/ios-x86_64-min15.0-applebin_ios-ios_x86_64-fastbuild-ST-d3e756bfe7fd/bin/CoreUtilsObjC/CoreUtilsObjC.swift.xcode.modulemap -Xcc -fmodule-map-file=$(BUILD_DIR)/bazel-out/ios-x86_64-min15.0-applebin_ios-ios_x86_64-fastbuild-ST-d3e756bfe7fd/bin/Utils/Utils.swift.xcode.modulemap -Fthird_party -Fexternal/examples_ios_app_external"; @@ -1667,6 +1690,10 @@ "-L/usr/lib/swift", "-filelist", "$(PROJECT_DIR)/test/fixtures/project.xcodeproj/rules_xcodeproj/targets/ios-x86_64-min15.0-applebin_ios-ios_x86_64-fastbuild-ST-d3e756bfe7fd/ExampleObjcTests/ExampleObjcTests.__internal__.__test_bundle.LinkFileList,$(BUILD_DIR)", + "-framework", + Foundation, + "-weak_framework", + SwiftUI, "-ObjC", ); PRODUCT_BUNDLE_IDENTIFIER = io.buildbuddy.example.objctests; diff --git a/examples/ios_app/test/fixtures/spec.json b/examples/ios_app/test/fixtures/spec.json index 84118469d3..a67fdb9d99 100755 --- a/examples/ios_app/test/fixtures/spec.json +++ b/examples/ios_app/test/fixtures/spec.json @@ -221,6 +221,13 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-framework", + "Foundation", + "-weak_framework", + "SwiftUI", + "-ObjC" + ], "PRODUCT_MODULE_NAME": "CoreUtils", "PRODUCT_NAME": "CoreUtilsObjC", "SWIFT_OBJC_INTERFACE_HEADER_NAME": "", @@ -450,6 +457,13 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-framework", + "Foundation", + "-weak_framework", + "SwiftUI", + "-ObjC" + ], "OTHER_SWIFT_FLAGS": "-Fthird_party -Fexternal/examples_ios_app_external", "PRODUCT_MODULE_NAME": "Example", "PRODUCT_NAME": "Example.library", @@ -682,6 +696,13 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-framework", + "Foundation", + "-weak_framework", + "SwiftUI", + "-ObjC" + ], "PRODUCT_MODULE_NAME": "ExampleObjcTests", "PRODUCT_NAME": "ExampleObjcTests.library", "SWIFT_OBJC_INTERFACE_HEADER_NAME": "", @@ -937,6 +958,13 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-framework", + "Foundation", + "-weak_framework", + "SwiftUI", + "-ObjC" + ], "OTHER_SWIFT_FLAGS": "-Fthird_party -Fexternal/examples_ios_app_external", "PRODUCT_MODULE_NAME": "ExampleTests", "PRODUCT_NAME": "ExampleTests.library", @@ -1176,6 +1204,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "ExampleUITests", "PRODUCT_NAME": "ExampleUITests.library", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", @@ -1267,6 +1298,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "TestingUtils", "PRODUCT_NAME": "TestingUtils", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG AWESOME", @@ -1364,6 +1398,13 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-framework", + "Foundation", + "-weak_framework", + "SwiftUI", + "-ObjC" + ], "PRODUCT_MODULE_NAME": "Utils", "PRODUCT_NAME": "Utils", "SWIFT_OBJC_INTERFACE_HEADER_NAME": "", diff --git a/examples/ios_app/third_party/BUILD b/examples/ios_app/third_party/BUILD index 73db77022f..57bbcdf44b 100644 --- a/examples/ios_app/third_party/BUILD +++ b/examples/ios_app/third_party/BUILD @@ -9,5 +9,7 @@ apple_static_framework_import( ["ExampleFramework.framework/**"], exclude = ["**/.*"], ), + sdk_frameworks = ["Foundation"], visibility = ["//visibility:public"], + weak_sdk_frameworks = ["SwiftUI"], ) diff --git a/test/fixtures/cc/project.xcodeproj/project.pbxproj b/test/fixtures/cc/project.xcodeproj/project.pbxproj index 1dcfe962b5..c742b52242 100755 --- a/test/fixtures/cc/project.xcodeproj/project.pbxproj +++ b/test/fixtures/cc/project.xcodeproj/project.pbxproj @@ -377,6 +377,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = lib_impl; SDKROOT = macosx; SWIFT_OBJC_INTERFACE_HEADER_NAME = ""; @@ -516,6 +517,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = lib_impl; SDKROOT = macosx; SWIFT_OBJC_INTERFACE_HEADER_NAME = ""; @@ -573,6 +575,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = lib_impl; SDKROOT = macosx; SWIFT_OBJC_INTERFACE_HEADER_NAME = ""; diff --git a/test/fixtures/cc/spec.json b/test/fixtures/cc/spec.json index 7619be5dff..82b852eca4 100644 --- a/test/fixtures/cc/spec.json +++ b/test/fixtures/cc/spec.json @@ -59,6 +59,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_NAME": "lib_impl", "SWIFT_OBJC_INTERFACE_HEADER_NAME": "", "SWIFT_OPTIMIZATION_LEVEL": "-Onone", @@ -146,6 +149,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_NAME": "lib_impl", "SWIFT_OBJC_INTERFACE_HEADER_NAME": "", "SWIFT_OPTIMIZATION_LEVEL": "-Onone", @@ -358,6 +364,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_NAME": "lib_impl", "SWIFT_OBJC_INTERFACE_HEADER_NAME": "", "SWIFT_OPTIMIZATION_LEVEL": "-Onone", diff --git a/test/fixtures/command_line/project.xcodeproj/project.pbxproj b/test/fixtures/command_line/project.xcodeproj/project.pbxproj index 9f604848b3..b220ea8a0d 100755 --- a/test/fixtures/command_line/project.xcodeproj/project.pbxproj +++ b/test/fixtures/command_line/project.xcodeproj/project.pbxproj @@ -790,6 +790,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = lib_impl; SDKROOT = macosx; SWIFT_OBJC_INTERFACE_HEADER_NAME = ""; @@ -844,6 +845,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = lib_impl; SDKROOT = macosx; SWIFT_OBJC_INTERFACE_HEADER_NAME = ""; @@ -917,6 +919,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined -Xcc -fmodule-map-file=$(BUILD_DIR)/bazel-out/macos-x86_64-min11.0-applebin_macos-darwin_x86_64-fastbuild-ST-8946c8252059/bin/examples/command_line/lib/lib_impl.swift.xcode.modulemap"; PRODUCT_MODULE_NAME = LibSwift; PRODUCT_NAME = lib_swift; @@ -1050,6 +1053,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined -Xcc -fmodule-map-file=$(BUILD_DIR)/bazel-out/macos-x86_64-min12.0-applebin_macos-darwin_x86_64-fastbuild-ST-f2aadcfcab57/bin/examples/command_line/lib/lib_impl.swift.xcode.modulemap"; PRODUCT_MODULE_NAME = LibSwift; PRODUCT_NAME = lib_swift; diff --git a/test/fixtures/command_line/spec.json b/test/fixtures/command_line/spec.json index 51d0cc6d64..41e82aa62c 100644 --- a/test/fixtures/command_line/spec.json +++ b/test/fixtures/command_line/spec.json @@ -184,6 +184,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "LibSwiftTestsLib", "PRODUCT_NAME": "LibSwiftTestsLib", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", @@ -295,6 +298,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_NAME": "lib_impl", "SWIFT_OBJC_INTERFACE_HEADER_NAME": "", "SWIFT_OPTIMIZATION_LEVEL": "-Onone", @@ -381,6 +387,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_NAME": "lib_impl", "SWIFT_OBJC_INTERFACE_HEADER_NAME": "", "SWIFT_OPTIMIZATION_LEVEL": "-Onone", @@ -468,6 +477,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "LibSwift", "PRODUCT_NAME": "lib_swift", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", @@ -571,6 +583,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "LibSwift", "PRODUCT_NAME": "lib_swift", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", @@ -764,6 +779,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_NAME": "tool.library", "SWIFT_OBJC_INTERFACE_HEADER_NAME": "", "SWIFT_OPTIMIZATION_LEVEL": "-Onone", diff --git a/test/fixtures/generator/project.xcodeproj/project.pbxproj b/test/fixtures/generator/project.xcodeproj/project.pbxproj index 06dc74a2cd..b5d4640d90 100755 --- a/test/fixtures/generator/project.xcodeproj/project.pbxproj +++ b/test/fixtures/generator/project.xcodeproj/project.pbxproj @@ -1439,6 +1439,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined"; PRODUCT_MODULE_NAME = XcodeProj; PRODUCT_NAME = XcodeProj; @@ -1492,6 +1493,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined"; PRODUCT_MODULE_NAME = XCTestDynamicOverlay; PRODUCT_NAME = XCTestDynamicOverlay; @@ -1603,6 +1605,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined"; PRODUCT_MODULE_NAME = PathKit; PRODUCT_NAME = PathKit; @@ -1725,6 +1728,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined"; PRODUCT_MODULE_NAME = generator; PRODUCT_NAME = generator.library; @@ -1778,6 +1782,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined"; PRODUCT_MODULE_NAME = CustomDump; PRODUCT_NAME = CustomDump; @@ -1831,6 +1836,7 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined", ); + OTHER_LDFLAGS = "-ObjC"; OTHER_SWIFT_FLAGS = "-Xcc -fstack-protector -Xcc -Wall -Xcc -Wthread-safety -Xcc -Wself-assign -Xcc -fno-omit-frame-pointer -Xcc -no-canonical-prefixes -Xcc -pthread -Xcc -no-canonical-prefixes -Xcc -Wno-builtin-macro-redefined"; PRODUCT_MODULE_NAME = AEXML; PRODUCT_NAME = AEXML; diff --git a/test/fixtures/generator/spec.json b/test/fixtures/generator/spec.json index 771d081c4b..f0b798cec4 100644 --- a/test/fixtures/generator/spec.json +++ b/test/fixtures/generator/spec.json @@ -166,6 +166,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "tests", "PRODUCT_NAME": "tests.library", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", @@ -385,6 +388,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "generator", "PRODUCT_NAME": "generator.library", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", @@ -512,6 +518,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "PathKit", "PRODUCT_NAME": "PathKit", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", @@ -600,6 +609,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "CustomDump", "PRODUCT_NAME": "CustomDump", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", @@ -791,6 +803,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "XCTestDynamicOverlay", "PRODUCT_NAME": "XCTestDynamicOverlay", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", @@ -879,6 +894,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "AEXML", "PRODUCT_NAME": "AEXML", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", @@ -983,6 +1001,9 @@ "-no-canonical-prefixes", "-Wno-builtin-macro-redefined" ], + "OTHER_LDFLAGS": [ + "-ObjC" + ], "PRODUCT_MODULE_NAME": "XcodeProj", "PRODUCT_NAME": "XcodeProj", "SWIFT_ACTIVE_COMPILATION_CONDITIONS": "DEBUG", diff --git a/tools/generator/src/Generator+ProcessTargetMerges.swift b/tools/generator/src/Generator+ProcessTargetMerges.swift index 9b7291da40..cee07731ce 100644 --- a/tools/generator/src/Generator+ProcessTargetMerges.swift +++ b/tools/generator/src/Generator+ProcessTargetMerges.swift @@ -57,11 +57,10 @@ exist // Merge build settings merged.buildSettings["PRODUCT_MODULE_NAME"] = merging.buildSettings["PRODUCT_MODULE_NAME"] - merged.buildSettings["GCC_PREPROCESSOR_DEFINITIONS"] = - merging.buildSettings["GCC_PREPROCESSOR_DEFINITIONS"] - merged.buildSettings["SWIFT_ACTIVE_COMPILATION_CONDITIONS"] = - merging.buildSettings["SWIFT_ACTIVE_COMPILATION_CONDITIONS"] - merged.buildSettings.merge(merging.buildSettings) { l, _ in l } + + let productName = merged.buildSettings["PRODUCT_NAME"] + merged.buildSettings.merge(merging.buildSettings) { _, r in r } + merged.buildSettings["PRODUCT_NAME"] = productName // Update search paths merged.searchPaths = merging.searchPaths diff --git a/tools/generator/test/ProcessTargetMergesTests.swift b/tools/generator/test/ProcessTargetMergesTests.swift index 142487aff1..446734d8b8 100644 --- a/tools/generator/test/ProcessTargetMergesTests.swift +++ b/tools/generator/test/ProcessTargetMergesTests.swift @@ -44,9 +44,8 @@ final class TargetMergingTests: XCTestCase { buildSettings: [ // Inherited "A 1"s `PRODUCT_MODULE_NAME` "PRODUCT_MODULE_NAME": .string("A"), - // Keep "A 2"'s version of `T` - "T": .string("43"), - // Inherited "A 1"'s `Y` + // Inherited "A 1"'s `T`, `Y`, `Z` + "T": .string("42"), "Y": .bool(true), "Z": .string("0") ], diff --git a/xcodeproj/internal/target.bzl b/xcodeproj/internal/target.bzl index 789ebd42bd..d8bf06c0a5 100644 --- a/xcodeproj/internal/target.bzl +++ b/xcodeproj/internal/target.bzl @@ -1,5 +1,6 @@ """Functions for creating `XcodeProjInfo` providers.""" +load("@bazel_skylib//lib:collections.bzl", "collections") load("@bazel_skylib//lib:paths.bzl", "paths") load("@bazel_skylib//lib:sets.bzl", "sets") load( @@ -603,6 +604,10 @@ The xcodeproj rule requires {} rules to have a single library dep. {} has {}.\ cc_info = cc_info, build_settings = build_settings, ) + _process_sdk_frameworks( + objc = objc, + build_settings = build_settings, + ) search_paths = _process_search_paths( cc_info = cc_info, objc = objc, @@ -728,6 +733,11 @@ def _process_library_target(*, ctx, target, transitive_infos): getattr(ctx.rule.attr, "testonly", False), ) + build_settings["OTHER_LDFLAGS"] = ["-ObjC"] + build_settings.get( + "OTHER_LDFLAGS", + [], + ) + platform = process_platform( ctx = ctx, minimum_deployment_os_version = None, @@ -767,6 +777,10 @@ def _process_library_target(*, ctx, target, transitive_infos): cc_info = cc_info, build_settings = build_settings, ) + _process_sdk_frameworks( + objc = objc, + build_settings = build_settings, + ) search_paths = _process_search_paths( cc_info = cc_info, objc = objc, @@ -1172,10 +1186,7 @@ def _process_dependencies(*, attrs_info, transitive_infos): ]) ] -def _process_defines( - *, - cc_info, - build_settings): +def _process_defines(*, cc_info, build_settings): if cc_info and build_settings != None: # We don't set `SWIFT_ACTIVE_COMPILATION_CONDITIONS` because the way we # process Swift compile options already accounts for `defines` @@ -1213,12 +1224,29 @@ def _process_defines( set_if_true(build_settings, "GCC_PREPROCESSOR_DEFINITIONS", setting) +def _process_sdk_frameworks(*, objc, build_settings): + if not objc or build_settings == None: + return + + sdk_framework_flags = collections.before_each( + "-framework", + objc.sdk_framework.to_list(), + ) + weak_sdk_framework_flags = collections.before_each( + "-weak_framework", + objc.weak_sdk_framework.to_list(), + ) + + set_if_true( + build_settings, + "OTHER_LDFLAGS", + (sdk_framework_flags + + weak_sdk_framework_flags + + build_settings.get("OTHER_LDFLAGS", [])), + ) + # TODO: Refactor this into a search_paths module -def _process_search_paths( - *, - cc_info, - objc, - opts_search_paths): +def _process_search_paths(*, cc_info, objc, opts_search_paths): search_paths = {} if cc_info: compilation_context = cc_info.compilation_context