mirror of
				https://github.com/Ysurac/openmptcprouter-feeds.git
				synced 2025-03-09 15:40:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			220 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			220 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| #
 | |
| # Copyright (C) 2020 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
 | |
| 
 | |
| include $(GO_INCLUDE_DIR)/golang-values.mk
 | |
| 
 | |
| 
 | |
| # these variables have the same meanings as in golang-package.mk
 | |
| GO_HOST_INSTALL_EXTRA?=$(GO_PKG_INSTALL_EXTRA)
 | |
| GO_HOST_INSTALL_ALL?=$(GO_PKG_INSTALL_ALL)
 | |
| GO_HOST_SOURCE_ONLY?=$(GO_PKG_SOURCE_ONLY)
 | |
| GO_HOST_BUILD_PKG?=$(GO_PKG_BUILD_PKG)
 | |
| GO_HOST_EXCLUDES?=$(GO_PKG_EXCLUDES)
 | |
| GO_HOST_GO_GENERATE?=$(GO_PKG_GO_GENERATE)
 | |
| GO_HOST_GCFLAGS?=$(GO_PKG_GCFLAGS)
 | |
| GO_HOST_LDFLAGS?=$(GO_PKG_LDFLAGS)
 | |
| GO_HOST_LDFLAGS_X?=$(GO_PKG_LDFLAGS_X)
 | |
| GO_HOST_TAGS?=$(GO_PKG_TAGS)
 | |
| GO_HOST_INSTALL_BIN_PATH?=/bin
 | |
| 
 | |
| 
 | |
| # need to repeat this here in case golang-package.mk is not included
 | |
| GO_PKG_BUILD_PKG?=$(strip $(GO_PKG))/...
 | |
| 
 | |
| GO_HOST_WORK_DIR_NAME:=.go_work
 | |
| GO_HOST_BUILD_DIR=$(HOST_BUILD_DIR)/$(GO_HOST_WORK_DIR_NAME)/build
 | |
| GO_HOST_BUILD_BIN_DIR=$(GO_HOST_BUILD_DIR)/bin
 | |
| 
 | |
| GO_HOST_BUILD_DEPENDS_PATH:=/share/gocode
 | |
| GO_HOST_BUILD_DEPENDS_SRC=$(STAGING_DIR_HOSTPKG)$(GO_HOST_BUILD_DEPENDS_PATH)/src
 | |
| 
 | |
| GO_HOST_DIR_NAME:=$(lastword $(subst /,$(space),$(CURDIR)))
 | |
| GO_HOST_STAGING_DIR:=$(TMP_DIR)/host-stage-$(GO_HOST_DIR_NAME)
 | |
| GO_HOST_STAGING_FILES_LIST_DIR:=$(HOST_BUILD_PREFIX)/stamp
 | |
| GO_HOST_BIN_STAGING_FILES_LIST:=$(GO_HOST_STAGING_FILES_LIST_DIR)/$(GO_HOST_DIR_NAME)-bin.list
 | |
| GO_HOST_SRC_STAGING_FILES_LIST:=$(GO_HOST_STAGING_FILES_LIST_DIR)/$(GO_HOST_DIR_NAME)-src.list
 | |
| 
 | |
| ifeq ($(GO_HOST_PIE_SUPPORTED),1)
 | |
|   GO_HOST_ENABLE_PIE:=1
 | |
| endif
 | |
| 
 | |
| GO_HOST_BUILD_CONFIG_VARS= \
 | |
| 	GO_PKG="$(strip $(GO_PKG))" \
 | |
| 	GO_INSTALL_EXTRA="$(strip $(GO_HOST_INSTALL_EXTRA))" \
 | |
| 	GO_INSTALL_ALL="$(strip $(GO_HOST_INSTALL_ALL))" \
 | |
| 	GO_SOURCE_ONLY="$(strip $(GO_HOST_SOURCE_ONLY))" \
 | |
| 	GO_BUILD_PKG="$(strip $(GO_HOST_BUILD_PKG))" \
 | |
| 	GO_EXCLUDES="$(strip $(GO_HOST_EXCLUDES))" \
 | |
| 	GO_GO_GENERATE="$(strip $(GO_HOST_GO_GENERATE))" \
 | |
| 	GO_INSTALL_BIN_PATH="$(strip $(GO_HOST_INSTALL_BIN_PATH))" \
 | |
| 	BUILD_DIR="$(HOST_BUILD_DIR)" \
 | |
| 	GO_BUILD_DIR="$(GO_HOST_BUILD_DIR)" \
 | |
| 	GO_BUILD_BIN_DIR="$(GO_HOST_BUILD_BIN_DIR)" \
 | |
| 	GO_BUILD_DEPENDS_PATH="$(GO_HOST_BUILD_DEPENDS_PATH)" \
 | |
| 	GO_BUILD_DEPENDS_SRC="$(GO_HOST_BUILD_DEPENDS_SRC)"
 | |
| 
 | |
| GO_HOST_MORE_CFLAGS?= \
 | |
| 	-Wformat -Werror=format-security \
 | |
