SHELL := /usr/bin/env bash
.SHELLFLAGS := -eu -o pipefail -c
.DEFAULT_GOAL := help
.DELETE_ON_ERROR:
MAKEFLAGS += --warn-undefined-variables
MAKEFLAGS += --no-builtin-rules
VPATH = src
SRC = $(wildcard *.rs)
VERSION = $(shell cat Cargo.toml | sed -n 's/^version = "\(.*\)"$$/\1/p')
target/aarch64-apple-darwin/release/tlafmt: $(SRC)
cargo build --release --target aarch64-apple-darwin
target/x86_64-unknown-linux-musl/release/tlafmt: $(SRC)
cross build --release --target x86_64-unknown-linux-musl
target/x86_64-pc-windows-gnu/release/tlafmt.exe: $(SRC)
cross build --release --target x86_64-pc-windows-gnu
target/wasm32-unknown-emscripten/release/tlafmt.js target/wasm32-unknown-emscripten/release/tlafmt.wasm: $(SRC)
RUSTFLAGS="-C link-arg=-sNODERAWFS -C link-arg=-sALLOW_MEMORY_GROWTH=1" \
cross build --target wasm32-unknown-emscripten --release
release/tlafmt_v$(VERSION)_x86_64-pc-windows-gnu.exe: target/x86_64-pc-windows-gnu/release/tlafmt.exe
@-mkdir -p $(dir $@)
cp $^ $@
release/tlafmt_v$(VERSION)_wasm32_emscripten.zip: \
target/wasm32-unknown-emscripten/release/tlafmt.js \
target/wasm32-unknown-emscripten/release/tlafmt.wasm
@-mkdir -p $(dir $@)
zip -j "$@" $^
release/tlafmt_v$(VERSION)_%: target/%/release/tlafmt
@-mkdir -p $(dir $@)
cp $^ $@
%.sha256sum: %
sha256sum "$^" > $@
%.tar.gz: %
tar cv "$^" | gzip --best > "$@"
-rm $^
%.zip: %
zip "$@" $^
-rm $^
.PHONY: release
release: release/tlafmt_v$(VERSION)_x86_64-unknown-linux-musl.tar.gz \
release/tlafmt_v$(VERSION)_x86_64-unknown-linux-musl.tar.gz.sha256sum \
release/tlafmt_v$(VERSION)_x86_64-pc-windows-gnu.exe.tar.gz \
release/tlafmt_v$(VERSION)_x86_64-pc-windows-gnu.exe.tar.gz.sha256sum \
release/tlafmt_v$(VERSION)_aarch64-apple-darwin.zip \
release/tlafmt_v$(VERSION)_aarch64-apple-darwin.zip.sha256sum \
release/tlafmt_v$(VERSION)_wasm32_emscripten.zip \
release/tlafmt_v$(VERSION)_wasm32_emscripten.zip.sha256sum
.PHONY: clean
clean:
-rm -rf release
cargo clean
.PHONY: help
help:
@echo "Usage:"
@sed -n 's/^#?//p' ${MAKEFILE_LIST} | column -t -s ':' | sed -e 's/^/ /'