diff options
author | kartofen <mladenovnasko0@gmail.com> | 2025-04-07 01:46:35 +0300 |
---|---|---|
committer | kartofen <mladenovnasko0@gmail.com> | 2025-04-07 01:46:35 +0300 |
commit | 0606300e7638574c76b3e72e9b5f965a442b3cb7 (patch) | |
tree | 695904bfad04bee386efac6ef9bf3c61ecaa6724 | |
parent | d29e07a0fe5fc187929f34a7d43c7e8c32b32367 (diff) |
added installing
-rw-r--r-- | ninja.m4 | 47 | ||||
-rw-r--r-- | scanbuild.m4 | 22 |
2 files changed, 60 insertions, 9 deletions
@@ -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 |