1 -include Makefile.settings
6 GCOV_CFLAGS = -ftest-coverage -fprofile-arcs
8 LIBS += $(GCOV_LIBS) $(GCOV_CFLAGS)
11 LIBS += $(GNUTLS_LIBS)
12 CFLAGS += $(GNUTLS_CFLAGS)
14 CFLAGS+=-DHAVE_CONFIG_H -DSHAREDIR=\"$(cdatadir)\" -DDEFAULT_CONFIG_DIR=\"$(DEFAULT_CONFIG_DIR)\" -DHELPFILE=\"$(HELPFILE)\"
15 CFLAGS+=-ansi -Wall -DMODULESDIR=\"$(modulesdir)\" -DSTRICT_MEMORY_ALLOCS=
17 LIBIRC_STATIC = libirc.a
18 LIBIRC = $(LIBIRC_STATIC)
20 LIBIRC_SHARED = libirc.$(SHLIBEXT).$(PACKAGE_VERSION)
21 LIBIRC_SOVERSION = 1.0
22 LIBIRC_SONAME = libirc.$(SHLIBEXT).$(LIBIRC_SOVERSION)
24 .PHONY: all clean distclean install install-bin install-dirs install-doc install-data install-pkgconfig
49 src/linestack_file.o \
72 headers = src/admin.h \
82 dep_files = $(patsubst %.o, %.d, $(objs))
84 linestack-cmd$(EXEEXT): src/linestack-cmd.o $(objs) $(LIBIRC)
86 @$(LD) $(LIBS) -lreadline -rdynamic -o $@ $^
88 ctrlproxy$(EXEEXT): src/main.o $(objs) $(LIBIRC)
90 @$(LD) $(LDFLAGS) -rdynamic -o $@ $^ $(LIBS)
92 ctrlproxy-admin$(EXEEXT): src/admin-cmd.o
94 @$(LD) $(LDFLAGS) -rdynamic -o $@ $^ $(LIBS)
98 @$(CC) -I. -Ilib -Isrc $(CFLAGS) $(GCOV_CFLAGS) -c $< -o $@
101 @$(CC) -I. -Ilib -Isrc -M -MT $(<:.c=.o) $(CFLAGS) $< -o $@
103 ifeq ($(BZR_CHECKOUT),yes)
104 configure: autogen.sh configure.ac acinclude.m4
108 ctrlproxy.pc Makefile.settings: configure Makefile.settings.in ctrlproxy.pc.in
111 install: all install-dirs install-bin install-header install-data install-pkgconfig $(EXTRA_INSTALL_TARGETS)
113 $(INSTALL) -d $(DESTDIR)$(modulesdir)
115 uninstall: uninstall-bin uninstall-header uninstall-data uninstall-pkgconfig $(patsubst install-%,uninstall-%,$(EXTRA_INSTALL_TARGETS))
117 -rm -f $(DESTDIR)$(bindir)/ctrlproxy$(EXEEXT) \
118 $(DESTDIR)$(bindir)/ctrlproxy-admin$(EXEEXT)
119 -rmdir $(DESTDIR)$(bindir)
120 -rmdir $(DESTDIR)$(modulesdir)
123 $(INSTALL) -d $(DESTDIR)$(bindir)
124 $(INSTALL) $(BINS) $(DESTDIR)$(bindir)
127 -rm -f $(patsubst %,$(DESTDIR)$(destincludedir)/%,$(notdir $(headers) $(lib_headers)))
128 -rmdir $(DESTDIR)$(destincludedir)
131 $(INSTALL) -d $(DESTDIR)$(destincludedir)
132 $(INSTALL) -m 0644 $(lib_headers) $(headers) $(DESTDIR)$(destincludedir)
135 $(INSTALL) -d $(DESTDIR)$(docdir)
136 $(MAKE) -C doc install PACKAGE_VERSION=$(PACKAGE_VERSION)
139 $(MAKE) -C doc uninstall
140 -rmdir $(DESTDIR)$(docdir)
143 -rm -f $(DESTDIR)$(cdatadir)/motd
144 -rm -f $(DESTDIR)$(DEFAULT_CONFIG_DIR)/config
145 -rm -f $(DESTDIR)$(DEFAULT_CONFIG_DIR)/networks/admin
146 -rmdir $(DESTDIR)$(DEFAULT_CONFIG_DIR)/networks
147 -rmdir $(DESTDIR)$(DEFAULT_CONFIG_DIR)
148 -rmdir $(DESTDIR)$(cdatadir)
151 $(INSTALL) -d $(DESTDIR)$(cdatadir)
152 $(INSTALL) -m 0644 motd $(DESTDIR)$(cdatadir)
153 $(INSTALL) -d $(DESTDIR)$(DEFAULT_CONFIG_DIR)
154 $(INSTALL) -d $(DESTDIR)$(DEFAULT_CONFIG_DIR)/networks
155 $(INSTALL) -m 0644 config.default $(DESTDIR)$(DEFAULT_CONFIG_DIR)/config
156 $(INSTALL) -m 0644 config.admin $(DESTDIR)$(DEFAULT_CONFIG_DIR)/networks/admin
159 $(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig
160 $(INSTALL) -m 0644 ctrlproxy.pc $(DESTDIR)$(libdir)/pkgconfig
163 -rm -f $(DESTDIR)$(libdir)/pkgconfig/ctrlproxy.pc
164 -rmdir $(DESTDIR)$(libdir)/pkgconfig
167 $(GCOV) -f -p -o src/ src/*.c
170 lcov --base-directory `pwd` --directory . --capture --output-file ctrlproxy.info
171 genhtml -o coverage ctrlproxy.info
173 $(LIBIRC_STATIC): $(lib_objs)
177 $(LIBIRC_SHARED): $(lib_objs)
178 $(LD) -shared $(LDFLAGS) -Wl,-soname,$(LIBIRC_SONAME) -o $@ $^
181 @echo Removing dependency files
183 @echo Removing object files and executables
184 @rm -f src/*.o testsuite/check ctrlproxy$(EXEEXT) testsuite/*.o *~
185 @rm -f linestack-cmd$(EXEEXT) ctrlproxy-admin$(EXEEXT)
186 @echo Removing gcov output
187 @rm -f *.gcov *.gcno *.gcda
188 @echo Removing test output
194 dist: configure doc-dist distclean
197 rm -f build config.h ctrlproxy.pc *.log
198 rm -rf autom4te.cache/ config.log config.status
200 realclean:: distclean
201 @$(MAKE) -C doc clean
206 # RFC compliance testing using ircdtorture
208 TEST_SERVER := localhost
211 testsuite/ctrlproxyrc.torture: testsuite/ctrlproxyrc.torture.in
212 sed -e 's/@SERVER@/$(TEST_SERVER)/;s/@PORT@/$(TEST_PORT)/;' < $< > $@
214 rfctest: testsuite/ctrlproxyrc.torture
215 @$(IRCDTORTURE) -- ./ctrlproxy -d 0 -i TEST -r $<
218 check_objs = testsuite/test-cmp.o testsuite/test-user.o \
219 testsuite/test-admin.o testsuite/test-isupport.o \
220 testsuite/test-parser.o testsuite/test-state.o \
221 testsuite/test-util.o testsuite/test-line.o \
222 testsuite/torture.o testsuite/test-linestack.o \
223 testsuite/test-client.o testsuite/test-network.o \
224 testsuite/test-tls.o testsuite/test-redirect.o \
225 testsuite/test-networkinfo.o testsuite/test-ctcp.o \
226 testsuite/test-help.o testsuite/test-nickserv.o
228 testsuite/check: $(check_objs) $(objs) $(LIBIRC)
230 @$(CC) $(LIBS) -o $@ $^ $(CHECK_LIBS)
232 check:: testsuite/check
233 @echo Running testsuite
234 @$(VALGRIND) ./testsuite/check
236 -include $(dep_files)