forked from solidoss/solidframe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfigure
executable file
·299 lines (272 loc) · 6.73 KB
/
configure
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
#! /bin/sh
make_cmake_list(){
if [ -e CMakeLists.txt ]; then
rm CMakeLists.txt
fi
if [ $1 = "*" ]; then
echo "No child folder found!"
echo "# Automaticaly created" >> CMakeLists.txt
else
echo "# Automaticaly created" >> CMakeLists.txt
for name in $*
do
if [ $name = "CMakeLists.txt" ]; then
echo "Skip CMakeLists.txt"
else
echo "Adding dir: " $name
echo -ne "add_subdirectory("$name")\r\n" >> CMakeLists.txt
fi
done
fi
}
print_usage(){
echo "Usage:"
echo -ne "\n./configure [-g|--generator GeneratorName] [-f|--folder FolderName] [-b|--build BuildType]"
echo -ne " [-p|--param ParamName] [-d|--documentation full/fast] [-h|--help]"
echo -ne " [-e|--extern-path ExternPath] [-P|--cmake-param]"
echo -ne " [-t|--enable-testing] [--test-name name] [--test-site addr] [-c|--create-lists] [-]\n"
echo
echo -ne "Options:\n"
echo "[-b|--build BuildType]: The cmake build type release/debug/nolog/maintain - default release"
echo "[-e|--extern-path ExternAbsPath]: absolute path to extern libraries"
echo "[-f|--folder-name FolderName]: Specify the build folder name - default is the generator name or the build type if the generator was not specified"
echo "[--prefix] Install path prefix"
echo
echo "[-g|--generator GeneratorName]: Specify the cmake generator - default cmake's default"
echo "[-F|--folder-path FolderPath]: Specify the build folder path - unlike the build folder-name wich creates a folder under build, this flag allows creating a build folder anywhere"
echo "[-d|--documentation full/fast]: Build either fast or full documentation"
echo "[-p|--param ParamName]: Extra compilation flags. E.g. -p \"-DUINDEX64 -DUSERVICEBITS=3\""
echo "[-P|--cmake-param]: Some parameters given to cmake like: -DECLIPSE_CDT4_GENERATE_SOURCE_PROJECT=TRUE"
echo
echo "Examples:"
echo
echo "1) create simple make release build:"
echo "$ ./configure -e ~/work/extern"
echo "$ cd build/release"
echo "$ make"
echo "$ sudo make install"
echo
echo "2) create debug build:"
echo "$ ./configure -b debug -e ~/work/extern --prefix ~/work/extern"
echo "$ cd build/debug"
echo "$ make install"
echo
echo "3) create a maintain build locate in \"./build/mnt\" with instalation prefix:"
echo "$ ./configure -f mnt -e ~/work/extern -b maintain --prefix ~/work/install"
echo "$ cd build/mnt"
echo "$ make install"
echo
exit
}
# if [ "$1" = "" ] ; then
# print_usage
# fi
# First define and initilaize the variables
GENERATOR=
#CMAKE_PARAM=()
DOCUMENTATION=
BUILD_TYPE=
FOLDER_NAME=
FOLDER_PATH=
HELP="no"
PARAM=
EXTERN_PATH=
ENABLE_TESTING=
TEST_NAME=
TEST_SITE=
CREATE_LISTS=
INSTALL_PREFIX=
#echo "$@"
pass_arg_count=0
#while [ "$#" -gt 0 ]; do
while [ $# -gt $pass_arg_count ]
do
CURRENT_OPT="$1"
UNKNOWN_ARG=no
case "$1" in
-g|--generator)
shift
GENERATOR=$1
;;
-f|--folder-name)
shift
FOLDER_NAME=$1
;;
-F|--folder-path)
shift
FOLDER_PATH=$1
;;
-b|--build)
shift
BUILD_TYPE=$1
;;
-d|--documentation)
if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
DOCUMENTATION="fast"
else
shift;
DOCUMENTATION=$1
fi
;;
-p|--param)
shift
PARAM=$PARAM"$1 "
;;
--prefix)
shift
INSTALL_PREFIX="$1"
;;
-P|--cmake-param)
shift
#CMAKE_PARAM=($CMAKE_PARAM "$1")
arg="$1"
set -- "$@" "$arg"
pass_arg_count=`expr $pass_arg_count + 1`
;;
# -e|--extern-path)
# if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
# EXTERN_PATH="extern"
# else
# shift;
# EXTERN_PATH=$1
# fi
# ;;
-e|--extern-path)
#if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
# EXTERN_PATH=""
#else
shift;
EXTERN_PATH=$1
#fi
;;
-c|--create-lists)
CREATE_LISTS="yes"
;;
-h|--help)
HELP="yes"
;;
-t|--enable-testing)
ENABLE_TESTING="yes"
;;
--test-name)
shift
TEST_NAME="$1"
;;
--test-site)
shift
TEST_SITE="$1"
;;
*)
HELP="yes"
;;
esac
shift
done
#echo "generator = $GENERATOR"
#echo "folder = $FOLDER_NAME"
#echo "build = $BUILD_TYPE"
#echo "documentation = $DOCUMENTATION"
#echo "parameters = $PARAM"
#echo "help = $HELP"
#echo "extern = $EXTERN"
#echo "parameters = $CMAKE_PARAM"
if [ "$HELP" = "yes" ]; then
print_usage
exit
fi
#if [ "$CREATE_LISTS" = "yes" ]; then
# if [ ! -d application ]; then
# mkdir application
# fi
# cd application
# make_cmake_list *
# cd ../
#
# if [ ! -d library ]; then
# mkdir library
# fi
# cd library
# make_cmake_list *
# cd ../
#
# exit
# fi
if [ ! -d $EXTERN_PATH ]; then
echo "Invalid prerequisites path: $EXTERN_PATH"
exit
fi
cd $EXTERN_PATH
EXTERN_PATH=`pwd`
cd -
echo "Using extern prerequisites from: $EXTERN_PATH"
if [ "$DOCUMENTATION" = "full" ]; then
echo "Building full documentation ..."
rm -rf documentation/html/
rm -rf documentation/latex/
doxygen documentation/Doxyfile
tar -cjf documentation/full.tar.bz2 documentation/html/ documentation/index.html
echo "Done building full documentation"
exit
fi
if [ "$DOCUMENTATION" = "fast" ]; then
echo "Building documentation..."
rm -rf documentation/html/
doxygen documentation/Doxyfile.fast
tar -cjf documentation/fast.tar.bz2 documentation/html/ documentation/index.html
echo "Done building documentation"
exit
fi
if [ "$BUILD_TYPE" = "" ]; then
BUILD_TYPE="release"
fi
if [ "$FOLDER_NAME" = "" ]; then
if [ "$GENERATOR" = "" ]; then
FOLDER_NAME=$BUILD_TYPE
else
FOLDER_NAME=$GENERATOR
fi
fi
echo "Configure an out-of-source build configuration of type $BUILD_TYPE on folder build/$FOLDER_NAME and params $PARAM"
# if [ ! -d application ]; then
# mkdir application
# fi
# cd application
# make_cmake_list *
# cd ../
#
# if [ ! -d library ]; then
# mkdir library
# fi
# cd library
# make_cmake_list *
# cd ../
SRC_PATH="`pwd`"
if [ "$FOLDER_PATH" = "" ]; then
if [ ! -d build ]; then
mkdir build
fi
mkdir "build/$FOLDER_NAME"
cd "build/$FOLDER_NAME"
else
echo "$FOLDER_PATH"
mkdir "$FOLDER_PATH"
cd "$FOLDER_PATH"
fi
echo $GENERATOR
echo "The list of parameters forwarded to cmake:"
for param in "$@"; do
echo "$param"
done
echo
echo -ne "./configure -f $FOLDER_NAME -F \"$FOLDER_PATH\" -b \"$BUILD_TYPE\" -g \"$GENERATOR\" -p \"$PARAM\" -e \"$EXTERN_ABS_PATH\" -DUTEST_NAME=\"$TEST_NAME\" -DUTEST_SITE=\"$TEST_SITE\" \"$@\" \"$SRC_PATH\"\r\n" > configure.txt
if [ "$GENERATOR" = "" ]; then
echo "Using cmake's default generator:"
echo ""
exec cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUDEFS:STRING="$PARAM" -DUEXTERN:STRING="$EXTERN_PATH" -DUTEST_NAME="$TEST_NAME" -DUTEST_SITE="$TEST_SITE" -DUINSTALL_PREFIX="$INSTALL_PREFIX" "$@" "$SRC_PATH"
echo "Done!"
else
echo "Using cmake's $GENERATOR"
echo ""
exec cmake -G "$GENERATOR" -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DUDEFS:STRING="$PARAM" -DUEXTERN:STRING="$EXTERN_PATH" -DUTEST_NAME="$TEST_NAME" -DUTEST_SITE="$TEST_SITE" -DUINSTALL_PREFIX="$INSTALL_PREFIX" "$@" "$SRC_PATH"
fi
exit