aboutsummaryrefslogtreecommitdiff
path: root/libmudflap/configure.in
diff options
context:
space:
mode:
Diffstat (limited to 'libmudflap/configure.in')
-rw-r--r--libmudflap/configure.in74
1 files changed, 69 insertions, 5 deletions
diff --git a/libmudflap/configure.in b/libmudflap/configure.in
index afdde6c..c04c80c 100644
--- a/libmudflap/configure.in
+++ b/libmudflap/configure.in
@@ -11,17 +11,40 @@ AC_SUBST(PACKAGE)
libtool_VERSION=1:0:0
AC_SUBST(libtool_VERSION)
-dnl AM_ENABLE_MULTILIB
+AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
+AC_ARG_ENABLE(version-specific-runtime-libs,
+[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
+[case "$enableval" in
+ yes) version_specific_libs=yes ;;
+ no) version_specific_libs=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
+ esac],
+[version_specific_libs=no])
+AC_MSG_RESULT($version_specific_libs)
+
AM_MAINTAINER_MODE
AC_EXEEXT
+AM_ENABLE_MULTILIB(, ..)
+
target_alias=${target_alias-$target}
AC_SUBST(target_alias)
AM_CONFIG_HEADER(config.h)
AC_LANG_C
+# The same as in boehm-gc and libstdc++. Have to borrow it from there.
+# We must force CC to /not/ be precious variables; otherwise
+# the wrong, non-multilib-adjusted value will be used in multilibs.
+# As a side effect, we have to subst CFLAGS ourselves.
+
+m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS])
+m4_define([_AC_ARG_VAR_PRECIOUS],[])
AC_PROG_CC
+m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
+
+AC_SUBST(CFLAGS)
+
if test "x$GCC" != "xyes"; then
AC_MSG_ERROR([libmudflap must be built with GCC])
fi
@@ -56,7 +79,7 @@ fi
AC_MSG_CHECKING([for socklen_t in sys/socket.h])
AC_TRY_COMPILE([#define _POSIX_PII_SOCKET
-#include <sys/types.h>
+#include <sys/types.h>
#include <sys/socket.h>], [socklen_t x = 5;],
[AC_DEFINE(HAVE_SOCKLEN_T, 1, [Define it socklen_t typedef is in sys/socket.h.])
AC_MSG_RESULT(yes)],
@@ -74,7 +97,7 @@ then
MF_HAVE_UINTPTR_T=1
else
AC_TRY_COMPILE([#include <sys/types.h>], [uintptr_t k = 0;],
- [MF_HAVE_UINTPTR_T=1], [MF_HAVE_UINTPTR_T=0])
+ [MF_HAVE_UINTPTR_T=1], [MF_HAVE_UINTPTR_T=0])
fi
AC_SUBST(MF_HAVE_UINTPTR_T)
@@ -95,6 +118,42 @@ AM_CONDITIONAL(LIBMUDFLAPTH, [test "x$ac_have_pthread_h" != ""])
AC_CHECK_LIB(dl, dlsym)
+# Process the option "--enable-version-specific-runtime-libs"
+gcc_version_trigger=${srcdir}/../gcc/version.c
+gcc_version_full=`grep version_string ${gcc_version_trigger} | sed -e 's/.*\"\([[^ \"]]*\)[[ \"]].*/\1/'`
+gcc_version=`echo ${gcc_version_full} | sed -e 's/\([^ ]*\) .*/\1/'`
+AC_SUBST(gcc_version)
+
+# Calculate toolexeclibdir
+# Also toolexecdir, though it's only used in toolexeclibdir
+case ${version_specific_libs} in
+ yes)
+ # Need the gcc compiler version to know where to install libraries
+ # and header files if --enable-version-specific-runtime-libs option
+ # is selected.
+ toolexecdir='$(libdir)/gcc/$(target_alias)'
+ toolexeclibdir='$(toolexecdir)/'${gcc_version}'$(MULTISUBDIR)'
+ ;;
+ no)
+ if test -n "$with_cross_host" &&
+ test x"$with_cross_host" != x"no"; then
+ # Install a library built with a cross compiler in tooldir, not libdir.
+ toolexecdir='$(exec_prefix)/$(target_alias)'
+ toolexeclibdir='$(toolexecdir)/lib'
+ else
+ toolexecdir='$(libdir)/gcc-lib/$(target_alias)'
+ toolexeclibdir='$(libdir)'
+ fi
+ multi_os_directory=`$CC -print-multi-os-directory`
+ case $multi_os_directory in
+ .) ;; # Avoid trailing /.
+ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
+ esac
+ ;;
+esac
+AC_SUBST(toolexecdir)
+AC_SUBST(toolexeclibdir)
+
if test "x$enable_shared" = "xyes" && test "x$ac_have_pthread_h" != ""; then
# NB: don't check for -lpthread here, because then it would be
# added to LIBS. For the thread-unaware libmudflap.la, we don't
@@ -112,7 +171,7 @@ if test "x$enable_shared" = "xyes" && test "x$ac_have_pthread_h" != ""; then
# default symbol versioning suffix ("@@"), if any. But that's tricky.
# Rather, run nm on the resulting executable. Unfortunately, autoconf
# doesn't appear to have a macro that builds a test executable for
- # subsequent analysis ... so we do it by hand here.
+ # subsequent analysis ... so we do it by hand here.
cat >> conftest.c << EOF
#include <pthread.h>
int main () { void *p = (void *) & pthread_create; return (int) p; }
@@ -131,7 +190,12 @@ EOF
LIBS="$oldLIBS"
fi
fi
-AC_DEFINE_UNQUOTED(PTHREAD_CREATE_VERSION, $pthread_create_version, [pthread_create symbol version])
+AC_DEFINE_UNQUOTED(PTHREAD_CREATE_VERSION, $pthread_create_version, [pthread_create symbol version])
+if test ${multilib} = yes; then
+ multilib_arg="--enable-multilib"
+else
+ multilib_arg=
+fi
AC_OUTPUT([Makefile testsuite/Makefile mf-runtime.h])