| 	-fstack-protector-strong \
 | |
| 	-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 \
 | |
| 	-Wl,-z,now -Wl,-z,relro \
 | |
| 	$(if $(GO_HOST_ENABLE_PIE),$(FPIC))
 | |
| 
 | |
| GO_HOST_MORE_LDFLAGS?= \
 | |
| 	-znow -zrelro \
 | |
| 	$(if $(GO_HOST_ENABLE_PIE),$(FPIC) -specs=$(INCLUDE_DIR)/hardened-ld-pie.specs)
 | |
| 
 | |
| GO_HOST_TARGET_VARS= \
 | |
| 	CGO_ENABLED=1 \
 | |
| 	CC=gcc \
 | |
| 	CXX=g++ \
 | |
| 	PKG_CONFIG=pkg-config \
 | |
| 	CGO_CFLAGS="$(HOST_CFLAGS) $(GO_HOST_MORE_CFLAGS)" \
 | |
| 	CGO_CPPFLAGS="$(HOST_CPPFLAGS) $(GO_HOST_MORE_CPPFLAGS)" \
 | |
| 	CGO_CXXFLAGS="$(HOST_CFLAGS) $(GO_HOST_MORE_CFLAGS)" \
 | |
| 	CGO_LDFLAGS="$(HOST_LDFLAGS) $(GO_HOST_MORE_LDFLAGS)" \
 | |
| 	GO_GCC_HELPER_CC="$(HOSTCC)" \
 | |
| 	GO_GCC_HELPER_CXX="$(HOSTCXX)" \
 | |
| 	GO_GCC_HELPER_PATH="$$$$PATH" \
 | |
| 	PATH="$(STAGING_DIR_HOSTPKG)/lib/go-cross/openwrt:$$$$PATH"
 | |
| 
 | |
| GO_HOST_BUILD_VARS= \
 | |
| 	GOPATH="$(GO_HOST_BUILD_DIR)" \
 | |
| 	GOCACHE="$(GO_BUILD_CACHE_DIR)" \
 | |
| 	GOMODCACHE="$(GO_MOD_CACHE_DIR)" \
 | |
| 	GOENV=off
 | |
| 
 | |
| GO_HOST_VARS= \
 | |
| 	$(GO_HOST_TARGET_VARS) \
 | |
| 	$(GO_HOST_BUILD_VARS)
 | |
| 
 | |
| GO_HOST_DEFAULT_LDFLAGS= \
 | |
| 	-linkmode external \
 | |
| 	-extldflags '$(patsubst -z%,-Wl$(comma)-z$(comma)%,$(HOST_LDFLAGS) $(GO_HOST_MORE_LDFLAGS))'
 | |
| 
 | |
| GO_HOST_CUSTOM_LDFLAGS= \
 | |
| 	$(GO_HOST_LDFLAGS) \
 | |
| 	$(patsubst %,-X %,$(GO_HOST_LDFLAGS_X))
 | |
| 
 | |
| GO_HOST_INSTALL_ARGS= \
 | |
| 	-v \
 | |
| 	-ldflags "all=$(GO_HOST_DEFAULT_LDFLAGS)" \
 | |
| 	$(if $(filter $(GO_HOST_ENABLE_PIE),1),-buildmode pie) \
 | |
| 	$(if $(GO_HOST_GCFLAGS),-gcflags "$(GO_HOST_GCFLAGS)") \
 | |
| 	$(if $(GO_HOST_CUSTOM_LDFLAGS),-ldflags "$(GO_HOST_CUSTOM_LDFLAGS) $(GO_HOST_DEFAULT_LDFLAGS)") \
 | |
| 	$(if $(GO_HOST_TAGS),-tags "$(GO_HOST_TAGS)")
 | |
| 
 | |
| define GoHost/Host/Configure
 | |
| 	$(GO_GENERAL_BUILD_CONFIG_VARS) \
 | |
| 	$(GO_HOST_BUILD_CONFIG_VARS) \
 | |
