Skip to content

Commit d1915f8

Browse files
committed
Update build scripts
1 parent 4ad87dc commit d1915f8

File tree

3 files changed

+51
-63
lines changed

3 files changed

+51
-63
lines changed

BUILD_GTSAM.sh

Lines changed: 51 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@
55
# Last updated with shell parser by PeterC, July 2024
66

77
# NOTE: If -r script is only allowed to change CXX flags and optionally include wrappers.
8+
set -e # Exit on error
9+
set -o pipefail # Exit on error in a pipeline
810

911
# Default values
10-
Buildpath="build"
11-
IS_BUILDPATH_DEFAULT=true
12+
build_path=build
13+
install_path=install
14+
is_default_build_path=true
1215
jobs=3
13-
WITH_DYNAMICS_MODULE=false
14-
install_deps=false
1516
rebuild=false
16-
BUILD_TYPE=debug # default build type, possible options: debug, release, relwithdebinfo, minsizerel
17+
BUILD_TYPE=relwithdebinfo # default build type, possible options: debug, release, relwithdebinfo, minsizerel
1718
ADD_CHECKS=false
1819
ADD_CXX_FLAGS=""
1920
WITH_PYTHON=false
@@ -25,8 +26,8 @@ PYTHON_EXE=$HOME/miniconda3/home/peterc/miniconda3/envs/gtsam/bin/python3.12 # D
2526

2627
# Parse options using getopt
2728
# NOTE: no ":" after option means no argument, ":" means required argument, "::" means optional argument
28-
OPTIONS=B::,j::,i,r,t::,c,f::,p::,m::,u,e,o
29-
LONGOPTIONS=Buildpath::,jobs::,install-deps,rebuild,type-build::,checks,flagsCXX::,python-wrap::,matlab-wrap::,unstable_build,exp_map_enabled,on_manifold_preintegr
29+
OPTIONS=B::,j::,i::,r,t::,c,f::,p::,m::,u,e,o
30+
LONGOPTIONS=build_path::,jobs::,install-path::,rebuild,type-build::,checks,flagsCXX::,python-wrap::,matlab-wrap::,unstable_build,exp_map_enabled,on_manifold_preintegr
3031

3132
# Parsed arguments list with getopt
3233
PARSED=$(getopt --options ${OPTIONS} --longoptions ${LONGOPTIONS} --name "$0" -- "$@")
@@ -44,15 +45,15 @@ eval set -- "$PARSED"
4445
# Process options (change default values if needed)
4546
while true; do
4647
case "$1" in
47-
-B|--Buildpath)
48+
-B|--build_path)
4849
if [ -n "$2" ] && [ "$2" != "--" ]; then # Check how many args (if 2)
49-
Buildpath="$2"
50-
IS_BUILDPATH_DEFAULT=false
50+
build_path="$2"
51+
is_default_build_path=false
5152
shift 2 # Shift of two args, i.e. $1 will then point to the next argument
5253
else
5354
# Handle the default case (no optional argument provided), thus shift of 1
54-
Buildpath="build"
55-
IS_BUILDPATH_DEFAULT=true
55+
build_path="build"
56+
is_default_build_path=true
5657
shift
5758
fi
5859
;;
@@ -65,9 +66,9 @@ while true; do
6566
shift
6667
fi
6768
;;
68-
-i|--install-deps)
69-
install_deps=true
70-
shift
69+
-i|--install-path)
70+
install_path="$2"
71+
shift 2
7172
;;
7273
-r|--rebuild)
7374
rebuild=true
@@ -142,63 +143,52 @@ done
142143

143144
if [ "${rebuild}" = true ]; then
144145
# REBUILDING FROM EXISTING BUILD
145-
if [ "${IS_BUILDPATH_DEFAULT}" = true ]; then
146-
Buildpath="build_dev" # Set default for rebuild if not specified
146+
if [ "${is_default_build_path}" = true ]; then
147+
build_path="build_dev" # Set default for rebuild if not specified
147148
fi
148149
echo "REBUILDING GTSAM with options..."
149-
echo -e "\tBuildpath: $Buildpath"
150+
echo -e "\tbuild_path: $build_path"
150151
echo -e "\tJobs: $jobs"
151152
echo -e "\tBuild Type: ${BUILD_TYPE}"
152153
echo -e "\tEnforced compile flags: ${ADD_CXX_FLAGS}"
153154
echo -e "\tPython wrapper build: ${WITH_PYTHON}"
154155
echo -e "\tPython executable path: ${PYTHON_EXE}"
155156
echo -e "\tMATLAB wrapper build: ${WITH_MATLAB}"
156-
echo -e "\tWith Dynamics Module: ${WITH_DYNAMICS_MODULE}"
157157
echo -e "\tBuild GTSAM unstable: ${WITH_UNSTABLE}"
158-
if ! [ -d $Buildpath ]; then
158+
if ! [ -d $build_path ]; then
159159
echo "ERROR: NO PREVIOUS BUILD FOUND! EXITING..." >&2
160160
exit 1
161161
else
162162

