Makefile
author Tero Marttila <terom@fixme.fi>
Sat, 28 Feb 2009 18:48:10 +0200
changeset 12 4147fae232d9
parent 9 4c4c906cc649
child 17 5001564ac5fc
permissions -rw-r--r--
update sock_stream_read/write semantics for EOF/EAGAIN, tentative event-based gnutls code
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
# default is test
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
ifndef MODE
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
MODE = test
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
endif
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
ifeq ($(MODE), debug)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
MODE_CFLAGS = -g -DDEBUG_ENABLED
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
else ifeq ($(MODE), dev)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
MODE_CFLAGS = -g
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
else ifeq ($(MODE), test)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
MODE_CFLAGS = -g -DINFO_DISABLED
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
else ifeq ($(MODE), release)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
MODE_CFLAGS = -DINFO_DISABLED -O2
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
endif
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
FIXED_CFLAGS = -Wall -std=gnu99
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    18
# libevent
9
4c4c906cc649 add sock_stream_callbacks and ev_base
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    19
LIBEVENT_CFLAGS = -I/home/terom/opt/include
4c4c906cc649 add sock_stream_callbacks and ev_base
Tero Marttila <terom@fixme.fi>
parents: 8
diff changeset
    20
LIBEVENT_LDFLAGS = -L/home/terom/opt/lib  -levent_core
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    21
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    22
# GnuTLS stuff
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    23
GNUTLS_NAME = "gnutls"
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    24
GNUTLS_CFLAGS = $(shell pkg-config ${GNUTLS_NAME} --cflags)
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    25
GNUTLS_LDFLAGS = $(shell pkg-config ${GNUTLS_NAME} --libs)
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    26
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
BIN_NAMES = nexus
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
BIN_PATHS = $(addprefix bin/,$(BIN_NAMES))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
# modules
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
module_objs = $(patsubst src/%.c,obj/%.o,$(wildcard src/$(1)/*.c))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
6
240ae8482d64 add error_name function
Tero Marttila <terom@fixme.fi>
parents: 2
diff changeset
    33
CORE_OBJS = obj/error.o
1
cf0e1bb6bcab a fancy socket abstraction layer, with TCP, next, SSL. Also, .hgignore
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    34
SOCK_OBJS = obj/sock.o obj/sock_tcp.o
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    35
SOCK_GNUTLS_OBJS = obj/sock_gnutls.o
8
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    36
LINEPROTO_OBJS = obj/line_proto.o
1
cf0e1bb6bcab a fancy socket abstraction layer, with TCP, next, SSL. Also, .hgignore
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    37
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
# XXX: not yet there
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
#CORE_OBJS = obj/lib/log.o obj/lib/signals.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
# first target
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
all: ${BIN_PATHS}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
# binaries
8
be88e543c8ff split off line_proto, and make sock_stream_error return a const error_info
Tero Marttila <terom@fixme.fi>
parents: 6
diff changeset
    45
bin/nexus: ${CORE_OBJS} ${SOCK_OBJS} ${SOCK_GNUTLS_OBJS} ${LINEPROTO_OBJS}
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
# computed
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    48
CFLAGS = ${MODE_CFLAGS} ${FIXED_CFLAGS} ${LIBEVENT_CFLAGS} ${GNUTLS_CFLAGS}
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    49
LDFLAGS = ${LIBEVENT_LDFLAGS} ${GNUTLS_LDFLAGS}
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    51
# XXX: is this valid?
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    52
CPPFLAGS = ${CFLAGS}
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    53
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    54
# names for src/
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
SRC_PATHS = $(wildcard src/*.c) $(wildcard src/*/*.c)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
SRC_DIRS = $(dir $(SRC_NAMES))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
# other targets
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
clean :
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
	-rm obj/*.o obj/*/*.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
	-rm bin/* 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
	-rm build/deps/*.d build/deps/*/*.d
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
clean-deps:
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
	-rm build/deps/*/*.d 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
	-rm build/deps/*.d
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
#obj-dirs: 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
#	python build/make_obj_dirs.py $(BIN_PATHS)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
build/deps/%.d : src/%.c
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
	@set -e; rm -f $@; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
	 $(CC) -MM -MT __ $(CPPFLAGS) $< > $@.$$$$; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
	 sed 's,__[ :]*,obj/$*.o $@ : ,g' < $@.$$$$ > $@; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
	 rm -f $@.$$$$
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
include $(SRC_NAMES:%.c=build/deps/%.d)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
obj/%.o : src/%.c
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
bin/% : obj/%.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
	$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
# documentation
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
DOXYGEN_PATH = /usr/bin/doxygen
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
DOXYGEN_CONF_PATH = doc/doxygen.conf
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
DOXYGEN_OUTPUT_FILE = doc/html/index.html
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
docs :
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
	${DOXYGEN_PATH} ${DOXYGEN_CONF_PATH}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93