source: Makefile @ 9ae8f82

Last change on this file since 9ae8f82 was 8e6ecfe, checked in by Dennis Kaarsemaker <dennis@…>, at 2016-03-25T18:07:53Z

Authentication: scaffolding for multiple authentication backends

Instead of always putting users passwords in XML files, allow site
admins to configure a different authentication method to integrate
authentication with other systems.

This doesn't add any authentication backends yet, merely the
scaffolding. Notably:

  • Password checking and loading/removing from storage has been decoupled. A new auth_check_pass function is used to check passwords. It does check against the configured storage first, but will handle the authentication backends as well. The XML storage merely signals that a user's password should be checked using an authentication backend.
  • If unknown-to-bitlbee users identify using an authentication backend, they are automatically registered.
  • If an authentication backend is used, that fact is stored in the XML file, the password is not. Passwords are also stored unencrypted in this case, as the password used to encrypt them can change underneath us.
  • configure and Makefile changes for the backend objects
  • Property mode set to 100644
File size: 6.2 KB
RevLine 
[b7d3cc34]1###########################
2## Makefile for BitlBee  ##
3##                       ##
4## Copyright 2002 Lintux ##
5###########################
6
7### DEFINITIONS
8
9-include Makefile.settings
10
11# Program variables
[8e6ecfe]12objects = bitlbee.o dcc.o help.o ipc.o irc.o irc_im.o irc_cap.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) auth.o $(AUTH_OBJS) unix.o conf.o log.o
[ebe2c5e]13headers = $(wildcard $(_SRCDIR_)*.h $(_SRCDIR_)lib/*.h $(_SRCDIR_)protocols/*.h)
[84b045d]14subdirs = lib protocols
[b7d3cc34]15
[e252d8c]16OUTFILE = bitlbee
[d1d6776]17
[b7d3cc34]18# Expansion of variables
19subdirobjs = $(foreach dir,$(subdirs),$(dir)/$(dir).o)
20
[4b53c65]21all: $(OUTFILE) $(OTR_PI) $(SKYPE_PI) doc systemd
[b7d3cc34]22
[4b53c65]23doc:
[a85a8ab]24ifdef DOC
[4b53c65]25        $(MAKE) -C doc
[a85a8ab]26endif
[4b53c65]27
[cdb92c5]28uninstall: uninstall-bin uninstall-doc
[b7d3cc34]29        @echo -e '\nmake uninstall does not remove files in '$(DESTDIR)$(ETCDIR)', you can use make uninstall-etc to do that.\n'
30
[c564e25]31install: install-bin install-doc install-plugins
[3e6cdb6]32        @echo
33        @echo Installed successfully
34        @echo
[b7d3cc34]35        @if ! [ -d $(DESTDIR)$(CONFIG) ]; then echo -e '\nThe configuration directory $(DESTDIR)$(CONFIG) does not exist yet, don'\''t forget to create it!'; fi
36        @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
[c564e25]37ifdef SYSTEMDSYSTEMUNITDIR
38        @echo If you want to start BitlBee using systemd, try \"make install-systemd\".
39endif
[3e6cdb6]40        @echo To be able to compile third party plugins, run \"make install-dev\"
[b7d3cc34]41        @echo
42
[3e6cdb6]43.PHONY:   install   install-bin   install-etc   install-doc install-plugins install-systemd install-dev \
44        uninstall uninstall-bin uninstall-etc uninstall-doc uninstall-etc \
[4b53c65]45        all clean distclean tar $(subdirs) doc
[b7d3cc34]46
47Makefile.settings:
48        @echo
49        @echo Run ./configure to create Makefile.settings, then rerun make
50        @echo
51
52clean: $(subdirs)
[c14959d]53        rm -f *.o $(OUTFILE) core utils/bitlbeed init/bitlbee*.service
[66b9e86e]54        $(MAKE) -C tests clean
[757e1e0]55ifdef SKYPE_PI
56        $(MAKE) -C protocols/skype clean
57endif
[b7d3cc34]58
59distclean: clean $(subdirs)
[b0a89cc]60        rm -rf .depend
[b3c467b]61        rm -f Makefile.settings config.h bitlbee.pc
[34c0e90]62        find . -name 'DEADJOE' -o -name '*.orig' -o -name '*.rej' -o -name '*~' -exec rm -f {} \;
[b0a89cc]63        @# May still be present in dirs of disabled protocols.
[b41d5d2]64        -find . -name .depend -exec rm -rf {} \;
[dcf0f3e]65        $(MAKE) -C tests distclean
[b7d3cc34]66
[66b9e86e]67check: all
[c2fa827]68        $(MAKE) -C tests
69
[66b9e86e]70gcov: check
71        gcov *.c
72
[348c11b]73lcov: check
74        lcov --directory . --capture --output-file bitlbee.info
75        genhtml -o coverage bitlbee.info
76
[b7d3cc34]77install-doc:
[a85a8ab]78ifdef DOC
[b7d3cc34]79        $(MAKE) -C doc install
[a85a8ab]80endif
[5155570]81ifdef SKYPE_PI
82        $(MAKE) -C protocols/skype install-doc
83endif
[b7d3cc34]84
85uninstall-doc:
[a85a8ab]86ifdef DOC
[b7d3cc34]87        $(MAKE) -C doc uninstall
[a85a8ab]88endif
[5155570]89ifdef SKYPE_PI
90        $(MAKE) -C protocols/skype uninstall-doc
91endif
[b7d3cc34]92
93install-bin:
[57da960]94        mkdir -p $(DESTDIR)$(SBINDIR)
[ba3506e]95        $(INSTALL) -m 0755 $(OUTFILE) $(DESTDIR)$(SBINDIR)/$(OUTFILE)
[b7d3cc34]96
97uninstall-bin:
[57da960]98        rm -f $(DESTDIR)$(SBINDIR)/$(OUTFILE)
[b7d3cc34]99
[cdb92c5]100install-dev:
[e506d6c]101        mkdir -p $(DESTDIR)$(INCLUDEDIR)
[ba3506e]102        $(INSTALL) -m 0644 config.h $(DESTDIR)$(INCLUDEDIR)
[ebe2c5e]103        for i in $(headers); do $(INSTALL) -m 0644 $$i $(DESTDIR)$(INCLUDEDIR); done
[e506d6c]104        mkdir -p $(DESTDIR)$(PCDIR)
[ba3506e]105        $(INSTALL) -m 0644 bitlbee.pc $(DESTDIR)$(PCDIR)
[e506d6c]106
[cdb92c5]107uninstall-dev:
108        rm -f $(foreach hdr,$(headers),$(DESTDIR)$(INCLUDEDIR)/$(hdr))
109        -rmdir $(DESTDIR)$(INCLUDEDIR)
[e506d6c]110        rm -f $(DESTDIR)$(PCDIR)/bitlbee.pc
111
[b7d3cc34]112install-etc:
113        mkdir -p $(DESTDIR)$(ETCDIR)
[ba3506e]114        $(INSTALL) -m 0644 $(_SRCDIR_)motd.txt $(DESTDIR)$(ETCDIR)/motd.txt
115        $(INSTALL) -m 0644 $(_SRCDIR_)bitlbee.conf $(DESTDIR)$(ETCDIR)/bitlbee.conf
[b7d3cc34]116
117uninstall-etc:
118        rm -f $(DESTDIR)$(ETCDIR)/motd.txt
119        rm -f $(DESTDIR)$(ETCDIR)/bitlbee.conf
120        -rmdir $(DESTDIR)$(ETCDIR)
121
[57da960]122install-plugins: install-plugin-otr install-plugin-skype
123
124install-plugin-otr:
[858ea01]125ifdef OTR_PI
126        mkdir -p $(DESTDIR)$(PLUGINDIR)
[ba3506e]127        $(INSTALL) -m 0755 otr.so $(DESTDIR)$(PLUGINDIR)
[858ea01]128endif
[57da960]129
130install-plugin-skype:
[370899f]131ifdef SKYPE_PI
132        mkdir -p $(DESTDIR)$(PLUGINDIR)
[ba3506e]133        $(INSTALL) -m 0755 skype.so $(DESTDIR)$(PLUGINDIR)
[57da960]134        mkdir -p $(DESTDIR)$(ETCDIR)/../skyped $(DESTDIR)$(BINDIR)
[ba3506e]135        $(INSTALL) -m 0644 $(_SRCDIR_)protocols/skype/skyped.cnf $(DESTDIR)$(ETCDIR)/../skyped/skyped.cnf
136        $(INSTALL) -m 0644 $(_SRCDIR_)protocols/skype/skyped.conf.dist $(DESTDIR)$(ETCDIR)/../skyped/skyped.conf
137        $(INSTALL) -m 0755 $(_SRCDIR_)protocols/skype/skyped.py $(DESTDIR)$(BINDIR)/skyped
[cb90dc9]138        $(MAKE) -C protocols/skype install-doc
[370899f]139endif
[858ea01]140
[417002e]141systemd:
142ifdef SYSTEMDSYSTEMUNITDIR
[0edb57f]143        mkdir -p init
144        sed 's|@sbindir@|$(SBINDIR)|' $(_SRCDIR_)init/bitlbee.service.in > init/bitlbee.service
145        sed 's|@sbindir@|$(SBINDIR)|' $(_SRCDIR_)init/bitlbee@.service.in > init/bitlbee@.service
[417002e]146endif
147
[a6c59bb]148install-systemd: systemd
[417002e]149ifdef SYSTEMDSYSTEMUNITDIR
150        mkdir -p $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
[ba3506e]151        $(INSTALL) -m 0644 init/bitlbee.service $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
152        $(INSTALL) -m 0644 init/bitlbee@.service $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
[0edb57f]153        $(INSTALL) -m 0644 $(_SRCDIR_)init/bitlbee.socket $(DESTDIR)$(SYSTEMDSYSTEMUNITDIR)
[417002e]154else
[ebe2c5e]155        @echo SYSTEMDSYSTEMUNITDIR not set, not installing systemd unit files.
[417002e]156endif
157
[b7d3cc34]158tar:
159        fakeroot debian/rules clean || make distclean
160        x=$$(basename $$(pwd)); \
161        cd ..; \
[61d21e5b]162        tar czf $$x.tar.gz --exclude=debian --exclude=.git* --exclude=.depend $$x
[b7d3cc34]163
164$(subdirs):
165        @$(MAKE) -C $@ $(MAKECMDGOALS)
166
[7fa5c19]167$(OTR_PI): %.so: $(_SRCDIR_)%.c
[858ea01]168        @echo '*' Building plugin $@
[9fc017d]169        @$(CC) $(CFLAGS) -fPIC -shared $(LDFLAGS) $< -o $@ $(OTRFLAGS)
[858ea01]170
[7fa5c19]171$(SKYPE_PI): $(_SRCDIR_)protocols/skype/skype.c
[370899f]172        @echo '*' Building plugin skype
[d203495]173        @$(CC) $(CFLAGS) $(LDFLAGS) $(SKYPEFLAGS) $< -o $@
[370899f]174
[7fa5c19]175$(objects): %.o: $(_SRCDIR_)%.c
[b7d3cc34]176        @echo '*' Compiling $<
[7281ad1]177        @$(CC) -c $(CFLAGS) $(CFLAGS_BITLBEE) $< -o $@
[b7d3cc34]178
179$(objects): Makefile Makefile.settings config.h
180
181$(OUTFILE): $(objects) $(subdirs)
182        @echo '*' Linking $(OUTFILE)
[d203495]183        @$(CC) $(objects) $(subdirobjs) -o $(OUTFILE) $(LDFLAGS_BITLBEE) $(LDFLAGS) $(EFLAGS)
[b7d3cc34]184ifndef DEBUG
185        @echo '*' Stripping $(OUTFILE)
186        @-$(STRIP) $(OUTFILE)
187endif
188
189ctags: 
190        ctags `find . -name "*.c"` `find . -name "*.h"`
[4fca1db]191
192# Using this as a bogus Make target to test if a GNU-compatible version of
193# make is available.
194helloworld:
195        @echo Hello World
[b0a89cc]196
[4b53c65]197# Check if we can load the helpfile. (This fails if some article is >1KB.)
198# If print returns a NULL pointer, the file is unusable.
199testhelp: doc
200        gdb --eval-command='b main' --eval-command='r' \
201            --eval-command='print help_init(&global->helpfile, "doc/user-guide/help.txt")' \
202            $(OUTFILE) < /dev/null
203
[b0a89cc]204-include .depend/*.d
[a0c6fc5]205# DO NOT DELETE
Note: See TracBrowser for help on using the repository browser.