diff options
author | Aditya Vidyadhar Kamath <Aditya.Kamath1@ibm.com> | 2024-09-27 12:24:11 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-09-27 21:53:59 (GMT) |
commit | 6c12e0758bceee62daf40c31840a64de28a97142 (patch) | |
tree | b948a056a6a1d216d553022b96a5f76544c7b033 | |
parent | b684ebf6ad0f62bbc656b34bd3067f33dc719578 (diff) | |
download | CMake-6c12e0758bceee62daf40c31840a64de28a97142.zip CMake-6c12e0758bceee62daf40c31840a64de28a97142.tar.gz CMake-6c12e0758bceee62daf40c31840a64de28a97142.tar.bz2 |
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
-rw-r--r-- | Source/cmNinjaNormalTargetGenerator.cxx | 5 | ||||
-rw-r--r-- | Tests/SharedLibraryArchive/CMakeLists.txt | 16 |
2 files changed, 19 insertions, 2 deletions
diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index cd9d1ef..891187a 100644 --- a/Source/cmNinjaNormalTargetGenerator.cxx +++ b/Source/cmNinjaNormalTargetGenerator.cxx @@ -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); diff --git a/Tests/SharedLibraryArchive/CMakeLists.txt b/Tests/SharedLibraryArchive/CMakeLists.txt index 7077181..3af0f76 100644 --- a/Tests/SharedLibraryArchive/CMakeLists.txt +++ b/Tests/SharedLibraryArchive/CMakeLists.txt @@ -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) |