Previously, only the `install` target in the `justfile` took extra
`*OPTIONS`, which meant you could run `just build install test` (or
`just clean setup build install test` for a clean build). This is much
more convenient than `just build && just install && just test`.
However, sometimes you *do* need extra options for some of those other
targets, so over time they have gained extra arguments. But these
prevent you from chaining the targets together:
$ just clean setup build install test
rm -rf build
meson setup build --prefix="$PWD/outputs/out" $mesonFlags build install test
usage: meson [-h]
{setup,configure,dist,install,introspect,init,test,wrap,subprojects,rewrite,compile,devenv,env2mfile,reprotest,format,fmt,help}
...
meson: error: unrecognized arguments: install test
error: Recipe `setup` failed on line 13 with exit code 2
As a compromise, I've renamed the targets with extra arguments to
include a `-custom` suffix, and added aliases for the old targets to
call the `-custom`-suffixed target with no extra arguments.
This makes it possible to run `just build install test` again, but keeps
the ability to run `just build-custom EXTRA_MESON_BUILD_ARGS`.
BONUS:
- Added `test-unit` and `test-integration`, because I always forget the
arguments to run a particular test suite and the names of those test
suites.
- Added doc comments to `lint` and `lint-fix`.
Change-Id: I61ec66f5e4d38c12bbae4fa226d7b4cea94579d1
55 lines
1.2 KiB
Makefile
55 lines
1.2 KiB
Makefile
# https://just.systems/man/en/
|
|
|
|
# List all available targets
|
|
list:
|
|
just --list
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
rm -rf build
|
|
|
|
# Prepare meson for building with extra options
|
|
setup-custom *OPTIONS:
|
|
meson setup build --prefix="$PWD/outputs/out" $mesonFlags {{ OPTIONS }}
|
|
|
|
# Prepare meson for building
|
|
setup: (setup-custom)
|
|
|
|
# Build lix with extra options
|
|
build-custom *OPTIONS:
|
|
meson compile -C build {{ OPTIONS }}
|
|
|
|
# Build lix
|
|
build: (build-custom)
|
|
|
|
alias compile := build
|
|
|
|
# Install lix for local development with extra options
|
|
install-custom *OPTIONS: (build-custom OPTIONS)
|
|
meson install -C build
|
|
|
|
# Install lix for local development
|
|
install: (install-custom)
|
|
|
|
# Run tests (usually requires `install`) with extra options
|
|
test *OPTIONS:
|
|
meson test -C build --print-errorlogs {{ OPTIONS }}
|
|
|
|
# Run unit tests only
|
|
test-unit *OPTIONS: (test "--suite" "check")
|
|
|
|
# Run integration tests only
|
|
test-integration *OPTIONS: install (test "--suite" "installcheck")
|
|
|
|
alias clang-tidy := lint
|
|
|
|
# Lint with `clang-tidy`
|
|
lint:
|
|
ninja -C build clang-tidy
|
|
|
|
alias clang-tidy-fix := lint-fix
|
|
|
|
# Fix lints with `clang-tidy-fix`
|
|
lint-fix:
|
|
ninja -C build clang-tidy-fix
|