CMake: use object libraries instead of repacking static archives

This commit is contained in:
Dmitri Gribenko
2016-06-01 02:30:17 -06:00
parent 540619e9de
commit d227aeb64d
6 changed files with 176 additions and 159 deletions

View File

@@ -1,5 +1,9 @@
cmake_minimum_required(VERSION 2.8.12) cmake_minimum_required(VERSION 2.8.12)
if(POLICY CMP0051)
cmake_policy(SET CMP0051 NEW)
endif()
# Add path for custom CMake modules. # Add path for custom CMake modules.
list(APPEND CMAKE_MODULE_PATH list(APPEND CMAKE_MODULE_PATH
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")

View File

@@ -41,6 +41,12 @@ function(add_dependencies_multiple_targets)
endif() endif()
endfunction() 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 # Compute the library subdirectory to use for the given sdk and
# architecture, placing the result in 'result_var_name'. # architecture, placing the result in 'result_var_name'.
function(compute_library_subdir result_var_name sdk arch) function(compute_library_subdir result_var_name sdk arch)
@@ -337,22 +343,6 @@ function(_add_swift_lipo_target target output)
endif() endif()
endfunction() 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. # Add a single variant of a new Swift library.
# #
# Usage: # Usage:
@@ -443,13 +433,13 @@ endfunction()
# Sources to add into this library # Sources to add into this library
function(_add_swift_library_single target name) function(_add_swift_library_single target name)
set(SWIFTLIB_SINGLE_options 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 TARGET_LIBRARY HOST_LIBRARY
API_NOTES_NON_OVERLAY DONT_EMBED_BITCODE) API_NOTES_NON_OVERLAY DONT_EMBED_BITCODE)
cmake_parse_arguments(SWIFTLIB_SINGLE cmake_parse_arguments(SWIFTLIB_SINGLE
"${SWIFTLIB_SINGLE_options}" "${SWIFTLIB_SINGLE_options}"
"SDK;ARCHITECTURE;INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_IOS" "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}) ${ARGN})
set(SWIFTLIB_SINGLE_SOURCES ${SWIFTLIB_SINGLE_UNPARSED_ARGUMENTS}) set(SWIFTLIB_SINGLE_SOURCES ${SWIFTLIB_SINGLE_UNPARSED_ARGUMENTS})
@@ -505,6 +495,8 @@ function(_add_swift_library_single target name)
if(MODULE) if(MODULE)
set(libkind MODULE) set(libkind MODULE)
elseif(SWIFTLIB_SINGLE_OBJECT_LIBRARY)
set(libkind OBJECT)
elseif(SWIFTLIB_SINGLE_SHARED) elseif(SWIFTLIB_SINGLE_SHARED)
set(libkind SHARED) set(libkind SHARED)
else() else()
@@ -576,10 +568,18 @@ function(_add_swift_library_single target name)
INSTALL_IN_COMPONENT "${SWIFTLIB_INSTALL_IN_COMPONENT}") INSTALL_IN_COMPONENT "${SWIFTLIB_INSTALL_IN_COMPONENT}")
add_swift_source_group("${SWIFTLIB_SINGLE_EXTERNAL_SOURCES}") 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} add_library("${target}" ${libkind}
${SWIFT_SECTIONS_OBJECT_BEGIN} ${SWIFT_SECTIONS_OBJECT_BEGIN}
${SWIFTLIB_SINGLE_SOURCES} ${SWIFTLIB_SINGLE_SOURCES}
${SWIFTLIB_SINGLE_EXTERNAL_SOURCES} ${SWIFTLIB_SINGLE_EXTERNAL_SOURCES}
${SWIFTLIB_INCORPORATED_OBJECT_LIBRARIES_EXPRESSIONS}
${SWIFT_SECTIONS_OBJECT_END}) ${SWIFT_SECTIONS_OBJECT_END})
# The section metadata objects are generated sources, and we need to tell CMake # 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. # library.
add_library(${target_static} STATIC add_library(${target_static} STATIC
${SWIFTLIB_SINGLE_SOURCES} ${SWIFTLIB_SINGLE_SOURCES}
${SWIFTLIB_INCORPORATED_OBJECT_LIBRARIES_EXPRESSIONS}
# Note: the dummy.c source file provides no definitions. However, # Note: the dummy.c source file provides no definitions. However,
# it forces Xcode to properly link the static library. # it forces Xcode to properly link the static library.
@@ -728,6 +729,10 @@ function(_add_swift_library_single target name)
if("${libkind}" STREQUAL "SHARED") if("${libkind}" STREQUAL "SHARED")
target_link_libraries("${target}" PRIVATE ${SWIFTLIB_SINGLE_LINK_LIBRARIES}) 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() else()
target_link_libraries("${target}" INTERFACE ${SWIFTLIB_SINGLE_LINK_LIBRARIES}) target_link_libraries("${target}" INTERFACE ${SWIFTLIB_SINGLE_LINK_LIBRARIES})
endif() endif()
@@ -763,7 +768,10 @@ function(_add_swift_library_single target name)
endforeach() endforeach()
endforeach() endforeach()
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}) swift_common_llvm_config("${target}" ${SWIFTLIB_SINGLE_COMPONENT_DEPENDS})
endif()
# Collect compile and link flags for the static and non-static targets. # Collect compile and link flags for the static and non-static targets.
# Don't set PROPERTY COMPILE_FLAGS or LINK_FLAGS directly. # 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}") COMPILE_FLAGS " ${c_compile_flags}")
set_property(TARGET "${target}" APPEND_STRING PROPERTY 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}") 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}")
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 target_link_libraries("${target}" PRIVATE
${SWIFTLIB_SINGLE_PRIVATE_LINK_LIBRARIES}) ${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 target_link_libraries("${target}" INTERFACE
${SWIFTLIB_SINGLE_INTERFACE_LINK_LIBRARIES}) ${SWIFTLIB_SINGLE_INTERFACE_LINK_LIBRARIES})
endif()
set_property(TARGET "${target}" PROPERTY set_property(TARGET "${target}" PROPERTY
LINKER_LANGUAGE "CXX") 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}") 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 target_link_libraries("${target_static}" PRIVATE
${SWIFTLIB_SINGLE_PRIVATE_LINK_LIBRARIES}) ${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() endif()
# Do not add code here. # Do not add code here.
@@ -982,13 +992,13 @@ endfunction()
# Sources to add into this library. # Sources to add into this library.
function(add_swift_library name) function(add_swift_library name)
set(SWIFTLIB_options 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 TARGET_LIBRARY HOST_LIBRARY
API_NOTES_NON_OVERLAY DONT_EMBED_BITCODE HAS_SWIFT_CONTENT) API_NOTES_NON_OVERLAY DONT_EMBED_BITCODE HAS_SWIFT_CONTENT)
cmake_parse_arguments(SWIFTLIB cmake_parse_arguments(SWIFTLIB
"${SWIFTLIB_options}" "${SWIFTLIB_options}"
"INSTALL_IN_COMPONENT;DEPLOYMENT_VERSION_IOS" "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}) ${ARGN})
set(SWIFTLIB_SOURCES ${SWIFTLIB_UNPARSED_ARGUMENTS}) set(SWIFTLIB_SOURCES ${SWIFTLIB_UNPARSED_ARGUMENTS})
@@ -1150,6 +1160,7 @@ function(add_swift_library name)
${VARIANT_NAME} ${VARIANT_NAME}
${name} ${name}
${SWIFTLIB_SHARED_keyword} ${SWIFTLIB_SHARED_keyword}
${SWIFTLIB_OBJECT_LIBRARY_keyword}
${SWIFTLIB_SOURCES} ${SWIFTLIB_SOURCES}
SDK ${sdk} SDK ${sdk}
ARCHITECTURE ${arch} ARCHITECTURE ${arch}
@@ -1163,6 +1174,7 @@ function(add_swift_library name)
SWIFT_COMPILE_FLAGS ${swiftlib_swift_compile_flags_all} SWIFT_COMPILE_FLAGS ${swiftlib_swift_compile_flags_all}
LINK_FLAGS ${SWIFTLIB_LINK_FLAGS} LINK_FLAGS ${SWIFTLIB_LINK_FLAGS}
PRIVATE_LINK_LIBRARIES ${swiftlib_private_link_libraries_targets} PRIVATE_LINK_LIBRARIES ${swiftlib_private_link_libraries_targets}
INCORPORATE_OBJECT_LIBRARIES ${SWIFTLIB_INCORPORATE_OBJECT_LIBRARIES}
${SWIFTLIB_DONT_EMBED_BITCODE_keyword} ${SWIFTLIB_DONT_EMBED_BITCODE_keyword}
${SWIFTLIB_API_NOTES_NON_OVERLAY_keyword} ${SWIFTLIB_API_NOTES_NON_OVERLAY_keyword}
${SWIFTLIB_IS_STDLIB_keyword} ${SWIFTLIB_IS_STDLIB_keyword}
@@ -1174,6 +1186,7 @@ function(add_swift_library name)
DEPLOYMENT_VERSION_IOS "${SWIFTLIB_DEPLOYMENT_VERSION_IOS}" DEPLOYMENT_VERSION_IOS "${SWIFTLIB_DEPLOYMENT_VERSION_IOS}"
) )
if(NOT SWIFTLIB_OBJECT_LIBRARY)
# Add dependencies on the (not-yet-created) custom lipo target. # Add dependencies on the (not-yet-created) custom lipo target.
foreach(DEP ${SWIFTLIB_LINK_LIBRARIES}) foreach(DEP ${SWIFTLIB_LINK_LIBRARIES})
if (NOT "${DEP}" STREQUAL "icucore") if (NOT "${DEP}" STREQUAL "icucore")
@@ -1194,8 +1207,10 @@ function(add_swift_library name)
# Note this thin library. # Note this thin library.
list(APPEND THIN_INPUT_TARGETS ${VARIANT_NAME}) list(APPEND THIN_INPUT_TARGETS ${VARIANT_NAME})
endif()
endforeach() endforeach()
if(NOT SWIFTLIB_OBJECT_LIBRARY)
# Determine the name of the universal library. # Determine the name of the universal library.
if(SWIFTLIB_SHARED) if(SWIFTLIB_SHARED)
set(UNIVERSAL_LIBRARY_NAME set(UNIVERSAL_LIBRARY_NAME
@@ -1289,6 +1304,7 @@ function(add_swift_library name)
endif() endif()
endforeach() endforeach()
endif() endif()
endif()
endforeach() endforeach()
else() else()
set(sdk "${SWIFT_HOST_VARIANT_SDK}") set(sdk "${SWIFT_HOST_VARIANT_SDK}")
@@ -1328,6 +1344,7 @@ function(add_swift_library name)
LINK_FLAGS ${SWIFTLIB_LINK_FLAGS} LINK_FLAGS ${SWIFTLIB_LINK_FLAGS}
PRIVATE_LINK_LIBRARIES ${SWIFTLIB_PRIVATE_LINK_LIBRARIES} PRIVATE_LINK_LIBRARIES ${SWIFTLIB_PRIVATE_LINK_LIBRARIES}
INTERFACE_LINK_LIBRARIES ${SWIFTLIB_INTERFACE_LINK_LIBRARIES} INTERFACE_LINK_LIBRARIES ${SWIFTLIB_INTERFACE_LINK_LIBRARIES}
INCORPORATE_OBJECT_LIBRARIES ${SWIFTLIB_INCORPORATE_OBJECT_LIBRARIES}
${SWIFTLIB_DONT_EMBED_BITCODE_keyword} ${SWIFTLIB_DONT_EMBED_BITCODE_keyword}
${SWIFTLIB_API_NOTES_NON_OVERLAY_keyword} ${SWIFTLIB_API_NOTES_NON_OVERLAY_keyword}
${SWIFTLIB_IS_STDLIB_keyword} ${SWIFTLIB_IS_STDLIB_keyword}

View File

@@ -143,7 +143,6 @@ set(swift_core_private_link_libraries)
set(swift_stdlib_compile_flags) set(swift_stdlib_compile_flags)
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
list(APPEND swift_core_link_flags "-all_load") list(APPEND swift_core_link_flags "-all_load")
list(APPEND swift_core_private_link_libraries swiftRuntime swiftStdlibStubs)
list(APPEND swift_core_framework_depends Foundation) list(APPEND swift_core_framework_depends Foundation)
list(APPEND swift_core_framework_depends CoreFoundation) list(APPEND swift_core_framework_depends CoreFoundation)
else() else()
@@ -158,10 +157,11 @@ else()
# effort has been completed. # effort has been completed.
#set(LINK_FLAGS #set(LINK_FLAGS
# -Wl,--whole-archive swiftRuntime -Wl,--no-whole-archive) # -Wl,--whole-archive swiftRuntime -Wl,--no-whole-archive)
list(APPEND swift_core_private_link_libraries swiftRuntime swiftStdlibStubs)
find_package(ICU REQUIRED COMPONENTS uc i18n) find_package(ICU REQUIRED COMPONENTS uc i18n)
list(APPEND swift_core_private_link_libraries list(APPEND swift_core_private_link_libraries
${ICU_UC_LIBRARY} ${ICU_I18N_LIBRARY}) ${ICU_UC_LIBRARY} ${ICU_I18N_LIBRARY})
include_directories(
${ICU_UC_INCLUDE_DIR} ${ICU_I18N_INCLUDE_DIR})
endif() endif()
if(CMAKE_SYSTEM_NAME STREQUAL "CYGWIN") if(CMAKE_SYSTEM_NAME STREQUAL "CYGWIN")
@@ -205,5 +205,6 @@ add_swift_library(swiftCore SHARED IS_STDLIB IS_STDLIB_CORE
SWIFT_COMPILE_FLAGS ${swift_stdlib_compile_flags} SWIFT_COMPILE_FLAGS ${swift_stdlib_compile_flags}
LINK_FLAGS ${swift_core_link_flags} LINK_FLAGS ${swift_core_link_flags}
PRIVATE_LINK_LIBRARIES ${swift_core_private_link_libraries} PRIVATE_LINK_LIBRARIES ${swift_core_private_link_libraries}
INCORPORATE_OBJECT_LIBRARIES swiftRuntime swiftStdlibStubs
FRAMEWORK_DEPENDS ${swift_core_framework_depends} FRAMEWORK_DEPENDS ${swift_core_framework_depends}
INSTALL_IN_COMPONENT stdlib) INSTALL_IN_COMPONENT stdlib)

View File

@@ -65,7 +65,7 @@ set(LLVM_OPTIONAL_SOURCES
${swift_runtime_objc_sources} ${swift_runtime_objc_sources}
${swift_runtime_leaks_sources}) ${swift_runtime_leaks_sources})
add_swift_library(swiftRuntime IS_STDLIB IS_STDLIB_CORE add_swift_library(swiftRuntime OBJECT_LIBRARY TARGET_LIBRARY
${swift_runtime_sources} ${swift_runtime_sources}
${swift_runtime_objc_sources} ${swift_runtime_objc_sources}
${swift_runtime_leaks_sources} ${swift_runtime_leaks_sources}

View File

@@ -1,6 +1,5 @@
set(swift_stubs_objc_sources) set(swift_stubs_objc_sources)
set(swift_stubs_unicode_normalization_sources) set(swift_stubs_unicode_normalization_sources)
set(swift_stubs_link_libraries)
if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}") if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
set(swift_stubs_objc_sources set(swift_stubs_objc_sources
@@ -10,16 +9,11 @@ if(SWIFT_HOST_VARIANT MATCHES "${SWIFT_DARWIN_VARIANTS}")
set(LLVM_OPTIONAL_SOURCES set(LLVM_OPTIONAL_SOURCES
UnicodeNormalization.cpp) UnicodeNormalization.cpp)
else() else()
find_package(ICU REQUIRED COMPONENTS uc i18n)
set(swift_stubs_unicode_normalization_sources set(swift_stubs_unicode_normalization_sources
UnicodeNormalization.cpp) UnicodeNormalization.cpp)
set(swift_stubs_link_libraries
${ICU_UC_LIBRARY} ${ICU_I18N_LIBRARY})
include_directories(
${ICU_UC_INCLUDE_DIR} ${ICU_I18N_INCLUDE_DIR})
endif() endif()
add_swift_library(swiftStdlibStubs IS_STDLIB IS_STDLIB_CORE add_swift_library(swiftStdlibStubs OBJECT_LIBRARY TARGET_LIBRARY
Assert.cpp Assert.cpp
GlobalObjects.cpp GlobalObjects.cpp
LibcShims.cpp LibcShims.cpp

View File

@@ -13,7 +13,6 @@ if(("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "${SWIFT_PRIMARY_VARIANT_SDK}") AND
# some stdlib hooks to implement SwiftObject. # some stdlib hooks to implement SwiftObject.
list(APPEND PLATFORM_TARGET_LINK_LIBRARIES list(APPEND PLATFORM_TARGET_LINK_LIBRARIES
${FOUNDATION_LIBRARY} ${FOUNDATION_LIBRARY}
swiftCore${SWIFT_PRIMARY_VARIANT_SUFFIX}
swiftStdlibUnittest${SWIFT_PRIMARY_VARIANT_SUFFIX} swiftStdlibUnittest${SWIFT_PRIMARY_VARIANT_SUFFIX}
) )
elseif(SWIFT_HOST_VARIANT STREQUAL "freebsd") elseif(SWIFT_HOST_VARIANT STREQUAL "freebsd")
@@ -29,14 +28,16 @@ if(("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "${SWIFT_PRIMARY_VARIANT_SDK}") AND
Enum.cpp Enum.cpp
Refcounting.cpp Refcounting.cpp
${PLATFORM_SOURCES} ${PLATFORM_SOURCES}
)
# The runtime tests link to internal runtime symbols, which aren't exported # The runtime tests link to internal runtime symbols, which aren't exported
# from the swiftCore dylib, so we need to link to both the runtime archive # from the swiftCore dylib, so we need to link to both the runtime archive
# and the stdlib. # and the stdlib.
$<TARGET_OBJECTS:swiftRuntime${SWIFT_PRIMARY_VARIANT_SUFFIX}>
)
# FIXME: cross-compile for all variants. # FIXME: cross-compile for all variants.
target_link_libraries(SwiftRuntimeTests target_link_libraries(SwiftRuntimeTests
swiftRuntime${SWIFT_PRIMARY_VARIANT_SUFFIX} swiftCore${SWIFT_PRIMARY_VARIANT_SUFFIX}
${PLATFORM_TARGET_LINK_LIBRARIES} ${PLATFORM_TARGET_LINK_LIBRARIES}
) )
endif() endif()