diff --git a/gcc/config.in b/gcc/config.in index 98ddddf88a0..03faee1c6ac 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -49,6 +49,19 @@ #endif +/* Specify a runpath directory, additional to those provided by the compiler + */ +#ifndef USED_FOR_TARGET +#undef DARWIN_ADD_RPATH +#endif + + +/* Should add an extra runpath directory */ +#ifndef USED_FOR_TARGET +#undef DARWIN_DO_EXTRA_RPATH +#endif + + /* Define to enable the use of a default assembler. */ #ifndef USED_FOR_TARGET #undef DEFAULT_ASSEMBLER diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index ae7d5c65d15..b43c8ce97a8 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -321,6 +321,19 @@ extern GTY(()) int darwin_ms_struct; %:version-compare(>= 10.11 mmacosx-version-min= -lemutls_w) " #endif +/* We might elect to add a path even when this compiler does not use embedded + run paths, so that we can use libraries from an alternate compiler that is + using embedded runpaths. */ +#if DARWIN_DO_EXTRA_RPATH +# define DARWIN_EXTRA_RPATH \ +"%{!r:%{!nostdlib:%{!nodefaultrpaths:\ + %:version-compare(>= 10.5 mmacosx-version-min= -rpath) \ + %:version-compare(>= 10.5 mmacosx-version-min= " DARWIN_ADD_RPATH ") \ + }}}" +#else +# define DARWIN_EXTRA_RPATH "" +#endif + #define SUBSUBTARGET_OVERRIDE_OPTIONS \ do { \ darwin_override_options (); \ @@ -415,6 +428,7 @@ extern GTY(()) int darwin_ms_struct; DARWIN_NOPIE_SPEC \ DARWIN_RDYNAMIC \ DARWIN_NOCOMPACT_UNWIND \ + DARWIN_EXTRA_RPATH \ DARWIN_RPATH_LINK \ "}}}}}}} % conftest.$ac_ext <<_LT_EOF -#line 19979 "configure" +#line 19983 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -20082,7 +20086,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 20085 "configure" +#line 20089 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -23410,6 +23414,26 @@ else ENABLE_DARWIN_AT_RPATH_FALSE= fi +DARWIN_DO_EXTRA_RPATH=0 + +# Check whether --with-darwin-extra-rpath was given. +if test "${with_darwin_extra_rpath+set}" = set; then : + withval=$with_darwin_extra_rpath; if test x"$withval" != x; then + DARWIN_ADD_RPATH="$withval" + DARWIN_DO_EXTRA_RPATH=1 + fi +fi + + +cat >>confdefs.h <<_ACEOF +#define DARWIN_DO_EXTRA_RPATH $DARWIN_DO_EXTRA_RPATH +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define DARWIN_ADD_RPATH "$DARWIN_ADD_RPATH" +_ACEOF + # Identify the assembler which will work hand-in-glove with the newly # built GCC, so that we can examine its features. This is the assembler diff --git a/gcc/configure.ac b/gcc/configure.ac index 0ac589a64ae..10982cdfc09 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -2633,6 +2633,19 @@ AC_SUBST(objdir) AC_SUBST(enable_fast_install) AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes]) +DARWIN_DO_EXTRA_RPATH=0 +AC_ARG_WITH(darwin-extra-rpath, +[AS_HELP_STRING( + [[--with-darwin-extra-rpath=[ARG]]], + [Specify a runpath directory, additional to those provided by the compiler])], +[if test x"$withval" != x; then + DARWIN_ADD_RPATH="$withval" + DARWIN_DO_EXTRA_RPATH=1 + fi]) +AC_DEFINE_UNQUOTED(DARWIN_DO_EXTRA_RPATH, $DARWIN_DO_EXTRA_RPATH, + [Should add an extra runpath directory]) +AC_DEFINE_UNQUOTED(DARWIN_ADD_RPATH, "$DARWIN_ADD_RPATH", + [Specify a runpath directory, additional to those provided by the compiler]) # Identify the assembler which will work hand-in-glove with the newly # built GCC, so that we can examine its features. This is the assembler