Try to show the user_split info for a protocol in "help purple $PROTOCOL".
[bitlbee.git] / Makefile
blobd751b1a50bde2cddf7b6e0121343cbbd74d5415d
1 ###########################
2 ## Makefile for BitlBee ##
3 ## ##
4 ## Copyright 2002 Lintux ##
5 ###########################
7 ### DEFINITIONS
9 -include Makefile.settings
11 # Program variables
12 objects = bitlbee.o dcc.o help.o ipc.o irc.o irc_im.o irc_channel.o irc_commands.o irc_send.o irc_user.o irc_util.o nick.o $(OTR_BI) query.o root_commands.o set.o storage.o $(STORAGE_OBJS)
13 headers = bitlbee.h commands.h conf.h config.h help.h ipc.h irc.h log.h nick.h query.h set.h sock.h storage.h lib/events.h lib/ftutil.h lib/http_client.h lib/ini.h lib/md5.h lib/misc.h lib/proxy.h lib/sha1.h lib/ssl_client.h lib/url.h protocols/account.h protocols/bee.h protocols/ft.h protocols/nogaim.h
14 subdirs = lib protocols
16 ifeq ($(TARGET),i586-mingw32msvc)
17 objects += win32.o
18 LFLAGS+=-lws2_32
19 EFLAGS+=-lsecur32
20 OUTFILE=bitlbee.exe
21 else
22 objects += unix.o conf.o log.o
23 OUTFILE=bitlbee
24 endif
26 # Expansion of variables
27 subdirobjs = $(foreach dir,$(subdirs),$(dir)/$(dir).o)
29 all: $(OUTFILE) $(OTR_PI) $(SKYPE_PI) doc systemd
30 ifdef SKYPE_PI
31 $(MAKE) -C protocols/skype doc
32 endif
34 doc:
35 $(MAKE) -C doc
37 uninstall: uninstall-bin uninstall-doc
38 @echo -e '\nmake uninstall does not remove files in '$(DESTDIR)$(ETCDIR)', you can use make uninstall-etc to do that.\n'
40 install: install-bin install-doc install-plugins install-systemd
41 @if ! [ -d $(DESTDIR)$(CONFIG) ]; then echo -e '\nThe configuration directory $(DESTDIR)$(CONFIG) does not exist yet, don'\''t forget to create it!'; fi
42 @if ! [ -e $(DESTDIR)$(ETCDIR)/bitlbee.conf ]; then echo -e '\nNo files are installed in '$(DESTDIR)$(ETCDIR)' by make install. Run make install-etc to do that.'; fi
43 @echo
45 .PHONY: install install-bin install-etc install-doc install-plugins install-systemd \
46 uninstall uninstall-bin uninstall-etc uninstall-doc \
47 all clean distclean tar $(subdirs) doc
49 Makefile.settings:
50 @echo
51 @echo Run ./configure to create Makefile.settings, then rerun make
52 @echo
54 clean: $(subdirs)
55 rm -f *.o $(OUTFILE) core utils/bitlbeed init/bitlbee*.service
56 $(MAKE) -C tests clean
58 distclean: clean $(subdirs)
59 rm -rf .depend
60 rm -f Makefile.settings config.h bitlbee.pc
61 find . -name 'DEADJOE' -o -name '*.orig' -o -name '*.rej' -o -name '*~' -exec rm -f {} \;
62 @# May still be present in dirs of disabled protocols.
63 -find . -name .depend -exec rm -rf {} \;
64 $(MAKE) -C tests distclean
66 check: all
67 $(MAKE) -C tests
69 gcov: check
70 gcov *.c
72 lcov: check
73 lcov --directory . --capture --output-file bitlbee.info
74 genhtml -o coverage bitlbee.info
76 install-doc:
77 $(MAKE) -C doc install
78 ifdef SKYPE_PI
79 $(MAKE) -C protocols/skype install-doc
80 endif
82 uninstall-doc:
83 $(MAKE) -C doc uninstall
84 ifdef SKYPE_PI
85 $(MAKE) -C protocols/skype uninstall-doc
86 endif
88 install-bin:
89 mkdir -p $(DESTDIR)$(SBINDIR)
90 install -m 0755 $(OUTFILE) $(DESTDIR)$(SBINDIR)/$(OUTFILE)
92 uninstall-bin:
93 rm -f $(DESTDIR)$(SBINDIR)/$(OUTFILE)
95 install-dev:
96 mkdir -p $(DESTDIR)$(INCLUDEDIR)
97 install -m 0644 config.h $(DESTDIR)$(INCLUDEDIR)
98 for i in $(headers); do install -m 0644 $(SRCDIR)$$i $(DESTDIR)$(INCLUDEDIR); done
99 mkdir -p $(DESTDIR)$(PCDIR)
100 install -m 0644 bitlbee.pc $(DESTDIR)$(PCDIR)
102 uninstall-dev:
103 rm -f $(foreach hdr,$(headers),$(DESTDIR)$(INCLUDEDIR)/$(hdr))
104 -rmdir $(DESTDIR)$(INCLUDEDIR)
105 rm -f $(DESTDIR)$(PCDIR)/bitlbee.pc
107 install-etc:
108 mkdir -p $(DESTDIR)$(ETCDIR)
109 install -m 0644 $(SRCDIR)motd.txt $(DESTDIR)$(ETCDIR)/motd.txt
110 install -m 0644 $(SRCDIR)bitlbee.conf $(DESTDIR)$(ETCDIR)/bitlbee.conf
112 uninstall-etc:
113 rm -f $(DESTDIR)$(ETCDIR)/motd.txt
114 rm -f $(DESTDIR)$(ETCDIR)/bitlbee.conf
115 -rmdir $(DESTDIR)$(ETCDIR)
117 install-plugins: install-plugin-otr install-plugin-skype
119 install-plugin-otr:
120 ifdef OTR_PI
121 mkdir -p $(DESTDIR)$(PLUGINDIR)
122 install -m 0755 otr.so $(DESTDIR)$(PLUGINDIR)
123 endif
125 install-plugin-skype:
126 ifdef SKYPE_PI
127 mkdir -p $(DESTDIR)$(PLUGINDIR)
128 install -m 0755 skype.so $(DESTDIR)$(PLUGINDIR)
129 mkdir -p $(DESTDIR)$(ETCDIR)/../skyped $(DESTDIR)$(BINDIR)
130 install -m 0644 $(SRCDIR)protocols/skype/skyped.cnf $(DESTDIR)$(ETCDIR)/../skyped/skyped.cnf
131 install -m 0644 $(SRCDIR)protocols/skype/skyped.conf.dist $(DESTDIR)$(ETCDIR)/../skyped/skyped.conf
132 install -m 0755 $(SRCDIR)protocols/skype/skyped.py $(DESTDIR)$(BINDIR)/skyped
133 make -C protocols/skype install-doc
134 endif
136 systemd:
137 ifdef SYSTEMDSYSTEMUNITDIR
138 sed 's|@sbindir@|$(BINDIR)|' init/bitlbee.service.in > init/bitlbee.service
139 sed 's|@sbindir@|$(BINDIR)|' init/bitlbee@.service.in > init/bitlbee@.service
140 endif
142 install-systemd:
143 ifdef SYSTEMDSYSTEMUNITDIR
144 ifeq ($(shell id -u),0)
145 mkdir -p $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
146 install -m 0644 init/bitlbee.service $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
147 install -m 0644 init/bitlbee@.service $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
148 install -m 0644 init/bitlbee.socket $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
149 else
150 @echo Not root, so not installing systemd files.
151 endif
152 endif
154 tar:
155 fakeroot debian/rules clean || make distclean
156 x=$$(basename $$(pwd)); \
157 cd ..; \
158 tar czf $$x.tar.gz --exclude=debian --exclude=.bzr* --exclude=.depend $$x
160 $(subdirs):
161 @$(MAKE) -C $@ $(MAKECMDGOALS)
163 $(OTR_PI): %.so: $(SRCDIR)%.c
164 @echo '*' Building plugin $@
165 @$(CC) $(CFLAGS) -fPIC -shared $(LDFLAGS) $< -o $@ $(OTRFLAGS)
167 $(SKYPE_PI): $(SRCDIR)protocols/skype/skype.c
168 @echo '*' Building plugin skype
169 @$(CC) $(CFLAGS) -fPIC -shared $< -o $@
171 $(objects): %.o: $(SRCDIR)%.c
172 @echo '*' Compiling $<
173 @$(CC) -c $(CFLAGS) $< -o $@
175 $(objects): Makefile Makefile.settings config.h
177 $(OUTFILE): $(objects) $(subdirs)
178 @echo '*' Linking $(OUTFILE)
179 @$(CC) $(objects) $(subdirobjs) -o $(OUTFILE) $(LFLAGS) $(EFLAGS)
180 ifndef DEBUG
181 @echo '*' Stripping $(OUTFILE)
182 @-$(STRIP) $(OUTFILE)
183 endif
185 ctags:
186 ctags `find . -name "*.c"` `find . -name "*.h"`
188 # Using this as a bogus Make target to test if a GNU-compatible version of
189 # make is available.
190 helloworld:
191 @echo Hello World
193 # Check if we can load the helpfile. (This fails if some article is >1KB.)
194 # If print returns a NULL pointer, the file is unusable.
195 testhelp: doc
196 gdb --eval-command='b main' --eval-command='r' \
197 --eval-command='print help_init(&global->helpfile, "doc/user-guide/help.txt")' \
198 $(OUTFILE) < /dev/null
200 -include .depend/*.d
201 # DO NOT DELETE