* gnu/packages/ncurses.scm (ncurses)[MINGW]: Build with libtool, as recommended; enables dlopen'ing. --- gnu/packages/ncurses.scm | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-)
diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm index 840dcf2..4c255c9 100644 --- a/gnu/packages/ncurses.scm +++ b/gnu/packages/ncurses.scm @@ -27,6 +27,11 @@ #:use-module (guix utils) #:use-module (guix build-system gnu)) +(define* (cross-libtool #:optional (target (%current-target-system))) + (let* ((libtool (resolve-interface '(gnu packages cross-base))) + (cross-libtool (module-ref libtool 'cross-libtool))) + `(("xlibtool" ,(cross-libtool target))))) + (define-public ncurses (let ((patch-makefile-phase '(lambda _ @@ -80,14 +85,13 @@ (lambda (lib) (define lib.dll (string-append "lib" lib ".dll")) - (define libw6.dll - (string-append "lib" lib "w6.dll")) + (define libw-6.dll + (string-append "lib" lib "w-6.dll")) - (when (file-exists? libw6.dll) + (when (file-exists? libw-6.dll) (format #t "creating symlinks for `lib~a'~%" lib) - (symlink libw6.dll lib.dll))) + (symlink libw-6.dll lib.dll))) libraries)) - ;; TODO: create .la files to link to the .dll? (with-directory-excursion (string-append out "/lib") (for-each (lambda (lib) @@ -95,10 +99,17 @@ (string-append "lib" lib "w.a")) (define lib.a (string-append "lib" lib ".a")) + (define libw.la + (string-append "lib" lib "w.la")) + (define lib.la + (string-append "lib" lib ".la")) (when (file-exists? libw.a) (format #t "creating symlinks for `lib~a'~%" lib) - (symlink libw.a lib.a))) + (symlink libw.a lib.a)) + (when (file-exists? libw.la) + (format #t "creating symlinks for `lib~a'~%" lib) + (symlink libw.la lib.la))) libraries))) (else (with-directory-excursion (string-append out "/lib") @@ -135,6 +146,10 @@ (sha256 (base32 "0q3jck7lna77z5r42f13c4xglc7azd19pxfrjrpgp2yf615w4lgm")))) + ;; add to gnu:standard-cross-packages? + (native-inputs `(,@(if (mingw-target?) + `(,@(cross-libtool)) + '()))) (build-system gnu-build-system) (outputs '("out" "doc")) ;1 MiB of man pages @@ -152,8 +167,9 @@ ;; correct RUNPATH. ,(string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib") - ;; MinGW: Provide termcap api, created for the MinGW port. - ,@(if ,(mingw-target?) '("--enable-term-driver") '())) + ;; MinGW: Provide termcap api, created for the MinGW port, + ;; use litbool to build .la files to dlopen. + ,@(if ,(mingw-target?) `("--enable-term-driver" "--with-libtool") '())) #:tests? #f ; no "check" target #:phases (modify-phases %standard-phases (replace 'configure ,configure-phase) -- 2.9.2