close() file after GET
[krsd] / Makefile
1 CFLAGS=${shell pkg-config libevent_openssl --cflags} -ggdb -Wall --std=c99 $(INCLUDES)
2 LDFLAGS=${shell pkg-config libevent_openssl --libs} ${shell pkg-config libssl --libs} -lmagic -lattr -lpthread
3 INCLUDES=-Isrc -Ilib/evhtp/ -Ilib/evhtp/htparse -Ilib/evhtp/evthr -Ilib/evhtp/oniguruma/
4
5 BASE_OBJECTS=src/config.o
6 COMMON_OBJECTS=src/common/log.o src/common/user.o src/common/auth.o src/common/json.o
7 HANDLER_OBJECTS=src/handler/storage.o src/handler/auth.o src/handler/webfinger.o src/handler/dispatch.o
8 PROCESS_OBJECTS=src/process/main.o
9 OBJECTS=$(BASE_OBJECTS) $(COMMON_OBJECTS) $(PROCESS_OBJECTS) $(HANDLER_OBJECTS)
10
11 STATIC_LIBS=lib/evhtp/build/libevhtp.a
12
13 SUBMODULES=lib/evhtp/
14
15 default: all
16
17 all: rs-serve tools
18
19 rs-serve: $(STATIC_LIBS) $(OBJECTS)
20         @echo "[LD] $@"
21         @$(CC) -o $@ $(OBJECTS) $(STATIC_LIBS) $(LDFLAGS)
22
23 %.o: %.c
24         @echo "[CC] ${shell echo $@ | sed 's/src\///' | sed 's/\.o//'}"
25         @$(CC) -c $< -o $@ $(CFLAGS)
26
27 tools: tools/add-token tools/remove-token tools/list-tokens
28
29 .PHONY: tools
30
31 tools/add-token: src/tools/add-token.o src/common/auth.o
32         @echo "[LD] $@"
33         @$(CC) -o $@ src/tools/add-token.o src/common/auth.o
34
35 tools/remove-token: src/tools/remove-token.o src/common/auth.o
36         @echo "[LD] $@"
37         @$(CC) -o $@ src/tools/remove-token.o src/common/auth.o
38
39 tools/list-tokens: src/tools/list-tokens.o src/common/auth.o
40         @echo "[LD] $@"
41         @$(CC) -o $@ src/tools/list-tokens.o src/common/auth.o
42
43 clean:
44         @echo "[CLEAN]"
45         @rm -f rs-serve tools/add-token tools/remove-token tools/list-tokens
46         @find src/ -name '*.o' -exec rm '{}' ';'
47         @find -name '*~' -exec rm '{}' ';'
48         @find -name '*.swp' -exec rm '{}' ';'
49
50 notes:
51         @grep -rE 'TODO:|FIXME:' src/
52
53 .PHONY: notes
54
55 install: rs-serve
56 # install rs-esrve
57         @echo "[INSTALL] rs-serve"
58         @install -s rs-serve /usr/bin
59 # install tools
60         @echo "[INSTALL] rs-list-tokens"
61         @install -s tools/list-tokens /usr/bin/rs-list-tokens
62         @echo "[INSTALL] rs-add-token"
63         @install -s tools/add-token /usr/bin/rs-add-token
64         @echo "[INSTALL] rs-remove-token"
65         @install -s tools/remove-token /usr/bin/rs-remove-token
66 # create working dir
67         @echo "[MKDIR] /var/lib/rs-serve/"
68         @mkdir -p /var/lib/rs-serve
69 # install init scxript
70         @echo "[INSTALL] /etc/init.d/rs-serve"
71         @install -m 0755 init-script.sh /etc/init.d/rs-serve
72 ifeq (${shell test -f /etc/default/rs-serve >/dev/null 2>&1 ; echo $$?}, 0)
73         @echo "[EXISTS] /etc/default/rs-serve"
74 else
75         @echo "[INSTALL] /etc/default/rs-serve"
76         @install init-script-defaults /etc/default/rs-serve
77 endif
78 ifeq (${shell type update-rc.d >/dev/null 2>&1 ; echo $$?}, 0)
79         @echo "[UPDATE-RC.D]"
80         @update-rc.d rs-serve defaults
81 else
82         @echo "(can't update /etc/rcN.d, no idea how that works on your system)"
83 endif
84
85 test: all
86         @test/run.sh
87
88 leakcheck: all
89         scripts/leakcheck.sh
90
91 limit_check: all
92         scripts/limitcheck.sh 5000
93
94 .PHONY: default all clean leakcheck
95
96 ## DEPENDENT LIBS
97
98 lib/evhtp/build/libevhtp.a: lib/evhtp/
99         @echo "[DEPS] libevhtp"
100         @cd lib/evhtp/build && cmake .. && make
101
102 ## SUBMODULES
103
104 submodules: $(SUBMODULES)
105
106 clean-submodules:
107         @echo "[CLEAN SUBMODULES]"
108         @rm -rf $(SUBMODULES)
109
110 $(SUBMODULES):
111         @echo "[SUBMODULE] $@"
112         @git submodule update --init $@
113
114 .PHONY: submodules clean-submodules $(SUBMODULES)