Skip to content

Commit b2ae3a8

Browse files
committed
[cmake] Move add_swift_target_executable into the new stdlib cmake directory.
This will ensure that additional target executables can not be added to the rest of the swift project without anyone noticing since the non-stdlib parts of Swift's cmake will not have visibility of the declaration unless they change the cmake lookup paths.
1 parent 191a71e commit b2ae3a8

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)