aboutsummaryrefslogtreecommitdiff
path: root/ninja.m4
diff options
context:
space:
mode:
authorkartofen <mladenovnasko0@gmail.com>2025-04-02 01:15:23 +0300
committerkartofen <mladenovnasko0@gmail.com>2025-04-02 01:15:23 +0300
commit40618c2ff1c18815741888674cc76c8ddc486300 (patch)
tree707cd01dd35d9197e7627966a7ab84b393a0b1dc /ninja.m4
parent5fba9e4d7492ca07d619999120b42495cf3df7c7 (diff)
made building better and added README, everything else is very unfinished
Diffstat (limited to 'ninja.m4')
-rw-r--r--ninja.m466
1 files changed, 36 insertions, 30 deletions
diff --git a/ninja.m4 b/ninja.m4
index 77812a0..2f2a01a 100644
--- a/ninja.m4
+++ b/ninja.m4
@@ -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]
-])