|
@@ -4,44 +4,37 @@
|
|
|
|
|
|
CC = gcc
|
|
|
AR = ar
|
|
|
-LEXER = re2c
|
|
|
-PARSER = lemon
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PREFIX ?= /usr/local
|
|
|
-bindir := $(PREFIX)/bin
|
|
|
-libdir := $(PREFIX)/lib
|
|
|
+bindir ::= $(PREFIX)/bin
|
|
|
+libdir ::= $(PREFIX)/lib
|
|
|
includedir = $(PREFIX)/include/lsup
|
|
|
MDB_DIR = ext/openldap/libraries/liblmdb
|
|
|
XXHASH_DIR = ext/xxHash
|
|
|
VALGRIND_DUMP = /tmp/lsup_valgrind.log
|
|
|
CALLGRIND_DUMP = /tmp/lsup_callgrind.out
|
|
|
|
|
|
-INCLUDE_BASE = . -Iinclude -I$(MDB_DIR) -I$(XXHASH_DIR) \
|
|
|
+INCLUDE_BASE ::= . -Iinclude -I$(MDB_DIR) -I$(XXHASH_DIR) \
|
|
|
-Iext/tpl/src -Iext/hashmap -Iext/log/src
|
|
|
-INCLUDE = -I$(INCLUDE_BASE)
|
|
|
-CFLAGS += -Wall -fPIC -MMD -DLOG_USE_COLOR $(INCLUDE)
|
|
|
+INCLUDE ::= -I$(INCLUDE_BASE)
|
|
|
+CFLAGS ::= -Wall -fPIC -MMD -DLOG_USE_COLOR $(INCLUDE)
|
|
|
DBG_CFLAGS = -Itest -O0 -g3 -DDEBUG
|
|
|
|
|
|
|
|
|
-LDFLAGS = -L. -L$(libdir) -llmdb -lxxhash -luuid
|
|
|
+LDFLAGS ::= -L. -L$(libdir) -llmdb -lxxhash -luuid
|
|
|
|
|
|
CODEC_DIR = src/codec
|
|
|
-CODEC_SRC = $(wildcard src/codec/{codec,grammar,lexer}*.c)
|
|
|
-CODEC_OBJ = $(CODEC_SRC:.c=.o)
|
|
|
-CODEC_DBG_OBJ = $(CODEC_SRC:.c=_dbg.o)
|
|
|
-
|
|
|
-
|
|
|
|
|
|
|
|
|
-EXT_SRC = $(wildcard ext/log/src/*.c) \
|
|
|
+EXT_SRC ::= $(wildcard ext/log/src/*.c) \
|
|
|
$(wildcard ext/hashmap/*.c) \
|
|
|
$(wildcard ext/tpl/src/*.c)
|
|
|
|
|
|
|
|
|
-EXT_H = $(wildcard ext/log/src/*.h) \
|
|
|
+EXT_H ::= $(wildcard ext/log/src/*.h) \
|
|
|
$(wildcard ext/tpl/src/*.h) \
|
|
|
$(wildcard ext/hashmap/*.h)
|
|
|
|
|
@@ -49,16 +42,29 @@ LSUP_SRC = $(wildcard src/*.c)
|
|
|
SRC = $(EXT_SRC) $(LSUP_SRC)
|
|
|
TEST_SRC = $(wildcard test/*.c) test.c
|
|
|
|
|
|
-EXT_OBJ = $(EXT_SRC:.c=.o)
|
|
|
-OBJ = $(EXT_OBJ) $(CODEC_OBJ) $(LSUP_SRC:.c=.o)
|
|
|
-DBG_OBJ = $(EXT_OBJ) $(CODEC_DBG_OBJ) $(LSUP_SRC:.c=_dbg.o)
|
|
|
+EXT_OBJ ::= $(EXT_SRC:.c=.o)
|
|
|
+
|
|
|
+CODEC_SRC ::= $(wildcard $(CODEC_DIR)/codec_*.c)
|
|
|
+CODEC_REL_SRC ::= $(CODEC_SRC:$(CODEC_DIR)/%=%)
|
|
|
+ALL_CODEC_REL_SRC ::= $(CODEC_REL_SRC) $(CODEC_REL_SRC:codec_%=parser_%) \
|
|
|
+ $(CODEC_REL_SRC:codec_%=grammar_%)
|
|
|
+CODEC_SRC = $(ALL_CODEC_REL_SRC:%=$(CODEC_DIR)/%)
|
|
|
+CODEC_OBJ = $(CODEC_SRC:.c=.o)
|
|
|
+CODEC_DBG_OBJ = $(CODEC_SRC:.c=_dbg.o)
|
|
|
+OBJ = $(EXT_OBJ) $(LSUP_SRC:.c=.o)
|
|
|
+DBG_OBJ = $(EXT_OBJ) $(LSUP_SRC:.c=_dbg.o)
|
|
|
+
|
|
|
+$(warning Codec rel source: $(CODEC_REL_SRC))
|
|
|
+$(warning Codec source: $(CODEC_SRC))
|
|
|
+$(warning Codec Objects: $(CODEC_OBJ))
|
|
|
+$(warning Codec Debug objects: $(CODEC_DBG_OBJ))
|
|
|
|
|
|
DEPLIBS = libxxhash liblmdb
|
|
|
LIBS = liblsuprdf.a liblsuprdf.so
|
|
|
DBG_LIBS = liblsuprdf_dbg.a liblsuprdf_dbg.so
|
|
|
|
|
|
|
|
|
-DEPS := $(shell echo "${INCLUDE_BASE}" | sed -e 's/ -I/,/g')
|
|
|
+DEPS := $(shell echo "${INCLUDE_BASE}" | sed -e 's/ -I/,/g'),include/codec
|
|
|
DOCS = docs
|
|
|
|
|
|
|
|
@@ -81,52 +87,50 @@ help:
|
|
|
| column -t -s '|'
|
|
|
|
|
|
|
|
|
-lib: $(DEPLIBS) $(LIBS) ## Compile main library (static and dynamic linking).
|
|
|
+lib: $(DEPLIBS) codec $(LIBS) ## Compile main library (static and dynamic linking).
|
|
|
|
|
|
|
|
|
-debug: $(DEPLIBS) $(DBG_LIBS) ## Compile main library with debug symbols.
|
|
|
+debug: $(DEPLIBS) codec_dbg $(DBG_LIBS) ## Compile main library with debug symbols.
|
|
|
|
|
|
|
|
|
|
|
|
liblsuprdf.a: $(OBJ)
|
|
|
- $(AR) rs $@ $^
|
|
|
+ $(AR) rs $@ $^ $(CODEC_OBJ)
|
|
|
|
|
|
|
|
|
|
|
|
liblsuprdf.so: $(OBJ)
|
|
|
- $(CC) -shared $(LDFLAGS) -o $@ $^
|
|
|
+ $(CC) -shared $(LDFLAGS) -o $@ $^ $(CODEC_OBJ)
|
|
|
|
|
|
|
|
|
|
|
|
liblsuprdf_dbg.a: $(DBG_OBJ)
|
|
|
- $(AR) rs $@ $^
|
|
|
+ $(AR) rs $@ $^ $(CODEC_DBG_OBJ)
|
|
|
|
|
|
|
|
|
|
|
|
liblsuprdf_dbg.so: $(DBG_OBJ)
|
|
|
- $(warning Making $(DBG_OBJ))
|
|
|
- $(CC) -shared $(LDFLAGS) -o $@ $^
|
|
|
+ $(CC) -shared $(LDFLAGS) -o $@ $^ $(CODEC_DBG_OBJ)
|
|
|
|
|
|
|
|
|
|
|
|
%_dbg.o: %.c
|
|
|
- $(CC) $(CFLAGS) $(DBG_CFLAGS) $(LDFLAGS) -c $^ -o $@
|
|
|
+ $(CC) $(CFLAGS) $(DBG_CFLAGS) -c $^ -o $@
|
|
|
|
|
|
|
|
|
-.PHONY: parsers
|
|
|
-parsers: $(PARSER_SRC) ## Make intermediate parser sources for development.
|
|
|
+
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-$(CODEC_DIR)/parser_%.c: $(CODEC_DIR)/lexer_%.re $(CODEC_DIR)/grammar_%.c include/codec/tokens_%.h src/codec.c
|
|
|
- $(LEXER) $< -o $@ -T --case-ranges
|
|
|
+.PHONY: parsers
|
|
|
+parsers: ## Make intermediate parser sources for development.
|
|
|
+ $(MAKE) -C $(CODEC_DIR) parsers
|
|
|
|
|
|
+.PHONY: codec
|
|
|
+codec:
|
|
|
+ $(MAKE) -C $(CODEC_DIR) codec
|
|
|
|
|
|
-.PRECIOUS: $(CODEC_DIR)/grammar_%.c include/codec/tokens_%.h
|
|
|
-
|
|
|
-$(CODEC_DIR)/grammar_%.c include/codec/grammar_%.h: $(CODEC_DIR)/grammar_%.y
|
|
|
- $(PARSER) $< -q -T$(CODEC_DIR)/lempar.c -d$(CODEC_DIR)
|
|
|
- mv $(CODEC_DIR)/grammar_*.h include/codec
|
|
|
+.PHONY: codec_dbg
|
|
|
+codec_dbg:
|
|
|
+ $(MAKE) -C $(CODEC_DIR) debug
|
|
|
|
|
|
|
|
|
|
|
@@ -245,7 +249,7 @@ pytest:
|
|
|
|
|
|
|
|
|
|
|
|
-depgraph: src/* include/* ## Build a visual dependency graph of the code.
|
|
|
+depgraph: $(LSUP_SRC) $(CODEC_SRC) include/* include/codec/* ## Build a visual dependency graph of the code.
|
|
|
cinclude2dot --merge=module --include=$(DEPS) \
|
|
|
--exclude='test|ext' >| $(DOCS)/dev/deps.dot
|
|
|
dot $(DOCS)/dev/deps.dot -Tpdf >| $(DOCS)/dev/deps.pdf
|