Refactor handling of /lib64 etc. cases, move out of sysdeps/gnu/configure.ac.
authorJoseph Myers <joseph@codesourcery.com>
Thu, 17 Jul 2014 14:35:48 +0000 (14:35 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Thu, 17 Jul 2014 14:35:48 +0000 (14:35 +0000)
This patch continues removing architecture-specific cases from
non-architecture-specific files by moving the logic to use directories
such as /lib64 out of sysdeps/gnu/configure.ac.

A new macro LIBC_SLIBDIR_RTLDDIR is created that sysdeps configure
scripts can use to declare the library directories to be used; the
logic was previously duplicated in configure fragments for aarch64,
mips and x32 as well as in sysdeps/gnu/configure.ac.  This macro is
used directly in sysdeps/gnu/configure.ac only to provide the /lib
default (the logic saying that with --prefix=/usr shared libraries go
in /lib not /usr/lib); the architecture cases formerly there are moved
into various new or existing configure.ac files.  The new macro is
also used in the various architecture fragments that already had such
logic.  In the x32 there was previously a configure fragment, but it
was a directly written one without a .ac file; now a .ac file is used
there instead to generate configure.

Tested x86_64 that the installed shared libraries, and the directory
structure of the installation, are unchanged by this patch.

There is an old bug report - bug 6441 - about library directories
changing after reconfiguring.  If this is still applicable - and I
haven't attempted to confirm it or review the old patch pointed to in
that bug - then this patch should reduce the number of places needing
changing in any fix.

* aclocal.m4 (LIBC_SLIBDIR_RTLDDIR): New macro.
* sysdeps/gnu/configure.ac: Use LIBC_SLIBDIR_RTLDDIR.  Remove
cases for individual architectures.
* sysdeps/gnu/configure: Regenerated.
* sysdeps/unix/sysv/linux/aarch64/configure.ac: Use
LIBC_SLIBDIR_RTLDDIR.
* sysdeps/unix/sysv/linux/aarch64/configure: Regenerated.
* sysdeps/unix/sysv/linux/mips/configure.ac: Use
LIBC_SLIBDIR_RTLDDIR.
* sysdeps/unix/sysv/linux/mips/configure: Regenerated.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac: Use
LIBC_SLIBDIR_RTLDDIR.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/configure:
Regenerated.
* sysdeps/unix/sysv/linux/s390/s390-64/configure.ac: New file.
* sysdeps/unix/sysv/linux/s390/s390-64/configure: New generated
file.
* sysdeps/unix/sysv/linux/sparc/sparc64/configure.ac: New file.
* sysdeps/unix/sysv/linux/sparc/sparc64/configure: New generated
file.
* sysdeps/unix/sysv/linux/x86_64/64/configure.ac: New file.
* sysdeps/unix/sysv/linux/x86_64/64/configure: New generated file.
* sysdeps/unix/sysv/linux/x86_64/x32/configure.ac: New file.
* sysdeps/unix/sysv/linux/x86_64/x32/configure: Generate.

18 files changed:
ChangeLog
aclocal.m4
sysdeps/gnu/configure
sysdeps/gnu/configure.ac
sysdeps/unix/sysv/linux/aarch64/configure
sysdeps/unix/sysv/linux/aarch64/configure.ac
sysdeps/unix/sysv/linux/mips/configure
sysdeps/unix/sysv/linux/mips/configure.ac
sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac
sysdeps/unix/sysv/linux/s390/s390-64/configure [new file with mode: 0644]
sysdeps/unix/sysv/linux/s390/s390-64/configure.ac [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/sparc64/configure [new file with mode: 0644]
sysdeps/unix/sysv/linux/sparc/sparc64/configure.ac [new file with mode: 0644]
sysdeps/unix/sysv/linux/x86_64/64/configure [new file with mode: 0644]
sysdeps/unix/sysv/linux/x86_64/64/configure.ac [new file with mode: 0644]
sysdeps/unix/sysv/linux/x86_64/x32/configure
sysdeps/unix/sysv/linux/x86_64/x32/configure.ac [new file with mode: 0644]

index d2bc308..f82353c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,30 @@
 2014-07-17  Joseph Myers  <joseph@codesourcery.com>
 
+       * aclocal.m4 (LIBC_SLIBDIR_RTLDDIR): New macro.
+       * sysdeps/gnu/configure.ac: Use LIBC_SLIBDIR_RTLDDIR.  Remove
+       cases for individual architectures.
+       * sysdeps/gnu/configure: Regenerated.
+       * sysdeps/unix/sysv/linux/aarch64/configure.ac: Use
+       LIBC_SLIBDIR_RTLDDIR.
+       * sysdeps/unix/sysv/linux/aarch64/configure: Regenerated.
+       * sysdeps/unix/sysv/linux/mips/configure.ac: Use
+       LIBC_SLIBDIR_RTLDDIR.
+       * sysdeps/unix/sysv/linux/mips/configure: Regenerated.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac: Use
+       LIBC_SLIBDIR_RTLDDIR.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/configure:
+       Regenerated.
+       * sysdeps/unix/sysv/linux/s390/s390-64/configure.ac: New file.
+       * sysdeps/unix/sysv/linux/s390/s390-64/configure: New generated
+       file.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/configure.ac: New file.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/configure: New generated
+       file.
+       * sysdeps/unix/sysv/linux/x86_64/64/configure.ac: New file.
+       * sysdeps/unix/sysv/linux/x86_64/64/configure: New generated file.
+       * sysdeps/unix/sysv/linux/x86_64/x32/configure.ac: New file.
+       * sysdeps/unix/sysv/linux/x86_64/x32/configure: Generate.
+
        * sysdeps/aarch64/shlib-versions: Move to ...
        * sysdeps/unix/sysv/linux/aarch64/shlib-versions: ... here.
        * sysdeps/alpha/shlib-versions: Move to ...
index bc48586..98b9987 100644 (file)
@@ -281,3 +281,21 @@ else
   $5
 fi
 AC_MSG_RESULT($libc_compiler_builtin_inlined)])
