1 -include Makefile.settings
3 MODS_SHARED_FILES = $(patsubst %,mods/lib%.$(SHLIBEXT),$(MODS_SHARED))
8 GCOV_CFLAGS = -ftest-coverage -fprofile-arcs
10 LIBS += $(GCOV_LIBS) $(GCOV_CFLAGS)
13 LIBS += $(GNUTLS_LIBS)
14 CFLAGS += $(GNUTLS_CFLAGS)
16 CFLAGS+=-DHAVE_CONFIG_H -DSHAREDIR=\"$(cdatadir)\" -DDEFAULT_CONFIG_DIR=\"$(DEFAULT_CONFIG_DIR)\" -DHELPFILE=\"$(HELPFILE)\"
17 CFLAGS+=-ansi -Wall -DMODULESDIR=\"$(modulesdir)\" -DSTRICT_MEMORY_ALLOCS=
19 .PHONY: all clean distclean install install-bin install-dirs install-doc install-data install-mods install-pkgconfig
21 all: $(BINS) $(MODS_SHARED_FILES)
26 objs = src/network.o \
42 src/linestack_file.o \
56 headers = src/admin.h \
72 dep_files = $(patsubst %.o, %.d, $(objs)) $(patsubst %.o, %.d, $(wildcard mods/*.o))
74 linestack-cmd$(EXEEXT): src/linestack-cmd.o $(objs)
76 @$(LD) $(LIBS) -lreadline -rdynamic -o $@ $^
78 ctrlproxy$(EXEEXT): src/main.o $(objs)
80 @$(LD) $(LDFLAGS) -rdynamic -o $@ $^ $(LIBS)
82 ctrlproxy-admin$(EXEEXT): src/admin-cmd.o
84 @$(LD) $(LDFLAGS) -rdynamic -o $@ $^ $(LIBS)
87 @echo Compiling for shared library $<
88 @$(CC) -fPIC -I. -Isrc $(CFLAGS) $(GCOV_CFLAGS) -c $< -o $@
92 @$(CC) -I. -Isrc $(CFLAGS) $(GCOV_CFLAGS) -c $< -o $@
95 @$(CC) -I. -Isrc -M -MT $(<:.c=.o) $(CFLAGS) $< -o $@
97 ifeq ($(BZR_CHECKOUT),yes)
98 configure: autogen.sh configure.ac acinclude.m4 $(wildcard mods/*/*.m4)
102 ctrlproxy.pc Makefile.settings: configure Makefile.settings.in ctrlproxy.pc.in
105 install: all install-dirs install-bin install-header install-mods install-data install-pkgconfig $(EXTRA_INSTALL_TARGETS)
107 $(INSTALL) -d $(DESTDIR)$(modulesdir)
109 uninstall: uninstall-bin uninstall-header uninstall-mods uninstall-data uninstall-pkgconfig $(patsubst install-%,uninstall-%,$(EXTRA_INSTALL_TARGETS))
111 -rm -f $(DESTDIR)$(bindir)/ctrlproxy$(EXEEXT)
112 -rmdir $(DESTDIR)$(bindir)
115 $(INSTALL) -d $(DESTDIR)$(bindir)
116 $(INSTALL) ctrlproxy$(EXEEXT) $(DESTDIR)$(bindir)
119 -rm -f $(patsubst %,$(DESTDIR)$(destincludedir)/%,$(notdir $(headers)))
120 -rmdir $(DESTDIR)$(destincludedir)
123 $(INSTALL) -d $(DESTDIR)$(destincludedir)
124 $(INSTALL) -m 0644 $(headers) $(DESTDIR)$(destincludedir)
127 $(INSTALL) -d $(DESTDIR)$(docdir)
128 $(INSTALL) -m 0644 UPGRADING $(DESTDIR)$(docdir)
129 $(MAKE) -C doc install PACKAGE_VERSION=$(PACKAGE_VERSION)
132 $(MAKE) -C doc uninstall
133 rm -f $(DESTDIR)$(docdir)/UPGRADING
134 -rmdir $(DESTDIR)$(docdir)
137 -rm -f $(DESTDIR)$(cdatadir)/motd
138 -rm -f $(DESTDIR)$(DEFAULT_CONFIG_DIR)/config
139 -rm -f $(DESTDIR)$(DEFAULT_CONFIG_DIR)/networks/admin
140 -rmdir $(DESTDIR)$(DEFAULT_CONFIG_DIR)/networks
141 -rmdir $(DESTDIR)$(DEFAULT_CONFIG_DIR)
142 -rmdir $(DESTDIR)$(cdatadir)
145 $(INSTALL) -d $(DESTDIR)$(cdatadir)
146 $(INSTALL) -m 0644 motd $(DESTDIR)$(cdatadir)
147 $(INSTALL) -d $(DESTDIR)$(DEFAULT_CONFIG_DIR)
148 $(INSTALL) -d $(DESTDIR)$(DEFAULT_CONFIG_DIR)/networks
149 $(INSTALL) -m 0644 config.default $(DESTDIR)$(DEFAULT_CONFIG_DIR)/config
150 $(INSTALL) -m 0644 config.admin $(DESTDIR)$(DEFAULT_CONFIG_DIR)/networks/admin
153 $(INSTALL) -d $(DESTDIR)$(modulesdir)
154 $(INSTALL) $(MODS_SHARED_FILES) $(DESTDIR)$(modulesdir)
157 -rm -f $(patsubst %,$(DESTDIR)$(modulesdir)/%,$(notdir $(MODS_SHARED_FILES)))
158 -rmdir $(DESTDIR)$(modulesdir)
161 $(INSTALL) -d $(DESTDIR)$(libdir)/pkgconfig
162 $(INSTALL) -m 0644 ctrlproxy.pc $(DESTDIR)$(libdir)/pkgconfig
165 -rm -f $(DESTDIR)$(libdir)/pkgconfig/ctrlproxy.pc
166 -rmdir $(DESTDIR)$(libdir)/pkgconfig
169 $(GCOV) -f -p -o src/ src/*.c
172 lcov --base-directory `pwd` --directory . --capture --output-file ctrlproxy.info
173 genhtml -o coverage ctrlproxy.info
175 mods/lib%.$(SHLIBEXT): mods/%.o
177 @$(LD) $(LDFLAGS) -fPIC -shared -o $@ $^
180 @echo Removing .so files
181 @rm -f $(MODS_SHARED_FILES)
182 @echo Removing dependency files
184 @echo Removing object files and executables
185 @rm -f src/*.o testsuite/check ctrlproxy$(EXEEXT) testsuite/*.o *~ mods/*.o
186 @rm -f linestack-cmd$(EXEEXT) ctrlproxy-admin$(EXEEXT)
187 @echo Removing gcov output
188 @rm -f *.gcov *.gcno *.gcda
189 @echo Removing test output
195 dist: configure doc-dist distclean
198 rm -f build config.h ctrlproxy.pc *.log
199 rm -rf autom4te.cache/ config.log config.status
201 realclean:: distclean
202 @$(MAKE) -C doc clean
207 # RFC compliance testing using ircdtorture
209 TEST_SERVER := localhost
212 testsuite/ctrlproxyrc.torture: testsuite/ctrlproxyrc.torture.in
213 sed -e 's/@SERVER@/$(TEST_SERVER)/;s/@PORT@/$(TEST_PORT)/;' < $< > $@
215 rfctest: testsuite/ctrlproxyrc.torture
216 @$(IRCDTORTURE) -- ./ctrlproxy -d 0 -i TEST -r $<
219 check_objs = testsuite/test-cmp.o testsuite/test-user.o \
220 testsuite/test-admin.o testsuite/test-isupport.o \
221 testsuite/test-parser.o testsuite/test-state.o \
222 testsuite/test-util.o testsuite/test-line.o \
223 testsuite/torture.o testsuite/test-linestack.o \
224 testsuite/test-client.o testsuite/test-network.o \
225 testsuite/test-tls.o testsuite/test-redirect.o \
226 testsuite/test-networkinfo.o testsuite/test-ctcp.o \
227 testsuite/test-help.o testsuite/test-nickserv.o
229 testsuite/check: $(check_objs) $(objs)
231 @$(CC) $(LIBS) -o $@ $^ $(CHECK_LIBS)
233 CTRLPROXY_MODULESDIR=$(shell pwd)/mods
235 test:: testsuite/check
236 @echo Running testsuite
237 @$(VALGRIND) ./testsuite/check
241 -include $(dep_files)