Respect the `--enable-version-specific-runtime-libs' configuration 
option in libada/, so that shared gnatlib libraries will be installed 
in non-version-specific $(toolexeclibdir) if requested.  In a 
cross-compilation environment this helps setting up a consistent 
sysroot, which can then be shared between the host and the target 
system.

Update the settings of $(toolexecdir) and $(toolexeclibdir), unused till 
now, to keep the current arrangement in the version-specific case and 
make the new option to be enabled by default, unlike with the other 
target libraries, so as to keep existing people's build infrastructure 
unaffected.

Of course if someone does use `--disable-version-specific-runtime-libs' 
already, then the installation location of shared gnatlib libraries will 
change, but presumably this is what they do want anyway as the current 
situation where the option is ignored in libada/ only is an anomaly 
really rather than one that is expected or desired.

        gcc/ada/
        * gcc-interface/Makefile.in (ADA_RTL_DSO_DIR): New variable.
        (install-gnatlib): Use it in place of ADA_RTL_OBJ_DIR for shared 
        library installation.

        libada/
        * Makefile.in (toolexecdir, toolexeclibdir): New variables.
        (LIBADA_FLAGS_TO_PASS): Add `toolexeclibdir'.
        * configure.ac: Add `--enable-version-specific-runtime-libs'.
        Update version-specific `toolexecdir' and `toolexeclibdir' from 
        ADA_RTL_OBJ_DIR from gcc/ada/gcc-interface/Makefile.in.
        * configure: Regenerate.
---
 gcc/ada/gcc-interface/Makefile.in |    7 ++++---
 libada/Makefile.in                |    3 +++
 libada/configure                  |   25 ++++++++++++++++++++++---
 libada/configure.ac               |   20 +++++++++++++++++---
 4 files changed, 46 insertions(+), 9 deletions(-)

gcc-install-sysroot-gnatlib.diff
Index: gcc/gcc/ada/gcc-interface/Makefile.in
===================================================================
--- gcc.orig/gcc/ada/gcc-interface/Makefile.in
+++ gcc/gcc/ada/gcc-interface/Makefile.in
@@ -534,15 +534,15 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD
        for file in gnat gnarl; do \
           if [ -f $(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) ]; 
then \
              $(INSTALL) 
$(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
-                        $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
+                        $(DESTDIR)$(ADA_RTL_DSO_DIR); \
           fi; \
           if [ -f $(RTSDIR)/lib$${file}$(soext) ]; then \
              $(LN_S) lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext) \
-             $(DESTDIR)$(ADA_RTL_OBJ_DIR)/lib$${file}$(soext); \
+             $(DESTDIR)$(ADA_RTL_DSO_DIR)/lib$${file}$(soext); \
           fi; \
           if [ -d 
$(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM ]; then \
              $(CP) -r 
$(RTSDIR)/lib$${file}$(hyphen)$(LIBRARY_VERSION)$(soext).dSYM \
-               $(DESTDIR)$(ADA_RTL_OBJ_DIR); \
+               $(DESTDIR)$(ADA_RTL_DSO_DIR); \
           fi; \
        done
 # This copy must be done preserving the date on the original file.
@@ -882,6 +882,7 @@ b_gnatm.o : b_gnatm.adb
 
 ADA_INCLUDE_DIR = $(libsubdir)/adainclude
 ADA_RTL_OBJ_DIR = $(libsubdir)/adalib
+ADA_RTL_DSO_DIR = $(toolexeclibdir)
 
 # Special flags
 
Index: gcc/libada/Makefile.in
===================================================================
--- gcc.orig/libada/Makefile.in
+++ gcc/libada/Makefile.in
@@ -38,6 +38,8 @@ target = @target@
 prefix = @prefix@
 
 # Nonstandard autoconf-set variables.
+toolexecdir = @toolexecdir@
+toolexeclibdir = @toolexeclibdir@
 enable_shared = @enable_shared@
 
 LN_S=@LN_S@
@@ -88,6 +90,7 @@ LIBADA_FLAGS_TO_PASS = \
         "TRACE=$(TRACE)" \
         "MULTISUBDIR=$(MULTISUBDIR)" \
         "libsubdir=$(libsubdir)" \
+        "toolexeclibdir=$(toolexeclibdir)" \
         "objext=$(objext)" \
         "prefix=$(prefix)" \
         "exeext=.exeext.should.not.be.used " \
Index: gcc/libada/configure
===================================================================
--- gcc.orig/libada/configure
+++ gcc/libada/configure
@@ -702,6 +702,7 @@ ac_subst_files=''
 ac_user_opts='
 enable_option_checking
 with_build_libsubdir
+enable_version_specific_runtime_libs
 enable_maintainer_mode
 enable_multilib
 enable_shared
@@ -1325,6 +1326,9 @@ if test -n "$ac_init_help"; then
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --enable-version-specific-runtime-libs
+                          specify that runtime libraries should be installed
+                          in a compiler-specific directory
   --enable-maintainer-mode
                           enable make rules and dependencies not useful (and
                           sometimes confusing) to the casual installer
@@ -2215,6 +2219,22 @@ target_subdir=${target_noncanonical}
 
 
 # Command-line options.
+
+# Check whether --enable-version-specific-runtime-libs was given.
+if test "${enable_version_specific_runtime_libs+set}" = set; then :
+  enableval=$enable_version_specific_runtime_libs; case "$enableval" in
+     yes|no)
+       ;;
+     *)
+       as_fn_error $? "--enable-version-specific-runtime-libs must be yes or 
no" "$LINENO" 5
+       ;;
+   esac
+else
+  enable_version_specific_runtime_libs=yes
+
+fi
+
+
 # Very limited version of AC_MAINTAINER_MODE.
 # Check whether --enable-maintainer-mode was given.
 if test "${enable_maintainer_mode+set}" = set; then :
