From: Anders F Björklund Date: Sun, 21 Jul 2019 14:35:18 +0000 (+0200) Subject: Add option to build static libb2 from source X-Git-Tag: v4.0~877 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=6c370127a940c5abbcc3e69345e6993ac40f2059;p=thirdparty%2Fccache.git Add option to build static libb2 from source --- diff --git a/.travis.yml b/.travis.yml index 129d36191..ee4f0b230 100644 --- a/.travis.yml +++ b/.travis.yml @@ -37,12 +37,12 @@ matrix: # Job 3: Mac OS X native Clang - os: osx compiler: clang - env: V=1 CONFIGURE="--with-libzstd-from-internet" ENABLE_CACHE_CLEANUP_TESTS=1 + env: V=1 CONFIGURE="--with-libzstd-from-internet --with-libb2-from-internet" ENABLE_CACHE_CLEANUP_TESTS=1 # Job 4: Linux 32-bit native - os: linux compiler: gcc - env: V=1 CFLAGS="-m32 -g -O2" LDFLAGS="-m32" CONFIGURE="--host=i386-linux-gnu --with-libzstd-from-internet" ENABLE_CACHE_CLEANUP_TESTS=1 + env: V=1 CFLAGS="-m32 -g -O2" LDFLAGS="-m32" CONFIGURE="--host=i386-linux-gnu --with-libzstd-from-internet --with-libb2-from-internet" ENABLE_CACHE_CLEANUP_TESTS=1 addons: apt: packages: @@ -52,7 +52,7 @@ matrix: # Job 5: Linux cross-compiled 32-bit MinGW - os: linux compiler: i686-w64-mingw32-gcc - env: V=1 CONFIGURE="--host=i686-w64-mingw32 --with-libzstd-from-internet" TEST="unittest/run.exe" ENABLE_CACHE_CLEANUP_TESTS=1 + env: V=1 CONFIGURE="--host=i686-w64-mingw32 --with-libzstd-from-internet --with-libb2-from-internet" TEST="unittest/run.exe" ENABLE_CACHE_CLEANUP_TESTS=1 addons: apt: packages: @@ -62,7 +62,7 @@ matrix: # Job 6: Linux cross-compiled 64-bit MinGW - os: linux compiler: x86_64-w64-mingw32-gcc - env: V=1 CONFIGURE="--host=x86_64-w64-mingw32 --with-libzstd-from-internet" TEST="unittest/run.exe" ENABLE_CACHE_CLEANUP_TESTS=1 + env: V=1 CONFIGURE="--host=x86_64-w64-mingw32 --with-libzstd-from-internet --with-libb2-from-internet" TEST="unittest/run.exe" ENABLE_CACHE_CLEANUP_TESTS=1 addons: apt: packages: diff --git a/Makefile.in b/Makefile.in index a58cdb660..1d89e0251 100644 --- a/Makefile.in +++ b/Makefile.in @@ -117,6 +117,7 @@ install: ccache$(EXEEXT) @disable_man@ccache.1 clean: rm -rf $(files_to_clean) [ ! -d src/third_party/zstd ] || $(MAKE) -C src/third_party/zstd/lib clean + [ ! -d src/libb2 ] || $(MAKE) -C src/libb2 clean src/snprintf.o: CFLAGS += @no_implicit_fallthrough_warning@ @@ -128,6 +129,14 @@ libzstd_options = \ src/third_party/zstd/lib/libzstd.a: $(MAKE) -C src/third_party/zstd/lib libzstd.a $(libzstd_options) CC="$(CC)" +libb2_options = \ + --disable-shared \ + --enable-static + +src/libb2/src/.libs/libb2.a: + cd src/libb2 && ./configure --build=@build_alias@ --host=@host_alias@ --target=@target_alias@ ${libb2_options} + $(MAKE) -C src/libb2 CC="$(CC)" + .PHONY: performance performance: ccache$(EXEEXT) $(srcdir)/misc/performance --ccache ccache$(EXEEXT) $(CC) $(all_cppflags) $(all_cflags) $(srcdir)/src/ccache.c diff --git a/configure.ac b/configure.ac index 8a85089c9..06a3b33e9 100644 --- a/configure.ac +++ b/configure.ac @@ -161,6 +161,43 @@ else extra_libs="src/third_party/zstd/lib/libzstd.a" fi +dnl Check for libb2 +libb2_version=0.98.1 +libb2_url=https://github.com/BLAKE2/libb2/releases/download/v${libb2_version}/libb2-${libb2_version}.tar.gz + +AC_ARG_WITH(libb2-from-internet, + [AS_HELP_STRING([--with-libb2-from-internet], + [download and use libb2 from the Internet instead of using the system's default libb2])]) +if test x${with_libb2_from_internet} = x; then + AC_CHECK_LIB([b2],[blake2b], [found_libb2=yes]) + if test x${found_libb2} = x; then + AC_MSG_ERROR(please install libb2 or use --with-libb2-from-internet) + fi + LIBS="$LIBS -lb2" +else + libb2_archive=`basename ${libb2_url}` + if ! test -f ${libb2_archive}; then + AC_CHECK_TOOL(WGET, wget) + if test -n "$WGET"; then + AC_MSG_NOTICE(downloading libb2 from $libb2_url) + wget -q ${libb2_url} + else + AC_CHECK_TOOL(CURL, curl) + if test -n "$CURL"; then + AC_MSG_NOTICE(downloading libb2 from $libb2_url) + curl -sLOJ ${libb2_url} + else + AC_MSG_ERROR(please install wget or curl) + fi + fi + fi + (cd src && tar -xzf ../${libb2_archive}) + rm -rf src/libb2 + mv src/libb2-${libb2_version} src/libb2 + CPPFLAGS="$CPPFLAGS -I$srcdir/src/libb2/src" + extra_libs="$extra_libs src/libb2/src/.libs/libb2.a" +fi + AC_ARG_ENABLE(man, [AS_HELP_STRING([--disable-man], [disable installing man pages])]) @@ -176,9 +213,6 @@ if test x${enable_tracing} = xyes; then extra_sources="src/third_party/minitrace.c" fi -AC_CHECK_HEADERS(blake2.h) -AC_CHECK_LIB([b2],[blake2b]) - dnl Linking on Windows needs ws2_32 if test x${windows_os} = xyes; then LIBS="$LIBS -lws2_32" diff --git a/dev.mk.in b/dev.mk.in index c815cb434..b69eba336 100644 --- a/dev.mk.in +++ b/dev.mk.in @@ -170,6 +170,7 @@ endef distcheck: $(firstword $(dist_archives)) $(call do_distcheck) $(call do_distcheck, --with-libzstd-from-internet) + $(call do_distcheck, --with-libb2-from-internet) $(call do_distcheck, CC=clang) .PHONY: docs