Makefile
author Tero Marttila <terom@fixme.fi>
Sun, 01 Mar 2009 01:48:14 +0200
changeset 21 0911d0b828d4
parent 18 dedf137b504f
child 23 542c73d07d3c
permissions -rw-r--r--
add basic log.c module
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
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    33
CORE_OBJS = obj/error.o obj/log.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
18
dedf137b504f add initial irc_conn code that can register
Tero Marttila <terom@fixme.fi>
parents: 17
diff changeset
    37
IRC_OBJS = obj/irc_line.o obj/irc_conn.o
1
cf0e1bb6bcab a fancy socket abstraction layer, with TCP, next, SSL. Also, .hgignore
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    38
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
# XXX: not yet there
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
#CORE_OBJS = obj/lib/log.o obj/lib/signals.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
# first target
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
all: ${BIN_PATHS}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
# binaries
17
5001564ac5fc irc_line implementation
Tero Marttila <terom@fixme.fi>
parents: 9
diff changeset
    46
bin/nexus: ${CORE_OBJS} ${SOCK_OBJS} ${SOCK_GNUTLS_OBJS} ${LINEPROTO_OBJS} ${IRC_OBJS}
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
# computed
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    49
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
    50
LDFLAGS = ${LIBEVENT_LDFLAGS} ${GNUTLS_LDFLAGS}
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    52
# XXX: is this valid?
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    53
CPPFLAGS = ${CFLAGS}
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    54
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    55
# names for src/
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
SRC_PATHS = $(wildcard src/*.c) $(wildcard src/*/*.c)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
SRC_DIRS = $(dir $(SRC_NAMES))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
# other targets
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
clean :
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
	-rm obj/*.o obj/*/*.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
	-rm bin/* 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
	-rm build/deps/*.d build/deps/*/*.d
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
clean-deps:
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
	-rm build/deps/*.d
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
#obj-dirs: 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
#	python build/make_obj_dirs.py $(BIN_PATHS)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
build/deps/%.d : src/%.c
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
	@set -e; rm -f $@; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
	 $(CC) -MM -MT __ $(CPPFLAGS) $< > $@.$$$$; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
	 sed 's,__[ :]*,obj/$*.o $@ : ,g' < $@.$$$$ > $@; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
	 rm -f $@.$$$$
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
include $(SRC_NAMES:%.c=build/deps/%.d)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
obj/%.o : src/%.c
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
bin/% : obj/%.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
	$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
# documentation
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
DOXYGEN_PATH = /usr/bin/doxygen
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
DOXYGEN_CONF_PATH = doc/doxygen.conf
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
DOXYGEN_OUTPUT_FILE = doc/html/index.html
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
docs :
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
	${DOXYGEN_PATH} ${DOXYGEN_CONF_PATH}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94