diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2017-07-04 01:45:05 +0900 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-07-04 01:45:55 +0900 |
commit | bd18b6b88fb0349d2b738f57ebe8ec3d1cfac2a0 (patch) | |
tree | fccf5b86255004b5cf093e5e7e13dd5781fd772c | |
parent | acee6f4becfe4005535c40df927e01fad394eb23 (diff) | |
download | subsurface-bd18b6b88fb0349d2b738f57ebe8ec3d1cfac2a0.tar.gz |
build.sh: add option to build all dependencies
Using the Homebrew dependencies is much easier and faster, but then
we run into the problem that Homebrew always builds against your current
OSX version. This instead allows us to build the dependencies ourselves
and set the SDK / minimum OSX version. This is mainly important for
binaries that we want to distribute.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rwxr-xr-x | scripts/build.sh | 117 |
1 files changed, 116 insertions, 1 deletions
diff --git a/scripts/build.sh b/scripts/build.sh index cf501c273..1316b4778 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -19,9 +19,25 @@ # create a log file of the build exec 1> >(tee build.log) 2>&1 +# 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 +if [ "$1" == "-build-deps" ] ; then + shift + BUILD_DEPS="1" +fi + SRC=$(pwd) PLATFORM=$(uname) +# most of these will only be needed with -build-deps on a Mac +CURRENT_LIBZIP="1.2.0" +CURRENT_HIDAPI="hidapi-0.7.0" +CURRENT_LIBCURL="curl-7_54_1" +CURRENT_LIBUSB="v1.0.21" +CURRENT_OPENSSL="OpenSSL_1_1_0f" +CURRENT_LIBSSH2="libssh2-1.8.0" +CURRENT_LIBGIT2="v0.26.0" + # Verify that the Xcode Command Line Tools are installed if [ $PLATFORM = Darwin ] ; then OLDER_MAC="-mmacosx-version-min=10.10 -isysroot/Developer/SDKs/MacOSX10.10.sdk" @@ -87,6 +103,105 @@ else fi if [[ $PLATFORM = Darwin || "$LIBGIT" < "24" ]] ; then + # when building distributable binaries on a Mac, we cannot rely on anything from Homebrew, + # 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. + + if [ "$BUILD_DEPS" == "1" ] ; then + if [ ! -d libzip-${CURRENT_LIBZIP} ] ; then + curl -O https://nih.at/libzip/libzip-${CURRENT_LIBZIP}.tar.gz + tar xzf libzip-${CURRENT_LIBZIP}.tar.gz + fi + cd libzip-${CURRENT_LIBZIP} + mkdir -p build + cd build + ../configure CFLAGS="$OLDER_MAC" --prefix=$INSTALL_ROOT + make -j4 + make install + + cd $SRC + + if [ ! -d hidapi ] ; then + git clone https://github.com/signal11/hidapi + fi + cd hidapi + # there is no good tag, so just build master + bash ./bootstrap + mkdir -p build + cd build + CFLAGS="$OLDER_MAC" ../configure --prefix=$INSTALL_ROOT + make -j4 + make install + + cd $SRC + + if [ ! -d libcurl ] ; then + git clone https://github.com/curl/curl libcurl + fi + cd libcurl + if ! git checkout $CURRENT_LIBCURL ; then + echo "Can't find the right tag in libcurl - giving up" + exit 1 + fi + bash ./buildconf + mkdir -p build + cd build + CFLAGS="$OLDER_MAC" ../configure --prefix=$INSTALL_ROOT --with-darwinssl \ + --disable-tftp --disable-ftp --disable-ldap --disable-ldaps --disable-imap --disable-pop3 --disable-smtp --disable-gopher --disable-smb --disable-rtsp + make -j4 + make install + + cd $SRC + + if [ ! -d libusb ] ; then + git clone https://github.com/libusb/libusb + fi + cd libusb + if ! git checkout $CURRENT_LIBUSB ; then + echo "Can't find the right tag in libusb - giving up" + exit 1 + fi + bash ./bootstrap.sh + mkdir -p build + cd build + CFLAGS="$OLDER_MAC" ../configure --prefix=$INSTALL_ROOT --disable-examples + make -j4 + make install + + cd $SRC + + if [ ! -d openssl ] ; then + git clone https://github.com/openssl/openssl + fi + cd openssl + if ! git checkout $CURRENT_OPENSSL ; then + echo "Can't find the right tag in openssl - giving up" + exit 1 + fi + mkdir -p build + cd build + ../Configure --prefix=$INSTALL_ROOT --openssldir=$INSTALL_ROOT $OLDER_MAC darwin64-x86_64-cc + make depend + # all the tests fail because the assume that openssl is already installed. Odd? Still thinks work + make -j4 -k + make -k install + + cd $SRC + + if [ ! -d libssh2 ] ; then + git clone https://github.com/libssh2/libssh2 + fi + cd libssh2 + if ! git checkout $CURRENT_LIBSSH2 ; then + echo "Can't find the right tag in libssh2 - giving up" + exit 1 + fi + mkdir -p build + cd build + cmake $OLDER_MAC_CMAKE -DCMAKE_INSTALL_PREFIX=$INSTALL_ROOT -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF .. + make -j4 + make install + fi LIBGIT_ARGS=" -DLIBGIT2_INCLUDE_DIR=$INSTALL_ROOT/include -DLIBGIT2_LIBRARIES=$INSTALL_ROOT/lib/libgit2.$SH_LIB_EXT " @@ -102,7 +217,7 @@ if [[ $PLATFORM = Darwin || "$LIBGIT" < "24" ]] ; then cd libgit2 # let's build with a recent enough version of master for the latest features git fetch origin - if ! git checkout v0.24.5 ; then + if ! git checkout $CURRENT_LIBGIT2 ; then echo "Can't find the right tag in libgit2 - giving up" exit 1 fi |