From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: Re: [PATCH 08/11] gnu: cross-base: Add cross-libtool. Date: Tue, 09 Aug 2016 11:08:04 +0300 Message-ID: <87invacql7.fsf@gmail.com> References: <20160809064139.27872-1-janneke@gnu.org> <20160809064139.27872-9-janneke@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55063) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bX255-0002fl-7K for guix-devel@gnu.org; Tue, 09 Aug 2016 04:08:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bX250-0001tX-0S for guix-devel@gnu.org; Tue, 09 Aug 2016 04:08:11 -0400 In-Reply-To: <20160809064139.27872-9-janneke@gnu.org> (Jan Nieuwenhuizen's message of "Tue, 9 Aug 2016 08:41:36 +0200") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Jan Nieuwenhuizen Cc: guix-devel@gnu.org Jan Nieuwenhuizen (2016-08-09 09:41 +0300) wrote: > * gnu/packages/cross-base.scm (cross-libtool): New function. > --- > gnu/packages/cross-base.scm | 52 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 52 insertions(+) > > > diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm > index 294de40..f6c30ec 100644 > --- a/gnu/packages/cross-base.scm > +++ b/gnu/packages/cross-base.scm > @@ -21,6 +21,7 @@ > (define-module (gnu packages cross-base) > #:use-module (gnu packages) > #:use-module (gnu packages base) > + #:use-module (gnu packages autotools) > #:use-module (gnu packages gcc) > #:use-module (gnu packages commencement) > #:use-module (gnu packages linux) > @@ -35,6 +36,7 @@ > #:use-module (ice-9 match) > #:export (cross-binutils > cross-libc > + cross-libtool > cross-gcc > cross-newlib?)) > > @@ -477,6 +479,56 @@ XBINUTILS and the cross tool chain." > ,@(package-inputs glibc) ;FIXME: static-bash > ,@(package-native-inputs glibc)))))))) > > +(define* (cross-libtool target > + #:optional > + (xgcc (cross-gcc target > + (cross-binutils target) > + (cross-libc target))) > + (xbinutils (cross-binutils target)) > + (xlibc (cross-libc target))) > + (package > + (inherit libtool) > + (name (string-append "cross-libtool-" target)) > + (inputs `(("xlibc" ,xlibc))) > + (native-inputs `(("xgcc" ,xgcc) > + ("xbinutils" ,xbinutils) > + ("xlibc" ,xlibc) > + ,@(package-native-inputs libtool))) > + (arguments > + `(;; Libltdl is provided as a separate package, so don't install it here. > + #:configure-flags > + `("--disable-ltdl-install" > + ;; The libtool script uses `host' rather than `target' to decide > + ;; whether to use -lc, for example. > + ,(string-append "--host=" ,target) > + ,(string-append "--target=" ,target) > + ,(string-append "--program-prefix=" ,target "-") > + ,(string-append "CC=" ,target "-gcc")) > + #:tests? #f > + #:phases (modify-phases %standard-phases > + ;; As we are setup as a cross package, PATHs get setup > + ;; without the CROSS_ prefix. Change that here. > + (add-before 'configure 'setenv > + (lambda* (#:key inputs native-inputs #:allow-other-keys) It looks like 'native-inputs' is not needed, as it is not used further. > + (let ((xgcc (assoc-ref inputs "xgcc"))) > + (setenv "CPP" (string-append xgcc "/bin/" > + ,target "-cpp")) > + (setenv "CXXCPP" (string-append xgcc "/bin/" > + ,target "-cpp"))) Since the values are the same, what about: (let* ((xgcc (assoc-ref inputs "xgcc")) (xgcc-bin (string-append xgcc "/bin/" ,target "-cpp"))) (setenv "CPP" xgcc-bin) (setenv "CXXCPP" xgcc-bin)) > + (for-each (lambda (var) > + (and=> (getenv var) > + (lambda (value) > + (let ((cross > + (string-append "CROSS_" var))) > + (setenv cross value)) > + (unsetenv var)))) > + '("C_INCLUDE_PATH" > + "CPLUS_INCLUDE_PATH" > + "OBJC_INCLUDE_PATH" > + "OBJCPLUS_INCLUDE_PATH" > + "LIBRARY_PATH")) I have already seen this list of environment variables in an earlier patch. Perhaps it would be reasonable to make some global variable with this list and to put it in (guix build utils) or another appropriate place, WDYT? > + #t))))))) > + > (define (native-libc target) > (if (mingw-target? target) > mingw-w64 -- Alex