Added a release script. Implemented the split library release generation.

This commit is contained in:
Relintai 2024-01-21 15:09:07 +01:00
parent 2c688317fb
commit 80974b8f61
6 changed files with 331 additions and 1 deletions

2
.gitignore vendored
View File

@ -14,8 +14,8 @@ build/
.DS_Store
tools/merger/out/
tools/doc/out/
tools/release/out/
tools/doc/sfw.h
tools/doc/sfw.cpp

59
Makefile_sfwl Normal file
View File

@ -0,0 +1,59 @@
# Thanks to Job Vranish (https://spin.atomicobject.com/2016/08/26/makefile-c-projects/)
TARGET_EXEC := final_program
BUILD_DIR := ./build
SRC_DIRS := ./sfwl
# Find all the C and C++ files we want to compile
# Note the single quotes around the * expressions. The shell will incorrectly expand these otherwise, but we want to send the * directly to the find command.
SRCS := $(shell find $(SRC_DIRS) -name '*.cpp' -or -name '*.c' -or -name '*.s')
# Prepends BUILD_DIR and appends .o to every src file
# As an example, ./your_dir/hello.cpp turns into ./build/./your_dir/hello.cpp.o
OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)
# String substitution (suffix version without %).
# As an example, ./build/hello.cpp.o turns into ./build/hello.cpp.d
DEPS := $(OBJS:.o=.d)
# Every folder in ./src will need to be passed to GCC so that it can find header files
INC_DIRS := $(shell find $(SRC_DIRS) -type d)
# Add a prefix to INC_DIRS. So moduleA would become -ImoduleA. GCC understands this -I flag
INC_FLAGS := $(addprefix -I,$(INC_DIRS))
# The -MMD and -MP flags together generate Makefiles for us!
# These files will have .d instead of .o as the output.
CPPFLAGS := $(INC_FLAGS) -MMD -MP -D_REENTRANT -Wall -std=c++14
LDFLAGS := -lm -ldl -lpthread -lX11 -Wall
#CXXFLAGS = -Wall -D_REENTRANT -g -Isfw
#LDFLAGS = -Wall -D_REENTRANT -g
# The final build step.
$(BUILD_DIR)/$(TARGET_EXEC): $(OBJS)
$(CXX) $(OBJS) -o $@ $(LDFLAGS)
# Build step for C source
$(BUILD_DIR)/%.c.o: %.c
mkdir -p $(dir $@)
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
# Build step for C++ source
$(BUILD_DIR)/%.cpp.o: %.cpp
mkdir -p $(dir $@)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< -o $@
.PHONY: clean
clean:
rm -r $(BUILD_DIR)
# Include the .d makefiles. The - at the front suppresses the errors of missing
# Makefiles. Initially, all the .d files will be missing, and we don't want those
# errors to show up.
-include $(DEPS)

62
compile_osx_sfwl.sh Executable file
View File

