source: configure @ f66425d

Last change on this file since f66425d was 2f8e3ca, checked in by dequis <dx@…>, at 2015-11-21T18:02:10Z

Show ./configure args in bitlbee -V, config.h and Makefile.settings

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