aboutsummaryrefslogtreecommitdiff
path: root/ninja.m4
diff options
context:
space:
mode:
Diffstat (limited to 'ninja.m4')
-rw-r--r--ninja.m447
1 files changed, 38 insertions, 9 deletions
diff --git a/ninja.m4 b/ninja.m4
index 2f2a01a..b6f8d7d 100644
--- a/ninja.m4
+++ b/ninja.m4
@@ -4,17 +4,22 @@ changequote([,])
define([getenv], [
define([$1], [esyscmd([echo -n $$1])])
- ifelse($1, , [undefine([$1])])
-])
+ ifelse($1, , [
+ ifelse($2, , [undefine([$1])], [define([$1], [$2])])
+])])
+
+dnl For installing
+getenv([PREFIX], [./testprefix])
+getenv([INCLUDEDIR], [PREFIX/include])
+getenv([LIBDIR], [PREFIX/lib])
getenv([PROD])
-getenv([BIN])
divert(0)
cflags = ifdef([PROD], [], [-Wall -Wextra -g]) -std=c99 -D_DEFAULT_SOURCE
-bin = ifdef([BIN], [BIN], [bin])
-m4flags =
+bin = build
+m4flags =
# building
@@ -36,8 +41,30 @@ build $bin/msgpack.h: cpy msgpack.h
build $bin/libmsgpack.a: ar $bin/msgpack.o
build $bin/libmsgpack.so: cc $bin/msgpack.o
cflags = $cflags -fPIC -shared
-build $bin/libmsgpack.h: m4 msgpack.h | msgpack.c
- m4flags = -D SOURCE=msgpack.c
+# build $bin/libmsgpack.h: m4 msgpack.h | msgpack.c
+# m4flags = -D SOURCE=msgpack.c
+
+# installing
+
+
+# TODO: make copying better and abstract this somehow
+pattern =
+dir =
+rule cpy_to_dir
+ command = cp $$(/bin/ls $pattern 2> /dev/null) $dir 2> /dev/null
+
+build force: phony
+build $bin/files.dd: m4 scanbuild.m4 | force
+ m4flags = -D BIN=$bin -D [LIBDIR]=LIBDIR -D [INCLUDEDIR]=INCLUDEDIR
+
+build libs: cpy_to_dir || $bin/files.dd
+ dir = LIBDIR
+ pattern = $bin/*.{so,a}
+ dyndep = $bin/files.dd
+build includes: cpy_to_dir || $bin/files.dd
+ dir = INCLUDEDIR
+ pattern = $bin/*.h
+ dyndep = $bin/files.dd
# testing
@@ -53,10 +80,12 @@ rule ninja_clean
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 header: phony $bin/libmsgpack.h
+
+build install: phony libs includes
+build clean: ninja_clean
build test: valgrind $bin/test
-build clean: ninja_clean
default ifdef([PROD], [static], [test])