Refactor handling of /lib64 etc. cases, move out of sysdeps/gnu/configure.ac.

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.
This commit is contained in:
Joseph Myers 2014-07-17 14:35:48 +00:00
parent 29c4f53e2a
commit d95ffd4cfd
18 changed files with 192 additions and 132 deletions

View File

@ -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 ...

18
aclocal.m4 vendored
View 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])

34
sysdeps/gnu/configure vendored
View 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

View 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

View 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

View 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])

View 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

View 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

View 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.

View 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],

View File

@ -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

View File

@ -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])

View File

@ -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

View File

@ -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])

View File

@ -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

View File

@ -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])

View 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

View File

@ -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])