Skip to content
Snippets Groups Projects
  • Iain Sandoe's avatar
    6a6d3817
    Config,Darwin: Allow for configuring Darwin to use embedded runpath. · 6a6d3817
    Iain Sandoe authored
    Recent Darwin versions place contraints on the use of run paths
    specified in environment variables.  This breaks some assumptions
    in the GCC build.
    
    This change allows the user to configure a Darwin build to use
    '@rpath/libraryname.dylib' in library names and then to add an
    embedded runpath to executables (and libraries with dependents).
    
    The embedded runpath is added by default unless the user adds
    '-nodefaultrpaths' to the link line.
    
    For an installed compiler, it means that any executable built with
    that compiler will reference the runtimes installed with the
    compiler (equivalent to hard-coding the library path into the name
    of the library).
    
    During build-time configurations  any "-B" entries will be added to
    the runpath thus the newly-built libraries will be found by exes.
    
    Since the install name is set in libtool, that decision needs to be
    available here (but might also cause dependent ones in Makefiles,
    so we need to export a conditional).
    
    This facility is not available for Darwin 8 or earlier, however the
    existing environment variable runpath does work there.
    
    We default this on for systems where the external DYLD_LIBRARY_PATH
    does not work and off for Darwin 8 or earlier.  For systems that can
    use either method, if the value is unset, we use the default (which
    is currently DYLD_LIBRARY_PATH).
    
    ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Do not add default runpaths to GCC exes
    	when we are building -static-libstdc++/-static-libgcc (the
    	default).
    	* libtool.m4: Add 'enable-darwin-at-runpath'.  Act  on the
    	enable flag to alter Darwin libraries to use @rpath names.
    
    gcc/ChangeLog:
    
    	* aclocal.m4: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    	* config/darwin.h: Handle Darwin rpaths.
    	* config/darwin.opt: Handle Darwin rpaths.
    	* Makefile.in:  Handle Darwin rpaths.
    
    gcc/ada/ChangeLog:
    
    	* gcc-interface/Makefile.in: Handle Darwin rpaths.
    
    gcc/jit/ChangeLog:
    	* Make-lang.in: Handle Darwin rpaths.
    
    libatomic/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libbacktrace/ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libcc1/ChangeLog:
    
    	* configure: Regenerate.
    
    libffi/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    
    libgcc/ChangeLog:
    
    	* config/t-slibgcc-darwin: Generate libgcc_s
    	with an @rpath name.
    	* config.host: Handle Darwin rpaths.
    
    libgfortran/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths
    
    libgm2/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* aclocal.m4: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    	* libm2cor/Makefile.am: Handle Darwin rpaths.
    	* libm2cor/Makefile.in: Regenerate.
    	* libm2iso/Makefile.am: Handle Darwin rpaths.
    	* libm2iso/Makefile.in: Regenerate.
    	* libm2log/Makefile.am: Handle Darwin rpaths.
    	* libm2log/Makefile.in: Regenerate.
    	* libm2min/Makefile.am: Handle Darwin rpaths.
    	* libm2min/Makefile.in: Regenerate.
    	* libm2pim/Makefile.am: Handle Darwin rpaths.
    	* libm2pim/Makefile.in: Regenerate.
    
    libgomp/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths
    
    libitm/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libobjc/ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libphobos/ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    	* libdruntime/Makefile.am: Handle Darwin rpaths.
    	* libdruntime/Makefile.in: Regenerate.
    	* src/Makefile.am: Handle Darwin rpaths.
    	* src/Makefile.in: Regenerate.
    
    libquadmath/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libsanitizer/ChangeLog:
    
    	* asan/Makefile.am: Handle Darwin rpaths.
    	* asan/Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* hwasan/Makefile.am: Handle Darwin rpaths.
    	* hwasan/Makefile.in: Regenerate.
    	* lsan/Makefile.am: Handle Darwin rpaths.
    	* lsan/Makefile.in: Regenerate.
    	* tsan/Makefile.am: Handle Darwin rpaths.
    	* tsan/Makefile.in: Regenerate.
    	* ubsan/Makefile.am: Handle Darwin rpaths.
    	* ubsan/Makefile.in: Regenerate.
    
    libssp/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libstdc++-v3/ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    	* src/Makefile.am: Handle Darwin rpaths.
    	* src/Makefile.in: Regenerate.
    
    libvtv/ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    lto-plugin/ChangeLog:
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    zlib/ChangeLog:
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    6a6d3817
    History
    Config,Darwin: Allow for configuring Darwin to use embedded runpath.
    Iain Sandoe authored
    Recent Darwin versions place contraints on the use of run paths
    specified in environment variables.  This breaks some assumptions
    in the GCC build.
    
    This change allows the user to configure a Darwin build to use
    '@rpath/libraryname.dylib' in library names and then to add an
    embedded runpath to executables (and libraries with dependents).
    
    The embedded runpath is added by default unless the user adds
    '-nodefaultrpaths' to the link line.
    
    For an installed compiler, it means that any executable built with
    that compiler will reference the runtimes installed with the
    compiler (equivalent to hard-coding the library path into the name
    of the library).
    
    During build-time configurations  any "-B" entries will be added to
    the runpath thus the newly-built libraries will be found by exes.
    
    Since the install name is set in libtool, that decision needs to be
    available here (but might also cause dependent ones in Makefiles,
    so we need to export a conditional).
    
    This facility is not available for Darwin 8 or earlier, however the
    existing environment variable runpath does work there.
    
    We default this on for systems where the external DYLD_LIBRARY_PATH
    does not work and off for Darwin 8 or earlier.  For systems that can
    use either method, if the value is unset, we use the default (which
    is currently DYLD_LIBRARY_PATH).
    
    ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Do not add default runpaths to GCC exes
    	when we are building -static-libstdc++/-static-libgcc (the
    	default).
    	* libtool.m4: Add 'enable-darwin-at-runpath'.  Act  on the
    	enable flag to alter Darwin libraries to use @rpath names.
    
    gcc/ChangeLog:
    
    	* aclocal.m4: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    	* config/darwin.h: Handle Darwin rpaths.
    	* config/darwin.opt: Handle Darwin rpaths.
    	* Makefile.in:  Handle Darwin rpaths.
    
    gcc/ada/ChangeLog:
    
    	* gcc-interface/Makefile.in: Handle Darwin rpaths.
    
    gcc/jit/ChangeLog:
    	* Make-lang.in: Handle Darwin rpaths.
    
    libatomic/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libbacktrace/ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libcc1/ChangeLog:
    
    	* configure: Regenerate.
    
    libffi/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    
    libgcc/ChangeLog:
    
    	* config/t-slibgcc-darwin: Generate libgcc_s
    	with an @rpath name.
    	* config.host: Handle Darwin rpaths.
    
    libgfortran/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths
    
    libgm2/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* aclocal.m4: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    	* libm2cor/Makefile.am: Handle Darwin rpaths.
    	* libm2cor/Makefile.in: Regenerate.
    	* libm2iso/Makefile.am: Handle Darwin rpaths.
    	* libm2iso/Makefile.in: Regenerate.
    	* libm2log/Makefile.am: Handle Darwin rpaths.
    	* libm2log/Makefile.in: Regenerate.
    	* libm2min/Makefile.am: Handle Darwin rpaths.
    	* libm2min/Makefile.in: Regenerate.
    	* libm2pim/Makefile.am: Handle Darwin rpaths.
    	* libm2pim/Makefile.in: Regenerate.
    
    libgomp/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths
    
    libitm/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libobjc/ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libphobos/ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    	* libdruntime/Makefile.am: Handle Darwin rpaths.
    	* libdruntime/Makefile.in: Regenerate.
    	* src/Makefile.am: Handle Darwin rpaths.
    	* src/Makefile.in: Regenerate.
    
    libquadmath/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libsanitizer/ChangeLog:
    
    	* asan/Makefile.am: Handle Darwin rpaths.
    	* asan/Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* hwasan/Makefile.am: Handle Darwin rpaths.
    	* hwasan/Makefile.in: Regenerate.
    	* lsan/Makefile.am: Handle Darwin rpaths.
    	* lsan/Makefile.in: Regenerate.
    	* tsan/Makefile.am: Handle Darwin rpaths.
    	* tsan/Makefile.in: Regenerate.
    	* ubsan/Makefile.am: Handle Darwin rpaths.
    	* ubsan/Makefile.in: Regenerate.
    
    libssp/ChangeLog:
    
    	* Makefile.am: Handle Darwin rpaths.
    	* Makefile.in: Regenerate.
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    libstdc++-v3/ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    	* src/Makefile.am: Handle Darwin rpaths.
    	* src/Makefile.in: Regenerate.
    
    libvtv/ChangeLog:
    
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    lto-plugin/ChangeLog:
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.
    
    zlib/ChangeLog:
    	* configure: Regenerate.
    	* configure.ac: Handle Darwin rpaths.