Merge branch 'master' of harrygodden.com:/home/fishladder into master
[fishladder.git] / build.sh
1 # Copyright (C) 2021 Harry Godden (hgn) - All Rights Reserved
2
3 src="fishladder.c"
4 target="fishladder"
5 lib="-I. -L./lib -L./"
6 libs="-lGL -lglfw -lX11 -lXxf86vm -lXrandr -lm -lpthread -lXi -ldl -l:steam/libsteam_api.so"
7 flags="-fsanitize=address -ggdb3 -Wno-unused-function -DNO_STEAM"
8 build_dir="build.linux"
9
10 if [[ "$OSTYPE" != "linux-gnu"* ]]; then
11 echo "Operating system is not GNU/Linux, windows will be assumed."
12
13 target="fishladder.exe"
14 libs="-lglfw3 -lopengl32 -lm -mwindows"
15 flags="-ggdb3 -Wno-unused-function -DNO_STEAM"
16 build_dir="build.win32"
17 fi
18
19 run_after=false
20 do_build=true
21 compile_tools=false
22 compile_models=false
23
24 while (( "$#" )); do
25 case $1 in
26 -r|--release)
27 flags="-O3 -Wno-unused-function"
28 echo "Release mode"
29 ;;
30 -p|--play)
31 run_after=true
32 echo "& Run"
33 ;;
34 -n|--nobuild)
35 do_build=false
36 echo "no-build"
37 ;;
38 -t|--tools)
39 compile_tools=true
40 echo "build-tools"
41 ;;
42 -m|--models)
43 compile_models=true
44 echo "build-models"
45 ;;
46 *)
47 echo "Unkown param: $1"
48 exit 1
49 ;;
50 esac
51 shift
52 done
53
54 # Tools
55 if [ "$compile_tools" = true ]; then
56 echo "Building tools"
57 mkdir tools -p
58 gcc -Wall -Wstrict-aliasing=3 $lib $flags mdlcomp.c gl/glad.c -o tools/mdlcomp $libs -Wl,-rpath=./ $defines
59 gcc -Wall -Wstrict-aliasing=3 $lib $flags fontcomp.c gl/glad.c -o tools/fontcomp $libs -Wl,-rpath=./ $defines
60 gcc $lib qoiconv.c -std=c99 -O3 -o tools/qoiconv
61 fi
62
63 # Resources
64 if [ "$compile_models" = true ]; then
65 echo "Recompiling models"
66 for f in models/*.obj;
67 do echo "Compiling $f..";
68 ./tools/mdlcomp $f $f.h
69 done
70 fi
71
72 # Convert all png to qoi
73 echo "Compiling textures"
74 mkdir _temp_textures
75 for f in textures/*.png;
76 do echo "-> qoi: $f";
77 ./tools/qoiconv $f ./_temp_textures/"$(basename "$f" .png).qoi"
78 done
79
80 # Main build
81 if [ "$do_build" = true ]; then
82 gcc -Wall -Wstrict-aliasing=3 $lib $flags $src gl/glad.c -o $target $libs -Wl,-rpath=./ $defines
83
84 if [ $? -ne 0 ]; then
85 echo "GCC build failed"
86 exit 1
87 fi
88
89 echo "Build succeeded"
90 fi
91
92 mkdir $build_dir/cfg -p
93 mkdir $build_dir/textures -p
94 mkdir $build_dir/sound -p
95 mkdir $build_dir/maps -p
96 mkdir $build_dir/sav -p
97
98 cp $target $build_dir/$target
99 cp ./steam/libsteam_api.so $build_dir/libsteam_api.so
100 rm -r $build_dir/textures
101 mv ./_temp_textures/ $build_dir/textures
102 cp -r ./sound/ $build_dir
103 cp -r ./maps/ $build_dir
104
105 if [ "$run_after" = true ]; then
106 echo "Playing"
107
108 cd $build_dir
109 ./$target
110 cd ./../
111 fi