88 lines
2.8 KiB
Bash
Executable File
88 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -eu
|
|
|
|
|
|
for arg in "$@"; do declare $arg="1"; done
|
|
if [ ! -v clang ]; then gcc=1; fi
|
|
if [ ! -v release ]; then debug=1; fi
|
|
if [ -v debug ]; then echo "[debug mode]"; fi
|
|
if [ -v release ]; then echo "[release mode]"; fi
|
|
if [ -v gcc ]; then compiler="g++"; echo "[gcc compiler]"; fi
|
|
if [ -v clang ]; then compiler="clang++"; echo "[clang compiler]"; fi
|
|
|
|
if [ -v shaders ]; then
|
|
echo "Bulding shaders..."
|
|
/bin/bash ./build-shaders.sh
|
|
fi
|
|
|
|
# Axle
|
|
src="../src/entry_linux.cpp"
|
|
includes="-I../src/ -I../external/ -I../external/glad/include"
|
|
out="-o"
|
|
name="Axle"
|
|
linker_cmd=" "
|
|
link="-lpthread -lm -lrt -ldl -lxcb -lX11 -lGL -lXrandr"
|
|
|
|
# Codegen
|
|
codegen_src="../src/codegen.cpp"
|
|
codegen_name="Codegen"
|
|
codegen_flag="-DBUILD_CODEGEN"
|
|
|
|
# Packer
|
|
packer_src="../src/packer.cpp"
|
|
packer_name="Packer"
|
|
packer_flag="-DBUILD_PACKER"
|
|
|
|
if [ -x "$(command -v mold)" ]; then
|
|
linker_cmd="-fuse-ld=mold"
|
|
fi
|
|
|
|
# clang
|
|
clang_common="${includes} ${linker_cmd} -DCOMPILER_CLANG -std=c++11 -Xclang -flto-visibility-public-std -Wno-write-strings -fdiagnostics-absolute-paths -Wall -Wno-missing-braces -Wno-unused-function -Wno-writable-strings -Wno-unused-value -Wno-unused-variable -Wno-deprecated-register -Wno-deprecated-declarations -Wno-unused-but-set-variable -Wno-single-bit-bitfield-constant-conversion -Wno-initializer-overrides -Wno-for-loop-analysis -ferror-limit=60"
|
|
clang_debug="$compiler -g -O0 -DBUILD_DEBUG=1 ${clang_common}"
|
|
clang_release="$compiler -O2 ${clang_common}"
|
|
clang_test="$compiler -O2 -DBUILD_TEST=1 ${clang_common}"
|
|
|
|
# gcc
|
|
gcc_common="${includes} ${linker_cmd} -DCOMPILER_GCC -std=c++11 -fmax-errors=5 -Wall -Wno-write-strings -Wno-missing-braces -Wno-unused-function -Wno-attributes -Wno-unused-value -Wno-unused-variable -Wno-deprecated-declarations -Wno-unused-but-set-variable -D_USE_MATH_DEFINES -Dstrdup=_strdup -Dgnu_printf=printf -fzero-init-padding-bits=unions"
|
|
gcc_debug="$compiler -g -O0 -DBUILD_DEBUG=1 ${gcc_common}"
|
|
gcc_release="$compiler -O2 ${gcc_common}"
|
|
gcc_test="$compiler -O0 -DBUILD_TEST=1 ${gcc_common}"
|
|
|
|
if [ -v gcc ]; then compile_debug="$gcc_debug"; fi
|
|
if [ -v gcc ]; then compile_release="$gcc_release"; fi
|
|
|
|
if [ -v clang ]; then compile_debug="$clang_debug"; fi
|
|
if [ -v clang ]; then compile_release="$clang_release"; fi
|
|
|
|
if [ -v debug ]; then compile="$compile_debug"; fi
|
|
if [ -v release ]; then compile="$compile_release"; fi
|
|
|
|
mkdir -p build
|
|
|
|
cd assets
|
|
|
|
mkdir -p shaders
|
|
|
|
cd ../build
|
|
|
|
if [ -v codegen ]; then
|
|
echo "Building codegen..."
|
|
$compile $codegen_src $codegen_flag $link $out $codegen_name
|
|
./$codegen_name
|
|
fi
|
|
|
|
if [ -v packer ]; then
|
|
echo "Building packer..."
|
|
$compile $packer_src $packer_flag $link $out $packer_name
|
|
fi
|
|
|
|
if [ -v pack ]; then
|
|
echo "Packing assets..."
|
|
./$packer_name
|
|
./$codegen_name
|
|
fi
|
|
|
|
$compile $src $link $out $name
|
|
|