Files
Modularity/build.sh

79 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
start_time=$(date +%s)
finish() {
local exit_code=$?
local end_time=$(date +%s)
local duration=$((end_time - start_time))
if [ $exit_code -eq 0 ]; then
echo -e "================================\n Modularity - Native Linux Build Complete\n================================"
echo -e "[Complete]: Your Modularity Build Completed in ${duration}s!\nThe build should be located under Modularity within another folder called 'Build'"
else
echo -e "================================\n Modularity - Native Linux Build Failed\n================================"
echo "[Failed]: Your Modularity Build Failed after ${duration}s (exit code ${exit_code})."
fi
exit $exit_code
}
trap finish EXIT
echo -e "================================\n Modularity - Native Linux Builder\n================================"
clean_build=0
for arg in "$@"; do
if [ "$arg" = "--clean" ]; then
clean_build=1
fi
done
git submodule update --init --recursive
if [ -d "build" ] && [ $clean_build -eq 1 ]; then
echo -e "[i]: Cleaning existing build directory..."
rm -rf build/
echo -e "[i]: Build Has been Removed\nContinuing build"
fi
mkdir -p build
cd build
cmake .. -DMONO_ROOT=/usr
cmake --build . -- -j"$(nproc)"
mkdir -p Packages/ThirdParty
find . -type f \( -name "*.a" -o -name "*.so" -o -name "*.dylib" -o -name "*.lib" \) \
-not -path "./Packages/*" -exec cp -f {} Packages/ThirdParty/ \;
mkdir -p Packages/Engine
find . -type f \( -name "libcore*" -o -name "core*.lib" -o -name "core*.dll" \) \
-not -path "./Packages/*" -exec cp -f {} Packages/Engine/ \;
cd ..
player_cache_dir="build/player-cache"
if [ $clean_build -eq 1 ] && [ -d "$player_cache_dir" ]; then
echo -e "[i]: Cleaning player cache build directory..."
rm -rf "$player_cache_dir"
fi
mkdir -p "$player_cache_dir"
cmake -S . -B "$player_cache_dir" -DMONO_ROOT=/usr -DCMAKE_BUILD_TYPE=Release -DMODULARITY_BUILD_EDITOR=OFF
cmake --build "$player_cache_dir" --target ModularityPlayer -- -j"$(nproc)"
mkdir -p "$player_cache_dir/Packages/ThirdParty"
find "$player_cache_dir" -type f \( -name "*.a" -o -name "*.so" -o -name "*.dylib" -o -name "*.lib" \) \
-not -path "$player_cache_dir/Packages/*" -exec cp -f {} "$player_cache_dir/Packages/ThirdParty/" \;
mkdir -p "$player_cache_dir/Packages/Engine"
find "$player_cache_dir" -type f \( -name "libcore*" -o -name "core*.lib" -o -name "core*.dll" \) \
-not -path "$player_cache_dir/Packages/*" -exec cp -f {} "$player_cache_dir/Packages/Engine/" \;
cd build
cp -r ../Resources .
cp Resources/imgui.ini .
ln -sf build/compile_commands.json compile_commands.json