mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-15 03:48:02 +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.");
|
"SHARED libraries.");
|
||||||
return std::string();
|
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), '/',
|
std::string result = cmStrCat(target->GetDirectory(context->Config), '/',
|
||||||
target->GetSOName(context->Config));
|
target->GetSOName(context->Config));
|
||||||
return result;
|
return result;
|
||||||
@@ -3618,6 +3624,12 @@ struct TargetFilesystemArtifactResultCreator<ArtifactSonameImportTag>
|
|||||||
"SHARED libraries.");
|
"SHARED libraries.");
|
||||||
return std::string();
|
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)) {
|
if (target->HasImportLibrary(context->Config)) {
|
||||||
return cmStrCat(target->GetDirectory(
|
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_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_FILE_BASE_NAME-non-valid-target)
|
||||||
run_cmake(TARGET_LINKER_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)
|
||||||
run_cmake(NonValidTarget-TARGET_BUNDLE_DIR_NAME)
|
run_cmake(NonValidTarget-TARGET_BUNDLE_DIR_NAME)
|
||||||
run_cmake(NonValidTarget-TARGET_BUNDLE_CONTENT_DIR)
|
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)
|
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)
|
add_library(Stub SHARED Stub.c)
|
||||||
set_target_properties(Stub PROPERTIES
|
set_target_properties(Stub PROPERTIES
|
||||||
SOVERSION 1
|
SOVERSION 1
|
||||||
@@ -7,10 +17,10 @@ set_target_properties(Stub PROPERTIES
|
|||||||
)
|
)
|
||||||
|
|
||||||
set(StubDir ${CMAKE_CURRENT_BINARY_DIR}/lib/stubs)
|
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
|
add_custom_target(StubCopy
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${StubDir}"
|
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}
|
BYPRODUCTS ${Stub}
|
||||||
)
|
)
|
||||||
add_dependencies(StubCopy Stub)
|
add_dependencies(StubCopy Stub)
|
||||||
|
Reference in New Issue
Block a user