[libphobos] Fix libgphobos.spec in the wrong place with --enable-version-specific-runtime-libs

Message ID CABOHX+cBjdeCntuQfMpyffpG+OiNsHM-kGAHrKJgmVOvDvraJQ@mail.gmail.com
State New
Headers show
Series
  • [libphobos] Fix libgphobos.spec in the wrong place with --enable-version-specific-runtime-libs
Related show

Commit Message

Iain Buclaw Oct. 31, 2018, 11:56 p.m.
Hi,

This adds --enable-version-specific-runtime-libs configure option to libphbos.

Also uncovered that MULTISUBDIR wasn't being set correctly when this
option was enabled.

Built and checked with make install-target-libphobos.  Ok for trunk?

-- 
Iain

---
libphobos/ChangeLog:

2018-11-01  Iain Buclaw  <ibuclaw@gdcproject.org>

    PR d/87827
    * Makefile.in: Rebuild.
    * configure: Rebuild.
    * configure.ac: Properly set MULTISUBDIR.
    * d_rules.am: Set toolexecdir and toolexeclibdir.
    * libdruntime/Makefile.in: Rebuild.
    * m4/druntime.m4 (DRUNTIME_INSTALL_DIRECTORIES): Add
    --enable-version-specific-runtime-libs.
    * src/Makefile.in: Rebuild.
    * testsuite/Makefile.in: Rebuild.

---

Comments

Richard Biener Nov. 2, 2018, 8:08 a.m. | #1
On Thu, Nov 1, 2018 at 12:57 AM Iain Buclaw <ibuclaw@gdcproject.org> wrote:
>

> Hi,

>

> This adds --enable-version-specific-runtime-libs configure option to libphbos.

>

> Also uncovered that MULTISUBDIR wasn't being set correctly when this

> option was enabled.

>

> Built and checked with make install-target-libphobos.  Ok for trunk?


OK.

Richard.

> --

> Iain

>

> ---

> libphobos/ChangeLog:

>

> 2018-11-01  Iain Buclaw  <ibuclaw@gdcproject.org>

>

>     PR d/87827

>     * Makefile.in: Rebuild.

>     * configure: Rebuild.

>     * configure.ac: Properly set MULTISUBDIR.

>     * d_rules.am: Set toolexecdir and toolexeclibdir.

>     * libdruntime/Makefile.in: Rebuild.

>     * m4/druntime.m4 (DRUNTIME_INSTALL_DIRECTORIES): Add

>     --enable-version-specific-runtime-libs.

>     * src/Makefile.in: Rebuild.

>     * testsuite/Makefile.in: Rebuild.

>

> ---

Patch

diff --git a/libphobos/Makefile.in b/libphobos/Makefile.in
index 43712ed0bc9..2f073d64629 100644
--- a/libphobos/Makefile.in
+++ b/libphobos/Makefile.in
@@ -306,6 +306,8 @@  libdir = @libdir@
 libexecdir = @libexecdir@
 libphobos_builddir = @libphobos_builddir@
 libphobos_srcdir = @libphobos_srcdir@
+libphobos_toolexecdir = @libphobos_toolexecdir@
+libphobos_toolexeclibdir = @libphobos_toolexeclibdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
@@ -318,6 +320,7 @@  phobos_compiler_shared_flag = @phobos_compiler_shared_flag@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -327,8 +330,6 @@  target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
-toolexecdir = @toolexecdir@
-toolexeclibdir = @toolexeclibdir@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
diff --git a/libphobos/configure b/libphobos/configure
index 085e32b8e36..9b3dc92ae47 100755
--- a/libphobos/configure
+++ b/libphobos/configure
@@ -638,8 +638,8 @@  PHOBOS_SOVERSION
 DRUNTIME_SOVERSION
 SPEC_PHOBOS_DEPS
 gdc_include_dir
