0
|
1 |
#LIBEVENT_PATH = ~/opt
|
|
2 |
#LIBRARY_PATHS = -L${LIBEVENT_PATH}/lib
|
|
3 |
#INCLUDE_PATHS = -I${LIBEVENT_PATH}/include
|
|
4 |
LDLIBS = -levent
|
|
5 |
|
|
6 |
# default is test
|
|
7 |
ifndef MODE
|
|
8 |
MODE = test
|
|
9 |
endif
|
|
10 |
|
|
11 |
ifeq ($(MODE), debug)
|
|
12 |
MODE_CFLAGS = -g -DDEBUG_ENABLED
|
|
13 |
else ifeq ($(MODE), dev)
|
|
14 |
MODE_CFLAGS = -g
|
|
15 |
else ifeq ($(MODE), test)
|
|
16 |
MODE_CFLAGS = -g -DINFO_DISABLED
|
|
17 |
else ifeq ($(MODE), release)
|
|
18 |
MODE_CFLAGS = -DINFO_DISABLED -O2
|
|
19 |
endif
|
|
20 |
|
|
21 |
FIXED_CFLAGS = -Wall -std=gnu99
|
|
22 |
|
|
23 |
BIN_NAMES = nexus
|
|
24 |
BIN_PATHS = $(addprefix bin/,$(BIN_NAMES))
|
|
25 |
|
|
26 |
# modules
|
|
27 |
module_objs = $(patsubst src/%.c,obj/%.o,$(wildcard src/$(1)/*.c))
|
|
28 |
|
|
29 |
# XXX: not yet there
|
|
30 |
#CORE_OBJS = obj/lib/log.o obj/lib/signals.o
|
|
31 |
|
|
32 |
# first target
|
|
33 |
all: ${BIN_PATHS}
|
|
34 |
|
|
35 |
# binaries
|
|
36 |
bin/nexus:
|
|
37 |
|
|
38 |
# computed
|
|
39 |
LDFLAGS = ${LIBRARY_PATHS}
|
|
40 |
CPPFLAGS = ${INCLUDE_PATHS} ${DEFINES}
|
|
41 |
CFLAGS = ${MODE_CFLAGS} ${FIXED_CFLAGS}
|
|
42 |
|
|
43 |
SRC_PATHS = $(wildcard src/*.c) $(wildcard src/*/*.c)
|
|
44 |
SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
|
|
45 |
SRC_DIRS = $(dir $(SRC_NAMES))
|
|
46 |
|
|
47 |
# other targets
|
|
48 |
clean :
|
|
49 |
-rm obj/*.o obj/*/*.o
|
|
50 |
-rm bin/*
|
|
51 |
-rm build/deps/*.d build/deps/*/*.d
|
|
52 |
|
|
53 |
clean-deps:
|
|
54 |
-rm build/deps/*/*.d
|
|
55 |
-rm build/deps/*.d
|
|
56 |
|
|
57 |
#obj-dirs:
|
|
58 |
# python build/make_obj_dirs.py $(BIN_PATHS)
|
|
59 |
|
|
60 |
build/deps/%.d : src/%.c
|
|
61 |
@set -e; rm -f $@; \
|
|
62 |
$(CC) -MM -MT __ $(CPPFLAGS) $< > $@.$$$$; \
|
|
63 |
sed 's,__[ :]*,obj/$*.o $@ : ,g' < $@.$$$$ > $@; \
|
|
64 |
rm -f $@.$$$$
|
|
65 |
|
|
66 |
include $(SRC_NAMES:%.c=build/deps/%.d)
|
|
67 |
|
|
68 |
obj/%.o : src/%.c
|
|
69 |
$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
|
|
70 |
|
|
71 |
bin/% : obj/%.o
|
|
72 |
$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
|
|
73 |
|
|
74 |
# documentation
|
|
75 |
DOXYGEN_PATH = /usr/bin/doxygen
|
|
76 |
DOXYGEN_CONF_PATH = doc/doxygen.conf
|
|
77 |
DOXYGEN_OUTPUT_FILE = doc/html/index.html
|
|
78 |
|
|
79 |
docs :
|
|
80 |
${DOXYGEN_PATH} ${DOXYGEN_CONF_PATH}
|
|
81 |
|