-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathprepare_cmake.sh
More file actions
executable file
·229 lines (168 loc) · 5.15 KB
/
Copy pathprepare_cmake.sh
File metadata and controls
executable file
·229 lines (168 loc) · 5.15 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
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
#! /bin/bash
ScriptPath=$0
Dir=$(cd $(dirname "$ScriptPath"); pwd)
Basename=$(basename "$ScriptPath")
CMakeDir=${SIS_CMAKE_BUILD_DIR:-$Dir/_build}
if [[ -n "$MSYSTEM" ]]; then
DefaultMakeCmd=mingw32-make.exe
MinGW=1
else
DefaultMakeCmd=make
fi
MakeCmd=${SIS_CMAKE_MAKE_COMMAND:-${SIS_CMAKE_COMMAND:-$DefaultMakeCmd}}
ProjectNameFile="$Dir/.sis/project_name.txt"
ProjectName=$(tr -d '[:space:]' < "$ProjectNameFile")
Configuration=Release
ExamplesDisabled=0
MSVC_MT=0
MinGW="${MinGW:=0}"
NO_cxx=0
NO_shwild=0
RunMake=0
STLSoftDirGiven=
TestingDisabled=0
VerboseMakefile=0
# ##########################################################
# command-line handling
while [[ $# -gt 0 ]]; do
case $1 in
--cmake-verbose-makefile|-v)
VerboseMakefile=1
;;
--debug-configuration|-d)
Configuration=Debug
;;
--disable-examples|-E)
ExamplesDisabled=1
;;
--disable-testing|-T)
TestingDisabled=1
;;
--mingw)
MinGW=1
;;
--msvc-mt)
MSVC_MT=1
;;
--no-cpp|--no-cxx|-C)
NO_cxx=1
;;
--no-shwild)
NO_shwild=1
;;
--run-make|-m)
RunMake=1
;;
--stlsoft-root-dir|-s)
shift
STLSoftDirGiven=$1
;;
--help)
[ -f "$Dir/.sis/script_info_lines.txt" ] && cat "$Dir/.sis/script_info_lines.txt"
cat << EOF
Creates/reinitialises the CMake build script(s)
$ScriptPath [ ... flags/options ... ]
Flags/options:
behaviour:
-v
--cmake-verbose-makefile
configures CMake to run verbosely (by setting CMAKE_VERBOSE_MAKEFILE
to be ON)
-d
--debug-configuration
use Debug configuration (by setting CMAKE_BUILD_TYPE=Debug). Default
is to use Release
-E
--disable-examples
disables building of examples (by setting BUILD_EXAMPLES=OFF)
-T
--disable-testing
disables building of tests (by setting BUILD_TESTING=OFF). Unless
testing is disabled the STLSoft and xTests libraries will be
required to be available to CMake
--mingw
uses explicitly the "MinGW Makefiles" generator, and defaults the
make-command to "mingw32-make.exe"
--msvc-mt
when using Visual C++ (MSVC), the static runtime library will be
selected; the default is the dynamic runtime library
-C
--no-cpp
--no-cxx
omits the C++ API, C++ examples, and remaining C++ tests (CMake
NO_CSTRING_CPP_API). C unit-tests still require STLSoft and xTests
--no-shwild
prevents recognising shwild library (CMake NO_SHWILD); xTests
pattern-match assertions are then unavailable
-m
--run-make
executes make after a successful running of CMake
-s <dir>
--stlsoft-root-dir <dir>
specifies the STLSoft root-directory, which will be passed to CMake
as the variable STLSOFT, and which will override the environment
variable STLSOFT (if present)
standard flags:
--help
displays this help and terminates
EOF
exit 0
;;
*)
>&2 echo "$ScriptPath: unrecognised argument '$1'; use --help for usage"
exit 1
;;
esac
shift
done
# ##########################################################
# main()
mkdir -p $CMakeDir || exit 1
cd $CMakeDir
echo "Executing CMake for ${ProjectName} (in ${CMakeDir})"
if [ $ExamplesDisabled -eq 0 ]; then CMakeBuildExamplesFlag="ON" ; else CMakeBuildExamplesFlag="OFF" ; fi
if [ $MSVC_MT -eq 0 ]; then CMakeMsvcMtFlag="OFF" ; else CMakeMsvcMtFlag="ON" ; fi
if [ $NO_cxx -eq 0 ]; then CMakeNoCppApiFlag="OFF" ; else CMakeNoCppApiFlag="ON" ; fi
if [ $NO_shwild -eq 0 ]; then CMakeNoShwild="OFF" ; else CMakeNoShwild="ON" ; fi
if [ -z $STLSoftDirGiven ]; then CMakeSTLSoftVariable="" ; else CMakeSTLSoftVariable="-DSTLSOFT=$STLSoftDirGiven/" ; fi
if [ $TestingDisabled -eq 0 ]; then CMakeBuildTestingFlag="ON" ; else CMakeBuildTestingFlag="OFF" ; fi
if [ $VerboseMakefile -eq 0 ]; then CMakeVerboseMakefileFlag="OFF" ; else CMakeVerboseMakefileFlag="ON" ; fi
if [ $MinGW -ne 0 ]; then
cmake \
$CMakeSTLSoftVariable \
-DBUILD_EXAMPLES:BOOL=$CMakeBuildExamplesFlag \
-DBUILD_TESTING:BOOL=$CMakeBuildTestingFlag \
-DCMAKE_BUILD_TYPE=$Configuration \
-DNO_CSTRING_CPP_API:BOOL=$CMakeNoCppApiFlag \
-DNO_SHWILD:BOOL=$CMakeNoShwild \
-G "MinGW Makefiles" \
-S $Dir \
-B $CMakeDir \
|| (cd ->/dev/null ; exit 1)
else
cmake \
$CMakeSTLSoftVariable \
-DBUILD_EXAMPLES:BOOL=$CMakeBuildExamplesFlag \
-DBUILD_TESTING:BOOL=$CMakeBuildTestingFlag \
-DCMAKE_BUILD_TYPE=$Configuration \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=$CMakeVerboseMakefileFlag \
-DMSVC_USE_MT:BOOL=$CMakeMsvcMtFlag \
-DNO_CSTRING_CPP_API:BOOL=$CMakeNoCppApiFlag \
-DNO_SHWILD:BOOL=$CMakeNoShwild \
-S $Dir \
-B $CMakeDir \
|| (cd ->/dev/null ; exit 1)
fi
status=0
if [ $RunMake -ne 0 ]; then
echo "Executing build for ${ProjectName} (via command \`$MakeCmd\`)"
$MakeCmd
status=$?
fi
cd ->/dev/null
if [ $VerboseMakefile -ne 0 ]; then
echo -e "contents of $CMakeDir:"
ls -al $CMakeDir
fi
exit $status
# ############################## end of file ############################# #