this repo has no description
1#!/bin/bash
2
3FRESH=false
4ASAN=false
5PRO=false
6DEBUG=false
7STATIC=false
8WARNINGS=false
9USE_CLANG=false
10BUILD_TYPE="MinSizeRel"
11COMPILER_FLAGS=""
12DEBUG_FLAGS=""
13PRO_VERSION_FLAG=""
14STATIC_FLAG=""
15WARNING_FLAGS="-Wall -Wextra"
16
17THREADS=$(nproc)
18
19while (( "$#" )); do
20 case "$1" in
21 -f|--fresh)
22 FRESH=true
23 shift
24 ;;
25 -a|--asan)
26 ASAN=true
27 shift
28 ;;
29 -p|--pro)
30 PRO=true
31 shift
32 ;;
33 -d|--debug)
34 DEBUG=true
35 shift
36 ;;
37 -s|--static)
38 STATIC=true
39 shift
40 ;;
41 -w|--warnings)
42 WARNINGS=true
43 shift
44 ;;
45 -c|--clang)
46 USE_CLANG=true
47 shift
48 ;;
49 -j|--jobs)
50 THREADS="$2"
51 shift 2
52 ;;
53 --)
54 shift
55 break
56 ;;
57 -*)
58 echo "Unknown option: $1" >&2
59 exit 1
60 ;;
61 *)
62 echo "Invalid argument: $1" >&2
63 exit 1
64 ;;
65 esac
66done
67
68if [ "$USE_CLANG" = true ]; then
69 CLANG=$(which clang)
70 CLANGPP=$(which clang++)
71 if [ -z "$CLANG" ] || [ -z "$CLANGPP" ]; then
72 echo "clang or clang++ not found. Please ensure they are installed and in your PATH."
73 exit 1
74 fi
75 COMPILER_FLAGS="-DCMAKE_C_COMPILER=$CLANG -DCMAKE_CXX_COMPILER=$CLANGPP"
76 echo "Using clang at $CLANG and clang++ at $CLANGPP"
77else
78 GCC=$(which gcc)
79 GPP=$(which g++)
80 if [ -z "$GCC" ] || [ -z "$GPP" ]; then
81 echo "gcc or g++ not found. Please ensure they are installed and in your PATH."
82 exit 1
83 fi
84 COMPILER_FLAGS="-DCMAKE_C_COMPILER=$GCC -DCMAKE_CXX_COMPILER=$GPP"
85 echo "Using gcc at $GCC and g++ at $GPP"
86fi
87
88if [ "$FRESH" = true ]; then
89 rm -rf .cache CMakeCache.txt CMakeFiles/ cmake_install.cmake
90 rm -rf build && git restore 'build/*'
91fi
92
93if [ "$ASAN" = true ]; then
94 DEBUG=true
95 DEBUG_FLAGS="-DBUILD_NO_OPTIMIZATION=On -DBUILD_ASAN_DEBUG=On"
96fi
97
98if [ "$PRO" = true ]; then
99 PRO_VERSION_FLAG="-DBUILD_PRO=On"
100fi
101
102if [ "$DEBUG" = true ]; then
103 BUILD_TYPE="Debug"
104fi
105
106if [ "$STATIC" = true ]; then
107 STATIC_FLAG="-DBUILD_STATIC=On"
108fi
109
110if [ "$WARNINGS" = true ]; then
111 COMPILER_FLAGS="$COMPILER_FLAGS -DCMAKE_C_FLAGS=$WARNING_FLAGS -DCMAKE_CXX_FLAGS=$WARNING_FLAGS"
112fi
113
114echo
115echo "+--------------------------------+-------+"
116echo "| Build Options | Value |"
117echo "+--------------------------------+-------+"
118echo "| Fresh build (-f, --fresh) | $(printf "%-5s" $([ "$FRESH" = true ] && echo "Yes" || echo "No")) |"
119echo "| Address Sanitizer (-a, --asan) | $(printf "%-5s" $([ "$ASAN" = true ] && echo "Yes" || echo "No")) |"
120echo "| Pro version (-p, --pro) | $(printf "%-5s" $([ "$PRO" = true ] && echo "Yes" || echo "No")) |"
121echo "| Debug build (-d, --debug) | $(printf "%-5s" $([ "$DEBUG" = true ] && echo "Yes" || echo "No")) |"
122echo "| Static build (-s, --static) | $(printf "%-5s" $([ "$STATIC" = true ] && echo "Yes" || echo "No")) |"
123echo "| Warnings (-w, --warnings) | $(printf "%-5s" $([ "$WARNINGS" = true ] && echo "Yes" || echo "No")) |"
124echo "| Use Clang (-c, --clang) | $(printf "%-5s" $([ "$USE_CLANG" = true ] && echo "Yes" || echo "No")) |"
125echo "| Parallel jobs (-j, --jobs) | $(printf "%-5s" "$THREADS") |"
126echo "+--------------------------------+-------+"
127echo
128
129cd ./build || exit
130
131cmake -DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
132 $PRO_VERSION_FLAG \
133 -DBUILD_SDLGPU=On \
134 $DEBUG_FLAGS \
135 $COMPILER_FLAGS \
136 $STATIC_FLAG \
137 -DBUILD_WITH_ALL=On \
138 -DCMAKE_EXPORT_COMPILE_COMMANDS=On \
139 .. && \
140cmake --build . --config "$BUILD_TYPE" --parallel "$THREADS"