shake
minimal build system that generates Ninja build files
git clone https://9o.is/git/shake.git
commit 9355ef0d7c4c2ee7e869f95a8bce45d14935d5ee parent 7150ba7ee340879ddeb2af280858b59c8dba102b Author: Jul <jul@9o.is> Date: Thu, 12 Mar 2026 22:01:51 +0800 prefix ninja default values from shell to awk Diffstat:
| M | shake | | | 3 | +-- |
| M | shakeout.awk | | | 14 | ++++++++++---- |
2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/shake b/shake @@ -182,8 +182,7 @@ rule() { } default() { - prefix _v $dir $1 - printf 'shake:default %s\n' "$_v" + printf 'shake:default %s\n' "$*" } phony() { diff --git a/shakeout.awk b/shakeout.awk @@ -1,16 +1,21 @@ -function print_tail(start, i) { +function print_tail(start, i, ch) { for(i=start; i<=NF; i++) { - printf " %s", $i + if (prefix != "" && $i !~ /^($|.\/|\/)/) + printf " %s/%s", prefix, $i + else + printf " %s", $i } } function reset() { state = "" + prefix = "" printf "\n" } BEGIN { state = "" + prefix = "" } /^shake:build / { @@ -39,9 +44,10 @@ BEGIN { /^shake:default / { reset() - printf "default %s", $2 - print_tail(3) + printf "default" state = "inline" + prefix = "$dir" + print_tail(2) next }