@@ -6,8 +6,14 @@ ifeq ($(UNAME_S),Linux)
66 OS: = linux
77endif
88UNAME_M: = $(shell uname -m)
9- ifeq ($(UNAME_M ) ,x86_64)
10- ARCH: = amd64
9+ ifeq ($(UNAME_M ) , x86_64)
10+ ARCH ?= amd64
11+ else ifeq ($(UNAME_M), arm64)
12+ ARCH ?= arm64
13+ else ifeq ($(UNAME_M), aarch64)
14+ ARCH ?= arm64
15+ else
16+ $(error the "$(UNAME_M)" arch is not supported)
1117endif
1218
1319BINARY: = k8s-vault
@@ -16,33 +22,45 @@ TARGET:= src/cli
1622RELEASE_DIR: = releases
1723OUTPUT: = ./$(RELEASE_DIR ) /$(BINARY ) -$(VERSION ) -$(OS ) -$(ARCH )
1824
19- .PHONY : all clean version prepare
25+ .PHONY : all clean version prepare help
2026
21- all : clean prepare releases
27+ all : clean prepare releases # # Builds everything
2228
23- releases : prepare version $(TARGET ) pack docker
24- docker run -it --rm -v ${PWD} /$(RELEASE_DIR ) :/app --entrypoint " sh" $(BINARY ) :$(VERSION ) -c " cp /bin/$( BINARY) /app/$( BINARY) -$( VERSION) -linux-amd64"
29+ help : # # Show this help
30+ @echo
31+ @printf ' \033[34mtargets:\033[0m\n'
32+ @grep -hE ' ^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST ) | \
33+ sort | \
34+ awk ' BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
2535
26- docker :
27- docker build -t $(BINARY ) :$(VERSION ) .
28- docker tag $(BINARY ) :$(VERSION ) $(BINARY ) :latest
36+ releases : prepare version $(TARGET ) pack docker docker_arm64 # # Builds releases
37+ docker run -it --rm --platform linux/amd64 -v ${PWD} /$(RELEASE_DIR ) :/app --entrypoint " sh" $(BINARY ) :$(VERSION ) -amd64 -c " cp /bin/$( BINARY) /app/$( BINARY) -$( VERSION) -linux-amd64"
38+ docker run -it --rm --platform linux/arm64 -v ${PWD} /$(RELEASE_DIR ) :/app --entrypoint " sh" $(BINARY ) :$(VERSION ) -arm64 -c " cp /bin/$( BINARY) /app/$( BINARY) -$( VERSION) -linux-arm64"
39+
40+ docker : # # Builds docker image amd64
41+ docker build --platform linux/amd64 -t $(BINARY ) :$(VERSION ) -amd64 .
42+ docker tag $(BINARY ) :$(VERSION ) -amd64 $(BINARY ) :latest-amd64
43+
44+ docker_arm64 : # # Builds docker image for arm64
45+ docker build --platform linux/arm64 -t $(BINARY ) :$(VERSION ) -arm64 .
46+ docker tag $(BINARY ) :$(VERSION ) -arm64 $(BINARY ) :latest-arm64
2947
3048prepare :
3149 @if [ ! -d ./$( RELEASE_DIR) ]; then mkdir ./$(RELEASE_DIR ) ; fi
3250
33- clean :
51+ clean : # # Removes release directory
3452 @rm -f ./$(RELEASE_DIR ) /*
3553 @echo >&2 " cleaned up"
3654
37- version :
55+ version : # # Updates the version
3856 @sed -i " " ' s/^version:.*/version: "$(VERSION)"/g' k8s-vault_example.yaml
3957 @sed -i " " ' s/^version:.*/version: $(VERSION)/g' shard.yml
4058 @echo " shard.yml updated with version $( VERSION) "
4159
4260$(TARGET ) : % : prepare $(filter-out $(TEMPS ) , $(OBJ ) ) % .cr
4361 @crystal build src/cli.cr -o $(OUTPUT ) --progress --release
4462 @rm ./$(RELEASE_DIR ) /* .dwarf
45- @echo " compiled binaries places to \" ./$( RELEASE_DIR) \" directory"
63+ @echo " compiled binaries placed to \" ./$( RELEASE_DIR) \" directory"
4664
47- pack :
65+ pack : # # Runs UPX on locally built binary
4866 @find ./$(RELEASE_DIR ) -type f -name " $( BINARY) -$( VERSION) -$( OS) -$( ARCH) " | xargs upx
0 commit comments