| 	$(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh configure
 | |
| endef
 | |
| 
 | |
| # $(1) additional arguments for go command line (optional)
 | |
| define GoHost/Host/Compile
 | |
| 	$(GO_GENERAL_BUILD_CONFIG_VARS) \
 | |
| 	$(GO_HOST_BUILD_CONFIG_VARS) \
 | |
| 	$(GO_HOST_VARS) \
 | |
| 	$(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh build $(GO_HOST_INSTALL_ARGS) $(1)
 | |
| endef
 | |
| 
 | |
| define GoHost/Host/Install/Bin
 | |
| 	rm -rf "$(GO_HOST_STAGING_DIR)"
 | |
| 	mkdir -p "$(GO_HOST_STAGING_DIR)" "$(GO_HOST_STAGING_FILES_LIST_DIR)"
 | |
| 
 | |
| 	$(GO_GENERAL_BUILD_CONFIG_VARS) \
 | |
| 	$(GO_HOST_BUILD_CONFIG_VARS) \
 | |
| 	$(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh install_bin "$(GO_HOST_STAGING_DIR)"
 | |
| 
 | |
| 	if [ -f "$(GO_HOST_BIN_STAGING_FILES_LIST)" ]; then \
 | |
| 		"$(SCRIPT_DIR)/clean-package.sh" \
 | |
| 			"$(GO_HOST_BIN_STAGING_FILES_LIST)" \
 | |
| 			"$(1)" ; \
 | |
| 	fi
 | |
| 
 | |
| 	cd "$(GO_HOST_STAGING_DIR)" && find ./ > "$(GO_HOST_STAGING_DIR).files"
 | |
| 
 | |
| 	$(call locked, \
 | |
| 		mv "$(GO_HOST_STAGING_DIR).files" "$(GO_HOST_BIN_STAGING_FILES_LIST)" && \
 | |
| 		$(CP) "$(GO_HOST_STAGING_DIR)"/* "$(1)/", \
 | |
| 		host-staging-dir \
 | |
| 	)
 | |
| 
 | |
| 	rm -rf "$(GO_HOST_STAGING_DIR)"
 | |
| endef
 | |
| 
 | |
| define GoHost/Host/Install/Src
 | |
| 	rm -rf "$(GO_HOST_STAGING_DIR)"
 | |
| 	mkdir -p "$(GO_HOST_STAGING_DIR)" "$(GO_HOST_STAGING_FILES_LIST_DIR)"
 | |
| 
 | |
| 	$(GO_GENERAL_BUILD_CONFIG_VARS) \
 | |
| 	$(GO_HOST_BUILD_CONFIG_VARS) \
 | |
| 	$(SHELL) $(GO_INCLUDE_DIR)/golang-build.sh install_src "$(GO_HOST_STAGING_DIR)"
 | |
| 
 | |
| 	if [ -f "$(GO_HOST_SRC_STAGING_FILES_LIST)" ]; then \
 | |
| 		"$(SCRIPT_DIR)/clean-package.sh" \
 | |
| 			"$(GO_HOST_SRC_STAGING_FILES_LIST)" \
 | |
| 			"$(1)" ; \
 | |
| 	fi
 | |
| 
 | |
| 	cd "$(GO_HOST_STAGING_DIR)" && find ./ > "$(GO_HOST_STAGING_DIR).files"
 | |
| 
 | |
| 	$(call locked, \
 | |
| 		mv "$(GO_HOST_STAGING_DIR).files" "$(GO_HOST_SRC_STAGING_FILES_LIST)" && \
 | |
| 		$(CP) "$(GO_HOST_STAGING_DIR)"/* "$(1)/", \
 | |
| 		host-staging-dir \
 | |
| 	)
 | |
| 
 | |
| 	rm -rf "$(GO_HOST_STAGING_DIR)"
 | |
| endef
 | |
| 
 | |
| define GoHost/Host/Install
 | |
| 	$(if $(filter $(GO_HOST_SOURCE_ONLY),1),, \
 | |
| 		$(call GoHost/Host/Install/Bin,$(1)) \
 | |
| 	)
 | |
| 	$(call GoHost/Host/Install/Src,$(1))
 | |
| endef
 | |
| 
 | |
| define GoHost/Host/Uninstall
 | |
| 	if [ -f "$(GO_HOST_BIN_STAGING_FILES_LIST)" ]; then \
 | |
| 		"$(SCRIPT_DIR)/clean-package.sh" \
 | |
| 			"$(GO_HOST_BIN_STAGING_FILES_LIST)" \
 | |
| 			"$(HOST_BUILD_PREFIX)" ; \
 | |
| 		rm -f "$(GO_HOST_BIN_STAGING_FILES_LIST)" ; \
 | |
| 	fi
 | |
| 
 | |
| 	if [ -f "$(GO_HOST_SRC_STAGING_FILES_LIST)" ]; then \
 | |
| 		"$(SCRIPT_DIR)/clean-package.sh" \
 | |
| 			"$(GO_HOST_SRC_STAGING_FILES_LIST)" \
 | |
| 			"$(HOST_BUILD_PREFIX)" ; \
 | |
| 		rm -f "$(GO_HOST_SRC_STAGING_FILES_LIST)" ; \
 | |
| 	fi
 | |
| endef
 | |
| 
 | |
| 
 | |
| ifneq ($(strip $(GO_PKG)),)
 | |
|   Host/Configure=$(call GoHost/Host/Configure)
 | |
|   Host/Compile=$(call GoHost/Host/Compile)
 | |
|   Hooks/HostCompile/Post+=Go/CacheCleanup
 | |
|   Host/Uninstall=$(call GoHost/Host/Uninstall,$(1))
 | |
| endif
 | |
| 
 | |
| define GoHostBuild
 | |
|   Host/Install=$$(call GoHost/Host/Install,$$(1))
 | |
| endef
 | |
| 
 | |
| define GoBinHostBuild
 | |
|   Host/Install=$$(call GoHost/Host/Install/Bin,$$(1))
 | |
| endef
 | |
| 
 | |
| define GoSrcHostBuild
 | |
|   Host/Install=$$(call GoHost/Host/Install/Src,$$(1))
 | |
| endef
 |