60 lines
2.2 KiB
Makefile
60 lines
2.2 KiB
Makefile
.PHONY: help build clean build-all package release
|
|
.DEFAULT_GOAL := help
|
|
|
|
pkg_root = .
|
|
|
|
### Calculate a few variables for use in building
|
|
VERSION = $(shell git describe --tags --abbrev=0 --always)
|
|
COMMIT = $(shell git log --pretty='format:%h' -n 1)
|
|
BUILDDATE = $(shell date +"%Y-%m-%dT%H:%M:%S")
|
|
# ldflags inject new values into variables at compilation time
|
|
# this is how we dynamically set the version/etc of the application
|
|
ldflags = "-X 'main.appVersion=$(VERSION)' \
|
|
-X 'main.appCommit=$(COMMIT)' \
|
|
-X 'main.buildTime=$(BUILDDATE)' \
|
|
-w -s"
|
|
|
|
##@ Help
|
|
help: ## Display this help
|
|
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m<target>\033[0m\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-15s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST)
|
|
@echo
|
|
@echo "Variable pkg_root is set to . by default. This should be the directory of spsrv source code."
|
|
|
|
##@ Utilities
|
|
init: ## Install utils
|
|
go mod download
|
|
|
|
dep-tidy: ## Remove unused dependencies
|
|
go mod tidy
|
|
|
|
dep-upgrade: ## Upgrade versions of dependencies
|
|
go get -u
|
|
|
|
##@ Build
|
|
build: clean ## Build spsrv for your native architecture
|
|
go build -o ./bin/spsrv -ldflags=$(ldflags) $(pkg_root)
|
|
|
|
build-all: clean ## Build spsrv for linux and mac
|
|
GOOS=darwin GOARCH=amd64 go build -o ./bin/spsrv-darwin-amd64/spsrv -ldflags=$(ldflags) $(pkg_root)
|
|
GOOS=darwin GOARCH=arm64 go build -o ./bin/spsrv-darwin-arm64/spsrv -ldflags=$(ldflags) $(pkg_root)
|
|
GOOS=linux GOARCH=amd64 go build -o ./bin/spsrv-linux-amd64/spsrv -ldflags=$(ldflags) $(pkg_root)
|
|
GOOS=linux GOARCH=arm64 go build -o ./bin/spsrv-linux-arm64/spsrv -ldflags=$(ldflags) $(pkg_root)
|
|
|
|
clean: ## Delete any compiled artifacts
|
|
rm -rf ./bin
|
|
|
|
##@ Release
|
|
package: build-all ## Build everything and package up arch-specific tarballs
|
|
tar czvf ./bin/spsrv-darwin-amd64.tar.gz ./bin/spsrv-darwin-amd64
|
|
tar czvf ./bin/spsrv-darwin-arm64.tar.gz ./bin/spsrv-darwin-arm64
|
|
tar czvf ./bin/spsrv-linux-amd64.tar.gz ./bin/spsrv-linux-amd64
|
|
tar czvf ./bin/spsrv-linux-arm64.tar.gz ./bin/spsrv-linux-arm64
|
|
|
|
release: package ## Attach packages to sr.ht ref for current tag
|
|
./_scripts/release.sh
|
|
|
|
##@ Test
|
|
test: ## Run tests
|
|
go test $(shell go list ./...) -coverprofile=coverage.out
|
|
# go tool cover -func=coverage.out
|