mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 19:08:07 +08:00
AIX: Disallow TARGET_SONAME_* genex for AIX_SHARED_LIBRARY_ARCHIVE targets
AIX shared library archives have no filesystem artifact named with their SONAME because it is in an archive.
This commit is contained in:
@@ -3592,6 +3592,12 @@ struct TargetFilesystemArtifactResultCreator<ArtifactSonameTag>
|
||||
"SHARED libraries.");
|
||||
return std::string();
|
||||
}
|
||||
if (target->IsArchivedAIXSharedLibrary()) {
|
||||
::reportError(context, content->GetOriginalExpression(),
|
||||
"TARGET_SONAME_FILE is not allowed for "
|
||||
"AIX_SHARED_LIBRARY_ARCHIVE libraries.");
|
||||
return std::string();
|
||||
}
|
||||
std::string result = cmStrCat(target->GetDirectory(context->Config), '/',
|
||||
target->GetSOName(context->Config));
|
||||
return result;
|
||||
@@ -3618,6 +3624,12 @@ struct TargetFilesystemArtifactResultCreator<ArtifactSonameImportTag>
|
||||
"SHARED libraries.");
|
||||
return std::string();
|
||||
}
|
||||
if (target->IsArchivedAIXSharedLibrary()) {
|
||||
::reportError(context, content->GetOriginalExpression(),
|
||||
"TARGET_SONAME_IMPORT_FILE is not allowed for "
|
||||
"AIX_SHARED_LIBRARY_ARCHIVE libraries.");
|
||||
return std::string();
|
||||
}
|
||||
|
||||
if (target->HasImportLibrary(context->Config)) {
|
||||
return cmStrCat(target->GetDirectory(
|
||||
|
@@ -19,6 +19,10 @@ run_cmake_with_options(TARGET_FILE_BASE_NAME -DCMAKE_BUILD_TYPE:STRING=Debug)
|
||||
run_cmake_with_options(TARGET_FILE_BASE_NAME-imported-target -DCMAKE_BUILD_TYPE:STRING=Debug)
|
||||
run_cmake(TARGET_FILE_BASE_NAME-non-valid-target)
|
||||
run_cmake(TARGET_LINKER_FILE_BASE_NAME-non-valid-target)
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "AIX")
|
||||
run_cmake(TARGET_SONAME_FILE-AIX)
|
||||
run_cmake(TARGET_SONAME_IMPORT_FILE-AIX)
|
||||
endif()
|
||||
run_cmake(NonValidTarget-TARGET_BUNDLE_DIR)
|
||||
run_cmake(NonValidTarget-TARGET_BUNDLE_DIR_NAME)
|
||||
run_cmake(NonValidTarget-TARGET_BUNDLE_CONTENT_DIR)
|
||||
|
@@ -0,0 +1 @@
|
||||
1
|
@@ -0,0 +1,8 @@
|
||||
^CMake Error at TARGET_SONAME_FILE-AIX\.cmake:[0-9]+ \(add_custom_target\):
|
||||
Error evaluating generator expression:
|
||||
|
||||
\$<TARGET_SONAME_FILE:sla>
|
||||
|
||||
TARGET_SONAME_FILE is not allowed for AIX_SHARED_LIBRARY_ARCHIVE libraries\.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists\.txt:[0-9]+ \(include\)
|
@@ -0,0 +1,4 @@
|
||||
enable_language (C)
|
||||
set(CMAKE_AIX_SHARED_LIBRARY_ARCHIVE 1)
|
||||
add_library(sla SHARED empty.c)
|
||||
add_custom_target(custom COMMAND ${CMAKE_COMMAND} -E echo "$<TARGET_SONAME_FILE:sla>")
|
@@ -0,0 +1 @@
|
||||
1
|
@@ -0,0 +1,9 @@
|
||||
^CMake Error at TARGET_SONAME_IMPORT_FILE-AIX\.cmake:[0-9]+ \(add_custom_target\):
|
||||
Error evaluating generator expression:
|
||||
|
||||
\$<TARGET_SONAME_IMPORT_FILE:sla>
|
||||
|
||||
TARGET_SONAME_IMPORT_FILE is not allowed for AIX_SHARED_LIBRARY_ARCHIVE
|
||||
libraries\.
|
||||
Call Stack \(most recent call first\):
|
||||
CMakeLists\.txt:[0-9]+ \(include\)
|
@@ -0,0 +1,4 @@
|
||||
enable_language (C)
|
||||
set(CMAKE_AIX_SHARED_LIBRARY_ARCHIVE 1)
|
||||
add_library(sla SHARED empty.c)
|
||||
add_custom_target(custom COMMAND ${CMAKE_COMMAND} -E echo "$<TARGET_SONAME_IMPORT_FILE:sla>")
|
@@ -1 +1 @@
|
||||
(error while loading shared libraries: libStub\.so\.1|Library not loaded: '?@rpath/libStub\.1\.dylib'?|(Cannot|Could not) load module libStub\.so|fatal: libStub\.so\.1: open failed|Shared object "libStub\.so\.1" not found)
|
||||
(error while loading shared libraries: libStub\.so\.1|Library not loaded: '?@rpath/libStub\.1\.dylib'?|(Cannot|Could not) load module libStub\.a\(libStub\.so\.1\)|fatal: libStub\.so\.1: open failed|Shared object "libStub\.so\.1" not found)
|
||||
|
@@ -1,5 +1,15 @@
|
||||
enable_language(C)
|
||||
|
||||
set(CMAKE_AIX_SHARED_LIBRARY_ARCHIVE 1)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "AIX")
|
||||
set(suffix "${CMAKE_SHARED_LIBRARY_ARCHIVE_SUFFIX}")
|
||||
set(genex "TARGET_LINKER_FILE")
|
||||
else()
|
||||
set(suffix "${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
set(genex "TARGET_SONAME_FILE")
|
||||
endif()
|
||||
|
||||
add_library(Stub SHARED Stub.c)
|
||||
set_target_properties(Stub PROPERTIES
|
||||
SOVERSION 1
|
||||
@@ -7,10 +17,10 @@ set_target_properties(Stub PROPERTIES
|
||||
)
|
||||
|
||||
set(StubDir ${CMAKE_CURRENT_BINARY_DIR}/lib/stubs)
|
||||
set(Stub "${StubDir}/${CMAKE_SHARED_LIBRARY_PREFIX}Stub${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
set(Stub "${StubDir}/${CMAKE_SHARED_LIBRARY_PREFIX}Stub${suffix}")
|
||||
add_custom_target(StubCopy
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${StubDir}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_SONAME_FILE:Stub>" "${Stub}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "$<${genex}:Stub>" "${Stub}"
|
||||
BYPRODUCTS ${Stub}
|
||||
)
|
||||
add_dependencies(StubCopy Stub)
|
||||
|
Reference in New Issue
Block a user