Use two-argument form for specifying linker framework arguments
Previously using them causes link args deduplication error.
https://github.com/bazelbuild/bazel/commit/f0fca21a876323f49233f43dab87b68bfa5dd879
fixes the underlying issue.
PiperOrigin-RevId: 492506414
Change-Id: I0da6ff78defa81536b69446c4921a7519fc70ae8
diff --git a/src/main/starlark/builtins_bzl/common/objc/objc_common.bzl b/src/main/starlark/builtins_bzl/common/objc/objc_common.bzl
index bbd9f6e..f27641d 100644
--- a/src/main/starlark/builtins_bzl/common/objc/objc_common.bzl
+++ b/src/main/starlark/builtins_bzl/common/objc/objc_common.bzl
@@ -215,10 +215,12 @@
# cc_linking_context's linkopts.
all_linkopts = all_non_sdk_linkopts
for sdk_framework in objc_provider_kwargs["sdk_framework"]:
- all_linkopts.append("-Wl,-framework," + sdk_framework)
+ all_linkopts.append("-framework")
+ all_linkopts.append(sdk_framework)
for weak_sdk_framework in objc_provider_kwargs["weak_sdk_framework"]:
- all_linkopts.append("-Wl,-weak_framework," + weak_sdk_framework)
+ all_linkopts.append("-weak_framework")
+ all_linkopts.append(weak_sdk_framework)
for sdk_dylib in objc_provider_kwargs["sdk_dylib"]:
if sdk_dylib.startswith("lib"):
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
index 4851083..908a78f 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
@@ -2582,18 +2582,15 @@
ImmutableList<String> userLinkFlags = getCcInfoUserLinkFlagsFromTarget("//x:foo");
assertThat(userLinkFlags).isNotEmpty();
+ assertThat(userLinkFlags).containsAtLeast("-framework", "AVFoundation").inOrder();
+ assertThat(userLinkFlags).containsAtLeast("-framework", "CoreData").inOrder();
+ assertThat(userLinkFlags).containsAtLeast("-framework", "Foundation").inOrder();
+ assertThat(userLinkFlags).containsAtLeast("-framework", "UIKit").inOrder();
+ assertThat(userLinkFlags).containsAtLeast("-lz", "-lc++", "-lxml2", "-lsqlite3");
+ assertThat(userLinkFlags).containsAtLeast("-framework", "Framework").inOrder();
+ assertThat(userLinkFlags).containsAtLeast("-weak_framework", "WeakFramework").inOrder();
assertThat(userLinkFlags)
- .containsAtLeast(
- "-Wl,-framework,AVFoundation",
- "-Wl,-framework,CoreData",
- "-Wl,-framework,Foundation",
- "-Wl,-framework,Framework",
- "-Wl,-framework,UIKit",
- "-Wl,-weak_framework,WeakFramework",
- "-Wl,-weak_framework,WeakFrameworkFromLinkOpt",
- "-lc++",
- "-lsqlite3",
- "-lxml2",
- "-lz");
+ .containsAtLeast("-weak_framework", "WeakFrameworkFromLinkOpt")
+ .inOrder();
}
}