Makefile
branchmodules
changeset 55 6f7f6ae729d0
parent 53 12d806823775
child 56 942370000450
--- a/Makefile	Fri Mar 13 17:38:23 2009 +0200
+++ b/Makefile	Sun Mar 15 01:17:22 2009 +0200
@@ -34,25 +34,28 @@
 # modules
 module_objs = $(patsubst src/%.c,obj/%.o,$(wildcard src/$(1)/*.c))
 
-CORE_OBJS = obj/error.o obj/log.o obj/chain.o obj/signals.o
+CORE_OBJS = obj/error.o obj/log.o obj/chain.o
 SOCK_OBJS = obj/sock.o obj/sock_tcp.o
 SOCK_TEST_OBJS = obj/sock_test.o
 SOCK_GNUTLS_OBJS = obj/sock_gnutls.o
 LINEPROTO_OBJS = obj/line_proto.o
 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
+NEXUS_OBJS = obj/signals.o obj/module.o
 IRC_LOG_OBJS = obj/irc_log.o
 
 # XXX: not yet there
 #CORE_OBJS = obj/lib/log.o obj/lib/signals.o
 
 # first target
-all: ${BIN_PATHS}
+all: ${BIN_PATHS} modules/irc_log.so
 
 # binaries
-bin/nexus: ${CORE_OBJS} ${SOCK_OBJS} ${SOCK_GNUTLS_OBJS} ${LINEPROTO_OBJS} ${IRC_OBJS} ${IRC_LOG_OBJS}
+bin/nexus: ${CORE_OBJS} ${SOCK_OBJS} ${SOCK_GNUTLS_OBJS} ${LINEPROTO_OBJS} ${IRC_OBJS} ${IRC_LOG_OBJS} ${NEXUS_OBJS}
 
 bin/test: ${CORE_OBJS} ${SOCK_OBJS} ${SOCK_GNUTLS_OBJS} ${SOCK_TEST_OBJS} ${LINEPROTO_OBJS} ${IRC_OBJS}
 
+modules/irc_log.so: ${CORE_OBJS} ${IRC_OBJS}
+
 # computed
 CFLAGS = ${MODE_CFLAGS} ${FIXED_CFLAGS} ${LIBEVENT_CFLAGS} ${GNUTLS_CFLAGS} ${EVSQL_CFLAGS}
 LDFLAGS = ${LIBEVENT_LDFLAGS} ${GNUTLS_LDFLAGS} ${EVSQL_LDFLAGS}
@@ -89,11 +92,14 @@
 
 # XXX: removed $(CPPFLAGS) 
 obj/%.o : src/%.c
-	$(CC) -c $(CFLAGS) $< -o $@
+	$(CC) -fpic -c $(CFLAGS) $< -o $@
 
 bin/% : obj/%.o
 	$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
 
+modules/%.so : obj/%.o
+	$(CC) -shared -Wl,-soname,$(basename %@) -o $@ $+ -lc
+
 # documentation
 DOXYGEN_PATH = /usr/bin/doxygen
 DOXYGEN_CONF_PATH = doc/doxygen.conf