mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Adding stdlib resync script
Adding a quick script to keep the pieces of the standard library in sync between the new stdlib build and the old one.
This commit is contained in:
14
.gitignore
vendored
14
.gitignore
vendored
@@ -78,3 +78,17 @@ SortedCFDatabase.def
|
||||
htmlcov
|
||||
.coverage
|
||||
/benchmark/scripts/Benchmark_Driverc
|
||||
|
||||
#==============================================================================#
|
||||
# Ignore copied Swift Stdlib files while migrating stdlib
|
||||
#==============================================================================#
|
||||
Runtimes/**/*.swift
|
||||
Runtimes/**/*.h
|
||||
Runtimes/**/*.cpp
|
||||
Runtimes/**/*.c
|
||||
Runtimes/**/*.m
|
||||
Runtimes/**/*.mm
|
||||
Runtimes/**/*.def
|
||||
Runtimes/**/*.gyb
|
||||
Runtimes/**/*.apinotes
|
||||
Runtimes/**/*.yaml
|
||||
|
||||
@@ -2,6 +2,24 @@
|
||||
|
||||
This directory contains the pieces of the Swift runtime libraries.
|
||||
|
||||
## Development
|
||||
|
||||
While we're bringing up the new standard library build, please do not commit the
|
||||
standard library source files. Use the `Resync.cmake` file to copy the files as
|
||||
needed.
|
||||
|
||||
```sh
|
||||
$ cmake -P Resync.cmake
|
||||
```
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Re-run this script after updating your Swift checkout to ensure that you are
|
||||
> building the latest standard library sources.
|
||||
|
||||
Once the migration is completed, we will be deleting this script. It
|
||||
is a temporary workaround to avoid trying to keep multiple sets of files in
|
||||
sync.
|
||||
|
||||
## Layering
|
||||
|
||||
```
|
||||
|
||||
70
Runtimes/Resync.cmake
Normal file
70
Runtimes/Resync.cmake
Normal file
@@ -0,0 +1,70 @@
|
||||
# This CMake script keeps the files in the new standard library build in sync
|
||||
# with the existing standard library.
|
||||
|
||||
# TODO: Once the migration is completed, we can delete this file
|
||||
|
||||
cmake_minimum_required(VERSION 3.21)
|
||||
|
||||
# Where the standard library lives today
|
||||
set(StdlibSources "${CMAKE_CURRENT_LIST_DIR}/../stdlib")
|
||||
|
||||
message(STATUS "Source dir: ${StdlibSources}")
|
||||
|
||||
# Copy the files under the "name" directory in the standard library into the new
|
||||
# location under Runtimes
|
||||
function(copy_library_sources name from_prefix to_prefix)
|
||||
message(STATUS "${name}[${StdlibSources}/${from_prefix}/${name}] -> ${to_prefix}/${name} ")
|
||||
|
||||
file(GLOB_RECURSE filenames
|
||||
FOLLOW_SYMLINKS
|
||||
LIST_DIRECTORIES FALSE
|
||||
RELATIVE "${StdlibSources}/${from_prefix}"
|
||||
"${StdlibSources}/${from_prefix}/${name}/*.swift"
|
||||
"${StdlibSources}/${from_prefix}/${name}/*.h"
|
||||
"${StdlibSources}/${from_prefix}/${name}/*.cpp"
|
||||
"${StdlibSources}/${from_prefix}/${name}/*.c"
|
||||
"${StdlibSources}/${from_prefix}/${name}/*.mm"
|
||||
"${StdlibSources}/${from_prefix}/${name}/*.m"
|
||||
"${StdlibSources}/${from_prefix}/${name}/*.def"
|
||||
"${StdlibSources}/${from_prefix}/${name}/*.gyb"
|
||||
"${StdlibSources}/${from_prefix}/${name}/*.apinotes"
|
||||
"${StdlibSources}/${from_prefix}/${name}/*.yaml")
|
||||
|
||||
foreach(file ${filenames})
|
||||
# Get and create the directory
|
||||
get_filename_component(dirname ${file} DIRECTORY)
|
||||
file(MAKE_DIRECTORY "${to_prefix}/${dirname}")
|
||||
file(COPY_FILE
|
||||
"${StdlibSources}/${from_prefix}/${file}" # From
|
||||
"${CMAKE_CURRENT_LIST_DIR}/${to_prefix}/${file}" # To
|
||||
RESULT _output
|
||||
ONLY_IF_DIFFERENT)
|
||||
if(_output)
|
||||
message(SEND_ERROR
|
||||
"Copy ${from_prefix}/${file} -> ${to_prefix}/${file} Failed: ${_output}")
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
# Directories in the existing standard library that make up the Core project
|
||||
|
||||
# Copy shared core headers
|
||||
copy_library_sources(include "" "Core")
|
||||
|
||||
set(CoreLibs
|
||||
LLVMSupport)
|
||||
|
||||
# Add these as we get them building
|
||||
# core
|
||||
# Concurrency
|
||||
# SwiftOnoneSUpport
|
||||
# CommandLineSupport
|
||||
# Demangling
|
||||
# runtime)
|
||||
|
||||
foreach(library ${CoreLibs})
|
||||
copy_library_sources(${library} "public" "Core")
|
||||
endforeach()
|
||||
|
||||
# TODO: Add source directories for the platform overlays, supplemental
|
||||
# libraries, and test support libraries.
|
||||
Reference in New Issue
Block a user