source: configure @ f93fd2d

Last change on this file since f93fd2d was 632627e, checked in by dequis <dx@…>, at 2014-07-24T03:51:07Z

srv_lookup: Portability fixes, handle compressed responses

srv_lookup works on cygwin and openbsd now.

Provide ns_initparse, friends, and types where they aren't provided by
platform.

Use dn_expandname instead of custom parser so compressed DNS responses
are handled correctly.

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