mirror of
https://github.com/coolsnowwolf/packages.git
synced 2025-05-01 05:40:45 +08:00
golang: bump to v1.14
This commit is contained in:
parent
1b1d0b83e4
commit
066cb56911
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2018 Jeffery To
|
||||
# Copyright (C) 2018, 2020 Jeffery To
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
@ -51,6 +51,7 @@ endef
|
||||
# $(2) destination prefix
|
||||
# $(3) go version id
|
||||
# $(4) GOOS_GOARCH
|
||||
# $(5) install suffix (optional)
|
||||
define GoCompiler/Default/Install/Bin
|
||||
$(call GoCompiler/Default/Install/make-dirs,$(2),$(3))
|
||||
|
||||
@ -58,7 +59,7 @@ define GoCompiler/Default/Install/Bin
|
||||
|
||||
$(INSTALL_DATA) -p $(1)/VERSION $(2)/lib/go-$(3)/
|
||||
|
||||
for file in AUTHORS CONTRIBUTING.md CONTRIBUTORS LICENSE PATENTS README README.md; do \
|
||||
for file in AUTHORS CONTRIBUTING.md CONTRIBUTORS LICENSE PATENTS README.md SECURITY.md; do \
|
||||
if [ -f $(1)/$$$$file ]; then \
|
||||
$(INSTALL_DATA) -p $(1)/$$$$file $(2)/share/go-$(3)/ ; \
|
||||
fi ; \
|
||||
@ -73,7 +74,7 @@ define GoCompiler/Default/Install/Bin
|
||||
endif
|
||||
|
||||
$(INSTALL_DIR) $(2)/lib/go-$(3)/pkg
|
||||
$(CP) $(1)/pkg/$(4) $(2)/lib/go-$(3)/pkg/
|
||||
$(CP) $(1)/pkg/$(4)$(if $(5),_$(5)) $(2)/lib/go-$(3)/pkg/
|
||||
|
||||
$(INSTALL_DIR) $(2)/lib/go-$(3)/pkg/tool/$(4)
|
||||
$(INSTALL_BIN) -p $(1)/pkg/tool/$(4)/* $(2)/lib/go-$(3)/pkg/tool/$(4)/
|
||||
@ -141,6 +142,7 @@ endef
|
||||
# $(3) destination prefix
|
||||
# $(4) go version id
|
||||
# $(5) GOOS_GOARCH
|
||||
# $(6) install suffix (optional)
|
||||
define GoCompiler/AddProfile
|
||||
|
||||
# $$(1) valid GOOS_GOARCH combinations
|
||||
@ -155,7 +157,7 @@ define GoCompiler/AddProfile
|
||||
|
||||
# $$(1) override install prefix (optional)
|
||||
define GoCompiler/$(1)/Install/Bin
|
||||
$$(call GoCompiler/Default/Install/Bin,$(2),$$(or $$(1),$(3)),$(4),$(5))
|
||||
$$(call GoCompiler/Default/Install/Bin,$(2),$$(or $$(1),$(3)),$(4),$(5),$(6))
|
||||
endef
|
||||
|
||||
# $$(1) override install prefix (optional)
|
||||
|
@ -107,20 +107,38 @@ include $(GO_INCLUDE_DIR)/golang-values.mk
|
||||
# for building packages, not user code
|
||||
GO_PKG_PATH:=/usr/share/gocode
|
||||
|
||||
GO_PKG_BUILD_PKG?=$(GO_PKG)/...
|
||||
GO_PKG_BUILD_PKG?=$(strip $(GO_PKG))/...
|
||||
|
||||
GO_PKG_WORK_DIR_NAME:=.go_work
|
||||
GO_PKG_WORK_DIR:=$(PKG_BUILD_DIR)/$(GO_PKG_WORK_DIR_NAME)
|
||||
|
||||
GO_PKG_BUILD_DIR:=$(GO_PKG_WORK_DIR)/build
|
||||
GO_PKG_CACHE_DIR:=$(GO_PKG_WORK_DIR)/cache
|
||||
GO_PKG_TMP_DIR:=$(GO_PKG_WORK_DIR)/tmp
|
||||
|
||||
GO_PKG_BUILD_BIN_DIR:=$(GO_PKG_BUILD_DIR)/bin$(if \
|
||||
$(GO_HOST_TARGET_DIFFERENT),/$(GO_OS)_$(GO_ARCH))
|
||||
GO_PKG_BUILD_BIN_DIR:=$(GO_PKG_BUILD_DIR)/bin$(if $(GO_HOST_TARGET_DIFFERENT),/$(GO_OS_ARCH))
|
||||
|
||||
GO_PKG_BUILD_DEPENDS_SRC:=$(STAGING_DIR)$(GO_PKG_PATH)/src
|
||||
|
||||
ifdef CONFIG_PKG_ASLR_PIE_ALL
|
||||
ifeq ($(strip $(PKG_ASLR_PIE)),1)
|
||||
ifeq ($(GO_TARGET_PIE_SUPPORTED),1)
|
||||
GO_PKG_ENABLE_PIE:=1
|
||||
else
|
||||
$(warning PIE buildmode is not supported for $(GO_OS)/$(GO_ARCH))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef CONFIG_PKG_ASLR_PIE_REGULAR
|
||||
ifeq ($(strip $(PKG_ASLR_PIE_REGULAR)),1)
|
||||
ifeq ($(GO_TARGET_PIE_SUPPORTED),1)
|
||||
GO_PKG_ENABLE_PIE:=1
|
||||
else
|
||||
$(warning PIE buildmode is not supported for $(GO_OS)/$(GO_ARCH))
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
# sstrip causes corrupted section header size
|
||||
ifneq ($(CONFIG_USE_SSTRIP),)
|
||||
ifneq ($(CONFIG_DEBUG),)
|
||||
@ -147,7 +165,7 @@ define GoPackage/GoSubMenu
|
||||
CATEGORY:=Languages
|
||||
endef
|
||||
|
||||
define GoPackage/Environment/Default
|
||||
define GoPackage/Environment/Target
|
||||
GOOS=$(GO_OS) \
|
||||
GOARCH=$(GO_ARCH) \
|
||||
GO386=$(GO_386) \
|
||||
@ -155,12 +173,26 @@ define GoPackage/Environment/Default
|
||||
GOMIPS=$(GO_MIPS) \
|
||||
GOMIPS64=$(GO_MIPS64) \
|
||||
CGO_ENABLED=1 \
|
||||
CC=$(TARGET_CC) \
|
||||
CXX=$(TARGET_CXX) \
|
||||
CGO_CFLAGS="$(filter-out $(GO_CFLAGS_TO_REMOVE),$(TARGET_CFLAGS))" \
|
||||
CGO_CPPFLAGS="$(TARGET_CPPFLAGS)" \
|
||||
CGO_CXXFLAGS="$(filter-out $(GO_CFLAGS_TO_REMOVE),$(TARGET_CXXFLAGS))"
|
||||
CGO_CXXFLAGS="$(filter-out $(GO_CFLAGS_TO_REMOVE),$(TARGET_CXXFLAGS))" \
|
||||
CGO_LDFLAGS="$(TARGET_LDFLAGS)"
|
||||
endef
|
||||
|
||||
GoPackage/Environment=$(call GoPackage/Environment/Default,)
|
||||
define GoPackage/Environment/Build
|
||||
GOPATH=$(GO_PKG_BUILD_DIR) \
|
||||
GOCACHE=$(GO_PKG_CACHE_DIR) \
|
||||
GOENV=off
|
||||
endef
|
||||
|
||||
define GoPackage/Environment/Default
|
||||
$(call GoPackage/Environment/Target) \
|
||||
$(call GoPackage/Environment/Build)
|
||||
endef
|
||||
|
||||
GoPackage/Environment=$(call GoPackage/Environment/Default)
|
||||
|
||||
# false if directory does not exist
|
||||
GoPackage/is_dir_not_empty=$$$$($(FIND) $(1) -maxdepth 0 -type d \! -empty 2>/dev/null)
|
||||
@ -170,15 +202,14 @@ GoPackage/has_binaries=$(call GoPackage/is_dir_not_empty,$(GO_PKG_BUILD_BIN_DIR)
|
||||
define GoPackage/Build/Configure
|
||||
( \
|
||||
cd $(PKG_BUILD_DIR) ; \
|
||||
mkdir -p $(GO_PKG_BUILD_DIR)/bin $(GO_PKG_BUILD_DIR)/src \
|
||||
$(GO_PKG_CACHE_DIR) $(GO_PKG_TMP_DIR) ; \
|
||||
mkdir -p $(GO_PKG_BUILD_DIR)/bin $(GO_PKG_BUILD_DIR)/src $(GO_PKG_CACHE_DIR) ; \
|
||||
\
|
||||
files=$$$$($(FIND) ./ \
|
||||
-type d -a \( -path './.git' -o -path './$(GO_PKG_WORK_DIR_NAME)' \) -prune -o \
|
||||
\! -type d -print | \
|
||||
sed 's|^\./||') ; \
|
||||
\
|
||||
if [ "$(GO_PKG_INSTALL_ALL)" != 1 ]; then \
|
||||
if [ "$(strip $(GO_PKG_INSTALL_ALL))" != 1 ]; then \
|
||||
code=$$$$(echo "$$$$files" | grep '\.\(c\|cc\|cpp\|go\|h\|hh\|hpp\|proto\|s\)$$$$') ; \
|
||||
testdata=$$$$(echo "$$$$files" | grep '\(^\|/\)testdata/') ; \
|
||||
gomod=$$$$(echo "$$$$files" | grep '\(^\|/\)go\.\(mod\|sum\)$$$$') ; \
|
||||
@ -193,10 +224,10 @@ define GoPackage/Build/Configure
|
||||
\
|
||||
IFS=$$$$'\n' ; \
|
||||
\
|
||||
echo "Copying files from $(PKG_BUILD_DIR) into $(GO_PKG_BUILD_DIR)/src/$(GO_PKG)" ; \
|
||||
echo "Copying files from $(PKG_BUILD_DIR) into $(GO_PKG_BUILD_DIR)/src/$(strip $(GO_PKG))" ; \
|
||||
for file in $$$$files; do \
|
||||
echo $$$$file ; \
|
||||
dest=$(GO_PKG_BUILD_DIR)/src/$(GO_PKG)/$$$$file ; \
|
||||
dest=$(GO_PKG_BUILD_DIR)/src/$(strip $(GO_PKG))/$$$$file ; \
|
||||
mkdir -p $$$$(dirname $$$$dest) ; \
|
||||
$(CP) $$$$file $$$$dest ; \
|
||||
done ; \
|
||||
@ -217,8 +248,8 @@ define GoPackage/Build/Configure
|
||||
base=$$$$(basename $$$$dir) ; \
|
||||
if [ -d $$$$dest/$$$$base ]; then \
|
||||
case $$$$dir in \
|
||||
*$(GO_PKG_PATH)/src/$(GO_PKG)) \
|
||||
echo "$(GO_PKG) is already installed. Please check for circular dependencies." ;; \
|
||||
*$(GO_PKG_PATH)/src/$(strip $(GO_PKG))) \
|
||||
echo "$(strip $(GO_PKG)) is already installed. Please check for circular dependencies." ;; \
|
||||
*) \
|
||||
link_contents $$$$src/$$$$base $$$$dest/$$$$base ;; \
|
||||
esac ; \
|
||||
@ -229,7 +260,7 @@ define GoPackage/Build/Configure
|
||||
done ; \
|
||||
} ; \
|
||||
\
|
||||
if [ "$(GO_PKG_SOURCE_ONLY)" != 1 ]; then \
|
||||
if [ "$(strip $(GO_PKG_SOURCE_ONLY))" != 1 ]; then \
|
||||
if [ -d $(GO_PKG_BUILD_DEPENDS_SRC) ]; then \
|
||||
echo "Symlinking directories from $(GO_PKG_BUILD_DEPENDS_SRC) into $(GO_PKG_BUILD_DIR)/src" ; \
|
||||
link_contents $(GO_PKG_BUILD_DEPENDS_SRC) $(GO_PKG_BUILD_DIR)/src ; \
|
||||
@ -247,13 +278,7 @@ endef
|
||||
define GoPackage/Build/Compile
|
||||
( \
|
||||
cd $(GO_PKG_BUILD_DIR) ; \
|
||||
export GOPATH=$(GO_PKG_BUILD_DIR) \
|
||||
GOCACHE=$(GO_PKG_CACHE_DIR) \
|
||||
GOTMPDIR=$(GO_PKG_TMP_DIR) \
|
||||
GOROOT_FINAL=$(GO_TARGET_ROOT) \
|
||||
CC=$(TARGET_CC) \
|
||||
CXX=$(TARGET_CXX) \
|
||||
$(call GoPackage/Environment) ; \
|
||||
export $(call GoPackage/Environment) ; \
|
||||
\
|
||||
echo "Finding targets" ; \
|
||||
targets=$$$$(go list $(GO_PKG_BUILD_PKG)) ; \
|
||||
@ -262,13 +287,13 @@ define GoPackage/Build/Compile
|
||||
done ; \
|
||||
echo ; \
|
||||
\
|
||||
if [ "$(GO_PKG_GO_GENERATE)" = 1 ]; then \
|
||||
if [ "$(strip $(GO_PKG_GO_GENERATE))" = 1 ]; then \
|
||||
echo "Calling go generate" ; \
|
||||
go generate -v $(1) $$$$targets ; \
|
||||
echo ; \
|
||||
fi ; \
|
||||
\
|
||||
if [ "$(GO_PKG_SOURCE_ONLY)" != 1 ]; then \
|
||||
if [ "$(strip $(GO_PKG_SOURCE_ONLY))" != 1 ]; then \
|
||||
echo "Building targets" ; \
|
||||
case $(GO_ARCH) in \
|
||||
arm) installsuffix="v$(GO_ARM)" ;; \
|
||||
@ -276,12 +301,13 @@ define GoPackage/Build/Compile
|
||||
mips64|mips64le) installsuffix="$(GO_MIPS64)" ;; \
|
||||
esac ; \
|
||||
ldflags="-linkmode external -extldflags '$(TARGET_LDFLAGS:-z%=-Wl,-z,%)'" ; \
|
||||
pkg_gcflags="$(GO_PKG_GCFLAGS)" ; \
|
||||
pkg_ldflags="$(GO_PKG_LDFLAGS)" ; \
|
||||
pkg_gcflags="$(strip $(GO_PKG_GCFLAGS))" ; \
|
||||
pkg_ldflags="$(strip $(GO_PKG_LDFLAGS))" ; \
|
||||
for def in $(GO_PKG_LDFLAGS_X); do \
|
||||
pkg_ldflags="$$$$pkg_ldflags -X $$$$def" ; \
|
||||
done ; \
|
||||
go install \
|
||||
$(if $(GO_PKG_ENABLE_PIE),-buildmode pie) \
|
||||
$$$${installsuffix:+-installsuffix $$$$installsuffix} \
|
||||
-trimpath \
|
||||
-ldflags "all=$$$$ldflags" \
|
||||
@ -320,7 +346,7 @@ endef
|
||||
define GoPackage/Package/Install/Src
|
||||
dir=$$$$(dirname $(GO_PKG)) ; \
|
||||
$(INSTALL_DIR) $(1)$(GO_PKG_PATH)/src/$$$$dir ; \
|
||||
$(CP) $(GO_PKG_BUILD_DIR)/src/$(GO_PKG) $(1)$(GO_PKG_PATH)/src/$$$$dir/
|
||||
$(CP) $(GO_PKG_BUILD_DIR)/src/$(strip $(GO_PKG)) $(1)$(GO_PKG_PATH)/src/$$$$dir/
|
||||
endef
|
||||
|
||||
define GoPackage/Package/Install
|
||||
@ -329,7 +355,7 @@ define GoPackage/Package/Install
|
||||
endef
|
||||
|
||||
|
||||
ifneq ($(GO_PKG),)
|
||||
ifneq ($(strip $(GO_PKG)),)
|
||||
Build/Configure=$(call GoPackage/Build/Configure)
|
||||
Build/Compile=$(call GoPackage/Build/Compile)
|
||||
Build/InstallDev=$(call GoPackage/Build/InstallDev,$(1))
|
||||
|
@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2018 Jeffery To
|
||||
# Copyright (C) 2018, 2020 Jeffery To
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
@ -9,25 +9,116 @@ ifeq ($(origin GO_INCLUDE_DIR),undefined)
|
||||
GO_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
|
||||
endif
|
||||
|
||||
include $(GO_INCLUDE_DIR)/golang-version.mk
|
||||
|
||||
# Unset environment variables
|
||||
# There are more magic variables to track down, but ain't nobody got time for that
|
||||
|
||||
# From https://golang.org/cmd/go/#hdr-Environment_variables
|
||||
|
||||
# General-purpose environment variables:
|
||||
unexport \
|
||||
GOARCH GOBIN GOCACHE GOFLAGS GOHOSTARCH GOOS GOPATH GORACE GOROOT GOTMPDIR GCCGO \
|
||||
GOGC GODEBUG GOMAXPROCS GOTRACEBACK \
|
||||
GCCGO \
|
||||
GOARCH \
|
||||
GOBIN \
|
||||
GOCACHE \
|
||||
GODEBUG \
|
||||
GOENV \
|
||||
GOFLAGS \
|
||||
GOOS \
|
||||
GOPATH \
|
||||
GOROOT \
|
||||
GOTMPDIR
|
||||
# Unmodified:
|
||||
# GOPRIVATE
|
||||
# GOPROXY
|
||||
# GONOPROXY
|
||||
# GOSUMDB
|
||||
# GONOSUMDB
|
||||
|
||||
# Environment variables for use with cgo:
|
||||
unexport \
|
||||
AR \
|
||||
CC \
|
||||
CGO_ENABLED \
|
||||
CGO_CFLAGS CGO_CFLAGS_ALLOW CGO_CFLAGS_DISALLOW \
|
||||
CGO_CFLAGS CGO_CFLAGS_ALLOW CGO_CFLAGS_DISALLOW \
|
||||
CGO_CPPFLAGS CGO_CPPFLAGS_ALLOW CGO_CPPFLAGS_DISALLOW \
|
||||
CGO_CXXFLAGS CGO_CXXFLAGS_ALLOW CGO_CXXFLAGS_DISALLOW \
|
||||
CGO_FFLAGS CGO_FFLAGS_ALLOW CGO_FFLAGS_DISALLOW \
|
||||
CGO_LDFLAGS CGO_LDFLAGS_ALLOW CGO_LDFLAGS_DISALLOW \
|
||||
GOARM GO386 GOMIPS GOMIPS64 \
|
||||
GO111MODULE \
|
||||
GOROOT_FINAL GO_EXTLINK_ENABLED GIT_ALLOW_PROTOCOL \
|
||||
CC_FOR_TARGET CXX_FOR_TARGET GO_DISTFLAGS GO_GCFLAGS GO_LDFLAGS GOBUILDTIMELOGFILE GOROOT_BOOTSTRAP \
|
||||
BOOT_GO_GCFLAGS GOEXPERIMENT GOBOOTSTRAP_TOOLEXEC
|
||||
# there are more magic environment variables to track down, but ain't nobody got time for that
|
||||
# deliberately left untouched: GOPROXY GONOPROXY GOSUMDB GONOSUMDB GOPRIVATE
|
||||
CGO_FFLAGS CGO_FFLAGS_ALLOW CGO_FFLAGS_DISALLOW \
|
||||
CGO_LDFLAGS CGO_LDFLAGS_ALLOW CGO_LDFLAGS_DISALLOW \
|
||||
CXX \
|
||||
FC
|
||||
# Unmodified:
|
||||
# PKG_CONFIG
|
||||
|
||||
# Architecture-specific environment variables:
|
||||
unexport \
|
||||
GOARM \
|
||||
GO386 \
|
||||
GOMIPS \
|
||||
GOMIPS64 \
|
||||
GOWASM
|
||||
|
||||
# Special-purpose environment variables:
|
||||
unexport \
|
||||
GCCGOTOOLDIR \
|
||||
GOROOT_FINAL \
|
||||
GO_EXTLINK_ENABLED
|
||||
# Unmodified:
|
||||
# GIT_ALLOW_PROTOCOL
|
||||
|
||||
# From https://golang.org/cmd/go/#hdr-Module_support
|
||||
unexport \
|
||||
GO111MODULE
|
||||
|
||||
# From https://golang.org/pkg/runtime/#hdr-Environment_Variables
|
||||
unexport \
|
||||
GOGC \
|
||||
GOMAXPROCS \
|
||||
GORACE \
|
||||
GOTRACEBACK
|
||||
|
||||
# From https://golang.org/cmd/cgo/#hdr-Using_cgo_with_the_go_command
|
||||
unexport \
|
||||
CC_FOR_TARGET \
|
||||
CXX_FOR_TARGET
|
||||
# Todo:
|
||||
# CC_FOR_${GOOS}_${GOARCH}
|
||||
# CXX_FOR_${GOOS}_${GOARCH}
|
||||
|
||||
# From https://golang.org/doc/install/source#environment
|
||||
unexport \
|
||||
GOHOSTOS \
|
||||
GOHOSTARCH \
|
||||
GOPPC64
|
||||
|
||||
# From https://golang.org/src/make.bash
|
||||
unexport \
|
||||
GO_GCFLAGS \
|
||||
GO_LDFLAGS \
|
||||
GO_LDSO \
|
||||
GO_DISTFLAGS \
|
||||
GOBUILDTIMELOGFILE \
|
||||
GOROOT_BOOTSTRAP
|
||||
|
||||
# From https://golang.org/doc/go1.9#parallel-compile
|
||||
unexport \
|
||||
GO19CONCURRENTCOMPILATION
|
||||
|
||||
# From https://golang.org/src/cmd/dist/build.go
|
||||
unexport \
|
||||
BOOT_GO_GCFLAGS \
|
||||
BOOT_GO_LDFLAGS
|
||||
|
||||
# From https://golang.org/src/cmd/dist/buildtool.go
|
||||
unexport \
|
||||
GOBOOTSTRAP_TOOLEXEC
|
||||
|
||||
# From https://golang.org/src/cmd/internal/objabi/util.go
|
||||
unexport \
|
||||
GOEXPERIMENT
|
||||
|
||||
|
||||
# GOOS / GOARCH
|
||||
|
||||
go_arch=$(subst \
|
||||
aarch64,arm64,$(subst \
|
||||
@ -45,18 +136,23 @@ GO_HOST_OS:=$(call tolower,$(HOST_OS))
|
||||
GO_HOST_ARCH:=$(call go_arch,$(subst \
|
||||
armv6l,arm,$(subst \
|
||||
armv7l,arm,$(subst \
|
||||
i486,i386,$(subst \
|
||||
i586,i386,$(subst \
|
||||
i686,i386,$(HOST_ARCH)))))))
|
||||
i686,i386,$(HOST_ARCH)))))
|
||||
GO_HOST_OS_ARCH:=$(GO_HOST_OS)_$(GO_HOST_ARCH)
|
||||
|
||||
GO_HOST_TARGET_SAME:=$(if $(and $(findstring $(GO_OS_ARCH),$(GO_HOST_OS_ARCH)),$(findstring $(GO_HOST_OS_ARCH),$(GO_OS_ARCH))),1)
|
||||
GO_HOST_TARGET_DIFFERENT:=$(if $(GO_HOST_TARGET_SAME),,1)
|
||||
ifeq ($(GO_OS_ARCH),$(GO_HOST_OS_ARCH))
|
||||
GO_HOST_TARGET_SAME:=1
|
||||
else
|
||||
GO_HOST_TARGET_DIFFERENT:=1
|
||||
endif
|
||||
|
||||
# ensure binaries can run on older CPUs
|
||||
GO_386:=387
|
||||
ifeq ($(GO_ARCH),386)
|
||||
# ensure binaries can run on older CPUs
|
||||
GO_386:=387
|
||||
|
||||
ifeq ($(GO_ARCH),arm)
|
||||
# -fno-plt: causes "unexpected GOT reloc for non-dynamic symbol" errors
|
||||
GO_CFLAGS_TO_REMOVE:=-fno-plt
|
||||
|
||||
else ifeq ($(GO_ARCH),arm)
|
||||
GO_TARGET_FPU:=$(word 2,$(subst +,$(space),$(call qstrip,$(CONFIG_CPU_TYPE))))
|
||||
|
||||
# FPU names from https://gcc.gnu.org/onlinedocs/gcc-8.3.0/gcc/ARM-Options.html#index-mfpu-1
|
||||
@ -86,20 +182,53 @@ ifeq ($(GO_ARCH),arm)
|
||||
else
|
||||
GO_ARM:=5
|
||||
endif
|
||||
|
||||
else ifneq ($(filter $(GO_ARCH),mips mipsle),)
|
||||
ifeq ($(CONFIG_HAS_FPU),y)
|
||||
GO_MIPS:=hardfloat
|
||||
else
|
||||
GO_MIPS:=softfloat
|
||||
endif
|
||||
|
||||
# -mips32r2: conflicts with -march=mips32 set by go
|
||||
GO_CFLAGS_TO_REMOVE:=-mips32r2
|
||||
|
||||
else ifneq ($(filter $(GO_ARCH),mips64 mips64le),)
|
||||
ifeq ($(CONFIG_HAS_FPU),y)
|
||||
GO_MIPS64:=hardfloat
|
||||
else
|
||||
GO_MIPS64:=softfloat
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
GO_MIPS:=$(if $(filter $(GO_ARCH),mips mipsle),$(if $(CONFIG_HAS_FPU),hardfloat,softfloat),)
|
||||
|
||||
GO_MIPS64:=$(if $(filter $(GO_ARCH),mips64 mips64le),$(if $(CONFIG_HAS_FPU),hardfloat,softfloat),)
|
||||
|
||||
# -fno-plt: causes "unexpected GOT reloc for non-dynamic symbol" errors
|
||||
# -mips32r2: conflicts with -march=mips32 set by go
|
||||
GO_CFLAGS_TO_REMOVE:=$(if \
|
||||
$(filter $(GO_ARCH),386),-fno-plt,$(if \
|
||||
$(filter $(GO_ARCH),mips mipsle),-mips32r2,))
|
||||
# Target Go
|
||||
|
||||
GO_ARCH_DEPENDS:=@(aarch64||arm||i386||i686||mips||mips64||mips64el||mipsel||powerpc64||x86_64)
|
||||
|
||||
GO_TARGET_PREFIX:=/usr
|
||||
GO_TARGET_VERSION_ID:=$(GO_VERSION_MAJOR_MINOR)
|
||||
GO_TARGET_ROOT:=$(GO_TARGET_PREFIX)/lib/go-$(GO_TARGET_VERSION_ID)
|
||||
|
||||
# ASLR/PIE
|
||||
|
||||
GO_PIE_SUPPORTED_OS_ARCH:= \
|
||||
android_386 android_amd64 android_arm android_arm64 \
|
||||
linux_386 linux_amd64 linux_arm linux_arm64 \
|
||||
\
|
||||
darwin_amd64 \
|
||||
freebsd_amd64 \
|
||||
\
|
||||
aix_ppc64 \
|
||||
\
|
||||
linux_ppc64le linux_s390x
|
||||
|
||||
go_pie_install_suffix=$(if $(filter $(1),aix_ppc64),,shared)
|
||||
|
||||
ifneq ($(filter $(GO_HOST_OS_ARCH),$(GO_PIE_SUPPORTED_OS_ARCH)),)
|
||||
GO_HOST_PIE_SUPPORTED:=1
|
||||
GO_HOST_PIE_INSTALL_SUFFIX:=$(call go_pie_install_suffix,$(GO_HOST_OS_ARCH))
|
||||
endif
|
||||
|
||||
ifneq ($(filter $(GO_OS_ARCH),$(GO_PIE_SUPPORTED_OS_ARCH)),)
|
||||
GO_TARGET_PIE_SUPPORTED:=1
|
||||
GO_TARGET_PIE_INSTALL_SUFFIX:=$(call go_pie_install_suffix,$(GO_OS_ARCH))
|
||||
endif
|
||||
|
@ -1,14 +0,0 @@
|
||||
#
|
||||
# Copyright (C) 2018 Jeffery To
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
ifeq ($(origin GO_INCLUDE_DIR),undefined)
|
||||
GO_INCLUDE_DIR:=$(dir $(lastword $(MAKEFILE_LIST)))
|
||||
endif
|
||||
|
||||
|
||||
GO_VERSION_MAJOR_MINOR:=1.13
|
||||
GO_VERSION_PATCH:=6
|
@ -1,12 +1,14 @@
|
||||
#
|
||||
# Copyright (C) 2018 Jeffery To
|
||||
# Copyright (C) 2018, 2020 Jeffery To
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include ../golang-version.mk
|
||||
|
||||
GO_VERSION_MAJOR_MINOR:=1.14
|
||||
GO_VERSION_PATCH:=
|
||||
|
||||
PKG_NAME:=golang
|
||||
PKG_VERSION:=$(GO_VERSION_MAJOR_MINOR)$(if $(GO_VERSION_PATCH),.$(GO_VERSION_PATCH))
|
||||
@ -18,11 +20,12 @@ GO_SOURCE_URLS:=https://dl.google.com/go/ \
|
||||
|
||||
PKG_SOURCE:=go$(PKG_VERSION).src.tar.gz
|
||||
PKG_SOURCE_URL:=$(GO_SOURCE_URLS)
|
||||
PKG_HASH:=aae5be954bdc40bcf8006eb77e8d8a5dde412722bc8effcdaf9772620d06420c
|
||||
PKG_HASH:=6d643e46ad565058c7a39dac01144172ef9bd476521f42148be59249e4b74389
|
||||
|
||||
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
PKG_LICENSE_FILES:=LICENSE
|
||||
PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
|
||||
PKG_CPE_ID:=cpe:/a:golang:go
|
||||
|
||||
PKG_BUILD_DEPENDS:=golang/host
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/go-$(PKG_VERSION)
|
||||
@ -32,34 +35,49 @@ PKG_USE_MIPS16:=0
|
||||
PKG_GO_WORK_DIR:=$(PKG_BUILD_DIR)/.go_work
|
||||
PKG_GO_HOST_CACHE_DIR:=$(PKG_GO_WORK_DIR)/host_cache
|
||||
PKG_GO_TARGET_CACHE_DIR:=$(PKG_GO_WORK_DIR)/target_cache
|
||||
PKG_GO_TMP_DIR:=$(PKG_GO_WORK_DIR)/tmp
|
||||
|
||||
PKG_GO_PREFIX:=/usr
|
||||
PKG_GO_VERSION_ID:=$(GO_VERSION_MAJOR_MINOR)
|
||||
PKG_GO_ROOT:=$(PKG_GO_PREFIX)/lib/go-$(PKG_GO_VERSION_ID)
|
||||
|
||||
HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/go-$(PKG_VERSION)
|
||||
HOST_BUILD_PARALLEL:=1
|
||||
|
||||
HOST_GO_WORK_DIR:=$(HOST_BUILD_DIR)/.go_work
|
||||
HOST_GO_CACHE_DIR:=$(HOST_GO_WORK_DIR)/cache
|
||||
|
||||
HOST_GO_PREFIX:=$(STAGING_DIR_HOSTPKG)
|
||||
HOST_GO_VERSION_ID:=cross
|
||||
HOST_GO_ROOT:=$(HOST_GO_PREFIX)/lib/go-$(HOST_GO_VERSION_ID)
|
||||
|
||||
HOST_GO_VALID_OS_ARCH:= \
|
||||
android_arm \
|
||||
darwin_386 darwin_amd64 darwin_arm darwin_arm64 \
|
||||
dragonfly_amd64 \
|
||||
freebsd_386 freebsd_amd64 freebsd_arm \
|
||||
linux_386 linux_amd64 linux_arm linux_arm64 \
|
||||
netbsd_386 netbsd_amd64 netbsd_arm \
|
||||
openbsd_386 openbsd_amd64 openbsd_arm \
|
||||
plan9_386 plan9_amd64 \
|
||||
solaris_amd64 \
|
||||
android_386 android_amd64 android_arm android_arm64 \
|
||||
darwin_386 darwin_amd64 darwin_arm darwin_arm64 \
|
||||
linux_386 linux_amd64 linux_arm linux_arm64 \
|
||||
openbsd_386 openbsd_amd64 openbsd_arm openbsd_arm64 \
|
||||
\
|
||||
freebsd_386 freebsd_amd64 freebsd_arm \
|
||||
netbsd_386 netbsd_amd64 netbsd_arm \
|
||||
plan9_386 plan9_amd64 plan9_arm \
|
||||
\
|
||||
windows_386 windows_amd64 \
|
||||
\
|
||||
linux_ppc64 linux_ppc64le linux_mips linux_mipsle linux_mips64 linux_mips64le
|
||||
dragonfly_amd64 \
|
||||
illumos_amd64 \
|
||||
solaris_amd64 \
|
||||
\
|
||||
aix_ppc64 \
|
||||
js_wasm \
|
||||
\
|
||||
linux_ppc64 linux_ppc64le linux_mips linux_mipsle linux_mips64 linux_mips64le linux_s390x
|
||||
|
||||
BOOTSTRAP_SOURCE:=go1.4-bootstrap-20171003.tar.gz
|
||||
BOOTSTRAP_SOURCE_URL:=$(GO_SOURCE_URLS)
|
||||
BOOTSTRAP_HASH:=f4ff5b5eb3a3cae1c993723f3eab519c5bae18866b5e5f96fe1102f0cb5c3e52
|
||||
|
||||
BOOTSTRAP_BUILD_DIR:=$(HOST_BUILD_DIR)/.go_bootstrap
|
||||
BOOTSTRAP_WORK_DIR:=$(BOOTSTRAP_BUILD_DIR)/.go_work
|
||||
BOOTSTRAP_CACHE_DIR:=$(BOOTSTRAP_WORK_DIR)/cache
|
||||
|
||||
BOOTSTRAP_GO_VALID_OS_ARCH:= \
|
||||
darwin_386 darwin_amd64 \
|
||||
@ -85,6 +103,20 @@ BOOTSTRAP_UNPACK:=$(HOST_TAR) -C $(BOOTSTRAP_BUILD_DIR) --strip-components=1 -xz
|
||||
RSTRIP:=:
|
||||
STRIP:=:
|
||||
|
||||
ifdef CONFIG_PKG_ASLR_PIE_ALL
|
||||
ifeq ($(GO_TARGET_PIE_SUPPORTED),1)
|
||||
PKG_GO_ENABLE_PIE:=1
|
||||
PKG_GO_INSTALL_SUFFIX:=$(GO_TARGET_PIE_INSTALL_SUFFIX)
|
||||
else
|
||||
$(warning PIE buildmode is not supported for $(GO_OS)/$(GO_ARCH))
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(GO_HOST_PIE_SUPPORTED),1)
|
||||
HOST_GO_ENABLE_PIE:=1
|
||||
HOST_GO_INSTALL_SUFFIX:=$(GO_HOST_PIE_INSTALL_SUFFIX)
|
||||
endif
|
||||
|
||||
define Package/golang/Default
|
||||
$(call GoPackage/GoSubMenu)
|
||||
TITLE:=Go programming language
|
||||
@ -151,8 +183,8 @@ endef
|
||||
$(eval $(call Download,golang-bootstrap))
|
||||
|
||||
$(eval $(call GoCompiler/AddProfile,Bootstrap,$(BOOTSTRAP_BUILD_DIR),,bootstrap,$(GO_HOST_OS_ARCH)))
|
||||
$(eval $(call GoCompiler/AddProfile,Host,$(HOST_BUILD_DIR),$(HOST_GO_PREFIX),$(HOST_GO_VERSION_ID),$(GO_HOST_OS_ARCH)))
|
||||
$(eval $(call GoCompiler/AddProfile,Package,$(PKG_BUILD_DIR),$(GO_TARGET_PREFIX),$(GO_TARGET_VERSION_ID),$(GO_OS_ARCH)))
|
||||
$(eval $(call GoCompiler/AddProfile,Host,$(HOST_BUILD_DIR),$(HOST_GO_PREFIX),$(HOST_GO_VERSION_ID),$(GO_HOST_OS_ARCH),$(HOST_GO_INSTALL_SUFFIX)))
|
||||
$(eval $(call GoCompiler/AddProfile,Package,$(PKG_BUILD_DIR),$(PKG_GO_PREFIX),$(PKG_GO_VERSION_ID),$(GO_OS_ARCH),$(PKG_GO_INSTALL_SUFFIX)))
|
||||
|
||||
define Host/Prepare
|
||||
$(call Host/Prepare/Default)
|
||||
@ -160,20 +192,46 @@ define Host/Prepare
|
||||
$(BOOTSTRAP_UNPACK)
|
||||
endef
|
||||
|
||||
# when https://github.com/golang/go/issues/31544 is fixed,
|
||||
# we should be able to set GO_LDFLAGS=-buildmode=pie for host make
|
||||
# instead of doing a rebuild for pie
|
||||
define Host/Compile
|
||||
$(call GoCompiler/Bootstrap/CheckHost,$(BOOTSTRAP_GO_VALID_OS_ARCH))
|
||||
$(call GoCompiler/Host/CheckHost,$(HOST_GO_VALID_OS_ARCH))
|
||||
|
||||
mkdir -p \
|
||||
$(BOOTSTRAP_CACHE_DIR) \
|
||||
$(HOST_GO_CACHE_DIR)
|
||||
|
||||
$(call GoCompiler/Bootstrap/Make, \
|
||||
GOCACHE=$(BOOTSTRAP_CACHE_DIR) \
|
||||
CC=$(HOSTCC_NOCACHE) \
|
||||
CXX=$(HOSTCXX_NOCACHE) \
|
||||
)
|
||||
|
||||
$(call GoCompiler/Host/Make, \
|
||||
GOROOT_BOOTSTRAP=$(BOOTSTRAP_BUILD_DIR) \
|
||||
GOCACHE=$(HOST_GO_CACHE_DIR) \
|
||||
CC=$(HOSTCC_NOCACHE) \
|
||||
CXX=$(HOSTCXX_NOCACHE) \
|
||||
)
|
||||
|
||||
ifneq ($(HOST_GO_ENABLE_PIE),)
|
||||
@echo "Rebuilding host Go with PIE"
|
||||
|
||||
( \
|
||||
cd $(HOST_BUILD_DIR)/bin ; \
|
||||
$(CP) go go-nopie ; \
|
||||
GOCACHE=$(HOST_GO_CACHE_DIR) \
|
||||
GOENV=off \
|
||||
CC=$(HOSTCC_NOCACHE) \
|
||||
CXX=$(HOSTCXX_NOCACHE) \
|
||||
./go-nopie install -a -buildmode=pie std cmd ; \
|
||||
retval=$$$$? ; \
|
||||
rm -f go-nopie ; \
|
||||
exit $$$$retval ; \
|
||||
)
|
||||
endif
|
||||
endef
|
||||
|
||||
# if host and target os/arch are the same,
|
||||
@ -187,7 +245,7 @@ define Host/Install
|
||||
|
||||
$(call GoCompiler/Host/Install/BinLinks,)
|
||||
|
||||
rm -rf $(HOST_GO_ROOT)/pkg/$(GO_HOST_OS_ARCH)
|
||||
rm -rf $(HOST_GO_ROOT)/pkg/$(GO_HOST_OS_ARCH)$(if $(HOST_GO_INSTALL_SUFFIX),_$(HOST_GO_INSTALL_SUFFIX))
|
||||
|
||||
$(INSTALL_DIR) $(HOST_GO_ROOT)/openwrt
|
||||
$(INSTALL_BIN) ./files/go-gcc-helper $(HOST_GO_ROOT)/openwrt/
|
||||
@ -206,15 +264,13 @@ endef
|
||||
define Build/Compile
|
||||
mkdir -p \
|
||||
$(PKG_GO_HOST_CACHE_DIR) \
|
||||
$(PKG_GO_TARGET_CACHE_DIR) \
|
||||
$(PKG_GO_TMP_DIR)
|
||||
$(PKG_GO_TARGET_CACHE_DIR)
|
||||
|
||||
@echo "Building target Go first stage"
|
||||
|
||||
$(call GoCompiler/Package/Make, \
|
||||
GOROOT_BOOTSTRAP=$(HOST_GO_ROOT) \
|
||||
GOCACHE=$(PKG_GO_HOST_CACHE_DIR) \
|
||||
GOTMPDIR=$(PKG_GO_TMP_DIR) \
|
||||
GO_GCC_HELPER_CC="$(HOSTCC)" \
|
||||
GO_GCC_HELPER_CXX="$(HOSTCXX)" \
|
||||
GO_GCC_HELPER_PATH=$$$$PATH \
|
||||
@ -228,10 +284,11 @@ define Build/Compile
|
||||
|
||||
( \
|
||||
cd $(PKG_BUILD_DIR)/bin ; \
|
||||
export $(call GoPackage/Environment/Target) ; \
|
||||
$(CP) go go-host ; \
|
||||
GOROOT_FINAL=$(GO_TARGET_ROOT) \
|
||||
GOROOT_FINAL=$(PKG_GO_ROOT) \
|
||||
GOCACHE=$(PKG_GO_TARGET_CACHE_DIR) \
|
||||
GOTMPDIR=$(PKG_GO_TMP_DIR) \
|
||||
GOENV=off \
|
||||
GO_GCC_HELPER_CC="$(TARGET_CC)" \
|
||||
GO_GCC_HELPER_CXX="$(TARGET_CXX)" \
|
||||
GO_GCC_HELPER_PATH=$$$$PATH \
|
||||
@ -239,8 +296,7 @@ define Build/Compile
|
||||
CXX=g++ \
|
||||
PKG_CONFIG=pkg-config \
|
||||
PATH=$(HOST_GO_ROOT)/openwrt:$$$$PATH \
|
||||
$(call GoPackage/Environment) \
|
||||
./go-host install -a -v std cmd ; \
|
||||
./go-host install -a $(if $(PKG_GO_ENABLE_PIE),-buildmode=pie) std cmd ; \
|
||||
retval=$$$$? ; \
|
||||
rm -f go-host ; \
|
||||
exit $$$$retval ; \
|
||||
@ -248,16 +304,16 @@ define Build/Compile
|
||||
endef
|
||||
|
||||
define Package/golang/install
|
||||
$(call GoCompiler/Package/Install/Bin,$(1)$(GO_TARGET_PREFIX))
|
||||
$(call GoCompiler/Package/Install/BinLinks,$(1)$(GO_TARGET_PREFIX))
|
||||
$(call GoCompiler/Package/Install/Bin,$(1)$(PKG_GO_PREFIX))
|
||||
$(call GoCompiler/Package/Install/BinLinks,$(1)$(PKG_GO_PREFIX))
|
||||
endef
|
||||
|
||||
define Package/golang-doc/install
|
||||
$(call GoCompiler/Package/Install/Doc,$(1)$(GO_TARGET_PREFIX))
|
||||
$(call GoCompiler/Package/Install/Doc,$(1)$(PKG_GO_PREFIX))
|
||||
endef
|
||||
|
||||
define Package/golang-src/install
|
||||
$(call GoCompiler/Package/Install/Src,$(1)$(GO_TARGET_PREFIX))
|
||||
$(call GoCompiler/Package/Install/Src,$(1)$(PKG_GO_PREFIX))
|
||||
endef
|
||||
|
||||
# src/debug contains ELF executables as test data
|
||||
|
Loading…
Reference in New Issue
Block a user