]> WPIA git - cassiopeia.git/blobdiff - Makefile
fix: use correct prepared statement for writing logs
[cassiopeia.git] / Makefile
index 50554a085f77680a6991bd28c6d91c9685b65f3b..cecbd4f2048c6295550344ce48e35de90f95e331 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@ ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
 endif
 
 BIN="bin/cassiopeia"
-LIBS=openssl collissiondetect
+LIBS=openssl collisiondetect
 
 CC=libtool --mode=compile gcc
 CC_DEP=g++
@@ -24,7 +24,7 @@ CXX_DEP=g++
 LD=libtool --mode=link g++
 
 ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS)))
-CFLAGS+=-DNO_DAEMON -g
+CFLAGS+=-DNO_DAEMON -g -Og
 endif
 ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
     CFLAGS += -O0
@@ -32,19 +32,28 @@ else
     CFLAGS += -O2
 endif
 
-CFLAGS+=${ADDFLAGS} -Wall -Werror -Wextra -pedantic -std=c++11 -Ilib/openssl/include -Isrc
+CFLAGS+=${ADDFLAGS} -Wall -Werror -Wextra -pedantic -std=c++1y -Ilib/openssl/include -Isrc
 CXXFLAGS=$(CFLAGS)
 LDFLAGS+=${ADDFLAGS} -L/usr/lib/i386-linux-gnu/ -lssl -lcrypto -ldl -Llib/openssl
 
+ifneq (,$(filter coverage,$(DEB_BUILD_OPTIONS)))
+    LDFLAGS += -lgcov
+    CFLAGS += -fprofile-arcs -ftest-coverage
+endif
+
+
 SRC_DIR=src
 OBJ_DIR=obj
 DEP_DIR=dep
 
-FS_SRC=$(filter-out ${SRC_DIR}/mysql--disabled.cpp,$(wildcard ${SRC_DIR}/*.cpp))
+FS_SRC=$(wildcard ${SRC_DIR}/*.cpp) $(wildcard ${SRC_DIR}/log/*.cpp) $(wildcard ${SRC_DIR}/io/*.cpp) $(wildcard ${SRC_DIR}/crypto/*.cpp) $(wildcard ${SRC_DIR}/db/*.cpp)
+
 FS_BIN=$(wildcard ${SRC_DIR}/app/*.cpp)
 FS_LIBS=$(wildcard lib/*/)
 FS_OBJ=$(FS_SRC:${SRC_DIR}/%.cpp=${OBJ_DIR}/%.lo)
 FS_DEP=$(FS_SRC:${SRC_DIR}/%.cpp=${DEP_DIR}/%.d)
+LIB_OPENSSL=lib/openssl/libssl.a
+
 
 .SUFFIXES: .c .cpp .d
 
@@ -54,6 +63,8 @@ all: build
 .PHONY: clean
 clean::
        -rm -rf .libs
+       -rm -rf *.gcov
+       -rm -rf gcov.log
        -rm -rf *.a
        -rm -rf *.d
        -rm -rf *.o
@@ -70,7 +81,7 @@ endif
 .PHONY: dist-clean
 dist-clean: clean
        ${MAKE} -C lib/openssl clean
-       ${MAKE} -C lib/collissiondetect clean
+       ${MAKE} -C lib/collisiondetect clean
 
 
 build: cassiopeia
@@ -82,32 +93,46 @@ endif
 install: build
        ${INSTALL_PROGRAM} bin/cassiopeia ${DESTDIR}/usr/bin/cassiopeia
        ${INSTALL_PROGRAM} bin/cassiopeia-signer ${DESTDIR}/usr/bin/cassiopeia-signer
-       ${INSTALL_DIR} ${DESTDIR}/etc/cacert/cassiopeia
+       ${INSTALL_DIR} ${DESTDIR}/etc/wpia/cassiopeia
 
 .PHONY: libs
 libs: ${LIBS}
 
 .PHONY: openssl
-openssl:
+openssl lib/openssl/libssl.a lib/openssl/libcrypto.a:
        ${MAKE} -C lib openssl
 
-.PHONY: collissiondetect
-collissiondetect:
-       ${MAKE} -C lib/collissiondetect
+.PHONY: collisiondetect
+collisiondetect:
+       ${MAKE} -C lib collisiondetect
+
+.PHONY: coverage
+coverage:
+       find . -name "*.gcda" -exec rm {} + &&\
+       rm -rf coverage &&\
+       rm -rf coverage.info coverage_stripped.info &&\
+       ${MAKE} "DEB_BUILD_OPTIONS=coverage noopt" &&\
+       lcov -c --directory obj --directory test/obj --output-file coverage.info &&\
+       lcov -r coverage.info "/usr/**" -o coverage_stripped.info &&\
+       genhtml -p $(shell pwd) coverage_stripped.info --output-directory coverage
+
+.PHONY: checkformat
+checkformat:
+       (! LC_ALL=C scripts/format.sh | grep -q "^Formatted  ")
 
 # --------
 
 cassiopeia: bin/cassiopeia bin/cassiopeia-signer
 
 bin/cassiopeia: libs ${FS_OBJ} ${OBJ_DIR}/apps/client.lo
-       ${MKDIR} $(shell dirname $@) &&  ${LD} ${LDFLAGS} -lmysqlclient -o $@ ${FS_OBJ} ${OBJ_DIR}/apps/client.lo
+       ${MKDIR} $(shell dirname $@) &&  ${LD} ${LDFLAGS} -lpqxx -lpq -o $@ ${FS_OBJ} ${OBJ_DIR}/apps/client.lo
 
 bin/cassiopeia-signer: libs ${FS_OBJ} ${OBJ_DIR}/apps/signer.lo
-       ${MKDIR} $(shell dirname $@) &&  ${LD} ${LDFLAGS} -o $@ $(filter-out ${OBJ_DIR}/mysql.lo,${FS_OBJ}) ${OBJ_DIR}/apps/signer.lo
+       ${MKDIR} $(shell dirname $@) &&  ${LD} ${LDFLAGS} -o $@ $(filter-out  ${OBJ_DIR}/db/psql.lo, $(filter-out ${OBJ_DIR}/db/mysql.lo,${FS_OBJ})) ${OBJ_DIR}/apps/signer.lo
 
-${DEP_DIR}/%.d: ${SRC_DIR}/%.cpp
+${DEP_DIR}/%.d: ${SRC_DIR}/%.cpp ${LIB_OPENSSL}
        ${MKDIR} $(shell dirname $@) && $(CXX_DEP) $(CXXFLAGS) -M -MF $@ $<
-${DEP_DIR}/%.d: ${SRC_DIR}/%.c
+${DEP_DIR}/%.d: ${SRC_DIR}/%.c ${LIB_OPENSSL}
        ${MKDIR} $(shell dirname $@) && $(CC) $(CXXFLAGS) -M -MF $@ $<
 
 ${OBJ_DIR}/%.lo ${OBJ_DIR}/%.o: ${SRC_DIR}/%.c ${DEP_DIR}/%.d