From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1698) id D1AC3385842C; Sun, 22 Oct 2023 18:30:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D1AC3385842C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1697999443; bh=+yWJfzrShqX8HsrTrMiIB9axbYwx+ryd+vhA+49vpPo=; h=From:To:Subject:Date:From; b=Hmqj7FYfI0luuFmDm363D/Uz/bwRiKjm/8H2y7FYrWO+NIJpJP+BwG1F77FeZd9Iq ujpv2E6hRkdVyvBqwRuH8eXzMtRVrWfrF40jcgtwgWiDFSsfjvq257h/d03riYMBM7 7FtB9FSqfiRP7cEtiL38FOOFyDyxInIcVxsDN60I= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Iain D Sandoe To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-4826] Darwin, rpaths: Add --with-darwin-extra-rpath. X-Act-Checkin: gcc X-Git-Author: Iain Sandoe X-Git-Refname: refs/heads/master X-Git-Oldrev: 6a6d3817afa02bbcd2388c8e005da6faf88932f1 X-Git-Newrev: 8fe73ef2785837dbebee7c56d5f30211571b2773 Message-Id: <20231022183043.D1AC3385842C@sourceware.org> Date: Sun, 22 Oct 2023 18:30:43 +0000 (GMT) List-Id: https://gcc.gnu.org/g:8fe73ef2785837dbebee7c56d5f30211571b2773 commit r14-4826-g8fe73ef2785837dbebee7c56d5f30211571b2773 Author: Iain Sandoe Date: Sat May 28 10:16:27 2022 +0100 Darwin, rpaths: Add --with-darwin-extra-rpath. This is provided to allow distributions to add a single additional runpath to allow for cases where the installed GCC library directories are then symlinked to a common dirctory outside of any of the GCC installations. For example: /opt/distro/lib: libgfortran.dylib -> /opt/distro/lib/gcc-11.3/lib/libgfortran.dylib So that libraries which are designed to be found in the runpath we would then add --with-darwin-add-rpath=/opt/distro/lib to the configure line. This patch makes the configuration a little more forgiving of using --disable-darwin-at-rpath (although for platform versions >= 10.11 this will result in misconfigured target libraries). gcc/ChangeLog: * configure.ac: Add --with-darwin-extra-rpath option. * config/darwin.h: Handle DARWIN_EXTRA_RPATH. * config.in: Regenerate. * configure: Regenerate. Diff: --- gcc/config.in | 13 +++++++++++++ gcc/config/darwin.h | 14 ++++++++++++++ gcc/configure | 28 ++++++++++++++++++++++++++-- gcc/configure.ac | 13 +++++++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/gcc/config.in b/gcc/config.in index 98ddddf88a0f..03faee1c6ac1 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 ae7d5c65d15a..b43c8ce97a8c 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 0ac589a64ae9..10982cdfc099 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