set shell := ["bash", "-euo", "pipefail", "-c"] # Everything is compiled by zig, including the C and C++ dependencies, so a # build needs no system toolchain — but bindgen runs libclang directly and does # not inherit zig's own header search path. `v4l2r` wants `linux/videodev2.h`, # which lives in /usr/include on a machine with kernel headers installed and # nowhere at all on one without. Point it at zig's bundled copies instead. zig_include := `scripts/zig-include` headers := "-I" + zig_include + " -I" + parent_directory(zig_include) + "/x86-linux-gnu -I" + parent_directory(zig_include) + "/generic-glibc" export V4L2R_VIDEODEV2_H_PATH := zig_include export BINDGEN_EXTRA_CLANG_ARGS := headers default: @just --list # The shared objects, ready to be put on a loader search path. build *args: cargo build --release {{args}} test *args: cargo test --workspace {{args}} # Without PipeWire — for a machine that has neither pkg-config nor PipeWire's # headers. Device *names* get worse (ALSA PCMs only); everything else is equal. test-minimal: cargo test --workspace --no-default-features lint: cargo clippy --workspace --all-targets -- -D warnings cargo fmt --all --check # Where a consumer points LD_LIBRARY_PATH. libdir: @echo "{{justfile_directory()}}/target/release"