blob: 77a81867c5385ea700a8b7e0df6920820a5d1a8f [file] [log] [blame]
include(AddSwift)
# Add an executable for each target variant. Executables are given suffixes
# with the variant SDK and ARCH.
#
# See add_swift_executable for detailed documentation.
function(add_swift_target_executable name)
# Parse the arguments we were given.
cmake_parse_arguments(SWIFTEXE_TARGET
"EXCLUDE_FROM_ALL;;BUILD_WITH_STDLIB"
""
"DEPENDS;LLVM_COMPONENT_DEPENDS;LINK_LIBRARIES"
${ARGN})
set(SWIFTEXE_TARGET_SOURCES ${SWIFTEXE_TARGET_UNPARSED_ARGUMENTS})
translate_flag(${SWIFTEXE_TARGET_EXCLUDE_FROM_ALL}
"EXCLUDE_FROM_ALL"
SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG)
# All Swift executables depend on the standard library.
list(APPEND SWIFTEXE_TARGET_LINK_LIBRARIES swiftCore)
# All Swift executables depend on the swiftSwiftOnoneSupport library.
list(APPEND SWIFTEXE_TARGET_DEPENDS swiftSwiftOnoneSupport)
if(NOT "${SWIFT_BUILD_STDLIB}")
list(REMOVE_ITEM SWIFTEXE_TARGET_LINK_LIBRARIES
swiftCore)
endif()
foreach(sdk ${SWIFT_SDKS})
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
set(VARIANT_SUFFIX "-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
set(VARIANT_NAME "${name}${VARIANT_SUFFIX}")
set(SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG_CURRENT
${SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG})
if(NOT "${VARIANT_SUFFIX}" STREQUAL "${SWIFT_PRIMARY_VARIANT_SUFFIX}")
# By default, don't build executables for target SDKs to avoid building
# target stdlibs.
set(SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG_CURRENT "EXCLUDE_FROM_ALL")
endif()
if(SWIFTEXE_TARGET_BUILD_WITH_STDLIB)
add_dependencies("swift-test-stdlib${VARIANT_SUFFIX}" ${VARIANT_NAME})
endif()
# Don't add the ${arch} to the suffix. We want to link against fat
# libraries.
_list_add_string_suffix(
"${SWIFTEXE_TARGET_DEPENDS}"
"-${SWIFT_SDK_${sdk}_LIB_SUBDIR}"
SWIFTEXE_TARGET_DEPENDS_with_suffix)
_add_swift_executable_single(
${VARIANT_NAME}
${SWIFTEXE_TARGET_SOURCES}
DEPENDS ${SWIFTEXE_TARGET_DEPENDS_with_suffix}
LLVM_COMPONENT_DEPENDS ${SWIFTEXE_TARGET_LLVM_COMPONENT_DEPENDS}
SDK "${sdk}"
ARCHITECTURE "${arch}"
LINK_LIBRARIES ${SWIFTEXE_TARGET_LINK_LIBRARIES}
${SWIFTEXE_TARGET_EXCLUDE_FROM_ALL_FLAG_CURRENT})
if(${sdk} IN_LIST SWIFT_APPLE_PLATFORMS)
add_custom_command_target(unused_var2
COMMAND "codesign" "-f" "-s" "-" "${SWIFT_RUNTIME_OUTPUT_INTDIR}/${VARIANT_NAME}"
CUSTOM_TARGET_NAME "${VARIANT_NAME}_signed"
OUTPUT "${SWIFT_RUNTIME_OUTPUT_INTDIR}/${VARIANT_NAME}_signed"
DEPENDS ${VARIANT_NAME})
else()
# No code signing on other platforms.
add_custom_command_target(unused_var2
CUSTOM_TARGET_NAME "${VARIANT_NAME}_signed"
OUTPUT "${SWIFT_RUNTIME_OUTPUT_INTDIR}/${VARIANT_NAME}_signed"
DEPENDS ${VARIANT_NAME})
endif()
endforeach()
endforeach()
endfunction()