Skip to content

Commit 5088eb5

Browse files
authored
Merge pull request #84741 from etcwilde/ewilde/runtimes-fix-cleanups
NFC: CMake: Runtime build housekeeping
2 parents a528c5c + 989b3be commit 5088eb5

File tree

3 files changed

+53
-29
lines changed

3 files changed

+53
-29
lines changed

Runtimes/Core/CMakeLists.txt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,9 @@
2121

2222
# TODO:
2323
# Platform support:
24-
# - Work on/Verify cross-compiling
25-
# - Work on/Verify Windows and Linux native builds
24+
# - Work on/Verify Linux native builds
2625
# Embedded
2726
# -- -Xfrontend -emit-empty-object-file
28-
# Catalyst Support
29-
# -- Will need shadow invocations to generate swiftmodules for Swift parts
30-
# Install *.abi.json, swiftdoc, and swiftsourceinfo
3127

3228
cmake_minimum_required(VERSION 3.29)
3329
# TODO before requiring CMake 4.1 or later

Runtimes/Core/cmake/modules/EmitSwiftInterface.cmake

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,48 @@ function(emit_swift_interface target)
1818
if(NOT module_name)
1919
set(module_name ${target})
2020
endif()
21+
set(module_directory "${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule")
2122
# Account for an existing swiftmodule file
2223
# generated with the previous logic
23-
if(EXISTS "${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule"
24-
AND NOT IS_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule")
25-
message(STATUS "Removing regular file ${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule to support nested swiftmodule generation")
26-
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule")
24+
if(EXISTS "${module_directory}" AND NOT IS_DIRECTORY "${module_directory}")
25+
message(STATUS "Removing regular file ${module_directory} to support nested swiftmodule generation")
26+
file(REMOVE "${module_directory}")
2727
endif()
2828
target_compile_options(${target} PRIVATE
29-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-module-path ${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftCore_MODULE_TRIPLE}.swiftmodule>")
29+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-module-path ${module_directory}/${SwiftCore_MODULE_TRIPLE}.swiftmodule>")
30+
set_property(TARGET "${target}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES
31+
"${module_directory}/${SwiftCore_MODULE_TRIPLE}.swiftmodule"
32+
"${module_directory}/${SwiftCore_MODULE_TRIPLE}.swiftdoc"
33+
"${module_directory}/${SwiftCore_MODULE_TRIPLE}.swiftsourceinfo")
3034
if(SwiftCore_VARIANT_MODULE_TRIPLE)
3135
target_compile_options(${target} PRIVATE
32-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-module-path ${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftCore_VARIANT_MODULE_TRIPLE}.swiftmodule>")
36+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-module-path ${module_directory}/${SwiftCore_VARIANT_MODULE_TRIPLE}.swiftmodule>")
37+
set_property(TARGET "${target}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES
38+
"${module_directory}/${SwiftCore_VARIANT_MODULE_TRIPLE}.swiftmodule"
39+
"${module_directory}/${SwiftCore_VARIANT_MODULE_TRIPLE}.swiftdoc"
40+
"${module_directory}/${SwiftCore_VARIANT_MODULE_TRIPLE}.swiftsourceinfo")
3341
endif()
34-
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftCore_MODULE_TRIPLE}.swiftmodule"
42+
add_custom_command(OUTPUT "${module_directory}/${SwiftCore_MODULE_TRIPLE}.swiftmodule"
3543
DEPENDS ${target})
3644
target_sources(${target}
3745
INTERFACE
38-
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftCore_MODULE_TRIPLE}.swiftmodule>)
46+
$<BUILD_INTERFACE:${module_directory}/${SwiftCore_MODULE_TRIPLE}.swiftmodule>)
3947

