# Create convenience targets for the Swift standard library. if(SWIFT_BUILD_RUNTIME_WITH_HOST_COMPILER) if((NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") AND (NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "AppleClang")) message(FATAL_ERROR "Building the swift runtime is not supported with ${CMAKE_C_COMPILER_ID}. Use the just-built clang instead.") else() message(WARNING "Building the swift runtime using the host compiler, and not the just-built clang.") endif() else() # If we use Clang-cl or MSVC, CMake provides default compiler and linker flags that are incompatible # with the frontend of Clang or Clang++. if(SWIFT_COMPILER_IS_MSVC_LIKE) set(CMAKE_CXX_COMPILER "${SWIFT_NATIVE_LLVM_TOOLS_PATH}/clang-cl") set(CMAKE_C_COMPILER "${SWIFT_NATIVE_LLVM_TOOLS_PATH}/clang-cl") else() set(CMAKE_CXX_COMPILER "${SWIFT_NATIVE_LLVM_TOOLS_PATH}/clang++") set(CMAKE_C_COMPILER "${SWIFT_NATIVE_LLVM_TOOLS_PATH}/clang") endif() set(CMAKE_CXX_COMPILER_ARG1 "") set(CMAKE_C_COMPILER_ARG1 "") # The sanitizers require using the same version of the compiler for # everything and there are various places where we link runtime code with # code built by the host compiler. Disable sanitizers for the runtime for # now. append("-fno-sanitize=all" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) endif() # Do not enforce checks for LLVM's ABI-breaking build settings. # The Swift runtime uses some header-only code from LLVM's ADT classes, # but we do not want to link libSupport into the runtime. These checks rely # on the presence of symbols in libSupport to identify how the code was # built and cause link failures for mismatches. Without linking that library, # we get link failures regardless, so instead, this just disables the checks. append("-DLLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING=1" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) if(SWIFT_ENABLE_GUARANTEED_NORMAL_ARGUMENTS) append("-DSWIFT_RUNTIME_ENABLE_GUARANTEED_NORMAL_ARGUMENTS=1" CMAKE_C_FLAGS CMAKE_CXX_FLAGS) endif() set(SWIFT_STDLIB_LIBRARY_BUILD_TYPES) if(SWIFT_BUILD_DYNAMIC_STDLIB) list(APPEND SWIFT_STDLIB_LIBRARY_BUILD_TYPES SHARED) endif() if(SWIFT_BUILD_STATIC_STDLIB) list(APPEND SWIFT_STDLIB_LIBRARY_BUILD_TYPES STATIC) endif() add_custom_target(swift-stdlib-all) add_custom_target(swift-stdlib-sib-all) add_custom_target(swift-stdlib-sibopt-all) add_custom_target(swift-stdlib-sibgen-all) foreach(SDK ${SWIFT_SDKS}) add_custom_target("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}") add_custom_target("swift-test-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}") add_custom_target("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sib") add_custom_target("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sibopt") add_custom_target("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sibgen") set_property(TARGET "swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}" "swift-test-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}" "swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sib" "swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sibopt" "swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sibgen" PROPERTY FOLDER "Swift libraries/Aggregate") foreach(ARCH ${SWIFT_SDK_${SDK}_ARCHITECTURES}) set(VARIANT_SUFFIX "-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-${ARCH}") add_custom_target("swift-stdlib${VARIANT_SUFFIX}") add_custom_target("swift-stdlib${VARIANT_SUFFIX}-sib") add_custom_target("swift-stdlib${VARIANT_SUFFIX}-sibopt") add_custom_target("swift-stdlib${VARIANT_SUFFIX}-sibgen") add_custom_target("swift-test-stdlib${VARIANT_SUFFIX}") set_property(TARGET "swift-stdlib${VARIANT_SUFFIX}" "swift-stdlib${VARIANT_SUFFIX}-sib" "swift-stdlib${VARIANT_SUFFIX}-sibopt" "swift-stdlib${VARIANT_SUFFIX}-sibgen" "swift-test-stdlib${VARIANT_SUFFIX}" PROPERTY FOLDER "Swift libraries/Aggregate") add_dependencies(swift-stdlib-all "swift-stdlib${VARIANT_SUFFIX}") add_dependencies(swift-stdlib-sib-all "swift-stdlib${VARIANT_SUFFIX}-sib") add_dependencies(swift-stdlib-sibopt-all "swift-stdlib${VARIANT_SUFFIX}-sibopt") add_dependencies(swift-stdlib-sibgen-all "swift-stdlib${VARIANT_SUFFIX}-sibgen") add_dependencies("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}" "swift-stdlib${VARIANT_SUFFIX}") add_dependencies("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sib" "swift-stdlib${VARIANT_SUFFIX}-sib") add_dependencies("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sibopt" "swift-stdlib${VARIANT_SUFFIX}-sibopt") add_dependencies("swift-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}-sibgen" "swift-stdlib${VARIANT_SUFFIX}-sibgen") add_dependencies("swift-test-stdlib-${SWIFT_SDK_${SDK}_LIB_SUBDIR}" "swift-test-stdlib${VARIANT_SUFFIX}") endforeach() endforeach() add_custom_target(swift-stdlib DEPENDS "swift-stdlib${SWIFT_PRIMARY_VARIANT_SUFFIX}") add_custom_target(swift-stdlib-sib DEPENDS "swift-stdlib${SWIFT_PRIMARY_VARIANT_SUFFIX}-sib") add_custom_target(swift-stdlib-sibopt DEPENDS "swift-stdlib${SWIFT_PRIMARY_VARIANT_SUFFIX}-sibopt") add_custom_target(swift-stdlib-sibgen DEPENDS "swift-stdlib${SWIFT_PRIMARY_VARIANT_SUFFIX}-sibgen") add_custom_target(swift-test-stdlib ALL DEPENDS "swift-test-stdlib${SWIFT_PRIMARY_VARIANT_SUFFIX}") set_property(TARGET swift-stdlib-all swift-stdlib-sib-all swift-stdlib-sibopt-all swift-stdlib-sibgen-all swift-stdlib swift-stdlib-sib swift-stdlib-sibopt swift-stdlib-sibgen swift-test-stdlib PROPERTY FOLDER "Swift libraries/Aggregate") add_subdirectory(public) add_subdirectory(private)