2005-11-06 09:06:41 +08:00
|
|
|
# Check for binary relocation support.
|
|
|
|
# Written by Hongli Lai
|
|
|
|
# http://autopackage.org/
|
|
|
|
|
|
|
|
AC_DEFUN([AM_BINRELOC],
|
|
|
|
[
|
|
|
|
AC_ARG_ENABLE(binreloc,
|
|
|
|
[ --enable-binreloc compile with binary relocation support
|
2005-11-11 23:22:49 +08:00
|
|
|
(default=no)],
|
|
|
|
enable_binreloc=$enableval,enable_binreloc=no)
|
2005-11-06 09:06:41 +08:00
|
|
|
|
|
|
|
AC_ARG_ENABLE(binreloc-threads,
|
|
|
|
[ --enable-binreloc-threads compile binary relocation with threads support
|
|
|
|
(default=yes)],
|
|
|
|
enable_binreloc_threads=$enableval,enable_binreloc_threads=yes)
|
|
|
|
|
|
|
|
BINRELOC_CFLAGS=
|
|
|
|
BINRELOC_LIBS=
|
|
|
|
if test "x$enable_binreloc" = "xauto"; then
|
|
|
|
AC_CHECK_FILE([/proc/self/maps])
|
|
|
|
AC_CACHE_CHECK([whether everything is installed to the same prefix],
|
|
|
|
[br_cv_valid_prefixes], [
|
|
|
|
if test "$bindir" = '${exec_prefix}/bin' -a "$sbindir" = '${exec_prefix}/sbin' -a \
|
|
|
|
"$datadir" = '${prefix}/share' -a "$libdir" = '${exec_prefix}/lib' -a \
|
|
|
|
"$libexecdir" = '${exec_prefix}/libexec' -a "$sysconfdir" = '${prefix}/etc'
|
|
|
|
then
|
|
|
|
br_cv_valid_prefixes=yes
|
|
|
|
else
|
|
|
|
br_cv_valid_prefixes=no
|
|
|
|
fi
|
|
|
|
])
|
|
|
|
fi
|
|
|
|
AC_CACHE_CHECK([whether binary relocation support should be enabled],
|
|
|
|
[br_cv_binreloc],
|
|
|
|
[if test "x$enable_binreloc" = "xyes"; then
|
|
|
|
br_cv_binreloc=yes
|
|
|
|
elif test "x$enable_binreloc" = "xauto"; then
|
|
|
|
if test "x$br_cv_valid_prefixes" = "xyes" -a \
|
|
|
|
"x$ac_cv_file__proc_self_maps" = "xyes"; then
|
|
|
|
br_cv_binreloc=yes
|
|
|
|
else
|
|
|
|
br_cv_binreloc=no
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
br_cv_binreloc=no
|
|
|
|
fi])
|
|
|
|
|
|
|
|
if test "x$br_cv_binreloc" = "xyes"; then
|
|
|
|
BINRELOC_CFLAGS="-DENABLE_BINRELOC"
|
|
|
|
if test "x$enable_binreloc_threads" = "xyes"; then
|
|
|
|
AC_CHECK_LIB([pthread], [pthread_getspecific])
|
|
|
|
fi
|
|
|
|
|
|
|
|
AC_CACHE_CHECK([whether binary relocation should use threads],
|
|
|
|
[br_cv_binreloc_threads],
|
|
|
|
[if test "x$enable_binreloc_threads" = "xyes"; then
|
|
|
|
if test "x$ac_cv_lib_pthread_pthread_getspecific" = "xyes"; then
|
|
|
|
br_cv_binreloc_threads=yes
|
|
|
|
else
|
|
|
|
br_cv_binreloc_threads=no
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
br_cv_binreloc_threads=no
|
|
|
|
fi])
|
|
|
|
|
|
|
|
if test "x$br_cv_binreloc_threads" = "xyes"; then
|
|
|
|
BINRELOC_LIBS="-lpthread"
|
|
|
|
else
|
|
|
|
BINRELOC_CFLAGS="$BINRELOC_CFLAGS -DBR_PTHREADS=0"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AC_SUBST(BINRELOC_CFLAGS)
|
|
|
|
AC_SUBST(BINRELOC_LIBS)
|
2006-02-20 01:44:57 +08:00
|
|
|
AM_CONDITIONAL(USE_BINRELOC, test x$br_cv_binreloc = xyes)
|
2005-11-06 09:06:41 +08:00
|
|
|
])
|