diff options
author | jan Iversen <jan@casacondor.com> | 2020-01-22 18:55:08 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2020-01-24 10:56:26 -0800 |
commit | 20a1b4befb84b0dd88f4d0132dfa7de6faa7037e (patch) | |
tree | e9960fba8a4d5a246c91fd66a8c3e60f89f34d9b /scripts/build.sh | |
parent | 5d3691bbcd285d36af9f2aeb85ee48faba90a255 (diff) | |
download | subsurface-20a1b4befb84b0dd88f4d0132dfa7de6faa7037e.tar.gz |
scripts: expand build.sh
Add option "-src-dir <source directory>" to build options.
When calling build.sh without -src-dir it uses src/subsurface as usual, but when called
with -src-dir <source directory>, it uses src/<source directory> as source basis.
This is a needed option, when working with "git worktree", which is used when working on
different branches in parallel (e.g. master and my-feature-branch), because it allows a
build directory in each worktree, and thus much faster when switching work.
Signed-off-by: jan Iversen <jan@casacondor.com>
Diffstat (limited to 'scripts/build.sh')
-rwxr-xr-x | scripts/build.sh | 54 |
1 files changed, 32 insertions, 22 deletions
diff --git a/scripts/build.sh b/scripts/build.sh index 2ffae473a..aeb3ecbed 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -47,6 +47,7 @@ PLATFORM=$(uname) BTSUPPORT="ON" DEBUGRELEASE="Debug" +SRC_DIR="subsurface" # deal with all the command line arguments while [[ $# -gt 0 ]] ; do @@ -60,6 +61,15 @@ while [[ $# -gt 0 ]] ; do # only build libdivecomputer and Subsurface - this assumes that all other dependencies don't need rebuilding QUICK="1" ;; + -src-dir) + # instead of using "subsurface" as source directory, use src/<srcdir> + # this is convinient when using "git worktree" to have multiple branches + # checked out on the computer. + # remark <srcdir> must be in src (in parallel to subsurface), in order to + # use the same 3rd party set. + shift + SRC_DIR="$1" + ;; -build-deps) # in order to build the dependencies on Mac for release builds (to deal with the macosx-version-min for those # call this script with -build-deps @@ -105,7 +115,7 @@ while [[ $# -gt 0 ]] ; do ;; *) echo "Unknown command line argument $arg" - echo "Usage: build.sh [-no-bt] [-quick] [-build-deps] [-build-prefix <PREFIX>] [-build-with-webkit] [-mobile] [-desktop] [-both] [-create-appdir] [-release]" + echo "Usage: build.sh [-no-bt] [-quick] [-build-deps] [-src-dir <SUBSURFACE directory>] [-build-prefix <PREFIX>] [-build-with-webkit] [-mobile] [-desktop] [-both] [-create-appdir] [-release]" exit 1 ;; esac @@ -147,7 +157,7 @@ fi BUILDGRANTLEE=0 if [ "$BUILD_MOBILE" = "1" ] ; then - echo "building Subsurface-mobile in subsurface/build-mobile" + echo "building Subsurface-mobile in ${SRC_DIR}/build-mobile" BUILDS=( "MobileExecutable" ) BUILDDIRS=( "${BUILD_PREFIX}build-mobile" ) else @@ -156,7 +166,7 @@ else fi if [ "$BUILD_DESKTOP" = "1" ] ; then - echo "building Subsurface in subsurface/build" + echo "building Subsurface in ${SRC_DIR}/build" BUILDS+=( "DesktopExecutable" ) BUILDDIRS+=( "${BUILD_PREFIX}build" ) if [ "$BUILD_WITH_WEBKIT" = "1" ] ; then @@ -169,7 +179,7 @@ if [ "$BUILD_DESKTOP" = "1" ] ; then fi fi -if [[ ! -d "subsurface" ]] ; then +if [[ ! -d "${SRC_DIR}" ]] ; then echo "please start this script from the directory containing the Subsurface source directory" exit 1 fi @@ -262,7 +272,7 @@ if [[ $PLATFORM = Darwin && "$BUILD_DEPS" == "1" ]] ; then # because that always requires the latest OS (how stupid is that - and they consider it a # feature). So we painfully need to build the dependencies ourselves. cd "$SRC" - ./subsurface/scripts/get-dep-lib.sh single . libcurl + ./${SRC_DIR}/scripts/get-dep-lib.sh single . libcurl pushd libcurl bash ./buildconf mkdir -p build @@ -273,7 +283,7 @@ if [[ $PLATFORM = Darwin && "$BUILD_DEPS" == "1" ]] ; then make install popd - ./subsurface/scripts/get-dep-lib.sh single . openssl + ./${SRC_DIR}/scripts/get-dep-lib.sh single . openssl pushd openssl mkdir -p build cd build @@ -284,7 +294,7 @@ if [[ $PLATFORM = Darwin && "$BUILD_DEPS" == "1" ]] ; then make -k install popd - ./subsurface/scripts/get-dep-lib.sh single . libssh2 + ./${SRC_DIR}/scripts/get-dep-lib.sh single . libssh2 pushd libssh2 mkdir -p build cd build @@ -307,7 +317,7 @@ if [[ "$LIBGIT" -lt "26" ]] ; then cd "$SRC" - ./subsurface/scripts/get-dep-lib.sh single . libgit2 + ./${SRC_DIR}/scripts/get-dep-lib.sh single . libgit2 pushd libgit2 mkdir -p build cd build @@ -331,7 +341,7 @@ if [[ $PLATFORM = Darwin && "$BUILD_DEPS" == "1" ]] ; then # because that always requires the latest OS (how stupid is that - and they consider it a # feature). So we painfully need to build the dependencies ourselves. cd "$SRC" - ./subsurface/scripts/get-dep-lib.sh single . libzip + ./${SRC_DIR}/scripts/get-dep-lib.sh single . libzip pushd libzip mkdir -p build cd build @@ -342,7 +352,7 @@ if [[ $PLATFORM = Darwin && "$BUILD_DEPS" == "1" ]] ; then make install popd - ./subsurface/scripts/get-dep-lib.sh single . hidapi + ./${SRC_DIR}/scripts/get-dep-lib.sh single . hidapi pushd hidapi # there is no good tag, so just build master bash ./bootstrap @@ -353,7 +363,7 @@ if [[ $PLATFORM = Darwin && "$BUILD_DEPS" == "1" ]] ; then make install popd - ./subsurface/scripts/get-dep-lib.sh single . libusb + ./${SRC_DIR}/scripts/get-dep-lib.sh single . libusb pushd libusb bash ./bootstrap.sh mkdir -p build @@ -369,7 +379,7 @@ cd "$SRC" # build libdivecomputer -cd subsurface +cd ${SRC_DIR} if [ ! -d libdivecomputer/src ] ; then git submodule init @@ -379,14 +389,14 @@ fi mkdir -p "${BUILD_PREFIX}libdivecomputer/build" cd "${BUILD_PREFIX}libdivecomputer/build" -if [ ! -f "$SRC"/subsurface/libdivecomputer/configure ] ; then +if [ ! -f "$SRC"/${SRC_DIR}/libdivecomputer/configure ] ; then # this is not a typo # in some scenarios it appears that autoreconf doesn't copy the # ltmain.sh file; running it twice, however, fixes that problem - autoreconf --install "$SRC"/subsurface/libdivecomputer - autoreconf --install "$SRC"/subsurface/libdivecomputer + autoreconf --install "$SRC"/${SRC_DIR}/libdivecomputer + autoreconf --install "$SRC"/${SRC_DIR}/libdivecomputer fi -CFLAGS="$OLDER_MAC -I$INSTALL_ROOT/include $LIBDC_CFLAGS" "$SRC"/subsurface/libdivecomputer/configure --prefix="$INSTALL_ROOT" --disable-examples +CFLAGS="$OLDER_MAC -I$INSTALL_ROOT/include $LIBDC_CFLAGS" "$SRC"/${SRC_DIR}/libdivecomputer/configure --prefix="$INSTALL_ROOT" --disable-examples if [ "$PLATFORM" = Darwin ] ; then # remove some copmpiler options that aren't supported on Mac # otherwise the log gets very noisy @@ -446,7 +456,7 @@ fi if [ "$BUILDGRANTLEE" = "1" ] ; then # build grantlee cd "$SRC" - ./subsurface/scripts/get-dep-lib.sh single . grantlee + ./${SRC_DIR}/scripts/get-dep-lib.sh single . grantlee pushd grantlee mkdir -p build cd build @@ -463,7 +473,7 @@ if [ "$QUICK" != "1" ] ; then # build the googlemaps map plugin cd "$SRC" - ./subsurface/scripts/get-dep-lib.sh single . googlemaps + ./${SRC_DIR}/scripts/get-dep-lib.sh single . googlemaps pushd googlemaps mkdir -p build mkdir -p J10build @@ -490,7 +500,7 @@ for (( i=0 ; i < ${#BUILDS[@]} ; i++ )) ; do BUILDDIR=${BUILDDIRS[$i]} echo "build $SUBSURFACE_EXECUTABLE in $BUILDDIR" - cd "$SRC"/subsurface + cd "$SRC"/${SRC_DIR} # pull the plasma-mobile components from upstream if building Subsurface-mobile if [ "$SUBSURFACE_EXECUTABLE" = "MobileExecutable" ] ; then @@ -511,7 +521,7 @@ for (( i=0 ; i < ${#BUILDS[@]} ; i++ )) ; do $LIBGIT2_FROM_PKGCONFIG \ -DFORCE_LIBSSH=OFF \ $PRINTING $EXTRA_OPTS \ - "$SRC"/subsurface + "$SRC"/${SRC_DIR} if [ "$PLATFORM" = Darwin ] ; then rm -rf Subsurface.app @@ -528,7 +538,7 @@ for (( i=0 ; i < ${#BUILDS[@]} ; i++ )) ; do mkdir -p appdir/usr/share/metainfo mkdir -p appdir/usr/share/icons/hicolor/256x256/apps cp -r ./install-root/* ./appdir/usr - cp subsurface/appdata/subsurface.appdata.xml appdir/usr/share/metainfo/ - cp subsurface/icons/subsurface-icon.png appdir/usr/share/icons/hicolor/256x256/apps/ + cp ${SRC_DIR}/appdata/subsurface.appdata.xml appdir/usr/share/metainfo/ + cp ${SRC_DIR}/icons/subsurface-icon.png appdir/usr/share/icons/hicolor/256x256/apps/ fi done |