163163
sleep 1
164164

165-
#cmake -B ${Buildpath} -S . -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
166-
# -DGTSAM_BUILD_UNSTABLE:OPTION=OFF -DGTSAM_BUILD_CONVENIENCE_LIBRARIES:OPTION=ON \
167-
# -DGTSAM_BUILD_PYTHON=${WITH_PYTHON} -DGTSAM_INSTALL_MATLAB_TOOLBOX=${WITH_MATLAB} \
168-
# -DGTSAM_WITH_TBB=ON \
169-
# -DGTSAM_WITH_EIGEN_MKL=OFF \
170-
# -DGTSAM_UNSTABLE_BUILD_PYTHON=${WITH_PYTHON} \
171-
# -DGTSAM_WITH_DYNAMICS=${WITH_DYNAMICS_MODULE} \
172-
# -DCMAKE_CXX_FLAGS=${ADD_CXX_FLAGS} \
173-
# -DCMAKE_C_FLAGS=${ADD_CXX_FLAGS}
174-
175165
# Build and install (system-wide)
176166
if [ ${BUILD_TYPE} == "debug" ]; then
177-
sudo cmake ${Buildpath} -DCMAKE_CXX_FLAGS=${ADD_CXX_FLAGS} \
167+
cmake ${build_path} -DCMAKE_CXX_FLAGS=${ADD_CXX_FLAGS} \
178168
-DCMAKE_C_FLAGS=${ADD_CXX_FLAGS} \
179169
-DGTSAM_BUILD_PYTHON=${WITH_PYTHON} \
180170
-DPYTHON_EXECUTABLE=${PYTHON_EXE} \
181171
-DGTSAM_INSTALL_MATLAB_TOOLBOX=${WITH_MATLAB} \
182172
-DGTSAM_BUILD_UNSTABLE:OPTION=${WITH_UNSTABLE} \
173+
-DCMAKE_INSTALL_PREFIX=${install_path}
183174

184-
sudo make -j ${jobs} -C ${Buildpath} # |& tee MAKE_OUTPUT_LOG.txt
175+
make -j ${jobs} -C ${build_path} # |& tee MAKE_OUTPUT_LOG.txt
185176
if [ "${ADD_CHECKS}" = true ]; then
186-
sudo make check -j ${jobs} -C ${Buildpath} # |& tee MAKE_CHECK_OUTPUT_LOG.txt
177+
make check -j ${jobs} -C ${build_path} # |& tee MAKE_CHECK_OUTPUT_LOG.txt
187178
fi
188179
else
189-
sudo make check -j ${jobs} -C ${Buildpath} # |& tee MAKE_CHECK_OUTPUT_LOG.txt
190-
sudo make install -j ${jobs} -C ${Buildpath} # |& tee MAKE_INSTALL_OUTPUT_LOG.txt
180+
make check -j ${jobs} -C ${build_path} # |& tee MAKE_CHECK_OUTPUT_LOG.txt
181+
make install -j ${jobs} -C ${build_path} # |& tee MAKE_INSTALL_OUTPUT_LOG.txt
191182
fi
192183

193184
fi
194185

195186
else
196187
# BUILDING FROM SCRATCH
197188
echo "Building with options..."
198-
echo -e "\tBuildpath: $Buildpath"
189+
echo -e "\tBuild path: ${build_path}"
190+
echo -e "\tInstall path: ${install_path}"
199191
echo -e "\tJobs: $jobs"
200-
echo -e "\tWith Dynamics Module: ${WITH_DYNAMICS_MODULE}"
201-
echo -e "\tInstall Dependencies: ${install_deps}"
202192
echo -e "\tBuild Type: ${BUILD_TYPE}"
203193
echo -e "\tEnforced compile flags: ${ADD_CXX_FLAGS}"
204194
echo -e "\tPython wrapper build: ${WITH_PYTHON}"
@@ -209,53 +199,51 @@ else
209199
sleep 1
210200

211201
# Install dependencies (should add check if already installed)
212-
if [ "${install-deps}" = true ]; then
213-
sudo apt update
214-
sudo apt install libboost1.74-all-dev cmake libtbb-dev -y
215-
#sudo apt install libboost-all-dev cmake libtbb-dev -y
216-
sudo apt install gcc-11 g++-11
202+
sudo apt update
203+
#udo apt install libboost1.74-all-dev cmake libtbb-dev -y
204+
#sudo apt install libboost-all-dev cmake libtbb-dev -y
205+
sudo apt install gcc-11 g++-11
217206

