mirror of
https://github.com/servalproject/serval-dna.git
synced 2025-02-22 02:06:42 +00:00
Ignores a variety of warnings when compiling sqlite3.c. Uses the new sqlite3_trace_v2() function for logging SQL statements, now that sqlite3_trace() and sqlite3_profile() are deprecated. Fixes a rhizomeops test failure caused because SQLite 3.12 increased the default block size from 1024 to 4096, causing the fixed overhead of an empty Rhizome db to exceed 32KB. This caused the test to fail because the first "file add" failed. Now the test fixture adapts to the fixed overhead. Deletes the SQLite 3.10.2 source amalgamation.
255 lines
8.1 KiB
Makefile
255 lines
8.1 KiB
Makefile
# Makefile.in for Serval DNA
|
|
# vim: noet ts=8 sts=0 sw=8
|
|
prefix=@prefix@
|
|
exec_prefix=@exec_prefix@
|
|
bindir=@bindir@
|
|
sbindir=@sbindir@
|
|
sysconfdir=@sysconfdir@
|
|
localstatedir=@localstatedir@
|
|
|
|
SQLITE3_AMALGAMATION = sqlite-amalgamation-3140200
|
|
|
|
include sourcefiles.mk
|
|
include headerfiles.mk
|
|
|
|
OBJSDIR_SERVALD = objs_servald
|
|
OBJSDIR_LIB = objs_lib
|
|
OBJSDIR_TOOLS = objs
|
|
|
|
OBJSDIRS = $(OBJSDIR_SERVALD) $(OBJSDIR_LIB) $(OBJSDIR_TOOLS)
|
|
|
|
ALL_SOURCES = \
|
|
$(SERVAL_CLIENT_SOURCES) \
|
|
$(MDP_CLIENT_SOURCES) \
|
|
$(SERVAL_DAEMON_SOURCES) \
|
|
$(TEST_SOURCES) \
|
|
$(SERVAL_LIB_SOURCES) \
|
|
$(MONITOR_CLIENT_SRCS) \
|
|
$(SIMULATOR_SOURCES) \
|
|
$(SQLITE3_SOURCES)
|
|
|
|
SERVAL_DAEMON_OBJS = \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(SERVAL_CLIENT_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(MDP_CLIENT_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(SERVAL_DAEMON_SOURCES:.c=.o))
|
|
SQLITE3_OBJS = \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(notdir $(SQLITE3_SOURCES:.c=.o)))
|
|
SERVALD_OBJS = \
|
|
$(SQLITE3_OBJS) \
|
|
$(SERVAL_DAEMON_OBJS)
|
|
TEST_OBJS = \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(TEST_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(SERVAL_CLIENT_SOURCES:.c=.o))
|
|
LIB_SERVAL_OBJS = \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(SERVAL_CLIENT_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(SERVAL_LIB_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(MDP_CLIENT_SOURCES:.c=.o))
|
|
MONITOR_CLIENT_OBJS = \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(SERVAL_CLIENT_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(SERVAL_LIB_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(MONITOR_CLIENT_SRCS:.c=.o))
|
|
SIMULATOR_OBJS = \
|
|
$(addprefix $(OBJSDIR_TOOLS)/, $(SIMULATOR_SOURCES:.c=.o))
|
|
|
|
CC= @CC@
|
|
|
|
LDFLAGS=@LDFLAGS@ @LIBS@
|
|
|
|
CFLAGS= -I$(SQLITE3_AMALGAMATION) @CPPFLAGS@ @CFLAGS@
|
|
CFLAGS+=-DSYSCONFDIR="\"$(sysconfdir)\"" -DLOCALSTATEDIR="\"$(localstatedir)\""
|
|
CFLAGS+=-DSQLITE_THREADSAFE=0 \
|
|
-DSQLITE_OMIT_DATETIME_FUNCS \
|
|
-DSQLITE_OMIT_COMPILEOPTION_DIAGS \
|
|
-DSQLITE_OMIT_DEPRECATED \
|
|
-DSQLITE_OMIT_LOAD_EXTENSION \
|
|
-DSQLITE_OMIT_VIRTUALTABLE \
|
|
-DSQLITE_OMIT_AUTHORIZATION
|
|
CFLAGS+=-fPIC
|
|
CFLAGS+=-Wall -Werror
|
|
# Solaris magic
|
|
CFLAGS+=-DSHA2_USE_INTTYPES_H -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__=1
|
|
# OSX magic to compensate for the Solaris magic
|
|
CFLAGS+=-D_DARWIN_C_SOURCE
|
|
CFLAGS_SQLITE= @CFLAGS_SQLITE@
|
|
|
|
INSTALL= install
|
|
INSTALL_PROGRAM=$(INSTALL)
|
|
INSTALL_DATA= $(INSTALL) -m 644
|
|
|
|
-include Makefile.dbg
|
|
|
|
# More warnings, discover problems that only happen on some archs
|
|
CFLAGS+=-Wextra
|
|
# Security enhancements from Debian
|
|
CFLAGS+=-Wformat -Werror=format-security -D_FORTIFY_SOURCE=2
|
|
|
|
DEFS= @DEFS@
|
|
|
|
.PHONY: all test clean
|
|
|
|
all: servald libserval.so libmonitorclient.so libmonitorclient.a test
|
|
|
|
test: tfw_createfile directory_service fakeradio simulator serval-tests
|
|
|
|
covzero: | is_built_with_coverage
|
|
@echo REMOVE all .gcda files
|
|
@find $(OBJSDIRS) -type f -name '*.gcda' -print0 | xargs -0 $(RM)
|
|
|
|
covinit: servald-initial.info
|
|
|
|
covhtml: coverage_html/index.html
|
|
|
|
is_built_with_coverage:
|
|
@for obj in $(SERVALD_OBJS); do \
|
|
gcno="$${obj%.o}.gcno" ;\
|
|
if [ ! -r "$$gcno" ]; then \
|
|
echo "ERROR: servald has not been compiled for code coverage; missing $$gcno" ;\
|
|
exit 1 ;\
|
|
fi ;\
|
|
done
|
|
|
|
has_coverage_data: | is_built_with_coverage
|
|
@count=0; for obj in $(SERVALD_OBJS); do \
|
|
gcda="$${obj%.o}.gcda" ;\
|
|
[ -s "$$gcda" ] && count=$$(($$count + 1)) ;\
|
|
done ;\
|
|
if [ $$count -eq 0 ]; then \
|
|
echo "ERROR: no code coverage data; run some tests" ;\
|
|
exit 1 ;\
|
|
fi
|
|
|
|
servald-initial.info: Makefile servald | is_built_with_coverage
|
|
geninfo --quiet --initial --checksum --base-directory=$(abspath .) --no-external $(OBJSDIR_SERVALD) -o $@
|
|
|
|
servald-coverage.info: Makefile servald $(shell find $(OBJSDIR_SERVALD) -type f -name '*.gcda') | has_coverage_data
|
|
geninfo --quiet --checksum --base-directory=$(abspath .) --no-external $(OBJSDIR_SERVALD) -o $@ 2>&1 | { grep -v 'WARNING: no data found for .*\.h$$' || true; }
|
|
@[ -s $@ ]
|
|
|
|
coverage_html/index.html: Makefile servald-initial.info servald-coverage.info
|
|
$(RM) -r coverage_html
|
|
genhtml --quiet servald-initial.info servald-coverage.info -o coverage_html
|
|
|
|
.PRECIOUS: Makefile
|
|
Makefile: Makefile.in config.status
|
|
$(warning Makefile may be out of date, please run ./config.status)
|
|
|
|
config.status: configure
|
|
$(warning config.status may be out of date, please run ./configure)
|
|
|
|
configure: configure.in
|
|
$(warning configure may be out of date, please run autoreconf -f -i -I m4)
|
|
|
|
$(OBJSDIR_TOOLS)/version.o: $(ALL_SOURCES) $(HDRS) version_servald.c version_string.sh $(wildcard VERSION.txt) COPYRIGHT.txt
|
|
@echo CC version_servald.c
|
|
@mkdir -p $(dir $@)
|
|
@$(RM) $(@:.o=.gcno) $(@:.o=.gcda)
|
|
@V=`./version_string.sh --ignore-untracked` \
|
|
&& C="`sed -e :a -e N -e '$$!ba' -e 's/[\\\\"]/\\\\&/g' -e 's/\\n/\\\\n/g' COPYRIGHT.txt`" \
|
|
&& $(CC) $(CFLAGS) $(DEFS) -c version_servald.c -o $@ -DSERVALD_VERSION="\"$$V\"" -DSERVALD_COPYRIGHT="\"$$C\""
|
|
|
|
#' <-- fixes vim syntax highlighting
|
|
|
|
# Compile SQLITE as a special case, because it is imported source code.
|
|
# Instead of fixing warnings case-by-case in the sqlite.c source code, simply
|
|
# suppress the classes of warnings that cause compilation errors with
|
|
# -Werror.
|
|
$(SQLITE3_OBJS): $(OBJSDIR_SERVALD)/%.o: $(SQLITE3_AMALGAMATION)/%.c
|
|
@echo SERVALD CC $<
|
|
@mkdir -p $(dir $@)
|
|
@$(RM) $(@:.o=.gcno) $(@:.o=.gcda)
|
|
@$(CC) $(CFLAGS) $(CFLAGS_SQLITE) $(DEFS) -c $< -o $@
|
|
|
|
# No object files in source directory!
|
|
%.o: %.c
|
|
|
|
$(OBJSDIR_TOOLS)/%.o: %.c
|
|
@echo CC $<
|
|
@mkdir -p $(dir $@)
|
|
@$(RM) $(@:.o=.gcno) $(@:.o=.gcda)
|
|
@$(CC) $(CFLAGS) $(DEFS) -c $< -o $@
|
|
|
|
$(OBJSDIR_SERVALD)/%.o: %.c
|
|
@echo SERVALD CC $<
|
|
@mkdir -p $(dir $@)
|
|
@$(RM) $(@:.o=.gcno) $(@:.o=.gcda)
|
|
@$(CC) $(CFLAGS) $(DEFS) -c $< -o $@
|
|
|
|
$(OBJSDIR_LIB)/%.o: %.c
|
|
@echo LIB CC $<
|
|
@mkdir -p $(dir $@)
|
|
@$(RM) $(@:.o=.gcno) $(@:.o=.gcda)
|
|
@$(CC) $(CFLAGS) $(DEFS) -c $< -o $@
|
|
|
|
$(SERVAL_DAEMON_OBJS): $(HDRS)
|
|
$(SERVALD_OBJS): Makefile
|
|
$(LIB_SERVAL_OBJS): $(HDRS) Makefile
|
|
$(TEST_OBJS): $(HDRS) Makefile
|
|
$(OBJSDIR_TOOLS)/tfw_createfile.o: str.h Makefile
|
|
$(OBJSDIR_TOOLS)/directory_service.o: $(HDRS) Makefile
|
|
$(MONITOR_CLIENT_OBJS): $(HDRS) Makefile
|
|
$(SIMULATOR_OBJS): $(HDRS) Makefile
|
|
|
|
servald: $(SERVALD_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $(SERVALD_OBJS) $(OBJSDIR_TOOLS)/version.o $(LDFLAGS)
|
|
|
|
serval-tests: $(TEST_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $(TEST_OBJS) $(OBJSDIR_TOOLS)/version.o $(LDFLAGS)
|
|
|
|
libserval.a: $(LIB_SERVAL_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
@echo AR $@
|
|
@$(AR) -cr $@ $(LIB_SERVAL_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
|
|
directory_service: $(OBJSDIR_TOOLS)/directory_service.o libserval.a
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $(OBJSDIR_TOOLS)/directory_service.o libserval.a $(LDFLAGS)
|
|
|
|
tfw_createfile: $(OBJSDIR_TOOLS)/tfw_createfile.o libserval.a
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $(OBJSDIR_TOOLS)/tfw_createfile.o libserval.a $(LDFLAGS)
|
|
|
|
fakeradio: $(OBJSDIR_TOOLS)/fakeradio.o libserval.a
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $(OBJSDIR_TOOLS)/fakeradio.o libserval.a $(LDFLAGS)
|
|
|
|
simulator: $(SIMULATOR_OBJS) libserval.a
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $(SIMULATOR_OBJS) libserval.a $(LDFLAGS)
|
|
|
|
copyright:
|
|
@if [ -x "$(COPYRIGHT_TOOL)" ]; then \
|
|
echo GENERATE COPYRIGHT.txt; \
|
|
$(COPYRIGHT_TOOL) -o COPYRIGHT.txt condense *.c *.h; \
|
|
else \
|
|
echo 'sp-copyright-tool is not in $$PATH; COPYRIGHT.txt not updated'; \
|
|
fi
|
|
|
|
findPATH = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH)))))
|
|
COPYRIGHT_TOOL := $(call findPATH,sp-copyright-tool)
|
|
|
|
libserval.so: $(SERVALD_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
@echo LINK $@
|
|
@$(CC) -Wall -shared -o $@ $(SERVALD_OBJS) $(OBJSDIR_TOOLS)/version.o $(LDFLAGS)
|
|
|
|
libmonitorclient.so: $(MONITOR_CLIENT_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
@echo LINK $@
|
|
@$(CC) -Wall -shared -o $@ $(MONITOR_CLIENT_OBJS) $(OBJSDIR_TOOLS)/version.o $(LDFLAGS)
|
|
|
|
libmonitorclient.a: $(MONITOR_CLIENT_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
@echo AR $@
|
|
@$(AR) -cr $@ $(MONITOR_CLIENT_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
|
|
install: servald
|
|
$(INSTALL_PROGRAM) -D servald $(DESTDIR)$(sbindir)/servald
|
|
|
|
uninstall:
|
|
$(RM) $(DESTDIR)$(sbindir)/servald
|
|
|
|
clean:
|
|
@$(RM) -r $(OBJSDIRS:%=%/*) \
|
|
servald libservald.so \
|
|
libserval.a libmonitorclient.so libmonitorclient.a \
|
|
fakeradio \
|
|
tfw_createfile
|