mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
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:
parent
0c6c957a01
commit
34e9eae68c
1 changed files with 5 additions and 27 deletions
|
@ -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:
|
||||
;;
|
||||
|
|
Loading…
Reference in a new issue