forked from synesissoftware/CLASP
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprepare_cmake.sh
executable file
·180 lines (128 loc) · 3.76 KB
/
prepare_cmake.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
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
#! /bin/bash
ScriptPath=$0
Dir=$(cd $(dirname "$ScriptPath"); pwd)
Basename=$(basename "$ScriptPath")
CMakeDir=${SIS_CMAKE_BUILD_DIR:-$Dir/_build}
MakeCmd=${SIS_CMAKE_COMMAND:-make}
Configuration=Release
ExamplesDisabled=0
MinGW=0
RunMake=0
STLSoftDirGiven=
TestingDisabled=0
VerboseMakefile=0
# ##########################################################
# command-line handling
while [[ $# -gt 0 ]]; do
case $1 in
-v|--cmake-verbose-makefile)
VerboseMakefile=1
;;
-d|--debug-configuration)
Configuration=Debug
;;
-E|--disable-examples)
ExamplesDisabled=1
;;
-T|--disable-testing)
TestingDisabled=1
;;
--mingw)
MinGW=1
;;
-m|--run-make)
RunMake=1
;;
-s|--stlsoft-root-dir)
shift
STLSoftDirGiven=$1
;;
--help)
cat << EOF
CLASP is a small, simple C-language library for parsing command-line arguments, along with a C++ header-only API.
Copyright (c) 2019-2024, Matthew Wilson and Synesis Information Systems
Copyright (c) 2008-2019, Matthew Wilson and Synesis Software
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)
--mingw
uses explicitly the "MinGW Makefiles" generator
-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 (in ${CMakeDir})"
if [ $ExamplesDisabled -eq 0 ]; then CMakeBuildExamplesFlag="ON" ; else CMakeBuildExamplesFlag="OFF" ; 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 \
-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 \
-S $Dir \
-B $CMakeDir \
|| (cd ->/dev/null ; exit 1)
fi
status=0
if [ $RunMake -ne 0 ]; then
echo "Executing build (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 ############################# #