-toolexeclibdir
-toolexecdir
+libphobos_toolexeclibdir
+libphobos_toolexecdir
 gcc_version
 DRUNTIME_ZLIB_SYSTEM_FALSE
 DRUNTIME_ZLIB_SYSTEM_TRUE
@@ -783,6 +783,7 @@  infodir
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -823,6 +824,7 @@  with_libatomic
 with_libbacktrace
 with_target_system_zlib
 with_cross_host
+enable_version_specific_runtime_libs
 '
       ac_precious_vars='build_alias
 host_alias
@@ -867,6 +869,7 @@  datadir='${datarootdir}'
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1119,6 +1122,15 @@  do
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1256,7 +1268,7 @@  fi
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1409,6 +1421,7 @@  Fine tuning of the installation directories:
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1466,6 +1479,9 @@  Optional Features:
   --enable-thread-lib=<arg>
                           specify linker option for the system thread library
                           (default: autodetect)
+  --enable-version-specific-runtime-libs
+                          Specify that runtime libraries should be installed
+                          in a compiler-specific directory
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -11493,7 +11509,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11496 "configure"
+#line 11512 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11599,7 +11615,7 @@  else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11602 "configure"
+#line 11618 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -14806,30 +14822,44 @@  if test "${with_cross_host+set}" = set; then :
 fi
 
 
-  toolexecdir=no
-  toolexeclibdir=no
+  libphobos_toolexecdir=no
+  libphobos_toolexeclibdir=no
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-version-specific-runtime-libs" >&5
+$as_echo_n "checking for --enable-version-specific-runtime-libs... " >&6; }
+  # 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) version_specific_libs=yes ;;
+      no)  version_specific_libs=no ;;
+      *)   as_fn_error $? "Unknown argument to enable/disable version-specific libs" "$LINENO" 5;;
+     esac
+else
   version_specific_libs=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $version_specific_libs" >&5
+$as_echo "$version_specific_libs" >&6; }
 
   # Version-specific runtime libs processing.
   if test $version_specific_libs = yes; then
-      toolexecdir='${libdir}/gcc/${host_alias}'
-      toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
+    libphobos_toolexecdir='${libdir}/gcc/${host_alias}'
+    libphobos_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
   else
-      # Calculate toolexecdir, toolexeclibdir
-      # Install a library built with a cross compiler in tooldir, not libdir.
-      if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
-          toolexecdir='${exec_prefix}/${host_alias}'
-          toolexeclibdir='${toolexecdir}/lib'
-      else
-          toolexecdir='${libdir}/gcc/${host_alias}'
-          toolexeclibdir='${libdir}'
-      fi
-      multi_os_directory=`$GDC -print-multi-os-directory`
-      case $multi_os_directory in
-          .) ;; # Avoid trailing /.
-          *) toolexeclibdir=${toolexeclibdir}/${multi_os_directory} ;;
-      esac
+    # Calculate libphobos_toolexecdir, libphobos_toolexeclibdir
+    # Install a library built with a cross compiler in tooldir, not libdir.
+    if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
+      libphobos_toolexecdir='${exec_prefix}/${host_alias}'
+      libphobos_toolexeclibdir='${toolexecdir}/lib'
+    else
+      libphobos_toolexecdir='${libdir}/gcc/${host_alias}'
+      libphobos_toolexeclibdir='${libdir}'
+    fi
+    multi_os_directory=`$GDC -print-multi-os-directory`
+    case $multi_os_directory in
+      .) ;; # Avoid trailing /.
+      *) libphobos_toolexeclibdir=${libphobos_toolexeclibdir}/${multi_os_directory} ;;
+    esac
   fi
 
 
@@ -14870,7 +14900,7 @@  fi
 
 
 
-ac_config_files="$ac_config_files Makefile src/Makefile libdruntime/Makefile testsuite/Makefile"
+ac_config_files="$ac_config_files Makefile"
 
 
 ac_config_files="$ac_config_files libdruntime/gcc/config.d libdruntime/gcc/libbacktrace.d"
