source: configure @ 632627e

Last change on this file since 632627e 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
Line 
1#!/bin/sh
2
3##############################
4##  Configurer for BitlBee  ##
5##                          ##
6##  Copyright 2004 Lintux   ##
7##  Copyright 2002 Lucumo   ##
8##############################
9
10prefix='/usr/local/'
11bindir='$prefix/bin/'
12sbindir='$prefix/sbin/'
13etcdir='$prefix/etc/bitlbee/'
14mandir='$prefix/share/man/'
15datadir='$prefix/share/bitlbee/'
16config='/var/lib/bitlbee/'
17plugindir='$prefix/lib/bitlbee/'
18includedir='$prefix/include/bitlbee/'
19systemdsystemunitdir=''
20libevent='/usr/'
21pidfile='/var/run/bitlbee.pid'
22ipcsocket=''
23pcdir='$prefix/lib/pkgconfig'
24systemlibdirs="/lib64 /usr/lib64 /usr/local/lib64 /lib /usr/lib /usr/local/lib"
25
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
36twitter=1
37purple=0
38
39debug=0
40strip=1
41gcov=0
42plugins=1
43otr=0
44skype=0
45
46events=glib
47ssl=auto
48
49pie=1
50
51arch=`uname -s`
52cpu=`uname -m`
53
54GLIB_MIN_VERSION=2.14
55
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
69--sbindir=...                                           $sbindir
70--etcdir=...                                            $etcdir
71--mandir=...                                            $mandir
72--datadir=...                                           $datadir
73--plugindir=...                                         $plugindir
74--systemdsystemunitdir=...                              $systemdsystemunitdir
75--pidfile=...                                           $pidfile
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
82--twitter=0/1   Disable/enable Twitter part             $twitter
83
84--purple=0/1    Disable/enable libpurple support        $purple
85                (automatically disables other protocol modules)
86
87--debug=0/1     Disable/enable debugging                $debug
88--strip=0/1     Disable/enable binary stripping         $strip
89--pie=0/1       Build position independent executable   $pie
90--gcov=0/1      Disable/enable test coverage reporting  $gcov
91--plugins=0/1   Disable/enable plugins support          $plugins
92--otr=0/1/auto/plugin
93                Disable/enable OTR encryption support   $otr
94--skype=0/1/plugin
95                Disable/enable Skype support            $skype
96
97--events=...    Event handler (glib, libevent)          $events
98--ssl=...       SSL library to use (gnutls, nss, openssl, auto)
99                                                        $ssl
100
101
102--target=...    Cross compilation target                same as host
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'`
112sbindir=`eval echo "$sbindir/" | sed 's/\/\{1,\}/\//g'`
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'`
117plugindir=`eval echo "$plugindir/" | sed 's/\/\{1,\}/\//g'`
118includedir=`eval echo "$includedir"/ | sed 's/\/\{1,\}/\//g'`
119libevent=`eval echo "$libevent"/ | sed 's/\/\{1,\}/\//g'`
120
121pidfile=`eval echo "$pidfile" | sed 's/\/\{1,\}/\//g'`
122ipcsocket=`eval echo "$ipcsocket" | sed 's/\/\{1,\}/\//g'`
123pcdir=`eval echo "$pcdir" | sed 's/\/\{1,\}/\//g'`
124
125protocols_mods=""
126
127cat <<EOF >Makefile.settings
128## BitlBee settings, generated by configure
129PREFIX=$prefix
130BINDIR=$bindir
131SBINDIR=$sbindir
132ETCDIR=$etcdir
133MANDIR=$mandir
134DATADIR=$datadir
135PLUGINDIR=$plugindir
136CONFIG=$config
137INCLUDEDIR=$includedir
138PCDIR=$pcdir
139
140TARGET=$target
141ARCH=$arch
142CPU=$cpu
143
144INSTALL=install -p
145
146DESTDIR=
147LFLAGS=
148EFLAGS=-lm
149EOF
150
151srcdir=$(cd $(dirname $0);pwd)
152currdir=$(pwd)
153if [ "$srcdir" != "$currdir" ]; then 
154        echo
155        echo "configure script run from a different directory. Will create some symlinks..."
156        if [ ! -e Makefile -o -L Makefile ]; then
157                COPYDIRS="doc lib protocols tests utils"
158                mkdir -p $(cd "$srcdir"; find $COPYDIRS -type d)
159                find . -name Makefile -type l -print0 | xargs -0 rm 2> /dev/null
160                dst="$PWD"
161                cd "$srcdir"
162                for i in $(find . -name Makefile -type f); do
163                        ln -s "$PWD${i#.}" "$dst/$i";
164                done
165                cd "$dst"
166                rm -rf .bzr
167        fi
168       
169        echo "_SRCDIR_=$srcdir/" >> Makefile.settings
170        CFLAGS="$CFLAGS -I${dst}"
171else
172        srcdir=$PWD
173fi
174
175cat<<EOF >config.h
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"
184#define PLUGINDIR "$plugindir"
185#define PIDFILE "$pidfile"
186#define IPCSOCKET "$ipcsocket"
187#define ARCH "$arch"
188#define CPU "$cpu"
189EOF
190
191
192
193if [ -n "$target" ]; then
194        PKG_CONFIG_LIBDIR=/usr/$target/lib/pkgconfig
195        export PKG_CONFIG_LIBDIR
196        PATH=/usr/$target/bin:$PATH
197        CC=$target-cc
198        LD=$target-ld
199        systemlibdirs="/usr/$target/lib"
200fi
201
202
203if [ "$debug" = "1" ]; then
204        echo 'DEBUG=1' >> Makefile.settings
205        CFLAGS="$CFLAGS -g -DDEBUG"
206else
207        [ -z "$CFLAGS" ] && CFLAGS="-O2 -fno-strict-aliasing"
208fi
209
210if [ "$pie" = "1" ]; then
211        echo 'CFLAGS_BITLBEE=-fPIE' >> Makefile.settings
212        echo 'LDFLAGS_BITLBEE=-pie' >> Makefile.settings
213fi
214
215echo LDFLAGS=$LDFLAGS >> Makefile.settings
216
217echo CFLAGS=$CFLAGS $CPPFLAGS >> Makefile.settings
218echo CFLAGS+=-I${srcdir} -I${srcdir}/lib -I${srcdir}/protocols -I. >> Makefile.settings
219
220echo CFLAGS+=-DHAVE_CONFIG_H -D_GNU_SOURCE >> Makefile.settings
221
222if [ -n "$CC" ]; then
223        CC=$CC
224elif type gcc > /dev/null 2> /dev/null; then
225        CC=gcc
226elif type cc > /dev/null 2> /dev/null; then
227        CC=cc
228else
229        echo 'Cannot find a C compiler, aborting.'
230        exit 1;
231fi
232
233echo "CC=$CC" >> Makefile.settings;
234if echo $CC | grep -qw gcc; then
235        # Apparently -Wall is gcc-specific?
236        echo CFLAGS+=-Wall >> Makefile.settings
237fi
238
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
246fi
247
248echo "LD=$LD" >> Makefile.settings
249
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
255        if $PKG_CONFIG glib-2.0 --atleast-version=$GLIB_MIN_VERSION; then
256                cat<<EOF >>Makefile.settings
257EFLAGS+=`$PKG_CONFIG --libs glib-2.0 gmodule-2.0`
258CFLAGS+=`$PKG_CONFIG --cflags glib-2.0 gmodule-2.0`
259EOF
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
265else
266        echo
267        echo 'Cannot find glib2 development libraries, aborting. (Install libglib2-dev?)'
268        exit 1
269fi
270
271if [ "$events" = "libevent" ]; then
272        if ! [ -f "${libevent}include/event.h" ]; then
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
280        cat <<EOF >>Makefile.settings
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
287else
288        echo
289        echo 'ERROR: Unknown event handler specified.'
290        exit 1
291fi
292echo 'EVENT_HANDLER=events_'$events'.o' >> Makefile.settings
293
294detect_gnutls()
295{
296        if $PKG_CONFIG --exists gnutls; then
297                cat <<EOF >>Makefile.settings
298EFLAGS+=`$PKG_CONFIG --libs gnutls` `libgcrypt-config --libs`
299CFLAGS+=`$PKG_CONFIG --cflags gnutls` `libgcrypt-config --cflags`
300EOF
301                ssl=gnutls
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
306                ret=1
307        elif libgnutls-config --version > /dev/null 2> /dev/null; then
308                cat <<EOF >>Makefile.settings
309EFLAGS+=`libgnutls-config --libs` `libgcrypt-config --libs`
310CFLAGS+=`libgnutls-config --cflags` `libgcrypt-config --cflags`
311EOF
312               
313                ssl=gnutls
314                ret=1;
315        else
316                ret=0;
317        fi;
318}
319
320detect_nss()
321{
322        if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG nss; then
323                cat<<EOF >>Makefile.settings
324EFLAGS+=`$PKG_CONFIG --libs nss`
325CFLAGS+=`$PKG_CONFIG --cflags nss`
326EOF
327               
328                ssl=nss
329                ret=1;
330        else
331                ret=0;
332        fi;
333}
334
335RESOLV_TESTCODE='
336#include <sys/types.h>
337#include <netinet/in.h>
338#include <arpa/nameser.h>
339#include <resolv.h>
340
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
355int main()
356{
357        ns_initparse( NULL, 0, NULL );
358        ns_parserr( NULL, ns_s_an, 0, NULL );
359}
360'
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'
375
376detect_resolv_dynamic()
377{
378        case "$arch" in
379        OpenBSD )
380                # In FreeBSD res_*/dn_* routines are present in libc.so
381                LIBRESOLV=;;
382        FreeBSD )
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
387                LIBRESOLV=;;
388        * )
389                LIBRESOLV=-lresolv;;
390        esac
391        TMPFILE=$(mktemp /tmp/bitlbee-configure.XXXXXX)
392        ret=1
393        echo "$RESOLV_TESTCODE" | $CC -o $TMPFILE -x c - $LIBRESOLV >/dev/null 2>/dev/null
394        if [ "$?" = "0" ]; then
395                echo "EFLAGS+=$LIBRESOLV" >> Makefile.settings
396                ret=0
397        fi
398
399        rm -f $TMPFILE
400        return $ret
401}
402
403detect_resolv_static()
404{
405        TMPFILE=$(mktemp /tmp/bitlbee-configure.XXXXXX)
406        ret=1
407        for i in $systemlibdirs; do
408                if [ -f $i/libresolv.a ]; then
409                        echo "$RESOLV_TESTCODE" | $CC -o $TMPFILE -x c - -Wl,$i/libresolv.a >/dev/null 2>/dev/null
410                        if [ "$?" = "0" ]; then
411                                echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings
412                                ret=0
413                        fi
414                fi
415        done
416
417        rm -f $TMPFILE
418        return $ret
419}
420
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
489if [ "$ssl" = "auto" ]; then
490        detect_gnutls
491        if [ "$ret" = "0" ]; then
492                # Disable NSS for now as it's known to not work very well ATM.
493                #detect_nss
494                :
495        fi
496elif [ "$ssl" = "gnutls" ]; then
497        detect_gnutls
498elif [ "$ssl" = "nss" ]; then
499        detect_nss
500elif [ "$ssl" = "sspi" ]; then
501        echo
502elif [ "$ssl" = "openssl" ]; then
503        echo
504        echo 'No detection code exists for OpenSSL. Make sure that you have a complete'
505        echo 'installation of OpenSSL (including devel/header files) before reporting'
506        echo 'compilation problems.'
507        echo
508        echo 'Also, keep in mind that the OpenSSL is, according to some people, not'
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.'
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'
518        echo 'package, you really should use GnuTLS instead.'
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/)"'
523       
524        echo 'EFLAGS+=-lssl -lcrypto' >> Makefile.settings
525       
526        ret=1
527else
528        echo
529        echo 'ERROR: Unknown SSL library specified.'
530        exit 1
531fi
532
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,'
537        echo '       so if you want to use that, you have to select it by hand.'
538       
539        exit 1
540fi;
541
542echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings
543
544if detect_nameser_has_ns_types; then
545        echo '#define NAMESER_HAS_NS_TYPES' >> config.h
546fi
547if detect_resolv_dynamic || detect_resolv_static; then
548        echo '#define HAVE_RESOLV_A' >> config.h
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'
554fi
555
556
557STORAGES="xml"
558
559for i in $STORAGES; do
560        STORAGE_OBJS="$STORAGE_OBJS storage_$i.o"
561done
562echo "STORAGE_OBJS="$STORAGE_OBJS >> Makefile.settings
563
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
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
595if [ "$gcov" = "1" ]; then
596        echo "CFLAGS+=--coverage" >> Makefile.settings
597        echo "EFLAGS+=--coverage" >> Makefile.settings
598fi
599
600if [ "$plugins" = 0 ]; then
601        plugindir=""
602        echo '#undef WITH_PLUGINS' >> config.h
603else
604        echo '#define WITH_PLUGINS' >> config.h
605fi
606
607otrprefix=""
608for i in / /usr /usr/local; do
609        if [ -f ${i}/lib/libotr.a ]; then
610                otrprefix=${i}
611                break
612        fi
613done
614if [ "$otr" = "auto" ]; then
615        if [ -n "$otrprefix" ]; then
616                otr=1
617        else
618                otr=0
619        fi
620fi
621if [ "$otr" = 1 ]; then
622        # BI == built-in
623        echo '#define OTR_BI' >> config.h
624        echo "EFLAGS+=-L${otrprefix}/lib -lotr" >> Makefile.settings
625        echo "CFLAGS+=-I${otrprefix}/include" >> Makefile.settings
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
632fi
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
639
640if [ "$skype" = "1" -o "$skype" = "plugin" ]; then
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
646        echo 'SKYPE_PI=skype.so' >> Makefile.settings
647        protocols_mods="$protocol_mods skype(plugin)"
648fi
649
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
656REAL_BITLBEE_VERSION=`grep '^#define BITLBEE_VERSION ' $srcdir/bitlbee.h | sed 's/.*\"\(.*\)\".*/\1/'`
657echo
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
665        rev=`bzr revno`
666        echo 'Using bzr revision #'$rev' as version number'
667        BITLBEE_VERSION=$REAL_BITLBEE_VERSION-bzr$nick-$rev
668fi
669
670if [ -n "$BITLBEE_VERSION" ]; then
671        echo 'Spoofing version number: '$BITLBEE_VERSION
672        echo '#undef BITLBEE_VERSION' >> config.h
673        echo '#define BITLBEE_VERSION "'$BITLBEE_VERSION'"' >> config.h
674        echo
675else
676        # for pkg-config
677        BITLBEE_VERSION=$REAL_BITLBEE_VERSION
678fi
679
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
694cat <<EOF >bitlbee.pc
695prefix=$prefix
696includedir=$includedir
697plugindir=$plugindir
698
699Name: bitlbee
700Description: IRC to IM gateway
701Requires: glib-2.0
702Version: $BITLBEE_VERSION
703Libs:
704Cflags: -I\${includedir}
705
706EOF
707
708protocols=''
709protoobjs=''
710
711if [ "$purple" = 0 ]; then
712        echo '#undef WITH_PURPLE' >> config.h
713else
714        if ! $PKG_CONFIG purple; then
715                echo
716                echo 'Cannot find libpurple development libraries, aborting. (Install libpurple-dev?)'
717                exit 1
718        fi
719        echo '#define WITH_PURPLE' >> config.h
720        cat<<EOF >>Makefile.settings
721EFLAGS += $($PKG_CONFIG purple --libs)
722PURPLE_CFLAGS += $($PKG_CONFIG purple --cflags)
723EOF
724        protocols=$protocols'purple '
725        protoobjs=$protoobjs'purple_mod.o '
726
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
732
733        echo '#undef PACKAGE' >> config.h
734        echo '#define PACKAGE "BitlBee-LIBPURPLE"' >> config.h
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!'
740                echo
741        fi
742fi
743
744case "$CC" in
745*gcc* )
746        echo CFLAGS+=-MMD -MF .depend/\$@.d >> Makefile.settings
747        for i in . lib tests protocols protocols/*/; do
748                mkdir -p $i/.depend
749        done
750esac
751
752if [ "$msn" = 0 ]; then
753        echo '#undef WITH_MSN' >> config.h
754else
755        echo '#define WITH_MSN' >> config.h
756        protocols=$protocols'msn '
757        protoobjs=$protoobjs'msn_mod.o '
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 '
765        protoobjs=$protoobjs'jabber_mod.o '
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 '
773        protoobjs=$protoobjs'oscar_mod.o '
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 '
781        protoobjs=$protoobjs'yahoo_mod.o '
782fi
783
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
792if [ "$protocols" = "PROTOCOLS = " ]; then
793        echo "Warning: You haven't selected any communication protocol to compile!"
794        echo "         BitlBee will run, but you will be unable to connect to IM servers!"
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 )
809        echo 'STRIP=\# skip strip' >> Makefile.settings
810;;
811IRIX )
812;;
813SunOS )
814        echo 'EFLAGS+=-lresolv -lnsl -lsocket' >> Makefile.settings
815        echo 'STRIP=\# skip strip' >> Makefile.settings
816        echo '#define NO_FD_PASSING' >> config.h
817;;
818AIX )
819        echo 'EFLAGS+=-Wl,-brtl' >> Makefile.settings
820;;
821CYGWIN* )
822        echo 'Cygwin is not officially supported.'
823;;
824Windows )
825;;
826* )
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/.'
829;;
830esac
831
832if [ -n "$target" ]; then
833        echo "Cross-compiling for: $target"
834fi
835
836echo
837echo 'Configuration done:'
838
839if [ "$debug" = "1" ]; then
840        echo '  Debugging enabled.'
841else
842        echo '  Debugging disabled.'
843fi
844
845if [ "$pie" = "1" ]; then
846        echo '  Building PIE executable'
847else
848        echo '  Building non-PIE executable'
849fi
850
851if [ "$strip" = "1" ]; then
852        echo '  Binary stripping enabled.'
853else
854        echo '  Binary stripping disabled.'
855fi
856
857if [ "$otr" = "1" ]; then
858        echo '  Off-the-Record (OTR) Messaging enabled.'
859elif [ "$otr" = "plugin" ]; then
860        echo '  Off-the-Record (OTR) Messaging enabled (as a plugin).'
861else
862        echo '  Off-the-Record (OTR) Messaging disabled.'
863fi
864
865if [ -n "$systemdsystemunitdir" ]; then
866        echo '  systemd enabled.'
867else
868        echo '  systemd disabled.'
869fi
870
871echo '  Using event handler: '$events
872echo '  Using SSL library: '$ssl
873#echo '  Building with these storage backends: '$STORAGES
874
875if [ -n "$protocols" ]; then
876        echo '  Building with these protocols:' $protocols$protocols_mods
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
883else
884        echo '  Building without IM-protocol support. We wish you a lot of fun...'
885fi
Note: See TracBrowser for help on using the repository browser.