mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Runtimes: add _Volatile module
Introduce a new runtimes build for the `_Volatile` module. This should hopefully be the final supplemental library that we need for the completion of the SDK.
This commit is contained in:
@@ -111,6 +111,9 @@ copy_files("" "Supplemental/StringProcessing" FILES "Info.plist.in")
|
||||
message(STATUS "plist[${StdlibSources}/Info.plist.in] -> Supplemental/Synchronization/Info.plist.in")
|
||||
copy_files("" "Supplemental/Synchronization" FILES "Info.plist.in")
|
||||
|
||||
message(STATUS "plist[${StdlibSources}/Info.plist.in] -> Supplemental/Volatile/Info.plist.in")
|
||||
copy_files("" "Supplemental/Volatile" FILES "Info.plist.in")
|
||||
|
||||
# Platform Overlays
|
||||
|
||||
# Copy magic linker symbols
|
||||
@@ -176,6 +179,7 @@ copy_library_sources(Differentiation "public" "Supplemental")
|
||||
copy_library_sources(Distributed "public" "Supplemental")
|
||||
copy_library_sources(Observation "public" "Supplemental")
|
||||
copy_library_sources(Synchronization "public" "Supplemental")
|
||||
copy_library_sources(Volatile "public" "Supplemental")
|
||||
|
||||
copy_library_sources(_RegexParser "Sources" "Supplemental/StringProcessing"
|
||||
ROOT "${StringProcessing_ROOT_DIR}/swift-experimental-string-processing")
|
||||
|
||||
104
Runtimes/Supplemental/Volatile/CMakeLists.txt
Normal file
104
Runtimes/Supplemental/Volatile/CMakeLists.txt
Normal file
@@ -0,0 +1,104 @@
|
||||
cmake_minimum_required(VERSION 3.29)
|
||||
# TODO before requiring CMake 4.1 or later
|
||||
# and/or enforcing CMP0195, please check/update
|
||||
# the implementation of `emit_swift_interface`
|
||||
# in `EmitSwiftInterface.cmake`
|
||||
# to ensure it keeps laying down nested swiftmodule folders
|
||||
|
||||
if(POLICY CMP0157 AND CMAKE_Swift_COMPILER_USE_OLD_DRIVER)
|
||||
cmake_policy(SET CMP0157 OLD)
|
||||
endif()
|
||||
|
||||
if($ENV{BUILD_NUMBER})
|
||||
math(EXPR BUILD_NUMBER "$ENV{BUILD_NUMBER} % 65535")
|
||||
set(BUILD_NUMBER ".${BUILD_NUMBER}")
|
||||
endif()
|
||||
project(SwiftVolatile
|
||||
LANGUAGES Swift
|
||||
VERSION 6.1.0${BUILD_NUMBER})
|
||||
# FIXME(compnerd) this is a workaround for `GNUInstallDirs` which cannot be used
|
||||
# with a pure Swift project.
|
||||
enable_language(C)
|
||||
|
||||
if(NOT PROJECT_IS_TOP_LEVEL)
|
||||
message(SEND_ERROR "Swift Observation must build as a standalone project")
|
||||
endif()
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake/modules")
|
||||
|
||||
set(${PROJECT_NAME}_SWIFTC_SOURCE_DIR
|
||||
"${PROJECT_SOURCE_DIR}/../../../"
|
||||
CACHE FILEPATH "Path to the root source directory of the Swift compiler")
|
||||
|
||||
# Hook point for vendor-specific extensions to the build system
|
||||
# Allowed extension points:
|
||||
# - DefaultSettings.cmake
|
||||
# - Settings.cmake
|
||||
set(${PROJECT_NAME}_VENDOR_MODULE_DIR "${CMAKE_SOURCE_DIR}/../cmake/modules/vendor"
|
||||
CACHE FILEPATH "Location for private build system extension")
|
||||
|
||||
find_package(SwiftCore REQUIRED)
|
||||
find_package(SwiftOverlay REQUIRED)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
include(AvailabilityMacros)
|
||||
include(EmitSwiftInterface)
|
||||
include(InstallSwiftInterface)
|
||||
include(PlatformInfo)
|
||||
include(gyb)
|
||||
include(ResourceEmbedding)
|
||||
include(CatalystSupport)
|
||||
|
||||
option(${PROJECT_NAME}_INSTALL_NESTED_SUBDIR "Install libraries under a platform and architecture subdirectory" ON)
|
||||
set(${PROJECT_NAME}_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}/swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:_static>$<$<BOOL:${${PROJECT_NAME}_INSTALL_NESTED_SUBDIR}>:/${${PROJECT_NAME}_PLATFORM_SUBDIR}/${${PROJECT_NAME}_ARCH_SUBDIR}>" CACHE STRING "")
|
||||
set(${PROJECT_NAME}_INSTALL_SWIFTMODULEDIR "${CMAKE_INSTALL_LIBDIR}/swift$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:_static>$<$<BOOL:${${PROJECT_NAME}_INSTALL_NESTED_SUBDIR}>:/${${PROJECT_NAME}_PLATFORM_SUBDIR}>" CACHE STRING "")
|
||||
|
||||
include("${${PROJECT_NAME}_VENDOR_MODULE_DIR}/Settings.cmake" OPTIONAL)
|
||||
|
||||
option(${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION "Generate ABI resilient runtime libraries"
|
||||
${SwiftCore_ENABLE_LIBRARY_EVOLUTION})
|
||||
|
||||
option(${PROJECT_NAME}_ENABLE_PRESPECIALIZATION "Enable generic metadata prespecialization"
|
||||
${SwiftCore_ENABLE_PRESPECIALIZATION})
|
||||
|
||||
add_compile_options(
|
||||
$<$<COMPILE_LANGUAGE:Swift>:-explicit-module-build>
|
||||
$<$<COMPILE_LANGUAGE:Swift>:-nostdlibimport>
|
||||
$<$<COMPILE_LANGUAGE:Swift>:-enable-builtin-module>
|
||||
$<$<COMPILE_LANGUAGE:Swift>:-strict-memory-safety>
|
||||
"$<$<AND:$<BOOL:${${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION}>,$<COMPILE_LANGUAGE:Swift>>:-enable-library-evolution>"
|
||||
"$<$<AND:$<BOOL:${${PROJECT_NAME}_ENABLE_PRESPECIALIZATION}>,$<COMPILE_LANGUAGE:Swift>>:SHELL:-Xfrontend -prespecialize-generic-metadata>")
|
||||
|
||||
# LNK4049: symbol 'symbol' defined in 'filename.obj' is imported
|
||||
# LNK4286: symbol 'symbol' defined in 'filename_1.obj' is imported by 'filename_2.obj'
|
||||
# LNK4217: symbol 'symbol' defined in 'filename_1.obj' is imported by 'filename_2.obj' in function 'function'
|
||||
#
|
||||
# We cannot selectively filter the linker warnings as we do not use the MSVC
|
||||
# frontned and `clang-cl` (and `clang`) currently do not support `/WX:nnnn`. As
|
||||
# a compromise, treat all linker warnings as errors.
|
||||
add_link_options($<$<PLATFORM_ID:Windows>:LINKER:/WX>)
|
||||
|
||||
add_library(swift_Volatile
|
||||
Volatile.swift)
|
||||
set_target_properties(swift_Volatile PROPERTIES
|
||||
Swift_MODULE_NAME _Volatile)
|
||||
target_compile_options(swift_Volatile PRIVATE
|
||||
-parse-stdlib)
|
||||
target_link_libraries(swift_Volatile PRIVATE
|
||||
swiftCore)
|
||||
|
||||
install(TARGETS swift_Volatile
|
||||
EXPORT SwiftVolatileTargets
|
||||
COMPONENT ${PROJECT_NAME}_runtime
|
||||
ARCHIVE DESTINATION "${${PROJECT_NAME}_INSTALL_LIBDIR}"
|
||||
LIBRARY DESTINATION "${${PROJECT_NAME}_INSTALL_LIBDIR}"
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
emit_swift_interface(swift_Volatile)
|
||||
install_swift_interface(swift_Volatile)
|
||||
|
||||
# Configure plist creation for Darwin platforms.
|
||||
generate_plist("${CMAKE_PROJECT_NAME}" "${CMAKE_PROJECT_VERSION}" swift_Volatile)
|
||||
embed_manifest(swift_Volatile)
|
||||
|
||||
include("${${PROJECT_NAME}_VENDOR_MODULE_DIR}/swift_Volatile.cmake" OPTIONAL)
|
||||
Reference in New Issue
Block a user