@@ -14880,8 +14910,15 @@  ac_config_files="$ac_config_files src/libgphobos.spec"
 ac_config_files="$ac_config_files testsuite/testsuite_flags"
 
 
-# We need multilib support, but only if configuring for the target.
-ac_config_commands="$ac_config_commands default"
+# Multilibs need MULTISUBDIR defined correctly in certain makefiles so
+# that multilib installs will end up installed in the correct place.
+# The testsuite needs it for multilib-aware ABI baseline files.
+# To work around this not being passed down from config-ml.in ->
+# srcdir/Makefile.am -> srcdir/{src,libdruntime,...}/Makefile.am, manually
+# append it here.  Only modify Makefiles that have just been created.
+#
+# Also, get rid of this simulated-VPATH thing that automake does.
+ac_config_files="$ac_config_files libdruntime/Makefile src/Makefile testsuite/Makefile"
 
 
 cat >confcache <<\_ACEOF
@@ -16010,11 +16047,6 @@  fi
 
 
 
-# Variables needed in config.status (file generation) which aren't already
-# passed by autoconf.
-SUBDIRS="$SUBDIRS"
-
-
 _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -16027,14 +16059,13 @@  do
     "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
-    "libdruntime/Makefile") CONFIG_FILES="$CONFIG_FILES libdruntime/Makefile" ;;
-    "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
     "libdruntime/gcc/config.d") CONFIG_FILES="$CONFIG_FILES libdruntime/gcc/config.d" ;;
     "libdruntime/gcc/libbacktrace.d") CONFIG_FILES="$CONFIG_FILES libdruntime/gcc/libbacktrace.d" ;;
     "src/libgphobos.spec") CONFIG_FILES="$CONFIG_FILES src/libgphobos.spec" ;;
     "testsuite/testsuite_flags") CONFIG_FILES="$CONFIG_FILES testsuite/testsuite_flags" ;;
-    "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+    "libdruntime/Makefile") CONFIG_FILES="$CONFIG_FILES libdruntime/Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "testsuite/Makefile") CONFIG_FILES="$CONFIG_FILES testsuite/Makefile" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
@@ -17421,32 +17452,38 @@  _LT_EOF
 
  ;;
     "testsuite/testsuite_flags":F) chmod +x testsuite/testsuite_flags ;;
-    "default":C) if test -n "$CONFIG_FILES"; then
-   if test -n "${with_target_subdir}"; then
-     # Multilibs need MULTISUBDIR defined correctly in certain makefiles so
-     # that multilib installs will end up installed in the correct place.
-     # The testsuite needs it for multilib-aware ABI baseline files.
-     # To work around this not being passed down from config-ml.in ->
-     # srcdir/Makefile.am -> srcdir/{src,libdruntime,...}/Makefile.am, manually
-     # append it here.  Only modify Makefiles that have just been created.
-     #
-     # Also, get rid of this simulated-VPATH thing that automake does.
-     cat > vpsed << \_EOF
-  s!`test -f '$<' || echo '$(srcdir)/'`!!
+    "libdruntime/Makefile":F) cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
 _EOF
-     for i in $SUBDIRS; do
-      case $CONFIG_FILES in
-       *${i}/Makefile*)
-	 #echo "Adding MULTISUBDIR to $i/Makefile"
-	 sed -f vpsed $i/Makefile > tmp
-	 grep '^MULTISUBDIR =' Makefile >> tmp
-	 mv tmp $i/Makefile
-	 ;;
-      esac
-     done
-     rm vpsed
-   fi
- fi
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   { ml_norecursion=; unset ml_norecursion;}
+ ;;
+    "src/Makefile":F) cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   { ml_norecursion=; unset ml_norecursion;}
+ ;;
+    "testsuite/Makefile":F) cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   { ml_norecursion=; unset ml_norecursion;}
  ;;
 
   esac
