46 lines
1.3 KiB
Makefile
46 lines
1.3 KiB
Makefile
# Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
# gasm-devkit — developer tooling for Go's Plan 9 assembler (GAsm).
|
|
|
|
version := "0.26.0"
|
|
|
|
default:
|
|
@just --list
|
|
|
|
# Download module dependencies.
|
|
install:
|
|
go mod download
|
|
|
|
# Vet + gofmt check — zero errors, zero warnings.
|
|
build:
|
|
go vet ./...
|
|
@test -z "$(gofmt -l .)" || { echo "gofmt diff:"; gofmt -l .; exit 1; }
|
|
|
|
# Full test suite + race detector + 80 % coverage gate.
|
|
test:
|
|
go test -race -count=1 -coverprofile=coverage.out ./...
|
|
go tool cover -func=coverage.out | awk '/^total:/{gsub("%","",$3);if($3+0<80){print "coverage "$3"% < 80%";exit 1}print "coverage "$3"%"}'
|
|
|
|
# Format all Go sources.
|
|
fmt:
|
|
gofmt -w .
|
|
|
|
# Run the gasm CLI (pass args after --, e.g. `just run -- lint file.s`).
|
|
run *ARGS:
|
|
go run -ldflags "-X main.version={{version}}" ./cmd/gasm {{ARGS}}
|
|
|
|
# Install the gasm binary into $GOBIN (stamped with the release version).
|
|
install-bin:
|
|
go install -ldflags "-X main.version={{version}}" ./cmd/gasm
|
|
|
|
# Regenerate the architecture instruction tables from the Go toolchain source.
|
|
gen:
|
|
go run _gen/gen.go
|
|
gofmt -w arch/
|
|
|
|
# Remove build artefacts.
|
|
uninstall:
|
|
rm -f coverage.out gasm
|
|
find . -name '*.test' -delete
|