89 lines
2.4 KiB
Makefile
89 lines
2.4 KiB
Makefile
# -*- mode: makefile -*-
|
|
SHELL := /bin/bash
|
|
PREFIX?=$(shell pwd)
|
|
|
|
# Setup name variables for the package/tool
|
|
PROJECTNAME := pdns-auth-proxy
|
|
|
|
# Set our default go compiler
|
|
GO := go
|
|
|
|
VERSION := $(shell git describe --tags)
|
|
GITCOMMIT := $(shell git rev-parse --short HEAD)
|
|
PKG := git.euclide.org/euclide/$(PROJECTNAME)
|
|
|
|
CTIMEVAR=-X $(PKG)/version.GITCOMMIT=$(GITCOMMIT) -X $(PKG)/version.VERSION=$(VERSION)
|
|
GO_LDFLAGS=-ldflags "-w $(CTIMEVAR)"
|
|
GO_LDFLAGS_STATIC=-ldflags "-w $(CTIMEVAR) -extldflags -static"
|
|
GOCACHE=off
|
|
|
|
BUILDDIR := ${PREFIX}/build
|
|
DOCKER_IMAGE := $(docker images --format "{{.Repository}}" --filter=reference='$(PROJECTNAME):$(GITCOMMIT)')
|
|
GOOSARCHES := linux/amd64
|
|
|
|
all: build fmt lint test
|
|
|
|
.PHONY: fmt
|
|
fmt: ## Verifies all files have been `gofmt`ed.
|
|
@echo "+ $@"
|
|
$(eval var = $(shell gofmt -s -l . | grep -v vendor | tee /dev/stderr))
|
|
@if [ ! -z "${var}" ]; then exit 1; fi
|
|
$(MAKE) -C client fmt
|
|
|
|
.PHONY: lint
|
|
lint: ## Verifies `golint` passes.
|
|
@echo "+ $@"
|
|
$(eval var = $(shell golint ./... | grep -v vendor | tee /dev/stderr))
|
|
@if [ ! -z "${var}" ]; then exit 1; fi
|
|
$(MAKE) -C client lint
|
|
|
|
.PHONY: tag
|
|
tag: ## Create a new git tag to prepare to build a release
|
|
git tag -sa $(VERSION) -m "$(VERSION)"
|
|
@echo "Run git push origin $(VERSION) to push your new tag to GitHub and trigger a Jenkins build."
|
|
|
|
.PHONY: test
|
|
test: ## Generates test certificates & run unit tests.
|
|
$(MAKE) -C fixtures/test
|
|
go vet -mod=vendor
|
|
go test -v -mod=vendor -coverprofile=coverage.out
|
|
$(MAKE) -C client test
|
|
|
|
.PHONY: resetreplay
|
|
resetreplay:
|
|
rm -f fixtures/replay/record
|
|
$(MAKE) clean
|
|
$(MAKE) test
|
|
|
|
.PHONY: deb
|
|
deb:
|
|
debuild -e GOROOT -e PATH -i -us -uc -b
|
|
|
|
.PHONY: build
|
|
build: ## Builds a static executable.
|
|
@echo "+ $@"
|
|
CGO_ENABLED=0 $(GO) build -mod=vendor \
|
|
-o $(PROJECTNAME) \
|
|
-tags "static_build netgo" \
|
|
-trimpath \
|
|
-installsuffix netgo ${GO_LDFLAGS_STATIC} .;
|
|
strip $(PROJECTNAME) 2>/dev/null || echo
|
|
$(MAKE) -C client build
|
|
|
|
.PHONY: vendor
|
|
vendor: ## Updates the vendoring directory.
|
|
# @$(RM) go.sum
|
|
@$(RM) -r vendor
|
|
GOPRIVATE=git.euclide.org $(GO) mod init $(PKG) || true
|
|
GOPRIVATE=git.euclide.org $(GO) mod tidy
|
|
GOPRIVATE=git.euclide.org $(GO) mod vendor
|
|
@$(RM) Gopkg.toml Gopkg.lock
|
|
|
|
.PHONY: clean
|
|
clean: ## Cleanup any build binaries or packages.
|
|
@echo "+ $@"
|
|
$(RM) $(PROJECTNAME) debug
|
|
$(RM) -r $(BUILDDIR)
|
|
$(MAKE) -C fixtures/test clean
|
|
$(MAKE) -C client clean
|