source: Makefile @ 15a8c94

Last change on this file since 15a8c94 was 2a1c27f, checked in by dequis <dx@…>, at 2016-11-28T18:20:34Z

Include debug symbols in non-debug builds, disable stripping by default

With this commit, the difference between debug and non-debug builds is
mainly the optimization level and -DDEBUG (which isn't used much)

In other words:

--debug=0 == CFLAGS="-g -O2 -fno-strict-aliasing"
--debug=1 == CFLAGS="-g3 -DDEBUG -O0"

And --strip=1 can be used to get rid of the debug symbols.

This is closer to the default behavior of autotools.

Should have done this forever ago, like back when bitlbee had bugs (lol)

  • 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)
[2a1c27f]184ifneq ($(firstword $(STRIP)), \#)
[b7d3cc34]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.