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:
Evan Wilde
2024-10-10 15:28:26 -07:00
parent a01e080119
commit f03d9a01e6
3 changed files with 102 additions and 0 deletions

14
.gitignore vendored
View File

@@ -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

View File

@@ -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
View 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.