diff --git a/libphobos/configure.ac b/libphobos/configure.ac
index fbd61868336..1e931d4395f 100644
--- a/libphobos/configure.ac
+++ b/libphobos/configure.ac
@@ -168,45 +168,31 @@  AC_SUBST(GDCFLAGSX)
 AC_CHECK_HEADER(stdio.h,:,
   [AC_MSG_ERROR([cannot find stdio.h.])])
 
-AC_CONFIG_FILES(Makefile src/Makefile libdruntime/Makefile testsuite/Makefile)
+AC_CONFIG_FILES(Makefile)
 
 AC_CONFIG_FILES(libdruntime/gcc/config.d libdruntime/gcc/libbacktrace.d)
 AC_CONFIG_FILES(src/libgphobos.spec)
 AC_CONFIG_FILES([testsuite/testsuite_flags],[chmod +x testsuite/testsuite_flags])
 
-# We need multilib support, but only if configuring for the target.
-AC_CONFIG_COMMANDS([default],
-[if test -n "$CONFIG_FILES"; then
-   if test -n "${with_target_subdir}"; then
-     # Multilibs need MULTISUBDIR defined correctly in certain makefiles so
-     # that multilib installs will end up installed in the correct place.
-     # The testsuite needs it for multilib-aware ABI baseline files.
-     # To work around this not being passed down from config-ml.in ->
-     # srcdir/Makefile.am -> srcdir/{src,libdruntime,...}/Makefile.am, manually
-     # append it here.  Only modify Makefiles that have just been created.
-     #
-     # Also, get rid of this simulated-VPATH thing that automake does.
-     cat > vpsed << \_EOF
-  s!`test -f '$<' || echo '$(srcdir)/'`!!
+# Multilibs need MULTISUBDIR defined correctly in certain makefiles so
+# that multilib installs will end up installed in the correct place.
+# The testsuite needs it for multilib-aware ABI baseline files.
+# To work around this not being passed down from config-ml.in ->
+# srcdir/Makefile.am -> srcdir/{src,libdruntime,...}/Makefile.am, manually
+# append it here.  Only modify Makefiles that have just been created.
+#
+# Also, get rid of this simulated-VPATH thing that automake does.
+AC_CONFIG_FILES(AC_FOREACH([DIR], [libdruntime src testsuite], [DIR/Makefile ]),
+  [cat > vpsed$$ << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
 _EOF
-     for i in $SUBDIRS; do
-      case $CONFIG_FILES in
-       *${i}/Makefile*)
-	 #echo "Adding MULTISUBDIR to $i/Makefile"
-	 sed -f vpsed $i/Makefile > tmp
-	 grep '^MULTISUBDIR =' Makefile >> tmp
-	 mv tmp $i/Makefile
-	 ;;
-      esac
-     done
-     rm vpsed
-   fi
- fi
-],
-[
-# Variables needed in config.status (file generation) which aren't already
-# passed by autoconf.
-SUBDIRS="$SUBDIRS"
+   sed -f vpsed$$ $ac_file > tmp$$
+   mv tmp$$ $ac_file
+   rm vpsed$$
+   echo 'MULTISUBDIR =' >> $ac_file
+   ml_norecursion=yes
+   . ${multi_basedir}/config-ml.in
+   AS_UNSET([ml_norecursion])
 ])
 
 AC_OUTPUT
diff --git a/libphobos/d_rules.am b/libphobos/d_rules.am
index 958b7c1209b..6566230c301 100644
--- a/libphobos/d_rules.am
+++ b/libphobos/d_rules.am
@@ -19,6 +19,9 @@ 
 # automake forgets to set this
 CCLD = $(CC)
 
+toolexecdir = $(libphobos_toolexecdir)
+toolexeclibdir = $(libphobos_toolexeclibdir)
+
 # Compile D into normal object files
 .d.o:
 	$(GDC) $(GDCFLAGS) $(MULTIFLAGS) $(D_EXTRA_DFLAGS) -c -o $@ $<
diff --git a/libphobos/libdruntime/Makefile.in b/libphobos/libdruntime/Makefile.in
index d81f92827b6..eaa7664c8f1 100644
--- a/libphobos/libdruntime/Makefile.in
+++ b/libphobos/libdruntime/Makefile.in
@@ -643,6 +643,8 @@  libdir = @libdir@
 libexecdir = @libexecdir@
 libphobos_builddir = @libphobos_builddir@
 libphobos_srcdir = @libphobos_srcdir@
+libphobos_toolexecdir = @libphobos_toolexecdir@
+libphobos_toolexeclibdir = @libphobos_toolexeclibdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
@@ -655,6 +657,7 @@  phobos_compiler_shared_flag = @phobos_compiler_shared_flag@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -664,8 +667,6 @@  target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
-toolexecdir = @toolexecdir@
-toolexeclibdir = @toolexeclibdir@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
@@ -673,6 +674,8 @@  top_srcdir = @top_srcdir@
 # If there are no sources with known extension (i.e. only D sources)
 # automake forgets to set this
 CCLD = $(CC)
+toolexecdir = $(libphobos_toolexecdir)
+toolexeclibdir = $(libphobos_toolexeclibdir)
 LTDCOMPILE = $(LIBTOOL) --tag=D $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(GDC) $(AM_DFLAGS)
 
diff --git a/libphobos/m4/druntime.m4 b/libphobos/m4/druntime.m4
index ee9b8ed7a05..978c5fe92d2 100644
--- a/libphobos/m4/druntime.m4
+++ b/libphobos/m4/druntime.m4
@@ -50,8 +50,8 @@  AC_DEFUN([DRUNTIME_MULTILIB],
 # DRUNTIME_INSTALL_DIRECTORIES
 # ----------------------------
 # Setup various install directories for headers.
-# Add the cross-host option and substitute the toolexecdir
-# toolexeclibdir and gdc_include_dir variables.
+# Add the cross-host option and substitute the libphobos_toolexecdir
+# libphobos_toolexeclibdir and gdc_include_dir variables.
 AC_DEFUN([DRUNTIME_INSTALL_DIRECTORIES],
 [
   AC_REQUIRE([AC_PROG_GDC])
@@ -65,33 +65,43 @@  AC_DEFUN([DRUNTIME_INSTALL_DIRECTORIES],
     AC_HELP_STRING([--with-cross-host=HOST],
                    [configuring with a cross compiler]))
 
-  toolexecdir=no
-  toolexeclibdir=no
-
-  version_specific_libs=no
+  libphobos_toolexecdir=no
+  libphobos_toolexeclibdir=no
+
+  AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
+  AC_ARG_ENABLE([version-specific-runtime-libs],
+    AC_HELP_STRING([--enable-version-specific-runtime-libs],
+		   [Specify that runtime libraries should be installed in a compiler-specific directory]),
+    [case "$enableval" in
+      yes) version_specific_libs=yes ;;
+      no)  version_specific_libs=no ;;
+      *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
+     esac],
+    [version_specific_libs=no])
+  AC_MSG_RESULT($version_specific_libs)
 
   # Version-specific runtime libs processing.
   if test $version_specific_libs = yes; then
-      toolexecdir='${libdir}/gcc/${host_alias}'
-      toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
+    libphobos_toolexecdir='${libdir}/gcc/${host_alias}'
+    libphobos_toolexeclibdir='${toolexecdir}/${gcc_version}$(MULTISUBDIR)'
   else
-      # Calculate toolexecdir, toolexeclibdir
-      # Install a library built with a cross compiler in tooldir, not libdir.
-      if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
-          toolexecdir='${exec_prefix}/${host_alias}'
-          toolexeclibdir='${toolexecdir}/lib'
-      else
-          toolexecdir='${libdir}/gcc/${host_alias}'
-          toolexeclibdir='${libdir}'
-      fi
-      multi_os_directory=`$GDC -print-multi-os-directory`
-      case $multi_os_directory in
-          .) ;; # Avoid trailing /.
-          *) toolexeclibdir=${toolexeclibdir}/${multi_os_directory} ;;
-      esac
+    # Calculate libphobos_toolexecdir, libphobos_toolexeclibdir
+    # Install a library built with a cross compiler in tooldir, not libdir.
+    if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
+      libphobos_toolexecdir='${exec_prefix}/${host_alias}'
+      libphobos_toolexeclibdir='${toolexecdir}/lib'
+    else
+      libphobos_toolexecdir='${libdir}/gcc/${host_alias}'
+      libphobos_toolexeclibdir='${libdir}'
+    fi
+    multi_os_directory=`$GDC -print-multi-os-directory`
+    case $multi_os_directory in
+      .) ;; # Avoid trailing /.
+      *) libphobos_toolexeclibdir=${libphobos_toolexeclibdir}/${multi_os_directory} ;;
+    esac
   fi
