mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
If you use SwiftStdlibCurrentOS availability, you will be able to use new types and functions from within the implementation. This works by, when appropriate, building with the CurrentOS availability set to the current deployment target. rdar://150944675
196 lines
5.8 KiB
CMake
196 lines
5.8 KiB
CMake
#===--- CMakeLists.txt - Synchronization library ---------------------------===#
|
|
#
|
|
# This source file is part of the Swift.org open source project
|
|
#
|
|
# Copyright (c) 2023 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
|
|
#
|
|
#===----------------------------------------------------------------------===#
|
|
|
|
set(SWIFT_SYNCHRONIZATION_ATOMIC_SOURCES
|
|
Atomics/Atomic.swift
|
|
Atomics/AtomicBool.swift
|
|
Atomics/AtomicFloats.swift
|
|
Atomics/AtomicLazyReference.swift
|
|
Atomics/AtomicMemoryOrderings.swift
|
|
Atomics/AtomicOptional.swift
|
|
Atomics/AtomicPointers.swift
|
|
Atomics/AtomicRepresentable.swift
|
|
Atomics/WordPair.swift
|
|
)
|
|
|
|
set(SWIFT_SYNCHRONIZATION_SOURCES
|
|
${SWIFT_SYNCHRONIZATION_ATOMIC_SOURCES}
|
|
|
|
Cell.swift
|
|
)
|
|
|
|
set(SWIFT_SYNCHRONIZATION_GYB_SOURCES
|
|
Atomics/AtomicIntegers.swift.gyb
|
|
Atomics/AtomicStorage.swift.gyb
|
|
)
|
|
|
|
# Darwin dependencies and sources
|
|
|
|
set(SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES)
|
|
|
|
if(SWIFT_BUILD_SDK_OVERLAY)
|
|
set(SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES Darwin)
|
|
endif()
|
|
|
|
if((SWIFT_BUILD_CLANG_OVERLAYS
|
|
OR SWIFT_BUILD_TEST_SUPPORT_MODULES)
|
|
AND (NOT DEFINED SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT
|
|
OR NOT SWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT))
|
|
# We need to make this dependency explicit because this library
|
|
# imports Darwin and Darwin re-exports _Builtin_float,
|
|
# but in most configurations we pull Darwin from the SDK,
|
|
# meaning we specify no Darwin dependency in the build system
|
|
list(APPEND SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES _Builtin_float)
|
|
endif()
|
|
|
|
set(SWIFT_SYNCHRONIZATION_DARWIN_SOURCES
|
|
Mutex/DarwinImpl.swift
|
|
Mutex/Mutex.swift
|
|
)
|
|
|
|
# Linux and Android sources
|
|
|
|
set(SWIFT_SYNCHRONIZATION_LINUX_SOURCES
|
|
Mutex/LinuxImpl.swift
|
|
Mutex/Mutex.swift
|
|
Mutex/SpinLoopHint.swift
|
|
)
|
|
|
|
# Wasm sources
|
|
|
|
set(SWIFT_SYNCHRONIZATION_WASM_SOURCES
|
|
Mutex/Mutex.swift
|
|
Mutex/WasmImpl.swift
|
|
)
|
|
|
|
# Windows sources
|
|
|
|
set(SWIFT_SYNCHRONIZATION_WINDOWS_SOURCES
|
|
Mutex/Mutex.swift
|
|
Mutex/WindowsImpl.swift
|
|
)
|
|
|
|
set(SWIFT_SYNCHRNOIZATION_SWIFT_FLAGS
|
|
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
|
|
"-enable-builtin-module"
|
|
"-enable-experimental-feature" "RawLayout"
|
|
"-enable-experimental-feature" "StaticExclusiveOnly"
|
|
"-enable-experimental-feature" "Extern"
|
|
"-strict-memory-safety"
|
|
)
|
|
|
|
add_swift_target_library(swiftSynchronization ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_STDLIB IMPORTS_NON_OSSA
|
|
${SWIFT_SYNCHRONIZATION_SOURCES}
|
|
|
|
GYB_SOURCES
|
|
${SWIFT_SYNCHRONIZATION_GYB_SOURCES}
|
|
|
|
SWIFT_SOURCES_DEPENDS_MACOS
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_SOURCES}
|
|
SWIFT_SOURCES_DEPENDS_IOS
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_SOURCES}
|
|
SWIFT_SOURCES_DEPENDS_TVOS
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_SOURCES}
|
|
SWIFT_SOURCES_DEPENDS_WATCHOS
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_SOURCES}
|
|
SWIFT_SOURCES_DEPENDS_VISIONOS
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_SOURCES}
|
|
SWIFT_SOURCES_DEPENDS_LINUX
|
|
${SWIFT_SYNCHRONIZATION_LINUX_SOURCES}
|
|
SWIFT_SOURCES_DEPENDS_LINUX_STATIC
|
|
${SWIFT_SYNCHRONIZATION_LINUX_SOURCES}
|
|
SWIFT_SOURCES_DEPENDS_WASI
|
|
${SWIFT_SYNCHRONIZATION_WASM_SOURCES}
|
|
SWIFT_SOURCES_DEPENDS_WINDOWS
|
|
${SWIFT_SYNCHRONIZATION_WINDOWS_SOURCES}
|
|
SWIFT_SOURCES_DEPENDS_FREESTANDING
|
|
Mutex/MutexUnavailable.swift
|
|
|
|
SWIFT_MODULE_DEPENDS_OSX
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES}
|
|
SWIFT_MODULE_DEPENDS_IOS
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES}
|
|
SWIFT_MODULE_DEPENDS_TVOS
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES}
|
|
SWIFT_MODULE_DEPENDS_WATCHOS
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES}
|
|
SWIFT_MODULE_DEPENDS_XROS
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES}
|
|
SWIFT_MODULE_DEPENDS_MACCATALYST
|
|
${SWIFT_SYNCHRONIZATION_DARWIN_DEPENDENCIES}
|
|
SWIFT_MODULE_DEPENDS_LINUX
|
|
Glibc
|
|
SWIFT_MODULE_DEPENDS_LINUX_STATIC
|
|
Musl
|
|
SWIFT_MODULE_DEPENDS_ANDROID
|
|
Android
|
|
SWIFT_MODULE_DEPENDS_WINDOWS
|
|
WinSDK
|
|
|
|
SWIFT_COMPILE_FLAGS
|
|
${SWIFT_SYNCHRNOIZATION_SWIFT_FLAGS}
|
|
LINK_FLAGS
|
|
"${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
|
|
INSTALL_IN_COMPONENT
|
|
stdlib
|
|
MACCATALYST_BUILD_FLAVOR
|
|
"zippered"
|
|
)
|
|
|
|
# Embedded Synchronization - embedded libraries are built as .swiftmodule only,
|
|
# i.e. there is no .o or .a file produced (no binary code is actually produced)
|
|
# and only users of a library are going to actually compile any needed code.
|
|
if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB)
|
|
add_custom_target(embedded-synchronization)
|
|
add_dependencies(embedded-libraries embedded-synchronization)
|
|
|
|
foreach(entry ${EMBEDDED_STDLIB_TARGET_TRIPLES})
|
|
string(REGEX REPLACE "[ \t]+" ";" list "${entry}")
|
|
list(GET list 0 arch)
|
|
list(GET list 1 mod)
|
|
list(GET list 2 triple)
|
|
|
|
# Disable the Synchronization library on AVR for now.
|
|
if("${arch}" MATCHES "avr")
|
|
continue()
|
|
endif()
|
|
|
|
set(SWIFT_SDK_embedded_ARCH_${arch}_MODULE "${mod}")
|
|
set(SWIFT_SDK_embedded_LIB_SUBDIR "embedded")
|
|
set(SWIFT_SDK_embedded_ARCH_${arch}_TRIPLE "${triple}")
|
|
set(SWIFT_SDK_embedded_PATH ${SWIFT_SDK_OSX_PATH})
|
|
set(SWIFT_SDK_embedded_ARCH_${arch}_PATH ${SWIFT_SDK_OSX_PATH})
|
|
set(SWIFT_SDK_embedded_USE_ISYSROOT TRUE)
|
|
add_swift_target_library_single(
|
|
embedded-synchronization-${mod}
|
|
swiftSynchronization
|
|
ONLY_SWIFTMODULE
|
|
IS_FRAGILE
|
|
|
|
${SWIFT_SYNCHRONIZATION_ATOMIC_SOURCES}
|
|
GYB_SOURCES
|
|
${SWIFT_SYNCHRONIZATION_GYB_SOURCES}
|
|
|
|
SWIFT_COMPILE_FLAGS
|
|
${SWIFT_SYNCHRNOIZATION_SWIFT_FLAGS}
|
|
-Xcc -ffreestanding -enable-experimental-feature Embedded
|
|
|
|
MODULE_DIR "${CMAKE_BINARY_DIR}/lib/swift/embedded"
|
|
SDK "embedded"
|
|
ARCHITECTURE "${arch}"
|
|
DEPENDS embedded-stdlib-${mod}
|
|
INSTALL_IN_COMPONENT stdlib
|
|
)
|
|
add_dependencies(embedded-synchronization embedded-synchronization-${mod})
|
|
endforeach()
|
|
endif()
|