/
prepare_cmake.sh
executable file
·160 lines (108 loc) · 3.47 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
#! /bin/bash
ScriptPath=$0
Dir=$(cd $(dirname "$ScriptPath"); pwd)
Basename=$(basename "$ScriptPath")
CMakePath=$Dir/_build
CMakeExamplesDisabled=0
CMakeTestingDisabled=0
CMakeVerboseMakefile=0
Configuration=Release
RunMake=0
# STLSoftDirEnvVar=${STLSOFT}
STLSoftDirGiven=
# ##########################################################
# command-line handling
while [[ $# -gt 0 ]]; do
case $1 in
-v|--cmake-verbose-makefile)
CMakeVerboseMakefile=1
;;
-d|--debug-configuration)
Configuration=Debug
;;
-E|--disable-examples)
CMakeExamplesDisabled=1
;;
-T|--disable-testing)
CMakeTestingDisabled=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
Causes the creation/reinitialisation of 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=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)
-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 $CMakePath || exit 1
cd $CMakePath
echo "Executing CMake"
if [ $CMakeExamplesDisabled -eq 0 ]; then CMakeBuildExamplesFlag="ON" ; else CMakeBuildExamplesFlag="OFF" ; fi
if [ $CMakeTestingDisabled -eq 0 ]; then CMakeBuildTestingFlag="ON" ; else CMakeBuildTestingFlag="OFF" ; fi
if [ $CMakeVerboseMakefile -eq 0 ]; then CMakeVerboseMakefileFlag="OFF" ; else CMakeVerboseMakefileFlag="ON" ; fi
if [ -z $STLSoftDirGiven ]; then CMakeSTLSoftVariable="" ; else CMakeSTLSoftVariable="-DSTLSOFT=$STLSoftDirGiven/" ; fi
cmake \
-DBUILD_EXAMPLES:BOOL=$CMakeBuildExamplesFlag \
-DBUILD_TESTING:BOOL=$CMakeBuildTestingFlag \
-DCMAKE_BUILD_TYPE=$Configuration \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=$CMakeVerboseMakefileFlag \
$CMakeSTLSoftVariable \
.. || (cd ->/dev/null ; exit 1)
status=0
if [ $RunMake -ne 0 ]; then
echo "Executing make"
make
status=$?
fi
cd ->/dev/null
if [ $CMakeVerboseMakefile -ne 0 ]; then
echo -e "contents of $CMakePath:"
ls -al $CMakePath
fi
exit $status
# ############################## end of file ############################# #