This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
libgcc rpaths with --enable-version-specific-runtime-libs
- From: IainS <developer at sandoe-acoustics dot co dot uk>
- To: GCC Development <gcc at gcc dot gnu dot org>
- Cc: Mike Stump <mrs at apple dot com>
- Date: Sun, 27 Sep 2009 20:17:01 +0100
- Subject: libgcc rpaths with --enable-version-specific-runtime-libs
when libgcc multilibs are built the Makefile forces two vars to be
empty during the build phase viz:
slibdir= libsubdir= MULTIOSDIR=$(MULTIDIR)
unfortunately, "libsubdir" is used in configure.ac like this.
AC_ARG_WITH(slibdir,
[ --with-slibdir=DIR shared libraries in DIR [LIBDIR]],
slibdir="$with_slibdir",
if test "${version_specific_libs}" = yes; then
slibdir='$(libsubdir)'
elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no";
then
slibdir='$(exec_prefix)/$(host_noncanonical)/lib'
else
slibdir='$(libdir)'
fi)
AC_SUBST(slibdir)
and slibdir :
shlib_slibdir = @slibdir@
and shlib_slibdir ends up as the path for the instal_name (via
shlib_slibdir expansion in the LINK fragment).
== the upshot is that (at least on dawin) when building with "--
enable-version-specific-runtime-libs"
libgcc gets built with
/libgcc_s.1.dylib
as the embedded rpath
This then gets referenced by the other libs (e.g. libgfortran.dylib)
[ because the stub libs 10.X refer to it].
Whilst the libgcc path is corrected in the install phase; the
references in the other libraries are not.
====
libsubdir is expanded
libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version)
in Makefile.in.
If this expansion is applied in configure.ac, all works OK on darwin.
i.e.
if test "${version_specific_libs}" = yes; then
slibdir='$(libdir)/gcc/$(host_noncanonical)/$(version)'
Would that change cause a problem on any other target?
Iain