this repo has no description
at main 140 lines 3.5 kB view raw
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"