+
+dnl Default to slibdir named SLIBDIR instead of "lib", and rtlddir
+dnl named RTLDDIR instead of "lib".  This is used to put 64-bit
+dnl libraries in /lib64.
+dnl LIBC_SLIBDIR_RTLDDIR([slibdir], [rtlddir])
+AC_DEFUN([LIBC_SLIBDIR_RTLDDIR],
+[test -n "$libc_cv_slibdir" ||
+case "$prefix" in
+/usr | /usr/)
+  libc_cv_slibdir=/$1
+  libc_cv_rtlddir=/$2
+  if test "$libdir" = '${exec_prefix}/lib'; then
+    libdir='${exec_prefix}/$1';
+    # Locale data can be shared between 32-bit and 64-bit libraries.
+    libc_cv_localedir='${exec_prefix}/lib/locale'
+  fi
+  ;;
+esac])
index e7f0e43..9239297 100644 (file)
@@ -6,30 +6,20 @@
 # files.  I.e., when the installation prefix is "/usr" we have to place
 # shared library objects and the configuration files on the root partition
 # in /lib and /etc.
+test -n "$libc_cv_slibdir" ||
+case "$prefix" in
+/usr | /usr/)
+  libc_cv_slibdir=/lib
+  libc_cv_rtlddir=/lib
+  if test "$libdir" = '${exec_prefix}/lib'; then
+    libdir='${exec_prefix}/lib';
+    # Locale data can be shared between 32-bit and 64-bit libraries.
+    libc_cv_localedir='${exec_prefix}/lib/locale'
+  fi
+  ;;
+esac
 case "$prefix" in
 /usr | /usr/)
-  # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib.
-  # Allow earlier configure scripts to handle libc_cv_slibdir,
-  # libc_cv_rtlddir, libdir, and libc_cv_localedir.
-  test -n "$libc_cv_slibdir" || \
-  case $machine in
-  sparc/sparc64 | x86_64* | powerpc/powerpc64 | s390/s390-64)
-    libc_cv_slibdir=/lib64
-    case $machine in
-    s390/s390-64)
-      libc_cv_rtlddir=/lib
-      ;;
-    esac
-    if test "$libdir" = '${exec_prefix}/lib'; then
-      libdir='${exec_prefix}/lib64';
-      # Locale data can be shared between 32bit and 64bit libraries
-      libc_cv_localedir='${exec_prefix}/lib/locale'
-    fi
-    ;;
-  *)
-    libc_cv_slibdir=/lib
-    ;;
-  esac
   # Allow the user to override the path with --sysconfdir.
   if test "$sysconfdir" = '${prefix}/etc'; then
     libc_cv_sysconfdir=/etc
index ce251df..634fe4d 100644 (file)
@@ -6,30 +6,9 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # files.  I.e., when the installation prefix is "/usr" we have to place
 # shared library objects and the configuration files on the root partition
 # in /lib and /etc.