@ -0,0 +1,62 @@
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/color.cpp -o sfwl/core/color.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/logger.cpp -o sfwl/core/logger.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/math_funcs.cpp -o sfwl/core/math_funcs.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/memory.cpp -o sfwl/core/memory.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/pcg.cpp -o sfwl/core/pcg.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/plane.cpp -o sfwl/core/plane.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/random_pcg.cpp -o sfwl/core/random_pcg.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/rect2i.cpp -o sfwl/core/rect2i.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/safe_refcount.cpp -o sfwl/core/safe_refcount.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/ustring.cpp -o sfwl/core/ustring.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/string_name.cpp -o sfwl/core/string_name.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/vector2i.cpp -o sfwl/core/vector2i.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/file_access.cpp -o sfwl/core/file_access.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/dir_access.cpp -o sfwl/core/dir_access.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/pool_vector.cpp -o sfwl/core/pool_vector.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/pool_allocator.cpp -o sfwl/core/pool_allocator.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/mutex.cpp -o sfwl/core/mutex.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/sfw_time.cpp -o sfwl/core/sfw_time.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/thread.cpp -o sfwl/core/thread.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/socket.cpp -o sfwl/core/socket.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/inet_address.cpp -o sfwl/core/inet_address.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/sub_process.cpp -o sfwl/core/sub_process.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/core/sfw_core.cpp -o sfwl/core/sfw_core.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/object/object.cpp -o sfwl/object/object.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/object/reference.cpp -o sfwl/object/reference.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/object/core_string_names.cpp -o sfwl/object/core_string_names.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/object/variant.cpp -o sfwl/object/variant.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/object/variant_op.cpp -o sfwl/object/variant_op.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/object/psignal.cpp -o sfwl/object/psignal.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/object/array.cpp -o sfwl/object/array.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/object/dictionary.cpp -o sfwl/object/dictionary.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/object/ref_ptr.cpp -o sfwl/object/ref_ptr.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/object/resource.cpp -o sfwl/object/resource.o
clang++ -std=c++14 -D_REENTRANT -g -Isfwl -c sfwl/main.cpp -o sfwl/main.o
# You might need to add -lpthread and/or -latomic depending on your compiler version
clang++ -std=c++14 -D_REENTRANT -g sfwl/core/color.o \
sfwl/core/logger.o sfwl/core/math_funcs.o \
sfwl/core/memory.o sfwl/core/pcg.o sfwl/core/random_pcg.o \
sfwl/core/rect2i.o sfwl/core/safe_refcount.o \
sfwl/core/ustring.o sfwl/core/string_name.o \
sfwl/core/vector2i.o \
sfwl/core/pool_vector.o sfwl/core/pool_allocator.o sfwl/core/mutex.o sfwl/core/sfw_time.o \
sfwl/core/dir_access.o sfwl/core/file_access.o sfwl/core/thread.o \
sfwl/core/socket.o sfwl/core/inet_address.o \
sfwl/core/sub_process.o \
sfwl/core/sfw_core.o \
sfwl/object/object.o sfwl/object/reference.o sfwl/object/core_string_names.o \
sfwl/object/variant.o sfwl/object/variant_op.o sfwl/object/psignal.o \
sfwl/object/array.o sfwl/object/dictionary.o sfwl/object/ref_ptr.o \
sfwl/object/resource.o \
sfwl/main.o \
-o game

72
compile_vs_sfwl.bat Normal file
View File

@ -0,0 +1,72 @@
@echo off
if not defined DevEnvDir (
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
)
rem debug: /Zi (== -g)
rem you might need to add /std:c++14 depending on your compiler version.
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/color.cpp /Fo:sfwl/core/color.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/logger.cpp /Fo:sfwl/core/logger.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/math_funcs.cpp /Fo:sfwl/core/math_funcs.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/memory.cpp /Fo:sfwl/core/memory.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/pcg.cpp /Fo:sfwl/core/pcg.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/random_pcg.cpp /Fo:sfwl/core/random_pcg.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/rect2i.cpp /Fo:sfwl/core/rect2i.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/safe_refcount.cpp /Fo:sfwl/core/safe_refcount.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/ustring.cpp /Fo:sfwl/core/ustring.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/string_name.cpp /Fo:sfwl/core/string_name.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/vector2i.cpp /Fo:sfwl/core/vector2i.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/file_access.cpp /Fo:sfwl/core/file_access.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/dir_access.cpp /Fo:sfwl/core/dir_access.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/pool_vector.cpp /Fo:sfwl/core/pool_vector.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/pool_allocator.cpp /Fo:sfwl/core/pool_allocator.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/mutex.cpp /Fo:sfwl/core/mutex.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/sfw_time.cpp /Fo:sfwl/core/sfw_time.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/thread.cpp /Fo:sfwl/core/thread.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/socket.cpp /Fo:sfwl/core/socket.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/inet_address.cpp /Fo:sfwl/core/inet_address.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/sub_process.cpp /Fo:sfwl/core/sub_process.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/core/sfw_core.cpp /Fo:sfwl/core/sfw_core.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/object/object.cpp /Fo:sfwl/object/object.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/object/reference.cpp /Fo:sfwl/object/reference.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/object/core_string_names.cpp /Fo:sfwl/object/core_string_names.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/object/variant.cpp /Fo:sfwl/object/variant.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/object/variant_op.cpp /Fo:sfwl/object/variant_op.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/object/psignal.cpp /Fo:sfwl/object/psignal.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/object/array.cpp /Fo:sfwl/object/array.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/object/dictionary.cpp /Fo:sfwl/object/dictionary.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/object/ref_ptr.cpp /Fo:sfwl/object/ref_ptr.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/object/resource.cpp /Fo:sfwl/object/resource.obj
cl /D_REENTRANT /EHsc /Zi /Isfwl /c sfwl/main.cpp /Fo:sfwl/main.obj
cl /D_REENTRANT /Zi ^
/EHsc ^
/Fegame-vc.exe ^
sfwl/core/color.obj ^
sfwl/core/logger.obj sfwl/core/math_funcs.obj ^
sfwl/core/memory.obj sfwl/core/pcg.obj sfwl/core/random_pcg.obj ^
sfwl/core/rect2i.obj sfwl/core/safe_refcount.obj ^
sfwl/core/ustring.obj sfwl/core/string_name.obj ^
sfwl/core/vector2i.obj ^
sfwl/core/pool_vector.obj sfwl/core/pool_allocator.obj sfwl/core/mutex.obj sfwl/core/sfw_time.obj ^
sfwl/core/dir_access.obj sfwl/core/file_access.obj sfwl/core/thread.obj ^
sfwl/core/socket.obj sfwl/core/inet_address.obj ^
sfwl/core/sub_process.obj ^
sfwl/core/sfw_core.obj ^
sfwl/object/object.obj sfwl/object/reference.obj sfwl/object/core_string_names.obj ^
sfwl/object/variant.obj sfwl/object/variant_op.obj sfwl/object/psignal.obj ^
sfwl/object/array.obj sfwl/object/dictionary.obj sfwl/object/ref_ptr.obj ^
sfwl/object/resource.obj ^
sfwl/main.obj ^
/SUBSYSTEM:CONSOLE

