Browse Source

[2356] introduce the helper m4 macro to identify -R variant linker options

extracted from the top-level configure.ac.
JINMEI Tatuya 12 years ago
parent
commit
9f360b39c7
3 changed files with 43 additions and 2 deletions
  1. 3 0
      examples/configure.ac
  2. 7 2
      examples/m4/ax_isc_bind10.m4
  3. 33 0
      examples/m4/ax_isc_rpath.m4

+ 3 - 0
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

+ 7 - 2
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 <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

+ 33 - 0
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