# Makefile for ctrlproxy
-# Copyright (C) 2002-2008 Jelmer Vernooij <jelmer@samba.org>
+# Copyright (C) 2002-2009 Jelmer Vernooij <jelmer@samba.org>
# NOTE: This file is *NOT* autogenerated.
include Makefile.settings
CFLAGS += $(GNUTLS_CFLAGS)
CFLAGS+=-DHAVE_CONFIG_H -DDEFAULT_CONFIG_DIR=\"$(DEFAULT_CONFIG_DIR)\" -DHELPFILE=\"$(HELPFILE)\"
-CFLAGS+=-ansi -Wall -DMODULESDIR=\"$(modulesdir)\" -DSTRICT_MEMORY_ALLOCS=
-
-LIBIRC_STATIC = libirc.a
-LIBIRC = $(LIBIRC_STATIC)
-
-LIBIRC_SHARED = libirc.$(SHLIBEXT).$(PACKAGE_VERSION)
-LIBIRC_SOVERSION = 1.0
-LIBIRC_SONAME = libirc.$(SHLIBEXT).$(LIBIRC_SOVERSION)
+CFLAGS+=-DMODULESDIR=\"$(modulesdir)\" -DSTRICT_MEMORY_ALLOCS=
.PHONY: all clean distclean install install-bin install-dirs install-doc install-data install-pkgconfig
doxygen:
doxygen
-lib_objs = \
- lib/state.o \
- lib/client.o \
- lib/transport.o \
- lib/line.o \
- lib/isupport.o \
- lib/connection.o \
- lib/url.o \
- lib/util.o \
- lib/listener.o
-all_objs += $(lib_objs)
+libircdir = libirc
+include $(libircdir)/Makefile
objs = src/posix.o \
+ src/redirect.o \
src/cache.o \
src/util.o \
src/hooks.o \
- src/linestack.o \
src/plugins.o \
src/settings.o \
src/log.o \
src/client.o \
- src/redirect.o \
src/gen_config.o \
src/repl.o \
- src/linestack_file.o \
src/ctcp_redirect.o \
src/ctcp.o \
src/motd.o \
src/log_subst.o \
src/auto_away.o \
src/network.o \
- $(SSL_OBJS)
+ $(CTRLPROXY_SSL_OBJS)
all_objs += $(objs)
-lib_headers = \
- lib/state.h \
- lib/client.h \
- lib/line.h \
- lib/isupport.h \
- lib/irc.h \
- lib/connection.h \
- lib/url.h \
- lib/listener.h \
- lib/util.h
-
headers = src/admin.h \
src/ctcp.h \
src/ctrlproxy.h \
src/hooks.h \
- src/linestack.h \
src/log_support.h \
src/repl.h \
src/settings.h \
src/cache.h
dep_files = $(patsubst %.o, %.d, $(objs))
-linestack-cmd$(EXEEXT): src/linestack-cmd.o $(objs) $(LIBIRC)
- @echo Linking $@
- @$(LD) $(LIBS) -lreadline -rdynamic -o $@ $^
-
ctrlproxy$(EXEEXT): src/main.o $(objs) $(LIBIRC)
- @echo Linking $@
- @$(LD) $(LDFLAGS) -rdynamic -o $@ $^ $(LIBS)
+ @echo Linking $@: $(LD) $(LDFLAGS) -rdynamic -o $@ $^ $(LIBS)
+ @$(LD) $(LDFLAGS) $(DYNAMIC) -o $@ $^ $(LIBS)
src/settings.o: CFLAGS+=-DSYSCONFDIR=\"${sysconfdir}\"
ctrlproxyd$(EXEEXT): $(daemon_objs) $(objs) $(LIBIRC)
@echo Linking $@
- @$(LD) $(LDFLAGS) -rdynamic -o $@ $^ $(LIBS)
+ @$(CC) $(LDFLAGS) $(DYNAMIC) -o $@ $^ $(LIBS)
ctrlproxy-admin$(EXEEXT): src/admin-cmd.o
@echo Linking $@
- @$(LD) $(LDFLAGS) -rdynamic -o $@ $^ $(LIBS)
+ @$(CC) $(LDFLAGS) $(DYNAMIC) -o $@ $^ $(LIBS)
%.o: %.c
@echo Compiling $<
- @$(CC) -I. -Ilib -Isrc $(CFLAGS) $(GCOV_CFLAGS) -c $< -o $@
+ @$(CC) -I. -I$(libircdir) -Isrc $(CFLAGS) $(GCOV_CFLAGS) -c $< -o $@
%.d: %.c config.h
- @$(CC) -I. -Ilib -Isrc -M -MT $(<:.c=.o) $(CFLAGS) $(PYTHON_CFLAGS) $< -o $@
+ @$(CC) -I. -I$(libircdir) -Isrc -M -MT $(<:.c=.o) $(CFLAGS) $(PYTHON_CFLAGS) $< -o $@
# This looks a bit weird but is here to ensure that we never try to
# run ./autogen.sh outside of bzr checkouts
$(INSTALL) $(SBINS) $(DESTDIR)$(sbindir)
uninstall-header:
- -rm -f $(patsubst %,$(DESTDIR)$(destincludedir)/%,$(notdir $(headers) $(lib_headers)))
+ -rm -f $(patsubst %,$(DESTDIR)$(destincludedir)/%,$(notdir $(headers) $(libirc_headers)))
-rmdir $(DESTDIR)$(destincludedir)
install-header::
$(INSTALL) -d $(DESTDIR)$(destincludedir)
- $(INSTALL) -m 0644 $(lib_headers) $(headers) $(DESTDIR)$(destincludedir)
+ $(INSTALL) -m 0644 $(libirc_headers) $(headers) $(DESTDIR)$(destincludedir)
doc::
$(MAKE) -C doc PACKAGE_VERSION=$(PACKAGE_VERSION)
lcov --base-directory `pwd` --directory . --capture --output-file ctrlproxy.info
genhtml -o coverage ctrlproxy.info
-$(LIBIRC_STATIC): $(lib_objs)
- @echo Linking $@
- @ar -rcs $@ $^
-
-$(LIBIRC_SHARED): $(lib_objs)
- $(LD) -shared $(LDFLAGS) -Wl,-soname,$(LIBIRC_SONAME) -o $@ $^
-
%.$(SHLIBEXT):
- $(LD) -shared $(LDFLAGS) -o $@ $^
+ @echo Linking $@
+ @$(CC) -shared $(LDFLAGS) -o $@ $^
cscope.out::
cscope -b -R
clean::
@echo Removing object files and executables
- @rm -f src/*.o lib/*.o daemon/*.o testsuite/check ctrlproxy$(EXEEXT) testsuite/*.o *~
- @rm -f linestack-cmd$(EXEEXT) ctrlproxy-admin$(EXEEXT)
+ @rm -f src/*.o daemon/*.o python/*.o testsuite/check ctrlproxy$(EXEEXT) testsuite/*.o *~
+ @rm -f ctrlproxy-admin$(EXEEXT)
@rm -f ctrlproxyd$(EXEEXT)
- @rm -f $(LIBIRC_STATIC) $(LIBIRC_SHARED)
+ @rm -f mods/*.$(SHLIBEXT) mods/*.o
@echo Removing gcov output
@rm -f *.gcov *.gcno *.gcda */*.gcda */*.gcno */*.gcov
@echo Removing test output
# Python specific stuff below this line
mods/python.o python/ctrlproxy.o: CFLAGS+=$(PYTHON_CFLAGS)
-mods/libpython.so: mods/python.o python/ctrlproxy.o python/irc.o
+mods/python.o python/ctrlproxy.o: CFLAGS+=-fPIC
+mods/libpython.so: mods/python.o python/ctrlproxy.o $(pyirc_objs)
mods/libpython.so: LDFLAGS+=$(PYTHON_LDFLAGS)
-.PRECIOUS: python/irc.c python/ctrlproxy.c
-
-python/irc.o: CFLAGS+=$(PYTHON_CFLAGS)
-python/irc.$(SHLIBEXT): python/irc.o $(LIBIRC)
-python/irc.$(SHLIBEXT): LDFLAGS+=$(PYTHON_LDFLAGS) $(LIBS)
-
ifeq ($(HAVE_PYTHON),yes)
-all_objs += python/irc.o mods/python.o python/ctrlproxy.o
+all_objs += $(pyirc_objs) mods/python.o python/ctrlproxy.o
endif
-python:: python/irc.$(SHLIBEXT) mods/libpython.$(SHLIBEXT)
-
-check-python:: python/irc.$(SHLIBEXT)
- PYTHONPATH=python trial tests.test_irc
+python:: mods/libpython.$(SHLIBEXT)
install-python: all
$(PYTHON) setup.py install --root="$(DESTDIR)"
clean::
- rm -f *.pyc
- rm -f ctrlproxy.py listener.py
+ @rm -f python/tests/*.pyc
# $(PYTHON) setup.py clean
- rm -rf build/
# RFC compliance testing using ircdtorture
check-gdb:
$(MAKE) check-nofork DEBUGGER="gdb --args"
-dep_files = $(patsubst %.o,%d,$(all_objs))
clean::
@echo Removing dependency files
@rm -f $(dep_files)
+
+examples:: example/libfoo.$(SHLIBEXT) example/libirc-simple
+
+example/libfoo.$(SHLIBEXT): example/foo.o
+example/foo.o: CFLAGS+=-I$(libircdir)
+
+example/libirc-simple: example/irc_simple.o $(LIBIRC)
+ @Linking $@
+ @$(CC) -o $@ $^
+
+example/irc_simple.o: CFLAGS+=-I$(libircdir)
+
+ifeq ($(GCC),yes)
-include $(dep_files)
+endif