mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									acee6f4bec
								
							
						
					
					
						commit
						bd18b6b88f
					
				
					 1 changed files with 116 additions and 1 deletions
				
			
		
							
								
								
									
										117
									
								
								scripts/build.sh
									
										
									
									
									
								
							
							
						
						
									
										117
									
								
								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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue