diff --git a/Runtimes/Resync.cmake b/Runtimes/Resync.cmake index 42de50bb888..27cd5fb2f88 100644 --- a/Runtimes/Resync.cmake +++ b/Runtimes/Resync.cmake @@ -155,13 +155,14 @@ copy_files(public/Platform Overlay/Windows/CRT TiocConstants.swift tgmath.swift.gyb) -# TODO: Add source directories for the platform overlays, supplemental -# libraries, and test support libraries. - # Supplemental Libraries copy_library_sources(Synchronization "public" "Supplemental") copy_library_sources(Observation "public" "Supplemental") +# Copy Differentiation sources +copy_library_sources("linker-support" "" "Supplemental/Differentiation") +copy_library_sources("Differentiation" "public" "Supplemental") + # Copy StringProcessing, RegexParser, RegexBuilder if(NOT DEFINED StringProcessing_ROOT_DIR) find_path(StringProcessing_ROOT_DIR diff --git a/Runtimes/Supplemental/CMakeLists.txt b/Runtimes/Supplemental/CMakeLists.txt index c8726cd5850..bf604285224 100644 --- a/Runtimes/Supplemental/CMakeLists.txt +++ b/Runtimes/Supplemental/CMakeLists.txt @@ -80,3 +80,15 @@ if(SwiftRuntime_ENABLE_distributed) CMAKE_ARGS ${COMMON_OPTIONS}) endif() + + +# Differentiation +if(SwiftRuntime_ENABLE_differentiation) + ExternalProject_Add(Differentiation + PREFIX "Differentiation" + SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/Differentiation" + INSTALL_DIR "${CMAKE_INSTALL_PREFIX}" + INSTALL_COMMAND "" + CMAKE_ARGS + ${COMMON_OPTIONS}) +endif() diff --git a/Runtimes/Supplemental/Differentiation/CMakeLists.txt b/Runtimes/Supplemental/Differentiation/CMakeLists.txt new file mode 100644 index 00000000000..04cd3c2ad16 --- /dev/null +++ b/Runtimes/Supplemental/Differentiation/CMakeLists.txt @@ -0,0 +1,96 @@ +cmake_minimum_required(VERSION 3.29) + +if($ENV{BUILD_NUMBER}) + math(EXPR BUILD_NUMBER "$ENV{BUILD_NUMBER} % 65535") + set(BUILD_NUMBER ".${BUILD_NUMBER}") +endif() +project(SwiftDifferentiation + LANGUAGES Swift C + VERSION 6.1.0${BUILD_NUMBER}) + +set(CMAKE_POSITION_INDEPENDENT_CODE YES) +set(CMAKE_Swift_LANGUAGE_VERSION 5) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../cmake/modules") + +if(NOT PROJECT_IS_TOP_LEVEL) + message(SEND_ERROR "Swift Differentiation must build as a standalone project") +endif() + +set(${PROJECT_NAME}_SWIFTC_SOURCE_DIR + "${PROJECT_SOURCE_DIR}/../../../" + CACHE FILEPATH "Path to the root source directory of the Swift compiler") + +find_package(SwiftCore) + +include(gyb) +include(AvailabilityMacros) +include(CatalystSupport) +include(EmitSwiftInterface) +include(ResourceEmbedding) +include(InstallSwiftInterface) + +option(${PROJECT_NAME}_ENABLE_VECTOR_TYPES "Enable vector support" + ${SwiftCore_ENABLE_VECTOR_TYPES}) + +option(${PROJECT_NAME}_ENABLE_LIBRARY_EVOLUTION "Enable library evolution" + ${SwiftCore_ENABLE_LIBRARY_EVOLUTION}) + +add_compile_options( + $<$:-explicit-module-build> + $<$:-nostdlibimport> + $<$:-parse-stdlib> + "$<$:SHELL:-library-level api>" + $<$:-enforce-exclusivity=unchecked> + "$<$:SHELL:-target-min-inlining-version min>" + "$<$:SHELL:-enable-experimental-feature NoncopyableGenerics2>" + "$<$:SHELL:-enable-experimental-feature SuppressedAssociatedTypes>" + "$<$:SHELL:-enable-experimental-feature SE427NoInferenceOnExtension>" + "$<$:SHELL:-enable-experimental-feature NonescapableTypes>" + "$<$:SHELL:-enable-experimental-feature LifetimeDependence>" + "$<$:SHELL:-enable-experimental-feature MemberImportVisibility>" + $<$,$>:-enable-library-evolution>) + +if(SwiftDifferentiation_ENABLE_VECTOR_TYPES) + gyb_expand(SIMDDifferentiation.swift.gyb SIMDDifferentiation.swift) +endif() +gyb_expand(TgmathDerivatives.swift.gyb TgmathDerivatives.swift) +gyb_expand(FloatingPointDifferentiation.swift.gyb + FloatingPointDifferentiation.swift) + +add_library(swift_Differentiation + AnyDifferentiable.swift + ArrayDifferentiation.swift + Differentiable.swift + DifferentialOperators.swift + DifferentiationUtilities.swift + OptionalDifferentiation.swift + $<$:SIMDDifferentiation.swift> + TgmathDerivatives.swift + FloatingPointDifferentiation.swift + linker-support/magic-symbols-for-install-name.c) + +set_target_properties(swift_Differentiation PROPERTIES + Swift_MODULE_NAME _Differentiation) + +if(APPLE AND BUILD_SHARED_LIBS) + target_link_options(swift_Differentiation PRIVATE "SHELL:-Xlinker -headerpad_max_install_names") +endif() + +target_link_libraries(swift_Differentiation PRIVATE swiftCore) + +set(${PROJECT_NAME}_INSTALL_LIBDIR "${CMAKE_INSTALL_LIBDIR}/swift$<$>:_static>$<$:/${Supplemental_PLATFORM_SUBDIR}/${Supplemental_ARCH_SUBDIR}>" CACHE STRING "") +set(${PROJECT_NAME}_INSTALL_SWIFTMODULEDIR "${CMAKE_INSTALL_LIBDIR}/swift$<$>:_static>$<$:/${Supplemental_PLATFORM_SUBDIR}>" CACHE STRING "") + +install(TARGETS swift_Differentiation + EXPORT SwiftSupplementalTargets + 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_Differentiation) +install_swift_interface(swift_Differentiation) + +# Configure plist creation for Darwin platforms. +generate_plist("${CMAKE_PROJECT_NAME}" "${CMAKE_PROJECT_VERSION}" swift_Differentiation) +embed_manifest(swift_Differentiation)