Files
swift-mirror/stdlib/public/BackDeployConcurrency/CMakeLists.txt
2022-10-21 15:15:54 -07:00

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}
)