art/sound/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"
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 fi
58
59 # Resources
60 if [ "$compile_models" = true ]; then
61 echo "Recompiling models"
62 for f in models/*.obj;
63 do echo "Compiling $f..";
64 ./tools/mdlcomp $f $f.h
65 done
66 fi
67
68 # Main build
69 if [ "$do_build" = true ]; then
70 gcc -Wall -Wstrict-aliasing=3 $lib $flags $src gl/glad.c -o $target $libs -Wl,-rpath=./ $defines
71
72 if [ $? -ne 0 ]; then
73 echo "GCC build failed"
74 exit 1
75 fi
76
77 echo "Build succeeded"
78 fi
79
80 if [[ "$OSTYPE" == "linux-gnu"* ]]; then
81 # Directories to initialize
82 mkdir build.linux/cfg -p
83 mkdir build.linux/textures -p
84 mkdir build.linux/sound -p
85
86 cp $target ./build.linux/$target
87 cp ./steam/libsteam_api.so ./build.linux/libsteam_api.so
88 cp -r ./textures/ ./build.linux/
89 cp -r ./sound/ ./build.linux/
90
91 if [ "$run_after" = true ]; then
92 echo "Playing"
93
94 cd ./build.linux/
95 ./$target
96 cd ./../
97 fi
98 else
99 mkdir build.win32/cfg -p
100 mkdir build.win32/textures -p
101 mkdir build.win32/sound -p
102
103 cp $target ./build.win32/$target
104 cp -r ./textures/ ./build.win32/
105 cp -r ./sound/ ./build.win32/
106 cp ./lib/glfw3.dll ./build.win32/glfw3.dll
107
108 if [ "$run_after" = true ]; then
109 echo "Playing"
110
111 cd ./build.win32/
112 ./$target
113 cd ./../
114 fi
115 fi