Skip to content

Commit 0c5c553

Browse files
committed
build: update to some more modern behaviours
Use more modern property setting for the RPATH rather than spreading the workaround throughout the build. Centralise the Swift module directory handling.
1 parent dd95c6d commit 0c5c553

File tree

5 files changed

+13
-23
lines changed

5 files changed

+13
-23
lines changed

CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ enable_testing()
1818
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL" CACHE
1919
STRING "MSVC Runtime Library")
2020

21+
set(CMAKE_LIBRARY_OUTPUT_DIR ${CMAKE_BINARY_DIR})
22+
set(CMAKE_RUNTIME_OUTPUT_DIR ${CMAKE_BINARY_DIR})
23+
set(CMAKE_Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/swift)
24+
2125
if(CMAKE_VERSION VERSION_LESS 3.16.0)
2226
if(NOT (CMAKE_SYSTEM_NAME STREQUAL Windows OR CMAKE_SYSTEM_NAME STREQUAL Darwin))
2327
set(CMAKE_SHARED_LIBRARY_RUNTIME_Swift_FLAG "-Xlinker -rpath -Xlinker ")

Sources/Foundation/CMakeLists.txt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -148,20 +148,14 @@ target_link_libraries(Foundation
148148
swiftDispatch)
149149
set_target_properties(Foundation PROPERTIES
150150
INSTALL_RPATH "$ORIGIN"
151-
Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/swift
151+
BUILD_RPATH "$<TARGET_FILE_DIR:swiftDispatch>"
152152
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/swift)
153153

154154
if(CMAKE_SYSTEM_NAME STREQUAL Windows AND CMAKE_VERSION VERSION_LESS 3.16)
155155
# Workaround for CMake 3.15 which doesn't link in the resource file target
156156
# properly
157157
add_dependencies(Foundation CoreFoundationResources)
158158
target_link_options(Foundation PRIVATE $<TARGET_OBJECTS:CoreFoundationResources>)
159-
160-
# Workaround for CMake 3.15 which doesn't handle `-rpath` properly
161-
if(NOT CMAKE_SYSTEM_NAME STREQUAL Windows AND NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
162-
target_link_options(Foundation PRIVATE
163-
"SHELL:-Xlinker -rpath -Xlinker $<TARGET_FILE_DIR:swiftDispatch>")
164-
endif()
165159
endif()
166160

167161

@@ -172,6 +166,6 @@ install(TARGETS Foundation
172166
RUNTIME DESTINATION bin)
173167
get_swift_host_arch(swift_arch)
174168
install(FILES
175-
${CMAKE_BINARY_DIR}/swift/Foundation.swiftdoc
176-
${CMAKE_BINARY_DIR}/swift/Foundation.swiftmodule
169+
$<TARGET_PROPERTY:Foundation,Swift_MODULE_DIRECTORY>/Foundation.swiftdoc
170+
$<TARGET_PROPERTY:Foundation,Swift_MODULE_DIRECTORY>/Foundation.swiftmodule
177171
DESTINATION lib/swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:_static>/$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>/${swift_arch})

Sources/FoundationNetworking/CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ target_link_libraries(FoundationNetworking PRIVATE
3939
CFURLSessionInterface)
4040
set_target_properties(FoundationNetworking PROPERTIES
4141
INSTALL_RPATH "$ORIGIN"
42-
Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/swift
4342
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/swift)
4443

4544

@@ -50,6 +49,6 @@ install(TARGETS FoundationNetworking
5049
RUNTIME DESTINATION bin)
5150
get_swift_host_arch(swift_arch)
5251
install(FILES
53-
${CMAKE_BINARY_DIR}/swift/FoundationNetworking.swiftdoc
54-
${CMAKE_BINARY_DIR}/swift/FoundationNetworking.swiftmodule
52+
$<TARGET_PROPERTY:FoundationNetworking,Swift_MODULE_DIRECTORY>/FoundationNetworking.swiftdoc
53+
$<TARGET_PROPERTY:FoundationNetworking,Swift_MODULE_DIRECTORY>/FoundationNetworking.swiftmodule
5554
DESTINATION lib/swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:_static>/$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>/${swift_arch})

Sources/FoundationXML/CMakeLists.txt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ target_link_libraries(FoundationXML PRIVATE
1515
CFXMLInterface)
1616
set_target_properties(FoundationXML PROPERTIES
1717
INSTALL_RPATH "$ORIGIN"
18-
Swift_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/swift
1918
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_BINARY_DIR}/swift)
2019

2120

@@ -26,6 +25,6 @@ install(TARGETS FoundationXML
2625
RUNTIME DESTINATION bin)
2726
get_swift_host_arch(swift_arch)
2827
install(FILES
29-
${CMAKE_BINARY_DIR}/swift/FoundationXML.swiftdoc
30-
${CMAKE_BINARY_DIR}/swift/FoundationXML.swiftmodule
28+
$<TARGET_PROPERTY:FoundationXML,Swift_MODULE_DIRECTORY>/FoundationXML.swiftdoc
29+
$<TARGET_PROPERTY:FoundationXML,Swift_MODULE_DIRECTORY>/FoundationXML.swiftmodule
3130
DESTINATION lib/swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:_static>/$<LOWER_CASE:${CMAKE_SYSTEM_NAME}>/${swift_arch})

Tests/Tools/XDGTestHelper/CMakeLists.txt

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,5 @@ target_link_libraries(xdgTestHelper PRIVATE
44
Foundation
55
FoundationNetworking
66
FoundationXML)
7-
8-
if(CMAKE_VERSION VERSION_LESS 3.16)
9-
if(NOT CMAKE_SYSTEM_NAME STREQUAL Windows AND NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
10-
target_link_options(xdgTestHelper PRIVATE
11-
"SHELL:-Xlinker -rpath -Xlinker $<TARGET_FILE_DIR:swiftDispatch>"
12-
"SHELL:-Xlinker -rpath -Xlinker $<TARGET_FILE_DIR:Foundation>")
13-
endif()
14-
endif()
7+
set_target_properties(xdgTestHelper PROPERTIES
8+
BUILD_RPATH "$<TARGET_FILE_DIR:swiftDispatch>;$<TARGET_FILE_DIR:Foundation>")

0 commit comments

Comments
 (0)