diff options
-rw-r--r-- | Makefile | 18 | ||||
-rwxr-xr-x | configure | 13 | ||||
-rw-r--r-- | otr.c | 17 | ||||
-rw-r--r-- | unix.c | 4 |
4 files changed, 33 insertions, 19 deletions
@@ -9,7 +9,7 @@ -include Makefile.settings # Program variables -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.o query.o root_commands.o set.o storage.o $(STORAGE_OBJS) +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) 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 subdirs = lib protocols @@ -26,18 +26,18 @@ endif # Expansion of variables subdirobjs = $(foreach dir,$(subdirs),$(dir)/$(dir).o) -all: $(OUTFILE) +all: $(OUTFILE) $(OTR_PI) $(MAKE) -C doc uninstall: uninstall-bin uninstall-doc @echo -e '\nmake uninstall does not remove files in '$(DESTDIR)$(ETCDIR)', you can use make uninstall-etc to do that.\n' -install: install-bin install-doc +install: install-bin install-doc install-plugins @if ! [ -d $(DESTDIR)$(CONFIG) ]; then echo -e '\nThe configuration directory $(DESTDIR)$(CONFIG) does not exist yet, don'\''t forget to create it!'; fi @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 @echo -.PHONY: install install-bin install-etc install-doc \ +.PHONY: install install-bin install-etc install-doc install-plugins \ uninstall uninstall-bin uninstall-etc uninstall-doc \ all clean distclean tar $(subdirs) @@ -103,6 +103,12 @@ uninstall-etc: rm -f $(DESTDIR)$(ETCDIR)/bitlbee.conf -rmdir $(DESTDIR)$(ETCDIR) +install-plugins: +ifdef OTR_PI + mkdir -p $(DESTDIR)$(PLUGINDIR) + install -m 0755 otr.so $(DESTDIR)$(PLUGINDIR) +endif + tar: fakeroot debian/rules clean || make distclean x=$$(basename $$(pwd)); \ @@ -112,6 +118,10 @@ tar: $(subdirs): @$(MAKE) -C $@ $(MAKECMDGOALS) +$(OTR_PI): %.so: $(SRCDIR)%.c + @echo '*' Building plugin $@ + @$(CC) $(CFLAGS) $(OTRFLAGS) -fPIC -shared $< -o $@ + $(objects): %.o: $(SRCDIR)%.c @echo '*' Compiling $< @$(CC) -c $(CFLAGS) $< -o $@ @@ -499,11 +499,16 @@ if [ "$otr" = "auto" ]; then fi fi if [ "$otr" = 1 ]; then - echo '#define WITH_OTR' >> config.h + # BI == built-in + echo '#define OTR_BI' >> config.h echo "EFLAGS+=-L${otrprefix}/lib -lotr" >> Makefile.settings echo "CFLAGS+=-I${otrprefix}/include" >> Makefile.settings -else - echo '#undef WITH_OTR' >> config.h + echo 'OTR_BI=otr.o' >> Makefile.settings +elif [ "$otr" = "plugin" ]; then + echo '#define OTR_PI' >> config.h + echo "OTRFLAGS=-L${otrprefix}/lib -lotr" >> Makefile.settings + echo "CFLAGS+=-I${otrprefix}/include" >> Makefile.settings + echo 'OTR_PI=otr.so' >> Makefile.settings fi if [ ! -e doc/user-guide/help.txt ] && ! type xmlto > /dev/null 2> /dev/null; then @@ -702,6 +707,8 @@ fi if [ "$otr" = "1" ]; then echo ' Off-the-Record (OTR) Messaging enabled.' +elif [ "$otr" = "plugin" ]; then + echo ' Off-the-Record (OTR) Messaging enabled (as a plugin).' else echo ' Off-the-Record (OTR) Messaging disabled.' fi @@ -38,7 +38,6 @@ */ #include "bitlbee.h" -#ifdef WITH_OTR #include "irc.h" #include "otr.h" #include <sys/types.h> @@ -181,7 +180,11 @@ static const struct irc_plugin otr_plugin; /*** routines declared in otr.h: ***/ -void otr_init(void) +#ifdef OTR_BI +#define init_plugin otr_init +#endif + +void init_plugin(void) { OTRL_INIT; @@ -1715,13 +1718,3 @@ void yes_keygen(void *data) otr_keygen(irc, acc->user, acc->prpl->name); } } - - -#else /* WITH_OTR undefined */ - -void cmd_otr(irc_t *irc, char **args) -{ - irc_usermsg(irc, "otr: n/a, compiled without OTR support"); -} - -#endif @@ -76,7 +76,11 @@ int main( int argc, char *argv[] ) memory management functions for libgcrypt while our gnutls module uses the defaults. Therefore we initialize OTR after SSL. *sigh* */ ssl_init(); +#ifdef OTR_BI otr_init(); +#endif + /* And in case OTR is loaded as a plugin, it'll also get loaded after + this point. */ srand( time( NULL ) ^ getpid() ); |