# Checks for BIND 10 headers and libraries
AX_ISC_BIND10
+if test "x$BIND10_RPATH" != "x"; then
+ LDFLAGS="$LDFLAGS $BIND10_RPATH"
+fi
# For the example host program, we require the BIND 10 DNS library
if test "x$BIND10_DNS_LIB" = "x"; then
-dnl @synopsis AX_BIND10
+dnl @synopsis AX_ISC_BIND10
dnl
dnl @summary figure out how to build C++ programs using ISC BIND 10 libraries
dnl
AC_DEFUN([AX_ISC_BIND10], [
AC_REQUIRE([AX_BOOST_INCLUDE])
+AC_REQUIRE([AX_ISC_RPATH])
AC_LANG_SAVE
AC_LANG([C++])
#include <util/buffer.h>
],[
isc::util::OutputBuffer buffer(0);
-], [BIND10_LDFLAGS="-L${d}"])
+], [BIND10_LDFLAGS="-L${d}"
+ if test "x$ISC_RPATH_FLAG" != "x"; then
+ BIND10_RPATH="-R${d}"
+ fi
+ ])
if test "x$BIND10_LDFLAGS" != "x"; then
break
fi
--- /dev/null
+dnl @synopsis AX_ISC_RPATH
+dnl
+dnl @summary figure out whether and which "rpath" linker option is available
+dnl
+dnl This macro checks if the linker supports an option to embed a path
+dnl to a runtime library (often installed in an uncommon place), such as
+dnl gcc's -rpath option. If found, it sets the ISC_RPATH_FLAG variable to
+dnl the found option flag. The main configure.ac can use it as follows:
+dnl if test "x$ISC_RPATH_FLAG" != "x"; then
+dnl LDFLAGS="$LDFLAGS ${ISC_RPATH_FLAG}/usr/local/lib/some_library"
+dnl fi
+
+AC_DEFUN([AX_ISC_RPATH], [
+
+# check -R and -Wl,-R rather than gcc specific -rpath to be as portable
+# as possible.
+AC_MSG_CHECKING([whether -R flag is available in linker])
+LDFLAGS_SAVED="$LDFLAGS"
+LDFLAGS="$LDFLAGS -R/usr/lib"
+AC_TRY_LINK([],[],
+ [ AC_MSG_RESULT(yes)
+ ISC_RPATH_FLAG=-R
+ ],[ AC_MSG_RESULT(no)
+ AC_MSG_CHECKING([whether -Wl,-R flag is available in linker])
+ LDFLAGS="$LDFLAGS_SAVED -Wl,-R"
+ AC_TRY_LINK([], [],
+ [ AC_MSG_RESULT(yes)
+ ISC_RPATH_FLAG=-Wl,-R
+ ],[ AC_MSG_RESULT(no) ])
+ ])
+LDFLAGS=$LDFLAGS_SAVED
+
+])dnl AX_ISC_RPATH