-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfigure
More file actions
90 lines (81 loc) · 2.92 KB
/
Copy pathconfigure
File metadata and controls
90 lines (81 loc) · 2.92 KB
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
#!/usr/bin/env sh
CMAKE_FILE="CMakeLists.txt"
show_help() {
echo "Usage: ./configure [OPTIONS]"
echo
echo "Standard options:"
echo " --fresh Fresh reconfigure"
echo " -B=DIR --dir=DIR --build-dir=DIR Build directory (./ by default)"
echo " -G=GEN --generator=GEN CMake generator (Ninja, Unix Makefiles, etc.)"
echo " --cc=PATH C compiler"
echo " --cxx=PATH C++ compiler"
echo " --ld=PATH Linker"
echo " --ar=PATH Archiver"
echo " --cflags=FLAGS C compiler flags"
echo " --cxxflags=FLAGS C++ compiler flags"
echo " --ldflags=FLAGS Linker flags"
echo
echo "Project options (from $CMAKE_FILE):"
echo
awk '
{
if ($0 ~ /^[[:space:]]*option[[:space:]]*\(/) {
line = $0
match(line, /option[[:space:]]*\(([A-Za-z0-9_]+)[[:space:]]*"([^"]*)"[[:space:]]*([A-Za-z0-9_]*)/, arr)
name = arr[1]
desc = arr[2]
def = arr[3]
printf(" %-22s %s", name, desc)
if (def != "") printf(" (default: %s)", def)
printf("\n")
}
}
' "$CMAKE_FILE"
echo
exit 0
}
# Initialize variables
FRESH=false
BUILDDIR=""
GENERATOR=""
CC=""
CXX=""
LD=""
AR=""
CFLAGS=""
CXXFLAGS=""
LDFLAGS=""
CMAKE_EXTRA=""
# Parse arguments
for arg in "$@"; do
case "$arg" in
--help|-h) show_help ;;
--fresh) FRESH=true ;;
-B=*|--dir=*|--build-dir=*) BUILDDIR="${arg#*=}" ;;
--generator=*) GENERATOR="${arg#*=}" ;;
--cc=*) CC="${arg#*=}" ;;
--cxx=*) CXX="${arg#*=}" ;;
--ld=*) LD="${arg#*=}" ;;
--ar=*) AR="${arg#*=}" ;;
--cflags=*) CFLAGS="${arg#*=}" ;;
--cxxflags=*) CXXFLAGS="${arg#*=}" ;;
--ldflags=*) LDFLAGS="${arg#*=}" ;;
*)
CMAKE_EXTRA="$CMAKE_EXTRA -D$arg"
;;
esac
done
# Build CMake flags
CMAKE_FLAGS=""
[ -n "$FRESH" ] && CMAKE_FLAGS="$CMAKE_FLAGS --fresh"
[ -n "$BUILDDIR" ] && CMAKE_FLAGS="$CMAKE_FLAGS -B \"$BUILDDIR\""
[ -n "$GENERATOR" ] && CMAKE_FLAGS="$CMAKE_FLAGS -G \"$GENERATOR\""
[ -n "$CC" ] && CMAKE_FLAGS="$CMAKE_FLAGS -DCMAKE_C_COMPILER=$CC"
[ -n "$CXX" ] && CMAKE_FLAGS="$CMAKE_FLAGS -DCMAKE_CXX_COMPILER=$CXX"
[ -n "$LD" ] && CMAKE_FLAGS="$CMAKE_FLAGS -DCMAKE_LINKER=$LD"
[ -n "$AR" ] && CMAKE_FLAGS="$CMAKE_FLAGS -DCMAKE_LINKER=$AR"
[ -n "$CFLAGS" ] && CMAKE_FLAGS="$CMAKE_FLAGS -DCMAKE_C_FLAGS='$CFLAGS'"
[ -n "$CXXFLAGS" ]&& CMAKE_FLAGS="$CMAKE_FLAGS -DCMAKE_CXX_FLAGS='$CXXFLAGS'"
[ -n "$LDFLAGS" ] && CMAKE_FLAGS="$CMAKE_FLAGS -DCMAKE_EXE_LINKER_FLAGS='$LDFLAGS'"
# Finally execute CMake
eval cmake -S . -B build $CMAKE_FLAGS $CMAKE_EXTRA