summaryrefslogtreecommitdiff
path: root/Makefile.am
diff options
context:
space:
mode:
authorMaxime Devos <maximedevos@telenet.be>2021-07-14 13:13:07 +0200
committerMathieu Othacehe <othacehe@gnu.org>2021-07-14 15:57:40 +0200
commit8456581375cf03c46005d00907f8fdd1f5615f1e (patch)
tree00efd4d2d403faab13e36a6ff4b6746c774b38f1 /Makefile.am
parent731b714e92920039fa63b8229d90c1816ec3910c (diff)
downloadguix-patches-8456581375cf03c46005d00907f8fdd1f5615f1e.tar
guix-patches-8456581375cf03c46005d00907f8fdd1f5615f1e.tar.gz
build-system/meson: Support cross-compilation.
For cross-compilation, meson needs to be passed a ‘cross file’ with information on the architecture, CPU type, endianness and operating system, and the name of the cross-compiler binaries. The new module (guix build meson-configuration) has some utilities for writing these cross files, used by 'make-cross-file' in a G-exp. The values for the cross file are generated by 'make-machine-alist' and 'make-binaries-alist'. 'make-machine-alist' and 'make-binaries-alist' live on the host side, such that new architectures and operating systems can be added without causing rebuilds for old architectures. All operating systems and targets supported by Guix are theoretically supported, but only aarch64-linux-gnu, powerpc64le-linux-gnu and arm-linux-gnueabihf have been tested. i686-linux-gnu has also been tested with a previous version of this patch series but required some changes to 'cross-base.scm'. This has been tested with: $ ./pre-inst-env guix build glib --target=TARGET * guix/build/meson-configuration.scm (write-section-header): New procedure. (write-assignment): New procedure. (write-assignments): New procedure. * guix/build-system/meson.scm (target-hurd?): New predicate. (make-machine-alist): New procedure. (make-binaries-alist): New procedure. (make-cross-file): New procedure. (meson-cross-build): New procedure. (lower)[build-inputs]: Add standard cross packages when cross-compiling. Do not include regular 'inputs' when cross-compiling. (lower)[host-inputs]: Include 'inputs' when cross-compiling. (lower)[target-inputs]: Add cross packages when cross-compiling. (lower)[build]: Call 'meson-cross-build' instead of 'cross-build' when cross-compiling. (lower)[target]: Set it. (lower)[private-keywords]: Do not remove #:target when cross-compiling. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
Diffstat (limited to 'Makefile.am')
-rw-r--r--Makefile.am1
1 files changed, 1 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index 7d5f6a7fa2..8f44c888e3 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -234,6 +234,7 @@ MODULES = \
guix/build/emacs-utils.scm \
guix/build/java-utils.scm \
guix/build/lisp-utils.scm \
+ guix/build/meson-configuration.scm \
guix/build/maven/java.scm \
guix/build/maven/plugin.scm \
guix/build/maven/pom.scm \