mirror of
git://git.yoctoproject.org/poky.git
synced 2025-08-22 00:42:05 +02:00

Other spaces uses the Go architecture definitions as their own (for example, container arches are defined to be Go arches). To make it easier for other places to use this mapping, move the code that does the translation of OpenEmbedded arches to Go arches to a library. (From oe-core rev: 3e86f72fc2e1cc2e5ea4b4499722d736941167ce) This commit together with meta-virtualization commit 115f6367f37095415f289fb6981cda9608ac72ff broke meta-virtualization master used with meta-lts-mixins kirkstone/go which is our primary usecase for having kirkstone/go mixin layer Manually crafted since cherry-pick had too many conflicts: * different path to classes * additional architecture loongarch64 * different way how to import library (From OE-Core rev: 8726ae02d760270f9e7fe7ef5715d8f7553371ce) Signed-off-by: Peter Marko <peter.marko@siemens.com> Cc: Joshua Watt <JPEWhacker@gmail.com> Cc: Bruce Ashfield <bruce.ashfield@gmail.com> Cc: Jose Quaresma <jose.quaresma@foundries.io> Signed-off-by: Steve Sakoman <steve@sakoman.com>
96 lines
3.1 KiB
Plaintext
96 lines
3.1 KiB
Plaintext
BUILD_GOOS = "${@go_map_os(d.getVar('BUILD_OS'), d)}"
|
|
BUILD_GOARCH = "${@go_map_arch(d.getVar('BUILD_ARCH'), d)}"
|
|
BUILD_GOTUPLE = "${BUILD_GOOS}_${BUILD_GOARCH}"
|
|
HOST_GOOS = "${@go_map_os(d.getVar('HOST_OS'), d)}"
|
|
HOST_GOARCH = "${@go_map_arch(d.getVar('HOST_ARCH'), d)}"
|
|
HOST_GOARM = "${@go_map_arm(d.getVar('HOST_ARCH'), d)}"
|
|
HOST_GO386 = "${@go_map_386(d.getVar('HOST_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
|
|
HOST_GOMIPS = "${@go_map_mips(d.getVar('HOST_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
|
|
HOST_GOARM:class-native = "7"
|
|
HOST_GO386:class-native = "sse2"
|
|
HOST_GOMIPS:class-native = "hardfloat"
|
|
HOST_GOTUPLE = "${HOST_GOOS}_${HOST_GOARCH}"
|
|
TARGET_GOOS = "${@go_map_os(d.getVar('TARGET_OS'), d)}"
|
|
TARGET_GOARCH = "${@go_map_arch(d.getVar('TARGET_ARCH'), d)}"
|
|
TARGET_GOARM = "${@go_map_arm(d.getVar('TARGET_ARCH'), d)}"
|
|
TARGET_GO386 = "${@go_map_386(d.getVar('TARGET_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
|
|
TARGET_GOMIPS = "${@go_map_mips(d.getVar('TARGET_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
|
|
TARGET_GOARM:class-native = "7"
|
|
TARGET_GO386:class-native = "sse2"
|
|
TARGET_GOMIPS:class-native = "hardfloat"
|
|
TARGET_GOTUPLE = "${TARGET_GOOS}_${TARGET_GOARCH}"
|
|
GO_BUILD_BINDIR = "${@['bin/${HOST_GOTUPLE}','bin'][d.getVar('BUILD_GOTUPLE') == d.getVar('HOST_GOTUPLE')]}"
|
|
|
|
# Use the MACHINEOVERRIDES to map ARM CPU architecture passed to GO via GOARM.
|
|
# This is combined with *_ARCH to set HOST_GOARM and TARGET_GOARM.
|
|
BASE_GOARM = ''
|
|
BASE_GOARM:armv7ve = '7'
|
|
BASE_GOARM:armv7a = '7'
|
|
BASE_GOARM:armv6 = '6'
|
|
BASE_GOARM:armv5 = '5'
|
|
|
|
# Go supports dynamic linking on a limited set of architectures.
|
|
# See the supportsDynlink function in go/src/cmd/compile/internal/gc/main.go
|
|
GO_DYNLINK = ""
|
|
GO_DYNLINK:arm ?= "1"
|
|
GO_DYNLINK:aarch64 ?= "1"
|
|
GO_DYNLINK:x86 ?= "1"
|
|
GO_DYNLINK:x86-64 ?= "1"
|
|
GO_DYNLINK:powerpc64 ?= "1"
|
|
GO_DYNLINK:powerpc64le ?= "1"
|
|
GO_DYNLINK:class-native ?= ""
|
|
GO_DYNLINK:class-nativesdk = ""
|
|
|
|
# define here because everybody inherits this class
|
|
#
|
|
COMPATIBLE_HOST:linux-gnux32 = "null"
|
|
COMPATIBLE_HOST:linux-muslx32 = "null"
|
|
COMPATIBLE_HOST:powerpc = "null"
|
|
COMPATIBLE_HOST:powerpc64 = "null"
|
|
COMPATIBLE_HOST:mipsarchn32 = "null"
|
|
|
|
ARM_INSTRUCTION_SET:armv4 = "arm"
|
|
ARM_INSTRUCTION_SET:armv5 = "arm"
|
|
ARM_INSTRUCTION_SET:armv6 = "arm"
|
|
|
|
TUNE_CCARGS:remove = "-march=mips32r2"
|
|
SECURITY_NOPIE_CFLAGS ??= ""
|
|
|
|
# go can't be built with ccache:
|
|
# gcc: fatal error: no input files
|
|
CCACHE_DISABLE ?= "1"
|
|
|
|
def go_map_arch(a, d):
|
|
arch = oe.go.map_arch(a)
|
|
if not arch:
|
|
raise bb.parse.SkipRecipe("Unsupported CPU architecture: %s" % a)
|
|
return arch
|
|
|
|
def go_map_arm(a, d):
|
|
if a.startswith("arm"):
|
|
return d.getVar('BASE_GOARM')
|
|
return ''
|
|
|
|
def go_map_386(a, f, d):
|
|
import re
|
|
if re.match('i.86', a):
|
|
if ('core2' in f) or ('corei7' in f):
|
|
return 'sse2'
|
|
else:
|
|
return 'softfloat'
|
|
return ''
|
|
|
|
def go_map_mips(a, f, d):
|
|
import re
|
|
if a == 'mips' or a == 'mipsel':
|
|
if 'fpu-hard' in f:
|
|
return 'hardfloat'
|
|
else:
|
|
return 'softfloat'
|
|
return ''
|
|
|
|
def go_map_os(o, d):
|
|
if o.startswith('linux'):
|
|
return 'linux'
|
|
return o
|