From ad89f9f59d22cc10fbf7dd6f738ce15a6e79b640 Mon Sep 17 00:00:00 2001 From: Chris Marusich Date: Sat, 10 Apr 2021 18:16:17 -0700 Subject: [PATCH] gnu: Simplify the use of --with-long-double-128 on powerpc64le. In short, this change adds the "--with-long-double-128" configure option in one place and removes it from two other (now-redundant) places. It does not cause any rebuilds on systems other than powerpc64le-linux. * gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): Add a clause for targets starting with "powerpc64le-" which adds the "--with-long-double-128" option. This causes any package using this procedure to be built using this new option on powerpc64le systems. In particular, this affects the gcc package and the gcc-final package, in addition to all the other versions of GCC defined in (gnu packages gcc). * gnu/packages/commencement.scm (gcc-boot0)[#:configure-flags]: Remove the code that adds the "--with-long-double-128" configure option for powerpc64le, since it is now redundant. The gcc-boot0 package uses (and adds to) the gcc package's configure options. This means that the above change in gcc.scm is sufficient to ensure that the gcc-boot0 package's configure options will include "--with-long-double-128" on powerpc64le systems. * gnu/packages/cross-base.scm (cross-gcc-arguments)[#:configure-flags]: Remove the code that adds the "--with-long-double-128" configure option for powerpc64le, since it is now redundant. The cross-gcc-arguments procedure uses (and adds to) the configure options of its xgcc argument (a package). This means that regardless of which gcc from gcc.scm is used as the xgcc, the above change in gcc.scm is sufficient to ensure that the cross-gcc-arguments procedure's configure options will include "--with-long-double-128" on powerpc64le systems. --- gnu/packages/commencement.scm | 7 ------- gnu/packages/cross-base.scm | 6 ------ gnu/packages/gcc.scm | 3 +++ 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index d4511ed914..db564db9c4 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -2819,13 +2819,6 @@ exec " gcc "/bin/" program "--disable-shared" "--enable-languages=c,c++" - ;; boot-triplet inserts "guix" in the triplet. - ,@(if (equal? "powerpc64le-guix-linux-gnu" (boot-triplet)) - ;; On POWER9 (little endian) glibc needs the - ;; 128-bit long double type. - '("--with-long-double-128") - '()) - ;; libstdc++ cannot be built at this stage ;; ("Link tests are not allowed after ;; GCC_NO_EXECUTABLES."). diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index 180594509b..c1e5f2eb79 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -153,12 +153,6 @@ base compiler and using LIBC (which may be either a libc package or #f.)" "--disable-decimal-float" ;would need libc "--disable-libcilkrts" - ,@(if (string-prefix? "powerpc64le-" target) - ;; On POWER9 (little endian) glibc needs - ;; the 128-bit long double type. - '("--with-long-double-128") - '()) - ;; When target is any OS other than 'none' these ;; libraries will fail if there is no libc ;; present. See diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index a412c93c29..22a0f35422 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -79,6 +79,9 @@ where the OS part is overloaded to denote a specific ABI---into GCC ;; Cilk has been removed from GCC 8 anyway. '("--disable-libcilkrts")) + ((string-prefix? "powerpc64le-" target) + '("--with-long-double-128")) + (else ;; TODO: Add `arm.*-gnueabi', etc. '()))) -- 2.30.2