[bug#56504] Mingw support for zlib
Commit Message
Le mardi 12 juillet 2022 à 08:07 +0200, Liliana Marie Prikler a écrit :
> Am Dienstag, dem 12.07.2022 um 01:53 +0200 schrieb Vivien Kraus:
>
> > + ,@(if (and (%current-target-system)
> > + (string-suffix? "-w64-mingw32"
> > (%current-
> > target-system)))
> I'm pretty sure there's an abbreviation for this like target-mingw?
Precisely! Fixed it, thank you.
> > + `((substitute* "win32/Makefile.gcc"
> > + (("PREFIX =")
> > + (string-append "PREFIX = " ,(%current-
> > target-system) "-"))
> > + (("prefix \\?= /usr/local")
> > + (string-append "prefix ?= " out))
> > + (("# BINARY_PATH, INCLUDE_PATH and
> > LIBRARY_PATH must be set.")
> > + "\
> > +BINARY_PATH = $(prefix)/bin
> > +INCLUDE_PATH = $(prefix)/include
> > +LIBRARY_PATH = $(prefix)/lib"))
> > + (rename-file "win32/Makefile.gcc"
> > "Makefile"))
> I think these can be conditionally added to #:make-flags
I did it for all but prefix, because I have to have the output path. Is
there a way to get it from within the make-flags?
> > + `((invoke "./configure"
> > + (string-append "--prefix="
> > out)))))))
>
> > + ,@(if (and (%current-target-system)
> > + (string-suffix? "-mingw32" (%current-target-
> > system)))
> > + `(add-after 'install 'install-mingw-shared
> > + (lambda* (#:key make-flags #:allow-other-keys)
> > + (apply invoke "make"
> > + (append make-flags
> > + '("install"
> > "SHARED_MODE=1")))))
> SHARED_MODE might likewise be conditionally added to #:make-flags.
I get both the DLL loader and the DLL in the default output, and the
static lib in the static output, so it works.
Thank you for your review!
Vivien
Comments
Am Dienstag, dem 12.07.2022 um 18:45 +0200 schrieb Vivien Kraus:
> Le mardi 12 juillet 2022 à 08:07 +0200, Liliana Marie Prikler a
> écrit :
> > Am Dienstag, dem 12.07.2022 um 01:53 +0200 schrieb Vivien Kraus:
> >
> > > + ,@(if (and (%current-target-system)
> > > + (string-suffix? "-w64-mingw32"
> > > (%current-
> > > target-system)))
> > I'm pretty sure there's an abbreviation for this like target-mingw?
> Precisely! Fixed it, thank you.
>
> > > + `((substitute* "win32/Makefile.gcc"
> > > + (("PREFIX =")
> > > + (string-append "PREFIX = " ,(%current-
> > > target-system) "-"))
> > > + (("prefix \\?= /usr/local")
> > > + (string-append "prefix ?= " out))
> > > + (("# BINARY_PATH, INCLUDE_PATH and
> > > LIBRARY_PATH must be set.")
> > > + "\
> > > +BINARY_PATH = $(prefix)/bin
> > > +INCLUDE_PATH = $(prefix)/include
> > > +LIBRARY_PATH = $(prefix)/lib"))
> > > + (rename-file "win32/Makefile.gcc"
> > > "Makefile"))
> > I think these can be conditionally added to #:make-flags
> I did it for all but prefix, because I have to have the output path.
> Is there a way to get it from within the make-flags?
With the gexp-style you'd write #$output, otherwise ,(assoc-ref %build-
outputs "out").
> > > + `((invoke "./configure"
> > > + (string-append "--prefix="
> > > out)))))))
> >
> > > + ,@(if (and (%current-target-system)
> > > + (string-suffix? "-mingw32" (%current-target-
> > > system)))
> > > + `(add-after 'install 'install-mingw-shared
> > > + (lambda* (#:key make-flags #:allow-other-keys)
> > > + (apply invoke "make"
> > > + (append make-flags
> > > + '("install"
> > > "SHARED_MODE=1")))))
> > SHARED_MODE might likewise be conditionally added to #:make-flags.
> I get both the DLL loader and the DLL in the default output, and the
> static lib in the static output, so it works.
Oh, so you mean the static output should be built without SHARED_MODE?
Cheers
From 1ddb567f30f565e951321b80921f27ed7f10f604 Mon Sep 17 00:00:00 2001
From: Vivien Kraus <vivien@planete-kraus.eu>
Date: Sat, 25 Jun 2022 16:33:44 +0200
Subject: [PATCH v2] gnu: zlib: Support mingw cross-compilation.
* gnu/packages/compression.scm (zlib): Only run configure if not mingw.
---
gnu/packages/compression.scm | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
@@ -113,7 +113,15 @@ (define-public zlib
(build-system gnu-build-system)
(outputs '("out" "static"))
(arguments
- `(#:phases
+ `(#:make-flags
+ ,(if (target-mingw?)
+ `(list ,(string-append "PREFIX=" (%current-target-system) "-")
+ "BINARY_PATH = $(prefix)/bin"
+ "INCLUDE_PATH = $(prefix)/include"
+ "LIBRARY_PATH = $(prefix)/lib"
+ "SHARED_MODE = 1")
+ ''())
+ #:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
@@ -125,8 +133,13 @@ (define-public zlib
,@(if (%current-target-system)
`((setenv "CHOST" ,(%current-target-system)))
'())
- (invoke "./configure"
- (string-append "--prefix=" out)))))
+ ,@(if (target-mingw?)
+ `((substitute* "win32/Makefile.gcc"
+ (("prefix \\?= /usr/local")
+ (string-append "prefix ?= " out)))
+ (rename-file "win32/Makefile.gcc" "Makefile"))
+ `((invoke "./configure"
+ (string-append "--prefix=" out)))))))
(add-after 'install 'move-static-library
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
base-commit: f0c8abe85787a0018c0adeb0bc4a6672d46686e4
--
2.36.1