Ninja: Fix AIX shared library archiving
Extend commit d27fe9dfba
(AIX: Add option to archive shared libraries,
2024-06-18) to update the Ninja generator to support the new
`AIX_SHARED_LIBRARY_ARCHIVE` feature.
Fixes: #26332
This commit is contained in:
parent
b684ebf6ad
commit
6c12e0758b
@ -1016,7 +1016,8 @@ void cmNinjaNormalTargetGenerator::WriteNvidiaDeviceLinkStatement(
|
||||
vars["LANGUAGE_COMPILE_FLAGS"] = langFlags;
|
||||
|
||||
auto const tgtNames = this->TargetNames(config);
|
||||
if (genTarget->HasSOName(config)) {
|
||||
if (genTarget->HasSOName(config) ||
|
||||
genTarget->IsArchivedAIXSharedLibrary()) {
|
||||
vars["SONAME_FLAG"] =
|
||||
this->GetMakefile()->GetSONameFlag(this->TargetLinkLanguage(config));
|
||||
vars["SONAME"] = localGen.ConvertToOutputFormat(tgtNames.SharedObject,
|
||||
@ -1315,7 +1316,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement(
|
||||
t, gt, this->TargetLinkLanguage(config), config);
|
||||
vars["LANGUAGE_COMPILE_FLAGS"] = t;
|
||||
}
|
||||
if (gt->HasSOName(config)) {
|
||||
if (gt->HasSOName(config) || gt->IsArchivedAIXSharedLibrary()) {
|
||||
vars["SONAME_FLAG"] = mf->GetSONameFlag(this->TargetLinkLanguage(config));
|
||||
vars["SONAME"] = localGen.ConvertToOutputFormat(tgtNames.SharedObject,
|
||||
cmOutputConverter::SHELL);
|
||||
|
@ -18,3 +18,19 @@ if(aix_sla)
|
||||
message(FATAL_ERROR "AIX_SHARED_LIBRARY_ARCHIVE initialized on EXECUTABLE")
|
||||
endif()
|
||||
target_link_libraries(UseSLA PRIVATE sla)
|
||||
|
||||
# Test for versioned names. Everything else should be tested and set above.
|
||||
add_library(sla_versioned SHARED sla.c)
|
||||
get_property(aix_sla_versioned TARGET sla_versioned PROPERTY AIX_SHARED_LIBRARY_ARCHIVE)
|
||||
if(NOT aix_sla_versioned)
|
||||
message(FATAL_ERROR "AIX_SHARED_LIBRARY_ARCHIVE not initialized on SHARED library")
|
||||
endif()
|
||||
|
||||
set_target_properties(sla_versioned PROPERTIES OUTPUT_NAME "sla_versioned" VERSION 3 SOVERSION 2)
|
||||
|
||||
add_executable(UseSLA_versioned use_sla.c)
|
||||
get_property(aix_sla_versioned TARGET UseSLA_versioned PROPERTY AIX_SHARED_LIBRARY_ARCHIVE)
|
||||
if(aix_sla_versioned)
|
||||
message(FATAL_ERROR "AIX_SHARED_LIBRARY_ARCHIVE initialized on EXECUTABLE")
|
||||
endif()
|
||||
target_link_libraries(UseSLA_versioned PRIVATE sla_versioned)
|
||||
|
Loading…
Reference in New Issue
Block a user