diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx index cd9d1efc62..891187a890 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 70771815c1..3af0f76b47 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)