src="fishladder.c"
target="fishladder"
lib="-I. -L./lib -L./"
-libs="-lGL -lglfw -lX11 -lXxf86vm -lXrandr -lm -lpthread -lXi -ldl" # -l:steam/libsteam_api.so"
-flags="-fsanitize=address -ggdb3 -Wno-unused-function -DNO_STEAM"
+libs="-lGL -lglfw -lX11 -lXxf86vm -lXrandr -lm -lpthread -lXi -ldl"
+steam_part="-l:steam/libsteam_api.so"
+flags="-fsanitize=address -ggdb3 -Wno-unused-function"
+build_dir="build.linux"
+steam_api="libsteam_api.so"
+
+if [[ "$OSTYPE" != "linux-gnu"* ]]; then
+ echo "Operating system is not GNU/Linux, windows will be assumed."
+
+ target="fishladder.exe"
+ libs="-lglfw3 -lopengl32 -lm -mwindows"
+ flags="-ggdb3 -Wno-unused-function"
+ build_dir="build.win32"
+ steam_api="steam_api.dll"
+fi
run_after=false
do_build=true
+compile_tools=false
+#compile_models=false
while (( "$#" )); do
case $1 in
-r|--release)
- flags="-O3"
+ flags="-O3 -Wno-unused-function"
echo "Release mode"
;;
-p|--play)
run_after=true
echo "& Run"
;;
+ -s|--no-steam)
+ steam_part=""
+ defines="-DNO_STEAM"
+ echo "no-steam"
+ ;;
-n|--nobuild)
do_build=false
echo "no-build"
;;
+ -t|--tools)
+ compile_tools=true
+ echo "build-tools"
+ ;;
+ #-m|--models)
+ # compile_models=true
+ # echo "build-models"
+ #;;
*)
echo "Unkown param: $1"
exit 1
shift
done
+# Tools
+if [ "$compile_tools" = true ]; then
+ echo "Building tools"
+ mkdir tools -p
+ gcc -Wall -Wstrict-aliasing=3 $lib $flags mdlcomp.c gl/glad.c -o tools/mdlcomp $libs $steam_part -Wl,-rpath=./ $defines
+ gcc -Wall -Wstrict-aliasing=3 $lib $flags fontcomp.c gl/glad.c -o tools/fontcomp $libs $steam_part -Wl,-rpath=./ $defines
+ gcc -Wall -Wstrict-aliasing=3 $lib $flags texsheet.c gl/glad.c -o tools/texsheet $libs $steam_part -Wl,-rpath=./ $defines
+ gcc $lib qoiconv.c -std=c99 -O3 -o tools/qoiconv
+fi
+
+# Resources
+mkdir _temp_textures
+# Convert all png to qoi
+echo "Compiling textures"
+for f in textures/*.png;
+ do echo "-> qoi: $f";
+ ./tools/qoiconv $f ./_temp_textures/"$(basename "$f" .png).qoi"
+done
+
+# Autocombine textures
+auto_combine=""
+cd textures_combine
+for f in *.png;
+ do echo "[combine] $f";
+ auto_combine="$auto_combine $f"
+done
+../tools/texsheet ../_temp_textures/autocombine.qoi ../sprites_autocombine.h sprites_auto_combine $auto_combine
+cd ..
+
+# Compile font file
+./tools/fontcomp fonts/vg_font.png vg/vg_pxfont.h
+
# Main build
if [ "$do_build" = true ]; then
- gcc -Wall -Wstrict-aliasing=3 $lib $flags $src gl/glad.c -o $target $libs -Wl,-rpath=./ $defines
+ gcc -Wall -Wstrict-aliasing=3 $lib $flags $src gl/glad.c -o $target $libs $steam_part -Wl,-rpath=./ $defines
if [ $? -ne 0 ]; then
echo "GCC build failed"
echo "Build succeeded"
fi
-# Directories to initialize
-mkdir build.linux/cfg -p
-mkdir build.linux/textures -p
+mkdir $build_dir/cfg -p
+mkdir $build_dir/textures -p
+mkdir $build_dir/sound -p
+mkdir $build_dir/maps -p
+mkdir $build_dir/sav -p
-cp $target ./build.linux/$target
-cp ./steam/libsteam_api.so ./build.linux/libsteam_api.so
-cp -r ./textures/ ./build.linux/
+cp $target $build_dir/$target
+cp ./steam/$steam_api $build_dir/$steam_api
+rm -r $build_dir/textures
+mv ./_temp_textures/ $build_dir/textures
+cp -r ./sound/ $build_dir
+cp -r ./maps/ $build_dir
if [ "$run_after" = true ]; then
echo "Playing"
- cd ./build.linux/
+ cd $build_dir
./$target
cd ./../
fi