From: Noah Watkins Date: Sat, 21 Sep 2013 16:29:47 +0000 (-0700) Subject: autoconf: check for res_nquery explicitly X-Git-Tag: v0.74~89^2~1^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1cc8558b6071ecc9ed18301014e888b26046942f;p=ceph.git autoconf: check for res_nquery explicitly Creates a test that checks explicitly for res_nquery, which can be a macro in resolv.h. Defines RESOLV_LIBS that contains any libraries that need to be linked against. Notes from later fix: Based on the 2013-09-30 version of wip-port. On FreeBSD, one must include netinet/in.h to get the definitions for stuff in resolv.h. Also, resolv.h's functions are part of libc instead of libresolv. Signed-off-by: Alan Somers Signed-off-by: Noah Watkins --- diff --git a/configure.ac b/configure.ac index 9fc26e115ed3..5bcbe031948d 100644 --- a/configure.ac +++ b/configure.ac @@ -118,8 +118,41 @@ AX_CXX_STATIC_CAST # Checks for libraries. ACX_PTHREAD AC_CHECK_LIB([uuid], [uuid_parse], [true], AC_MSG_FAILURE([libuuid not found])) + +# +# Check for res_nquery in libresolv. There are several variations. On OSX +# res_nquery is a macro defined in resolv.h, so the typical AC_CHECK_LIB +# doesn't work. On FreeBSD res_nquery can be found in libc. The required +# library for linking (if any) is defined RESOLV_LIBS. +# +AC_CHECK_HEADER([resolv.h], [], [], [#include ]) + +AC_DEFUN([CHECK_RESOLV_LIBS], [{ + AC_MSG_CHECKING([if res_nquery will link (LIBS=$1)]) + saved_LIBS="${LIBS}" + LIBS="$1" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + #include + #include + ]], [[res_nquery(0, 0, 0, 0, 0, 0);]])], + [AC_MSG_RESULT([yes]) + [$2]], + AC_MSG_RESULT([no])) + LIBS="${saved_LIBS}" +}]) + +RESOLV_LIBS="" +CHECK_RESOLV_LIBS([$RESOLV_LIBS], [resolv_libs="ok"]) +if test x"$resolv_libs" != "xok"; then + RESOLV_LIBS="-lresolv" + CHECK_RESOLV_LIBS([$RESOLV_LIBS], [resolv_libs="ok"]) + if test x"$resolv_libs" != "xok"; then + AC_MSG_FAILURE([no resolv library found]) + fi +fi +AC_SUBST([RESOLV_LIBS]) + AC_CHECK_LIB([m], [pow], [true], AC_MSG_FAILURE([libm not found])) -AC_CHECK_LIB([resolv], [__res_nquery], [true], AC_MSG_FAILURE([libresolv not found])) if test x"$linux" = x"yes"; then AC_CHECK_LIB([keyutils], [add_key], [true], AC_MSG_FAILURE([libkeyutils not found])) fi diff --git a/src/rgw/Makefile.am b/src/rgw/Makefile.am index b92c35e08d61..d3464eaba518 100644 --- a/src/rgw/Makefile.am +++ b/src/rgw/Makefile.am @@ -68,7 +68,7 @@ radosgw_SOURCES = \ rgw/rgw_swift.cc \ rgw/rgw_swift_auth.cc \ rgw/rgw_main.cc -radosgw_LDADD = $(LIBRGW) $(LIBRGW_DEPS) -lresolv $(CEPH_GLOBAL) +radosgw_LDADD = $(LIBRGW) $(LIBRGW_DEPS) $(RESOLV_LIBS) $(CEPH_GLOBAL) bin_PROGRAMS += radosgw radosgw_admin_SOURCES = rgw/rgw_admin.cc