From: Efraim Flashner <efraim@flashner.co.il>
To: 74421@debbugs.gnu.org
Cc: Efraim Flashner <efraim@flashner.co.il>
Subject: [bug#74421] [PATCH] gnu: zstd: Fix cross-building to mingw32.
Date: Mon, 18 Nov 2024 20:39:59 +0200 [thread overview]
Message-ID: <174bb50174a1779a66f95dafd90902288adb440d.1731955075.git.efraim@flashner.co.il> (raw)
* gnu/packages/compression.scm (zstd)[arguments]: Adjust the custom
'adjust-library-locations phase to have separate logic for targeting
mingw32. Adjust the make-flags to add some extra flags when targeting
mingw32.
Change-Id: Ifd32a6bd9157af93c7338dacc96467e2756b9314
---
I tested this to the best of my ability by using it as an input for
ncdu@2.6 on the wip-zig-bootstrap branch and by comparing the outputs to
the pre-compiled release tarball for win64 on Github.
gnu/packages/compression.scm | 45 ++++++++++++++++++++++++++----------
1 file changed, 33 insertions(+), 12 deletions(-)
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index b3eca16191c..fcde956c4f9 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -7,7 +7,7 @@
;;; Copyright © 2015, 2016, 2017, 2018, 2020, 2021, 2022, 2024 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015, 2017, 2018 Leo Famulari <leo@famulari.name>
;;; Copyright © 2015 Jeff Mickey <j@codemac.net>
-;;; Copyright © 2015-2023 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015-2024 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -1779,24 +1779,45 @@ (define-public zstd
(static (assoc-ref outputs "static"))
(shared-libs (string-append lib "/lib"))
(static-libs (string-append static "/lib")))
- ;; Move the static library to its own output to save ~1MiB.
(mkdir-p static-libs)
- (for-each (lambda (ar)
- (link ar (string-append static-libs "/"
- (basename ar)))
- (delete-file ar))
- (find-files shared-libs "\\.a$"))
+ ;; This is based on the win64 release zip file from zstd.
+ ,@(if (target-mingw?)
+ `((for-each delete-file (find-files out "\\.so"))
+ (for-each delete-file (find-files shared-libs "\\.so"))
+ (rename-file (string-append shared-libs "/libzstd.a")
+ (string-append static-libs "/libzstd_static.lib"))
+ (delete-file-recursively
+ (string-append shared-libs "/pkgconfig"))
+ ;; no binary for interpreter `sh' found in $PATH
+ (delete-file (string-append out "/bin/zstdgrep"))
+ (delete-file (string-append out "/bin/zstdless"))
+ (delete-file (string-append out "/share/man/man1/zstdgrep.1"))
+ (delete-file (string-append out "/share/man/man1/zstdless.1")))
+ `(;; Move the static library to its own output to save ~1MiB.
+ (for-each (lambda (ar)
+ (link ar (string-append static-libs "/"
+ (basename ar)))
+ (delete-file ar))
+ (find-files shared-libs "\\.a$"))
- ;; Make sure the pkg-config file refers to the right output.
- (substitute* (string-append shared-libs "/pkgconfig/libzstd.pc")
- (("^prefix=.*")
- ;; Note: The .pc file expects a trailing slash for 'prefix'.
- (string-append "prefix=" lib "/\n")))))))
+ ;; Make sure the pkg-config file refers to the right output.
+ (substitute* (string-append shared-libs "/pkgconfig/libzstd.pc")
+ (("^prefix=.*")
+ ;; Note: The .pc file expects a trailing slash for 'prefix'.
+ (string-append "prefix=" lib "/\n")))))))))
#:make-flags
(list ,(string-append "CC=" (cc-for-target))
(string-append "prefix=" (assoc-ref %outputs "out"))
(string-append "libdir=" (assoc-ref %outputs "lib") "/lib")
(string-append "includedir=" (assoc-ref %outputs "lib") "/include")
+ ,@(if (target-mingw?)
+ `(;; See the note in the Makefile.
+ "TARGET_SYSTEM=Windows"
+ ;; Don't try to link with pthread.
+ "THREAD_LD="
+ ;; This isn't picked up correctly in the Makefiles.
+ "EXT=.exe")
+ '())
;; Auto-detection is over-engineered and buggy.
"PCLIBDIR=lib"
"PCINCDIR=include"
base-commit: 1affd2b5aa7f5467a44cf757c4fc0c6956d3f3c9
--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
reply other threads:[~2024-11-18 18:41 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=174bb50174a1779a66f95dafd90902288adb440d.1731955075.git.efraim@flashner.co.il \
--to=efraim@flashner.co.il \
--cc=74421@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).