-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathcppkin.sh
executable file
·123 lines (115 loc) · 3.79 KB
/
cppkin.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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/bin/bash
SCRIPT_DIR=$(dirname "$0")
display_help(){
echo " "
echo "cppkin config [options]..."
echo "Install Install related options."
echo "======="
echo "--3rd_loc_prefix=<PREFIX> 3rd party install area prefix. "
echo " "
echo "--output_dir=<DIR> cppkin installation dir. "
echo " "
echo "--debug debug build, otherwise - release."
echo " "
echo "Other options "
echo "============= "
echo " "
echo "--with_tests Run and install cppkin tests "
echo " "
echo "--with_examples Compile cppkin examples "
echo " "
echo "--python_binding=<PRODUCT> cppkin being exported by - "
echo " pyBind|sweetPy. Default=pyBind "
}
clean_cmake_cache(){
declare -a commands=("rm -rf CMakeFiles"
"rm -rf CMakeFiles"
"rm CMakeCache.txt"
"rm *.cbp"
"rm cmake_install.cmake"
"rm compile_commands.json")
for f in *; do
if [[ -d $f ]]; then
for command in "${commands[@]}"; do
cd $f
$command 2>/dev/null || true
cd ..
done
fi
done
for command in "${commands[@]}"; do
$command 2>/dev/null || true
done
}
config(){
WITH_TESTS=OFF
WITH_EXAMPLES=OFF
BUILD_TYPE=Release
THIRD_PARTY_PREFIX=""
OUTPUT_DIR=""
PYTHON_BINDING="pyBind"
for argument in "${@:2}"
do
case $argument in
--with_tests)
WITH_TESTS=ON
;;
--with_examples)
WITH_EXAMPLES=ON
;;
--debug)
BUILD_TYPE=Debug
;;
--3rd_loc_prefix=*)
THIRD_PARTY_PREFIX="${argument#*=}"
;;
--output_dir=*)
OUTPUT_DIR="${argument#*=}"
;;
--python_binding=*)
PYTHON_BINDING="${argument#*=}"
;;
esac
done
cmake $SCRIPT_DIR -DPRE_COMPILE_STEP=ON -D3RD_PARTY_INSTALL_STEP=ON -DCOMPILATION_STEP=ON -DWITH_TESTS=$WITH_TESTS -DWITH_EXAMPLES=$WITH_EXAMPLES -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DPROJECT_3RD_LOC:STRING=$THIRD_PARTY_PREFIX -DOUTPUT_DIR:STRING=$OUTPUT_DIR -DPYTHON_BINDING:STRING=$PYTHON_BINDING
}
while true; do
case $1 in
-h | --help)
display_help
if [ "$0" = "$BASH_SOURCE" ]
then
exit 0
else
return 0
fi
;;
config)
config $@
if [ "$0" = "$BASH_SOURCE" ]
then
exit 0
else
return 0
fi
;;
clean_cache)
clean_cmake_cache
if [ "$0" = "$BASH_SOURCE" ]
then
exit 0
else
return 0
fi
;;
*)
echo "supported commands - --help, config, clean_cache"
if [ "$0" = "$BASH_SOURCE" ]
then
exit 0
else
return 0
fi
;;
esac
done