switch from png to qoi textures
[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
9 if [[ "$OSTYPE" != "linux-gnu"* ]]; then
10 echo "Operating system is not GNU/Linux, windows will be assumed."
11 target="fishladder.exe"
12 libs="-lglfw3 -lopengl32 -lm -mwindows"
13 flags="-ggdb3 -Wno-unused-function -DNO_STEAM"
14 fi
15
16 run_after=false
17 do_build=true
18 compile_tools=false
19 compile_models=false
20
21 while (( "$#" )); do
22 case $1 in
23 -r|--release)
24 flags="-O3 -Wno-unused-function -DNO_STEAM"
25 echo "Release mode"
26 ;;
27 -p|--play)
28 run_after=true
29 echo "& Run"
30 ;;
31 -n|--nobuild)
32 do_build=false
33 echo "no-build"
34 ;;
35 -t|--tools)
36 compile_tools=true
37 echo "build-tools"
38 ;;
39 -m|--models)
40 compile_models=true
41 echo "build-models"
42 ;;
43 *)
44 echo "Unkown param: $1"
45 exit 1
46 ;;
47 esac
48 shift
49 done
50
51 # Tools
52 if [ "$compile_tools" = true ]; then
53 echo "Building tools"
54 mkdir tools -p
55 gcc -Wall -Wstrict-aliasing=3 $lib $flags mdlcomp.c gl/glad.c -o tools/mdlcomp $libs -Wl,-rpath=./ $defines
56 gcc -Wall -Wstrict-aliasing=3 $lib $flags fontcomp.c gl/glad.c -o tools/fontcomp $libs -Wl,-rpath=./ $defines
57 gcc $lib qoiconv.c -std=c99 -O3 -o tools/qoiconv
58 fi
59
60 # Resources
61 if [ "$compile_models" = true ]; then
62 echo "Recompiling models"
63 for f in models/*.obj;
64 do echo "Compiling $f..";
65 ./tools/mdlcomp $f $f.h
66 done
67 fi
68
69 # Convert all png to qoi
70 echo "Compiling textures"
71 mkdir _temp_textures
72 for f in textures/*.png;
73 do echo "-> qoi: $f";
74 ./tools/qoiconv $f ./_temp_textures/"$(basename "$f" .png).qoi"
75 done
76
77 # Main build
78 if [ "$do_build" = true ]; then
79 gcc -Wall -Wstrict-aliasing=3 $lib $flags $src gl/glad.c -o $target $libs -Wl,-rpath=./ $defines
80
81 if [ $? -ne 0 ]; then
82 echo "GCC build failed"
83 exit 1
84 fi
85
86 echo "Build succeeded"
87 fi
88
89 if [[ "$OSTYPE" == "linux-gnu"* ]]; then
90 # Directories to initialize
91 mkdir build.linux/cfg -p
92 mkdir build.linux/textures -p
93 mkdir build.linux/sound -p
94 mkdir build.linux/maps -p
95
96 cp $target ./build.linux/$target
97 cp ./steam/libsteam_api.so ./build.linux/libsteam_api.so
98 rm -r ./build.linux/textures
99 mv ./_temp_textures/ ./build.linux/textures
100 cp -r ./sound/ ./build.linux/
101 cp -r ./maps/ ./build.linux/
102
103 if [ "$run_after" = true ]; then
104 echo "Playing"
105
106 cd ./build.linux/
107 ./$target
108 cd ./../
109 fi
110 else
111 mkdir build.win32/cfg -p
112 mkdir build.win32/textures -p
113 mkdir build.win32/sound -p
114 mkdir build.win32/maps -p
115
116 cp $target ./build.win32/$target
117 rm -r ./build.win32/textures
118 mv ./_temp_textures/ ./build.win32/textures
119 cp -r ./sound/ ./build.win32/
120 cp -r ./maps/ ./build.win32/
121 cp ./lib/glfw3.dll ./build.win32/glfw3.dll
122
123 if [ "$run_after" = true ]; then
124 echo "Playing"
125
126 cd ./build.win32/
127 ./$target
128 cd ./../
129 fi
130 fi