Makefile
author Tero Marttila <terom@fixme.fi>
Tue, 10 Mar 2009 03:38:20 +0200
changeset 32 ae66e9ae4afb
parent 26 aec062af155d
child 37 4fe4a3c4496e
permissions -rw-r--r--
convert line_proto to use a line_proto_callbacks struct
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
25
56367df4ce5b add irc_net module, and fix Makefile CFLAGS, add -Wextra
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    16
FIXED_CFLAGS = -Wall -Wextra -std=gnu99
0
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
23
542c73d07d3c add a simple irc_log module (with evsql code) that joins a channel and log_info's PRIVMSGs
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    27
# evsql stuff
542c73d07d3c add a simple irc_log module (with evsql code) that joins a channel and log_info's PRIVMSGs
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    28
EVSQL_CFLAGS = 
542c73d07d3c add a simple irc_log module (with evsql code) that joins a channel and log_info's PRIVMSGs
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    29
EVSQL_LDFLAGS = -levsql -lpq
542c73d07d3c add a simple irc_log module (with evsql code) that joins a channel and log_info's PRIVMSGs
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    30
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
BIN_NAMES = nexus
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
BIN_PATHS = $(addprefix bin/,$(BIN_NAMES))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
# modules
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
module_objs = $(patsubst src/%.c,obj/%.o,$(wildcard src/$(1)/*.c))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
21
0911d0b828d4 add basic log.c module
Tero Marttila <terom@fixme.fi>
parents: 18
diff changeset
    37
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
    38
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
    39
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
    40
LINEPROTO_OBJS = obj/line_proto.o
26
aec062af155d add irc_chan module
Tero Marttila <terom@fixme.fi>
parents: 25
diff changeset
    41
IRC_OBJS = obj/irc_line.o obj/irc_conn.o obj/irc_net.o obj/irc_chan.o
23
542c73d07d3c add a simple irc_log module (with evsql code) that joins a channel and log_info's PRIVMSGs
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    42
IRC_LOG_OBJS = obj/irc_log.o
1
cf0e1bb6bcab a fancy socket abstraction layer, with TCP, next, SSL. Also, .hgignore
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    43
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
# XXX: not yet there
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
#CORE_OBJS = obj/lib/log.o obj/lib/signals.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
# first target
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
all: ${BIN_PATHS}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
# binaries
23
542c73d07d3c add a simple irc_log module (with evsql code) that joins a channel and log_info's PRIVMSGs
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    51
bin/nexus: ${CORE_OBJS} ${SOCK_OBJS} ${SOCK_GNUTLS_OBJS} ${LINEPROTO_OBJS} ${IRC_OBJS} ${IRC_LOG_OBJS}
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
# computed
23
542c73d07d3c add a simple irc_log module (with evsql code) that joins a channel and log_info's PRIVMSGs
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    54
CFLAGS = ${MODE_CFLAGS} ${FIXED_CFLAGS} ${LIBEVENT_CFLAGS} ${GNUTLS_CFLAGS} ${EVSQL_CFLAGS}
542c73d07d3c add a simple irc_log module (with evsql code) that joins a channel and log_info's PRIVMSGs
Tero Marttila <terom@fixme.fi>
parents: 21
diff changeset
    55
LDFLAGS = ${LIBEVENT_LDFLAGS} ${GNUTLS_LDFLAGS} ${EVSQL_LDFLAGS}
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    57
# XXX: is this valid?
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    58
CPPFLAGS = ${CFLAGS}
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    59
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    60
# names for src/
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
SRC_PATHS = $(wildcard src/*.c) $(wildcard src/*/*.c)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
SRC_DIRS = $(dir $(SRC_NAMES))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
# other targets
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
clean :
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
	-rm obj/*.o obj/*/*.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
	-rm bin/* 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
	-rm build/deps/*.d build/deps/*/*.d
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
clean-deps:
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
	-rm build/deps/*/*.d 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
	-rm build/deps/*.d
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
#obj-dirs: 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
#	python build/make_obj_dirs.py $(BIN_PATHS)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
build/deps/%.d : src/%.c
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
	@set -e; rm -f $@; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
	 $(CC) -MM -MT __ $(CPPFLAGS) $< > $@.$$$$; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
	 sed 's,__[ :]*,obj/$*.o $@ : ,g' < $@.$$$$ > $@; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
	 rm -f $@.$$$$
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
include $(SRC_NAMES:%.c=build/deps/%.d)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
25
56367df4ce5b add irc_net module, and fix Makefile CFLAGS, add -Wextra
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    86
56367df4ce5b add irc_net module, and fix Makefile CFLAGS, add -Wextra
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    87
# XXX: removed $(CPPFLAGS) 
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
obj/%.o : src/%.c
25
56367df4ce5b add irc_net module, and fix Makefile CFLAGS, add -Wextra
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    89
	$(CC) -c $(CFLAGS) $< -o $@
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
bin/% : obj/%.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
	$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
# documentation
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
DOXYGEN_PATH = /usr/bin/doxygen
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
DOXYGEN_CONF_PATH = doc/doxygen.conf
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
DOXYGEN_OUTPUT_FILE = doc/html/index.html
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
docs :
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
	${DOXYGEN_PATH} ${DOXYGEN_CONF_PATH}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101