forked from Z-Bra0/Ski
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
67 lines (53 loc) · 2.17 KB
/
Copy pathMakefile
File metadata and controls
67 lines (53 loc) · 2.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
.PHONY: build test fmt clean release assert-release-version release-darwin-arm64 release-darwin-amd64 release-linux-amd64 release-linux-arm64
VERSION ?= dev
BIN := dist/ski
GO_SOURCES := $(shell find cmd internal -name '*.go')
BUILD_INPUTS := $(GO_SOURCES) go.mod go.sum Makefile
VERSION_STAMP := dist/.version-$(VERSION)
LDFLAGS := -X github.com/Z-Bra0/Ski/internal/buildinfo.Version=$(VERSION)
RELEASE_PLATFORMS := darwin-arm64 darwin-amd64 linux-amd64 linux-arm64
RELEASE_ARCHIVES := $(foreach platform,$(RELEASE_PLATFORMS),dist/ski_$(VERSION)_$(subst -,_,$(platform)).tar.gz)
CHECKSUMS_FILE := dist/ski_$(VERSION)_checksums.txt
build: $(BIN)
$(VERSION_STAMP):
mkdir -p dist
rm -f dist/.version-*
touch $@
$(BIN): $(BUILD_INPUTS) $(VERSION_STAMP)
go build -ldflags "$(LDFLAGS)" -o $(BIN) ./cmd/ski
test:
go test ./...
fmt:
gofmt -w $(GO_SOURCES)
clean:
rm -rf dist/*
touch dist/.gitkeep
assert-release-version:
@if [ "$(VERSION)" = "dev" ]; then \
echo "VERSION is required for release, for example: make release VERSION=0.2.1"; \
exit 1; \
fi
release: assert-release-version $(RELEASE_PLATFORMS:%=release-%)
@if command -v shasum >/dev/null 2>&1; then \
cd dist && shasum -a 256 $(notdir $(RELEASE_ARCHIVES)) > $(notdir $(CHECKSUMS_FILE)); \
elif command -v sha256sum >/dev/null 2>&1; then \
cd dist && sha256sum $(notdir $(RELEASE_ARCHIVES)) > $(notdir $(CHECKSUMS_FILE)); \
else \
echo "shasum or sha256sum is required to generate release checksums"; \
exit 1; \
fi
release-darwin-arm64: assert-release-version $(BUILD_INPUTS)
$(call build_release,darwin,arm64)
release-darwin-amd64: assert-release-version $(BUILD_INPUTS)
$(call build_release,darwin,amd64)
release-linux-amd64: assert-release-version $(BUILD_INPUTS)
$(call build_release,linux,amd64)
release-linux-arm64: assert-release-version $(BUILD_INPUTS)
$(call build_release,linux,arm64)
define build_release
rm -rf dist/ski_$(VERSION)_$(1)_$(2)
mkdir -p dist/ski_$(VERSION)_$(1)_$(2)
GOOS=$(1) GOARCH=$(2) go build -ldflags "$(LDFLAGS)" -o dist/ski_$(VERSION)_$(1)_$(2)/ski ./cmd/ski
cp LICENSE dist/ski_$(VERSION)_$(1)_$(2)/
tar -czf dist/ski_$(VERSION)_$(1)_$(2).tar.gz -C dist ski_$(VERSION)_$(1)_$(2)
endef