shake

minimal build system that generates Ninja build files

git clone https://9o.is/git/shake.git

commit c796107a7064bccfc94e1e1f11628f874914142a
parent 7f3edf3c9045ef41046eeefd4f6094a56a801c91
Author: Jul <jul@9o.is>
Date:   Tue, 17 Mar 2026 00:12:29 +0800

reserve $in and $out variables

Diffstat:
Mexample/nested/Shakefile | 12++++++------
Mexample/simple/Shakefile | 12++++++------
Mshake | 3+++
3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/example/nested/Shakefile b/example/nested/Shakefile @@ -4,14 +4,14 @@ var PREFIX ${PREFIX:-/usr/local} var DESTDIR ${DESTDIR:-} var LIBDIR $dir/lib -rule cc '$CC $CFLAGS -c $in -o $out' - bind description 'CC $in' +rule cc $CC $CFLAGS -c $in -o $out + bind description CC $in -rule link '$CC $in -o $out' - bind description 'LINK $out' +rule link $CC $in -o $out + bind description LINK $out -rule ar 'ar rcs $out $in' - bind description 'AR $out' +rule ar ar rcs $out $in + bind description AR $out shake lib shake bin diff --git a/example/simple/Shakefile b/example/simple/Shakefile @@ -3,14 +3,14 @@ var CFLAGS ${CFLAGS:--Wall -Wextra -g} var PREFIX ${PREFIX:-/usr/local} var DESTDIR ${DESTDIR:-} -rule cc '$CC $CFLAGS -c $in -o $out' - bind description 'CC $in' +rule cc $CC $CFLAGS -c $in -o $out + bind description CC $in -rule link '$CC $in -o $out' - bind description 'LINK $out' +rule link $CC $in -o $out + bind description LINK $out -rule cp 'cp -f $in $out' - bind description 'CP $in' +rule cp cp -f $in $out + bind description CP $in cc main.o: main.c cc hello.o: hello.c diff --git a/shake b/shake @@ -411,6 +411,9 @@ if [ "$TARGET" ]; then set_target_route $TARGET fi +in='$in' +out='$out' + _shake_open var ninja_required_version 1.8 var builddir $SHAKEDIR