mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-31 10:50:16 -06:00
Swift: Fix INSTALL_NAME_DIR under CMP0157 NEW behavior
Setting `CMAKE_INSTALL_NAME_DIR` or the `INSTALL_NAME_DIR` on Swift targets had no effect when CMP0157 was set to `NEW`. This was a result of missing the `<TARGET_INSTALLNAME_DIR>` before the `<TARGET_SONAME>`. Fix that and add a test to verify that the install name directory is included in the install name. Fixes: #26175
This commit is contained in:
@@ -132,7 +132,7 @@ if(CMAKE_Swift_COMPILATION_MODE_DEFAULT)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_Swift_CREATE_SHARED_LIBRARY)
|
||||
set(CMAKE_Swift_CREATE_SHARED_LIBRARY "<CMAKE_Swift_COMPILER> ${CMAKE_Swift_PARALLEL_FLAGS} -emit-library <CMAKE_SHARED_LIBRARY_Swift_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${CMAKE_Swift_IMPLIB_LINKER_FLAGS} <SONAME_FLAG> <TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
|
||||
set(CMAKE_Swift_CREATE_SHARED_LIBRARY "<CMAKE_Swift_COMPILER> ${CMAKE_Swift_PARALLEL_FLAGS} -emit-library <CMAKE_SHARED_LIBRARY_Swift_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> ${CMAKE_Swift_IMPLIB_LINKER_FLAGS} <SONAME_FLAG> <TARGET_INSTALLNAME_DIR><TARGET_SONAME> -o <TARGET> <OBJECTS> <LINK_LIBRARIES>")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_Swift_CREATE_SHARED_MODULE)
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
.*swiftc(.exe)? [^
|
||||
]* -parse-as-library -static -emit-module [^
|
||||
]* -module-name StaticLibrary [^
|
||||
]*
|
||||
.*swiftc(.exe)? [^
|
||||
]* -parse-as-library -emit-module [^
|
||||
]* -module-name DynamicLibrary [^
|
||||
]*
|
||||
.*swiftc(.exe)? [^
|
||||
]* -emit-library [^
|
||||
]* -Xlinker -install_name -Xlinker @rpath/libDynamicLibrary.dylib -o ([A-Za-z]+/)?libDynamicLibrary.dylib [^
|
||||
]*
|
||||
.*swiftc(.exe)? -j [0-9]+ -num-threads [0-9]+ -c -module-name Executable
|
||||
@@ -0,0 +1,13 @@
|
||||
.*swiftc(.exe)? [^
|
||||
]* -parse-as-library -static -emit-module [^
|
||||
]* -module-name StaticLibrary [^
|
||||
]*
|
||||
.*swiftc(.exe)? [^
|
||||
]* -parse-as-library -emit-module [^
|
||||
]* -module-name DynamicLibrary [^
|
||||
]*
|
||||
.*swiftc(.exe)? [^
|
||||
]* -emit-library [^
|
||||
]* -Xlinker -implib:DynamicLibrary.lib +-o ([A-Za-z]+/)?DynamicLibrary.dll [^
|
||||
]*
|
||||
.*swiftc(.exe)? -j [0-9]+ -num-threads [0-9]+ -c -module-name Executable
|
||||
@@ -1,5 +1,13 @@
|
||||
.*swiftc(.exe)? .* -parse-as-library -static -emit-module .* -module-name StaticLibrary [^
|
||||
.*swiftc(.exe)? [^
|
||||
]* -parse-as-library -static -emit-module [^
|
||||
]* -module-name StaticLibrary [^
|
||||
]*
|
||||
.*swiftc(.exe)? .* -parse-as-library -emit-module .* -module-name DynamicLibrary [^
|
||||
.*swiftc(.exe)? [^
|
||||
]* -parse-as-library -emit-module [^
|
||||
]* -module-name DynamicLibrary [^
|
||||
]*
|
||||
.*swiftc(.exe)? .* -j [0-9]* -num-threads [0-9]* -c -module-name Executable
|
||||
.*swiftc(.exe)? [^
|
||||
]* -emit-library [^
|
||||
]* -Xlinker -soname -Xlinker libDynamicLibrary.so -o ([A-Za-z]+/)?libDynamicLibrary.so [^
|
||||
]*
|
||||
.*swiftc(.exe)? -j [0-9]+ -num-threads [0-9]+ -c -module-name Executable
|
||||
|
||||
@@ -6,6 +6,7 @@ enable_language(Swift)
|
||||
|
||||
add_library(StaticLibrary STATIC L.swift)
|
||||
add_library(DynamicLibrary SHARED L.swift)
|
||||
set_target_properties(DynamicLibrary PROPERTIES INSTALL_NAME_DIR "@rpath")
|
||||
add_executable(Executable E.swift)
|
||||
|
||||
add_dependencies(DynamicLibrary StaticLibrary)
|
||||
|
||||
Reference in New Issue
Block a user