source: configure @ 66aefeb

Last change on this file since 66aefeb was 3434a8c, checked in by Wilmer van der Gaast <wilmer@…>, at 2015-02-25T23:25:37Z

Makefile update for RPC stuff.

  • Property mode set to 100755
File size: 22.3 KB
RevLine 
[b7d3cc34]1#!/bin/sh
2
3##############################
4##  Configurer for BitlBee  ##
5##                          ##
6##  Copyright 2004 Lintux   ##
7##  Copyright 2002 Lucumo   ##
8##############################
9
10prefix='/usr/local/'
[57da960]11bindir='$prefix/bin/'
12sbindir='$prefix/sbin/'
[b7d3cc34]13etcdir='$prefix/etc/bitlbee/'
14mandir='$prefix/share/man/'
15datadir='$prefix/share/bitlbee/'
16config='/var/lib/bitlbee/'
[85cf37f]17plugindir='$prefix/lib/bitlbee/'
18includedir='$prefix/include/bitlbee/'
[417002e]19systemdsystemunitdir=''
[85cf37f]20libevent='/usr/'
[34b17d9]21pidfile='/var/run/bitlbee.pid'
[4c225f0]22ipcsocket=''
[e506d6c]23pcdir='$prefix/lib/pkgconfig'
[25b80e9c]24systemlibdirs="/lib64 /usr/lib64 /usr/local/lib64 /lib /usr/lib /usr/local/lib"
[b7d3cc34]25
[04e2a05]26# Set these to default-on to let it be overriden by either the user or purple
27#
28# If the user sets one of these to 1, purple won't disable them.
29# Otherwise, if it's still default-on, it gets included in normal builds,
30# but not purple ones.
31msn="default-on"
32jabber="default-on"
33oscar="default-on"
[3434a8c]34rpc="rpc-on"
[04e2a05]35yahoo="default-on"
36
[1b221e0]37twitter=1
[04dc563]38purple=0
[b7d3cc34]39
40debug=0
41strip=1
[66b9e86e]42gcov=0
[e2472dd]43asan=0
[2abfbc5]44plugins=1
[04f0c10]45otr=0
[370899f]46skype=0
[85cf37f]47
48events=glib
[b7d3cc34]49ssl=auto
50
[7281ad1]51pie=1
52
[b7d3cc34]53arch=`uname -s`
54cpu=`uname -m`
55
[34afea7]56GLIB_MIN_VERSION=2.16
[670204f]57
[b7d3cc34]58echo BitlBee configure
59
[25c4c78]60# Cygwin and Darwin don't support PIC/PIE
61case "$arch" in
62    CYGWIN* )
63        pie=0;;
64    Darwin )
65        pie=0;;
66esac
67
[b7d3cc34]68while [ -n "$1" ]; do
69        e="`expr "X$1" : 'X--\(.*=.*\)'`"
70        if [ -z "$e" ]; then
71                cat<<EOF
72
73Usage: $0 [OPTIONS]
74
75Option          Description                             Default
76
77--prefix=...    Directories to put files in             $prefix
78--bindir=...                                            $bindir
[57da960]79--sbindir=...                                           $sbindir
[b7d3cc34]80--etcdir=...                                            $etcdir
81--mandir=...                                            $mandir
82--datadir=...                                           $datadir
[7b23afd]83--plugindir=...                                         $plugindir
[417002e]84--systemdsystemunitdir=...                              $systemdsystemunitdir
[34b17d9]85--pidfile=...                                           $pidfile
[b7d3cc34]86--config=...                                            $config
87
88--msn=0/1       Disable/enable MSN part                 $msn
89--jabber=0/1    Disable/enable Jabber part              $jabber
90--oscar=0/1     Disable/enable Oscar part (ICQ, AIM)    $oscar
91--yahoo=0/1     Disable/enable Yahoo part               $yahoo
[4aa0f6b]92--twitter=0/1   Disable/enable Twitter part             $twitter
[b7d3cc34]93
[796da03]94--purple=0/1    Disable/enable libpurple support        $purple
[04f0c10]95                (automatically disables other protocol modules)
[3434a8c]96--rpc=0/1       Disable/enable RPC interface            $rpc
[b7d3cc34]97
98--debug=0/1     Disable/enable debugging                $debug
99--strip=0/1     Disable/enable binary stripping         $strip
[7281ad1]100--pie=0/1       Build position independent executable   $pie
[66b9e86e]101--gcov=0/1      Disable/enable test coverage reporting  $gcov
[e2472dd]102--asan=0/1      Disable/enable AddressSanitizer         $asan
[2abfbc5]103--plugins=0/1   Disable/enable plugins support          $plugins
[04f0c10]104--otr=0/1/auto/plugin
105                Disable/enable OTR encryption support   $otr
[17f6079]106--skype=0/1/plugin
[370899f]107                Disable/enable Skype support            $skype
[b7d3cc34]108
[85cf37f]109--events=...    Event handler (glib, libevent)          $events
[e1d3f98]110--ssl=...       SSL library to use (gnutls, nss, openssl, auto)
[b7d3cc34]111                                                        $ssl
[aec56b0]112
[7281ad1]113
[f1e7407]114--target=...    Cross compilation target                same as host
[b7d3cc34]115EOF
116                exit;
117        fi
118        eval "$e"
119        shift;
120done
121
122# Expand $prefix and get rid of double slashes
123bindir=`eval echo "$bindir/" | sed 's/\/\{1,\}/\//g'`
[57da960]124sbindir=`eval echo "$sbindir/" | sed 's/\/\{1,\}/\//g'`
[b7d3cc34]125etcdir=`eval echo "$etcdir/" | sed 's/\/\{1,\}/\//g'`
126mandir=`eval echo "$mandir/" | sed 's/\/\{1,\}/\//g'`
127datadir=`eval echo "$datadir/" | sed 's/\/\{1,\}/\//g'`
128config=`eval echo "$config/" | sed 's/\/\{1,\}/\//g'`
[7b23afd]129plugindir=`eval echo "$plugindir/" | sed 's/\/\{1,\}/\//g'`
[85cf37f]130includedir=`eval echo "$includedir"/ | sed 's/\/\{1,\}/\//g'`
131libevent=`eval echo "$libevent"/ | sed 's/\/\{1,\}/\//g'`
132
[6dff9d4]133pidfile=`eval echo "$pidfile" | sed 's/\/\{1,\}/\//g'`
134ipcsocket=`eval echo "$ipcsocket" | sed 's/\/\{1,\}/\//g'`
[e506d6c]135pcdir=`eval echo "$pcdir" | sed 's/\/\{1,\}/\//g'`
[b7d3cc34]136
[17f6079]137protocols_mods=""
138
[b95b0c8]139cat <<EOF >Makefile.settings
[b7d3cc34]140## BitlBee settings, generated by configure
141PREFIX=$prefix
142BINDIR=$bindir
[57da960]143SBINDIR=$sbindir
[b7d3cc34]144ETCDIR=$etcdir
145MANDIR=$mandir
146DATADIR=$datadir
[7b23afd]147PLUGINDIR=$plugindir
[b7d3cc34]148CONFIG=$config
[e506d6c]149INCLUDEDIR=$includedir
150PCDIR=$pcdir
[b7d3cc34]151
[1bf9492]152TARGET=$target
[b7d3cc34]153ARCH=$arch
154CPU=$cpu
155
[25b80e9c]156INSTALL=install -p
157
[b7d3cc34]158DESTDIR=
159LFLAGS=
[7a80925]160EFLAGS=-lm
[b7d3cc34]161EOF
162
[1074806]163srcdir=$(cd $(dirname $0);pwd)
164currdir=$(pwd)
165if [ "$srcdir" != "$currdir" ]; then 
[f60079b]166        echo
167        echo "configure script run from a different directory. Will create some symlinks..."
168        if [ ! -e Makefile -o -L Makefile ]; then
[04dc563]169                COPYDIRS="doc lib protocols tests utils"
170                mkdir -p $(cd "$srcdir"; find $COPYDIRS -type d)
[f60079b]171                find . -name Makefile -type l -print0 | xargs -0 rm 2> /dev/null
172                dst="$PWD"
173                cd "$srcdir"
[04dc563]174                for i in $(find . -name Makefile -type f); do
[f60079b]175                        ln -s "$PWD${i#.}" "$dst/$i";
176                done
177                cd "$dst"
178                rm -rf .bzr
179        fi
180       
[7fa5c19]181        echo "_SRCDIR_=$srcdir/" >> Makefile.settings
[f60079b]182        CFLAGS="$CFLAGS -I${dst}"
183else
184        srcdir=$PWD
185fi
186
[b95b0c8]187cat<<EOF >config.h
[b7d3cc34]188/* BitlBee settings, generated by configure
189   
190   Do *NOT* use any of these defines in your code without thinking twice, most
191   of them can/will be overridden at run-time */
192
193#define CONFIG "$config"
194#define ETCDIR "$etcdir"
195#define VARDIR "$datadir"
[7b23afd]196#define PLUGINDIR "$plugindir"
[34b17d9]197#define PIDFILE "$pidfile"
[6dff9d4]198#define IPCSOCKET "$ipcsocket"
[b7d3cc34]199#define ARCH "$arch"
200#define CPU "$cpu"
201EOF
202
[1bf9492]203
204
[f1e7407]205if [ -n "$target" ]; then
[1bf9492]206        PKG_CONFIG_LIBDIR=/usr/$target/lib/pkgconfig
207        export PKG_CONFIG_LIBDIR
[f1e7407]208        PATH=/usr/$target/bin:$PATH
209        CC=$target-cc
210        LD=$target-ld
[1bf9492]211        systemlibdirs="/usr/$target/lib"
[f1e7407]212fi
213
[e2472dd]214if [ "$asan" = "1" ]; then
215        CFLAGS="$CFLAGS -fsanitize=address"
216        LDFLAGS="$LDFLAGS -fsanitize=address"
217        debug=1
218fi
[1bf9492]219
[b7d3cc34]220if [ "$debug" = "1" ]; then
221        echo 'DEBUG=1' >> Makefile.settings
[e2472dd]222        CFLAGS="$CFLAGS -g3 -DDEBUG -O0"
[b7d3cc34]223else
[56f260a]224        [ -z "$CFLAGS" ] && CFLAGS="-O2 -fno-strict-aliasing"
[b7d3cc34]225fi
226
[7281ad1]227if [ "$pie" = "1" ]; then
228        echo 'CFLAGS_BITLBEE=-fPIE' >> Makefile.settings
229        echo 'LDFLAGS_BITLBEE=-pie' >> Makefile.settings
230fi
231
[d203495]232echo LDFLAGS=$LDFLAGS >> Makefile.settings
233
[daae10f]234echo CFLAGS=$CFLAGS $CPPFLAGS >> Makefile.settings
[f60079b]235echo CFLAGS+=-I${srcdir} -I${srcdir}/lib -I${srcdir}/protocols -I. >> Makefile.settings
[b7d3cc34]236
[41a94dd]237echo CFLAGS+=-DHAVE_CONFIG_H -D_GNU_SOURCE >> Makefile.settings
[f712188]238
[b7d3cc34]239if [ -n "$CC" ]; then
[5973412]240        CC=$CC
[b7d3cc34]241elif type gcc > /dev/null 2> /dev/null; then
[5973412]242        CC=gcc
[b7d3cc34]243elif type cc > /dev/null 2> /dev/null; then
[5973412]244        CC=cc
[b7d3cc34]245else
246        echo 'Cannot find a C compiler, aborting.'
247        exit 1;
248fi
249
[5973412]250echo "CC=$CC" >> Makefile.settings;
[daae10f]251if echo $CC | grep -qw gcc; then
252        # Apparently -Wall is gcc-specific?
253        echo CFLAGS+=-Wall >> Makefile.settings
254fi
[5973412]255
[f1e7407]256if [ -z "$LD" ]; then
257        if type ld > /dev/null 2> /dev/null; then
258                LD=ld
259        else
260                echo 'Cannot find ld, aborting.'
261                exit 1;
262        fi
[b7d3cc34]263fi
264
[f1e7407]265echo "LD=$LD" >> Makefile.settings
266
[32c632f]267if [ -z "$PKG_CONFIG" ]; then
268        PKG_CONFIG=pkg-config
269fi
270
271if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG glib-2.0; then
[670204f]272        if $PKG_CONFIG glib-2.0 --atleast-version=$GLIB_MIN_VERSION; then
[b95b0c8]273                cat<<EOF >>Makefile.settings
[32c632f]274EFLAGS+=`$PKG_CONFIG --libs glib-2.0 gmodule-2.0`
275CFLAGS+=`$PKG_CONFIG --cflags glib-2.0 gmodule-2.0`
[b7d3cc34]276EOF
[670204f]277        else
278                echo
279                echo 'Found glib2 '`$PKG_CONFIG glib-2.0 --modversion`', but version '$GLIB_MIN_VERSION' or newer is required.'
280                exit 1
281        fi
[b7d3cc34]282else
[670204f]283        echo
[574af7e]284        echo 'Cannot find glib2 development libraries, aborting. (Install libglib2-dev?)'
[670204f]285        exit 1
[b7d3cc34]286fi
287
[85cf37f]288if [ "$events" = "libevent" ]; then
[003553b]289        if ! [ -f "${libevent}include/event.h" ]; then
[85cf37f]290                echo
291                echo 'Warning: Could not find event.h, you might have to install it and/or specify'
292                echo 'its location using the --libevent= argument. (Example: If event.h is in'
293                echo '/usr/local/include and binaries are in /usr/local/lib: --libevent=/usr/local)'
294        fi
295       
296        echo '#define EVENTS_LIBEVENT' >> config.h
[b95b0c8]297        cat <<EOF >>Makefile.settings
[85cf37f]298EFLAGS+=-levent -L${libevent}lib
299CFLAGS+=-I${libevent}include
300EOF
301elif [ "$events" = "glib" ]; then
302        ## We already use glib anyway, so this is all we need (and in fact not even this, but just to be sure...):
303        echo '#define EVENTS_GLIB' >> config.h
[b7d3cc34]304else
305        echo
[85cf37f]306        echo 'ERROR: Unknown event handler specified.'
307        exit 1
[b7d3cc34]308fi
[85cf37f]309echo 'EVENT_HANDLER=events_'$events'.o' >> Makefile.settings
[b7d3cc34]310
311detect_gnutls()
312{
[4af7b4f]313        if $PKG_CONFIG --exists gnutls; then
[b95b0c8]314                cat <<EOF >>Makefile.settings
[83e47ec]315EFLAGS+=`$PKG_CONFIG --libs gnutls` `libgcrypt-config --libs`
316CFLAGS+=`$PKG_CONFIG --cflags gnutls` `libgcrypt-config --cflags`
[4af7b4f]317EOF
318                ssl=gnutls
[5513f3e]319                if ! pkg-config gnutls --atleast-version=2.8; then
320                        echo
321                        echo 'Warning: With GnuTLS versions <2.8, certificate expire dates are not verified.'
322                fi
[4af7b4f]323                ret=1
324        elif libgnutls-config --version > /dev/null 2> /dev/null; then
[b95b0c8]325                cat <<EOF >>Makefile.settings
[83e47ec]326EFLAGS+=`libgnutls-config --libs` `libgcrypt-config --libs`
327CFLAGS+=`libgnutls-config --cflags` `libgcrypt-config --cflags`
[b7d3cc34]328EOF
329               
330                ssl=gnutls
331                ret=1;
332        else
333                ret=0;
334        fi;
335}
336
337detect_nss()
338{
[ef043d3]339        if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG nss; then
[b95b0c8]340                cat<<EOF >>Makefile.settings
[ef043d3]341EFLAGS+=`$PKG_CONFIG --libs nss`
342CFLAGS+=`$PKG_CONFIG --cflags nss`
[b7d3cc34]343EOF
344               
345                ssl=nss
346                ret=1;
347        else
348                ret=0;
349        fi;
350}
351
[36cf9fd]352RESOLV_TESTCODE='
[aee8c19]353#include <sys/types.h>
354#include <netinet/in.h>
[36cf9fd]355#include <arpa/nameser.h>
356#include <resolv.h>
357
[632627e]358int main()
359{
360
361        res_query( NULL, 0, 0, NULL, 0);
362        dn_expand( NULL, NULL, NULL, NULL, 0);
363        dn_skipname( NULL, NULL);
364}
365'
366RESOLV_NS_TESTCODE='
367#include <sys/types.h>
368#include <netinet/in.h>
369#include <arpa/nameser.h>
370#include <resolv.h>
371
[36cf9fd]372int main()
373{
374        ns_initparse( NULL, 0, NULL );
375        ns_parserr( NULL, ns_s_an, 0, NULL );
376}
377'
[632627e]378RESOLV_NS_TYPES_TESTCODE='
379#include <sys/types.h>
380#include <netinet/in.h>
381#include <arpa/nameser.h>
382
383int main()
384{
385        ns_msg nsh;
386        ns_rr rr;
387
[fb87924]388        /* Not all platforms we want to work on have
389         ns_* routines, so use this to make sure
390         the compiler uses it.*/
391        return (int)(sizeof(nsh) + sizeof(rr));
[632627e]392}
393'
[36cf9fd]394
395detect_resolv_dynamic()
396{
[aee8c19]397        case "$arch" in
[632627e]398        OpenBSD )
399                # In FreeBSD res_*/dn_* routines are present in libc.so
400                LIBRESOLV=;;
[aee8c19]401        FreeBSD )
[632627e]402                # In FreeBSD res_*/dn_* routines are present in libc.so
403                LIBRESOLV=;;
404        CYGWIN* )
405                # In Cygwin res_*/dn_* routines are present in libc.so
[aee8c19]406                LIBRESOLV=;;
407        * )
408                LIBRESOLV=-lresolv;;
409        esac
[4fca1db]410        TMPFILE=$(mktemp /tmp/bitlbee-configure.XXXXXX)
[8462239]411        ret=1
[aee8c19]412        echo "$RESOLV_TESTCODE" | $CC -o $TMPFILE -x c - $LIBRESOLV >/dev/null 2>/dev/null
[36cf9fd]413        if [ "$?" = "0" ]; then
[aee8c19]414                echo "EFLAGS+=$LIBRESOLV" >> Makefile.settings
[8462239]415                ret=0
[36cf9fd]416        fi
417
[8462239]418        rm -f $TMPFILE
419        return $ret
[36cf9fd]420}
421
422detect_resolv_static()
423{
[4fca1db]424        TMPFILE=$(mktemp /tmp/bitlbee-configure.XXXXXX)
[8462239]425        ret=1
[36cf9fd]426        for i in $systemlibdirs; do
427                if [ -f $i/libresolv.a ]; then
[8462239]428                        echo "$RESOLV_TESTCODE" | $CC -o $TMPFILE -x c - -Wl,$i/libresolv.a >/dev/null 2>/dev/null
[36cf9fd]429                        if [ "$?" = "0" ]; then
430                                echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings
[8462239]431                                ret=0
[36cf9fd]432                        fi
433                fi
434        done
435
[8462239]436        rm -f $TMPFILE
437        return $ret
[36cf9fd]438}
439
[632627e]440detect_resolv_ns_dynamic()
441{
442        case "$arch" in
443        FreeBSD )
444                # In FreeBSD ns_ routines are present in libc.so
445                LIBRESOLV=;;
446        * )
447                LIBRESOLV=-lresolv;;
448        esac
449        TMPFILE=$(mktemp /tmp/bitlbee-configure.XXXXXX)
450        ret=1
451        echo "$RESOLV_NS_TESTCODE" | $CC -o $TMPFILE -x c - $LIBRESOLV >/dev/null 2>/dev/null
452        if [ "$?" = "0" ]; then
453                ret=0
454        fi
455
456        rm -f $TMPFILE
457        return $ret
458}
459
460detect_resolv_ns_static()
461{
462        TMPFILE=$(mktemp /tmp/bitlbee-configure.XXXXXX)
463        ret=1
464        for i in $systemlibdirs; do
465                if [ -f $i/libresolv.a ]; then
466                        echo "$RESOLV_NS_TESTCODE" | $CC -o $TMPFILE -x c - -Wl,$i/libresolv.a >/dev/null 2>/dev/null
467                        if [ "$?" = "0" ]; then
468                                ret=0
469                        fi
470                fi
471        done
472
473        rm -f $TMPFILE
474        return $ret
475}
476
477detect_nameser_has_ns_types()
478{
[fb87924]479    TMPFILE=$(mktemp /tmp/bitlbee-configure.XXXXXX)
480    ret=1
481    # since we aren't actually linking with ns_* routines
482    # we can just compile the test code
483    echo "$RESOLV_NS_TYPES_TESTCODE" | $CC -o $TMPFILE -x c -  >/dev/null 2>/dev/null
484    if [ "$?" = "0" ]; then
485        ret=0
[632627e]486    fi
487
[fb87924]488    rm -f $TMPFILE
489    return $ret
[632627e]490}
491
[b3c467b]492if [ "$ssl" = "auto" ]; then
493        detect_gnutls
[b7d3cc34]494        if [ "$ret" = "0" ]; then
[c5920df]495                # Disable NSS for now as it's known to not work very well ATM.
496                #detect_nss
[191cfb1]497                :
[b7d3cc34]498        fi
[b3c467b]499elif [ "$ssl" = "gnutls" ]; then
500        detect_gnutls
501elif [ "$ssl" = "nss" ]; then
502        detect_nss
503elif [ "$ssl" = "openssl" ]; then
504        echo
505        echo 'No detection code exists for OpenSSL. Make sure that you have a complete'
[b3eee9b]506        echo 'installation of OpenSSL (including devel/header files) before reporting'
[b3c467b]507        echo 'compilation problems.'
508        echo
509        echo 'Also, keep in mind that the OpenSSL is, according to some people, not'
[b3eee9b]510        echo 'completely GPL-compatible. Using GnuTLS is recommended and better supported'
511        echo 'by us. However, on many BSD machines, OpenSSL can be considered part of the'
512        echo 'operating system, which makes it GPL-compatible.'
[b3c467b]513        echo
514        echo 'For more info, see: http://www.openssl.org/support/faq.html#LEGAL2'
515        echo '                    http://www.gnome.org/~markmc/openssl-and-the-gpl.html'
516        echo
517        echo 'Please note that distributing a BitlBee binary which links to OpenSSL is'
518        echo 'probably illegal. If you want to create and distribute a binary BitlBee'
[b3eee9b]519        echo 'package, you really should use GnuTLS instead.'
[b3c467b]520        echo
521        echo 'Also, the OpenSSL license requires us to say this:'
522        echo ' *    "This product includes software developed by the OpenSSL Project'
523        echo ' *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"'
[b7d3cc34]524       
[b3c467b]525        echo 'EFLAGS+=-lssl -lcrypto' >> Makefile.settings
526       
527        ret=1
528else
529        echo
530        echo 'ERROR: Unknown SSL library specified.'
531        exit 1
[b7d3cc34]532fi
533
[b3c467b]534if [ "$ret" = "0" ]; then
535        echo
536        echo 'ERROR: Could not find a suitable SSL library (GnuTLS, libnss or OpenSSL).'
537        echo '       Please note that this script doesn'\''t have detection code for OpenSSL,'
[e1d3f98]538        echo '       so if you want to use that, you have to select it by hand.'
[b7d3cc34]539       
[b3c467b]540        exit 1
541fi;
542
543echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings
544
[632627e]545if detect_nameser_has_ns_types; then
546        echo '#define NAMESER_HAS_NS_TYPES' >> config.h
547fi
[36cf9fd]548if detect_resolv_dynamic || detect_resolv_static; then
549        echo '#define HAVE_RESOLV_A' >> config.h
[632627e]550    if detect_resolv_ns_dynamic || detect_resolv_ns_static; then
551            echo '#define HAVE_RESOLV_A_WITH_NS' >> config.h
552    fi
553else
554    echo 'Insufficient resolv routines. Jabber server must be set explicitly'
[36cf9fd]555fi
[36e9f62]556
[632627e]557
[ba7d16f]558STORAGES="xml"
[b3c467b]559
560for i in $STORAGES; do
561        STORAGE_OBJS="$STORAGE_OBJS storage_$i.o"
562done
563echo "STORAGE_OBJS="$STORAGE_OBJS >> Makefile.settings
564
[b7d3cc34]565if [ "$strip" = 0 ]; then
566        echo "STRIP=\# skip strip" >> Makefile.settings;
567else
568        if [ "$debug" = 1 ]; then
569                echo
570                echo 'Stripping binaries does not make sense when debugging. Stripping disabled.'
571                echo 'STRIP=\# skip strip' >> Makefile.settings
572                strip=0;
573        elif [ -n "$STRIP" ]; then
574                echo "STRIP=$STRIP" >> Makefile.settings;
575        elif type strip > /dev/null 2> /dev/null; then
576                echo "STRIP=strip" >> Makefile.settings;
577        else
578                echo
579                echo 'No strip utility found, cannot remove unnecessary parts from executable.'
580                echo 'STRIP=\# skip strip' >> Makefile.settings
581                strip=0;
582        fi;
583fi
584
[417002e]585if [ -z "$systemdsystemunitdir" ]; then
586        if $PKG_CONFIG --exists systemd; then
587                systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`
588        fi
589fi
590if [ -n "$systemdsystemunitdir" ]; then
591        if [ "$systemdsystemunitdir" != "no" ]; then
592                echo "SYSTEMDSYSTEMUNITDIR=$systemdsystemunitdir" >> Makefile.settings
593        fi
594fi
595
[66b9e86e]596if [ "$gcov" = "1" ]; then
[31fc3970]597        echo "CFLAGS+=--coverage" >> Makefile.settings
598        echo "EFLAGS+=--coverage" >> Makefile.settings
[66b9e86e]599fi
600
[2abfbc5]601if [ "$plugins" = 0 ]; then
[489847f]602        plugindir=""
[2abfbc5]603        echo '#undef WITH_PLUGINS' >> config.h
604else
605        echo '#define WITH_PLUGINS' >> config.h
606fi
607
[6738a67]608otrprefix=""
609for i in / /usr /usr/local; do
610        if [ -f ${i}/lib/libotr.a ]; then
611                otrprefix=${i}
612                break
613        fi
614done
[764c7d1]615if [ "$otr" = "auto" ]; then
[6738a67]616        if [ -n "$otrprefix" ]; then
617                otr=1
618        else
619                otr=0
620        fi
[764c7d1]621fi
[6738a67]622if [ "$otr" = 1 ]; then
[858ea01]623        # BI == built-in
624        echo '#define OTR_BI' >> config.h
[d348377]625        echo "EFLAGS+=-L${otrprefix}/lib -lotr -lgcrypt" >> Makefile.settings
[6738a67]626        echo "CFLAGS+=-I${otrprefix}/include" >> Makefile.settings
[858ea01]627        echo 'OTR_BI=otr.o' >> Makefile.settings
628elif [ "$otr" = "plugin" ]; then
629        echo '#define OTR_PI' >> config.h
630        echo "OTRFLAGS=-L${otrprefix}/lib -lotr" >> Makefile.settings
631        echo "CFLAGS+=-I${otrprefix}/include" >> Makefile.settings
632        echo 'OTR_PI=otr.so' >> Makefile.settings
[764c7d1]633fi
[a8aa823]634if [ "$otr" != 0 ] && ! pkg-config libotr --atleast-version=4.0; then
635        echo
636        echo 'WARNING: Your libotr seems to be old. BitlBee now needs at least libotr 4.0.'
637        # Not hard-failing because the code above doesn't use pkg-config, so who knows
638        # what's true at this point...
639fi
[764c7d1]640
[17f6079]641if [ "$skype" = "1" -o "$skype" = "plugin" ]; then
[b2b7f52]642        if [ "$arch" = "Darwin" ]; then
643                echo "SKYPEFLAGS=-dynamiclib -undefined dynamic_lookup" >> Makefile.settings
644        else
645                echo "SKYPEFLAGS=-fPIC -shared" >> Makefile.settings
646        fi
[370899f]647        echo 'SKYPE_PI=skype.so' >> Makefile.settings
[17f6079]648        protocols_mods="$protocol_mods skype(plugin)"
[370899f]649fi
650
[ceebeb1]651if [ ! -e doc/user-guide/help.txt ] && ! type xmlto > /dev/null 2> /dev/null; then
652        echo
653        echo 'WARNING: Building from an unreleased source tree without prebuilt helpfile.'
654        echo 'Install xmlto if you want online help to work.'
655fi
656
[f287f04]657REAL_BITLBEE_VERSION=`grep '^#define BITLBEE_VERSION ' $srcdir/bitlbee.h | sed 's/.*\"\(.*\)\".*/\1/'`
[ffea9b9]658echo
[a014331]659if [ -z "$BITLBEE_VERSION" -a -d .bzr ] && type bzr > /dev/null 2> /dev/null; then
660        nick=`bzr nick`
661        if [ -n "$nick" -a "$nick" != "bitlbee" ]; then
662                nick="-$nick"
663        else
664                nick=""
665        fi
[ffea9b9]666        rev=`bzr revno`
667        echo 'Using bzr revision #'$rev' as version number'
[f287f04]668        BITLBEE_VERSION=$REAL_BITLBEE_VERSION-bzr$nick-$rev
[b7d3cc34]669fi
670
[e26aa72]671if [ -z "$BITLBEE_VERSION" -a -d .git ] && type git > /dev/null 2> /dev/null; then
672        rev=`git describe --long --tags`-`git rev-parse --abbrev-ref HEAD`
673        echo 'Using '$rev' as git version number'
674        BITLBEE_VERSION=$rev-git
675fi
676
[b7d3cc34]677if [ -n "$BITLBEE_VERSION" ]; then
678        echo 'Spoofing version number: '$BITLBEE_VERSION
679        echo '#undef BITLBEE_VERSION' >> config.h
[f287f04]680        echo '#define BITLBEE_VERSION "'$BITLBEE_VERSION'"' >> config.h
[ffea9b9]681        echo
[f287f04]682else
683        # for pkg-config
684        BITLBEE_VERSION=$REAL_BITLBEE_VERSION
[b7d3cc34]685fi
686
[4fca1db]687if ! make helloworld > /dev/null 2>&1; then
688        echo "WARNING: Your version of make (BSD make?) does not support BitlBee's makefiles."
689        echo "BitlBee needs GNU make to build properly. On most systems GNU make is available"
690        echo "under the name 'gmake'."
691        echo
692        if gmake helloworld > /dev/null 2>&1; then
693                echo "gmake seems to be available on your machine, great."
694                echo
695        else
696                echo "gmake is not installed (or not working). Please try to install it."
697                echo
698        fi
699fi
700
[b95b0c8]701cat <<EOF >bitlbee.pc
[e506d6c]702prefix=$prefix
703includedir=$includedir
[489847f]704plugindir=$plugindir
[e506d6c]705
706Name: bitlbee
707Description: IRC to IM gateway
708Requires: glib-2.0
709Version: $BITLBEE_VERSION
710Libs:
711Cflags: -I\${includedir}
712
713EOF
714
[b7d3cc34]715protocols=''
716protoobjs=''
717
[e248c7f]718if [ "$purple" = 0 ]; then
719        echo '#undef WITH_PURPLE' >> config.h
720else
[e08e53c]721        if ! $PKG_CONFIG purple; then
722                echo
723                echo 'Cannot find libpurple development libraries, aborting. (Install libpurple-dev?)'
724                exit 1
725        fi
[e248c7f]726        echo '#define WITH_PURPLE' >> config.h
[b95b0c8]727        cat<<EOF >>Makefile.settings
[e08e53c]728EFLAGS += $($PKG_CONFIG purple --libs)
729PURPLE_CFLAGS += $($PKG_CONFIG purple --cflags)
730EOF
[e248c7f]731        protocols=$protocols'purple '
732        protoobjs=$protoobjs'purple_mod.o '
733
[04e2a05]734        # only disable these if the user didn't enable them explicitly
735        [ "$msn" = "default-on" ] && msn=0
736        [ "$jabber" = "default-on" ] && jabber=0
737        [ "$oscar" = "default-on" ] && oscar=0
738        [ "$yahoo" = "default-on" ] && yahoo=0
[18e1f3b]739
740        echo '#undef PACKAGE' >> config.h
741        echo '#define PACKAGE "BitlBee-LIBPURPLE"' >> config.h
[bda2975]742       
743        if [ "$events" = "libevent" ]; then
744                echo 'Warning: Some libpurple modules (including msn-pecan) do their event handling'
745                echo 'outside libpurple, talking to GLib directly. At least for now the combination'
746                echo 'libpurple + libevent is *not* recommended!'
[c775a58]747                echo
[bda2975]748        fi
[e248c7f]749fi
750
[b0a89cc]751case "$CC" in
752*gcc* )
[e371011]753        echo CFLAGS+=-MMD -MF .depend/\$@.d >> Makefile.settings
[fe92921]754        for i in . lib tests protocols protocols/*/; do
[b0a89cc]755                mkdir -p $i/.depend
756        done
757esac
758
[b7d3cc34]759if [ "$msn" = 0 ]; then
760        echo '#undef WITH_MSN' >> config.h
761else
762        echo '#define WITH_MSN' >> config.h
763        protocols=$protocols'msn '
[b5a22e3]764        protoobjs=$protoobjs'msn_mod.o '
[b7d3cc34]765fi
766
767if [ "$jabber" = 0 ]; then
768        echo '#undef WITH_JABBER' >> config.h
769else
770        echo '#define WITH_JABBER' >> config.h
771        protocols=$protocols'jabber '
[b5a22e3]772        protoobjs=$protoobjs'jabber_mod.o '
[b7d3cc34]773fi
774
775if [ "$oscar" = 0 ]; then
776        echo '#undef WITH_OSCAR' >> config.h
777else
778        echo '#define WITH_OSCAR' >> config.h
779        protocols=$protocols'oscar '
[b5a22e3]780        protoobjs=$protoobjs'oscar_mod.o '
[b7d3cc34]781fi
782
783if [ "$yahoo" = 0 ]; then
784        echo '#undef WITH_YAHOO' >> config.h
785else
786        echo '#define WITH_YAHOO' >> config.h
787        protocols=$protocols'yahoo '
[b5a22e3]788        protoobjs=$protoobjs'yahoo_mod.o '
[b7d3cc34]789fi
790
[1b221e0]791if [ "$twitter" = 0 ]; then
792        echo '#undef WITH_TWITTER' >> config.h
793else
794        echo '#define WITH_TWITTER' >> config.h
795        protocols=$protocols'twitter '
796        protoobjs=$protoobjs'twitter_mod.o '
797fi
798
[3434a8c]799if [ "$rpc" = 0 ]; then
800        echo '#undef WITH_RPC' >> config.h
801else
802        echo '#define WITH_RPC' >> config.h
803        protocols=$protocols'rpc '
804        protoobjs=$protoobjs'rpc_mod.o '
805fi
806
[b7d3cc34]807if [ "$protocols" = "PROTOCOLS = " ]; then
[43462708]808        echo "Warning: You haven't selected any communication protocol to compile!"
[b3c467b]809        echo "         BitlBee will run, but you will be unable to connect to IM servers!"
[b7d3cc34]810fi
811
812echo "PROTOCOLS = $protocols" >> Makefile.settings
813echo "PROTOOBJS = $protoobjs" >> Makefile.settings
814
815echo Architecture: $arch
816case "$arch" in
817Linux )
818;;
819GNU/* )
820;;
821*BSD )
822;;
823Darwin )
[caceb06]824        echo 'STRIP=\# skip strip' >> Makefile.settings
[b7d3cc34]825;;
826IRIX )
827;;
828SunOS )
829        echo 'EFLAGS+=-lresolv -lnsl -lsocket' >> Makefile.settings
830        echo 'STRIP=\# skip strip' >> Makefile.settings
[70d7795]831        echo '#define NO_FD_PASSING' >> config.h
[b7d3cc34]832;;
[8de63c3]833AIX )
834        echo 'EFLAGS+=-Wl,-brtl' >> Makefile.settings
[b7d3cc34]835;;
836CYGWIN* )
837;;
[aec56b0]838Windows )
[e252d8c]839        echo 'Native windows compilation is not supported anymore, use cygwin instead.'
[aec56b0]840;;
[b7d3cc34]841* )
[8d6c4b1]842        echo 'We haven'\''t tested BitlBee on many platforms yet, yours is untested. YMMV.'
843        echo 'Please report any problems at http://bugs.bitlbee.org/.'
[b7d3cc34]844;;
845esac
846
[f1e7407]847if [ -n "$target" ]; then
848        echo "Cross-compiling for: $target"
849fi
850
[b7d3cc34]851echo
852echo 'Configuration done:'
853
854if [ "$debug" = "1" ]; then
[b3c467b]855        echo '  Debugging enabled.'
[b7d3cc34]856else
[b3c467b]857        echo '  Debugging disabled.'
[b7d3cc34]858fi
859
[e2472dd]860if [ "$asan" = "1" ]; then
861        echo '  AddressSanitizer (ASAN) enabled.'
862else
863        echo '  AddressSanitizer (ASAN) disabled.'
864fi
865
[7281ad1]866if [ "$pie" = "1" ]; then
867        echo '  Building PIE executable'
868else
869        echo '  Building non-PIE executable'
870fi
871
[b7d3cc34]872if [ "$strip" = "1" ]; then
[b3c467b]873        echo '  Binary stripping enabled.'
[b7d3cc34]874else
[b3c467b]875        echo '  Binary stripping disabled.'
[b7d3cc34]876fi
877
[764c7d1]878if [ "$otr" = "1" ]; then
879        echo '  Off-the-Record (OTR) Messaging enabled.'
[858ea01]880elif [ "$otr" = "plugin" ]; then
881        echo '  Off-the-Record (OTR) Messaging enabled (as a plugin).'
[764c7d1]882else
883        echo '  Off-the-Record (OTR) Messaging disabled.'
884fi
885
[417002e]886if [ -n "$systemdsystemunitdir" ]; then
887        echo '  systemd enabled.'
888else
889        echo '  systemd disabled.'
890fi
891
[b3c467b]892echo '  Using event handler: '$events
893echo '  Using SSL library: '$ssl
[4e3df8a]894#echo '  Building with these storage backends: '$STORAGES
[b7d3cc34]895
896if [ -n "$protocols" ]; then
[17f6079]897        echo '  Building with these protocols:' $protocols$protocols_mods
[4e3df8a]898        case "$protocols" in
899        *purple*)
900                echo "    Note that BitlBee-libpurple is supported on a best-effort basis. It's"
901                echo "    not *fully* compatible with normal BitlBee. Don't use it unless you"
902                echo "    absolutely need it (i.e. support for a certain protocol or feature)."
903        esac
[b7d3cc34]904else
[b3c467b]905        echo '  Building without IM-protocol support. We wish you a lot of fun...'
[b7d3cc34]906fi
Note: See TracBrowser for help on using the repository browser.