-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild.sh
executable file
·98 lines (92 loc) · 2.44 KB
/
build.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/bash
set -e
LLVM_DIR="/usr/lib/llvm-14"
BUILD_DIR="build"
BUILD_TYPE="Debug"
C_COMPILER="clang"
CXX_COMPILER="clang++"
CCACHE="ccache"
GENERATOR="Ninja"
usage() {
echo "Usage: $0 <command> [options]"
echo "Commands:"
echo " configure - Configure the project using CMake"
echo " clean - Clean the build directory"
echo " build - Build the project"
echo " all - Configure, clean, and build the project"
echo "Options:"
echo " --llvm-dir <path> - Set LLVM_DIR (default: $LLVM_DIR)"
echo " --build-dir <path> - Set BUILD_DIR (default: $BUILD_DIR)"
echo " --build-type <type> - Set CMAKE_BUILD_TYPE (default: $BUILD_TYPE)"
echo " --c-compiler <path> - Set CMAKE_C_COMPILER (default: $C_COMPILER)"
echo " --cxx-compiler <path>- Set CMAKE_CXX_COMPILER (default: $CXX_COMPILER)"
echo " --ccache <path> - Set CMAKE_CXX_COMPILER_LAUNCHER (default: $CCACHE)"
echo " --generator <path> - Set CMAKE_GENERATOR (default: $GENERATOR)"
exit 1
}
while [[ $# -gt 0 ]]; do
case $1 in
--build-dir)
BUILD_DIR="$2"
shift 2
;;
--llvm-dir)
LLVM_DIR="$2"
shift 2
;;
--build-type)
BUILD_TYPE="$2"
shift 2
;;
--c-compiler)
C_COMPILER="$2"
shift 2
;;
--cxx-compiler)
CXX_COMPILER="$2"
shift 2
;;
--ccache)
CCACHE="$2"
shift 2
;;
--generator)
GENERATOR="$2"
shift 2
;;
*)
break
;;
esac
done
if [ $# -eq 0 ]; then
usage
fi
case "$1" in
configure)
mkdir -p "$BUILD_DIR"
cmake -S . -B "$BUILD_DIR" \
-DLLVM_DIR:PATH="$LLVM_DIR" \
-DCMAKE_BUILD_TYPE:STRING="$BUILD_TYPE" \
-DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE \
-DCMAKE_C_COMPILER:FILEPATH="$C_COMPILER" \
-DCMAKE_CXX_COMPILER:FILEPATH="$CXX_COMPILER" \
-DCMAKE_CXX_COMPILER_LAUNCHER:FILEPATH="$CCACHE" \
-G "$GENERATOR"
;;
clean)
rm -rf "$BUILD_DIR"
;;
build)
cmake --build "$BUILD_DIR"
;;
all)
"$0" clean
"$0" configure
"$0" build
;;
*)
echo "Error: Unknown command '$1'" >&2
usage
;;
esac