mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-02 20:00:38 -06:00
Ninja: Revert accidental LINK_WHAT_YOU_USE impl for static libraries
In commit d7159f9591, (Ninja: Fix LINK_WHAT_YOU_USE link flag placement,
2021-06-24), we fixed usage of -Wl,--no-as-needed to override
-Wl,--as-needed from LDFLAGS. However, that change also passes
-Wl,--no-as-needed to `ar`, which is incorrect flag for `ar`.
Let's check the target type before passing down the flags.
Fixes: #22487
This commit is contained in:
committed by
Brad King
parent
f7cf69e34a
commit
93eb4a7bd1
@@ -1156,7 +1156,10 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement(
|
||||
|
||||
this->AddModuleDefinitionFlag(linkLineComputer.get(), vars["LINK_FLAGS"],
|
||||
config);
|
||||
if (gt->GetPropertyAsBool("LINK_WHAT_YOU_USE")) {
|
||||
if (gt->GetPropertyAsBool("LINK_WHAT_YOU_USE") &&
|
||||
(gt->GetType() == cmStateEnums::TargetType::EXECUTABLE ||
|
||||
gt->GetType() == cmStateEnums::TargetType::SHARED_LIBRARY ||
|
||||
gt->GetType() == cmStateEnums::TargetType::MODULE_LIBRARY)) {
|
||||
vars["LINK_FLAGS"] += " -Wl,--no-as-needed";
|
||||
}
|
||||
vars["LINK_FLAGS"] = globalGen->EncodeLiteral(vars["LINK_FLAGS"]);
|
||||
|
||||
@@ -2,3 +2,4 @@ enable_language(C)
|
||||
set(CMAKE_LINK_WHAT_YOU_USE TRUE)
|
||||
add_executable(main main.c)
|
||||
target_link_libraries(main m)
|
||||
add_library(foo STATIC foo.c)
|
||||
|
||||
@@ -2,3 +2,4 @@ enable_language(CXX)
|
||||
set(CMAKE_LINK_WHAT_YOU_USE TRUE)
|
||||
add_executable(main main.cxx)
|
||||
target_link_libraries(main m)
|
||||
add_library(foo STATIC foo.cxx)
|
||||
|
||||
4
Tests/RunCMake/LinkWhatYouUse/foo.c
Normal file
4
Tests/RunCMake/LinkWhatYouUse/foo.c
Normal file
@@ -0,0 +1,4 @@
|
||||
int foo(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
4
Tests/RunCMake/LinkWhatYouUse/foo.cxx
Normal file
4
Tests/RunCMake/LinkWhatYouUse/foo.cxx
Normal file
@@ -0,0 +1,4 @@
|
||||
int foo()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user