source: configure @ beb0f54

Last change on this file since beb0f54 was beb0f54, checked in by dequis <dx@…>, at 2015-05-17T04:13:30Z

configure: Replace xmlto/xsltproc checks with a python>=2.5 check

It actually checks that xml.etree.ElementTree can be imported, which is
good enough.

The script works fine in 2.5 (tested with centos 6), and doesn't work
in 2.4 but we don't support centos 5 anymore so no problem there.

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