summaryrefslogtreecommitdiffstats
path: root/scripts/smtk2ssrf-build.sh
diff options
context:
space:
mode:
authorGravatar Salvador Cuñat <salvador.cunat@gmail.com>2017-06-05 21:33:34 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-06-11 13:50:30 -0700
commit3f4f2455d331541a600a435ec2723aa3b56bcf19 (patch)
tree19c2146902803fca8cd18fd37716a26d5748a81f /scripts/smtk2ssrf-build.sh
parentddd39f20ff0a90df9fa550213de10498e5bd4928 (diff)
downloadsubsurface-3f4f2455d331541a600a435ec2723aa3b56bcf19.tar.gz
smtk-import: Add build script for smtk2ssrf
Add a bash script to build the linux version of smtk2ssrf tool. It works mostly like build.sh, but have some flags avaliable.
Diffstat (limited to 'scripts/smtk2ssrf-build.sh')
-rwxr-xr-xscripts/smtk2ssrf-build.sh125
1 files changed, 125 insertions, 0 deletions
diff --git a/scripts/smtk2ssrf-build.sh b/scripts/smtk2ssrf-build.sh
new file mode 100755
index 000000000..1059cb07b
--- /dev/null
+++ b/scripts/smtk2ssrf-build.sh
@@ -0,0 +1,125 @@
+#!/bin/bash
+# This script is meant to run from src directory in the same fashion than
+# subsurface/scripts/build.sh
+#
+# Flags: -t (--tag) A git valid tag, commit, etc in subsurface tree
+# -j (--jobs) Desired build parallelism, integer.
+# -b (--build) Cmake build type, valid values Debug or Release
+# Examples:
+# $ ./subsurface/scripts/build-smtk2ssrf.sh
+# No flags, will build a Release version, with -j4 parallelism in the
+# last set git tree position. This should be the usual use form.
+# $ ./subsurface/scripts/build-smtk2ssrf.sh -j 2 -t v4.6.5 -b Debug
+# Will build a Debug version of smtk2ssrf from the tag v4.6.5 (proved it
+# exists) with -j2 parallelism.
+#
+
+# Default build parallelism
+#
+JOBS="-j4"
+
+# Default subsurface git tag: none, assume last manually selected
+# or set in build.sh
+#
+SSRF_TAG=""
+
+# Default build type Release
+#
+RELEASE=Release
+
+BASEDIR="$(pwd)"
+INSTALL_ROOT="$BASEDIR"/install-root
+SSRF_PATH="$BASEDIR"/subsurface
+
+# Display an error message if we need to bail out
+#
+function aborting() {
+ echo "----> $1. Aborting."
+ exit 1
+}
+
+# check for arguments and set options if any
+#
+while [ $# -gt 0 ]; do
+ case $1 in
+ -t|--tag) SSRF_TAG="$2"
+ shift;;
+ -j|--jobs) JOBS=-j"$2"
+ shift;;
+ -b|--build) RELEASE="$2"
+ shift;;
+ esac
+ shift
+done
+
+echo ">> Building smtk2ssrf <<"
+
+# Check if we are in a sane environment
+#
+[[ ! -d "$SSRF_PATH" ]] && aborting "Please start from the source root directory" || echo "--> Building from $BASEDIR"
+
+
+# Ensure cmake and pkg-config have the corrects paths set
+#
+export CMAKE_PREFIX_PATH="$BASEDIR/install-root:$CMAKE_PREFIX_PATH"
+export PKG_CONFIG_PATH="$BASEDIR/install-root/lib/pkgconfig"
+
+# Check if we have glib-2.0 installed. This is a dependency for
+# mdbtools.
+#
+pkg-config --exists glib-2.0
+[[ $? -ne 0 ]] && aborting "Glib-2.0 not installed" || \
+ echo "----> Glib-2.0 exists: $(pkg-config --print-provides glib-2.0)"
+
+# Mdbtools
+#
+# Check if mdbtools devel package is avaliable, if it is not, download
+# and build it.
+#
+pkg-config --exists libmdb
+if [ $? -ne 0 ]; then
+ echo "----> Downloading/Updating mdbtools "
+ if [ -d "$BASEDIR"/mdbtools ]; then
+ cd "$BASEDIR"/mdbtools || aborting "Couldn't cd into $BASEDIR/mdbtools"
+ git pull --rebase
+ else
+ git clone https://github.com/brianb/mdbtools.git "$BASEDIR"/mdbtools
+ fi
+ [[ $? -ne 0 ]] && aborting "Problem downloading/updating mdbtools"
+
+ echo "----> Building mdbtools ..."
+ echo "----> This will display a lot of errors and warnings"
+ cd "$BASEDIR"/mdbtools || aborting "Couldn't cd into $BASEDIR/mdbtools"
+ autoreconf -i -f
+ ./configure --prefix "$INSTALL_ROOT" --disable-man --disable-gmdb2 >/dev/null
+ make "$JOBS">/dev/null || aborting "Building mdbtools failed"
+ make install
+else
+ echo "----> Mdbtools already installed: $(pkg-config --print-provides libmdb)"
+fi
+
+# We are done. Move on
+# No need to update subsurface sources, as it has been previously
+# done by build.sh
+#
+# Do we want to build a branch or commit other than the one used
+# for build.sh?
+#
+if [ ! "$SSRF_TAG" == "" ]; then
+ cd "$SSRF_PATH" || aborting "Couldn't cd into $SSRF_PATH"
+ git checkout "$SSRF_TAG" || aborting "Couldn't checkout $SSRF_TAG. Is it correct?"
+fi
+
+echo "----> Building smtk2ssrf SmartTrak divelogs importer"
+
+cd "$SSRF_PATH"/smtk-import || aborting "Couldnt cd into $SSRF_PATH/smtk-import"
+mkdir -p build
+cd build || aborting "Couldn't cd into $SSRF_PATH/smtk-import/build"
+
+cmake -DCMAKE_BUILD_TYPE="$RELEASE" .. || aborting "Cmake incomplete"
+
+make "$JOBS" || aborting "Failed to build smtk2ssrf"
+
+echo ">> Building smtk2ssrf completed <<"
+echo ">> Executable placed in $SSRF_PATH/smtk-import/build <<"
+echo ">> To install system-wide, move there and run sudo make install <<"