X-Git-Url: https://code.wpia.club/?p=cassiopeia.git;a=blobdiff_plain;f=Makefile;h=cecbd4f2048c6295550344ce48e35de90f95e331;hp=6c982744e383cc21453ce242c50509d4f7568724;hb=HEAD;hpb=349dac963257d776985bd0b46ff50d0746a9ae51 diff --git a/Makefile b/Makefile index 6c98274..cecbd4f 100644 --- a/Makefile +++ b/Makefile @@ -6,11 +6,6 @@ INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755 MKDIR = mkdir -p -ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -else - CFLAGS += -O2 -endif ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif @@ -20,33 +15,45 @@ ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) endif BIN="bin/cassiopeia" -LIBS=openssl collissiondetect +LIBS=openssl collisiondetect -LT_CC=libtool --mode=compile gcc -LT_CC_DEP=g++ -LT_CXX=libtool --mode=compile g++ -LT_CXX_DEP=g++ -LT_LD=libtool --mode=link g++ +CC=libtool --mode=compile gcc +CC_DEP=g++ +CXX=libtool --mode=compile g++ +CXX_DEP=g++ +LD=libtool --mode=link g++ -CC=${LT_CC} -CC_DEP=${LT_CC_DEP} -CXX=${LT_CXX} -CXX_DEP=${LT_CXX_DEP} -LD=${LT_LD} +ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS))) +CFLAGS+=-DNO_DAEMON -g -Og +endif +ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif -CFLAGS=-O3 -g -flto -Wall -Werror -Wextra -pedantic -std=c++11 +CFLAGS+=${ADDFLAGS} -Wall -Werror -Wextra -pedantic -std=c++1y -Ilib/openssl/include -Isrc CXXFLAGS=$(CFLAGS) -LDFLAGS=-O3 -g -flto +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=$(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 @@ -56,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 @@ -64,44 +73,66 @@ clean:: -rm -rf *.so -rm -rf ${OBJ_DIR} -rm -rf ${DEP_DIR} - ${MAKE} -C lib/openssl clean - ${MAKE} -C lib/collissiondetect clean ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) # Code to run the package test suite. - ${MAKE} -C test clean + ADDFLAGS="$(ADDFLAGS)" DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS)" ${MAKE} -C test clean endif +.PHONY: dist-clean +dist-clean: clean + ${MAKE} -C lib/openssl clean + ${MAKE} -C lib/collisiondetect clean + build: cassiopeia ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) - ${MAKE} -C test + ADDFLAGS="$(ADDFLAGS)" DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS)" ${MAKE} -C test endif .PHONY: install install: build ${INSTALL_PROGRAM} bin/cassiopeia ${DESTDIR}/usr/bin/cassiopeia + ${INSTALL_PROGRAM} bin/cassiopeia-signer ${DESTDIR}/usr/bin/cassiopeia-signer + ${INSTALL_DIR} ${DESTDIR}/etc/wpia/cassiopeia .PHONY: libs libs: ${LIBS} .PHONY: openssl -openssl: - ${MAKE} -C lib/openssl - -.PHONY: collissiondetect -collissiondetect: - ${MAKE} -C lib/collissiondetect +openssl lib/openssl/libssl.a lib/openssl/libcrypto.a: + ${MAKE} -C lib openssl + +.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 +cassiopeia: bin/cassiopeia bin/cassiopeia-signer + +bin/cassiopeia: libs ${FS_OBJ} ${OBJ_DIR}/apps/client.lo + ${MKDIR} $(shell dirname $@) && ${LD} ${LDFLAGS} -lpqxx -lpq -o $@ ${FS_OBJ} ${OBJ_DIR}/apps/client.lo -bin/cassiopeia: libs ${FS_OBJ} - ${MKDIR} $(shell dirname $@) && ${LT_LD} -o $@ ${FS_OBJ} +bin/cassiopeia-signer: libs ${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