~donmcc/mook

A version of make
Added initial test for syntax errors.
Add `@mook()` decorator for functional tests.
Make `assert_stdout_contains()` take multiple args.

refs

main
browse  log 

clone

read-only
https://git.sr.ht/~donmcc/mook
read/write
git@git.sr.ht:~donmcc/mook

You can also use your local clone with git send-email.

#mook

A version of make.

builds.sr.ht status

#Build

Mook uses CMake 3.15 or later. To build from source:

git clone https://git.sr.ht/~donmcc/mook
cd mook
cmake -S . -B tmp
cmake --build tmp --target all test
cmake --install tmp

#CMake Build Options

To build with the AddressSanitizer enabled, set the ADDRESS_SANITIZER option to ON.

cmake -S . -B tmp -DADDRESS_SANITIZER=ON

Setting the WALL option to ON turns on additional warnings using the -Wall compiler flag and also treats warnings as errors. WALL is off by default but is recommended for development and integration builds.

cmake -S . -B tmp -DWALL=ON

#License

Mook is available under an MIT License.

#Mook Grammar

build <- (lws? nl)* rule+

rule <- target prereqs recipe

target <- path lws? ':' lws?

prereqs <- (path (lws path)* lws?)? nl

recipe <- '\t' command? (eof / nl (sp_lws? (nl / eof))*)

path <- [a-z.]+

command <- [^\n\r]+

sp_lws <- ' ' [ \t]*

lws <- [ \t]*

nl <- ('\n' / '\r\n' / '\r')

eof <- !.