Makefile
author Tero Marttila <terom@fixme.fi>
Fri, 13 Mar 2009 17:38:23 +0200
branchmodules
changeset 54 9f74e924b01a
parent 53 12d806823775
child 55 6f7f6ae729d0
permissions -rw-r--r--
initial modules 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
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
40
51678c7eae03 add sock_test module and some basic initial tests
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    31
BIN_NAMES = nexus test
0
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
48
4841f4398fd2 add irc_net_quit and signal handling
Tero Marttila <terom@fixme.fi>
parents: 45
diff changeset
    37
CORE_OBJS = obj/error.o obj/log.o obj/chain.o obj/signals.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
40
51678c7eae03 add sock_test module and some basic initial tests
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    39
SOCK_TEST_OBJS = obj/sock_test.o
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    40
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
    41
LINEPROTO_OBJS = obj/line_proto.o
53
12d806823775 add irc_client module, plus nexus.h header
Tero Marttila <terom@fixme.fi>
parents: 48
diff changeset
    42
IRC_OBJS = obj/irc_line.o obj/irc_conn.o obj/irc_net.o obj/irc_chan.o obj/irc_cmd.o obj/irc_proto.o obj/irc_client.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
    43
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
    44
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
# XXX: not yet there
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
#CORE_OBJS = obj/lib/log.o obj/lib/signals.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
# first target
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
all: ${BIN_PATHS}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
# 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
    52
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
    53
40
51678c7eae03 add sock_test module and some basic initial tests
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    54
bin/test: ${CORE_OBJS} ${SOCK_OBJS} ${SOCK_GNUTLS_OBJS} ${SOCK_TEST_OBJS} ${LINEPROTO_OBJS} ${IRC_OBJS}
51678c7eae03 add sock_test module and some basic initial tests
Tero Marttila <terom@fixme.fi>
parents: 37
diff changeset
    55
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
# 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
    57
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
    58
LDFLAGS = ${LIBEVENT_LDFLAGS} ${GNUTLS_LDFLAGS} ${EVSQL_LDFLAGS}
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
2
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    60
# XXX: is this valid?
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    61
CPPFLAGS = ${CFLAGS}
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    62
a834f0559939 working SSL using gnutls - a bit of a painful process
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    63
# names for src/
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
SRC_PATHS = $(wildcard src/*.c) $(wildcard src/*/*.c)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
SRC_DIRS = $(dir $(SRC_NAMES))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
# other targets
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
clean :
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
	-rm obj/*.o obj/*/*.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
	-rm bin/* 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
	-rm build/deps/*.d build/deps/*/*.d
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
clean-deps:
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
	-rm build/deps/*/*.d 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
	-rm build/deps/*.d
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
#obj-dirs: 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
#	python build/make_obj_dirs.py $(BIN_PATHS)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
build/deps/%.d : src/%.c
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
	@set -e; rm -f $@; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
	 $(CC) -MM -MT __ $(CPPFLAGS) $< > $@.$$$$; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
	 sed 's,__[ :]*,obj/$*.o $@ : ,g' < $@.$$$$ > $@; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
	 rm -f $@.$$$$
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
include $(SRC_NAMES:%.c=build/deps/%.d)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
25
56367df4ce5b add irc_net module, and fix Makefile CFLAGS, add -Wextra
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    89
56367df4ce5b add irc_net module, and fix Makefile CFLAGS, add -Wextra
Tero Marttila <terom@fixme.fi>
parents: 23
diff changeset
    90
# XXX: removed $(CPPFLAGS) 
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
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
    92
	$(CC) -c $(CFLAGS) $< -o $@
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
bin/% : obj/%.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
	$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
# documentation
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
DOXYGEN_PATH = /usr/bin/doxygen
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
DOXYGEN_CONF_PATH = doc/doxygen.conf
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
DOXYGEN_OUTPUT_FILE = doc/html/index.html
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
docs :
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
	${DOXYGEN_PATH} ${DOXYGEN_CONF_PATH}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104