From 4203865325c33d752f814850f43d2ecb16c8fa16 Mon Sep 17 00:00:00 2001 From: Sam Thursfield Date: Fri, 27 Oct 2017 13:49:38 +0000 Subject: Replace use of architecture conditionals with generic project conditions The initial implementation of architecture conditionals has been removed, as the same behaviours can be implemented using the more generic mechanism for conditionals that is being introduced for BuildStream 1.0. We now have two architecture options: build_arch and arch. They are documented in project.conf. The first one controls the build sandbox while the second controls the host and target of the binaries we produce. --- project.conf | 112 +++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 67 insertions(+), 45 deletions(-) (limited to 'project.conf') diff --git a/project.conf b/project.conf index bbccf5e6..6200daa1 100644 --- a/project.conf +++ b/project.conf @@ -8,9 +8,75 @@ aliases: # All the elements go here element-path: ./elements +# We list a lot of architectures here and Baserock has supported each of these +# at some point in the past, however for the list of *currently* supported +# architectures look in `elements/gnu-toolchain/base.bst`. + +options: + build_arch: + description: | + Specifies architecture of the build sandbox. + + This defaults to $(uname -a). On platforms where the Baserock architecture + name doesn't match the Linux architecture name, you need to manually + specify the Baserock architecture name. + + You can also use this to build for a different architecture provided your + host can execute binaries for that architecture. For example, you could + run an x86_32 build on an x86_64 machine by setting `build_arch=x86_32` + and `arch=x86_32`. + type: arch + variable: build_arch + values: [ + armv5l, armv7b, armv7l, armv7lhf, armv8l64, armv8b64, mips64b, mips64l, + mips32b, mips32l, ppc64b, ppc64l, x86_32, x86_64 + ] + + arch: + description: | + Specifies host and target architecture for output binaries. + + Usually this should match build_arch. If it differs, a cross compile + will happen up to the gnu-toolchain/stage2.bst stack. Beyond this, + cross compilation isn't supported. + + For instructions on how to bootstrap a new architecture, see: + http://wiki.baserock.org/guides/how-to-cross-bootstrap/ + type: arch + variable: arch + values: [ + armv5l, armv7b, armv7l, armv7lhf, armv8l64, armv8b64, mips64b, mips64l, + mips32b, mips32l, ppc64b, ppc64l, x86_32, x86_64 + ] + variables: - cpu: "%{bst-target-arch}" + cpu: "%{arch}" abi: gnu + + (?): + - arch == "x86_32": + cpu: i686 + - arch in ["armv5l", "armv7b", "armv7l", "armv7lhf"]: + cpu: "%{arch}" + abi: gnueabi + - arch == "armv8l64": + cpu: aarch64 + - arch == "armv8b64": + cpu: aarch64_be + - arch == "mips64b": + cpu: mips64 + abi: gnuabi64 + - arch == "mips64l": + cpu: mips64el + - arch == "mips32b": + cpu: mips + - arch == "mips32l": + cpu: mipsel + - arch == "ppc64b": + cpu: powerpc64 + - arch == "ppc64l": + cpu: powerpc64le + target-stage1: "%{cpu}-bootstrap-linux-%{abi}" target: "%{cpu}-baserock-linux-%{abi}" @@ -63,50 +129,6 @@ variables: artifacts: pull-url: https://ostree.baserock.org/cache/ -# Resolve the cpu and ABI portions of the host triple based -# on architecture names. -arches: - x86_32: - variables: - cpu: i686 - armv5l: - variables: - abi: gnueabi - armv7b: - variables: - abi: gnueabi - armv7l: - variables: - abi: gnueabi - armv7lhf: - variables: - abi: gnueabi - armv8l64: - variables: - cpu: aarch64 - armv8b64: - variables: - cpu: aarch64_be - mips64b: - variables: - cpu: mips64 - abi: gnuabi64 - mips64l: - variables: - cpu: mips64el - mips32b: - variables: - cpu: mips - mips32l: - variables: - cpu: mipsel - ppc64b: - variables: - cpu: powerpc64 - ppc64l: - variables: - cpu: powerpc64le - split-rules: locale: (>): -- cgit v1.2.1