]> WPIA git - cassiopeia.git/blob - Makefile
Merge branch 'libs/openssl/local'
[cassiopeia.git] / Makefile
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
6
7 MKDIR = mkdir -p
8
9 ifneq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
10     CFLAGS += -O0
11 else
12     CFLAGS += -O2
13 endif
14 ifeq (,$(filter nostrip,$(DEB_BUILD_OPTIONS)))
15     INSTALL_PROGRAM += -s
16 endif
17 ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
18     NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
19     MAKEFLAGS += -j$(NUMJOBS)
20 endif
21
22 BIN="bin/cassiopeia"
23 LIBS=openssl collissiondetect
24
25 LT_CC=libtool --mode=compile gcc
26 LT_CC_DEP=g++
27 LT_CXX=libtool --mode=compile g++
28 LT_CXX_DEP=g++
29 LT_LD=libtool --mode=link g++
30
31 CC=${LT_CC}
32 CC_DEP=${LT_CC_DEP}
33 CXX=${LT_CXX}
34 CXX_DEP=${LT_CXX_DEP}
35 LD=${LT_LD}
36
37 ifneq (,$(filter debug,$(DEB_BUILD_OPTIONS)))
38 ADDFLAGS=-DNO_DAEMON
39 endif
40
41 CFLAGS=-O3 -g -flto -Wall -Werror -Wextra -pedantic -std=c++11 ${ADDFLAGS}
42 CXXFLAGS=$(CFLAGS)
43 LDFLAGS=-O3 -g -flto -lmysqlclient -lssl -lcrypto -ldl
44
45 SRC_DIR=src
46 OBJ_DIR=obj
47 DEP_DIR=dep
48
49 FS_SRC=$(wildcard ${SRC_DIR}/*.cpp)
50 FS_BIN=$(wildcard ${SRC_DIR}/app/*.cpp)
51 FS_LIBS=$(wildcard lib/*/)
52 FS_OBJ=$(FS_SRC:${SRC_DIR}/%.cpp=${OBJ_DIR}/%.lo)
53 FS_DEP=$(FS_SRC:${SRC_DIR}/%.cpp=${DEP_DIR}/%.d)
54
55 .SUFFIXES: .c .cpp .d
56
57 .PHONY: all
58 all: build
59
60 .PHONY: clean
61 clean::
62         -rm -rf .libs
63         -rm -rf *.a
64         -rm -rf *.d
65         -rm -rf *.o
66         -rm -rf *.la
67         -rm -rf *.lo
68         -rm -rf *.so
69         -rm -rf ${OBJ_DIR}
70         -rm -rf ${DEP_DIR}
71         ${MAKE} -C lib/openssl clean
72         ${MAKE} -C lib/collissiondetect clean
73 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
74         # Code to run the package test suite.
75         ${MAKE} -C test clean
76 endif
77
78
79 build: cassiopeia
80 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
81         ${MAKE} -C test
82 endif
83
84 .PHONY: install
85 install: build
86         ${INSTALL_PROGRAM} bin/cassiopeia ${DESTDIR}/usr/bin/cassiopeia
87         ${INSTALL_DIR} ${DESTDIR}/etc/cacert/cassiopeia
88
89 .PHONY: libs
90 libs: ${LIBS}
91
92 .PHONY: openssl
93 openssl:
94         ${MAKE} -C lib/openssl
95
96 .PHONY: collissiondetect
97 collissiondetect:
98         ${MAKE} -C lib/collissiondetect
99
100 # --------
101
102 cassiopeia: bin/cassiopeia
103
104 bin/cassiopeia: libs ${FS_OBJ}
105         ${MKDIR} $(shell dirname $@) && ${LT_LD} ${LDFLAGS} -o $@ ${FS_OBJ}
106
107 ${DEP_DIR}/%.d: ${SRC_DIR}/%.cpp
108         ${MKDIR} $(shell dirname $@) && $(CXX_DEP) $(CXXFLAGS) -M -MF $@ $<
109 ${DEP_DIR}/%.d: ${SRC_DIR}/%.c
110         ${MKDIR} $(shell dirname $@) && $(CC) $(CXXFLAGS) -M -MF $@ $<
111
112 ${OBJ_DIR}/%.lo ${OBJ_DIR}/%.o: ${SRC_DIR}/%.c ${DEP_DIR}/%.d
113         ${MKDIR} $(shell dirname $@) && $(CC) $(CFLAGS) -o $@ -c $<
114 ${OBJ_DIR}/%.lo ${OBJ_DIR}/%.o: ${SRC_DIR}/%.cpp ${DEP_DIR}/%.d
115         ${MKDIR} $(shell dirname $@) && $(CXX) $(CXXFLAGS) -o $@ -c $<
116
117 -include $(FS_DEP)