]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2356] try -Wl,-R first to make it safer for build-time failure
authorJINMEI Tatuya <jinmei@isc.org>
Fri, 2 Nov 2012 18:07:55 +0000 (11:07 -0700)
committerJINMEI Tatuya <jinmei@isc.org>
Fri, 2 Nov 2012 18:07:55 +0000 (11:07 -0700)
examples/m4/ax_isc_rpath.m4

index 253ecdb70cb1fd1d01e725d7acb4d70b9ba985b5..91d9b8af1f2e247207462731d78bc717cb92da4f 100644 (file)
@@ -12,22 +12,35 @@ 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"
+# We'll tweak both CXXFLAGS and CCFLAGS so this function will work whichever
+# language is used in the main script.  Note also that it's not LDFLAGS;
+# technically this is a linker flag, but we've noticed $LDFLAGS can be placed
+# where the compiler could interpret it as a compiler option, leading to
+# subtle failure mode.  So, in the check below using the compiler flag is
+# safer (in the actual Makefiles the flag should be set in LDFLAGS).
+CXXFLAGS_SAVED="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS -Wl,-R/usr/lib"
+CCFLAGS_SAVED="$CCFLAGS"
+CCFLAGS="$CCFLAGS -Wl,-R/usr/lib"
+
+# check -Wl,-R and -R rather than gcc specific -rpath to be as portable
+# as possible.  -Wl,-R seems to be safer, so we try it first.  In some cases
+# -R is not actually recognized but AC_TRY_LINK doesn't fail due to that.
+AC_MSG_CHECKING([whether -Wl,-R flag is available in linker])
 AC_TRY_LINK([],[],
     [ AC_MSG_RESULT(yes)
-        ISC_RPATH_FLAG=-R
+        ISC_RPATH_FLAG=-Wl,-R
     ],[ AC_MSG_RESULT(no)
-        AC_MSG_CHECKING([whether -Wl,-R flag is available in linker])
-        LDFLAGS="$LDFLAGS_SAVED -Wl,-R"
+        AC_MSG_CHECKING([whether -R flag is available in linker])
+       CXXFLAGS="$CXXFLAGS_SAVED -R"
+       CCFLAGS="$CCFLAGS_SAVED -R"
         AC_TRY_LINK([], [],
-            [ AC_MSG_RESULT(yes)
-                ISC_RPATH_FLAG=-Wl,-R
+            [ AC_MSG_RESULT([yes; note that -R is more sensitive about the position in option arguments])
+                ISC_RPATH_FLAG=-R
             ],[ AC_MSG_RESULT(no) ])
     ])
-LDFLAGS=$LDFLAGS_SAVED
+
+CXXFLAGS=$CXXFLAGS_SAVED
+CCFLAGS=$CCFLAGS_SAVED
 
 ])dnl AX_ISC_RPATH