gnu: cross-base: Don't specify mingw --with-newlib

Previous to this commit, we added a --with-newlib configure flag to
cross-gcc when cross-newlib?, but cross-newlib? is true only when
target-mingw?.

It turns out that specifying --with-newlib disables the
GLIBCXX_CROSSCONFIG check, which is used to detect
_GLIBCXX_HAVE__WFOPEN, which is required in C++17 std::filesystem for
mingw-w64 systems.

Additional context: In gnu/packages/embedded.scm, --with-newlib is
specified explicitly when we're actually using newlib, which seems like
the correct way of handling it.

Situation in other distros:
- Debian's gcc-mingw-w64 doesn't specify --with-newlib
- Fedora's mingw64-gcc-c++ explicitly specifies --without-newlib

Chesterton's fence: Chatting with janneke, who originally added this
mechanism, reveals that this flag is not only no longer required, but
also that removing it doesn't break his guile-mingw builds. See IRC logs
of #guix for 2022-02-15.

* gnu/packages/cross-base.scm (cross-gcc-arguments): Don't check for and
specify --with-newlib.
(cross-libc): Check for mingw and use mingw-w64 directly.
(cross-newlib?): Remove, unexport.
(native-libc): Remove.
This commit is contained in:
Carl Dong 2022-03-01 11:35:17 -05:00
parent 0c6c957a01
commit 34e9eae68c
No known key found for this signature in database
GPG key ID: 0CC52153197991A5

View file

@ -42,7 +42,6 @@ (define-module (gnu packages cross-base)
#:export (cross-binutils
cross-libc
cross-gcc
cross-newlib?
cross-kernel-headers))
(define-syntax %xgcc
@ -177,10 +176,6 @@ (define (cross-gcc-arguments target xgcc libc)
`((string-append "--with-toolexeclibdir="
(assoc-ref %outputs "lib")
"/" ,target "/lib"))
'())
;; For a newlib (non-glibc) target
,@(if (cross-newlib? target)
'("--with-newlib")
'()))
,(if libc
@ -489,10 +484,11 @@ (define* (cross-libc target
(xheaders (cross-kernel-headers target)))
"Return LIBC cross-built for TARGET, a GNU triplet. Use XGCC and XBINUTILS
and the cross tool chain."
(if (cross-newlib? target libc)
(native-libc target libc
#:xgcc xgcc
#:xbinutils xbinutils)
(if (target-mingw? target)
(let ((machine (substring target 0 (string-index target #\-))))
(make-mingw-w64 machine
#:xgcc xgcc
#:xbinutils xbinutils))
(package
(inherit libc)
(name (string-append "glibc-cross-" target))
@ -553,24 +549,6 @@ (define* (cross-libc target
,@(package-inputs libc) ;FIXME: static-bash
,@(package-native-inputs libc))))))
(define* (native-libc target
#:optional
(libc glibc)
#:key
xgcc
xbinutils)
(if (target-mingw? target)
(let ((machine (substring target 0 (string-index target #\-))))
(make-mingw-w64 machine
#:xgcc xgcc
#:xbinutils xbinutils))
libc))
(define* (cross-newlib? target
#:optional
(libc glibc))
(not (eq? (native-libc target libc) libc)))
;;; Concrete cross tool chains are instantiated like this:
;;