mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Runtimes: allow to link SwiftDirectRetainRelease in swiftCore
At the moment we are not building that natively in the new build system, so find the copy built by the legacy one using a find module. Keep this disabled for the time being. Addresses rdar://164174616
This commit is contained in:
@@ -109,6 +109,7 @@ defaulted_option(SwiftCore_ENABLE_BACKDEPLOYMENT_SUPPORT "Add symbols for runtim
|
||||
defaulted_option(SwiftCore_ENABLE_STDLIB_TRACING "Enable tracing in the runtime. Assumes the presence of os_log(3) and the os_signpost(3) API.")
|
||||
defaulted_option(SwiftCore_ENABLE_CONCURRENCY "Enable Concurrency runtime support")
|
||||
defaulted_option(SwiftCore_ENABLE_REMOTE_MIRROR "Enable RemoteMirror runtime support")
|
||||
defaulted_option(SwiftCore_ENABLE_DIRECT_RETAIN_RELEASE "Use direct retain release in the runtime/stdlib")
|
||||
defaulted_set(SwiftCore_CONCURRENCY_GLOBAL_EXECUTOR STRING "Default Concurrency global executor implementation")
|
||||
option(SwiftCore_ENABLE_COMMANDLINE_SUPPORT "Enable command line argument support" ON)
|
||||
option(SwiftCore_ENABLE_UNICODE_DATA "Include unicode data in Swift runtimes" ON)
|
||||
@@ -196,6 +197,11 @@ add_compile_options(
|
||||
"$<$<AND:$<BOOL:${SwiftCore_ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>"
|
||||
"$<$<AND:$<BOOL:${SwiftCore_ENABLE_PRESPECIALIZATION}>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -prespecialize-generic-metadata>")
|
||||
|
||||
if(SwiftCore_ENABLE_DIRECT_RETAIN_RELEASE)
|
||||
find_package(SwiftSwiftDirectRuntime REQUIRED)
|
||||
add_compile_options("$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -enable-direct-retain-release>")
|
||||
endif()
|
||||
|
||||
include(ExperimentalFeatures)
|
||||
|
||||
include_directories(include)
|
||||
|
||||
@@ -139,6 +139,7 @@ target_link_libraries(swift_Concurrency PRIVATE
|
||||
$<$<PLATFORM_ID:Android>:log>
|
||||
$<$<PLATFORM_ID:Windows>:Synchronization>
|
||||
$<$<PLATFORM_ID:Windows>:mincore>
|
||||
$<$<BOOL:${SwiftSwiftDirectRuntime_FOUND}>:swiftSwiftDirectRuntime>
|
||||
# Link to the runtime that we are just building.
|
||||
swiftCore)
|
||||
set_target_properties(swift_Concurrency PROPERTIES
|
||||
|
||||
@@ -337,6 +337,7 @@ target_link_libraries(swiftCore
|
||||
swiftStdlibStubs
|
||||
swiftThreading
|
||||
$<$<NOT:$<PLATFORM_ID:Darwin>>:swiftrt$<$<PLATFORM_ID:Windows>:T>>
|
||||
$<$<BOOL:${SwiftSwiftDirectRuntime_FOUND}>:swiftSwiftDirectRuntime>
|
||||
PUBLIC
|
||||
swiftShims
|
||||
INTERFACE
|
||||
|
||||
@@ -29,7 +29,8 @@ target_compile_definitions(swiftSwiftOnoneSupport PRIVATE
|
||||
target_link_libraries(swiftSwiftOnoneSupport
|
||||
PRIVATE
|
||||
swiftShims
|
||||
swiftCore)
|
||||
swiftCore
|
||||
$<$<BOOL:${SwiftSwiftDirectRuntime_FOUND}>:swiftSwiftDirectRuntime>)
|
||||
|
||||
install(TARGETS swiftSwiftOnoneSupport
|
||||
EXPORT SwiftCoreTargets
|
||||
|
||||
@@ -6,3 +6,5 @@ set(SwiftCore_ENABLE_LIBRARY_EVOLUTION @SwiftCore_ENABLE_LIBRARY_EVOLUTION@)
|
||||
set(SwiftCore_ENABLE_VECTOR_TYPES @SwiftCore_ENABLE_VECTOR_TYPES@)
|
||||
|
||||
set(SwiftCore_ENABLE_BACKDEPLOYMENT_SUPPORT @SwiftCore_ENABLE_BACKDEPLOYMENT_SUPPORT@)
|
||||
|
||||
set(SwiftCore_ENABLE_DIRECT_RETAIN_RELEASE @SwiftCore_ENABLE_DIRECT_RETAIN_RELEASE@)
|
||||
|
||||
@@ -46,12 +46,15 @@ if(APPLE)
|
||||
set(SwiftCore_THREADING_PACKAGE_default "DARWIN")
|
||||
set(SwiftCore_ENABLE_PRESPECIALIZATION_default ON)
|
||||
set(SwiftCore_CONCURRENCY_GLOBAL_EXECUTOR_default "dispatch")
|
||||
# TODO we are not ready to enable it here
|
||||
set(SwiftCore_ENABLE_DIRECT_RETAIN_RELEASE_default OFF)
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "WASM")
|
||||
set(SwiftCore_OBJECT_FORMAT_default "elf")
|
||||
set(SwiftCore_THREADING_PACKAGE_default "NONE")
|
||||
set(SwiftCore_ENABLE_CONCURRENCY_default NO)
|
||||
set(SwiftCore_ENABLE_REMOTE_MIRROR_default NO)
|
||||
set(SwiftCore_CONCURRENCY_GLOBAL_EXECUTOR_default "none")
|
||||
set(SwiftCore_ENABLE_DIRECT_RETAIN_RELEASE_default OFF)
|
||||
elseif(LINUX OR ANDROID OR BSD)
|
||||
set(SwiftCore_OBJECT_FORMAT_default "elf")
|
||||
|
||||
@@ -66,6 +69,7 @@ elseif(LINUX OR ANDROID OR BSD)
|
||||
set(SwiftCore_ENABLE_CONCURRENCY_default NO)
|
||||
set(SwiftCore_ENABLE_REMOTE_MIRROR_default NO)
|
||||
set(SwiftCore_CONCURRENCY_GLOBAL_EXECUTOR_default "dispatch")
|
||||
set(SwiftCore_ENABLE_DIRECT_RETAIN_RELEASE_default OFF)
|
||||
elseif(WIN32)
|
||||
set(SwiftCore_OBJECT_FORMAT_default "coff")
|
||||
|
||||
@@ -80,6 +84,7 @@ elseif(WIN32)
|
||||
# errors
|
||||
set(SwiftCore_ENABLE_PRESPECIALIZATION_default OFF)
|
||||
set(SwiftCore_CONCURRENCY_GLOBAL_EXECUTOR_default "dispatch")
|
||||
set(SwiftCore_ENABLE_DIRECT_RETAIN_RELEASE_default OFF)
|
||||
|
||||
set(SwiftCore_ENABLE_VECTOR_TYPES_default ON)
|
||||
set(SwiftCore_ENABLE_FILESYSTEM_SUPPORT_default ON)
|
||||
|
||||
74
Runtimes/cmake/modules/FindSwiftSwiftDirectRuntime.cmake
Normal file
74
Runtimes/cmake/modules/FindSwiftSwiftDirectRuntime.cmake
Normal file
@@ -0,0 +1,74 @@
|
||||
#[=======================================================================[.rst:
|
||||
FindSwiftSwiftDirectRuntime
|
||||
------------
|
||||
|
||||
Find swiftSwiftDirectRuntime, deferring to the associated SwiftSwiftDirectRuntimeConfig.cmake when requested.
|
||||
This is meant to be linked in swiftCore.
|
||||
|
||||
Imported Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
The following :prop_tgt:`IMPORTED` TARGETS may be defined:
|
||||
|
||||
``swiftSwiftDirectRuntime``
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
include_guard(GLOBAL)
|
||||
|
||||
if(SwiftSwiftDirectRuntime_DIR)
|
||||
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_REQUIRED)
|
||||
list(APPEND args REQUIRED)
|
||||
endif()
|
||||
if(${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
|
||||
list(APPEND args QUIET)
|
||||
endif()
|
||||
find_package(SwiftSwiftDirectRuntime CONFIG ${args})
|
||||
return()
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
include(PlatformInfo)
|
||||
|
||||
if(APPLE)
|
||||
# SwiftDirectRuntime is not installed in the SDKs, but in the
|
||||
# toolchain next to the compiler
|
||||
set(target_info_command "${CMAKE_Swift_COMPILER}" -print-target-info)
|
||||
if(CMAKE_Swift_COMPILER_TARGET)
|
||||
list(APPEND target_info_command -target ${CMAKE_Swift_COMPILER_TARGET})
|
||||
endif()
|
||||
execute_process(COMMAND ${target_info_command} OUTPUT_VARIABLE target_info_json)
|
||||
message(CONFIGURE_LOG "Swift target info: ${target_info_command}\n"
|
||||
"${target_info_json}")
|
||||
|
||||
string(JSON runtime_library_import_paths_json GET "${target_info_json}" "paths" "runtimeLibraryImportPaths")
|
||||
message(CONFIGURE_LOG "runtime_library_import_paths_json ${runtime_library_import_paths_json}")
|
||||
|
||||
string(JSON number_of_runtime_library_import_paths LENGTH "${runtime_library_import_paths_json}")
|
||||
math(EXPR index_of_last_runtime_library_import_path "${number_of_runtime_library_import_paths} - 1")
|
||||
foreach(index RANGE 0 ${index_of_last_runtime_library_import_path})
|
||||
string(JSON runtime_library_import_path GET "${runtime_library_import_paths_json}" ${index})
|
||||
|
||||
list(APPEND swiftSwiftDirectRuntime_LIBRARY_HINTS
|
||||
"${runtime_library_import_path}")
|
||||
endforeach()
|
||||
|
||||
list(APPEND swiftSwiftDirectRuntime_NAMES libswiftSwiftDirectRuntime.a)
|
||||
else()
|
||||
message(WARNING "SwiftDirectRuntime is only available for Apple platforms at the moment.\n")
|
||||
return()
|
||||
endif()
|
||||
|
||||
find_library(swiftSwiftDirectRuntime_LIBRARY
|
||||
NAMES
|
||||
${swiftSwiftDirectRuntime_NAMES}
|
||||
NO_CMAKE_FIND_ROOT_PATH
|
||||
HINTS
|
||||
${swiftSwiftDirectRuntime_LIBRARY_HINTS})
|
||||
|
||||
add_library(swiftSwiftDirectRuntime STATIC IMPORTED GLOBAL)
|
||||
set_target_properties(swiftSwiftDirectRuntime PROPERTIES
|
||||
IMPORTED_LOCATION "${swiftSwiftDirectRuntime_LIBRARY}")
|
||||
|
||||
find_package_handle_standard_args(SwiftSwiftDirectRuntime DEFAULT_MSG
|
||||
swiftSwiftDirectRuntime_LIBRARY)
|
||||
Reference in New Issue
Block a user