glibc/sysdeps/powerpc/preconfigure

22 lines
548 B
Plaintext
Raw Normal View History

# preconfigure fragment for powerpc.
2013-10-18 21:03:40 +00:00
case "$machine" in
powerpc64le: Create divergent sysdep directory for powerpc64le. float128 on powerpc64le requires the addition of the ieee754/float128 sysdep, whereas powerpc64 doesn't. This requires creating a bunch of submachine and cpu directories and Implies files which just point towards their powerpc64 equivalent. Tested on P7, P8, and generic powerpc64le targets with and without multiarch. * sysdeps/powerpc/powerpc64le/Implies: New file. * sysdeps/powerpc/powerpc64le/fpu/Implies: New file. * sysdeps/powerpc/powerpc64le/fpu/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power7/Implies: New file. * sysdeps/powerpc/powerpc64le/power7/fpu/Implies: New file. * sysdeps/powerpc/powerpc64le/power7/fpu/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power7/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power8/Implies: New file. * sysdeps/powerpc/powerpc64le/power8/fpu/Implies: New file. * sysdeps/powerpc/powerpc64le/power8/fpu/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power8/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power9/Implies: New file. * sysdeps/powerpc/powerpc64le/power9/fpu/Implies: New file. * sysdeps/powerpc/powerpc64le/power9/fpu/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power9/multiarch/Implies: New file. * sysdeps/powerpc/preconfigure: New file. * sysdeps/unix/sysv/linux/powerpc/powerpc64le/Implies: New file. * sysdeps/unix/sysv/linux/powerpc/powerpc64le/fpu/Implies: New file.
2016-07-15 23:04:40 +00:00
powerpc64le)
powerpc64*: fix the order of implied sysdeps directories The creation of the divergent sysdeps directory for powerpc64le commit 2f7f3cd8cd302bb10908c86f3f7b349df0a78e6a Author: Paul E. Murphy <murphyp@linux.vnet.ibm.com> Date: Fri Jul 15 18:04:40 2016 -0500 powerpc64le: Create divergent sysdep directory for powerpc64le. allowed float128 to be enabled for powerpc64le (little-endian) and not for powerpc64 (big-endian). Since the only intended difference between them was the presence or absence of the float128 interface, the sysdeps directory for powerpc64le explicitly reused the files from powerpc64 (through the use of Implies files). Although this works, it also means that files under the powerpc64 directory might be preferred over files under powerpc64le. For instance, on a build for powerpc64le with target set to power9, a file from powerpc64/power5 might get built, even though a file with the same name exists in powerpc64le/power8. That happens because the processor hierarchy was only defined in the sysdeps directory for powerpc64 (and borrowed by powerpc64le). This patch fixes this behavior, by creating new subdirectories under powerpc64 (i.e.: powerpc64/be and powerpc64/le) and creating new Implies files to provide the hierarchy of processors for powerpc64 and powerpc64le separately. These changes have no effect on installed, stripped binaries (which remain unchanged). Tested that installed stripped binaries are unchanged and that there are no regressions on powerpc64 and powerpc64le.
2018-03-09 19:59:14 +00:00
base_machine=powerpc machine=powerpc/powerpc64/le
powerpc64le: Create divergent sysdep directory for powerpc64le. float128 on powerpc64le requires the addition of the ieee754/float128 sysdep, whereas powerpc64 doesn't. This requires creating a bunch of submachine and cpu directories and Implies files which just point towards their powerpc64 equivalent. Tested on P7, P8, and generic powerpc64le targets with and without multiarch. * sysdeps/powerpc/powerpc64le/Implies: New file. * sysdeps/powerpc/powerpc64le/fpu/Implies: New file. * sysdeps/powerpc/powerpc64le/fpu/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power7/Implies: New file. * sysdeps/powerpc/powerpc64le/power7/fpu/Implies: New file. * sysdeps/powerpc/powerpc64le/power7/fpu/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power7/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power8/Implies: New file. * sysdeps/powerpc/powerpc64le/power8/fpu/Implies: New file. * sysdeps/powerpc/powerpc64le/power8/fpu/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power8/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power9/Implies: New file. * sysdeps/powerpc/powerpc64le/power9/fpu/Implies: New file. * sysdeps/powerpc/powerpc64le/power9/fpu/multiarch/Implies: New file. * sysdeps/powerpc/powerpc64le/power9/multiarch/Implies: New file. * sysdeps/powerpc/preconfigure: New file. * sysdeps/unix/sysv/linux/powerpc/powerpc64le/Implies: New file. * sysdeps/unix/sysv/linux/powerpc/powerpc64le/fpu/Implies: New file.
2016-07-15 23:04:40 +00:00
;;
powerpc64*)
powerpc64*: fix the order of implied sysdeps directories The creation of the divergent sysdeps directory for powerpc64le commit 2f7f3cd8cd302bb10908c86f3f7b349df0a78e6a Author: Paul E. Murphy <murphyp@linux.vnet.ibm.com> Date: Fri Jul 15 18:04:40 2016 -0500 powerpc64le: Create divergent sysdep directory for powerpc64le. allowed float128 to be enabled for powerpc64le (little-endian) and not for powerpc64 (big-endian). Since the only intended difference between them was the presence or absence of the float128 interface, the sysdeps directory for powerpc64le explicitly reused the files from powerpc64 (through the use of Implies files). Although this works, it also means that files under the powerpc64 directory might be preferred over files under powerpc64le. For instance, on a build for powerpc64le with target set to power9, a file from powerpc64/power5 might get built, even though a file with the same name exists in powerpc64le/power8. That happens because the processor hierarchy was only defined in the sysdeps directory for powerpc64 (and borrowed by powerpc64le). This patch fixes this behavior, by creating new subdirectories under powerpc64 (i.e.: powerpc64/be and powerpc64/le) and creating new Implies files to provide the hierarchy of processors for powerpc64 and powerpc64le separately. These changes have no effect on installed, stripped binaries (which remain unchanged). Tested that installed stripped binaries are unchanged and that there are no regressions on powerpc64 and powerpc64le.
2018-03-09 19:59:14 +00:00
base_machine=powerpc machine=powerpc/powerpc64/be
;;
powerpc*)
# Check for e500.
2013-10-18 21:03:40 +00:00
$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null > conftest.i
if grep -q __NO_FPRS__ conftest.i && ! grep -q _SOFT_FLOAT conftest.i; then
base_machine=powerpc machine=powerpc/powerpc32/e500
else
base_machine=powerpc machine=powerpc/powerpc32
2013-10-18 21:03:40 +00:00
fi
rm -f conftest.i
Remove --with-fp / --without-fp. There is a configure option --without-fp that specifies that nofpu sysdeps directories should be used instead of fpu directories. For most glibc configurations, this option is of no use: either there is no valid nofpu variant of that configuration, or there are no fpu or nofpu sysdeps directories for that processor and so the option does nothing. For a few configurations, if you are using a soft-float compiler this option is required, and failing to use it generally results in compilation errors from inline asm using unavailable floating-point instructions. We're moving away from --with-cpu to configuring glibc based on how the compiler generates code, and it is natural to do so for --without-fp as well; in most cases the soft-float and hard-float ABIs are incompatible so you have no hope of building a working glibc with an inappropriately configured compiler or libgcc. This patch eliminates --without-fp, replacing it entirely by automatic configuration based on the compiler. Configurations for which this is relevant (coldfire / mips / powerpc32 / sh) define a variable with_fp_cond in their preconfigure fragments (under the same conditions under which those fragments do anything); this is a preprocessor conditional which the toplevel configure script then uses in a test to determine which sysdeps directories to use. The config.make with-fp variable remains. It's used only by powerpc (sysdeps/powerpc/powerpc32/Makefile) to add -mhard-float to various flags variables. For powerpc, -mcpu= options can imply use of soft-float. That could be an issue if you want to build for e.g. 476fp, but are using --with-cpu=476 because there isn't a 476fp sysdeps directory. If in future we eliminate --with-cpu and replace it entirely by testing the compiler, it would be natural at that point to eliminate that code as well (as the user should then just use a compiler defaulting to 476fp and the 476 sysdeps directory would be used automatically). Tested for x86_64, and tested with build-many-glibcs.py that installed shared libraries are unchanged by this patch. * configure.ac (--with-fp): Remove configure option. (with_fp_cond): New variable. (libc_cv_with_fp): New configure test. Use this variable instead of with_fp. * configure: Regenerated. * config.make.in (with-fp): Use @libc_cv_with_fp@. * manual/install.texi (Configuring and compiling): Remove --without-fp. * INSTALL: Regenerated. * sysdeps/m68k/preconfigure (with_fp_cond): Define for ColdFire. * sysdeps/mips/preconfigure (with_fp_cond): Define. * sysdeps/powerpc/preconfigure (with_fp_cond): Define for 32-bit. * sysdeps/sh/preconfigure (with_fp_cond): Define. * scripts/build-many-glibcs.py (Context.add_all_configs): Do not use --without-fp to configure glibc.
2017-12-12 13:56:47 +00:00
with_fp_cond="!defined __NO_FPRS__"
2013-10-18 21:03:40 +00:00
;;
esac