Skip to content

Commit b5aa391

Browse files
authored
Merge pull request swiftlang#21232 from gottesmm/pr-70a1ebc1a686cd8b65558a030e1a9dcf8b4e308c
[cmake] Move add_swift_target_executable into the new stdlib cmake di…
2 parents 4d7542c + b2ae3a8 commit b5aa391

File tree

3 files changed

+91
-82
lines changed

3 files changed

+91
-82
lines changed

cmake/modules/AddSwift.cmake

Lines changed: 0 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -2226,88 +2226,6 @@ function(_add_swift_executable_single name)
22262226
PROPERTIES FOLDER "Swift executables")
22272227
endfunction()
22282228

2229-
# Add an executable for each target variant. Executables are given suffixes
2230-
# with the variant SDK and ARCH.
2231-
#
2232-
# See add_swift_executable for detailed documentation.
2233-
#
2234-
# Additional parameters:
2235-
# [LINK_FAT_LIBRARIES lipo_target1 ...]
2236-
# Fat libraries to link with.
2237-
function(add_swift_target_executable name)
2238-
# Parse the arguments we were given.
2239-
cmake_parse_arguments(SWIFTEXE_TARGET
2240-
"EXCLUDE_FROM_ALL;;BUILD_WITH_STDLIB"
2241-
""
2242-
"DEPENDS;LLVM_COMPONENT_DEPENDS;LINK_FAT_LIBRARIES"
2243-
${ARGN})
2244-
2245-
set(SWIFTEXE_TARGET_SOURCES ${SWIFTEXE_TARGET_UNPARSED_ARGUMENTS})
2246-
2247-
translate_flag(${SWIFTEXE_TARGET_EXCLUDE_FROM_ALL}
2248-
"EXCLUDE_FROM_ALL"
2249-
SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG)
2250-
2251-
# All Swift executables depend on the standard library.
2252-
list(APPEND SWIFTEXE_TARGET_LINK_FAT_LIBRARIES swiftCore)
2253-
# All Swift executables depend on the swiftSwiftOnoneSupport library.
2254-
list(APPEND SWIFTEXE_TARGET_DEPENDS swiftSwiftOnoneSupport)
2255-
2256-
if(NOT "${SWIFT_BUILD_STDLIB}")
2257-
list(REMOVE_ITEM SWIFTEXE_TARGET_LINK_FAT_LIBRARIES
2258-
swiftCore)
2259-
endif()
2260-
2261-
foreach(sdk ${SWIFT_SDKS})
2262-
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
2263-
set(VARIANT_SUFFIX "-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
2264-
set(VARIANT_NAME "${name}${VARIANT_SUFFIX}")
2265-
2266-
set(SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG_CURRENT
2267-
${SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG})
2268-
if(NOT "${VARIANT_SUFFIX}" STREQUAL "${SWIFT_PRIMARY_VARIANT_SUFFIX}")
2269-
# By default, don't build executables for target SDKs to avoid building
2270-
# target stdlibs.
2271-
set(SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG_CURRENT "EXCLUDE_FROM_ALL")
2272-
endif()
2273-
2274-
if(SWIFTEXE_TARGET_BUILD_WITH_STDLIB)
2275-
add_dependencies("swift-test-stdlib${VARIANT_SUFFIX}" ${VARIANT_NAME})
2276-
endif()
2277-
2278-
# Don't add the ${arch} to the suffix. We want to link against fat
2279-
# libraries.
2280-
_list_add_string_suffix(
2281-
"${SWIFTEXE_TARGET_DEPENDS}"
2282-
"-${SWIFT_SDK_${sdk}_LIB_SUBDIR}"
2283-
SWIFTEXE_TARGET_DEPENDS_with_suffix)
2284-
_add_swift_executable_single(
2285-
${VARIANT_NAME}
2286-
${SWIFTEXE_TARGET_SOURCES}
2287-
DEPENDS ${SWIFTEXE_TARGET_DEPENDS_with_suffix}
2288-
LLVM_COMPONENT_DEPENDS ${SWIFTEXE_TARGET_LLVM_COMPONENT_DEPENDS}
2289-
SDK "${sdk}"
2290-
ARCHITECTURE "${arch}"
2291-
LINK_FAT_LIBRARIES ${SWIFTEXE_TARGET_LINK_FAT_LIBRARIES}
2292-
${SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG_CURRENT})
2293-
2294-
if(${sdk} IN_LIST SWIFT_APPLE_PLATFORMS)
2295-
add_custom_command_target(unused_var2
2296-
COMMAND "codesign" "-f" "-s" "-" "${SWIFT_RUNTIME_OUTPUT_INTDIR}/${VARIANT_NAME}"
2297-
CUSTOM_TARGET_NAME "${VARIANT_NAME}_signed"
2298-
OUTPUT "${SWIFT_RUNTIME_OUTPUT_INTDIR}/${VARIANT_NAME}_signed"
2299-
DEPENDS ${VARIANT_NAME})
2300-
else()
2301-
# No code signing on other platforms.
2302-
add_custom_command_target(unused_var2
2303-
CUSTOM_TARGET_NAME "${VARIANT_NAME}_signed"
2304-
OUTPUT "${SWIFT_RUNTIME_OUTPUT_INTDIR}/${VARIANT_NAME}_signed"
2305-
DEPENDS ${VARIANT_NAME})
2306-
endif()
2307-
endforeach()
2308-
endforeach()
2309-
endfunction()
2310-
23112229
# Add an executable for the host machine.
23122230
#
23132231
# Usage:

stdlib/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
2+
# Add path for custom CMake modules.
3+
list(APPEND CMAKE_MODULE_PATH
4+
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
5+
6+
include(AddSwiftStdlib)
7+
18
# Create convenience targets for the Swift standard library.
29

310
# NOTE(compnerd) save the original compiler for the host swiftReflection that
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
2+
include(AddSwift)
3+
4+
# Add an executable for each target variant. Executables are given suffixes
5+
# with the variant SDK and ARCH.
6+
#
7+
# See add_swift_executable for detailed documentation.
8+
#
9+
# Additional parameters:
10+
# [LINK_FAT_LIBRARIES lipo_target1 ...]
11+
# Fat libraries to link with.
12+
function(add_swift_target_executable name)
13+
# Parse the arguments we were given.
14+
cmake_parse_arguments(SWIFTEXE_TARGET
15+
"EXCLUDE_FROM_ALL;;BUILD_WITH_STDLIB"
16+
""
17+
"DEPENDS;LLVM_COMPONENT_DEPENDS;LINK_FAT_LIBRARIES"
18+
${ARGN})
19+
20+
set(SWIFTEXE_TARGET_SOURCES ${SWIFTEXE_TARGET_UNPARSED_ARGUMENTS})
21+
22+
translate_flag(${SWIFTEXE_TARGET_EXCLUDE_FROM_ALL}
23+
"EXCLUDE_FROM_ALL"
24+
SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG)
25+
26+
# All Swift executables depend on the standard library.
27+
list(APPEND SWIFTEXE_TARGET_LINK_FAT_LIBRARIES swiftCore)
28+
# All Swift executables depend on the swiftSwiftOnoneSupport library.
29+
list(APPEND SWIFTEXE_TARGET_DEPENDS swiftSwiftOnoneSupport)
30+
31+
if(NOT "${SWIFT_BUILD_STDLIB}")
32+
list(REMOVE_ITEM SWIFTEXE_TARGET_LINK_FAT_LIBRARIES
33+
swiftCore)
34+
endif()
35+
36+
foreach(sdk ${SWIFT_SDKS})
37+
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
38+
set(VARIANT_SUFFIX "-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
39+
set(VARIANT_NAME "${name}${VARIANT_SUFFIX}")
40+
41+
set(SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG_CURRENT
42+
${SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG})
43+
if(NOT "${VARIANT_SUFFIX}" STREQUAL "${SWIFT_PRIMARY_VARIANT_SUFFIX}")
44+
# By default, don't build executables for target SDKs to avoid building
45+
# target stdlibs.
46+
set(SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG_CURRENT "EXCLUDE_FROM_ALL")
47+
endif()
48+
49+
if(SWIFTEXE_TARGET_BUILD_WITH_STDLIB)
50+
add_dependencies("swift-test-stdlib${VARIANT_SUFFIX}" ${VARIANT_NAME})
51+
endif()
52+
53+
# Don't add the ${arch} to the suffix. We want to link against fat
54+
# libraries.
55+
_list_add_string_suffix(
56+
"${SWIFTEXE_TARGET_DEPENDS}"
57+
"-${SWIFT_SDK_${sdk}_LIB_SUBDIR}"
58+
SWIFTEXE_TARGET_DEPENDS_with_suffix)
59+
_add_swift_executable_single(
60+
${VARIANT_NAME}
61+
${SWIFTEXE_TARGET_SOURCES}
62+
DEPENDS ${SWIFTEXE_TARGET_DEPENDS_with_suffix}
63+
LLVM_COMPONENT_DEPENDS ${SWIFTEXE_TARGET_LLVM_COMPONENT_DEPENDS}
64+
SDK "${sdk}"
65+
ARCHITECTURE "${arch}"
66+
LINK_FAT_LIBRARIES ${SWIFTEXE_TARGET_LINK_FAT_LIBRARIES}
67+
${SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG_CURRENT})
68+
69+
if(${sdk} IN_LIST SWIFT_APPLE_PLATFORMS)
70+
add_custom_command_target(unused_var2
71+
COMMAND "codesign" "-f" "-s" "-" "${SWIFT_RUNTIME_OUTPUT_INTDIR}/${VARIANT_NAME}"
72+
CUSTOM_TARGET_NAME "${VARIANT_NAME}_signed"
73+
OUTPUT "${SWIFT_RUNTIME_OUTPUT_INTDIR}/${VARIANT_NAME}_signed"
74+
DEPENDS ${VARIANT_NAME})
75+
else()
76+
# No code signing on other platforms.
77+
add_custom_command_target(unused_var2
78+
CUSTOM_TARGET_NAME "${VARIANT_NAME}_signed"
79+
OUTPUT "${SWIFT_RUNTIME_OUTPUT_INTDIR}/${VARIANT_NAME}_signed"
80+
DEPENDS ${VARIANT_NAME})
81+
endif()
82+
endforeach()
83+
endforeach()
84+
endfunction()

0 commit comments

Comments
 (0)