On Mon, Mar 18, 2019 at 11:21:53AM -0400, Mark Asselstine wrote: > 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 > --- > > V2 > * Cover all ARMv7 Cortex* variants > > V3 > * Switch to using MACHINEOVERRIDES/overrides mechanism > > meta/classes/goarch.bbclass | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/meta/classes/goarch.bbclass b/meta/classes/goarch.bbclass > index 39fea5e..8fdb443 100644 > --- a/meta/classes/goarch.bbclass > +++ b/meta/classes/goarch.bbclass > @@ -3,18 +3,26 @@ 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.getVar('TUNE_FEATURES'), d)}" > +HOST_GOARM = "${@go_map_arm(d.getVar('HOST_ARCH'), d.getVar('BASE_GOARM'), 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_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.getVar('TUNE_FEATURES'), d)}" > +TARGET_GOARM = "${@go_map_arm(d.getVar('TARGET_ARCH'), d.getVar('BASE_GOARM'), 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_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 = "" > @@ -74,12 +82,7 @@ def go_map_arch(a, d): > def go_map_arm(a, f, d): > import re > if re.match('arm.*', a): > - if 'armv7' in f: > - return '7' > - elif 'armv6' in f: > - return '6' > - elif 'armv5' in f: > - return '5' > + return f > return '' Is this function still useful? Cannot you set TARGET_GOARM and HOST_GOARM with arm override (to simulate the effect of "re.match('arm.*', a)")? Regards, > > def go_map_386(a, f, d): > -- > 2.7.4 > > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- Martin 'JaMa' Jansa jabber: Martin.Jansa@gmail.com