55 lines
1.6 KiB
Makefile
55 lines
1.6 KiB
Makefile
PREFIX ?= /usr/local
|
|
VERSION ?= $(shell sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -1)
|
|
|
|
.PHONY: build install man test lint fmt fmt-check benchmark treegen release brew-formula clean
|
|
|
|
build:
|
|
cargo build --release --locked
|
|
|
|
install: build
|
|
install -Dm755 target/release/mapsize $(DESTDIR)$(PREFIX)/bin/mapsize
|
|
install -Dm644 docs/mapsize.1 $(DESTDIR)$(PREFIX)/share/man/man1/mapsize.1
|
|
|
|
man:
|
|
man -l docs/mapsize.1
|
|
|
|
test:
|
|
cargo test --release --locked
|
|
|
|
lint:
|
|
cargo clippy --locked --all-targets -- -D warnings
|
|
|
|
fmt:
|
|
cargo fmt
|
|
|
|
fmt-check:
|
|
cargo fmt --check
|
|
|
|
benchmark:
|
|
cargo run --release --locked --example bench
|
|
|
|
treegen:
|
|
cargo build --release --locked --example treegen
|
|
|
|
# Binaries for every target this host can build (see scripts/build.sh), then
|
|
# archives, Linux packages and SHA256SUMS in dist/release. Tagged releases are
|
|
# built on GitHub's runners by .github/workflows/release.yml instead.
|
|
release:
|
|
scripts/build.sh || true
|
|
scripts/release.sh $(VERSION) dist dist/release
|
|
|
|
# Homebrew formula for the tagged release. The tag must already be pushed:
|
|
# the checksum is of GitHub's source tarball for that tag.
|
|
BREW_REPO := https://github.com/andydixon/mapsize
|
|
brew-formula:
|
|
@set -e; v=$(VERSION); v=$${v#v}; \
|
|
url=$(BREW_REPO)/archive/refs/tags/v$$v.tar.gz; \
|
|
sum=$$(curl -fsSL "$$url" | sha256sum | cut -d' ' -f1) || { echo "cannot fetch $$url (tag pushed?)"; exit 1; }; \
|
|
mkdir -p dist/homebrew; \
|
|
sed -e '/^#/d' -e "s/@VERSION@/$$v/g" -e "s/@SHA256@/$$sum/" packaging/homebrew/mapsize.rb.in > dist/homebrew/mapsize.rb; \
|
|
echo "wrote dist/homebrew/mapsize.rb (v$$v, sha256 $$sum)"
|
|
|
|
clean:
|
|
cargo clean
|
|
rm -rf dist
|