From: Nick Lewycky Date: Thu, 5 Mar 2009 08:20:21 +0000 (+0000) Subject: Autodetect the availability of -export-dynamic in the linker. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=18f99072a61429cc6aec9bd3dc611867819d962b;p=oota-llvm.git Autodetect the availability of -export-dynamic in the linker. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66156 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Makefile.config.in b/Makefile.config.in index ad490712138..9d8ee3b137c 100644 --- a/Makefile.config.in +++ b/Makefile.config.in @@ -203,6 +203,9 @@ OBJ_ROOT := . # What to pass as rpath flag to g++ RPATH := @RPATH@ +# What to pass as -rdynamic flag to g++ +RDYNAMIC := @RDYNAMIC@ + # These are options that can either be enabled here, or can be enabled on the # make command line (ie, make ENABLE_PROFILING=1): diff --git a/autoconf/configure.ac b/autoconf/configure.ac index e58dc66765a..44397b89bdd 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -636,9 +636,12 @@ AC_PATH_PROGS(OCAMLDEP, [ocamldep]) AC_PATH_PROGS(OCAMLDOC, [ocamldoc]) AC_PATH_PROGS(GAS, [gas as]) -dnl Determine if the linker supports the -R option. +dnl Determine whether the linker supports the -R option. AC_LINK_USE_R +dnl Determine whether the linker supports the -export-dynamic option. +AC_LINK_EXPORT_DYNAMIC + dnl Check for libtool and the library that has dlopen function (which must come dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with dnl libtool). @@ -1013,16 +1016,25 @@ if test "$binding_prereqs_failed" = 1 ; then AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.]) fi -dnl Determine if the compiler supports -fvisibility-inlines-hidden. +dnl Determine whether the compiler supports -fvisibility-inlines-hidden. AC_CXX_USE_VISIBILITY_INLINES_HIDDEN dnl Determine linker rpath flag -case $llvm_cv_os_type in - SunOS) RPATH="-Wl,-R" ;; - *) RPATH="-Wl,-rpath" ;; -esac +if test "$llvm_cv_link_use_r" = "yes" ; then + RPATH="-Wl,-R" +else + RPATH="-Wl,-rpath" +fi AC_SUBST(RPATH) +dnl Determine linker rdynamic flag +if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then + RDYNAMIC="-Wl,-export-dynamic" +else + RDYNAMIC="" +fi +AC_SUBST(RDYNAMIC) + dnl===-----------------------------------------------------------------------=== dnl=== dnl=== SECTION 10: Specify the output files and generate it diff --git a/autoconf/m4/link_options.m4 b/autoconf/m4/link_options.m4 new file mode 100644 index 00000000000..66036de433d --- /dev/null +++ b/autoconf/m4/link_options.m4 @@ -0,0 +1,41 @@ +# +# Determine if the system can handle the -R option being passed to the linker. +# +# This macro is specific to LLVM. +# +AC_DEFUN([AC_LINK_USE_R], +[AC_CACHE_CHECK([for compiler -Wl,-R option],[llvm_cv_link_use_r], +[ AC_LANG_PUSH([C]) + oldcflags="$CFLAGS" + CFLAGS="$CFLAGS -Wl,-R." + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[int main() { return 0; }]])], + [llvm_cv_link_use_r=yes],[llvm_cv_link_use_r=no]) + CFLAGS="$oldcflags" + AC_LANG_POP([C]) +]) +if test "$llvm_cv_link_use_r" = yes ; then + AC_DEFINE([HAVE_LINK_R],[1],[Define if you can use -Wl,-R. to pass -R. to the linker, in order to add the current directory to the dynamic linker search path.]) + fi +]) + +# +# Determine if the system can handle the -R option being passed to the linker. +# +# This macro is specific to LLVM. +# +AC_DEFUN([AC_LINK_EXPORT_DYNAMIC], +[AC_CACHE_CHECK([for compiler -Wl,-export-dynamic option], + [llvm_cv_link_use_export_dynamic], +[ AC_LANG_PUSH([C]) + oldcflags="$CFLAGS" + CFLAGS="$CFLAGS -Wl,-export-dynamic" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[int main() { return 0; }]])], + [llvm_cv_link_use_export_dynamic=yes],[llvm_cv_link_use_export_dynamic=no]) + CFLAGS="$oldcflags" + AC_LANG_POP([C]) +]) +if test "$llvm_cv_link_use_export_dynamic" = yes ; then + AC_DEFINE([HAVE_LINK_EXPORT_DYNAMIC],[1],[Define if you can use -Wl,-export-dynamic.]) + fi +]) + diff --git a/autoconf/m4/link_use_r.m4 b/autoconf/m4/link_use_r.m4 deleted file mode 100644 index 30c964e2597..00000000000 --- a/autoconf/m4/link_use_r.m4 +++ /dev/null @@ -1,19 +0,0 @@ -# -# Determine if the system can handle the -R option being passed to the linker. -# -# This macro is specific to LLVM. -# -AC_DEFUN([AC_LINK_USE_R], -[AC_CACHE_CHECK([for compiler -Wl,-R option],[llvm_cv_link_use_r], -[ AC_LANG_PUSH([C]) - oldcflags="$CFLAGS" - CFLAGS="$CFLAGS -Wl,-R." - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[int main() { return 0; }]])], - [llvm_cv_link_use_r=yes],[llvm_cv_link_use_r=no]) - CFLAGS="$oldcflags" - AC_LANG_POP([C]) -]) -if test "$llvm_cv_link_use_r" = yes ; then - AC_DEFINE([HAVE_LINK_R],[1],[Define if you can use -Wl,-R. to pass -R. to the linker, in order to add the current directory to the dynamic linker search path.]) - fi -])