mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #81529 from edymtt/edymtt/add-distributed-to-new-build-system-inert
[Runtimes][CMake] Add Distributed to Supplemental build
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -98,3 +98,4 @@ Runtimes/**/*.json
|
||||
Runtimes/**/*.modulemap
|
||||
Runtimes/**/*.in
|
||||
!Runtimes/**/*.cmake.in
|
||||
!Runtimes/**/CMakeConfig.h.in
|
||||
|
||||
@@ -4,9 +4,6 @@
|
||||
#ifndef SWIFT_RUNTIME_CMAKECONFIG_H
|
||||
#define SWIFT_RUNTIME_CMAKECONFIG_H
|
||||
|
||||
#cmakedefine01 SWIFT_BNI_OS_BUILD
|
||||
#cmakedefine01 SWIFT_BNI_XCODE_BUILD
|
||||
|
||||
#define SWIFT_VERSION_MAJOR "@SwiftCore_VERSION_MAJOR@"
|
||||
#define SWIFT_VERSION_MINOR "@SwiftCore_VERSION_MINOR@"
|
||||
|
||||
|
||||
@@ -1,15 +1,3 @@
|
||||
# TODO: clean this up so it's less Apple-specific.
|
||||
# Detect B&I builds.
|
||||
set(SWIFT_BNI_OS_BUILD FALSE)
|
||||
set(SWIFT_BNI_XCODE_BUILD FALSE)
|
||||
if(DEFINED ENV{RC_XBS})
|
||||
if((NOT DEFINED ENV{RC_XCODE} OR NOT "$ENV{RC_XCODE}") AND (NOT DEFINED ENV{RC_PLAYGROUNDS} OR NOT "$ENV{RC_PLAYGROUNDS}"))
|
||||
set(SWIFT_BNI_OS_BUILD TRUE)
|
||||
else()
|
||||
set(SWIFT_BNI_XCODE_BUILD TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
configure_file("CMakeConfig.h.in"
|
||||
"${PROJECT_BINARY_DIR}/include/swift/Runtime/CMakeConfig.h"
|
||||
ESCAPE_QUOTES @ONLY)
|
||||
|
||||
@@ -99,6 +99,9 @@ copy_files("" "Core" 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/Distributed/Info.plist.in")
|
||||
copy_files("" "Supplemental/Distributed" FILES "Info.plist.in")
|
||||
|
||||
# Platform Overlays
|
||||
|
||||
# Copy magic linker symbols
|
||||
@@ -175,3 +178,6 @@ copy_library_sources(_CUnicode "Sources" "Supplemental/StringProcessing/_StringP
|
||||
ROOT "${StringProcessing_ROOT_DIR}/swift-experimental-string-processing")
|
||||
copy_library_sources(RegexBuilder "Sources" "Supplemental/StringProcessing"
|
||||
ROOT "${StringProcessing_ROOT_DIR}/swift-experimental-string-processing")
|
||||
|
||||
copy_library_sources("Distributed" "public" "Supplemental")
|
||||
copy_library_sources(include "" "Supplemental/Distributed")
|
||||
|
||||
@@ -69,3 +69,14 @@ if(SwiftRuntime_ENABLE_synchronization)
|
||||
CMAKE_ARGS
|
||||
${COMMON_OPTIONS})
|
||||
endif()
|
||||
|
||||
# Distributed
|
||||
if(SwiftRuntime_ENABLE_distributed)
|
||||
ExternalProject_Add(Distributed
|
||||
PREFIX "Distributed"
|
||||
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Distributed"
|
||||
INSTALL_DIR "${CMAKE_INSTALL_PREFIX}"
|
||||
INSTALL_COMMAND ""
|
||||
CMAKE_ARGS
|
||||
${COMMON_OPTIONS})
|
||||
endif()
|
||||
|
||||
131
Runtimes/Supplemental/Distributed/CMakeLists.txt
Normal file
131
Runtimes/Supplemental/Distributed/CMakeLists.txt
Normal file
@@ -0,0 +1,131 @@
|
||||
cmake_minimum_required(VERSION 3.29)
|
||||
|
||||
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(SwiftDistributed
|
||||
LANGUAGES C CXX Swift
|
||||
VERSION 6.3.0${BUILD_NUMBER})
|
||||
|
||||
if(NOT PROJECT_IS_TOP_LEVEL)
|
||||
message(SEND_ERROR "Swift Distributed must build as a standalone project")
|
||||
endif()
|
||||
|
||||
set(CMAKE_Swift_LANGUAGE_VERSION 5)
|
||||
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE YES)
|
||||
set(CMAKE_C_VISIBILITY_PRESET "hidden")
|
||||
set(CMAKE_CXX_VISIBILITY_PRESET "hidden")
|
||||
set(CMAKE_VISIBILITY_INLINES_HIDDEN YES)
|
||||
set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to conform to")
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
||||
set(CMAKE_CXX_EXTENSIONS NO)
|
||||
|
||||
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")
|
||||
|
||||
set(${PROJECT_NAME}_VENDOR_MODULE_DIR "${CMAKE_SOURCE_DIR}/../cmake/modules/vendor"
|
||||
CACHE FILEPATH "Location for private build system extension")
|
||||
|
||||
find_package(SwiftCore REQUIRED)
|
||||
|
||||
include(AvailabilityMacros)
|
||||
include(EmitSwiftInterface)
|
||||
include(InstallSwiftInterface)
|
||||
include(PlatformInfo)
|
||||
include(ResourceEmbedding)
|
||||
include(CatalystSupport)
|
||||
include(SwiftCallingConventions)
|
||||
|
||||
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}/${Supplemental_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_library(swiftDistributed
|
||||
DistributedActor.cpp
|
||||
DistributedActor.swift
|
||||
DistributedActorSystem.swift
|
||||
DistributedAssertions.swift
|
||||
DistributedDefaultExecutor.swift
|
||||
DistributedMacros.swift
|
||||
DistributedMetadata.swift
|
||||
LocalTestingDistributedActorSystem.swift)
|
||||
|
||||
target_compile_options(swiftDistributed PRIVATE
|
||||
$<$<COMPILE_LANGUAGE:Swift>:-explicit-module-build>
|
||||
$<$<COMPILE_LANGUAGE:Swift>:-nostdlibimport>
|
||||
$<$<COMPILE_LANGUAGE:Swift>:-parse-stdlib>
|
||||
$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature AllowUnsafeAttribute>
|
||||
$<$<COMPILE_LANGUAGE:Swift>:-strict-memory-safety>
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-library-level api>"
|
||||
$<$<COMPILE_LANGUAGE:Swift>:-enforce-exclusivity=unchecked>
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -target-min-inlining-version -Xfrontend min>"
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-Xfrontend -enable-lexical-lifetimes=false>"
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature NoncopyableGenerics2>"
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature SuppressedAssociatedTypes>"
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature SE427NoInferenceOnExtension>"
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature NonescapableTypes>"
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature LifetimeDependence>"
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature LifetimeDependenceMutableAccessors>"
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-upcoming-feature MemberImportVisibility>"
|
||||
"$<$<COMPILE_LANGUAGE:Swift>:SHELL:-enable-experimental-feature InoutLifetimeDependence>"
|
||||
"$<$<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>")
|
||||
|
||||
set_target_properties(swiftDistributed PROPERTIES
|
||||
Swift_MODULE_NAME Distributed
|
||||
LINKER_LANGUAGE CXX)
|
||||
|
||||
if(APPLE AND BUILD_SHARED_LIBS)
|
||||
target_link_options(swiftDistributed PRIVATE "SHELL:-Xlinker -headerpad_max_install_names")
|
||||
endif()
|
||||
|
||||
target_compile_definitions(swiftDistributed PRIVATE
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-DSWIFT_TARGET_LIBRARY_NAME=swiftDistributed>)
|
||||
|
||||
target_include_directories(swiftDistributed PRIVATE
|
||||
# FIXME: Use of `swift/Runtime/...`, `swift/ABI/...`, and `swift/Demangling/...`
|
||||
"${${PROJECT_NAME}_SWIFTC_SOURCE_DIR}/include"
|
||||
# For `swift/runtime/CMakeConfig.h`, which should be generated
|
||||
# by the Core build system.
|
||||
"${${PROJECT_NAME}_PATH_TO_SWIFT_RUNTIME_HEADERS}"
|
||||
# For llvm/support headers
|
||||
"${PROJECT_SOURCE_DIR}/include")
|
||||
|
||||
target_link_libraries(swiftDistributed PRIVATE
|
||||
swiftShims
|
||||
swiftCore
|
||||
swift_Concurrency)
|
||||
# swiftDarwin/Libc/Platform
|
||||
# builtin_float
|
||||
|
||||
install(TARGETS swiftDistributed
|
||||
EXPORT SwiftDistributedTargets
|
||||
COMPONENT ${PROJECT_NAME}_runtime
|
||||
ARCHIVE DESTINATION "${${PROJECT_NAME}_INSTALL_LIBDIR}"
|
||||
LIBRARY DESTINATION "${${PROJECT_NAME}_INSTALL_LIBDIR}"
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
|
||||
emit_swift_interface(swiftDistributed)
|
||||
install_swift_interface(swiftDistributed)
|
||||
|
||||
# Configure plist creation for Darwin platforms.
|
||||
generate_plist("${CMAKE_PROJECT_NAME}" "${CMAKE_PROJECT_VERSION}" swiftDistributed)
|
||||
embed_manifest(swiftDistributed)
|
||||
|
||||
include("${${PROJECT_NAME}_VENDOR_MODULE_DIR}/swiftDistributed.cmake" OPTIONAL)
|
||||
@@ -0,0 +1,28 @@
|
||||
include(CheckSourceCompiles)
|
||||
include(CheckCompilerFlag)
|
||||
|
||||
check_source_compiles(CXX
|
||||
"#if !(__has_attribute(swiftcall) && \
|
||||
__has_attribute(swift_context) && \
|
||||
__has_attribute(swift_error_result) && \
|
||||
__has_attribute(swift_indirect_result))
|
||||
#error CXX compiler must support Swift calling conventions
|
||||
#endif
|
||||
int main(void) { return 0; }"
|
||||
HAVE_SWIFTCALL)
|
||||
|
||||
if(NOT HAVE_SWIFTCALL)
|
||||
message(SEND_ERROR "CXX Compiler must support Swift calling conventions")
|
||||
endif()
|
||||
|
||||
check_source_compiles(CXX
|
||||
"#if !(__has_attribute(swiftasynccall) && \
|
||||
__has_attribute(swift_async_context))
|
||||
#error CXX compiler must support Swift async calling conventions
|
||||
#endif
|
||||
int main(void) { return 0; }"
|
||||
HAVE_SWIFT_ASYNC_CALL)
|
||||
|
||||
if(NOT HAVE_SWIFT_ASYNC_CALL)
|
||||
message(SEND_ERROR "CXX Compiler must support Swift async calling conventions")
|
||||
endif()
|
||||
@@ -4,9 +4,6 @@
|
||||
#ifndef SWIFT_RUNTIME_CMAKECONFIG_H
|
||||
#define SWIFT_RUNTIME_CMAKECONFIG_H
|
||||
|
||||
#cmakedefine01 SWIFT_BNI_OS_BUILD
|
||||
#cmakedefine01 SWIFT_BNI_XCODE_BUILD
|
||||
|
||||
#define SWIFT_VERSION_MAJOR "@SWIFT_VERSION_MAJOR@"
|
||||
#define SWIFT_VERSION_MINOR "@SWIFT_VERSION_MINOR@"
|
||||
|
||||
|
||||
@@ -1,14 +1,3 @@
|
||||
# Detect B&I builds.
|
||||
set(SWIFT_BNI_OS_BUILD FALSE)
|
||||
set(SWIFT_BNI_XCODE_BUILD FALSE)
|
||||
if(DEFINED ENV{RC_XBS})
|
||||
if((NOT DEFINED ENV{RC_XCODE} OR NOT "$ENV{RC_XCODE}") AND (NOT DEFINED ENV{RC_PLAYGROUNDS} OR NOT "$ENV{RC_PLAYGROUNDS}"))
|
||||
set(SWIFT_BNI_OS_BUILD TRUE)
|
||||
else()
|
||||
set(SWIFT_BNI_XCODE_BUILD TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
configure_file(CMakeConfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/CMakeConfig.h
|
||||
ESCAPE_QUOTES @ONLY)
|
||||
swift_install_in_component(FILES ${CMAKE_CURRENT_BINARY_DIR}/CMakeConfig.h
|
||||
|
||||
Reference in New Issue
Block a user