pdns-auth-proxy/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