.PHONY: fmt test race vet build verify network-demo e11-demo custody-demo serve clean

fmt:
	gofmt -w $$(find . -name '*.go' -type f -not -path './.e11-*/*')

test:
	go test -count=1 ./...

race:
	go test -race -count=1 ./...

vet:
	go vet ./...

build:
	mkdir -p dist
	CGO_ENABLED=0 go build -trimpath -buildvcs=false -ldflags=-buildid= -o dist/one-market ./cmd/one-market
	CGO_ENABLED=0 go build -trimpath -buildvcs=false -ldflags=-buildid= -o dist/one-marketctl ./cmd/one-marketctl
	CGO_ENABLED=0 go build -trimpath -buildvcs=false -ldflags=-buildid= -o dist/one-market-bft ./cmd/one-market-bft
	CGO_ENABLED=0 go build -trimpath -buildvcs=false -ldflags=-buildid= -o dist/one-market-bft-node ./cmd/one-market-bft-node
	CGO_ENABLED=0 go build -trimpath -buildvcs=false -ldflags=-buildid= -o dist/one-market-bft-network-demo ./cmd/one-market-bft-network-demo
	CGO_ENABLED=0 go build -trimpath -buildvcs=false -ldflags=-buildid= -o dist/one-market-e11-demo ./cmd/one-market-e11-demo
	CGO_ENABLED=0 go build -trimpath -buildvcs=false -ldflags=-buildid= -o dist/one-market-key-custody-demo ./cmd/one-market-key-custody-demo

verify:
	python3 verification/verify_e11.py

network-demo: build
	./dist/one-market-bft-network-demo --node-binary ./dist/one-market-bft-node

e11-demo: build
	./dist/one-market-e11-demo --node-binary ./dist/one-market-bft-node

custody-demo: build
	./dist/one-market-key-custody-demo

serve:
	go run ./cmd/one-market

clean:
	rm -rf dist verification/out-e11 verification/e11 .e11-build-a .e11-build-b .cache

.PHONY: verify-e13 demo-e13 test-e13
verify-e13:
	PYTHONHASHSEED=1313 python3 verification/verify_e13.py

demo-e13:
	go run ./cmd/one-market-e13-demo

test-e13:
	go test -race -count=1 ./internal/frostp256 ./internal/frostprovider ./internal/evidenceadmission

.PHONY: verify-e14 demo-e14 test-e14
verify-e14:
	PYTHONHASHSEED=1414 python3 verification/verify_e14.py

demo-e14:
	go run ./cmd/one-market-e14-demo

test-e14:
	go test -race -count=1 ./internal/ctscalar ./internal/frostp256ct ./internal/dkgp256 ./internal/frostproviderct ./internal/reviewqual ./internal/ctaudit
