|
@@ -13,22 +13,23 @@ AR = ar
|
|
|
PREFIX ?= /usr/local
|
|
|
bindir := $(PREFIX)/bin
|
|
|
libdir := $(PREFIX)/lib
|
|
|
-includedir = $(PREFIX)/include/lsup
|
|
|
-outdir = ./bin
|
|
|
+INCLUDEDIR = $(PREFIX)/include
|
|
|
+BUILDDIR = ./build
|
|
|
+OUTDIR = ./bin
|
|
|
VALGRIND_DUMP = /tmp/lsup_valgrind.log
|
|
|
CALLGRIND_DUMP = /tmp/lsup_callgrind.out
|
|
|
MASSIF_DUMP = /tmp/lsup_massif.out
|
|
|
|
|
|
INCLUDE_BASE := . -Iinclude -Iext/tpl/src -Iext/hashmap -Iext/log/src
|
|
|
INCLUDE := -I$(INCLUDE_BASE)
|
|
|
-_CFLAGS := -std=gnu11 -Wall -fPIC -MMD $(INCLUDE)
|
|
|
+_CFLAGS := -std=gnu11 -Wall -fPIC $(INCLUDE)
|
|
|
CFLAGS = $(_CFLAGS) -O3
|
|
|
-DBG_CFLAGS = $(_CFLAGS) -Itest -O0 -g3 -DDEBUG
|
|
|
+DBG_CFLAGS = $(_CFLAGS) -Itest -O0 -ggdb -DDEBUG
|
|
|
#$(info CFLAGS: $(CFLAGS))
|
|
|
#$(info DBG_CFLAGS: $(DBG_CFLAGS))
|
|
|
# NOTE: -luuid is a Linux system library. Other OS's might need a different
|
|
|
# link or a non-system library built.
|
|
|
-LDFLAGS := -L$(libdir) -L$(outdir) -L. -llmdb -lxxhash -luuid
|
|
|
+LDFLAGS := -L$(libdir) -L$(OUTDIR) -L. -llmdb -lxxhash -luuid
|
|
|
|
|
|
PARSER = bin/lemon
|
|
|
LEMON_SRC = ext/sqlite/tool/lemon.c
|
|
@@ -55,15 +56,17 @@ 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)
|
|
|
-
|
|
|
-STATIC_LIB = $(outdir)/liblsuprdf.a
|
|
|
-DYN_LIB = $(outdir)/liblsuprdf.so
|
|
|
-STATIC_DBG_LIB = $(outdir)/liblsuprdf_dbg.a
|
|
|
-DYN_DBG_LIB = $(outdir)/liblsuprdf_dbg.so
|
|
|
+
|
|
|
+CODEC_OBJ = $(patsubst $(CODEC_DIR)/%.c, $(BUILDDIR)/%.o, $(CODEC_SRC))
|
|
|
+CODEC_DBG_OBJ = $(CODEC_OBJ:.o=_dbg.o)
|
|
|
+LOCAL_OBJ = $(LSUP_SRC:src/%.c=$(BUILDDIR)/%.o)
|
|
|
+OBJ = $(EXT_OBJ) $(LOCAL_OBJ)
|
|
|
+DBG_OBJ = $(EXT_OBJ) $(LOCAL_OBJ)
|
|
|
+STATIC_LIB = $(OUTDIR)/liblsuprdf.a
|
|
|
+DYN_LIB = $(STATIC_LIB:.a=.so)
|
|
|
+STATIC_DBG_LIB = $(STATIC_LIB:.a=_dbg.a)
|
|
|
+DYN_DBG_LIB = $(DYN_LIB:.so=_dbg.so)
|
|
|
+
|
|
|
LIBS = $(STATIC_LIB) $(DYN_LIB)
|
|
|
DBG_LIBS = $(STATIC_DBG_LIB) $(DYN_DBG_LIB)
|
|
|
|
|
@@ -82,7 +85,7 @@ DOCS = docs
|
|
|
## Environment.
|
|
|
|
|
|
# Tests need the freshly compiled libs.
|
|
|
-export LD_LIBRARY_PATH = $(outdir):$(libdir)
|
|
|
+export LD_LIBRARY_PATH = $(OUTDIR):$(libdir)
|
|
|
|
|
|
|
|
|
## Rules.
|
|
@@ -127,8 +130,13 @@ $(DYN_DBG_LIB): $(DBG_OBJ)
|
|
|
$(CC) -shared $(LDFLAGS) -o $@ $^ $(CODEC_DBG_OBJ)
|
|
|
|
|
|
|
|
|
+# Standard objects.
|
|
|
+$(BUILDDIR)/%.o: src/%.c
|
|
|
+ $(CC) $(DBG_CFLAGS) -c $^ -o $@
|
|
|
+
|
|
|
+
|
|
|
# Debug objects.
|
|
|
-%_dbg.o: %.c
|
|
|
+$(BUILDDIR)/%_dbg.o: src/%.c
|
|
|
$(CC) $(DBG_CFLAGS) -c $^ -o $@
|
|
|
|
|
|
|
|
@@ -136,10 +144,12 @@ $(DYN_DBG_LIB): $(DBG_OBJ)
|
|
|
|
|
|
.PHONY: codec
|
|
|
codec: $(PARSER)
|
|
|
+ mkdir -p $(BUILDDIR) && \
|
|
|
$(MAKE) -C $(CODEC_DIR) codec
|
|
|
|
|
|
.PHONY: codec_dbg
|
|
|
codec_dbg: $(PARSER)
|
|
|
+ mkdir -p $(BUILDDIR) && \
|
|
|
$(MAKE) -C $(CODEC_DIR) debug
|
|
|
|
|
|
# Build the parser executable.
|
|
@@ -149,21 +159,22 @@ $(PARSER): $(LEMON_SRC)
|
|
|
|
|
|
install: lib ## Install library and dependencies to $PREFIX. May require sudo.
|
|
|
@echo "Installing library files in $(PREFIX)."
|
|
|
- mkdir -p $(DESTDIR)$(libdir)
|
|
|
- mkdir -p $(DESTDIR)$(includedir)
|
|
|
- cp $(LIBS) $(DESTDIR)$(libdir) && \
|
|
|
- cp -r include/*.h include/codec $(EXT_H) $(DESTDIR)$(includedir)
|
|
|
+ mkdir -p $(libdir)
|
|
|
+ mkdir -p $(INCLUDEDIR)/lsup
|
|
|
+ cp $(LIBS) $(libdir) && \
|
|
|
+ cp -r include/lsup/* $(EXT_H) $(INCLUDEDIR)/lsup && \
|
|
|
+ cp include/*.h $(INCLUDEDIR)
|
|
|
|
|
|
|
|
|
debug_install: install debug ## Install standard and debug libraries.
|
|
|
@echo "Installing debug library files in $(PREFIX)."
|
|
|
- cp $(DBG_LIBS) $(DESTDIR)$(libdir)
|
|
|
+ cp $(DBG_LIBS) $(libdir)
|
|
|
|
|
|
|
|
|
.PHONY: clean
|
|
|
clean: ## Clean up artifacts, including language parsers.
|
|
|
- rm -f ./*.[aod] bin/* src/*.[aod] src/codec/*.[aod] src/codec/*.out
|
|
|
- rm -rf build/ dist/ lsup_rdf.egg-info/
|
|
|
+ rm -f ./*.[aod] bin/* src/codec/*.out
|
|
|
+ rm -rf $(BUILDDIR)
|
|
|
rm -f $(LIBS) $(DBG_LIBS)
|
|
|
rm -f include/codec/grammar_*.h
|
|
|
rm -f src/codec/grammar_*.c src/codec/parser_*.c
|
|
@@ -172,8 +183,8 @@ clean: ## Clean up artifacts, including language parsers.
|
|
|
|
|
|
.PHONY: uninstall ## Uninstall library (not the dependencies).
|
|
|
uninstall:
|
|
|
- rm -f $(DESTDIR)$(libdir)/liblsuprdf*
|
|
|
- rm -rf $(DESTDIR)$(includedir)
|
|
|
+ rm -f $(libdir)/liblsuprdf*
|
|
|
+ rm -rf $(INCLUDEDIR)/lsup*
|
|
|
rm -f bin/test*
|
|
|
|
|
|
|