mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
146 lines
4.9 KiB
CMake
146 lines
4.9 KiB
CMake
#===--- CMakeLists.txt - Back-deployed concurrency support library -------===#
|
|
#
|
|
# This source file is part of the Swift.org open source project
|
|
#
|
|
# Copyright (c) 2021 Apple Inc. and the Swift project authors
|
|
# Licensed under Apache License v2.0 with Runtime Library Exception
|
|
#
|
|
# See https://swift.org/LICENSE.txt for license information
|
|
# See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
#
|
|
#===----------------------------------------------------------------------===#
|
|
|
|
cmake_minimum_required(VERSION 3.19.6)
|
|
|
|
# This is always built standalone
|
|
include("${CMAKE_CURRENT_SOURCE_DIR}/../../../cmake/modules/StandaloneOverlay.cmake")
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/modules")
|
|
set(SWIFT_STDLIB_STABLE_ABI TRUE)
|
|
set(SWIFT_STDLIB_SINGLE_THREADED_CONCURRENCY FALSE)
|
|
set(SWIFT_CONCURRENCY_GLOBAL_EXECUTOR "dispatch")
|
|
include(AddSwiftStdlib)
|
|
|
|
# Don't build the libraries for 32-bit iOS targets; there is no back-deployment
|
|
# to them.
|
|
list(REMOVE_ITEM SWIFT_SDK_IOS_ARCHITECTURES "armv7" "armv7s")
|
|
list(REMOVE_ITEM SWIFT_SDK_IOS_SIMULATOR_ARCHITECTURES "i386")
|
|
|
|
# Don't build the libraries for arm64e; it's not a stable ABI.
|
|
list(REMOVE_ITEM SWIFT_SDK_IOS_ARCHITECTURES "arm64e")
|
|
list(REMOVE_ITEM SWIFT_SDK_OSX_ARCHITECTURES "arm64e")
|
|
|
|
# Don't build the libraries for 64-bit watchOS targets;
|
|
# there is no back-deployment to them.
|
|
list(REMOVE_ITEM SWIFT_SDK_WATCHOS_ARCHITECTURES "arm64" "arm64e")
|
|
|
|
# The back-deployed library can only be shared.
|
|
list(APPEND SWIFT_STDLIB_LIBRARY_BUILD_TYPES SHARED)
|
|
|
|
# Link against the libswiftCore in the SDK. This intentionally avoids using
|
|
# the locally-built libswiftCore.
|
|
foreach(sdk ${SWIFT_SDKS})
|
|
set(sdk_name ${SWIFT_SDK_${sdk}_LIB_SUBDIR})
|
|
set(swift_core_target "swiftCore-${sdk_name}")
|
|
add_library(${swift_core_target} SHARED IMPORTED GLOBAL)
|
|
set_property(TARGET ${swift_core_target}
|
|
PROPERTY IMPORTED_LOCATION "${SWIFT_SDK_${sdk}_PUBLIC_PATH}/usr/lib/swift/libswiftCore.tbd")
|
|
foreach(arch in ${SWIFT_SDK_${sdk}_ARCHITECTURES})
|
|
add_library("${swift_core_target}-${arch}" ALIAS "${swift_core_target}")
|
|
endforeach()
|
|
endforeach()
|
|
|
|
# Build the concurrency library for back deployment.
|
|
add_compile_definitions(SWIFT_CONCURRENCY_BACK_DEPLOYMENT)
|
|
set(swift_concurrency_install_component back-deployment)
|
|
set(swift_concurrency_options
|
|
BACK_DEPLOYMENT_LIBRARY 5.5
|
|
DARWIN_INSTALL_NAME_DIR "@rpath"
|
|
LINK_FLAGS -lobjc)
|
|
set(swift_concurrency_extra_sources
|
|
"Exclusivity.cpp"
|
|
"Metadata.cpp"
|
|
"../stubs/SwiftNativeNSObject.mm")
|
|
set(swift_concurrency_async_fp_mode "never")
|
|
|
|
set(SWIFT_RUNTIME_CONCURRENCY_C_FLAGS)
|
|
set(SWIFT_RUNTIME_CONCURRENCY_SWIFT_FLAGS)
|
|
|
|
# Don't emit extended frame info on platforms other than darwin, system
|
|
# backtracer and system debugger are unlikely to support it.
|
|
list(APPEND SWIFT_RUNTIME_CONCURRENCY_C_FLAGS
|
|
"-fswift-async-fp=${swift_concurrency_async_fp_mode}")
|
|
list(APPEND SWIFT_RUNTIME_CONCURRENCY_SWIFT_FLAGS
|
|
"-Xfrontend"
|
|
"-swift-async-frame-pointer=${swift_concurrency_async_fp_mode}")
|
|
|
|
list(APPEND SWIFT_RUNTIME_CONCURRENCY_C_FLAGS
|
|
"-D__STDC_WANT_LIB_EXT1__=1")
|
|
|
|
add_swift_target_library(swift_Concurrency ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STDLIB
|
|
CompatibilityOverride.cpp
|
|
Actor.cpp
|
|
Actor.swift
|
|
AsyncLet.cpp
|
|
AsyncLet.swift
|
|
CheckedContinuation.swift
|
|
GlobalExecutor.cpp
|
|
Errors.swift
|
|
Error.cpp
|
|
Executor.swift
|
|
AsyncCompactMapSequence.swift
|
|
AsyncDropFirstSequence.swift
|
|
AsyncDropWhileSequence.swift
|
|
AsyncFilterSequence.swift
|
|
AsyncFlatMapSequence.swift
|
|
AsyncIteratorProtocol.swift
|
|
AsyncMapSequence.swift
|
|
AsyncPrefixSequence.swift
|
|
AsyncPrefixWhileSequence.swift
|
|
AsyncSequence.swift
|
|
AsyncThrowingCompactMapSequence.swift
|
|
AsyncThrowingDropWhileSequence.swift
|
|
AsyncThrowingFilterSequence.swift
|
|
AsyncThrowingFlatMapSequence.swift
|
|
AsyncThrowingMapSequence.swift
|
|
AsyncThrowingPrefixWhileSequence.swift
|
|
ConditionVariable.cpp
|
|
GlobalActor.swift
|
|
MainActor.swift
|
|
PartialAsyncTask.swift
|
|
SourceCompatibilityShims.swift
|
|
Task.cpp
|
|
Task.swift
|
|
TaskCancellation.swift
|
|
TaskAlloc.cpp
|
|
TaskStatus.cpp
|
|
TaskGroup.cpp
|
|
TaskGroup.swift
|
|
TaskLocal.cpp
|
|
TaskLocal.swift
|
|
TaskSleep.swift
|
|
ThreadSanitizer.cpp
|
|
ThreadingError.cpp
|
|
AsyncStreamBuffer.swift
|
|
AsyncStream.swift
|
|
AsyncThrowingStream.swift
|
|
AsyncStream.cpp
|
|
Deque.swift
|
|
${swift_concurrency_extra_sources}
|
|
../Concurrency/linker-support/magic-symbols-for-install-name.c
|
|
|
|
INCORPORATE_OBJECT_LIBRARIES_SHARED_ONLY
|
|
swiftThreading
|
|
LINK_LIBRARIES ${swift_concurrency_link_libraries}
|
|
|
|
C_COMPILE_FLAGS
|
|
-Dswift_Concurrency_EXPORTS ${SWIFT_RUNTIME_CONCURRENCY_C_FLAGS}
|
|
-I${SWIFT_SOURCE_DIR}/stdlib/include
|
|
SWIFT_COMPILE_FLAGS
|
|
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
|
|
-parse-stdlib
|
|
-Xfrontend -enable-experimental-concurrency
|
|
${SWIFT_RUNTIME_CONCURRENCY_SWIFT_FLAGS}
|
|
${swift_concurrency_options}
|
|
INSTALL_IN_COMPONENT ${swift_concurrency_install_component}
|
|
)
|