4048
# Generate textual swift interfaces is library-evolution is enabled
4149
if(SwiftCore_ENABLE_LIBRARY_EVOLUTION)
4250
target_compile_options(${target} PRIVATE
43-
$<$<COMPILE_LANGUAGE:Swift>:-emit-module-interface-path$<SEMICOLON>${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftCore_MODULE_TRIPLE}.swiftinterface>
44-
$<$<COMPILE_LANGUAGE:Swift>:-emit-private-module-interface-path$<SEMICOLON>${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftCore_MODULE_TRIPLE}.private.swiftinterface>)
51+
$<$<COMPILE_LANGUAGE:Swift>:-emit-module-interface-path$<SEMICOLON>${module_directory}/${SwiftCore_MODULE_TRIPLE}.swiftinterface>
52+
$<$<COMPILE_LANGUAGE:Swift>:-emit-private-module-interface-path$<SEMICOLON>${module_directory}/${SwiftCore_MODULE_TRIPLE}.private.swiftinterface>)
53+
set_property(TARGET "${target}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES
54+
"${module_directory}/${SwiftCore_MODULE_TRIPLE}.swiftinterface"
55+
"${module_directory}/${SwiftCore_MODULE_TRIPLE}.private.swiftinterface")
4556
if(SwiftCore_VARIANT_MODULE_TRIPLE)
4657
target_compile_options(${target} PRIVATE
47-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-module-interface-path ${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftCore_VARIANT_MODULE_TRIPLE}.swiftinterface>"
48-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-private-module-interface-path ${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftCore_VARIANT_MODULE_TRIPLE}.private.swiftinterface>")
58+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-module-interface-path ${module_directory}/${SwiftCore_VARIANT_MODULE_TRIPLE}.swiftinterface>"
59+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-private-module-interface-path ${module_directory}/${SwiftCore_VARIANT_MODULE_TRIPLE}.private.swiftinterface>")
60+
set_property(TARGET "${target}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES
61+
"${module_directory}/${SwiftCore_VARIANT_MODULE_TRIPLE}.swiftinterface"
62+
"${module_directory}/${SwiftCore_VARIANT_MODULE_TRIPLE}.private.swiftinterface")
4963
endif()
5064
target_compile_options(${target} PRIVATE
5165
$<$<COMPILE_LANGUAGE:Swift>:-library-level$<SEMICOLON>api>

Runtimes/Overlay/cmake/modules/EmitSwiftInterface.cmake

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,48 @@ function(emit_swift_interface target)
1818
if(NOT module_name)
1919
set(module_name ${target})
2020
endif()
21+
set(module_directory "${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule")
2122
# Account for an existing swiftmodule file
2223
# generated with the previous logic
23-
if(EXISTS "${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule"
24-
AND NOT IS_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule")
25-
message(STATUS "Removing regular file ${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule to support nested swiftmodule generation")
26-
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule")
24+
if(EXISTS "${module_directory}" AND NOT IS_DIRECTORY "${module_directory}")
25+
message(STATUS "Removing regular file '${module_directory}' to support nested swiftmodule generation")
26+
file(REMOVE ${module_directory})
2727
endif()
2828
target_compile_options(${target} PRIVATE
29-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-module-path ${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftOverlay_MODULE_TRIPLE}.swiftmodule>")
29+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-module-path ${module_directory}/${SwiftOverlay_MODULE_TRIPLE}.swiftmodule>")
30+
set_property(TARGET "${target}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES
31+
"${module_directory}/${SwiftOverlay_MODULE_TRIPLE}.swiftmodule"
32+
"${module_directory}/${SwiftOverlay_MODULE_TRIPLE}.swiftdoc"
33+
"${module_directory}/${SwiftOverlay_MODULE_TRIPLE}.swiftsourceinfo")
3034
if(SwiftOverlay_VARIANT_MODULE_TRIPLE)
3135
target_compile_options(${target} PRIVATE
32-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-module-path ${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.swiftmodule>")
36+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-module-path ${module_directory}/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.swiftmodule>")
37+
set_property(TARGET "${target}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES
38+
"${module_directory}/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.swiftmodule"
39+
"${module_directory}/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.swiftdoc"
40+
"${module_directory}/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.swiftsourceinfo")
3341
endif()
34-
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftOverlay_MODULE_TRIPLE}.swiftmodule"
42+
add_custom_command(OUTPUT "${module_directory}/${SwiftOverlay_MODULE_TRIPLE}.swiftmodule"
3543
DEPENDS ${target})
3644
target_sources(${target}
3745
INTERFACE
38-
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftOverlay_MODULE_TRIPLE}.swiftmodule>)
46+
$<BUILD_INTERFACE:${module_directory}/${SwiftOverlay_MODULE_TRIPLE}.swiftmodule>)
3947

4048
# Generate textual swift interfaces is library-evolution is enabled
4149
if(SwiftOverlay_ENABLE_LIBRARY_EVOLUTION)
4250
target_compile_options(${target} PRIVATE
43-
$<$<COMPILE_LANGUAGE:Swift>:-emit-module-interface-path$<SEMICOLON>${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftOverlay_MODULE_TRIPLE}.swiftinterface>
44-
$<$<COMPILE_LANGUAGE:Swift>:-emit-private-module-interface-path$<SEMICOLON>${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftOverlay_MODULE_TRIPLE}.private.swiftinterface>)
51+
$<$<COMPILE_LANGUAGE:Swift>:-emit-module-interface-path$<SEMICOLON>${module_directory}/${SwiftOverlay_MODULE_TRIPLE}.swiftinterface>
52+
$<$<COMPILE_LANGUAGE:Swift>:-emit-private-module-interface-path$<SEMICOLON>${module_directory}/${SwiftOverlay_MODULE_TRIPLE}.private.swiftinterface>)
53+
set_property(TARGET "${target}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES
54+
"${module_directory}/${SwiftOverlay_MODULE_TRIPLE}.swiftinterface"
55+
"${module_directory}/${SwiftOverlay_MODULE_TRIPLE}.private.swiftinterface")
4556
if(SwiftOverlay_VARIANT_MODULE_TRIPLE)
4657
target_compile_options(${target} PRIVATE
47-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-module-interface-path ${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.swiftinterface>"
48-
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-private-module-interface-path ${CMAKE_CURRENT_BINARY_DIR}/${module_name}.swiftmodule/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.private.swiftinterface>")
58+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-module-interface-path ${module_directory}/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.swiftinterface>"
59+
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-emit-variant-private-module-interface-path ${module_directory}/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.private.swiftinterface>")
60+
set_property(TARGET "${target}" APPEND PROPERTY ADDITIONAL_CLEAN_FILES
61+
"${module_directory}/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.swiftinterface"
62+
"${module_directory}/${SwiftOverlay_VARIANT_MODULE_TRIPLE}.private.swiftinterface")
4963
endif()
5064
target_compile_options(${target} PRIVATE
5165
$<$<COMPILE_LANGUAGE:Swift>:-library-level$<SEMICOLON>api>

0 commit comments

Comments
 (0)