65
compile_windows_sfwl.sh Executable file
View File

@ -0,0 +1,65 @@
# You might need to add -std=c++14 depending on your compiler version
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/color.cpp -o sfwl/core/color.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/logger.cpp -o sfwl/core/logger.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/math_funcs.cpp -o sfwl/core/math_funcs.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/memory.cpp -o sfwl/core/memory.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/pcg.cpp -o sfwl/core/pcg.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/random_pcg.cpp -o sfwl/core/random_pcg.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/rect2i.cpp -o sfwl/core/rect2i.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/safe_refcount.cpp -o sfwl/core/safe_refcount.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/ustring.cpp -o sfwl/core/ustring.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/string_name.cpp -o sfwl/core/string_name.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/vector2i.cpp -o sfwl/core/vector2i.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/file_access.cpp -o sfwl/core/file_access.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/dir_access.cpp -o sfwl/core/dir_access.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/pool_vector.cpp -o sfwl/core/pool_vector.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/pool_allocator.cpp -o sfwl/core/pool_allocator.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/mutex.cpp -o sfwl/core/mutex.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/sfw_time.cpp -o sfwl/core/sfw_time.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/thread.cpp -o sfwl/core/thread.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/socket.cpp -o sfwl/core/socket.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/inet_address.cpp -o sfwl/core/inet_address.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/sub_process.cpp -o sfwl/core/sub_process.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/core/sfw_core.cpp -o sfwl/core/sfw_core.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/object/object.cpp -o sfwl/object/object.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/object/reference.cpp -o sfwl/object/reference.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/object/core_string_names.cpp -o sfwl/object/core_string_names.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/object/variant.cpp -o sfwl/object/variant.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/object/variant_op.cpp -o sfwl/object/variant_op.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/object/psignal.cpp -o sfwl/object/psignal.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/object/array.cpp -o sfwl/object/array.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/object/dictionary.cpp -o sfwl/object/dictionary.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/object/ref_ptr.cpp -o sfwl/object/ref_ptr.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/object/resource.cpp -o sfwl/object/resource.o
ccache g++ -Wall -D_REENTRANT -g -Isfwl -c sfwl/main.cpp -o sfwl/main.o
# You might need to add -lpthread and/or -latomic depending on your compiler version
ccache g++ -Wall \
-D_REENTRANT -g sfwl/core/color.o \
sfwl/core/logger.o sfwl/core/math_funcs.o \
sfwl/core/memory.o sfwl/core/pcg.o sfwl/core/random_pcg.o \
sfwl/core/rect2i.o sfwl/core/safe_refcount.o \
sfwl/core/ustring.o sfwl/core/string_name.o \
sfwl/core/vector2i.o \
sfwl/core/pool_vector.o sfwl/core/pool_allocator.o sfwl/core/mutex.o sfwl/core/sfw_time.o \
sfwl/core/dir_access.o sfwl/core/file_access.o sfwl/core/thread.o \
sfwl/core/socket.o sfwl/core/inet_address.o \
sfwl/core/sub_process.o \
sfwl/core/sfw_core.o \
sfwl/object/object.o sfwl/object/reference.o sfwl/object/core_string_names.o \
sfwl/object/variant.o sfwl/object/variant_op.o sfwl/object/psignal.o \
sfwl/object/array.o sfwl/object/dictionary.o sfwl/object/ref_ptr.o \
sfwl/object/resource.o \
sfwl/main.o \
-o game

