diff options
author | Carl Dong <contact@carldong.me> | 2022-03-01 11:35:17 -0500 |
---|---|---|
committer | Carl Dong <contact@carldong.me> | 2022-03-16 22:13:48 -0400 |
commit | 34e9eae68c9583acce5abc4100add3d88932a5ae (patch) | |
tree | 6d26dab2514b976fbbce63d543260a9d5b205fbf /gnu/packages | |
parent | 0c6c957a01c789f055c44c01165a14389dfd4a60 (diff) | |
download | guix-34e9eae68c9583acce5abc4100add3d88932a5ae.tar.gz guix-34e9eae68c9583acce5abc4100add3d88932a5ae.zip |
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.
Diffstat (limited to 'gnu/packages')
-rw-r--r-- | gnu/packages/cross-base.scm | 32 |
1 files changed, 5 insertions, 27 deletions
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index 529144d127..66412b9e92 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -42,7 +42,6 @@ #:export (cross-binutils cross-libc cross-gcc - cross-newlib? cross-kernel-headers)) (define-syntax %xgcc @@ -177,10 +176,6 @@ base compiler and using LIBC (which may be either a libc package or #f.)" `((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 @@ target that libc." (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 @@ and the cross tool chain." ,@(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: ;; |