-  AC_SUBST(toolexecdir)
-  AC_SUBST(toolexeclibdir)
+  AC_SUBST(libphobos_toolexecdir)
+  AC_SUBST(libphobos_toolexeclibdir)
 
   # Default case for install directory for D sources files.
   gdc_include_dir='$(libdir)/gcc/${target_alias}/${gcc_version}/include/d'
diff --git a/libphobos/src/Makefile.in b/libphobos/src/Makefile.in
index 23ba19a1123..1e2003436eb 100644
--- a/libphobos/src/Makefile.in
+++ b/libphobos/src/Makefile.in
@@ -603,6 +603,8 @@  libdir = @libdir@
 libexecdir = @libexecdir@
 libphobos_builddir = @libphobos_builddir@
 libphobos_srcdir = @libphobos_srcdir@
+libphobos_toolexecdir = @libphobos_toolexecdir@
+libphobos_toolexeclibdir = @libphobos_toolexeclibdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
@@ -615,6 +617,7 @@  phobos_compiler_shared_flag = @phobos_compiler_shared_flag@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -624,8 +627,6 @@  target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
-toolexecdir = @toolexecdir@
-toolexeclibdir = @toolexeclibdir@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
@@ -633,6 +634,8 @@  top_srcdir = @top_srcdir@
 # If there are no sources with known extension (i.e. only D sources)
 # automake forgets to set this
 CCLD = $(CC)
+toolexecdir = $(libphobos_toolexecdir)
+toolexeclibdir = $(libphobos_toolexeclibdir)
 LTDCOMPILE = $(LIBTOOL) --tag=D $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=compile $(GDC) $(AM_DFLAGS)
 
diff --git a/libphobos/testsuite/Makefile.in b/libphobos/testsuite/Makefile.in
index f22f1f2481e..e3fd03b848a 100644
--- a/libphobos/testsuite/Makefile.in
+++ b/libphobos/testsuite/Makefile.in
@@ -252,6 +252,8 @@  libdir = @libdir@
 libexecdir = @libexecdir@
 libphobos_builddir = @libphobos_builddir@
 libphobos_srcdir = @libphobos_srcdir@
+libphobos_toolexecdir = @libphobos_toolexecdir@
+libphobos_toolexeclibdir = @libphobos_toolexeclibdir@
 localedir = @localedir@
 localstatedir = @localstatedir@
 mandir = @mandir@
@@ -264,6 +266,7 @@  phobos_compiler_shared_flag = @phobos_compiler_shared_flag@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
@@ -273,8 +276,6 @@  target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
-toolexecdir = @toolexecdir@
-toolexeclibdir = @toolexeclibdir@
 top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@