1 INSTALL = ${shell which install}
2 INSTALL_FILE = $(INSTALL) -p -D -o root -g root -m 644
3 INSTALL_PROGRAM = $(INSTALL) -p -D -o root -g root -m 700
4 INSTALL_SCRIPT = $(INSTALL) -p -D -o root -g root -m 700
5 INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755
9 ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
12 ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
13 NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
14 MAKEFLAGS += -j$(NUMJOBS)
18 LIBS=openssl collisiondetect
20 CC=libtool --mode=compile gcc
22 CXX=libtool --mode=compile g++
24 LD=libtool --mode=link g++
26 ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS)))
27 CFLAGS+=-DNO_DAEMON -g -Og
29 ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
35 CFLAGS+=${ADDFLAGS} -Wall -Werror -Wextra -pedantic -std=c++1y -Ilib/openssl/include -Isrc
37 LDFLAGS+=${ADDFLAGS} -L/usr/lib/i386-linux-gnu/ -lssl -lcrypto -ldl -Llib/openssl
39 ifneq (,$(filter coverage,$(DEB_BUILD_OPTIONS)))
41 CFLAGS += -fprofile-arcs -ftest-coverage
49 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)
51 FS_BIN=$(wildcard ${SRC_DIR}/app/*.cpp)
52 FS_LIBS=$(wildcard lib/*/)
53 FS_OBJ=$(FS_SRC:${SRC_DIR}/%.cpp=${OBJ_DIR}/%.lo)
54 FS_DEP=$(FS_SRC:${SRC_DIR}/%.cpp=${DEP_DIR}/%.d)
55 LIB_OPENSSL=lib/openssl/libssl.a
76 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
77 # Code to run the package test suite.
78 ADDFLAGS="$(ADDFLAGS)" DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS)" ${MAKE} -C test clean
83 ${MAKE} -C lib/openssl clean
84 ${MAKE} -C lib/collisiondetect clean
88 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
89 ADDFLAGS="$(ADDFLAGS)" DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS)" ${MAKE} -C test
94 ${INSTALL_PROGRAM} bin/cassiopeia ${DESTDIR}/usr/bin/cassiopeia
95 ${INSTALL_PROGRAM} bin/cassiopeia-signer ${DESTDIR}/usr/bin/cassiopeia-signer
96 ${INSTALL_DIR} ${DESTDIR}/etc/wpia/cassiopeia
102 openssl lib/openssl/libssl.a lib/openssl/libcrypto.a:
103 ${MAKE} -C lib openssl
105 .PHONY: collisiondetect
107 ${MAKE} -C lib collisiondetect
111 find . -name "*.gcda" -exec rm {} + &&\
113 rm -rf coverage.info coverage_stripped.info &&\
114 ${MAKE} "DEB_BUILD_OPTIONS=coverage noopt" &&\
115 lcov -c --directory obj --directory test/obj --output-file coverage.info &&\
116 lcov -r coverage.info "/usr/**" -o coverage_stripped.info &&\
117 genhtml -p $(shell pwd) coverage_stripped.info --output-directory coverage
121 cassiopeia: bin/cassiopeia bin/cassiopeia-signer
123 bin/cassiopeia: libs ${FS_OBJ} ${OBJ_DIR}/apps/client.lo
124 ${MKDIR} $(shell dirname $@) && ${LD} ${LDFLAGS} -lpqxx -lpq -o $@ ${FS_OBJ} ${OBJ_DIR}/apps/client.lo
126 bin/cassiopeia-signer: libs ${FS_OBJ} ${OBJ_DIR}/apps/signer.lo
127 ${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
129 ${DEP_DIR}/%.d: ${SRC_DIR}/%.cpp ${LIB_OPENSSL}
130 ${MKDIR} $(shell dirname $@) && $(CXX_DEP) $(CXXFLAGS) -M -MF $@ $<
131 ${DEP_DIR}/%.d: ${SRC_DIR}/%.c ${LIB_OPENSSL}
132 ${MKDIR} $(shell dirname $@) && $(CC) $(CXXFLAGS) -M -MF $@ $<
134 ${OBJ_DIR}/%.lo ${OBJ_DIR}/%.o: ${SRC_DIR}/%.c ${DEP_DIR}/%.d
135 ${MKDIR} $(shell dirname $@) && $(CC) $(CFLAGS) -o $@ -c $<
136 ${OBJ_DIR}/%.lo ${OBJ_DIR}/%.o: ${SRC_DIR}/%.cpp ${DEP_DIR}/%.d
137 ${MKDIR} $(shell dirname $@) && $(CXX) $(CXXFLAGS) -o $@ -c $<