aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/smtk2ssrf-build.sh
blob: 1059cb07bc9ef53a0d674c5e3bb92e7575b4dfe6 (plain) (blame)
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
#!/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 <<"