aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkartofen <mladenovnasko0@gmail.com>2025-04-07 01:46:35 +0300
committerkartofen <mladenovnasko0@gmail.com>2025-04-07 01:46:35 +0300
commit0606300e7638574c76b3e72e9b5f965a442b3cb7 (patch)
tree695904bfad04bee386efac6ef9bf3c61ecaa6724
parentd29e07a0fe5fc187929f34a7d43c7e8c32b32367 (diff)
added installing
-rw-r--r--ninja.m447
-rw-r--r--scanbuild.m422
2 files changed, 60 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])
diff --git a/scanbuild.m4 b/scanbuild.m4
new file mode 100644
index 0000000..ba7b8ce
--- /dev/null
+++ b/scanbuild.m4
@@ -0,0 +1,22 @@
+divert(-1)
+
+changequote([,])
+
+define(iterate_files, [esyscmd([for f in $(/bin/ls $1/*.$2); do echo -n "$f "; done])])
+define(substitue, [esyscmd([for f in "$1"; do echo -n "${f/$2/$3} "; done])])
+
+define(LIBS_STATIC, [iterate_files([build], [a])])
+define(LIBS_SHARED, [iterate_files([build], [so])])
+define(HEADERS, [iterate_files([build], [h])])
+
+divert(0)
+ninja_dyndep_version = 1
+
+build libs | dnl
+substitue(LIBS_STATIC, BIN, LIBDIR)dnl
+substitue(LIBS_SHARED, BIN, LIBDIR)dnl
+: dyndep | LIBS_STATIC LIBS_SHARED
+
+build includes | dnl
+substitue(HEADERS, BIN, INCLUDEDIR)dnl
+: dyndep | HEADERS