123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- # Set an output prefix, which is the local directory if not specified
- PREFIX?=$(shell pwd)
- # Used to populate version variable in main package.
- VERSION=$(shell git describe --match 'v[0-9]*' --dirty='.m' --always)
- # Allow turning off function inlining and variable registerization
- ifeq (${DISABLE_OPTIMIZATION},true)
- GO_GCFLAGS=-gcflags "-N -l"
- VERSION:="$(VERSION)-noopt"
- endif
- GO_LDFLAGS=-ldflags "-X `go list ./version`.Version=$(VERSION)"
- .PHONY: clean all fmt vet lint build test binaries
- .DEFAULT: all
- all: fmt vet lint build test binaries
- AUTHORS: .mailmap .git/HEAD
- git log --format='%aN <%aE>' | sort -fu > $@
- # This only needs to be generated by hand when cutting full releases.
- version/version.go:
- ./version/version.sh > $@
- # Required for go 1.5 to build
- GO15VENDOREXPERIMENT := 1
- # Package list
- PKGS := $(shell go list -tags "${DOCKER_BUILDTAGS}" ./... | grep -v ^github.com/docker/distribution/vendor/)
- # Resolving binary dependencies for specific targets
- GOLINT := $(shell which golint || echo '')
- GODEP := $(shell which godep || echo '')
- ${PREFIX}/bin/registry: $(wildcard **/*.go)
- @echo "+ $@"
- @go build -tags "${DOCKER_BUILDTAGS}" -o $@ ${GO_LDFLAGS} ${GO_GCFLAGS} ./cmd/registry
- ${PREFIX}/bin/digest: $(wildcard **/*.go)
- @echo "+ $@"
- @go build -tags "${DOCKER_BUILDTAGS}" -o $@ ${GO_LDFLAGS} ${GO_GCFLAGS} ./cmd/digest
- ${PREFIX}/bin/registry-api-descriptor-template: $(wildcard **/*.go)
- @echo "+ $@"
- @go build -o $@ ${GO_LDFLAGS} ${GO_GCFLAGS} ./cmd/registry-api-descriptor-template
- docs/spec/api.md: docs/spec/api.md.tmpl ${PREFIX}/bin/registry-api-descriptor-template
- ./bin/registry-api-descriptor-template $< > $@
- vet:
- @echo "+ $@"
- @go vet -tags "${DOCKER_BUILDTAGS}" $(PKGS)
- fmt:
- @echo "+ $@"
- @test -z "$$(gofmt -s -l . 2>&1 | grep -v ^vendor/ | tee /dev/stderr)" || \
- (echo >&2 "+ please format Go code with 'gofmt -s'" && false)
- lint:
- @echo "+ $@"
- $(if $(GOLINT), , \
- $(error Please install golint: `go get -u github.com/golang/lint/golint`))
- @test -z "$$($(GOLINT) ./... 2>&1 | grep -v ^vendor/ | tee /dev/stderr)"
- build:
- @echo "+ $@"
- @go build -tags "${DOCKER_BUILDTAGS}" -v ${GO_LDFLAGS} $(PKGS)
- test:
- @echo "+ $@"
- @go test -test.short -tags "${DOCKER_BUILDTAGS}" $(PKGS)
- test-full:
- @echo "+ $@"
- @go test -tags "${DOCKER_BUILDTAGS}" $(PKGS)
- binaries: ${PREFIX}/bin/registry ${PREFIX}/bin/digest ${PREFIX}/bin/registry-api-descriptor-template
- @echo "+ $@"
- clean:
- @echo "+ $@"
- @rm -rf "${PREFIX}/bin/registry" "${PREFIX}/bin/digest" "${PREFIX}/bin/registry-api-descriptor-template"
- dep-save:
- @echo "+ $@"
- $(if $(GODEP), , \
- $(error Please install godep: go get github.com/tools/godep))
- @$(GODEP) save $(PKGS)
- dep-restore:
- @echo "+ $@"
- $(if $(GODEP), , \
- $(error Please install godep: go get github.com/tools/godep))
- @$(GODEP) restore -v
- dep-validate: dep-restore
- @echo "+ $@"
- @rm -Rf .vendor.bak
- @mv vendor .vendor.bak
- @rm -Rf Godeps
- @$(GODEP) save ./...
- @test -z "$$(diff -r vendor .vendor.bak 2>&1 | tee /dev/stderr)" || \
- (echo >&2 "+ borked dependencies! what you have in Godeps/Godeps.json does not match with what you have in vendor" && false)
- @rm -Rf .vendor.bak
|