218-
# NEED TO ADD IF "not installed" for the following:
219-
#sudo apt-get install python3-pip -y
220-
#sudo apt-get install python-is-python3 -y
221-
#pip install pyparsing numpy
222-
sudo apt-get install libeigen3-dev -y
223-
fi
207+
# NEED TO ADD IF "not installed" for the following:
208+
#sudo apt-get install python3-pip -y
209+
#sudo apt-get install python-is-python3 -y
210+
#pip install pyparsing numpy
211+
sudo apt-get install libeigen3-dev -y
224212

225213

226-
if [ -d $Buildpath ]; then
227-
sudo rm -r ${Buildpath}/
214+
if [ -d $build_path ]; then
215+
sudo rm -r ${build_path}/
228216
fi
229217

230218
# Export path to use GCC 11.4 instead of >13.0
231-
export CC=/usr/bin/gcc-11
232-
export CXX=/usr/bin/g++-11
219+
#export CC=/usr/bin/gcc-11
220+
#export CXX=/usr/bin/g++-11
233221

234222
# Generate makefiles with verbose output log
235-
cmake -B ${Buildpath} -S . -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
236-
-DGTSAM_BUILD_UNSTABLE=${WITH_UNSTABLE} -DGTSAM_BUILD_CONVENIENCE_LIBRARIES=OFF \
223+
cmake -B ${build_path} -S . -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
224+
-DGTSAM_BUILD_UNSTABLE=${WITH_UNSTABLE} \
237225
-DGTSAM_BUILD_PYTHON=${WITH_PYTHON} -DGTSAM_INSTALL_MATLAB_TOOLBOX=${WITH_MATLAB} \
238226
-DGTSAM_WITH_TBB=ON \
239227
-DGTSAM_WITH_EIGEN_MKL=OFF \
240228
-DGTSAM_UNSTABLE_BUILD_PYTHON=${WITH_PYTHON} \
241-
-DGTSAM_WITH_DYNAMICS=${WITH_DYNAMICS_MODULE} \
242229
-DCMAKE_CXX_FLAGS=${ADD_CXX_FLAGS} \
243230
-DCMAKE_C_FLAGS=${ADD_CXX_FLAGS} \
244231
-DGTSAM_TANGENT_PREINTEGRATION=${USE_TANGENT_PREINTEGR} \
245232
-DGTSAM_POSE3_EXPMAP=${WITH_EXPMAP} \
246-
-DGTSAM_ROT3_EXPMAP=${WITH_EXPMAP}
233+
-DGTSAM_ROT3_EXPMAP=${WITH_EXPMAP} \
234+
-DCMAKE_INSTALL_PREFIX=${install_path}
247235
# -DCMAKE_VERBOSE_MAKEFILE=ON . |& tee CMAKE_OUTPUT_LOG.txt ..
248236

249237
# Build and install (system-wide)
250238
if [ ${BUILD_TYPE} == "debug" ]; then
251-
sudo make -j ${jobs} -C ${Buildpath} # |& tee MAKE_OUTPUT_LOG.txt
239+
make -j ${jobs} -C ${build_path} # |& tee MAKE_OUTPUT_LOG.txt
252240
if [ "${ADD_CHECKS}" = true ]; then
253-
sudo make check -j ${jobs} -C ${Buildpath} # |& tee MAKE_CHECK_OUTPUT_LOG.txt
241+
make check -j ${jobs} -C ${build_path} # |& tee MAKE_CHECK_OUTPUT_LOG.txt
254242
fi
255243
else
256-
sudo make -j ${jobs} -C ${Buildpath} # |& tee MAKE_OUTPUT_LOG.txt
257-
sudo make check -j ${jobs} -C ${Buildpath} # |& tee MAKE_CHECK_OUTPUT_LOG.txt
258-
#sudo make install -j ${jobs} -C ${Buildpath} # |& tee MAKE_INSTALL_OUTPUT_LOG.txt
244+
make -j ${jobs} -C ${build_path} # |& tee MAKE_OUTPUT_LOG.txt
245+
make check -j ${jobs} -C ${build_path} # |& tee MAKE_CHECK_OUTPUT_LOG.txt
246+
make install -j ${jobs} -C ${build_path} # |& tee MAKE_INSTALL_OUTPUT_LOG.txt
259247
fi
260248

261-
fi
249+
fi
File renamed without changes.

0 commit comments

Comments
 (0)