# Copyright 2021 The Gc Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

.PHONY:	all build_all_targets clean edit editor tmp tmp2

all:

build_all_targets:
	GOOS=darwin GOARCH=amd64 go build -v ./...
	GOOS=darwin GOARCH=arm64 go build -v ./...
	GOOS=freebsd GOARCH=386 go build -v ./...
	GOOS=freebsd GOARCH=amd64 go build -v ./...
	GOOS=freebsd GOARCH=arm go build -v ./...
	GOOS=freebsd GOARCH=arm64 go build -v ./...
	GOOS=linux GOARCH=386 go build -v ./...
	GOOS=linux GOARCH=amd64 go build -v ./...
	GOOS=linux GOARCH=arm go build -v ./...
	GOOS=linux GOARCH=arm64 go build -v ./...
	GOOS=linux GOARCH=ppc64le go build -v ./...
	GOOS=linux GOARCH=riscv64 go build -v ./...
	GOOS=linux GOARCH=s390x go build -v ./...
	GOOS=netbsd GOARCH=amd64 go build -v ./...
	GOOS=netbsd GOARCH=arm go build -v ./...
	GOOS=netbsd GOARCH=386 go build -v ./...
	GOOS=openbsd GOARCH=amd64 go build -v ./...
	GOOS=openbsd GOARCH=arm64 go build -v ./...
	GOOS=openbsd GOARCH=386 go build -v ./...
	GOOS=windows GOARCH=386 go build -v ./...
	GOOS=windows GOARCH=amd64 go build -v ./...
	GOOS=windows GOARCH=arm64 go build -v ./...

clean:
	rm -f log-* cpu.test mem.test *.out
	go clean

edit:
	@touch log
	@if [ -f "Session.vim" ]; then gvim -S & else gvim -p Makefile go.mod builder.json *.go & fi

editor:
	go generate
	gofmt -l -s -w *.go
	go test -c -o /dev/null
	go install -v | tee log-editor

tmp:
	go test -v -run TestParser -trcerror -trc 2>&1 | tee log
	grep -a '^TODO' log | sort | uniq -c | sort -n | tee log-2
	grep -a 'TOTAL\|\[^"\]\<FAIL\>\|\<PASS\>' log || true

tmp2:
	GOMAXPROCS=1 go test -v -run TestParser/ -trcerror -typecheck -trc 2>&1 | tee log
	grep -a '^TODO' log | sort | uniq -c | sort -n | tee log-2
	grep -a 'TOTAL\|\[^"\]\<FAIL\>\|\<PASS\>' log || true
