diff options
Diffstat (limited to 'ninja.m4')
-rw-r--r-- | ninja.m4 | 66 |
1 files changed, 36 insertions, 30 deletions
@@ -1,10 +1,22 @@ +divert(-1) + changequote([,]) -cflags = ifdef([PROD], [], [-std=c99 -Wall -Wextra -g -D_DEFAULT_SOURCE]) -bin = bin -m4flags = +define([getenv], [ + define([$1], [esyscmd([echo -n $$1])]) + ifelse($1, , [undefine([$1])]) +]) + +getenv([PROD]) +getenv([BIN]) + +divert(0) + +cflags = ifdef([PROD], [], [-Wall -Wextra -g]) -std=c99 -D_DEFAULT_SOURCE +bin = ifdef([BIN], [BIN], [bin]) +m4flags = -# build as library +# building rule cc command = gcc $cflags $in -o $out @@ -15,8 +27,11 @@ rule ar command = ar rcs $out $in rule m4 command = m4 $m4flags $in > $out - -build $bin/msgpack.o: obj msgpack.c +rule cpy + command = cp $in $out + +build $bin/msgpack.o: obj msgpack.c +build $bin/msgpack.h: cpy msgpack.h build $bin/libmsgpack.a: ar $bin/msgpack.o build $bin/libmsgpack.so: cc $bin/msgpack.o @@ -26,40 +41,31 @@ build $bin/libmsgpack.h: m4 msgpack.h | msgpack.c # testing +build $bin/test: cc msgpack.c test.c + rule valgrind command = valgrind -s --leak-check=full --show-leak-kinds=all $in - -build $bin/test.o: obj test.c -build $bin/test: cc msgpack.c $bin/test.o # named targets -rule cpy - command = cp $in $out -build $bin/msgpack.h: cpy msgpack.h +rule ninja_clean + command = ninja -t clean -build static: phony $bin/libmsgpack.a | $bin/msgpack.h -build shared: phony $bin/libmsgpack.so | $bin/msgpack.h +build static: phony $bin/libmsgpack.a $bin/msgpack.h +build shared: phony $bin/libmsgpack.so $bin/msgpack.h build header: phony $bin/libmsgpack.h -build test: valgrind $bin/test -ifdef([PROD], [default header], [default test]) +build test: valgrind $bin/test +build clean: ninja_clean + +default ifdef([PROD], [static], [test]) # regeneration -rule gen - command = m4 $m4flags ninja.m4 > build.ninja - generator = 1 +rule regen + command = m4 ninja.m4 > build.ninja + generator=1 -build build.ninja: gen | ninja.m4 +build build.ninja: regen ninja.m4 +build configure: regen -rule _clean - command = ninja -t clean -build clean: _clean - -ifdef([PROD], [dnl -build dev: gen | clean -], [dnl -build prod: gen | clean - m4flags = -D [PROD] -]) |