diff options
author | kartofen <mladenovnasko0@gmail.com> | 2025-03-30 01:48:04 +0200 |
---|---|---|
committer | kartofen <mladenovnasko0@gmail.com> | 2025-03-30 01:48:04 +0200 |
commit | 9c6e78990e76367e683a429cd5a9637b1ac94542 (patch) | |
tree | 3aa1abf53c047b00efb06859cff9a094cea1f147 /ninja.m4 | |
parent | c5e2ebc18ec867caf6f7c2edf2305f1cdb65b053 (diff) |
some more formats and a build system
Diffstat (limited to 'ninja.m4')
-rw-r--r-- | ninja.m4 | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/ninja.m4 b/ninja.m4 new file mode 100644 index 0000000..98824ff --- /dev/null +++ b/ninja.m4 @@ -0,0 +1,44 @@ +changequote([,]) + +cflags = ifdef([PROD], [], [-std=c99 -Wall -Wextra -g -D_DEFAULT_SOURCE]) +bin = bin +m4flags = + +rule cc + command = gcc -MD -MF $out.d $cflags -c $in -o $out + depfile = $out.d +rule ar + command = ar rcs $out $in + +build $bin/msgpack.o: cc msgpack.c +build $bin/msgpack.a: ar $bin/msgpack.o +build $bin/msgpack.so: cc msgpack.c + cflags = $cflags -fPIC -shared + +rule elf + command = gcc $cflags $in -o $out +rule run + command = valgrind -s --leak-check=full --show-leak-kinds=all $in + +build $bin/test.o: cc test.c +build $bin/test: elf $bin/msgpack.o $bin/test.o + +build static: phony $bin/msgpack.a +build shared: phony $bin/msgpack.so +build header: phony # TODO write it +build test: run $bin/test + +ifdef([PROD], [default test], [default header]) + +rule gen + command = m4 $m4flags ninja.m4 > build.ninja + generator = 1 + +build build.ninja: gen | ninja.m4 + +ifdef([PROD], [dnl +build dev: gen +], [dnl +build prod: gen + m4flags = -D [PROD] +]) |