summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-02-17 13:10:45 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-02-17 13:10:45 -0800
commit0d70a597cd0f1bbf673c6bbf7127b0dfdd1895e2 (patch)
tree946c139cd69b728b34a8d0ef7f15e00f2c11ab7a
parent371feac82f5d8e29bb74d55c3187bd2a38a5e5e1 (diff)
downloadsubsurface-0d70a597cd0f1bbf673c6bbf7127b0dfdd1895e2.tar.gz
Add build and run script for people wanting to build from source
These scripts should make it easier to build from source on platforms where we don't supply binaries. They should ensure the correct libraries are build and then used at run time Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rwxr-xr-xscripts/build.sh87
-rwxr-xr-xscripts/run.sh2
2 files changed, 89 insertions, 0 deletions
diff --git a/scripts/build.sh b/scripts/build.sh
new file mode 100755
index 000000000..44cf5d52e
--- /dev/null
+++ b/scripts/build.sh
@@ -0,0 +1,87 @@
+#!/bin/bash
+#
+# this should be run from the src directory, the layout is supposed to
+# look like this:
+#.../src/subsurface
+# /libgit2
+# /marble-source
+# /libdivecomputer
+#
+# the script will build these three libraries from source, even if
+# they are installed as part of the host OS since we have seen
+# numerous cases where building with random versions (especially older,
+# but sometimes also newer versions than recommended here) will lead
+# to all kinds of unnecessary pain
+
+SRC=$(pwd)
+if [[ ! -d "subsurface" ]] ; then
+ echo "please start this script from the directory containing the Subsurface source directory"
+ exit 1
+fi
+mkdir -p install
+
+# build libgit2
+
+if [ ! -d libgit2 ] ; then
+ if [[ $1 = local ]] ; then
+ git clone $SRC/../libgit2 libgit2
+ else
+ git clone git://github.com/libgit2/libgit2
+ fi
+fi
+cd libgit2
+git checkout v0.21.5
+mkdir -p build
+cd build
+cmake -DCMAKE_INSTALL_PREFIX=$SRC/install -DCMAKE_BUILD_TYPE=Release -DBUILD_CLAR=OFF ..
+cmake --build . --target install
+
+cd $SRC
+
+# build libdivecomputer
+
+if [ ! -d libdivecomputer ] ; then
+ if [[ $1 = local ]] ; then
+ git clone $SRC/../libdivecomputer libdivecomputer
+ else
+ git clone -b Subsurface-4.4 git://subsurface-divelog.org/libdc libdivecomputer
+ fi
+fi
+cd libdivecomputer
+git checkout Subsurface-4.4
+if [ ! -f configure ] ; then
+ autoreconf --install
+ ./configure --prefix=$SRC/install
+fi
+make -j4
+make install
+
+cd $SRC
+
+# build libssrfmarblewidget
+
+if [ ! -d marble-source ] ; then
+ if [[ $1 = local ]] ; then
+ git clone $SRC/../marble-source marble-source
+ else
+ git clone -b Subsurface-4.4 git://subsurface-divelog.org/marble marble-source
+ fi
+fi
+cd marble-source
+git checkout Subsurface-4.4
+mkdir -p build
+cd build
+cmake -DCMAKE_BUILD_TYPE=Release -DQTONLY=TRUE -DQT5BUILD=ON \
+ -DCMAKE_INSTALL_PREFIX=$SRC/install \
+ -DBUILD_MARBLE_TESTS=NO \
+ -DWITH_DESIGNER_PLUGIN=NO \
+ -DBUILD_MARBLE_APPS=NO \
+ $SRC/marble-source
+cd src/lib/marble
+make -j4
+make install
+
+cd $SRC/subsurface
+qmake-qt5 LIBDCDEVEL=1 LIBMARBLEDEVEL=$SRC/install SPECIAL_MARBLE_PREFIX=1 LIBGIT2DEVEL=$SRC/libgit2 subsurface.pro
+make -j4
+
diff --git a/scripts/run.sh b/scripts/run.sh
new file mode 100755
index 000000000..6e0e0d1e9
--- /dev/null
+++ b/scripts/run.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+LD_LIBRARY_PATH=install/lib:$LD_LIBRARY_PATH ./subsurface/subsurface