]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Add option to build static libb2 from source
authorAnders F Björklund <anders.f.bjorklund@gmail.com>
Sun, 21 Jul 2019 14:35:18 +0000 (16:35 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Mon, 22 Jul 2019 20:41:37 +0000 (22:41 +0200)
.travis.yml
Makefile.in
configure.ac
dev.mk.in

index 129d361915017241eae755edde0e602f670a21fc..ee4f0b2301588abc7756df4fdb0122b1730234b8 100644 (file)
@@ -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:
index a58cdb6608b096d0bdc82aa36f8d78e6cedb3057..1d89e0251d65bfd6dc9b7d949b74474b15e3d222 100644 (file)
@@ -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
index 8a85089c90b87bb4af296a8aa48069b963680342..06a3b33e937b7c8ee270135bc3e9b0a672635a00 100644 (file)
@@ -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"
index c815cb434c402ad47de675f9980e5c5db1c16793..b69eba3360368187fde77647ad1e3458e24e0687 100644 (file)
--- 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