golang: Set/reset default platform options for target Go compiler
authorJeffery To <jeffery.to@gmail.com>
Thu, 14 May 2020 09:45:18 +0000 (17:45 +0800)
committerJeffery To <jeffery.to@gmail.com>
Sat, 16 May 2020 19:30:36 +0000 (03:30 +0800)
Because the first stage for building target Go is actually a host build,
the default platform options (GO386, GOARM, etc.) are detected from the
host. These values are written to a source file and kept when building
the second stage.

This modifies this source file to set the appropriate values for the
target platform, and reset values for other platforms to their
cross-compiling / most compatible defaults.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
(cherry picked from commit da3fb97b9cef4f705dda4b190f99536f27d0955d)

lang/golang/golang/Makefile

index c242c1cc8f4166a051546d9bc2cf91becce3a372..5e26461f59b8df170c25ece97e2e2e7875e48c84 100644 (file)
@@ -148,6 +148,13 @@ This package provides the Go programming language source files needed
 for cross-compilation.
 endef
 
+PKG_GO_ZBOOTSTRAP_MODS:= \
+       s/defaultGO386 = `[^`]*`/defaultGO386 = `$(if $(GO_386),$(GO_386),387)`/; \
+       s/defaultGOARM = `[^`]*`/defaultGOARM = `$(if $(GO_ARM),$(GO_ARM),5)`/; \
+       s/defaultGOMIPS = `[^`]*`/defaultGOMIPS = `$(if $(GO_MIPS),$(GO_MIPS),hardfloat)`/; \
+       s/defaultGOMIPS64 = `[^`]*`/defaultGOMIPS64 = `$(if $(GO_MIPS64),$(GO_MIPS64),hardfloat)`/; \
+       s/defaultGOPPC64 = `[^`]*`/defaultGOPPC64 = `power8`/;
+
 define Download/golang-bootstrap
   FILE:=$(BOOTSTRAP_SOURCE)
   URL:=$(BOOTSTRAP_SOURCE_URL)
@@ -233,6 +240,11 @@ define Build/Compile
                PATH=$(HOST_GO_ROOT)/openwrt:$$$$PATH \
        )
 
+  ifneq ($(PKG_GO_ZBOOTSTRAP_MODS),)
+       $(SED) '$(PKG_GO_ZBOOTSTRAP_MODS)' \
+               $(PKG_BUILD_DIR)/src/cmd/internal/objabi/zbootstrap.go
+  endif
+
        @echo "Building target Go second stage"
 
        ( \