[master] d6216cc Dedicated autoconf macros for libraries detection

Dridi Boukelmoune dridi.boukelmoune at gmail.com
Sat Nov 26 14:25:04 CET 2016


commit d6216ccaa5302456bbf097c84abd9d22868bd0ca
Author: Dridi Boukelmoune <dridi.boukelmoune at gmail.com>
Date:   Sat Nov 26 13:54:22 2016 +0100

    Dedicated autoconf macros for libraries detection
    
    They live as private macros in varnish.m4, which is now included in the
    Varnish build during the autogen phase. This way it is now possible to
    dogfood on macros we distribute downstream. Considering how simple they
    are, they could be made public macros for the convenience of VMOD or VUT
    writers.
    
    We don't need to have the LIBS-saving-dance in configure.ac for every
    single dependency.

diff --git a/autogen.sh b/autogen.sh
index f299ab6..b7ba7ae 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -45,7 +45,7 @@ fi
 set -ex
 
 $LIBTOOLIZE --copy --force
-aclocal -I m4
+aclocal -I m4 -I .
 autoheader
 automake --add-missing --copy --foreign
 autoconf
diff --git a/bin/varnishd/Makefile.am b/bin/varnishd/Makefile.am
index 2d2057d..1d02ba0 100644
--- a/bin/varnishd/Makefile.am
+++ b/bin/varnishd/Makefile.am
@@ -157,7 +157,7 @@ varnishd_LDADD = \
 	@SAN_LDFLAGS@ \
 	@JEMALLOC_LDADD@ \
 	@PCRE_LIBS@ \
-	${DL_LIBS} ${PTHREAD_LIBS} ${NET_LIBS} ${LIBM} ${LIBUMEM}
+	${DL_LIBS} ${PTHREAD_LIBS} ${NET_LIBS} ${LIBM} ${UMEM_LIBS}
 
 noinst_PROGRAMS = vhp_gen_hufdec
 vhp_gen_hufdec_SOURCES = hpack/vhp_gen_hufdec.c
diff --git a/configure.ac b/configure.ac
index 1280af5..4ad52ec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -65,40 +65,18 @@ AC_ARG_WITH([dot],
 AM_CONDITIONAL(HAVE_DOT,[test "x$DOT" != "xno"])
 
 # Checks for libraries.
-save_LIBS="${LIBS}"
-LIBS=""
-AC_CHECK_LIB(rt, clock_gettime)
-RT_LIBS="${LIBS}"
-LIBS="${save_LIBS}"
-AC_SUBST(RT_LIBS)
-
-save_LIBS="${LIBS}"
-LIBS=""
-AC_CHECK_LIB(dl, dlopen)
-DL_LIBS="${LIBS}"
-LIBS="${save_LIBS}"
-AC_SUBST(DL_LIBS)
+_VARNISH_SEARCH_LIBS(pthread, pthread_create, [thr pthread c_r])
+_VARNISH_CHECK_LIB(rt, clock_gettime)
+_VARNISH_CHECK_LIB(dl, dlopen)
+_VARNISH_CHECK_LIB(socket, socket)
+_VARNISH_CHECK_LIB(nsl, getaddrinfo)
+NET_LIBS="${SOCKET_LIBS} ${NSL_LIBS}"
 
 AX_WITH_CURSES
 if test "x$ax_cv_curses" != xyes; then
    AC_MSG_ERROR([requires an X/Open-compatible Curses library])
 fi
 
-save_LIBS="${LIBS}"
-LIBS=""
-AC_SEARCH_LIBS(pthread_create, [thr pthread c_r])
-PTHREAD_LIBS="${LIBS}"
-LIBS="${save_LIBS}"
-AC_SUBST(PTHREAD_LIBS)
-
-save_LIBS="${LIBS}"
-LIBS=""
-AC_CHECK_LIB(socket, socket)
-AC_CHECK_LIB(nsl, getaddrinfo)
-NET_LIBS="${LIBS}"
-LIBS="${save_LIBS}"
-AC_SUBST(NET_LIBS)
-
 # XXX: This _may_ be for OS/X
 AC_CHECK_LIBM
 AC_SUBST(LIBM)
@@ -320,17 +298,9 @@ AC_SUBST(JEMALLOC_LDADD)
 # Userland slab allocator, available only on Solaris
 case $target in
 *-*-solaris*)
-	AC_CHECK_HEADERS([umem.h])
-	if test "$ac_cv_have_umem_h" = yes; then
-		save_LIBS="${LIBS}"
-		LIBS=""
-		AC_CHECK_LIB(umem, umem_alloc)
-		LIBUMEM="${LIBS}"
-		LIBS="${save_LIBS}"
-	fi
+	AC_CHECK_HEADERS([umem.h], [_VARNISH_CHECK_LIB(umem, umem_alloc)])
 	;;
 esac
-AC_SUBST(LIBUMEM)
 
 # These functions are provided by libcompat on platforms where they
 # are not available
diff --git a/varnish.m4 b/varnish.m4
index 5c5cab1..ec9840b 100644
--- a/varnish.m4
+++ b/varnish.m4
@@ -42,6 +42,26 @@
 # any time. Public macros starting with VARNISH_ are documented and will
 # maintain backwards compatibility with older versions of Varnish Cache.
 
+# _VARNISH_CHECK_LIB(LIB, FUNC)
+# -----------------------------
+AC_DEFUN([_VARNISH_CHECK_LIB], [
+	save_LIBS="${LIBS}"
+	LIBS=""
+	AC_CHECK_LIB([$1], [$2])
+	AC_SUBST(m4_toupper($1_LIBS), [$LIBS])
+	LIBS="${save_LIBS}"
+])
+
+# _VARNISH_SEARCH_LIBS(VAR, FUNC, LIBS)
+# -------------------------------------
+AC_DEFUN([_VARNISH_SEARCH_LIBS], [
+	save_LIBS="${LIBS}"
+	LIBS=""
+	AC_SEARCH_LIBS([$2], [$3])
+	AC_SUBST(m4_toupper($1_LIBS), [$LIBS])
+	LIBS="${save_LIBS}"
+])
+
 # _VARNISH_PKG_CONFIG
 # --------------------
 AC_DEFUN([_VARNISH_PKG_CONFIG], [



More information about the varnish-commit mailing list