unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Jan Nieuwenhuizen <janneke@gnu.org>
To: guix-devel@gnu.org
Subject: [PATCH 10/12] gnu: ncurses: build mingw with libtool.
Date: Thu, 18 Aug 2016 08:08:49 +0200	[thread overview]
Message-ID: <20160818060851.2853-11-janneke@gnu.org> (raw)
In-Reply-To: <20160818060851.2853-1-janneke@gnu.org>

* gnu/packages/ncurses.scm (ncurses)[MINGW]: Build with libtool, as
recommended; enables dlopen'ing.
---
 gnu/packages/ncurses.scm | 33 +++++++++++++++++++++++++--------
 1 file changed, 25 insertions(+), 8 deletions(-)

diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm
index 4d26fde..74a8470 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
   (package
     (name "ncurses")
@@ -41,6 +46,9 @@
               (patches (if (target-mingw?)
                            (search-patches "ncurses-mingw.patch")
                            '()))))
+    (native-inputs `(,@(if (target-mingw?)
+                           `(,@(cross-libtool))
+                           '())))
     (build-system gnu-build-system)
     (outputs '("out"
                "doc"))                ;1 MiB of man pages
@@ -92,12 +100,12 @@
                             (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)))
                             '("curses" "ncurses" "form" "panel" "menu"))))
                        '())
                  (with-directory-excursion (string-append out "/lib")
@@ -114,7 +122,10 @@
                                          (string-append "lib" lib ".so.6"))
                                        (define lib.so
                                          (string-append "lib" lib ".so")))
-                                     '())
+                                     '((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)
@@ -125,7 +136,13 @@
                                          (call-with-output-file lib.so
                                            (lambda (p)
                                              (format p "INPUT (-l~aw)~%" lib))))
-                                       '())))
+                                       '()))
+
+                               ,@(if (target-mingw?)
+                                     '((when (file-exists? libw.la)
+                                         (format #t "creating symlinks for `lib~a'~%" lib)
+                                         (symlink libw.la lib.la)))
+                                     '()))
                              '("curses" "ncurses" "form" "panel" "menu")))))))
        `(#:configure-flags
          ,(cons*
@@ -142,8 +159,8 @@
               ;; correct RUNPATH.
               ,(list 'unquote '(string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out")
                                               "/lib"))
-              ;; MinGW: Use term-driver created for the MinGW port.
-              ,@(if (target-mingw?) '("--enable-term-driver") '()))))
+              ;; MinGW: Use term-driver created for the MinGW port, libtool.
+              ,@(if (target-mingw?) '("--enable-term-driver" "--with-libtool") '()))))
          #:tests? #f                  ; no "check" target
          #:phases (modify-phases %standard-phases
                     (replace 'configure ,configure-phase)
-- 
2.9.2

  parent reply	other threads:[~2016-08-18  6:09 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-18  6:08 MinGW guile.exe cross build patch series v10 Jan Nieuwenhuizen
2016-08-18  6:08 ` [PATCH 01/12] gnu: Add gcc-cross-x86_64 packages for testing Jan Nieuwenhuizen
2016-08-18  6:08 ` [PATCH 02/12] gnu: Add mingw-w64 Jan Nieuwenhuizen
2016-08-18  7:42   ` Alex Kost
2016-08-18  9:48     ` Jan Nieuwenhuizen
2016-08-18  6:08 ` [PATCH 03/12] gnu: cross-build: i686-w64-mingw32: new cross target Jan Nieuwenhuizen
2016-08-18  6:08 ` [PATCH 04/12] gnu: Add function libiconv-if-needed Jan Nieuwenhuizen
2016-08-18  6:08 ` [PATCH 05/12] gnu: libunistring: support mingw: propagate libiconv if needed Jan Nieuwenhuizen
2016-08-18  6:08 ` [PATCH 06/12] gnu: gmp: build shared library for mingw Jan Nieuwenhuizen
2016-08-18  6:08 ` [PATCH 07/12] gnu: ncurses: support mingw Jan Nieuwenhuizen
2016-08-18  6:08 ` [PATCH 08/12] gnu: cross-base: Add cross-libtool Jan Nieuwenhuizen
2016-08-18  6:08 ` [PATCH 09/12] gnu: libtool: support cross-libtool mingw Jan Nieuwenhuizen
2016-08-18  6:08 ` Jan Nieuwenhuizen [this message]
2016-12-07  9:36   ` MinGW cross-compilation support Ludovic Courtès
2016-12-07 10:53     ` Manolis Ragkousis
2016-12-07 21:34       ` Ludovic Courtès
2016-12-07 11:17     ` Chris Marusich
2016-12-07 14:09     ` Jan Nieuwenhuizen
2016-12-07 21:39       ` Ludovic Courtès
2016-08-18  6:08 ` [PATCH 11/12] gnu: readline: support mingw Jan Nieuwenhuizen
2016-08-18  6:08 ` [PATCH 12/12] gnu: guile-2.0: " Jan Nieuwenhuizen

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=20160818060851.2853-11-janneke@gnu.org \
    --to=janneke@gnu.org \
    --cc=guix-devel@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).