# SPDX-FileCopyrightText: 2022 Amolith <amolith@secluded.site>
#
# SPDX-License-Identifier: CC0-1.0

TAG=$(git describe --tags $(git rev-list --tags --max-count=1))

.PHONY: default clean all aix dragonfly darwin freebsd illumos netbsd linux openbsd plan9 solaris windows

default:
	go build -o out/earl .

clean:
	rm -rf out

release: clean all
	if ! [ -f "$HOME/.config/hut/config" ] ; then $(secret-tool lookup Title 'SourceHut API Key') | hut init ; fi
	for i in out/* ; do hut git artifact upload -r earl "$i" --revision $(TAG) ; done
	for i in out/* ; do curl -H "Authorization: Bearer $(secret-tool lookup Title 'earl')" "https://earl.run/update?oldName=$(basename $i)&name=$(basename $i)&url=https%3A%2F%2Fgit.sr.ht%2F~amolith%2Fearl%2Frefs%2Fdownload%2F$TAG%2F$(basename $i)" ; done

all: darwin dragonfly freebsd illumos netbsd openbsd plan9 linux solaris windows

aix:
	GOOS=aix GOARCH=ppc64 CGO_ENABLED=0 go build -o out/earl-aix-ppc64 .

darwin:
	GOOS=darwin GOARCH=amd64 CGO_ENABLED=0 go build -o out/earl-darwin-amd64 .
	GOOS=darwin GOARCH=arm64 CGO_ENABLED=0 go build -o out/earl-darwin-arm64 .

dragonfly:
	GOOS=dragonfly GOARCH=amd64 CGO_ENABLED=0 go build -o out/earl-dragonfly-amd64 .

freebsd:
	GOOS=freebsd GOARCH=386 CGO_ENABLED=0 go build -o out/earl-freebsd-i386 .
	GOOS=freebsd GOARCH=amd64 CGO_ENABLED=0 go build -o out/earl-freebsd-amd64 .
	GOOS=freebsd GOARCH=arm CGO_ENABLED=0 go build -o out/earl-freebsd-arm .

illumos:
	GOOS=illumos GOARCH=amd64 CGO_ENABLED=0 go build -o out/earl-illumos-amd64 .

linux:
	GOOS=linux GOARCH=386 CGO_ENABLED=0 go build -o out/earl-linux-i386 .
	GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o out/earl-linux-amd64 .
	GOOS=linux GOARCH=arm CGO_ENABLED=0 go build -o out/earl-linux-arm .
	GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o out/earl-linux-arm64 .
	GOOS=linux GOARCH=ppc64 CGO_ENABLED=0 go build -o out/earl-linux-ppc64 .
	GOOS=linux GOARCH=ppc64le CGO_ENABLED=0 go build -o out/earl-linux-ppc64le .
	GOOS=linux GOARCH=mips CGO_ENABLED=0 go build -o out/earl-linux-mips .
	GOOS=linux GOARCH=mipsle CGO_ENABLED=0 go build -o out/earl-linux-mipsle .
	GOOS=linux GOARCH=mips64 CGO_ENABLED=0 go build -o out/earl-linux-mips64 .
	GOOS=linux GOARCH=mips64le CGO_ENABLED=0 go build -o out/earl-linux-mips64le .
	GOOS=linux GOARCH=riscv64 CGO_ENABLED=0 go build -o out/earl-linux-riscv64 .
	GOOS=linux GOARCH=s390x CGO_ENABLED=0 go build -o out/earl-linux-s390x .

netbsd:
	GOOS=netbsd GOARCH=386 CGO_ENABLED=0 go build -o out/earl-netbsd-i386 .
	GOOS=netbsd GOARCH=amd64 CGO_ENABLED=0 go build -o out/earl-netbsd-amd64 .
	GOOS=netbsd GOARCH=arm CGO_ENABLED=0 go build -o out/earl-netbsd-arm .

openbsd:
	GOOS=openbsd GOARCH=386 CGO_ENABLED=0 go build -o out/earl-openbsd-i386 .
	GOOS=openbsd GOARCH=amd64 CGO_ENABLED=0 go build -o out/earl-openbsd-amd64 .
	GOOS=openbsd GOARCH=arm CGO_ENABLED=0 go build -o out/earl-openbsd-arm .
	GOOS=openbsd GOARCH=arm64 CGO_ENABLED=0 go build -o out/earl-openbsd-arm64 .

plan9:
	GOOS=plan9 GOARCH=386 CGO_ENABLED=0 go build -o out/earl-plan9-i386 .
	GOOS=plan9 GOARCH=amd64 CGO_ENABLED=0 go build -o out/earl-plan9-amd64 .
	GOOS=plan9 GOARCH=arm CGO_ENABLED=0 go build -o out/earl-plan9-arm .

solaris:
	GOOS=solaris GOARCH=amd64 CGO_ENABLED=0 go build -o out/earl-solaris-amd64 .

windows:
	GOOS=windows GOARCH=386 CGO_ENABLED=0 go build -o out/earl-windows-i386.exe .
	GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -o out/earl-windows-amd64.exe .
	GOOS=windows GOARCH=arm CGO_ENABLED=0 go build -o out/earl-windows-arm.exe .
	GOOS=windows GOARCH=arm64 CGO_ENABLED=0 go build -o out/earl-windows-arm64.exe .
