summaryrefslogtreecommitdiff
path: root/gnu/packages/tls.scm
diff options
context:
space:
mode:
authorMathieu Othacehe <m.othacehe@gmail.com>2019-07-02 11:42:12 +0200
committerMathieu Othacehe <m.othacehe@gmail.com>2019-11-15 17:32:24 +0100
commitbdcdd55000c61f46649164fe43289f33c6132417 (patch)
treea9a092121a907a173c197af8ffba0333bbfaf598 /gnu/packages/tls.scm
parent2387e2f2d1839b79f13ddd832f9a008bb220eed6 (diff)
downloadguix-patches-bdcdd55000c61f46649164fe43289f33c6132417.tar
guix-patches-bdcdd55000c61f46649164fe43289f33c6132417.tar.gz
gnu: openssl: Fix cross-compilation.
* gnu/packages/tls.scm (openssl-next)[arguments]: Pass CROSS_COMPILE environment variable and target system to configure script.
Diffstat (limited to 'gnu/packages/tls.scm')
-rw-r--r--gnu/packages/tls.scm62
1 files changed, 45 insertions, 17 deletions
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index 2def6ee703..b93b4ef6e6 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -297,6 +298,23 @@ required structures.")
#:disallowed-references ,(list (canonical-package perl))
#:phases
(modify-phases %standard-phases
+ ,@(if (%current-target-system)
+ '((add-before
+ 'configure 'set-cross-compile
+ (lambda* (#:key target outputs #:allow-other-keys)
+ (setenv "CROSS_COMPILE" (string-append target "-"))
+ (setenv "CONFIGURE_TARGET_ARCH"
+ (cond
+ ((string-prefix? "i686" target)
+ "linux-x86")
+ ((string-prefix? "x86_64" target)
+ "linux-x86_64")
+ ((string-prefix? "arm" target)
+ "linux-armv4")
+ ((string-prefix? "aarch64" target)
+ "linux-aarch64")))
+ #t)))
+ '())
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@@ -306,7 +324,9 @@ required structures.")
(("/usr/bin/env")
(string-append (assoc-ref %build-inputs "coreutils")
"/bin/env")))
- (invoke "./config"
+ (invoke ,@(if (%current-target-system)
+ '("./Configure")
+ '("./config"))
"shared" ;build shared libraries
"--libdir=lib"
@@ -317,7 +337,10 @@ required structures.")
"/share/openssl-" ,version)
(string-append "--prefix=" out)
- (string-append "-Wl,-rpath," lib)))))
+ (string-append "-Wl,-rpath," lib)
+ ,@(if (%current-target-system)
+ '((getenv "CONFIGURE_TARGET_ARCH"))
+ '())))))
(add-after 'install 'move-static-libraries
(lambda* (#:key outputs #:allow-other-keys)
;; Move static libraries to the "static" output.
@@ -432,21 +455,26 @@ required structures.")
(("^MANDIR[[:blank:]]*=.*$")
(string-append "MANDIR = " out "/share/man\n")))
#t)))
- (replace 'configure
- ;; Override this phase because OpenSSL 1.0 does not understand -rpath.
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (invoke "./config"
- "shared" ;build shared libraries
- "--libdir=lib"
-
- ;; The default for this catch-all directory is
- ;; PREFIX/ssl. Change that to something more
- ;; conventional.
- (string-append "--openssldir=" out
- "/share/openssl-" ,version)
-
- (string-append "--prefix=" out)))))
+ (replace 'configure
+ ;; Override this phase because OpenSSL 1.0 does not understand -rpath.
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (invoke ,@(if (%current-target-system)
+ '("./Configure")
+ '("./config"))
+ "shared" ;build shared libraries
+ "--libdir=lib"
+
+ ;; The default for this catch-all directory is
+ ;; PREFIX/ssl. Change that to something more
+ ;; conventional.
+ (string-append "--openssldir=" out
+ "/share/openssl-" ,version)
+
+ (string-append "--prefix=" out)
+ ,@(if (%current-target-system)
+ '((getenv "CONFIGURE_TARGET_ARCH"))
+ '())))))
(delete 'move-extra-documentation)
(add-after 'install 'move-man3-pages
(lambda* (#:key outputs #:allow-other-keys)