+LIBC_SLIBDIR_RTLDDIR([lib], [lib])
 case "$prefix" in
 /usr | /usr/)
-  # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib.
-  # Allow earlier configure scripts to handle libc_cv_slibdir,
-  # libc_cv_rtlddir, libdir, and libc_cv_localedir.
-  test -n "$libc_cv_slibdir" || \
-  case $machine in
-  sparc/sparc64 | x86_64* | powerpc/powerpc64 | s390/s390-64)
-    libc_cv_slibdir=/lib64
-    case $machine in
-    s390/s390-64)
-      libc_cv_rtlddir=/lib
-      ;;
-    esac
-    if test "$libdir" = '${exec_prefix}/lib'; then
-      libdir='${exec_prefix}/lib64';
-      # Locale data can be shared between 32bit and 64bit libraries
-      libc_cv_localedir='${exec_prefix}/lib/locale'
-    fi
-    ;;
-  *)
-    libc_cv_slibdir=/lib
-    ;;
-  esac
   # Allow the user to override the path with --sysconfdir.
   if test "$sysconfdir" = '${prefix}/etc'; then
     libc_cv_sysconfdir=/etc
index 20593c7..60230a2 100644 (file)
@@ -5,13 +5,13 @@ arch_minimum_kernel=3.7.0
 
 test -n "$libc_cv_slibdir" ||
 case "$prefix" in
-  /usr | /usr/)
-    libc_cv_slibdir="/lib64"
-    libc_cv_rtlddir="/lib"
-    if test "$libdir" = '${exec_prefix}/lib'; then
-      libdir='${exec_prefix}/lib64';
-      # Locale data can be shared between 32bit and 64bit libraries
-      libc_cv_localedir='${exec_prefix}/lib/locale'
-    fi
-    ;;
+/usr | /usr/)
+  libc_cv_slibdir=/lib64
+  libc_cv_rtlddir=/lib
+  if test "$libdir" = '${exec_prefix}/lib'; then
+    libdir='${exec_prefix}/lib64';
+    # Locale data can be shared between 32-bit and 64-bit libraries.
+    libc_cv_localedir='${exec_prefix}/lib/locale'
+  fi
+  ;;
 esac
index b090702..211fa9c 100644 (file)
@@ -3,15 +3,4 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 
 arch_minimum_kernel=3.7.0
 
-test -n "$libc_cv_slibdir" ||
-case "$prefix" in
-  /usr | /usr/)
-    libc_cv_slibdir="/lib64"
-    libc_cv_rtlddir="/lib"
-    if test "$libdir" = '${exec_prefix}/lib'; then
-      libdir='${exec_prefix}/lib64';
-      # Locale data can be shared between 32bit and 64bit libraries
-      libc_cv_localedir='${exec_prefix}/lib/locale'
-    fi
-    ;;
-esac
+LIBC_SLIBDIR_RTLDDIR([lib64], [lib])
index e8b0d7b..7fac4f4 100644 (file)
@@ -268,33 +268,35 @@ fi
 config_vars="$config_vars
 default-abi = ${libc_mips_abi}_${libc_mips_float}${libc_mips_nan}"
 
