Files
mapsize/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