PROG    := ./pandadraw.go
NAME    := pandadraw
AMD64   := x86_64-linux-musl
ARM64   := aarch64-linux-musl
TARGETS := $(AMD64) $(ARCH64)

default:
	@go build -v $(PROG) && ./$(NAME)

freshbuild:
	@rm -rf .pandadraw*

second:
	@go build -v $(PROG) && ./$(NAME) -data .pandadraw2

third:
	@go build -v $(PROG) && ./$(NAME) -data .pandadraw3

release: amd64 arm64 upx

cleanup:
	@rm -rf target

setup: cleanup
	@$(foreach t,$(TARGETS),mkdir -p target/$(t);)

amd64: setup
	@CC="zig cc -target $(AMD64) -lunwind" \
	CGO_ENABLED=1 \
	CGO_LDFLAGS="-static" \
	GOOS=linux GOARCH=amd64 \
	go build -v -a -ldflags '-extldflags "-static" -s -w' \
	-o target/$(AMD64)/$(NAME) $(PROG)

arm64: setup
	@CC="zig cc -target $(ARM64) -lunwind" \
	CGO_ENABLED=1 \
	CGO_LDFLAGS="-static" \
	GOOS=linux GOARCH=arm64 \
	go build -v -a -ldflags '-extldflags "-static" -s -w' \
	-o target/$(ARM64)/$(NAME) $(PROG)

upx:
	@upx --best --lzma target/$(AMD64)/$(NAME)
	@upx --best --lzma target/$(ARM64)/$(NAME)
