source: configure @ 1d8cbc9

Last change on this file since 1d8cbc9 was 1d8cbc9, checked in by dequis <dx@…>, at 2015-05-31T05:48:40Z

configure: bsd sed doesn't support \+ without -r, use * instead

Tested in openbsd 5.6, which does have sed -r (unlike Mac OS X) but it
needs -r to recognize + at all.

The previous commit did fix enough to make it 'work' with the git
describe output as version string, the only problem was that the sed
didn't match in bsds and mac os x.

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