+case $machine in
+mips/mips64/n64/*)
+  test -n "$libc_cv_slibdir" ||
 case "$prefix" in
 /usr | /usr/)
-  # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib.
-  # Allow earlier configure scripts to handle libc_cv_slibdir, libdir,
-  # and libc_cv_localedir.
-  test -n "$libc_cv_slibdir" || \
-  case $machine in
-  mips/mips64/n64/* )
-    libc_cv_slibdir="/lib64"
-    if test "$libdir" = '${exec_prefix}/lib'; then
-      libdir='${exec_prefix}/lib64';
-      # Locale data can be shared between 32bit and 64bit libraries
-      libc_cv_localedir='${exec_prefix}/lib/locale'
-    fi
-    ;;
-  mips/mips64/n32/* )
-    libc_cv_slibdir="/lib32"
-    if test "$libdir" = '${exec_prefix}/lib'; then
-      libdir='${exec_prefix}/lib32';
-      # Locale data can be shared between 32bit and 64bit libraries
-      libc_cv_localedir='${exec_prefix}/lib/locale'
-    fi
-    ;;
-  *)
-    libc_cv_slibdir="/lib"
-    ;;
-  esac
+  libc_cv_slibdir=/lib64
+  libc_cv_rtlddir=/lib64
+  if test "$libdir" = '${exec_prefix}/lib'; then
+    libdir='${exec_prefix}/lib64';
+    # Locale data can be shared between 32-bit and 64-bit libraries.
+    libc_cv_localedir='${exec_prefix}/lib/locale'
+  fi
+  ;;
+esac
+  ;;
+mips/mips64/n32/*)
+  test -n "$libc_cv_slibdir" ||
+case "$prefix" in
+/usr | /usr/)
+  libc_cv_slibdir=/lib32
+  libc_cv_rtlddir=/lib32
+  if test "$libdir" = '${exec_prefix}/lib'; then
+    libdir='${exec_prefix}/lib32';
+    # Locale data can be shared between 32-bit and 64-bit libraries.
+    libc_cv_localedir='${exec_prefix}/lib/locale'
+  fi
+  ;;
+esac
+  ;;
 esac
 
 libc_cv_gcc_unwind_find_fde=yes
index 7087a14..c3f217a 100644 (file)
@@ -58,33 +58,13 @@ fi
 LIBC_CONFIG_VAR([default-abi],
   [${libc_mips_abi}_${libc_mips_float}${libc_mips_nan}])
 
-case "$prefix" in
-/usr | /usr/)
-  # 64-bit libraries on bi-arch platforms go in /lib64 instead of /lib.
-  # Allow earlier configure scripts to handle libc_cv_slibdir, libdir,
-  # and libc_cv_localedir.
-  test -n "$libc_cv_slibdir" || \
-  case $machine in
-  mips/mips64/n64/* )
-    libc_cv_slibdir="/lib64"
-    if test "$libdir" = '${exec_prefix}/lib'; then
-      libdir='${exec_prefix}/lib64';
-      # Locale data can be shared between 32bit and 64bit libraries
-      libc_cv_localedir='${exec_prefix}/lib/locale'
-    fi
-    ;;
-  mips/mips64/n32/* )
-    libc_cv_slibdir="/lib32"
-    if test "$libdir" = '${exec_prefix}/lib'; then
-      libdir='${exec_prefix}/lib32';
-      # Locale data can be shared between 32bit and 64bit libraries
-      libc_cv_localedir='${exec_prefix}/lib/locale'
-    fi
-    ;;
-  *)
-    libc_cv_slibdir="/lib"
-    ;;
-  esac
+case $machine in
+mips/mips64/n64/*)
+  LIBC_SLIBDIR_RTLDDIR([lib64], [lib64])
+  ;;
+mips/mips64/n32/*)
+  LIBC_SLIBDIR_RTLDDIR([lib32], [lib32])
+  ;;
 esac
 
 libc_cv_gcc_unwind_find_fde=yes
index 8262fdd..aa1302a 100644 (file)
@@ -1,6 +1,19 @@
 # This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/unix/sysv/linux/powerpc/powerpc64/.
 
+test -n "$libc_cv_slibdir" ||
+case "$prefix" in
+/usr | /usr/)
+  libc_cv_slibdir=/lib64
+  libc_cv_rtlddir=/lib64
+  if test "$libdir" = '${exec_prefix}/lib'; then
+    libdir='${exec_prefix}/lib64';
+    # Locale data can be shared between 32-bit and 64-bit libraries.
+    libc_cv_localedir='${exec_prefix}/lib/locale'
+  fi
+  ;;
+esac
+
 # Define default-abi according to compiler flags.
 
 
index d60b05e..de04689 100644 (file)
@@ -1,6 +1,8 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/unix/sysv/linux/powerpc/powerpc64/.
 
+LIBC_SLIBDIR_RTLDDIR([lib64], [lib64])
+
 # Define default-abi according to compiler flags.
 AC_CACHE_CHECK([whether the compiler is using the PowerPC64 ELFv2 ABI],
   [libc_cv_ppc64_elfv2_abi],
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/configure b/sysdeps/unix/sysv/linux/s390/s390-64/configure
new file mode 100644 (file)
index 0000000..63f4194
--- /dev/null
@@ -0,0 +1,15 @@
+# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
+ # Local configure fragment for sysdeps/unix/sysv/linux/s390/s390-64.
+
+test -n "$libc_cv_slibdir" ||
+case "$prefix" in
+/usr | /usr/)
+  libc_cv_slibdir=/lib64
+  libc_cv_rtlddir=/lib
+  if test "$libdir" = '${exec_prefix}/lib'; then
+    libdir='${exec_prefix}/lib64';
+    # Locale data can be shared between 32-bit and 64-bit libraries.
+    libc_cv_localedir='${exec_prefix}/lib/locale'
+  fi
+  ;;
+esac
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/configure.ac b/sysdeps/unix/sysv/linux/s390/s390-64/configure.ac
new file mode 100644 (file)
index 0000000..8c75888
--- /dev/null
@@ -0,0 +1,4 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/unix/sysv/linux/s390/s390-64.
+
+LIBC_SLIBDIR_RTLDDIR([lib64], [lib])
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/configure b/sysdeps/unix/sysv/linux/sparc/sparc64/configure
new file mode 100644 (file)
index 0000000..9e5ea3c
--- /dev/null
@@ -0,0 +1,15 @@
+# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
+ # Local configure fragment for sysdeps/unix/sysv/linux/sparc/sparc64.
+
+test -n "$libc_cv_slibdir" ||
+case "$prefix" in
+/usr | /usr/)
+  libc_cv_slibdir=/lib64
+  libc_cv_rtlddir=/lib64
+  if test "$libdir" = '${exec_prefix}/lib'; then
+    libdir='${exec_prefix}/lib64';
+    # Locale data can be shared between 32-bit and 64-bit libraries.
+    libc_cv_localedir='${exec_prefix}/lib/locale'
+  fi
+  ;;
+esac
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/configure.ac b/sysdeps/unix/sysv/linux/sparc/sparc64/configure.ac
new file mode 100644 (file)
index 0000000..979bb8d
--- /dev/null
@@ -0,0 +1,4 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/unix/sysv/linux/sparc/sparc64.
+
+LIBC_SLIBDIR_RTLDDIR([lib64], [lib64])
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/configure b/sysdeps/unix/sysv/linux/x86_64/64/configure
new file mode 100644 (file)
index 0000000..570d328
--- /dev/null
@@ -0,0 +1,15 @@
+# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
+ # Local configure fragment for sysdeps/unix/sysv/linux/x86_64/64.
+
+test -n "$libc_cv_slibdir" ||
+case "$prefix" in
+/usr | /usr/)
+  libc_cv_slibdir=/lib64
+  libc_cv_rtlddir=/lib64
+  if test "$libdir" = '${exec_prefix}/lib'; then
+    libdir='${exec_prefix}/lib64';
+    # Locale data can be shared between 32-bit and 64-bit libraries.
+    libc_cv_localedir='${exec_prefix}/lib/locale'
+  fi
+  ;;
+esac
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/configure.ac b/sysdeps/unix/sysv/linux/x86_64/64/configure.ac
new file mode 100644 (file)
index 0000000..8e863b9
--- /dev/null
@@ -0,0 +1,4 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/unix/sysv/linux/x86_64/64.
+
+LIBC_SLIBDIR_RTLDDIR([lib64], [lib64])
index 51fc1e6..6ff0f0c 100644 (file)
@@ -1,18 +1,17 @@
-# Local configure fragment for sysdeps/unix/sysv/linux/86_64/x32.
+# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
+ # Local configure fragment for sysdeps/unix/sysv/linux/86_64/x32.
 
-case "$machine" in
-x86_64/x32)
-  test -n "$arch_minimum_kernel" || arch_minimum_kernel=3.4.0
-  test -n "$libc_cv_slibdir" ||
-  case "$prefix" in
-  /usr | /usr/)
-    libc_cv_slibdir="/libx32"
-    if test "$libdir" = '${exec_prefix}/lib'; then
-      libdir='${exec_prefix}/libx32';
-      # Locale data can be shared.
-      libc_cv_localedir='${exec_prefix}/lib/locale'
-    fi
-    ;;
-  esac
+arch_minimum_kernel=3.4.0
+
+test -n "$libc_cv_slibdir" ||
+case "$prefix" in
+/usr | /usr/)
+  libc_cv_slibdir=/libx32
+  libc_cv_rtlddir=/libx32
+  if test "$libdir" = '${exec_prefix}/lib'; then
+    libdir='${exec_prefix}/libx32';
+    # Locale data can be shared between 32-bit and 64-bit libraries.
+    libc_cv_localedir='${exec_prefix}/lib/locale'
+  fi
   ;;
 esac
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/configure.ac b/sysdeps/unix/sysv/linux/x86_64/x32/configure.ac
new file mode 100644 (file)
index 0000000..f44e4ca
--- /dev/null
@@ -0,0 +1,6 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/unix/sysv/linux/86_64/x32.
+
+arch_minimum_kernel=3.4.0
+
+LIBC_SLIBDIR_RTLDDIR([libx32], [libx32])