From a2aad7eb8d84d40c13122c6d0a297ff3061baa6c Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Mon, 8 Jan 2024 10:27:29 -0800 Subject: Swift: fix Windows DLL import library support for CMP0157 NEW This was accidentally removed when the command templates were reorganized to introduce the new policy. Restore the flag in the shared library creation to ensure that we emit the import libraries to the correct location. --- Modules/CMakeSwiftInformation.cmake | 2 +- Tests/RunCMake/Swift/ImportLibraryFlags-check-stdout.txt | 1 + Tests/RunCMake/Swift/ImportLibraryFlags.cmake | 6 ++++++ Tests/RunCMake/Swift/RunCMakeTest.cmake | 8 ++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 Tests/RunCMake/Swift/ImportLibraryFlags-check-stdout.txt create mode 100644 Tests/RunCMake/Swift/ImportLibraryFlags.cmake diff --git a/Modules/CMakeSwiftInformation.cmake b/Modules/CMakeSwiftInformation.cmake index 7a1c64a..f8b6748 100644 --- a/Modules/CMakeSwiftInformation.cmake +++ b/Modules/CMakeSwiftInformation.cmake @@ -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_PARALLEL_FLAGS} -emit-library -o ") + set(CMAKE_Swift_CREATE_SHARED_LIBRARY " ${CMAKE_Swift_PARALLEL_FLAGS} -emit-library ${CMAKE_Swift_IMPLIB_LINKER_FLAGS} -o ") endif() if(NOT CMAKE_Swift_CREATE_SHARED_MODULE) diff --git a/Tests/RunCMake/Swift/ImportLibraryFlags-check-stdout.txt b/Tests/RunCMake/Swift/ImportLibraryFlags-check-stdout.txt new file mode 100644 index 0000000..9b53820 --- /dev/null +++ b/Tests/RunCMake/Swift/ImportLibraryFlags-check-stdout.txt @@ -0,0 +1 @@ +.*-implib:lib\\L.lib diff --git a/Tests/RunCMake/Swift/ImportLibraryFlags.cmake b/Tests/RunCMake/Swift/ImportLibraryFlags.cmake new file mode 100644 index 0000000..4c76b40 --- /dev/null +++ b/Tests/RunCMake/Swift/ImportLibraryFlags.cmake @@ -0,0 +1,6 @@ +cmake_policy(SET CMP0157 NEW) +enable_language(Swift) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +add_library(L SHARED L.swift) diff --git a/Tests/RunCMake/Swift/RunCMakeTest.cmake b/Tests/RunCMake/Swift/RunCMakeTest.cmake index b5210c9..56158e3 100644 --- a/Tests/RunCMake/Swift/RunCMakeTest.cmake +++ b/Tests/RunCMake/Swift/RunCMakeTest.cmake @@ -78,6 +78,14 @@ elseif(RunCMake_GENERATOR STREQUAL Ninja) endblock() block() + if(CMAKE_SYSTEM_NAME MATCHES Windows) + set(ImportLibraryFlags_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/SwiftLibraryModuleCommand-build) + run_cmake(ImportLibraryFlags) + run_cmake_command(ImportLibraryFlags-check ${CMAKE_COMMAND} --build ${SwiftLibraryModuleCommand_TEST_BINARY_DIR} -- -n -v) + endif() + endblock() + + block() set(SwiftLibraryModuleCommand_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/SwiftLibraryModuleCommand-build) run_cmake(SwiftLibraryModuleCommand) run_cmake_command(SwiftLibraryModuleCommand-check ${CMAKE_COMMAND} --build ${SwiftLibraryModuleCommand_TEST_BINARY_DIR} -- -n -v) -- cgit v0.12