mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Build] Tweak Libdispatch.cmake for static linking support.
Don't try to build dynamic libraries if the SDK only supports static linking. Also, *do* build static libraries if the SDK only supports static linking. rdar://123503191
This commit is contained in:
@@ -84,105 +84,107 @@ foreach(sdk ${DISPATCH_SDKS})
|
|||||||
set(SWIFT_LIBDISPATCH_SYSTEM_PROCESSOR -DCMAKE_SYSTEM_PROCESSOR=${arch})
|
set(SWIFT_LIBDISPATCH_SYSTEM_PROCESSOR -DCMAKE_SYSTEM_PROCESSOR=${arch})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
ExternalProject_Add("${LIBDISPATCH_VARIANT_NAME}"
|
if(NOT SWIFT_SDK_${sdk}_STATIC_ONLY)
|
||||||
SOURCE_DIR
|
ExternalProject_Add("${LIBDISPATCH_VARIANT_NAME}"
|
||||||
"${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}"
|
SOURCE_DIR
|
||||||
CMAKE_ARGS
|
"${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}"
|
||||||
-DCMAKE_AR=${CMAKE_AR}
|
CMAKE_ARGS
|
||||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
-DCMAKE_AR=${CMAKE_AR}
|
||||||
${SWIFT_LIBDISPATCH_COMPILER_CMAKE_ARGS}
|
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
||||||
${SWIFT_LIBDISPATCH_COMPILER_TRIPLE_CMAKE_ARGS}
|
${SWIFT_LIBDISPATCH_COMPILER_CMAKE_ARGS}
|
||||||
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
|
${SWIFT_LIBDISPATCH_COMPILER_TRIPLE_CMAKE_ARGS}
|
||||||
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
|
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
|
||||||
-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
|
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
|
||||||
-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
|
-DCMAKE_EXE_LINKER_FLAGS=${CMAKE_EXE_LINKER_FLAGS}
|
||||||
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
|
-DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
|
||||||
-DCMAKE_INSTALL_LIBDIR=lib
|
-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
|
||||||
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
-DCMAKE_INSTALL_LIBDIR=lib
|
||||||
-DCMAKE_LINKER=${CMAKE_LINKER}
|
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
||||||
-DCMAKE_MT=${CMAKE_MT}
|
-DCMAKE_LINKER=${CMAKE_LINKER}
|
||||||
-DCMAKE_RANLIB=${CMAKE_RANLIB}
|
-DCMAKE_MT=${CMAKE_MT}
|
||||||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
-DCMAKE_RANLIB=${CMAKE_RANLIB}
|
||||||
-DCMAKE_SYSTEM_NAME=${SWIFT_SDK_${sdk}_NAME}
|
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
|
||||||
${SWIFT_LIBDISPATCH_SYSTEM_PROCESSOR}
|
-DCMAKE_SYSTEM_NAME=${SWIFT_SDK_${sdk}_NAME}
|
||||||
"${SWIFT_LIBDISPATCH_ANDROID_NDK}"
|
${SWIFT_LIBDISPATCH_SYSTEM_PROCESSOR}
|
||||||
-DCMAKE_ANDROID_ARCH_ABI=${SWIFT_SDK_ANDROID_ARCH_${arch}_ABI}
|
"${SWIFT_LIBDISPATCH_ANDROID_NDK}"
|
||||||
-DCMAKE_ANDROID_API=${SWIFT_ANDROID_API_LEVEL}
|
-DCMAKE_ANDROID_ARCH_ABI=${SWIFT_SDK_ANDROID_ARCH_${arch}_ABI}
|
||||||
-DBUILD_SHARED_LIBS=YES
|
-DCMAKE_ANDROID_API=${SWIFT_ANDROID_API_LEVEL}
|
||||||
-DENABLE_SWIFT=NO
|
-DBUILD_SHARED_LIBS=YES
|
||||||
-DBUILD_TESTING=NO
|
-DENABLE_SWIFT=NO
|
||||||
INSTALL_COMMAND
|
-DBUILD_TESTING=NO
|
||||||
# NOTE(compnerd) provide a custom install command to
|
INSTALL_COMMAND
|
||||||
# ensure that we strip out the DESTDIR environment
|
# NOTE(compnerd) provide a custom install command to
|
||||||
# from the sub-build
|
# ensure that we strip out the DESTDIR environment
|
||||||
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install
|
# from the sub-build
|
||||||
COMMAND
|
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install
|
||||||
${CMAKE_COMMAND} -E copy
|
COMMAND
|
||||||
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
${CMAKE_COMMAND} -E copy
|
||||||
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
COMMAND
|
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
${CMAKE_COMMAND} -E copy
|
COMMAND
|
||||||
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
${CMAKE_COMMAND} -E copy
|
||||||
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
COMMAND
|
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
${CMAKE_COMMAND} -E copy
|
COMMAND
|
||||||
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
${CMAKE_COMMAND} -E copy
|
||||||
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
COMMAND
|
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
${CMAKE_COMMAND} -E copy
|
COMMAND
|
||||||
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
${CMAKE_COMMAND} -E copy
|
||||||
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
STEP_TARGETS
|
${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
install
|
STEP_TARGETS
|
||||||
BUILD_BYPRODUCTS
|
install
|
||||||
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
BUILD_BYPRODUCTS
|
||||||
<INSTALL_DIR>/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
|
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
<INSTALL_DIR>/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
|
||||||
<INSTALL_DIR>/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
|
<INSTALL_DIR>/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
BUILD_ALWAYS
|
<INSTALL_DIR>/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
|
||||||
1)
|
BUILD_ALWAYS
|
||||||
|
1)
|
||||||
|
|
||||||
ExternalProject_Get_Property("${LIBDISPATCH_VARIANT_NAME}" install_dir)
|
ExternalProject_Get_Property("${LIBDISPATCH_VARIANT_NAME}" install_dir)
|
||||||
|
|
||||||
if(NOT SWIFT_BUILT_STANDALONE AND NOT "${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
|
if(NOT SWIFT_BUILT_STANDALONE AND NOT "${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
|
||||||
add_dependencies("${LIBDISPATCH_VARIANT_NAME}" clang)
|
add_dependencies("${LIBDISPATCH_VARIANT_NAME}" clang)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
|
||||||
|
# the directory existing. Just create the location which will be populated
|
||||||
|
# during the installation.
|
||||||
|
file(MAKE_DIRECTORY ${install_dir}/include)
|
||||||
|
|
||||||
|
set(DISPATCH_VARIANT_NAME "dispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
|
||||||
|
add_library("${DISPATCH_VARIANT_NAME}" SHARED IMPORTED GLOBAL)
|
||||||
|
set_target_properties("${DISPATCH_VARIANT_NAME}"
|
||||||
|
PROPERTIES
|
||||||
|
IMPORTED_LOCATION
|
||||||
|
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
|
IMPORTED_IMPLIB
|
||||||
|
${install_dir}/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES
|
||||||
|
${install_dir}/include
|
||||||
|
IMPORTED_NO_SONAME
|
||||||
|
1)
|
||||||
|
|
||||||
|
set(BLOCKS_RUNTIME_VARIANT_NAME "BlocksRuntime-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
|
||||||
|
add_library("${BLOCKS_RUNTIME_VARIANT_NAME}" SHARED IMPORTED GLOBAL)
|
||||||
|
set_target_properties("${BLOCKS_RUNTIME_VARIANT_NAME}"
|
||||||
|
PROPERTIES
|
||||||
|
IMPORTED_LOCATION
|
||||||
|
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
||||||
|
IMPORTED_IMPLIB
|
||||||
|
${install_dir}/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES
|
||||||
|
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime
|
||||||
|
IMPORTED_NO_SONAME
|
||||||
|
1)
|
||||||
|
|
||||||
|
add_dependencies("${DISPATCH_VARIANT_NAME}" "${LIBDISPATCH_VARIANT_NAME}-install")
|
||||||
|
add_dependencies("${BLOCKS_RUNTIME_VARIANT_NAME}" "${LIBDISPATCH_VARIANT_NAME}-install")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
|
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
|
||||||
# the directory existing. Just create the location which will be populated
|
|
||||||
# during the installation.
|
|
||||||
file(MAKE_DIRECTORY ${install_dir}/include)
|
|
||||||
|
|
||||||
set(DISPATCH_VARIANT_NAME "dispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
|
|
||||||
add_library("${DISPATCH_VARIANT_NAME}" SHARED IMPORTED GLOBAL)
|
|
||||||
set_target_properties("${DISPATCH_VARIANT_NAME}"
|
|
||||||
PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
|
||||||
IMPORTED_IMPLIB
|
|
||||||
${install_dir}/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}dispatch${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${install_dir}/include
|
|
||||||
IMPORTED_NO_SONAME
|
|
||||||
1)
|
|
||||||
|
|
||||||
set(BLOCKS_RUNTIME_VARIANT_NAME "BlocksRuntime-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
|
|
||||||
add_library("${BLOCKS_RUNTIME_VARIANT_NAME}" SHARED IMPORTED GLOBAL)
|
|
||||||
set_target_properties("${BLOCKS_RUNTIME_VARIANT_NAME}"
|
|
||||||
PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${install_dir}/${LIBDISPATCH_RUNTIME_DIR}/${SWIFT_SDK_${sdk}_SHARED_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_SHARED_LIBRARY_SUFFIX}
|
|
||||||
IMPORTED_IMPLIB
|
|
||||||
${install_dir}/lib/${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_PREFIX}BlocksRuntime${SWIFT_SDK_${sdk}_IMPORT_LIBRARY_SUFFIX}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SWIFT_PATH_TO_LIBDISPATCH_SOURCE}/src/BlocksRuntime
|
|
||||||
IMPORTED_NO_SONAME
|
|
||||||
1)
|
|
||||||
|
|
||||||
add_dependencies("${DISPATCH_VARIANT_NAME}" "${LIBDISPATCH_VARIANT_NAME}-install")
|
|
||||||
add_dependencies("${BLOCKS_RUNTIME_VARIANT_NAME}" "${LIBDISPATCH_VARIANT_NAME}-install")
|
|
||||||
|
|
||||||
if(SWIFT_BUILD_STATIC_STDLIB)
|
|
||||||
set(LIBDISPATCH_STATIC_VARIANT_NAME "libdispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}-static")
|
set(LIBDISPATCH_STATIC_VARIANT_NAME "libdispatch-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}-static")
|
||||||
ExternalProject_Add("${LIBDISPATCH_STATIC_VARIANT_NAME}"
|
ExternalProject_Add("${LIBDISPATCH_STATIC_VARIANT_NAME}"
|
||||||
SOURCE_DIR
|
SOURCE_DIR
|
||||||
|
|||||||
Reference in New Issue
Block a user