summaryrefslogtreecommitdiffstats
path: root/meta/classes/goarch.bbclass
AgeCommit message (Collapse)Author
2021-08-20Allow global override of golang GO_DYNLINKOliver Kranz
Small golang applications create massive memory overhead if go-runtime is deployed. So it is helpfull to be able to disable the GO_DYNLINK option on a per distro/local.conf basis by making it a ?= instead of =. Signed-off-by: Oliver Kranz <o.kranz.88@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-07-30Convert to new override syntaxRichard Purdie
This is the result of automated script conversion: scripts/contrib/convert-overrides.py <oe-core directory> converting the metadata to use ":" as the override character instead of "_". Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-02-26goarch: Use softfloat instead of 387 for 386 goarchKhem Raj
387 has been removed from go 1.16 see [1] [1] https://github.com/golang/go/issues/40255 Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-02-23goarch.bbclass: Fix ppc64le detectionKhem Raj
ppc64le should go above ppc64 in checks otherwise it gets subsumed wrongly with ppc64 check Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2020-01-21goarch.bbclass: Disable dynamic linking on PPC64 LEKhem Raj
Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-12-30goarch: Dont use -fno-PIE on mipsKhem Raj
This was added with 98b24e9268 goarch.bbclass: set SECURITY_CFLAGS for mips64 to overcome a problem that was inherent in go linker which has been now fixed in golang compiler upstream https://github.com/golang/go/issues/20243 https://github.com/golang/go/commit/39c07ce9e5311c94880789f19f2f8b49bf1b5241 Signed-off-by: Khem Raj <raj.khem@gmail.com> Cc: Kai Kang <kai.kang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-12-15goarch: Remove target specific dependenciesKhem Raj
goarch is used in all classes of recipes ranging from native to target, therefore its best to contain the variables and not spill over into recipe classes where they can adversely affect shared state reuse e.g. go-native currently gets TUNE_FEATURES into dependency chain of referenced variables which means go-native gets rebuilt when we change from qemuarm to qemux86 machine types since TUNE_FEATURES is defined with DEFAULTTUNE which would change as machines are switched These variables are specific to arm/mips/x86 so marking them with appropriate overrides for native recipes will be right thing here Chose 'hardfloat' for mips which is default too, 7 for arm and sse2 for x86 somehow go-native bootstrap compiler (1.4) still needs them so feed commonly used values or defaults. Fixes ERROR: go-native different signature for task do_configure.sigdata between qemux86copy and qemuarm ... List of dependencies for variable TUNE_FEATURES changed from '{'DEFAULTTUNE', 'TUNE_FEATURES_tune-core2-32'}' to '{'DEFAULTTUNE', 'TUNE_FEATURES_tune-armv7vethf-neon'}' changed items: {'TUNE_FEATURES_tune-core2-32', 'TUNE_FEATURES_tune-armv7vethf-neon'} Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-04-12goarch.bbclass: Simplify logicRichard Purdie
Further simplification of the go_map_arm() function. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-04-10goarch.bbclass: use MACHINEOVERRIDES and simplify go_map_arm()Mark Asselstine
Per https://github.com/golang/go/wiki/GoArm we need to set GOARM when cross building for ARMv5, ARMv6 and ARMv7. The current approach of using TUNE_FEATURES can be error prone, as we can see today when attempting to build for Cortex-A7 which results in GOARM=''. Since the value of MACHINEOVERRIDES already consolidates the values of TUNE_FEATURES into something more consistent we can use the overrides mechanism to set GOARM, leaving just a little bit of logic in go_map_arm() to trigger off the arch (basically target vs host) for the setting of GOARM. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-03-21goarch: Add riscv64Alistair Francis
Although RISC-V 64-bit doesn't have official golang support there are forks that now exist with at least some support and work is ongoing in the upstream tree. In order to be able to use the goarch class add support for RISC-V. For more details see here: https://github.com/golang/go/issues/27532 Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2019-01-14goarch.bbclass: Set CCACHE_DISABLERobert Yang
Go can't be built with ccache. Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
2018-07-18recipes: Enforce ARM ISA just for arm arches <= armv5Khem Raj
armv7+ used thumb2 ISA and it compiles fine with thumb2 issues are only when using thumb1 ISA Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-06-15goarch.bbclass: set SECURITY_CFLAGS for mips64Kai Kang
When include conf/distro/include/security_flags.inc, NOPIE flags are still required for mips64 target builds. Otherwise it fails to build packages such as glide which inherit go.bbclass: | .../tmp-glibc/work/mips64-wrs-linux/glide/0.13.1-r0/recipe-sysroot-native/usr/bin/mips64-wrs-linux/../../libexec/mips64-wrs-linux/ | gcc/mips64-wrs-linux/7.3.0/ld: .../tmp-glibc/work/mips64-wrs-linux/glide/0.13.1-r0/go-tmp/go-link-518447869/go.o: | relocation r_mips_26 against `a local symbol' can not be used when making a shared object; recompile with -fPIC` Use override 'mipsarch' to set SECURITY_CFLAGS for both mips and mips64. Signed-off-by: Kai Kang <kai.kang@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-03-06go.bbclass, goarch.bbclass: update SECURITY_CFLAGSMatt Madison
With go1.10 the NOPIE flags are only required for MIPS target builds, and are now incompatible for the other architectures. Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Ross Burton <ross.burton@intel.com>
2018-03-06goarch.bbclass: disable shared runtime for nativesdk buildsMatt Madison
While useful on embedded devices for saving disk space, use of shared runtime in Go is not the usual practice, so disable it for nativesdk builds. We don't use it for native builds, either, so this makes the SDK match the native environment more closely. Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Ross Burton <ross.burton@intel.com>
2018-03-06go: set GOMIPS envrionment variableMatt Madison
Go 1.10 adds support for selecting hard/soft float object code through the GOMIPS environment variable. Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Ross Burton <ross.burton@intel.com>
2018-01-25classes/recipes: Convert SkipPackage -> SkipRecipeRichard Purdie
The new name is much more consistent with what this actually means. We put the pieces in place to rename everything a while back but looks like we forgot to actually do it! Fix that now. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-11-05goarch: There is no GOARCH defined for mips64-n32Joe Slater
Defeat building for mipsarchn32 because there is no corresponding GOARCH. Neither "mips" nor "mips64" allows go-runtime to compile. Existing mips32 code assumes the o32 ABI. Signed-off-by: Joe Slater <jslater@windriver.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2017-10-16goarch.bbclass: Define HOST_GO386 and TARGET_GO386Paul Barker
These variables are used to control the floating-point instructions emitted by the go compiler for x86 architectures. The default is '387' which disables the use of sse/sse2 instructions and is safe to use on all x86 processors from the i486 onwards. If TUNE_FEATURES contains a feature set which is known to support sse/sse2 instructions then they are set to 'sse2' to enable the use of these instructions. This is suitable for most processors from Pentium 4 onwards. Only the 'core2' and 'corei7' TUNE_FEATURES are defined in the oe-core layer and are known to support ss2 instructions. Other layers may introduce additional tunings which support sse2 instructions and for these layers, TARGET_GO386 or go_map_386 should be overridden as needed. Signed-off-by: Paul Barker <pbarker@toganlabs.com> Signed-off-by: Ross Burton <ross.burton@intel.com>
2017-10-06goarch.bbclass: rework mips architecture checksMatt Madison
Remove the TUNE_FEATURES references from go_map_arch, to avoid an unwanted variable dependency. Direct comparisons of the architecture name are sufficient for covering what Go currently supports, and using TUNE_CCARGS_remove adequately handles the conflict with the cgo-supplied flags for mips. Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Ross Burton <ross.burton@intel.com>
2017-09-25goarch.bbclass: fixups for Go mips32 supportMatt Madison
* Fix the regular expression in the mips test * Flag as incompatible any mips32 tunes for n32 ABI or soft-float, as go does not support them. * Replace mips32r2 tune with mips32r1. Go only supports mips32r1, which is a strict subset of r2. Adjusting this tune is not ideal, but is hopefully a temporary measure until more complete mips32 ISA coverage arrives upstream. [YOCTO #12108] Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-13goarch.bbclass: set ARM_INSTRUCTION_SET to "arm"Matt Madison
Go does not play well with thumb, so ensure that the toolchain and any packages use arm, not thumb, instructions. Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-13goarch.bbclass: identify archs with Go dynamic linking supportMatt Madison
Go only supports shared libraries for some architectures, so add a variable for use elsewhere that gets a non-null value only for those architectures. Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11goarch.bbclass: Add support for ARMv5Otavio Salvador
This adds support to return the proper ARMv5 format. This change is based on the meta-golang[1] layer. Thanks to Matt Madison <matt@madison.systems> for his work on this. 1. https://github.com/madisongh/meta-golang Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11goarch.bbclass: Replace logic for setting GOARMWill Newton
The previous logic applied a regex to TUNE_FEATURES which could set the GOARM value to 7 incorrectly, for example when dealing with an arm1176 core. Simplify to check for the presence of "armv7" instead. At the same time add a check for "armv6" and set GOARM to 6 in that case. Signed-off-by: Will Newton <willn@resin.io> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11goarch.bbclass: Stop passing True as second argument of d.getVarOtavio Salvador
The d.getVar has the second argument as True by default, avoid passing it here. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-18goarch: Disable build for muslx32sweeaun
Disable build for muslx32. Signed-off-by: sweeaun <swee.aun.khor@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27go: centralize definition of COMPATIBLE_HOSTJoe Slater
Put it in goarch.bbclass which all go related recipes inherit. Signed-off-by: Joe Slater <jslater@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-03-10go: Add recipes for golang compilers and toolsKhem Raj
* This is converging the recipes for go from meta-virtualization and oe-meta-go * Add recipes for go 1.7 * go.bbclass is added to ease out writing recipes for go packages * go-examples: Add an example, helloworld written in go This should serve as temlate for writing go recipes * Disable for musl, at least for now * Disable for x32/ppc32 which is not supported Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>