@@ -2273,8 +2293,8 @@ case ${enable_version_specific_runtime_l
     # Need the gcc compiler version to know where to install libraries
     # and header files if --enable-version-specific-runtime-libs option
     # is selected.
-    toolexecdir='$(libdir)/gcc/$(target_alias)'
-    toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+    toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
+    toolexeclibdir='$(toolexecdir)/$(version)$(MULTISUBDIR)/adalib'
     ;;
   no)
     if test -n "$with_cross_host" &&
@@ -2295,7 +2315,6 @@ case ${enable_version_specific_runtime_l
 esac
 
 
-#TODO: toolexeclibdir is currently disregarded
 
 # Check the compiler.
 # The same as in boehm-gc and libstdc++. Have to borrow it from there.
Index: gcc/libada/configure.ac
===================================================================
--- gcc.orig/libada/configure.ac
+++ gcc/libada/configure.ac
@@ -38,6 +38,21 @@ ACX_NONCANONICAL_TARGET
 GCC_TOPLEV_SUBDIRS
 
 # Command-line options.
+
+AC_ARG_ENABLE(version-specific-runtime-libs,
+  [AS_HELP_STRING([--enable-version-specific-runtime-libs],
+                 [specify that runtime libraries should be
+                  installed in a compiler-specific directory])],
+  [case "$enableval" in
+     yes|no)
+       ;;
+     *)
+       AC_MSG_ERROR([--enable-version-specific-runtime-libs must be yes or no])
+       ;;
+   esac],
+  [enable_version_specific_runtime_libs=yes]
+)
+
 # Very limited version of AC_MAINTAINER_MODE.
 AC_ARG_ENABLE([maintainer-mode],
   [AC_HELP_STRING([--enable-maintainer-mode],
@@ -60,8 +75,8 @@ case ${enable_version_specific_runtime_l
     # Need the gcc compiler version to know where to install libraries
     # and header files if --enable-version-specific-runtime-libs option
     # is selected.
-    toolexecdir='$(libdir)/gcc/$(target_alias)'
-    toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
+    toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
+    toolexeclibdir='$(toolexecdir)/$(version)$(MULTISUBDIR)/adalib'
     ;;
   no)
     if test -n "$with_cross_host" &&
@@ -82,7 +97,6 @@ case ${enable_version_specific_runtime_l
 esac
 AC_SUBST(toolexecdir)
 AC_SUBST(toolexeclibdir)
-#TODO: toolexeclibdir is currently disregarded
 
 # Check the compiler.
 # The same as in boehm-gc and libstdc++. Have to borrow it from there.

Reply via email to