|
|
|
|
@@ -41,6 +41,12 @@ function(add_dependencies_multiple_targets)
|
|
|
|
|
endif()
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
function(_require_empty_list the_list the_message)
|
|
|
|
|
if(the_list)
|
|
|
|
|
message(FATAL_ERROR "${the_message}")
|
|
|
|
|
endif()
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
# Compute the library subdirectory to use for the given sdk and
|
|
|
|
|
# architecture, placing the result in 'result_var_name'.
|
|
|
|
|
function(compute_library_subdir result_var_name sdk arch)
|
|
|
|
|
@@ -337,22 +343,6 @@ function(_add_swift_lipo_target target output)
|
|
|
|
|
endif()
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
# After target 'dst_target' is built from its own object files, merge the
|
|
|
|
|
# contents of 'src_target' into it. 'dst_target' and 'src_target' must be
|
|
|
|
|
# static-library targets.
|
|
|
|
|
function(_target_merge_static_library dst_target src_target)
|
|
|
|
|
add_dependencies("${dst_target}" "${src_target}")
|
|
|
|
|
set(unpack_dir "${CMAKE_BINARY_DIR}/tmp/unpack/${dst_target}")
|
|
|
|
|
add_custom_command(TARGET "${dst_target}" POST_BUILD
|
|
|
|
|
COMMAND "${CMAKE_COMMAND}" -E make_directory "${unpack_dir}"
|
|
|
|
|
COMMAND cd "${unpack_dir}"
|
|
|
|
|
COMMAND "${CMAKE_AR}" x "$<TARGET_FILE:${src_target}>"
|
|
|
|
|
COMMAND "${CMAKE_AR}" r "$<TARGET_FILE:${dst_target}>" ./*.o
|
|
|
|
|
COMMAND cd "${CMAKE_BINARY_DIR}"
|
|
|
|
|
COMMAND "${CMAKE_COMMAND}" -E remove_directory "${unpack_dir}"
|
|
|
|
|
)
|
|
|
|
|
endfunction()
|
|
|
|
|
|
|
|
|
|
# Add a single variant of a new Swift library.
|
|
|
|
|
#
|
|
|
|
|
# Usage:
|
|
|
|
|
@@ -443,13 +433,13 @@ endfunction()
|
|
|
|
|
# Sources to add into this library
|
|
|
|
|
function(_add_swift_library_single target name)
|
|
|
|
|
set(SWIFTLIB_SINGLE_options
|
|
|
|
|
SHARED IS_STDLIB IS_STDLIB_CORE IS_SDK_OVERLAY
|
|
|
|
|
SHARED OBJECT_LIBRARY IS_STDLIB IS_STDLIB_CORE IS_SDK_OVERLAY
|
|
|
|
|
TARGET_LIBRARY HOST_LIBRARY
|
|
|
|
|
API_NOTES_NON_OVERLAY DONT_EMBED_BITCODE)
|
|
|
|
|
cmake_parse_arguments(SWIFTLIB_SINGLE
|
|
|
|
|
"${SWIFTLIB_SINGLE_options}"
|
|
|
|
|
"SDK;ARCHITECTURE;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_IOS"
|
|
|
|
|
"DEPENDS;LINK_LIBRARIES;FRAMEWORK_DEPENDS;FRAMEWORK_DEPENDS_WEAK;COMPONENT_DEPENDS;C_COMPILE_FLAGS;SWIFT_COMPILE_FLAGS;LINK_FLAGS;PRIVATE_LINK_LIBRARIES;INTERFACE_LINK_LIBRARIES;FILE_DEPENDS"
|
|
|
|
|
"DEPENDS;LINK_LIBRARIES;FRAMEWORK_DEPENDS;FRAMEWORK_DEPENDS_WEAK;COMPONENT_DEPENDS;C_COMPILE_FLAGS;SWIFT_COMPILE_FLAGS;LINK_FLAGS;PRIVATE_LINK_LIBRARIES;INTERFACE_LINK_LIBRARIES;INCORPORATE_OBJECT_LIBRARIES;FILE_DEPENDS"
|
|
|
|
|
${ARGN})
|
|
|
|
|
|
|
|
|
|
set(SWIFTLIB_SINGLE_SOURCES ${SWIFTLIB_SINGLE_UNPARSED_ARGUMENTS})
|
|
|
|
|
@@ -505,6 +495,8 @@ function(_add_swift_library_single target name)
|
|
|
|
|
|
|
|
|
|
if(MODULE)
|
|
|
|
|
set(libkind MODULE)
|
|
|
|
|
elseif(SWIFTLIB_SINGLE_OBJECT_LIBRARY)
|
|
|
|
|
set(libkind OBJECT)
|
|
|
|
|
elseif(SWIFTLIB_SINGLE_SHARED)
|
|
|
|
|
set(libkind SHARED)
|
|
|
|
|
else()
|
|
|
|
|
@@ -576,10 +568,18 @@ function(_add_swift_library_single target name)
|
|
|
|
|
INSTALL_IN_COMPONENT "${SWIFTLIB_INSTALL_IN_COMPONENT}")
|
|
|
|
|
add_swift_source_group("${SWIFTLIB_SINGLE_EXTERNAL_SOURCES}")
|
|
|
|
|
|
|
|
|
|
set(VARIANT_SUFFIX "-${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}-${SWIFTLIB_SINGLE_ARCHITECTURE}")
|
|
|
|
|
set(SWIFTLIB_INCORPORATED_OBJECT_LIBRARIES_EXPRESSIONS)
|
|
|
|
|
foreach(object_library ${SWIFTLIB_SINGLE_INCORPORATE_OBJECT_LIBRARIES})
|
|
|
|
|
list(APPEND SWIFTLIB_INCORPORATED_OBJECT_LIBRARIES_EXPRESSIONS
|
|
|
|
|
$<TARGET_OBJECTS:${object_library}${VARIANT_SUFFIX}>)
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
add_library("${target}" ${libkind}
|
|
|
|
|
${SWIFT_SECTIONS_OBJECT_BEGIN}
|
|
|
|
|
${SWIFTLIB_SINGLE_SOURCES}
|
|
|
|
|
${SWIFTLIB_SINGLE_EXTERNAL_SOURCES}
|
|
|
|
|
${SWIFTLIB_INCORPORATED_OBJECT_LIBRARIES_EXPRESSIONS}
|
|
|
|
|
${SWIFT_SECTIONS_OBJECT_END})
|
|
|
|
|
|
|
|
|
|
# The section metadata objects are generated sources, and we need to tell CMake
|
|
|
|
|
@@ -660,6 +660,7 @@ function(_add_swift_library_single target name)
|
|
|
|
|
# library.
|
|
|
|
|
add_library(${target_static} STATIC
|
|
|
|
|
${SWIFTLIB_SINGLE_SOURCES}
|
|
|
|
|
${SWIFTLIB_INCORPORATED_OBJECT_LIBRARIES_EXPRESSIONS}
|
|
|
|
|
|
|
|
|
|
# Note: the dummy.c source file provides no definitions. However,
|
|
|
|
|
# it forces Xcode to properly link the static library.
|
|
|
|
|
@@ -728,6 +729,10 @@ function(_add_swift_library_single target name)
|
|
|
|
|
|
|
|
|
|
if("${libkind}" STREQUAL "SHARED")
|
|
|
|
|
target_link_libraries("${target}" PRIVATE ${SWIFTLIB_SINGLE_LINK_LIBRARIES})
|
|
|
|
|
elseif("${libkind}" STREQUAL "OBJECT")
|
|
|
|
|
_require_empty_list(
|
|
|
|
|
"${SWIFTLIB_SINGLE_LINK_LIBRARIES}"
|
|
|
|
|
"OBJECT_LIBRARY may not link to anything")
|
|
|
|
|
else()
|
|
|
|
|
target_link_libraries("${target}" INTERFACE ${SWIFTLIB_SINGLE_LINK_LIBRARIES})
|
|
|
|
|
endif()
|
|
|
|
|
@@ -763,7 +768,10 @@ function(_add_swift_library_single target name)
|
|
|
|
|
endforeach()
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
swift_common_llvm_config("${target}" ${SWIFTLIB_SINGLE_COMPONENT_DEPENDS})
|
|
|
|
|
if(NOT SWIFTLIB_SINGLE_TARGET_LIBRARY)
|
|
|
|
|
# Call llvm_config() only for libraries that are part of the compiler.
|
|
|
|
|
swift_common_llvm_config("${target}" ${SWIFTLIB_SINGLE_COMPONENT_DEPENDS})
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Collect compile and link flags for the static and non-static targets.
|
|
|
|
|
# Don't set PROPERTY COMPILE_FLAGS or LINK_FLAGS directly.
|
|
|
|
|
@@ -843,10 +851,23 @@ function(_add_swift_library_single target name)
|
|
|
|
|
COMPILE_FLAGS " ${c_compile_flags}")
|
|
|
|
|
set_property(TARGET "${target}" APPEND_STRING PROPERTY
|
|
|
|
|
LINK_FLAGS " ${link_flags} -L${SWIFTLIB_DIR}/${SWIFTLIB_SINGLE_SUBDIR} -L${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR} -L${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}")
|
|
|
|
|
target_link_libraries("${target}" PRIVATE
|
|
|
|
|
${SWIFTLIB_SINGLE_PRIVATE_LINK_LIBRARIES})
|
|
|
|
|
target_link_libraries("${target}" INTERFACE
|
|
|
|
|
${SWIFTLIB_SINGLE_INTERFACE_LINK_LIBRARIES})
|
|
|
|
|
if("${libkind}" STREQUAL "OBJECT")
|
|
|
|
|
_require_empty_list(
|
|
|
|
|
"${SWIFTLIB_SINGLE_PRIVATE_LINK_LIBRARIES}"
|
|
|
|
|
"OBJECT_LIBRARY may not link to anything")
|
|
|
|
|
else()
|
|
|
|
|
target_link_libraries("${target}" PRIVATE
|
|
|
|
|
${SWIFTLIB_SINGLE_PRIVATE_LINK_LIBRARIES})
|
|
|
|
|
endif()
|
|
|
|
|
if("${libkind}" STREQUAL "OBJECT")
|
|
|
|
|
_require_empty_list(
|
|
|
|
|
"${SWIFTLIB_SINGLE_INTERFACE_LINK_LIBRARIES}"
|
|
|
|
|
"OBJECT_LIBRARY may not link to anything")
|
|
|
|
|
else()
|
|
|
|
|
target_link_libraries("${target}" INTERFACE
|
|
|
|
|
${SWIFTLIB_SINGLE_INTERFACE_LINK_LIBRARIES})
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set_property(TARGET "${target}" PROPERTY
|
|
|
|
|
LINKER_LANGUAGE "CXX")
|
|
|
|
|
|
|
|
|
|
@@ -857,17 +878,6 @@ function(_add_swift_library_single target name)
|
|
|
|
|
LINK_FLAGS " ${link_flags} -L${SWIFTSTATICLIB_DIR}/${SWIFTLIB_SINGLE_SUBDIR} -L${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFTLIB_SINGLE_SUBDIR} -L${SWIFT_NATIVE_SWIFT_TOOLS_PATH}/../lib/swift/${SWIFT_SDK_${SWIFTLIB_SINGLE_SDK}_LIB_SUBDIR}")
|
|
|
|
|
target_link_libraries("${target_static}" PRIVATE
|
|
|
|
|
${SWIFTLIB_SINGLE_PRIVATE_LINK_LIBRARIES})
|
|
|
|
|
|
|
|
|
|
if("${name}" STREQUAL "swiftCore")
|
|
|
|
|
# Have libswiftCore.a include the contents of the private Swift libraries
|
|
|
|
|
# it depends on, so statically linking clients don't have to know about
|
|
|
|
|
# them.
|
|
|
|
|
foreach(private_link_library ${SWIFTLIB_SINGLE_PRIVATE_LINK_LIBRARIES})
|
|
|
|
|
if(TARGET "${private_link_library}")
|
|
|
|
|
_target_merge_static_library("${target_static}" "${private_link_library}")
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Do not add code here.
|
|
|
|
|
@@ -982,13 +992,13 @@ endfunction()
|
|
|
|
|
# Sources to add into this library.
|
|
|
|
|
function(add_swift_library name)
|
|
|
|
|
set(SWIFTLIB_options
|
|
|
|
|
SHARED IS_STDLIB IS_STDLIB_CORE IS_SDK_OVERLAY
|
|
|
|
|
SHARED OBJECT_LIBRARY IS_STDLIB IS_STDLIB_CORE IS_SDK_OVERLAY
|
|
|
|
|
TARGET_LIBRARY HOST_LIBRARY
|
|
|
|
|
API_NOTES_NON_OVERLAY DONT_EMBED_BITCODE HAS_SWIFT_CONTENT)
|
|
|
|
|
cmake_parse_arguments(SWIFTLIB
|
|
|
|
|
"${SWIFTLIB_options}"
|
|
|
|
|
"INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_IOS"
|
|
|
|
|
"DEPENDS;LINK_LIBRARIES;SWIFT_MODULE_DEPENDS;SWIFT_MODULE_DEPENDS_OSX;SWIFT_MODULE_DEPENDS_IOS;SWIFT_MODULE_DEPENDS_TVOS;SWIFT_MODULE_DEPENDS_WATCHOS;FRAMEWORK_DEPENDS;FRAMEWORK_DEPENDS_WEAK;FRAMEWORK_DEPENDS_OSX;FRAMEWORK_DEPENDS_IOS_TVOS;COMPONENT_DEPENDS;FILE_DEPENDS;TARGET_SDKS;C_COMPILE_FLAGS;SWIFT_COMPILE_FLAGS;SWIFT_COMPILE_FLAGS_OSX;SWIFT_COMPILE_FLAGS_IOS;SWIFT_COMPILE_FLAGS_TVOS;SWIFT_COMPILE_FLAGS_WATCHOS;LINK_FLAGS;PRIVATE_LINK_LIBRARIES;INTERFACE_LINK_LIBRARIES"
|
|
|
|
|
"DEPENDS;LINK_LIBRARIES;SWIFT_MODULE_DEPENDS;SWIFT_MODULE_DEPENDS_OSX;SWIFT_MODULE_DEPENDS_IOS;SWIFT_MODULE_DEPENDS_TVOS;SWIFT_MODULE_DEPENDS_WATCHOS;FRAMEWORK_DEPENDS;FRAMEWORK_DEPENDS_WEAK;FRAMEWORK_DEPENDS_OSX;FRAMEWORK_DEPENDS_IOS_TVOS;COMPONENT_DEPENDS;FILE_DEPENDS;TARGET_SDKS;C_COMPILE_FLAGS;SWIFT_COMPILE_FLAGS;SWIFT_COMPILE_FLAGS_OSX;SWIFT_COMPILE_FLAGS_IOS;SWIFT_COMPILE_FLAGS_TVOS;SWIFT_COMPILE_FLAGS_WATCHOS;LINK_FLAGS;PRIVATE_LINK_LIBRARIES;INTERFACE_LINK_LIBRARIES;INCORPORATE_OBJECT_LIBRARIES"
|
|
|
|
|
${ARGN})
|
|
|
|
|
set(SWIFTLIB_SOURCES ${SWIFTLIB_UNPARSED_ARGUMENTS})
|
|
|
|
|
|
|
|
|
|
@@ -1150,6 +1160,7 @@ function(add_swift_library name)
|
|
|
|
|
${VARIANT_NAME}
|
|
|
|
|
${name}
|
|
|
|
|
${SWIFTLIB_SHARED_keyword}
|
|
|
|
|
${SWIFTLIB_OBJECT_LIBRARY_keyword}
|
|
|
|
|
${SWIFTLIB_SOURCES}
|
|
|
|
|
SDK ${sdk}
|
|
|
|
|
ARCHITECTURE ${arch}
|
|
|
|
|
@@ -1163,6 +1174,7 @@ function(add_swift_library name)
|
|
|
|
|
SWIFT_COMPILE_FLAGS ${swiftlib_swift_compile_flags_all}
|
|
|
|
|
LINK_FLAGS ${SWIFTLIB_LINK_FLAGS}
|
|
|
|
|
PRIVATE_LINK_LIBRARIES ${swiftlib_private_link_libraries_targets}
|
|
|
|
|
INCORPORATE_OBJECT_LIBRARIES ${SWIFTLIB_INCORPORATE_OBJECT_LIBRARIES}
|
|
|
|
|
${SWIFTLIB_DONT_EMBED_BITCODE_keyword}
|
|
|
|
|
${SWIFTLIB_API_NOTES_NON_OVERLAY_keyword}
|
|
|
|
|
${SWIFTLIB_IS_STDLIB_keyword}
|
|
|
|
|
@@ -1174,120 +1186,124 @@ function(add_swift_library name)
|
|
|
|
|
DEPLOYMENT_VERSION_IOS "${SWIFTLIB_DEPLOYMENT_VERSION_IOS}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Add dependencies on the (not-yet-created) custom lipo target.
|
|
|
|
|
foreach(DEP ${SWIFTLIB_LINK_LIBRARIES})
|
|
|
|
|
if (NOT "${DEP}" STREQUAL "icucore")
|
|
|
|
|
add_dependencies(${VARIANT_NAME}
|
|
|
|
|
"${DEP}-${SWIFT_SDK_${sdk}_LIB_SUBDIR}")
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
if (SWIFT_BUILD_STATIC_STDLIB AND SWIFTLIB_IS_STDLIB)
|
|
|
|
|
if(NOT SWIFTLIB_OBJECT_LIBRARY)
|
|
|
|
|
# Add dependencies on the (not-yet-created) custom lipo target.
|
|
|
|
|
foreach(DEP ${SWIFTLIB_LINK_LIBRARIES})
|
|
|
|
|
if (NOT "${DEP}" STREQUAL "icucore")
|
|
|
|
|
add_dependencies("${VARIANT_NAME}-static"
|
|
|
|
|
"${DEP}-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-static")
|
|
|
|
|
add_dependencies(${VARIANT_NAME}
|
|
|
|
|
"${DEP}-${SWIFT_SDK_${sdk}_LIB_SUBDIR}")
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
if (SWIFT_BUILD_STATIC_STDLIB AND SWIFTLIB_IS_STDLIB)
|
|
|
|
|
# Add dependencies on the (not-yet-created) custom lipo target.
|
|
|
|
|
foreach(DEP ${SWIFTLIB_LINK_LIBRARIES})
|
|
|
|
|
if (NOT "${DEP}" STREQUAL "icucore")
|
|
|
|
|
add_dependencies("${VARIANT_NAME}-static"
|
|
|
|
|
"${DEP}-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-static")
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Note this thin library.
|
|
|
|
|
list(APPEND THIN_INPUT_TARGETS ${VARIANT_NAME})
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
if(NOT SWIFTLIB_OBJECT_LIBRARY)
|
|
|
|
|
# Determine the name of the universal library.
|
|
|
|
|
if(SWIFTLIB_SHARED)
|
|
|
|
|
set(UNIVERSAL_LIBRARY_NAME
|
|
|
|
|
"${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${name}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
|
|
|
else()
|
|
|
|
|
set(UNIVERSAL_LIBRARY_NAME
|
|
|
|
|
"${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${name}${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set(lipo_target "${name}-${SWIFT_SDK_${sdk}_LIB_SUBDIR}")
|
|
|
|
|
_add_swift_lipo_target(
|
|
|
|
|
${lipo_target}
|
|
|
|
|
"${UNIVERSAL_LIBRARY_NAME}"
|
|
|
|
|
${THIN_INPUT_TARGETS})
|
|
|
|
|
|
|
|
|
|
# Cache universal libraries for dependency purposes
|
|
|
|
|
set(UNIVERSAL_LIBRARY_NAMES_${SWIFT_SDK_${sdk}_LIB_SUBDIR}
|
|
|
|
|
${UNIVERSAL_LIBRARY_NAMES_${SWIFT_SDK_${sdk}_LIB_SUBDIR}}
|
|
|
|
|
${lipo_target}
|
|
|
|
|
CACHE INTERNAL "UNIVERSAL_LIBRARY_NAMES_${SWIFT_SDK_${sdk}_LIB_SUBDIR}")
|
|
|
|
|
|
|
|
|
|
# Determine the subdirectory where this library will be installed.
|
|
|
|
|
set(resource_dir_sdk_subdir "${SWIFT_SDK_${sdk}_LIB_SUBDIR}")
|
|
|
|
|
|
|
|
|
|
if("${resource_dir_sdk_subdir}" STREQUAL "")
|
|
|
|
|
message(FATAL_ERROR "internal error: the variable should be non-empty")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(SWIFTLIB_TARGET_LIBRARY)
|
|
|
|
|
if(SWIFTLIB_SHARED)
|
|
|
|
|
set(resource_dir "swift")
|
|
|
|
|
set(file_permissions
|
|
|
|
|
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
|
|
|
|
GROUP_READ GROUP_EXECUTE
|
|
|
|
|
WORLD_READ WORLD_EXECUTE)
|
|
|
|
|
else()
|
|
|
|
|
set(resource_dir "swift_static")
|
|
|
|
|
set(file_permissions
|
|
|
|
|
OWNER_READ OWNER_WRITE
|
|
|
|
|
GROUP_READ
|
|
|
|
|
WORLD_READ)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
swift_install_in_component("${SWIFTLIB_INSTALL_IN_COMPONENT}"
|
|
|
|
|
FILES "${UNIVERSAL_LIBRARY_NAME}"
|
|
|
|
|
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/${resource_dir}/${resource_dir_sdk_subdir}"
|
|
|
|
|
PERMISSIONS ${file_permissions})
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# If we built static variants of the library, create a lipo target for
|
|
|
|
|
# them.
|
|
|
|
|
set(lipo_target_static)
|
|
|
|
|
if (SWIFT_BUILD_STATIC_STDLIB AND SWIFTLIB_IS_STDLIB)
|
|
|
|
|
set(THIN_INPUT_TARGETS_STATIC)
|
|
|
|
|
foreach(TARGET ${THIN_INPUT_TARGETS})
|
|
|
|
|
list(APPEND THIN_INPUT_TARGETS_STATIC "${TARGET}-static")
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
set(lipo_target_static
|
|
|
|
|
"${name}-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-static")
|
|
|
|
|
set(UNIVERSAL_LIBRARY_NAME
|
|
|
|
|
"${SWIFTSTATICLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${name}${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
|
|
|
_add_swift_lipo_target(
|
|
|
|
|
${lipo_target_static}
|
|
|
|
|
"${UNIVERSAL_LIBRARY_NAME}"
|
|
|
|
|
${THIN_INPUT_TARGETS_STATIC})
|
|
|
|
|
swift_install_in_component("${SWIFTLIB_INSTALL_IN_COMPONENT}"
|
|
|
|
|
FILES "${UNIVERSAL_LIBRARY_NAME}"
|
|
|
|
|
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift_static/${resource_dir_sdk_subdir}"
|
|
|
|
|
PERMISSIONS
|
|
|
|
|
OWNER_READ OWNER_WRITE
|
|
|
|
|
GROUP_READ
|
|
|
|
|
WORLD_READ)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Add Swift standard library targets as dependencies to the top-level
|
|
|
|
|
# convenience target.
|
|
|
|
|
if(SWIFTLIB_TARGET_LIBRARY)
|
|
|
|
|
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
|
|
|
|
|
set(VARIANT_SUFFIX "-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
|
|
|
|
|
if(TARGET "swift-stdlib${VARIANT_SUFFIX}" AND TARGET "swift-test-stdlib${VARIANT_SUFFIX}")
|
|
|
|
|
add_dependencies("swift-stdlib${VARIANT_SUFFIX}"
|
|
|
|
|
${lipo_target}
|
|
|
|
|
${lipo_target_static})
|
|
|
|
|
if(NOT "${name}" STREQUAL "swiftStdlibCollectionUnittest")
|
|
|
|
|
add_dependencies("swift-test-stdlib${VARIANT_SUFFIX}"
|
|
|
|
|
${lipo_target}
|
|
|
|
|
${lipo_target_static})
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Note this thin library.
|
|
|
|
|
list(APPEND THIN_INPUT_TARGETS ${VARIANT_NAME})
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
# Determine the name of the universal library.
|
|
|
|
|
if(SWIFTLIB_SHARED)
|
|
|
|
|
set(UNIVERSAL_LIBRARY_NAME
|
|
|
|
|
"${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${name}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
|
|
|
else()
|
|
|
|
|
set(UNIVERSAL_LIBRARY_NAME
|
|
|
|
|
"${SWIFTLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${name}${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
set(lipo_target "${name}-${SWIFT_SDK_${sdk}_LIB_SUBDIR}")
|
|
|
|
|
_add_swift_lipo_target(
|
|
|
|
|
${lipo_target}
|
|
|
|
|
"${UNIVERSAL_LIBRARY_NAME}"
|
|
|
|
|
${THIN_INPUT_TARGETS})
|
|
|
|
|
|
|
|
|
|
# Cache universal libraries for dependency purposes
|
|
|
|
|
set(UNIVERSAL_LIBRARY_NAMES_${SWIFT_SDK_${sdk}_LIB_SUBDIR}
|
|
|
|
|
${UNIVERSAL_LIBRARY_NAMES_${SWIFT_SDK_${sdk}_LIB_SUBDIR}}
|
|
|
|
|
${lipo_target}
|
|
|
|
|
CACHE INTERNAL "UNIVERSAL_LIBRARY_NAMES_${SWIFT_SDK_${sdk}_LIB_SUBDIR}")
|
|
|
|
|
|
|
|
|
|
# Determine the subdirectory where this library will be installed.
|
|
|
|
|
set(resource_dir_sdk_subdir "${SWIFT_SDK_${sdk}_LIB_SUBDIR}")
|
|
|
|
|
|
|
|
|
|
if("${resource_dir_sdk_subdir}" STREQUAL "")
|
|
|
|
|
message(FATAL_ERROR "internal error: the variable should be non-empty")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if(SWIFTLIB_TARGET_LIBRARY)
|
|
|
|
|
if(SWIFTLIB_SHARED)
|
|
|
|
|
set(resource_dir "swift")
|
|
|
|
|
set(file_permissions
|
|
|
|
|
OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
|
|
|
|
GROUP_READ GROUP_EXECUTE
|
|
|
|
|
WORLD_READ WORLD_EXECUTE)
|
|
|
|
|
else()
|
|
|
|
|
set(resource_dir "swift_static")
|
|
|
|
|
set(file_permissions
|
|
|
|
|
OWNER_READ OWNER_WRITE
|
|
|
|
|
GROUP_READ
|
|
|
|
|
WORLD_READ)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
swift_install_in_component("${SWIFTLIB_INSTALL_IN_COMPONENT}"
|
|
|
|
|
FILES "${UNIVERSAL_LIBRARY_NAME}"
|
|
|
|
|
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/${resource_dir}/${resource_dir_sdk_subdir}"
|
|
|
|
|
PERMISSIONS ${file_permissions})
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# If we built static variants of the library, create a lipo target for
|
|
|
|
|
# them.
|
|
|
|
|
set(lipo_target_static)
|
|
|
|
|
if (SWIFT_BUILD_STATIC_STDLIB AND SWIFTLIB_IS_STDLIB)
|
|
|
|
|
set(THIN_INPUT_TARGETS_STATIC)
|
|
|
|
|
foreach(TARGET ${THIN_INPUT_TARGETS})
|
|
|
|
|
list(APPEND THIN_INPUT_TARGETS_STATIC "${TARGET}-static")
|
|
|
|
|
endforeach()
|
|
|
|
|
|
|
|
|
|
set(lipo_target_static
|
|
|
|
|
"${name}-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-static")
|
|
|
|
|
set(UNIVERSAL_LIBRARY_NAME
|
|
|
|
|
"${SWIFTSTATICLIB_DIR}/${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}${name}${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
|
|
|
_add_swift_lipo_target(
|
|
|
|
|
${lipo_target_static}
|
|
|
|
|
"${UNIVERSAL_LIBRARY_NAME}"
|
|
|
|
|
${THIN_INPUT_TARGETS_STATIC})
|
|
|
|
|
swift_install_in_component("${SWIFTLIB_INSTALL_IN_COMPONENT}"
|
|
|
|
|
FILES "${UNIVERSAL_LIBRARY_NAME}"
|
|
|
|
|
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift_static/${resource_dir_sdk_subdir}"
|
|
|
|
|
PERMISSIONS
|
|
|
|
|
OWNER_READ OWNER_WRITE
|
|
|
|
|
GROUP_READ
|
|
|
|
|
WORLD_READ)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Add Swift standard library targets as dependencies to the top-level
|
|
|
|
|
# convenience target.
|
|
|
|
|
if(SWIFTLIB_TARGET_LIBRARY)
|
|
|
|
|
foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES})
|
|
|
|
|
set(VARIANT_SUFFIX "-${SWIFT_SDK_${sdk}_LIB_SUBDIR}-${arch}")
|
|
|
|
|
if(TARGET "swift-stdlib${VARIANT_SUFFIX}" AND TARGET "swift-test-stdlib${VARIANT_SUFFIX}")
|
|
|
|
|
add_dependencies("swift-stdlib${VARIANT_SUFFIX}"
|
|
|
|
|
${lipo_target}
|
|
|
|
|
${lipo_target_static})
|
|
|
|
|
if(NOT "${name}" STREQUAL "swiftStdlibCollectionUnittest")
|
|
|
|
|
add_dependencies("swift-test-stdlib${VARIANT_SUFFIX}"
|
|
|
|
|
${lipo_target}
|
|
|
|
|
${lipo_target_static})
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
endif()
|
|
|
|
|
endforeach()
|
|
|
|
|
else()
|
|
|
|
|
@@ -1328,6 +1344,7 @@ function(add_swift_library name)
|
|
|
|
|
LINK_FLAGS ${SWIFTLIB_LINK_FLAGS}
|
|
|
|
|
PRIVATE_LINK_LIBRARIES ${SWIFTLIB_PRIVATE_LINK_LIBRARIES}
|
|
|
|
|
INTERFACE_LINK_LIBRARIES ${SWIFTLIB_INTERFACE_LINK_LIBRARIES}
|
|
|
|
|
INCORPORATE_OBJECT_LIBRARIES ${SWIFTLIB_INCORPORATE_OBJECT_LIBRARIES}
|
|
|
|
|
${SWIFTLIB_DONT_EMBED_BITCODE_keyword}
|
|
|
|
|
${SWIFTLIB_API_NOTES_NON_OVERLAY_keyword}
|
|
|
|
|
${SWIFTLIB_IS_STDLIB_keyword}
|
|
|
|
|
|