update makefile
This commit is contained in:
parent
9d4a83a792
commit
f9aa04d39e
238
Makefile
238
Makefile
|
@ -4,244 +4,10 @@ SHELL=/bin/bash
|
||||||
APP_NAME := console
|
APP_NAME := console
|
||||||
APP_VERSION := 1.0.0_SNAPSHOT
|
APP_VERSION := 1.0.0_SNAPSHOT
|
||||||
APP_CONFIG := $(APP_NAME).yml
|
APP_CONFIG := $(APP_NAME).yml
|
||||||
APP_EOLDate := "2022-12-31 10:10:10"
|
APP_EOLDate := "2023-12-31 10:10:10"
|
||||||
APP_STATIC_FOLDER := .public
|
APP_STATIC_FOLDER := .public
|
||||||
APP_STATIC_PACKAGE := public
|
APP_STATIC_PACKAGE := public
|
||||||
APP_UI_FOLDER := ui
|
APP_UI_FOLDER := ui
|
||||||
APP_PLUGIN_FOLDER := plugin
|
APP_PLUGIN_FOLDER := plugin
|
||||||
|
|
||||||
# Get release version from environment
|
include ../framework/Makefile
|
||||||
ifneq "$(VERSION)" ""
|
|
||||||
APP_VERSION := $(VERSION)
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq "$(EOL)" ""
|
|
||||||
APP_EOLDate := $(EOL)
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Ensure GOPATH is set before running build process.
|
|
||||||
ifeq "$(GOPATH)" ""
|
|
||||||
GOPATH := ~/go
|
|
||||||
#$(error Please set the environment variable GOPATH before running `make`)
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
PATH := $(PATH):$(GOPATH)/bin
|
|
||||||
|
|
||||||
# Go environment
|
|
||||||
CURDIR := $(shell pwd)
|
|
||||||
OLDGOPATH:= $(GOPATH)
|
|
||||||
|
|
||||||
CMD_DIR := $(CURDIR)/cmd
|
|
||||||
OUTPUT_DIR := $(CURDIR)/bin
|
|
||||||
|
|
||||||
|
|
||||||
# INFINI framework
|
|
||||||
INFINI_BASE_FOLDER := $(OLDGOPATH)/src/infini.sh/
|
|
||||||
FRAMEWORK_FOLDER := $(INFINI_BASE_FOLDER)/framework/
|
|
||||||
FRAMEWORK_REPO := ssh://git@git.infini.ltd:64221/infini/framework.git
|
|
||||||
FRAMEWORK_BRANCH := master
|
|
||||||
FRAMEWORK_VENDOR_FOLDER := $(CURDIR)/../vendor/
|
|
||||||
FRAMEWORK_VENDOR_REPO := ssh://git@git.infini.ltd:64221/infini/framework-vendor.git
|
|
||||||
FRAMEWORK_VENDOR_BRANCH := master
|
|
||||||
|
|
||||||
|
|
||||||
NEWGOPATH:= $(CURDIR):$(FRAMEWORK_VENDOR_FOLDER):$(GOPATH)
|
|
||||||
|
|
||||||
GO := GO15VENDOREXPERIMENT="1" GO111MODULE=off go
|
|
||||||
GOBUILD := GOPATH=$(NEWGOPATH) CGO_ENABLED=0 GRPC_GO_REQUIRE_HANDSHAKE=off $(GO) build -ldflags='-s -w' -gcflags "-m" --work
|
|
||||||
GOBUILDNCGO := GOPATH=$(NEWGOPATH) CGO_ENABLED=1 $(GO) build -ldflags -s
|
|
||||||
GOTEST := GOPATH=$(NEWGOPATH) CGO_ENABLED=1 $(GO) test -ldflags -s
|
|
||||||
|
|
||||||
ARCH := "`uname -s`"
|
|
||||||
LINUX := "Linux"
|
|
||||||
MAC := "Darwin"
|
|
||||||
GO_FILES=$(find . -iname '*.go' | grep -v /vendor/)
|
|
||||||
PKGS=$(go list ./... | grep -v /vendor/)
|
|
||||||
|
|
||||||
FRAMEWORK_OFFLINE_BUILD := ""
|
|
||||||
ifneq "$(OFFLINE_BUILD)" ""
|
|
||||||
FRAMEWORK_OFFLINE_BUILD := $(OFFLINE_BUILD)
|
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: all build update test clean
|
|
||||||
|
|
||||||
default: build-race
|
|
||||||
|
|
||||||
env:
|
|
||||||
@echo OLDGOPATH:$(OLDGOPATH)
|
|
||||||
@echo GOPATH:$(GOPATH)
|
|
||||||
@echo NEWGOPATH:$(NEWGOPATH)
|
|
||||||
@echo INFINI_BASE_FOLDER:$(INFINI_BASE_FOLDER)
|
|
||||||
@echo FRAMEWORK_FOLDER:$(FRAMEWORK_FOLDER)
|
|
||||||
@echo FRAMEWORK_VENDOR_FOLDER:$(FRAMEWORK_VENDOR_FOLDER)
|
|
||||||
|
|
||||||
build: config
|
|
||||||
$(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)
|
|
||||||
@$(MAKE) restore-generated-file
|
|
||||||
|
|
||||||
build-cmd: config
|
|
||||||
@for f in $(shell ls ${CMD_DIR}); do (cd $(CMD_DIR)/$${f} && $(GOBUILD) -o $(OUTPUT_DIR)/$${f}); done
|
|
||||||
@$(MAKE) restore-generated-file
|
|
||||||
|
|
||||||
|
|
||||||
# used to build the binary for gdb debugging
|
|
||||||
build-race: clean config update-vfs
|
|
||||||
$(GOBUILDNCGO) -gcflags "-m -N -l" -race -o $(OUTPUT_DIR)/$(APP_NAME)
|
|
||||||
@$(MAKE) restore-generated-file
|
|
||||||
|
|
||||||
tar: build
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/$(APP_NAME).tar.gz $(APP_NAME) $(APP_CONFIG)
|
|
||||||
|
|
||||||
cross-build: clean config update-vfs
|
|
||||||
$(GO) test
|
|
||||||
GOOS=windows GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-windows-amd64.exe
|
|
||||||
GOOS=darwin GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-mac-amd64
|
|
||||||
GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-amd64
|
|
||||||
@$(MAKE) restore-generated-file
|
|
||||||
|
|
||||||
|
|
||||||
build-win: config
|
|
||||||
CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ GOOS=windows GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-windows-amd64.exe
|
|
||||||
CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ GOOS=windows GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-windows-386.exe
|
|
||||||
@$(MAKE) restore-generated-file
|
|
||||||
|
|
||||||
build-linux: config
|
|
||||||
GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-amd64
|
|
||||||
GOOS=linux GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-386
|
|
||||||
GOOS=linux GOARCH=mips $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-mips
|
|
||||||
GOOS=linux GOARCH=mipsle $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-mipsle
|
|
||||||
GOOS=linux GOARCH=mips64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-mips64
|
|
||||||
GOOS=linux GOARCH=mips64le $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-mips64le
|
|
||||||
@$(MAKE) restore-generated-file
|
|
||||||
|
|
||||||
build-arm: config
|
|
||||||
GOOS=linux GOARCH=arm64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-arm64
|
|
||||||
GOOS=linux GOARCH=arm GOARM=5 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-armv5
|
|
||||||
GOOS=linux GOARCH=arm GOARM=6 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-armv6
|
|
||||||
GOOS=linux GOARCH=arm GOARM=7 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-linux-armv7
|
|
||||||
@$(MAKE) restore-generated-file
|
|
||||||
|
|
||||||
build-darwin: config
|
|
||||||
GOOS=darwin GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-mac-amd64
|
|
||||||
# GOOS=darwin GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-mac-386
|
|
||||||
GOOS=darwin GOARCH=arm64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-mac-arm64
|
|
||||||
@$(MAKE) restore-generated-file
|
|
||||||
|
|
||||||
build-bsd: config
|
|
||||||
GOOS=freebsd GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-freebsd-amd64
|
|
||||||
GOOS=freebsd GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-freebsd-386
|
|
||||||
GOOS=netbsd GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-netbsd-amd64
|
|
||||||
GOOS=netbsd GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-netbsd-386
|
|
||||||
GOOS=openbsd GOARCH=amd64 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-openbsd-amd64
|
|
||||||
GOOS=openbsd GOARCH=386 $(GOBUILD) -o $(OUTPUT_DIR)/$(APP_NAME)-openbsd-386
|
|
||||||
@$(MAKE) restore-generated-file
|
|
||||||
|
|
||||||
all: clean config update-vfs cross-build restore-generated-file
|
|
||||||
|
|
||||||
all-platform: clean config update-vfs cross-build-all-platform restore-generated-file
|
|
||||||
|
|
||||||
cross-build-all-platform: clean config build-bsd build-linux build-darwin build-win restore-generated-file
|
|
||||||
|
|
||||||
format:
|
|
||||||
go fmt $$(go list ./... | grep -v /vendor/)
|
|
||||||
|
|
||||||
clean_data:
|
|
||||||
rm -rif dist
|
|
||||||
rm -rif data
|
|
||||||
rm -rif log
|
|
||||||
|
|
||||||
clean: clean_data
|
|
||||||
rm -rif $(OUTPUT_DIR)
|
|
||||||
mkdir $(OUTPUT_DIR)
|
|
||||||
|
|
||||||
init:
|
|
||||||
@echo building $(APP_NAME) $(APP_VERSION)
|
|
||||||
@echo $(CURDIR)
|
|
||||||
@mkdir -p $(INFINI_BASE_FOLDER)
|
|
||||||
@echo "framework path: " $(FRAMEWORK_FOLDER)
|
|
||||||
@if [ ! -d $(FRAMEWORK_FOLDER) ]; then echo "framework does not exist";(cd $(INFINI_BASE_FOLDER)&&git clone -b $(FRAMEWORK_BRANCH) $(FRAMEWORK_REPO) framework ) fi
|
|
||||||
@if [ ! -d $(FRAMEWORK_VENDOR_FOLDER) ]; then echo "framework vendor does not exist";(cd $(INFINI_BASE_FOLDER)&&git clone -b $(FRAMEWORK_VENDOR_BRANCH) $(FRAMEWORK_VENDOR_REPO) vendor) fi
|
|
||||||
@if [ "" == $(FRAMEWORK_OFFLINE_BUILD) ]; then (cd $(FRAMEWORK_FOLDER) && git pull origin $(FRAMEWORK_BRANCH)); fi;
|
|
||||||
@if [ "" == $(FRAMEWORK_OFFLINE_BUILD) ]; then (cd $(FRAMEWORK_VENDOR_FOLDER) && git pull origin $(FRAMEWORK_VENDOR_BRANCH)); fi;
|
|
||||||
|
|
||||||
update-generated-file:
|
|
||||||
@echo "update generated info"
|
|
||||||
@echo -e "package config\n\nconst LastCommitLog = \""`git log -1 --pretty=format:"%h, %ad, %an, %s"` "\"\nconst BuildDate = \"`date "+%Y-%m-%d %H:%M:%S"`\"" > config/generated.go
|
|
||||||
@echo -e "\nconst EOLDate = \"$(APP_EOLDate)\"" >> config/generated.go
|
|
||||||
@echo -e "\nconst Version = \"$(APP_VERSION)\"" >> config/generated.go
|
|
||||||
|
|
||||||
|
|
||||||
restore-generated-file:
|
|
||||||
@echo "restore generated info"
|
|
||||||
@echo -e "package config\n\nconst LastCommitLog = \"N/A\"\nconst BuildDate = \"N/A\"" > config/generated.go
|
|
||||||
@echo -e "\nconst EOLDate = \"N/A\"" >> config/generated.go
|
|
||||||
@echo -e "\nconst Version = \"0.0.1-SNAPSHOT\"" >> config/generated.go
|
|
||||||
|
|
||||||
|
|
||||||
update-vfs:
|
|
||||||
cd $(FRAMEWORK_FOLDER) && cd cmd/vfs && $(GO) build && cp vfs ~/
|
|
||||||
@if [ -d $(APP_STATIC_FOLDER) ]; then echo "generate static files";(cd $(APP_STATIC_FOLDER) && ~/vfs -ignore="static.go|.DS_Store" -o static.go -pkg $(APP_STATIC_PACKAGE) . ) fi
|
|
||||||
|
|
||||||
config: init update-vfs update-generated-file
|
|
||||||
@echo "update configs"
|
|
||||||
@# $(GO) env
|
|
||||||
@mkdir -p $(OUTPUT_DIR)
|
|
||||||
@cp $(APP_CONFIG) $(OUTPUT_DIR)/$(APP_CONFIG)
|
|
||||||
|
|
||||||
|
|
||||||
dist: cross-build package
|
|
||||||
|
|
||||||
dist-major-platform: all package
|
|
||||||
|
|
||||||
dist-all-platform: all-platform package-all-platform
|
|
||||||
|
|
||||||
package:
|
|
||||||
@echo "Packaging"
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/mac-amd64.tar.gz mac-amd64 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-amd64.tar.gz linux-amd64 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/windows-amd64.tar.gz windows-amd64 $(APP_CONFIG)
|
|
||||||
|
|
||||||
package-all-platform: package-darwin-platform package-linux-platform package-windows-platform
|
|
||||||
@echo "Packaging all"
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/freebsd-amd64.tar.gz $(APP_NAME)-freebsd-amd64 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/freebsd-386.tar.gz $(APP_NAME)-freebsd-386 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/netbsd-amd64.tar.gz $(APP_NAME)-netbsd-amd64 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/netbsd-386.tar.gz $(APP_NAME)-netbsd-386 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/openbsd-amd64.tar.gz $(APP_NAME)-openbsd-amd64 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/openbsd-386.tar.gz $(APP_NAME)-openbsd-386 $(APP_CONFIG)
|
|
||||||
|
|
||||||
package-darwin-platform:
|
|
||||||
@echo "Packaging Darwin"
|
|
||||||
cd $(OUTPUT_DIR) && zip -r $(OUTPUT_DIR)/mac-amd64.zip $(APP_NAME)-mac-amd64 $(APP_CONFIG)
|
|
||||||
# cd $(OUTPUT_DIR) && zip -r $(OUTPUT_DIR)/mac-386.zip $(APP_NAME)-mac-386 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && zip -r $(OUTPUT_DIR)/mac-arm64.zip $(APP_NAME)-mac-arm64 $(APP_CONFIG)
|
|
||||||
|
|
||||||
package-linux-platform:
|
|
||||||
@echo "Packaging Linux"
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-amd64.tar.gz $(APP_NAME)-linux-amd64 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-mips.tar.gz $(APP_NAME)-linux-mips $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-mipsle.tar.gz $(APP_NAME)-linux-mipsle $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-mips64.tar.gz $(APP_NAME)-linux-mips64 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-mips64le.tar.gz $(APP_NAME)-linux-mips64le $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-386.tar.gz $(APP_NAME)-linux-386 $(APP_CONFIG)
|
|
||||||
|
|
||||||
package-linux-arm-platform:
|
|
||||||
@echo "Packaging Linux (ARM)"
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-arm64.tar.gz $(APP_NAME)-linux-arm64 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-armv5.tar.gz $(APP_NAME)-linux-armv5 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-armv6.tar.gz $(APP_NAME)-linux-armv6 $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && tar cfz $(OUTPUT_DIR)/linux-armv7.tar.gz $(APP_NAME)-linux-armv7 $(APP_CONFIG)
|
|
||||||
|
|
||||||
package-windows-platform:
|
|
||||||
@echo "Packaging Windows"
|
|
||||||
cd $(OUTPUT_DIR) && zip -r $(OUTPUT_DIR)/windows-amd64.zip $(APP_NAME)-windows-amd64.exe $(APP_CONFIG)
|
|
||||||
cd $(OUTPUT_DIR) && zip -r $(OUTPUT_DIR)/windows-386.zip $(APP_NAME)-windows-386.exe $(APP_CONFIG)
|
|
||||||
|
|
||||||
test:
|
|
||||||
go get -u github.com/kardianos/govendor
|
|
||||||
go get github.com/stretchr/testify/assert
|
|
||||||
govendor test +local
|
|
||||||
go test -timeout 60s ./...
|
|
||||||
#GORACE="halt_on_error=1" go test ./... -race -timeout 120s --ignore ./vendor
|
|
||||||
#go test -bench=. -benchmem
|
|
||||||
|
|
Loading…
Reference in New Issue