#!/bin/bash set -eu # SHADERS shader_compiler="glslc" shader_flags="--target-spv=spv1.5 -std=460 --target-env=vulkan1.3" shader_out="-oassets/shaders/" mkdir -p assets/shaders for shader in src/shaders/*.glsl; do base_name=$(basename -- "$shader" .glsl) case "$base_name" in *.vert) shader_stage="-fshader-stage=vert" ;; *.frag) shader_stage="-fshader-stage=frag" ;; *.tesc) shader_stage="-fshader-stage=tesc" ;; *.tese) shader_stage="-fshader-stage=tese" ;; *.geom) shader_stage="-fshader-stage=geom" ;; *.comp) shader_stage="-fshader-stage=comp" ;; *) continue ;; esac $shader_compiler $shader_flags $shader_stage $shader "${shader_out}${base_name}.spv" done if [ -x "$(command -v g++)" ]; then cpp_compiler="g++"; c_compiler="gcc"; elif [ -x "$(command -v clang++)" ]; then cpp_compiler="clang++"; c_compiler="clang"; else echo "Unable to find c++ cpp_compiler"; exit -1; fi; if [ -x "$(command -v mold)" ]; then linker_cmd="-fuse-ld=mold"; elif [ -x "$(command -v lld)" ]; then linker_cmd="-fuse-ld=lld"; elif [ -x "$(command -v ld)" ]; then linker_cmd="-fuse-ld=ld"; else echo "Unable to find c/c++ linker"; exit -1; fi; # VMA src="external/vma/vma.cpp" flags="-std=c++20 -D_USE_MATH_DEFINES -Iexternal/vma -c -Wno-everything -static" out="-o" obj="build/vma.o" lib="build/libvma.a" if ! [ -f build/libvma.a ]; then $cpp_compiler $flags $src $out $obj ar rcs $lib $obj rm $obj fi # XXHASH src="external/xxhash/xxhash.c" flags="-std=c99 -Wno-everything -Iexternal/xxhash -c -static" obj="build/xxhash.o" lib="build/libxxhash.a" if ! [ -f build/libxxhash.a ]; then $c_compiler $flags $src $out $obj ar rcs $lib $obj rm $obj fi # STB_IMAGE src="external/stb/stb.c" flags="-std=c99 -Wno-everything -Iexternal/stb -c -static" obj="build/stb.o" lib="build/libstb.a" if ! [ -f build/libstb.a ]; then $c_compiler $flags $src $out $obj ar rcs $lib $obj rm $obj fi # M3D src="external/m3d/m3d.c" flags="-std=c99 -Wno-everything -Iexternal/m3d -c -static" obj="build/m3d.o" lib="build/libm3d.a" if ! [ -f build/libm3d.a ]; then $c_compiler $flags $src $out $obj ar rcs $lib $obj rm $obj fi # CGLM src="external/cglm/cglm.c" flags="-std=c99 -Wno-everything -Iexternal/cglm -c -static" obj="build/cglm.o" lib="build/libcglm.a" if ! [ -f build/libcglm.a ]; then $c_compiler $flags $src $out $obj ar rcs $lib $obj rm $obj fi if ! [ -f build/atlas.png ]; then msdf-atlas-gen -font assets/fonts/NuberNextCondensed-DemiBold.otf -dimensions 256 256 -type softmask -imageout build/atlas.png -json build/atlas.json fi if ! [ -f assets/textures/atlas.png ]; then cp build/atlas.png assets/textures/atlas.png mkdir -p assets/data cp build/atlas.json assets/data/atlas.json fi