sfw/tools/release/make_release.sh
2024-01-21 17:02:59 +01:00

268 lines
10 KiB
Bash
Executable File

# 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
doc_folder=$(pwd)/tools/doc/out/processed
echo "Building SFW release v: $version"
# SFW Common files
cp "$project_root_folder/.clang-format" "$sfw_out_folder/.clang-format"
cp "$project_root_folder/.clang-tidy" "$sfw_out_folder/.clang-tidy"
cp "$project_root_folder/.editorconfig" "$sfw_out_folder/.editorconfig"
cp "$project_root_folder/.gitignore" "$sfw_out_folder/.gitignore"
cp "$project_root_folder/LICENSE.txt" "$sfw_out_folder/LICENSE.txt"
cp "$project_root_folder/README.md" "$sfw_out_folder/README.md"
cp "$project_root_folder/icon.png" "$sfw_out_folder/icon.png"
# 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"
cp "$project_root_folder/icon.png" "$sfw_out_folder/split/icon.png"
cp "$project_root_folder/tools/doc/out/processed/sfw_full.html" "$sfw_out_folder/split/sfw.html"
# SFW Merged
# Core
current_in_fol=$project_root_folder/tools/merger/out/core
current_out_fol=$sfw_out_folder/merged/core
mkdir -p "$current_out_fol"
cp "$current_in_fol/sfw.h" "$current_out_fol/sfw.h"
cp "$current_in_fol/sfw.cpp" "$current_out_fol/sfw.cpp"
cp "$doc_folder/sfw_core.html" "$current_out_fol/sfw.html"
# Object
current_in_fol=$project_root_folder/tools/merger/out/object
current_out_fol=$sfw_out_folder/merged/object
mkdir -p "$current_out_fol"
cp "$current_in_fol/sfw.h" "$current_out_fol/sfw.h"
cp "$current_in_fol/sfw.cpp" "$current_out_fol/sfw.cpp"
cp "$doc_folder/sfw_object.html" "$current_out_fol/sfw.html"
# Render Core
current_in_fol=$project_root_folder/tools/merger/out/render_core
current_out_fol=$sfw_out_folder/merged/render_core
mkdir -p "$current_out_fol"
cp "$current_in_fol/sfw.h" "$current_out_fol/sfw.h"
cp "$current_in_fol/sfw.cpp" "$current_out_fol/sfw.cpp"
cp "$current_in_fol/sfw_3rd.m" "$current_out_fol/sfw_3rd.m"
cp "$doc_folder/sfw_render_core.html" "$current_out_fol/sfw.html"
# Render Immediate
current_in_fol=$project_root_folder/tools/merger/out/render_immediate
current_out_fol=$sfw_out_folder/merged/render_immediate
mkdir -p "$current_out_fol"
cp "$current_in_fol/sfw.h" "$current_out_fol/sfw.h"
cp "$current_in_fol/sfw.cpp" "$current_out_fol/sfw.cpp"
cp "$current_in_fol/sfw_3rd.m" "$current_out_fol/sfw_3rd.m"
cp "$doc_folder/sfw_render_immediate.html" "$current_out_fol/sfw.html"
# Render Objects
current_in_fol=$project_root_folder/tools/merger/out/render_objects
current_out_fol=$sfw_out_folder/merged/render_objects
mkdir -p "$current_out_fol"
cp "$current_in_fol/sfw.h" "$current_out_fol/sfw.h"
cp "$current_in_fol/sfw.cpp" "$current_out_fol/sfw.cpp"
cp "$current_in_fol/sfw_3rd.m" "$current_out_fol/sfw_3rd.m"
cp "$doc_folder/sfw_render_objects.html" "$current_out_fol/sfw.html"
# Full
current_in_fol=$project_root_folder/tools/merger/out/full
current_out_fol=$sfw_out_folder/merged/full
mkdir -p "$current_out_fol"
cp "$current_in_fol/sfw.h" "$current_out_fol/sfw.h"
cp "$current_in_fol/sfw.cpp" "$current_out_fol/sfw.cpp"
cp "$current_in_fol/sfw_3rd.m" "$current_out_fol/sfw_3rd.m"
cp "$doc_folder/sfw_full.html" "$current_out_fol/sfw.html"
# SFW Demos
# Minimal APP
current_out_fol=$sfw_out_folder/demos/minimal_app
current_in_fol=$project_root_folder/tools/merger/out/full
cp -R "$project_root_folder/demos/build_scripts/full_minimal/" "$current_out_fol"
cp "$current_in_fol/sfw.h" "$current_out_fol/sfw.h"
cp "$current_in_fol/sfw.cpp" "$current_out_fol/sfw.cpp"
cp "$current_in_fol/sfw_3rd.m" "$current_out_fol/sfw_3rd.m"
current_in_fol=$project_root_folder/demos/minimal_app
cp "$current_in_fol/main.cpp" "$current_out_fol/main.cpp"
# Single Header APP
current_out_fol=$sfw_out_folder/demos/single_header_app
current_in_fol=$project_root_folder/tools/merger/out/full
cp -R "$project_root_folder/demos/build_scripts/full_minimal/" "$current_out_fol"
cp "$current_in_fol/sfw.h" "$current_out_fol/sfw.h"
cp "$current_in_fol/sfw.cpp" "$current_out_fol/sfw.cpp"
cp "$current_in_fol/sfw_3rd.m" "$current_out_fol/sfw_3rd.m"
current_in_fol=$project_root_folder/demos/single_header_app
cp "$current_in_fol/main.cpp" "$current_out_fol/main.cpp"
cp "$current_in_fol/game_application.h" "$current_out_fol/game_application.h"
cp "$project_root_folder/icon.png" "$current_out_fol/icon.png"
# Render Test APP
current_out_fol=$sfw_out_folder/demos/render_test_app
current_in_fol=$project_root_folder/tools/merger/out/full
cp -R "$project_root_folder/demos/build_scripts/full/" "$current_out_fol"
cp "$current_in_fol/sfw.h" "$current_out_fol/sfw.h"
cp "$current_in_fol/sfw.cpp" "$current_out_fol/sfw.cpp"
cp "$current_in_fol/sfw_3rd.m" "$current_out_fol/sfw_3rd.m"
current_in_fol=$project_root_folder/demos/render_test_app
cp "$current_in_fol/main.cpp" "$current_out_fol/main.cpp"
cp "$current_in_fol/game_application.h" "$current_out_fol/game_application.h"
cp "$current_in_fol/game_scene.h" "$current_out_fol/game_scene.h"
cp "$current_in_fol/game_scene.cpp" "$current_out_fol/game_scene.cpp"
cp "$project_root_folder/icon.png" "$current_out_fol/icon.png"
# SFWL
# SFWL Common files
cp "$project_root_folder/.clang-format" "$sfwl_out_folder/.clang-format"
cp "$project_root_folder/.clang-tidy" "$sfwl_out_folder/.clang-tidy"
cp "$project_root_folder/.editorconfig" "$sfwl_out_folder/.editorconfig"
cp "$project_root_folder/.gitignore" "$sfwl_out_folder/.gitignore"
cp "$project_root_folder/LICENSE.txt" "$sfwl_out_folder/LICENSE.txt"
cp "$project_root_folder/README.md" "$sfwl_out_folder/README.md"
cp "$project_root_folder/icon.png" "$sfwl_out_folder/icon.png"
# 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"
cp "$project_root_folder/tools/doc/out/processed/sfwl_full.html" "$sfwl_out_folder/split/sfwl.html"
# SFWL Merged
# Core
current_in_fol=$project_root_folder/tools/merger/out/sfwl_core
current_out_fol=$sfwl_out_folder/merged/core
mkdir -p "$current_out_fol"
cp "$current_in_fol/sfwl.h" "$current_out_fol/sfwl.h"
cp "$current_in_fol/sfwl.cpp" "$current_out_fol/sfwl.cpp"
cp "$doc_folder/sfwl_core.html" "$current_out_fol/sfwl.html"
# Full
current_in_fol=$project_root_folder/tools/merger/out/sfwl_full
current_out_fol=$sfwl_out_folder/merged/full
mkdir -p "$current_out_fol"
cp "$current_in_fol/sfwl.h" "$current_out_fol/sfwl.h"
cp "$current_in_fol/sfwl.cpp" "$current_out_fol/sfwl.cpp"
cp "$doc_folder/sfwl_full.html" "$current_out_fol/sfwl.html"
# SFW Demos
# Minimal APP
current_out_fol=$sfwl_out_folder/demos/sfwl_doc_merger
current_in_fol=$project_root_folder/tools/merger/out/sfwl_full
cp -R "$project_root_folder/demos/build_scripts/sfwl/" "$current_out_fol"
cp "$current_in_fol/sfwl.h" "$current_out_fol/sfwl.h"
cp "$current_in_fol/sfwl.cpp" "$current_out_fol/sfwl.cpp"
current_in_fol=$project_root_folder/demos/sfwl_doc_merger
cp "$current_in_fol/main.cpp" "$current_out_fol/main.cpp"
cp "$current_in_fol/code_remaining_template.md.html" "$current_out_fol/code_remaining_template.md.html"
cp "$current_in_fol/code_template.md.html" "$current_out_fol/code_template.md.html"
cp "$current_in_fol/compilation_no_renderer.md.html" "$current_out_fol/compilation_no_renderer.md.html"
cp "$current_in_fol/compilation_renderer.md.html" "$current_out_fol/compilation_renderer.md.html"
cp "$current_in_fol/index_remaining_template.md.html" "$current_out_fol/index_remaining_template.md.html"
cp "$current_in_fol/licenses_renderer.md.html" "$current_out_fol/licenses_renderer.md.html"
cp "$current_in_fol/markdeep.min.js" "$current_out_fol/markdeep.min.js"
cp "$current_in_fol/run.sh" "$current_out_fol/run.sh"
cp "$current_in_fol/sfwl_full_template.html" "$current_out_fol/sfwl_full_template.html"
cp "$current_in_fol/slate.css" "$current_out_fol/slate.css"
# ==== Zip everything ====
cd $(pwd)/tools/release/out
zip -q -r sfw_v${version}.zip ./sfw/*
zip -q -r sfwl_v${version}.zip ./sfwl/*