|
1 | 1 | CMD_PATH := cmd/git-remote-https+iap |
2 | 2 | CMD_NAME := git-remote-https+iap |
| 3 | +BUILD_TARGETS := \ |
| 4 | + darwin-amd64 \ |
| 5 | + linux-amd64 |
3 | 6 |
|
4 | | -BIN_PATH := dist/bin/ |
| 7 | +DIST_PATH := dist/ |
| 8 | +BIN_PATH := $(DIST_PATH)bin/ |
| 9 | +RELEASE_PATH := $(DIST_PATH)releases/ |
5 | 10 |
|
6 | 11 | version := $(shell git describe --match "v*.*" --abbrev=7 --tags --dirty) |
7 | 12 | build_args := -ldflags "-X main.version=${version}" |
| 13 | +tar_xform_arg := $(shell tar --version | grep -q 'GNU tar' && echo '--xform' || echo '-s') |
| 14 | +tar_xform_cmd := $(shell tar --version | grep -q 'GNU tar' && echo 's') |
8 | 15 |
|
9 | 16 | .PHONY: all |
10 | 17 | all: build |
11 | 18 |
|
12 | | -$(BIN_PATH): |
| 19 | +$(BIN_PATH) $(RELEASE_PATH): |
13 | 20 | mkdir -p $@ |
14 | 21 |
|
15 | | -build: $(BIN_PATH) |
16 | | - env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build ${build_args} -o $(BIN_PATH)${CMD_NAME}-darwin-amd64 ${CMD_PATH}/*.go |
17 | | - env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ${build_args} -o $(BIN_PATH)${CMD_NAME}-linux-amd64 ${CMD_PATH}/*.go |
| 22 | +BUILDS := $(foreach target, $(BUILD_TARGETS), $(BIN_PATH)$(CMD_NAME)-$(target)) |
| 23 | +$(BUILDS): OS = $(word 1, $(subst -, ,$(subst $(CMD_NAME)-,,$(notdir $@)))) |
| 24 | +$(BUILDS): ARCH = $(word 2, $(subst -, ,$(subst $(CMD_NAME)-,,$(notdir $@)))) |
| 25 | +$(BUILDS): $(BIN_PATH) |
| 26 | + env CGO_ENABLED=0 GOOS=$(OS) GOARCH=$(ARCH) go build ${build_args} -o $(BIN_PATH)${CMD_NAME}-$(OS)-$(ARCH) ${CMD_PATH}/*.go |
| 27 | +build: $(BUILDS) |
| 28 | + |
| 29 | +RELEASE_INCLUDES = README.md |
| 30 | +RELEASE_TARGETS := $(foreach target, $(BUILDS), $(RELEASE_PATH)$(notdir $(target))-$(version).tar.gz) |
| 31 | +$(RELEASE_TARGETS): $(RELEASE_PATH)%-$(version).tar.gz: $(BIN_PATH)% $(RELEASE_INCLUDES) |
| 32 | + mkdir -p $(RELEASE_PATH) |
| 33 | + tar $(tar_xform_arg) '$(tar_xform_cmd)!$(BIN_PATH)$(CMD_NAME).*!$(CMD_NAME)!' -czf $@ $^ |
| 34 | + cd $(RELEASE_PATH) && shasum -a 256 $(notdir $@) >$(notdir $@).sha256 |
| 35 | +release: $(RELEASE_TARGETS) |
18 | 36 |
|
19 | 37 | .PHONY: version |
20 | 38 | version: |
21 | 39 | @echo "$(version)" |
22 | 40 |
|
23 | 41 | .PHONY: clean |
24 | 42 | clean: |
25 | | - rm -rf $(BIN_PATH) |
| 43 | + rm -rf $(DIST_PATH) |
0 commit comments