72
tools/release/make_release.sh Executable file
View File

@ -0,0 +1,72 @@
# This script generates the final release zip
# Before running this:
# 0. Make sure that the repository is clean.
# (Technically only the sfw, sfwl and demos folders need to be clean, as they will be copied using cp -R.)
# Run: `git clean -f -x` or `git clean -f -x -d` if you want to get rid of folders too
# 1. Run tools/merger/join_all.sh
# 2. Run tools/doc/compile_linux.sh
# 3. Run tools/doc/generate_all.sh
# 4. Run tools/doc/inline_docs.py using python:
# cd tools/doc/
# python inline_docs.py
rm -Rf out
mkdir -p out
mkdir -p out/sfw
mkdir -p out/sfw/merged
mkdir -p out/sfw/split
mkdir -p out/sfw/demos
mkdir -p out/sfwl
mkdir -p out/sfwl/merged
mkdir -p out/sfwl/split
mkdir -p out/sfwl/demos
version=""
if [ ! -z $1 ]; then
version=""
version+=$1
fi
cd ..
cd ..
project_root_folder=$(pwd)/
sfw_out_folder=$(pwd)/tools/release/out/sfw/
sfwl_out_folder=$(pwd)/tools/release/out/sfwl/
echo "Building SFW release v: $version"
# SFW Split
cp -R "$project_root_folder/sfw" "$sfw_out_folder/split/sfw"
cp "$project_root_folder/compile_linux.sh" "$sfw_out_folder/split/compile_linux.sh"
cp "$project_root_folder/compile_osx.sh" "$sfw_out_folder/split/compile_osx.sh"
cp "$project_root_folder/compile_vs.bat" "$sfw_out_folder/split/compile_vs.bat"
cp "$project_root_folder/compile_windows.sh" "$sfw_out_folder/split/compile_windows.sh"
cp "$project_root_folder/Makefile" "$sfw_out_folder/split/Makefile"
cp "$project_root_folder/.clang-format" "$sfw_out_folder/split/.clang-format"
cp "$project_root_folder/.clang-tidy" "$sfw_out_folder/split/.clang-tidy"
cp "$project_root_folder/.editorconfig" "$sfw_out_folder/split/.editorconfig"
cp "$project_root_folder/.gitignore" "$sfw_out_folder/split/.gitignore"
cp "$project_root_folder/LICENSE.txt" "$sfw_out_folder/split/LICENSE.txt"
cp "$project_root_folder/README.md" "$sfw_out_folder/split/README.md"
# SFWL Split
cp -R "$project_root_folder/sfwl" "$sfwl_out_folder/split/sfwl"
cp "$project_root_folder/compile_linux_sfwl.sh" "$sfwl_out_folder/split/compile_linux.sh"
cp "$project_root_folder/compile_osx_sfwl.sh" "$sfwl_out_folder/split/compile_osx.sh"
cp "$project_root_folder/compile_vs_sfwl.bat" "$sfwl_out_folder/split/compile_vs.bat"
cp "$project_root_folder/compile_windows_sfwl.sh" "$sfwl_out_folder/split/compile_windows.sh"
cp "$project_root_folder/Makefile_sfwl" "$sfwl_out_folder/split/Makefile"
cp "$project_root_folder/.clang-format" "$sfwl_out_folder/split/.clang-format"
cp "$project_root_folder/.clang-tidy" "$sfwl_out_folder/split/.clang-tidy"
cp "$project_root_folder/.editorconfig" "$sfwl_out_folder/split/.editorconfig"
cp "$project_root_folder/.gitignore" "$sfwl_out_folder/split/.gitignore"
cp "$project_root_folder/LICENSE.txt" "$sfwl_out_folder/split/LICENSE.txt"
cp "$project_root_folder/README.md" "$sfwl_out_folder/split/README.md"