From 2a03ef21ad0a71ea58854ecb6ddf96fd395c594e Mon Sep 17 00:00:00 2001 From: Ian Fijolek Date: Tue, 1 Dec 2020 17:45:16 -0800 Subject: [PATCH] Further parameterize Makefile to make it easier for me to reuse --- Makefile | 69 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/Makefile b/Makefile index db257f9..51aa15b 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,5 @@ -DOCKER_TAG ?= dockron-dev-${USER} +OUTPUT ?= dockron +DOCKER_TAG ?= $(OUTPUT)-dev-$(USER) GIT_TAG_NAME := $(shell git tag -l --contains HEAD) GIT_SHA := $(shell git rev-parse HEAD) VERSION := $(if $(GIT_TAG_NAME),$(GIT_TAG_NAME),$(GIT_SHA)) @@ -42,45 +43,45 @@ check: pre-commit run --all-files # Output target -dockron: $(GOFILES) +$(OUTPUT): $(GOFILES) @echo Version: $(VERSION) - go build -ldflags '-X "main.version=${VERSION}"' -o dockron + go build -ldflags '-X "main.version=$(VERSION)"' -o $(OUTPUT) # Alias for building .PHONY: build -build: dockron +build: $(OUTPUT) -dockron-darwin-amd64: $(GOFILES) +$(OUTPUT)-darwin-amd64: $(GOFILES) GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 \ - go build -ldflags '-X "main.version=${VERSION}"' -a -installsuffix nocgo \ - -o dockron-darwin-amd64 + go build -ldflags '-X "main.version=$(VERSION)"' -a -installsuffix nocgo \ + -o $(OUTPUT)-darwin-amd64 -dockron-linux-amd64: $(GOFILES) +$(OUTPUT)-linux-amd64: $(GOFILES) GOOS=linux GOARCH=amd64 CGO_ENABLED=0 \ - go build -ldflags '-X "main.version=${VERSION}"' -a -installsuffix nocgo \ - -o dockron-linux-amd64 + go build -ldflags '-X "main.version=$(VERSION)"' -a -installsuffix nocgo \ + -o $(OUTPUT)-linux-amd64 -dockron-linux-arm: $(GOFILES) +$(OUTPUT)-linux-arm: $(GOFILES) GOOS=linux GOARCH=arm CGO_ENABLED=0 \ - go build -ldflags '-X "main.version=${VERSION}"' -a -installsuffix nocgo \ - -o dockron-linux-arm + go build -ldflags '-X "main.version=$(VERSION)"' -a -installsuffix nocgo \ + -o $(OUTPUT)-linux-arm -dockron-linux-arm64: $(GOFILES) +$(OUTPUT)-linux-arm64: $(GOFILES) GOOS=linux GOARCH=arm64 CGO_ENABLED=0 \ - go build -ldflags '-X "main.version=${VERSION}"' -a -installsuffix nocgo \ - -o dockron-linux-arm64 + go build -ldflags '-X "main.version=$(VERSION)"' -a -installsuffix nocgo \ + -o $(OUTPUT)-linux-arm64 .PHONY: build-linux-static -build-linux-static: dockron-linux-amd64 dockron-linux-arm dockron-linux-arm64 +build-linux-static: $(OUTPUT)-linux-amd64 $(OUTPUT)-linux-arm $(OUTPUT)-linux-arm64 .PHONY: build-all-static -build-all-static: dockron-darwin-amd64 build-linux-static +build-all-static: $(OUTPUT)-darwin-amd64 build-linux-static # Cleans all build artifacts .PHONY: clean clean: - rm -f dockron - rm -f dockron-linux-* + rm -f $(OUTPUT) + rm -f $(OUTPUT)-linux-* # Cleans vendor directory .PHONY: clean-vendor @@ -88,17 +89,17 @@ clean-vendor: rm -fr ./vendor .PHONY: docker-build -docker-build: dockron-linux-amd64 - docker build . -t ${DOCKER_TAG}-linux-amd64 +docker-build: $(OUTPUT)-linux-amd64 + docker build . -t $(DOCKER_TAG)-linux-amd64 # Cross build for arm architechtures .PHONY: docker-build-arm -docker-build-arm: dockron-linux-arm - docker build --build-arg REPO=arm32v7 --build-arg ARCH=arm . -t ${DOCKER_TAG}-linux-arm +docker-build-arm: $(OUTPUT)-linux-arm + docker build --build-arg REPO=arm32v7 --build-arg ARCH=arm . -t $(DOCKER_TAG)-linux-arm .PHONY: docker-build-arm -docker-build-arm64: dockron-linux-arm64 - docker build --build-arg REPO=arm64v8 --build-arg ARCH=arm64 . -t ${DOCKER_TAG}-linux-arm64 +docker-build-arm64: $(OUTPUT)-linux-arm64 + docker build --build-arg REPO=arm64v8 --build-arg ARCH=arm64 . -t $(DOCKER_TAG)-linux-arm64 .PHONY: docker-run docker-run: docker-build @@ -107,30 +108,30 @@ docker-run: docker-build # Cross run on host architechture .PHONY: docker-run-arm docker-run-arm: docker-build-arm - docker run --rm -v /var/run/docker.sock:/var/run/docker.sock --name $(DOCKER_TAG)-run ${DOCKER_TAG}-linux-arm + docker run --rm -v /var/run/docker.sock:/var/run/docker.sock --name $(DOCKER_TAG)-run $(DOCKER_TAG)-linux-arm .PHONY: docker-run-arm64 docker-run-arm64: docker-build-arm64 - docker run --rm -v /var/run/docker.sock:/var/run/docker.sock --name $(DOCKER_TAG)-run ${DOCKER_TAG}-linux-arm64 + docker run --rm -v /var/run/docker.sock:/var/run/docker.sock --name $(DOCKER_TAG)-run $(DOCKER_TAG)-linux-arm64 # Multi stage builds .PHONY: docker-staged-build docker-staged-build: - docker build --build-arg VERSION=${VERSION} \ - -t ${DOCKER_TAG}-linux-amd64 \ + docker build --build-arg VERSION=$(VERSION) \ + -t $(DOCKER_TAG)-linux-amd64 \ -f Dockerfile.multi-stage . # Cross build for arm architechtures .PHONY: docker-staged-build-arm docker-staged-build-arm: - docker build --build-arg VERSION=${VERSION} \ - --build-arg REPO=arm32v7 --build-arg ARCH=arm -t ${DOCKER_TAG}-linux-arm \ + docker build --build-arg VERSION=$(VERSION) \ + --build-arg REPO=arm32v7 --build-arg ARCH=arm -t $(DOCKER_TAG)-linux-arm \ -f Dockerfile.multi-stage . .PHONY: docker-staged-build-arm docker-staged-build-arm64: - docker build --build-arg VERSION=${VERSION} \ - --build-arg REPO=arm64v8 --build-arg ARCH=arm64 -t ${DOCKER_TAG}-linux-arm64 \ + docker build --build-arg VERSION=$(VERSION) \ + --build-arg REPO=arm64v8 --build-arg ARCH=arm64 -t $(DOCKER_TAG)-linux-arm64 \ -f Dockerfile.multi-stage . .PHONY: docker-example