diff --git a/examples/configure.ac b/examples/configure.ac index 937968760d..fe806fd9a7 100644 --- a/examples/configure.ac +++ b/examples/configure.ac @@ -13,6 +13,9 @@ AC_LANG([C++]) # 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 diff --git a/examples/m4/ax_isc_bind10.m4 b/examples/m4/ax_isc_bind10.m4 index 7df18c5ca9..3607c913cb 100644 --- a/examples/m4/ax_isc_bind10.m4 +++ b/examples/m4/ax_isc_bind10.m4 @@ -1,4 +1,4 @@ -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 @@ -23,6 +23,7 @@ dnl BIND10_xxx_LIB is defined. AC_DEFUN([AX_ISC_BIND10], [ AC_REQUIRE([AX_BOOST_INCLUDE]) +AC_REQUIRE([AX_ISC_RPATH]) AC_LANG_SAVE AC_LANG([C++]) @@ -82,7 +83,11 @@ do #include ],[ 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 diff --git a/examples/m4/ax_isc_rpath.m4 b/examples/m4/ax_isc_rpath.m4 new file mode 100644 index 0000000000..253ecdb70c --- /dev/null +++ b/examples/m4/ax_isc_rpath.m4 @@ -0,0 +1,33 @@ +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