]> WPIA git - cassiopeia.git/blob - Makefile
add: move out openssl-clean
[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 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
72         # Code to run the package test suite.
73         ${MAKE} -C test clean
74 endif
75
76 .PHONY: dist-clean
77 dist-clean: clean
78         ${MAKE} -C lib/openssl clean
79         ${MAKE} -C lib/collissiondetect clean
80
81
82 build: cassiopeia
83 ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
84         ${MAKE} -C test
85 endif
86
87 .PHONY: install
88 install: build
89         ${INSTALL_PROGRAM} bin/cassiopeia ${DESTDIR}/usr/bin/cassiopeia
90         ${INSTALL_DIR} ${DESTDIR}/etc/cacert/cassiopeia
91
92 .PHONY: libs
93 libs: ${LIBS}
94
95 .PHONY: openssl
96 openssl:
97         ${MAKE} -C lib openssl
98
99 .PHONY: collissiondetect
100 collissiondetect:
101         ${MAKE} -C lib/collissiondetect
102
103 # --------
104
105 cassiopeia: bin/cassiopeia
106
107 bin/cassiopeia: libs ${FS_OBJ}
108         ${MKDIR} $(shell dirname $@) && ${LT_LD} ${LDFLAGS} -o $@ ${FS_OBJ}
109
110 ${DEP_DIR}/%.d: ${SRC_DIR}/%.cpp
111         ${MKDIR} $(shell dirname $@) && $(CXX_DEP) $(CXXFLAGS) -M -MF $@ $<
112 ${DEP_DIR}/%.d: ${SRC_DIR}/%.c
113         ${MKDIR} $(shell dirname $@) && $(CC) $(CXXFLAGS) -M -MF $@ $<
114
115 ${OBJ_DIR}/%.lo ${OBJ_DIR}/%.o: ${SRC_DIR}/%.c ${DEP_DIR}/%.d
116         ${MKDIR} $(shell dirname $@) && $(CC) $(CFLAGS) -o $@ -c $<
117 ${OBJ_DIR}/%.lo ${OBJ_DIR}/%.o: ${SRC_DIR}/%.cpp ${DEP_DIR}/%.d
118         ${MKDIR} $(shell dirname $@) && $(CXX) $(CXXFLAGS) -o $@ -c $<
119
120 -include $(FS_DEP)