-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
120 lines (97 loc) · 3.8 KB
/
Makefile
File metadata and controls
120 lines (97 loc) · 3.8 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
.POSIX:
.SUFFIXES:
NAME=edgectl
VERSION=$(shell git describe --always --match v[0-9]* HEAD)
VERSION_NUMBER=$(shell echo $(VERSION) | cut -c2- )
OUT_DIR=build
PACKAGE_DIR=$(OUT_DIR)/$(NAME)-$(VERSION)
SECRET_KEY_PATH ?= ~/Documents/certificates
ifeq ($(shell uname -sm),Darwin arm64)
CARGO_NATIVE_TARGET=aarch64-apple-darwin
GH_ARCH=macOS_arm64
GH_EXT=zip
else
CARGO_NATIVE_TARGET=x86_64-unknown-linux-musl
GH_ARCH=linux_amd64
GH_EXT=tar.gz
endif
CARGO_ZIGBUILD_VERSION=0.19.7
CARGO_ZIGBUILD=docker run -e VERSION=$(VERSION) --rm -ti -v $(PWD):/io -w /io ghcr.io/rust-cross/cargo-zigbuild:$(CARGO_ZIGBUILD_VERSION)
.PHONY: deb
deb: $(PACKAGE_DIR).deb
$(OUT_DIR):
@mkdir -p "$@"
$(PACKAGE_DIR): \
$(PACKAGE_DIR)/DEBIAN \
$(PACKAGE_DIR)/usr/share/bash-completion/completions/$(NAME) \
$(PACKAGE_DIR)/usr/local/share/zsh/site-functions/$(NAME) \
$(PACKAGE_DIR)/usr/bin/$(NAME) \
@touch "$@"
$(PACKAGE_DIR)/DEBIAN: \
$(PACKAGE_DIR)/DEBIAN/conffile \
$(PACKAGE_DIR)/DEBIAN/control \
@touch "$@"
$(PACKAGE_DIR)/DEBIAN/control: debian/control
(cat debian/control && echo "Version: $(VERSION_NUMBER)") > "$@"
$(PACKAGE_DIR)/DEBIAN/%: debian/%
@mkdir -p "$(dir $@)"
cp -p "debian/$*" "$@"
$(PACKAGE_DIR)/usr/share/bash-completion/completions/$(NAME): target/$(CARGO_NATIVE_TARGET)/release/$(NAME)
@mkdir -p "$(dir $@)"
COMPLETE=bash $< > $@
$(PACKAGE_DIR)/usr/local/share/zsh/site-functions/$(NAME): target/$(CARGO_NATIVE_TARGET)/release/$(NAME)
@mkdir -p "$(dir $@)"
COMPLETE=zsh $< > $@
$(PACKAGE_DIR)/usr/bin/$(NAME): target/x86_64-unknown-linux-musl/release/$(NAME)
@mkdir -p "$(dir $@)"
cp -l -f $< $@
$(PACKAGE_DIR).deb: $(PACKAGE_DIR)
fakeroot dpkg-deb --build "$(PACKAGE_DIR)"
$(OUT_DIR)/bin/rcodesign:
cargo install apple-codesign --root $(OUT_DIR) --version 0.29.0
target/x86_64-unknown-linux-musl/release/$(NAME): $(shell find src) Cargo.toml Cargo.lock
$(CARGO_ZIGBUILD) cargo zigbuild --release --target x86_64-unknown-linux-musl
target/aarch64-apple-darwin/release/$(NAME): $(shell find src) Cargo.toml Cargo.lock $(OUT_DIR)/bin/rcodesign \
$(SECRET_KEY_PATH)/cert.p12 $(SECRET_KEY_PATH)/cert-secret.txt $(SECRET_KEY_PATH)/api-key.json
$(CARGO_ZIGBUILD) cargo zigbuild --release --target aarch64-apple-darwin
$(OUT_DIR)/bin/rcodesign sign \
--p12-file $(SECRET_KEY_PATH)/cert.p12 \
--p12-password-file $(SECRET_KEY_PATH)/cert-secret.txt \
--for-notarization \
$@
zip -j $(OUT_DIR)/bin/$(NAME)-aarch64-apple-darwin.zip $@
$(OUT_DIR)/bin/rcodesign notary-submit \
--api-key-file $(SECRET_KEY_PATH)/api-key.json \
--wait \
$(OUT_DIR)/bin/$(NAME)-aarch64-apple-darwin.zip
rm $(OUT_DIR)/bin/$(NAME)-aarch64-apple-darwin.zip
$(OUT_DIR)/bin/$(NAME)-%: target/%/release/$(NAME) | $(OUT_DIR)/bin/
cp $< $@
$(OUT_DIR)/ $(OUT_DIR)/bin/ $(OUT_DIR)/tmp/:
mkdir -p $@
GH_VERSION=2.83.1
GH_ARCHIVE=$(OUT_DIR)/tmp/gh_$(GH_VERSION)_$(GH_ARCH).$(GH_EXT)
$(OUT_DIR)/tmp/gh: $(OUT_DIR)/tmp/gh_$(GH_VERSION)_$(GH_ARCH)/bin/gh
cp -f $< $@
$(GH_ARCHIVE): | $(OUT_DIR)/tmp/
curl -L https://github.com/cli/cli/releases/download/v$(GH_VERSION)/gh_$(GH_VERSION)_$(GH_ARCH).$(GH_EXT) -o $@
ifeq ($(GH_EXT),zip)
$(OUT_DIR)/tmp/gh_$(GH_VERSION)_$(GH_ARCH)/bin/gh: $(GH_ARCHIVE)
unzip -o $(GH_ARCHIVE) gh_$(GH_VERSION)_$(GH_ARCH)/bin/gh -d $(OUT_DIR)/tmp/
touch $@
else
$(OUT_DIR)/tmp/gh_$(GH_VERSION)_$(GH_ARCH)/bin/gh: $(GH_ARCHIVE)
tar -xf $(GH_ARCHIVE) --directory $(OUT_DIR)/tmp/ gh_$(GH_VERSION)_$(GH_ARCH)/bin/gh
touch $@
endif
release: $(OUT_DIR)/tmp/gh \
$(OUT_DIR)/bin/$(NAME)-x86_64-unknown-linux-musl \
$(OUT_DIR)/bin/$(NAME)-aarch64-apple-darwin \
$(PACKAGE_DIR).deb \
$(OUT_DIR)/tmp/gh release create --verify-tag --notes-from-tag "$(VERSION)" \
"$(PACKAGE_DIR).deb" \
$(OUT_DIR)/bin/$(NAME)-x86_64-unknown-linux-musl \
$(OUT_DIR)/bin/$(NAME)-aarch64-apple-darwin
.PHONY: clean
clean:
rm -rf "$(OUT_DIR)" target