2014-08-14 18:30:48 +02:00
|
|
|
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 the
|
|
|
|
dnl commonly used -R 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
|
|
|
|
dnl
|
|
|
|
dnl If you pass --disable-rpath to configure, ISC_RPATH_FLAG is not set
|
|
|
|
|
|
|
|
AC_DEFUN([AX_ISC_RPATH], [
|
|
|
|
|
|
|
|
AC_ARG_ENABLE(rpath,
|
2021-01-04 15:46:21 +02:00
|
|
|
[AS_HELP_STRING([--disable-rpath],[don't hardcode library path into binaries])],
|
2014-08-14 18:30:48 +02:00
|
|
|
rpath=$enableval, rpath=yes)
|
|
|
|
|
|
|
|
if test x$rpath != xno; then
|
|
|
|
# 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
|
2021-04-01 21:48:02 +02:00
|
|
|
# cases -R is not actually recognized but AC_LINK_IFELSE doesn't fail due
|
|
|
|
# to that.
|
2014-08-14 18:30:48 +02:00
|
|
|
AC_MSG_CHECKING([whether -Wl,-R flag is available in linker])
|
2021-01-04 15:47:04 +02:00
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
|
|
|
[AC_MSG_RESULT(yes)
|
2014-08-14 18:30:48 +02:00
|
|
|
ISC_RPATH_FLAG=-Wl,-R
|
2021-01-04 15:47:04 +02:00
|
|
|
],
|
|
|
|
[AC_MSG_RESULT(no)
|
2014-08-14 18:30:48 +02:00
|
|
|
AC_MSG_CHECKING([whether -R flag is available in linker])
|
|
|
|
|
2021-01-06 15:37:08 +01:00
|
|
|
# Apple clang 5.1 is now considers unknown parameters
|
|
|
|
# passed to linker (ld) as errors. However, the same
|
2021-09-07 11:37:42 +03:00
|
|
|
# unknown parameters passed to compiler (g++) are merely
|
2021-03-18 10:22:04 +02:00
|
|
|
# treated as warnings. To make sure that we pick those
|
2021-01-06 15:37:08 +01:00
|
|
|
# up, is to use -Werror.
|
2014-08-14 18:30:48 +02:00
|
|
|
CXXFLAGS="$CXXFLAGS_SAVED -R/usr/lib"
|
|
|
|
CCFLAGS="$CCFLAGS_SAVED -R/usr/lib"
|
2021-01-04 15:47:04 +02:00
|
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
|
|
|
[AC_MSG_RESULT([yes; note that -R is more sensitive about the position in option arguments])
|
|
|
|
ISC_RPATH_FLAG=-R],
|
|
|
|
[AC_MSG_RESULT(no)])
|
|
|
|
]
|
|
|
|
)
|
2014-08-14 18:30:48 +02:00
|
|
|
|
|
|
|
CXXFLAGS=$CXXFLAGS_SAVED
|
|
|
|
CCFLAGS=$CCFLAGS_SAVED
|
|
|
|
fi
|
|
|
|
|
2024-08-13 13:45:25 +03:00
|
|
|
])
|