author | Tero Marttila <terom@fixme.fi> |
Sun, 22 Feb 2009 03:57:44 +0200 | |
changeset 1 | cf0e1bb6bcab |
parent 0 | 317e5bc59627 |
child 2 | a834f0559939 |
permissions | -rw-r--r-- |
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 |
||
1
cf0e1bb6bcab
a fancy socket abstraction layer, with TCP, next, SSL. Also, .hgignore
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
29 |
SOCK_OBJS = obj/sock.o obj/sock_tcp.o |
cf0e1bb6bcab
a fancy socket abstraction layer, with TCP, next, SSL. Also, .hgignore
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
30 |
|
0 | 31 |
# XXX: not yet there |
32 |
#CORE_OBJS = obj/lib/log.o obj/lib/signals.o |
|
33 |
||
34 |
# first target |
|
35 |
all: ${BIN_PATHS} |
|
36 |
||
37 |
# binaries |
|
1
cf0e1bb6bcab
a fancy socket abstraction layer, with TCP, next, SSL. Also, .hgignore
Tero Marttila <terom@fixme.fi>
parents:
0
diff
changeset
|
38 |
bin/nexus: ${SOCK_OBJS} |
0 | 39 |
|
40 |
# computed |
|
41 |
LDFLAGS = ${LIBRARY_PATHS} |
|
42 |
CPPFLAGS = ${INCLUDE_PATHS} ${DEFINES} |
|
43 |
CFLAGS = ${MODE_CFLAGS} ${FIXED_CFLAGS} |
|
44 |
||
45 |
SRC_PATHS = $(wildcard src/*.c) $(wildcard src/*/*.c) |
|
46 |
SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS)) |
|
47 |
SRC_DIRS = $(dir $(SRC_NAMES)) |
|
48 |
||
49 |
# other targets |
|
50 |
clean : |
|
51 |
-rm obj/*.o obj/*/*.o |
|
52 |
-rm bin/* |
|
53 |
-rm build/deps/*.d build/deps/*/*.d |
|
54 |
||
55 |
clean-deps: |
|
56 |
-rm build/deps/*/*.d |
|
57 |
-rm build/deps/*.d |
|
58 |
||
59 |
#obj-dirs: |
|
60 |
# python build/make_obj_dirs.py $(BIN_PATHS) |
|
61 |
||
62 |
build/deps/%.d : src/%.c |
|
63 |
@set -e; rm -f $@; \ |
|
64 |
$(CC) -MM -MT __ $(CPPFLAGS) $< > $@.$$$$; \ |
|
65 |
sed 's,__[ :]*,obj/$*.o $@ : ,g' < $@.$$$$ > $@; \ |
|
66 |
rm -f $@.$$$$ |
|
67 |
||
68 |
include $(SRC_NAMES:%.c=build/deps/%.d) |
|
69 |
||
70 |
obj/%.o : src/%.c |
|
71 |
$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ |
|
72 |
||
73 |
bin/% : obj/%.o |
|
74 |
$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@ |
|
75 |
||
76 |
# documentation |
|
77 |
DOXYGEN_PATH = /usr/bin/doxygen |
|
78 |
DOXYGEN_CONF_PATH = doc/doxygen.conf |
|
79 |
DOXYGEN_OUTPUT_FILE = doc/html/index.html |
|
80 |
||
81 |
docs : |
|
82 |
${DOXYGEN_PATH} ${DOXYGEN_CONF_PATH} |
|
83 |