source: configure @ a19ea7a

Last change on this file since a19ea7a was e248c7f, checked in by Wilmer van der Gaast <wilmer@…>, at 2009-10-12T22:23:49Z

Automatically try prpl-$proto if $proto doesn't exist, and disable native
protocol modules if purple is enabled; they don't go together very well.

  • Property mode set to 100755
File size: 13.1 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/'
11bindir='$prefix/sbin/'
12etcdir='$prefix/etc/bitlbee/'
13mandir='$prefix/share/man/'
14datadir='$prefix/share/bitlbee/'
15config='/var/lib/bitlbee/'
[85cf37f]16plugindir='$prefix/lib/bitlbee/'
17includedir='$prefix/include/bitlbee/'
18libevent='/usr/'
[34b17d9]19pidfile='/var/run/bitlbee.pid'
[5c5a586]20ipcsocket='/var/run/bitlbee.sock'
[e506d6c]21pcdir='$prefix/lib/pkgconfig'
[1bf9492]22systemlibdirs="/lib /usr/lib /usr/local/lib"
[b7d3cc34]23
24msn=1
25jabber=1
26oscar=1
27yahoo=1
[796da03]28purple=0
[b7d3cc34]29
30debug=0
31strip=1
[66b9e86e]32gcov=0
[2abfbc5]33plugins=1
[85cf37f]34
35events=glib
[670204f]36ldap=0
[b7d3cc34]37ssl=auto
38
39arch=`uname -s`
40cpu=`uname -m`
41
[670204f]42GLIB_MIN_VERSION=2.4
43
[b7d3cc34]44echo BitlBee configure
45
46while [ -n "$1" ]; do
47        e="`expr "X$1" : 'X--\(.*=.*\)'`"
48        if [ -z "$e" ]; then
49                cat<<EOF
50
51Usage: $0 [OPTIONS]
52
53Option          Description                             Default
54
55--prefix=...    Directories to put files in             $prefix
56--bindir=...                                            $bindir
57--etcdir=...                                            $etcdir
58--mandir=...                                            $mandir
59--datadir=...                                           $datadir
[7b23afd]60--plugindir=...                                         $plugindir
[34b17d9]61--pidfile=...                                           $pidfile
[b7d3cc34]62--config=...                                            $config
[6dff9d4]63--ipcsocket=...                                         $ipcsocket
[b7d3cc34]64
65--msn=0/1       Disable/enable MSN part                 $msn
66--jabber=0/1    Disable/enable Jabber part              $jabber
67--oscar=0/1     Disable/enable Oscar part (ICQ, AIM)    $oscar
68--yahoo=0/1     Disable/enable Yahoo part               $yahoo
69
[796da03]70--purple=0/1    Disable/enable libpurple support        $purple
71
[b7d3cc34]72--debug=0/1     Disable/enable debugging                $debug
73--strip=0/1     Disable/enable binary stripping         $strip
[66b9e86e]74--gcov=0/1      Disable/enable test coverage reporting  $gcov
[2abfbc5]75--plugins=0/1   Disable/enable plugins support          $plugins
[b7d3cc34]76
[85cf37f]77--events=...    Event handler (glib, libevent)          $events
[b7d3cc34]78--ssl=...       SSL library to use (gnutls, nss, openssl, bogus, auto)
79                                                        $ssl
[aec56b0]80
[f1e7407]81--target=...    Cross compilation target                same as host
[b7d3cc34]82EOF
83                exit;
84        fi
85        eval "$e"
86        shift;
87done
88
89# Expand $prefix and get rid of double slashes
90bindir=`eval echo "$bindir/" | sed 's/\/\{1,\}/\//g'`
91etcdir=`eval echo "$etcdir/" | sed 's/\/\{1,\}/\//g'`
92mandir=`eval echo "$mandir/" | sed 's/\/\{1,\}/\//g'`
93datadir=`eval echo "$datadir/" | sed 's/\/\{1,\}/\//g'`
94config=`eval echo "$config/" | sed 's/\/\{1,\}/\//g'`
[7b23afd]95plugindir=`eval echo "$plugindir/" | sed 's/\/\{1,\}/\//g'`
[85cf37f]96includedir=`eval echo "$includedir"/ | sed 's/\/\{1,\}/\//g'`
97libevent=`eval echo "$libevent"/ | sed 's/\/\{1,\}/\//g'`
98
[6dff9d4]99pidfile=`eval echo "$pidfile" | sed 's/\/\{1,\}/\//g'`
100ipcsocket=`eval echo "$ipcsocket" | sed 's/\/\{1,\}/\//g'`
[e506d6c]101pcdir=`eval echo "$pcdir" | sed 's/\/\{1,\}/\//g'`
[b7d3cc34]102
103cat<<EOF>Makefile.settings
104## BitlBee settings, generated by configure
105PREFIX=$prefix
106BINDIR=$bindir
107ETCDIR=$etcdir
108MANDIR=$mandir
109DATADIR=$datadir
[7b23afd]110PLUGINDIR=$plugindir
[b7d3cc34]111CONFIG=$config
[e506d6c]112INCLUDEDIR=$includedir
113PCDIR=$pcdir
[b7d3cc34]114
[1bf9492]115TARGET=$target
[b7d3cc34]116ARCH=$arch
117CPU=$cpu
118
119DESTDIR=
120LFLAGS=
121EFLAGS=
122EOF
123
124cat<<EOF>config.h
125/* BitlBee settings, generated by configure
126   
127   Do *NOT* use any of these defines in your code without thinking twice, most
128   of them can/will be overridden at run-time */
129
130#define CONFIG "$config"
131#define ETCDIR "$etcdir"
132#define VARDIR "$datadir"
[7b23afd]133#define PLUGINDIR "$plugindir"
[34b17d9]134#define PIDFILE "$pidfile"
[6dff9d4]135#define IPCSOCKET "$ipcsocket"
[b7d3cc34]136#define ARCH "$arch"
137#define CPU "$cpu"
138EOF
139
[1bf9492]140
141
[f1e7407]142if [ -n "$target" ]; then
[1bf9492]143        PKG_CONFIG_LIBDIR=/usr/$target/lib/pkgconfig
144        export PKG_CONFIG_LIBDIR
[f1e7407]145        PATH=/usr/$target/bin:$PATH
146        CC=$target-cc
147        LD=$target-ld
[1bf9492]148        systemlibdirs="/usr/$target/lib"
[f1e7407]149fi
150
[1bf9492]151
[b7d3cc34]152if [ "$debug" = "1" ]; then
[285b55d]153        [ -z "$CFLAGS" ] && CFLAGS=-g
[b7d3cc34]154        echo 'DEBUG=1' >> Makefile.settings
[911cc4f]155        CFLAGS="$CFLAGS -DDEBUG"
[b7d3cc34]156else
[56f260a]157        [ -z "$CFLAGS" ] && CFLAGS="-O2 -fno-strict-aliasing"
[b7d3cc34]158fi
159
[285b55d]160echo CFLAGS=$CFLAGS >> Makefile.settings
[df1694b]161echo CFLAGS+=-I`pwd` -I`pwd`/lib -I`pwd`/protocols -I. >> Makefile.settings
[b7d3cc34]162
[f712188]163echo CFLAGS+=-DHAVE_CONFIG_H >> Makefile.settings
164
[b7d3cc34]165if [ -n "$CC" ]; then
[5973412]166        CC=$CC
[b7d3cc34]167elif type gcc > /dev/null 2> /dev/null; then
[5973412]168        CC=gcc
[b7d3cc34]169elif type cc > /dev/null 2> /dev/null; then
[5973412]170        CC=cc
[b7d3cc34]171else
172        echo 'Cannot find a C compiler, aborting.'
173        exit 1;
174fi
175
[5973412]176echo "CC=$CC" >> Makefile.settings;
177
[f1e7407]178if [ -z "$LD" ]; then
179        if type ld > /dev/null 2> /dev/null; then
180                LD=ld
181        else
182                echo 'Cannot find ld, aborting.'
183                exit 1;
184        fi
[b7d3cc34]185fi
186
[f1e7407]187echo "LD=$LD" >> Makefile.settings
188
[32c632f]189if [ -z "$PKG_CONFIG" ]; then
190        PKG_CONFIG=pkg-config
191fi
192
193if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG glib-2.0; then
[670204f]194        if $PKG_CONFIG glib-2.0 --atleast-version=$GLIB_MIN_VERSION; then
195                cat<<EOF>>Makefile.settings
[32c632f]196EFLAGS+=`$PKG_CONFIG --libs glib-2.0 gmodule-2.0`
197CFLAGS+=`$PKG_CONFIG --cflags glib-2.0 gmodule-2.0`
[b7d3cc34]198EOF
[670204f]199        else
200                echo
201                echo 'Found glib2 '`$PKG_CONFIG glib-2.0 --modversion`', but version '$GLIB_MIN_VERSION' or newer is required.'
202                exit 1
203        fi
[b7d3cc34]204else
[670204f]205        echo
[574af7e]206        echo 'Cannot find glib2 development libraries, aborting. (Install libglib2-dev?)'
[670204f]207        exit 1
[b7d3cc34]208fi
209
[85cf37f]210if [ "$events" = "libevent" ]; then
[003553b]211        if ! [ -f "${libevent}include/event.h" ]; then
[85cf37f]212                echo
213                echo 'Warning: Could not find event.h, you might have to install it and/or specify'
214                echo 'its location using the --libevent= argument. (Example: If event.h is in'
215                echo '/usr/local/include and binaries are in /usr/local/lib: --libevent=/usr/local)'
216        fi
217       
218        echo '#define EVENTS_LIBEVENT' >> config.h
219        cat <<EOF>>Makefile.settings
220EFLAGS+=-levent -L${libevent}lib
221CFLAGS+=-I${libevent}include
222EOF
223elif [ "$events" = "glib" ]; then
224        ## We already use glib anyway, so this is all we need (and in fact not even this, but just to be sure...):
225        echo '#define EVENTS_GLIB' >> config.h
[b7d3cc34]226else
227        echo
[85cf37f]228        echo 'ERROR: Unknown event handler specified.'
229        exit 1
[b7d3cc34]230fi
[85cf37f]231echo 'EVENT_HANDLER=events_'$events'.o' >> Makefile.settings
[b7d3cc34]232
233detect_gnutls()
234{
[4af7b4f]235        if $PKG_CONFIG --exists gnutls; then
236                cat <<EOF>>Makefile.settings
237EFLAGS+=`$PKG_CONFIG --libs gnutls`
238CFLAGS+=`$PKG_CONFIG --cflags gnutls`
239EOF
240                ssl=gnutls
241                ret=1
242        elif libgnutls-config --version > /dev/null 2> /dev/null; then
[b7d3cc34]243                cat <<EOF>>Makefile.settings
244EFLAGS+=`libgnutls-config --libs`
245CFLAGS+=`libgnutls-config --cflags`
246EOF
247               
248                ssl=gnutls
249                ret=1;
250        else
251                ret=0;
252        fi;
253}
254
255detect_nss()
256{
[32c632f]257        if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG mozilla-nss; then
[b7d3cc34]258                cat<<EOF>>Makefile.settings
[32c632f]259EFLAGS+=`$PKG_CONFIG --libs mozilla-nss`
260CFLAGS+=`$PKG_CONFIG --cflags mozilla-nss`
[b7d3cc34]261EOF
262               
263                ssl=nss
264                ret=1;
265        else
266                ret=0;
267        fi;
268}
269
[f32d557]270detect_ldap()
[f665dab]271{
[5973412]272        TMPFILE=`mktemp`
273        if $CC -o $TMPFILE -shared -lldap 2>/dev/null >/dev/null; then
[f665dab]274                cat<<EOF>>Makefile.settings
[5973412]275EFLAGS+=-lldap
276CFLAGS+=
[f665dab]277EOF
[f32d557]278                ldap=1
[5973412]279                rm -f $TMPFILE
[f665dab]280                ret=1
[b7d3cc34]281        else
[5973412]282                ldap=0
[f665dab]283                ret=0
[b7d3cc34]284        fi
[f665dab]285}
286
[b3c467b]287if [ "$ssl" = "auto" ]; then
288        detect_gnutls
[b7d3cc34]289        if [ "$ret" = "0" ]; then
[b3c467b]290                detect_nss
[b7d3cc34]291        fi
[b3c467b]292elif [ "$ssl" = "gnutls" ]; then
293        detect_gnutls
294elif [ "$ssl" = "nss" ]; then
295        detect_nss
[85d7b85]296elif [ "$ssl" = "sspi" ]; then
297        echo
[b3c467b]298elif [ "$ssl" = "openssl" ]; then
299        echo
300        echo 'No detection code exists for OpenSSL. Make sure that you have a complete'
301        echo 'install of OpenSSL (including devel/header files) before reporting'
302        echo 'compilation problems.'
303        echo
304        echo 'Also, keep in mind that the OpenSSL is, according to some people, not'
305        echo 'completely GPL-compatible. Using GnuTLS or NSS is recommended and better'
306        echo 'supported by us. However, on many BSD machines, OpenSSL can be considered'
307        echo 'part of the operating system, which makes it GPL-compatible.'
308        echo
309        echo 'For more info, see: http://www.openssl.org/support/faq.html#LEGAL2'
310        echo '                    http://www.gnome.org/~markmc/openssl-and-the-gpl.html'
311        echo
312        echo 'Please note that distributing a BitlBee binary which links to OpenSSL is'
313        echo 'probably illegal. If you want to create and distribute a binary BitlBee'
314        echo 'package, you really should use GnuTLS or NSS instead.'
315        echo
316        echo 'Also, the OpenSSL license requires us to say this:'
317        echo ' *    "This product includes software developed by the OpenSSL Project'
318        echo ' *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"'
[b7d3cc34]319       
[b3c467b]320        echo 'EFLAGS+=-lssl -lcrypto' >> Makefile.settings
321       
322        ret=1
323elif [ "$ssl" = "bogus" ]; then
324        echo
[670204f]325        echo 'Using bogus SSL code. This means some features will not work properly.'
[b3c467b]326       
327        ## Yes, you, at the console! How can you authenticate if you don't have any SSL!?
328        if [ "$msn" = "1" ]; then
[b7d3cc34]329                echo
[b3c467b]330                echo 'Real SSL support is necessary for MSN authentication, will build without'
331                echo 'MSN protocol support.'
332                msn=0
333        fi
[b7d3cc34]334       
[b3c467b]335        ret=1
336else
337        echo
338        echo 'ERROR: Unknown SSL library specified.'
339        exit 1
[b7d3cc34]340fi
341
[b3c467b]342if [ "$ret" = "0" ]; then
343        echo
344        echo 'ERROR: Could not find a suitable SSL library (GnuTLS, libnss or OpenSSL).'
345        echo '       Please note that this script doesn'\''t have detection code for OpenSSL,'
346        echo '       so if you want to use that, you have to select it by hand. If you don'\''t'
347        echo '       need SSL support, you can select the "bogus" SSL library. (--ssl=bogus)'
[b7d3cc34]348       
[b3c467b]349        exit 1
350fi;
351
352echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings
353
[1bf9492]354for i in $systemlibdirs; do
[003553b]355        if [ -f $i/libresolv.a ]; then
[36e9f62]356                echo '#define HAVE_RESOLV_A' >> config.h
357                echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings
358                break
359        fi
360done
361
[b3c467b]362STORAGES="text xml"
363
[f32d557]364if [ "$ldap" = "auto" ]; then
365        detect_ldap
[b7d3cc34]366fi
367
[f32d557]368if [ "$ldap" = 0 ]; then
[5973412]369        echo "#undef WITH_LDAP" >> config.h
[f32d557]370elif [ "$ldap" = 1 ]; then
[5c5a586]371        echo
372        echo 'LDAP support is a work in progress and does NOT work AT ALL right now.'
373        echo
374        exit 1
375       
[5973412]376        echo "#define WITH_LDAP 1" >> config.h
[b3c467b]377        STORAGES="$STORAGES ldap"
[b7d3cc34]378fi
379
[b3c467b]380for i in $STORAGES; do
381        STORAGE_OBJS="$STORAGE_OBJS storage_$i.o"
382done
383echo "STORAGE_OBJS="$STORAGE_OBJS >> Makefile.settings
384
[b7d3cc34]385if [ "$strip" = 0 ]; then
386        echo "STRIP=\# skip strip" >> Makefile.settings;
387else
388        if [ "$debug" = 1 ]; then
389                echo
390                echo 'Stripping binaries does not make sense when debugging. Stripping disabled.'
391                echo 'STRIP=\# skip strip' >> Makefile.settings
392                strip=0;
393        elif [ -n "$STRIP" ]; then
394                echo "STRIP=$STRIP" >> Makefile.settings;
395        elif type strip > /dev/null 2> /dev/null; then
396                echo "STRIP=strip" >> Makefile.settings;
397        else
398                echo
399                echo 'No strip utility found, cannot remove unnecessary parts from executable.'
400                echo 'STRIP=\# skip strip' >> Makefile.settings
401                strip=0;
402        fi;
403fi
404
[66b9e86e]405if [ "$gcov" = "1" ]; then
[31fc3970]406        echo "CFLAGS+=--coverage" >> Makefile.settings
407        echo "EFLAGS+=--coverage" >> Makefile.settings
[66b9e86e]408fi
409
[2abfbc5]410if [ "$plugins" = 0 ]; then
411        echo '#undef WITH_PLUGINS' >> config.h
412else
413        echo '#define WITH_PLUGINS' >> config.h
414fi
415
[ffea9b9]416echo
[a014331]417if [ -z "$BITLBEE_VERSION" -a -d .bzr ] && type bzr > /dev/null 2> /dev/null; then
418        nick=`bzr nick`
419        if [ -n "$nick" -a "$nick" != "bitlbee" ]; then
420                nick="-$nick"
421        else
422                nick=""
423        fi
[ffea9b9]424        rev=`bzr revno`
425        echo 'Using bzr revision #'$rev' as version number'
[a014331]426        BITLBEE_VERSION=\"bzr$nick-$rev\"
[b7d3cc34]427fi
428
429if [ -n "$BITLBEE_VERSION" ]; then
430        echo 'Spoofing version number: '$BITLBEE_VERSION
431        echo '#undef BITLBEE_VERSION' >> config.h
[ffea9b9]432        echo '#define BITLBEE_VERSION '$BITLBEE_VERSION >> config.h
433        echo
[b7d3cc34]434fi
435
[e506d6c]436cat <<EOF>bitlbee.pc
437prefix=$prefix
438includedir=$includedir
439
440Name: bitlbee
441Description: IRC to IM gateway
442Requires: glib-2.0
443Version: $BITLBEE_VERSION
444Libs:
445Cflags: -I\${includedir}
446
447EOF
448
[b7d3cc34]449protocols=''
450protoobjs=''
451
[e248c7f]452if [ "$purple" = 0 ]; then
453        echo '#undef WITH_PURPLE' >> config.h
454else
455        echo '#define WITH_PURPLE' >> config.h
456        echo 'EFLAGS += $$(pkg-config purple --libs)' >> Makefile.settings
457        protocols=$protocols'purple '
458        protoobjs=$protoobjs'purple_mod.o '
459
460        # Having both libpurple and native IM modules in one binary may
461        # do strange things. Let's not do that.
462        msn=0
463        jabber=0
464        oscar=0
465        yahoo=0
466fi
467
[b7d3cc34]468if [ "$msn" = 0 ]; then
469        echo '#undef WITH_MSN' >> config.h
470else
471        echo '#define WITH_MSN' >> config.h
472        protocols=$protocols'msn '
[b5a22e3]473        protoobjs=$protoobjs'msn_mod.o '
[b7d3cc34]474fi
475
476if [ "$jabber" = 0 ]; then
477        echo '#undef WITH_JABBER' >> config.h
478else
479        echo '#define WITH_JABBER' >> config.h
480        protocols=$protocols'jabber '
[b5a22e3]481        protoobjs=$protoobjs'jabber_mod.o '
[b7d3cc34]482fi
483
484if [ "$oscar" = 0 ]; then
485        echo '#undef WITH_OSCAR' >> config.h
486else
487        echo '#define WITH_OSCAR' >> config.h
488        protocols=$protocols'oscar '
[b5a22e3]489        protoobjs=$protoobjs'oscar_mod.o '
[b7d3cc34]490fi
491
492if [ "$yahoo" = 0 ]; then
493        echo '#undef WITH_YAHOO' >> config.h
494else
495        echo '#define WITH_YAHOO' >> config.h
496        protocols=$protocols'yahoo '
[b5a22e3]497        protoobjs=$protoobjs'yahoo_mod.o '
[b7d3cc34]498fi
499
500if [ "$protocols" = "PROTOCOLS = " ]; then
[43462708]501        echo "Warning: You haven't selected any communication protocol to compile!"
[b3c467b]502        echo "         BitlBee will run, but you will be unable to connect to IM servers!"
[b7d3cc34]503fi
504
505echo "PROTOCOLS = $protocols" >> Makefile.settings
506echo "PROTOOBJS = $protoobjs" >> Makefile.settings
507
508echo Architecture: $arch
509case "$arch" in
510Linux )
511;;
512GNU/* )
513;;
514*BSD )
515;;
516Darwin )
517;;
518IRIX )
519;;
520SunOS )
521        echo 'EFLAGS+=-lresolv -lnsl -lsocket' >> Makefile.settings
522        echo 'STRIP=\# skip strip' >> Makefile.settings
523;;
[8de63c3]524AIX )
525        echo 'EFLAGS+=-Wl,-brtl' >> Makefile.settings
[b7d3cc34]526;;
527CYGWIN* )
528        echo 'Cygwin is not officially supported.'
529;;
[aec56b0]530Windows )
531;;
[b7d3cc34]532* )
[8d6c4b1]533        echo 'We haven'\''t tested BitlBee on many platforms yet, yours is untested. YMMV.'
534        echo 'Please report any problems at http://bugs.bitlbee.org/.'
[b7d3cc34]535;;
536esac
537
[f1e7407]538if [ -n "$target" ]; then
539        echo "Cross-compiling for: $target"
540fi
541
[b7d3cc34]542echo
543echo 'Configuration done:'
544
545if [ "$debug" = "1" ]; then
[b3c467b]546        echo '  Debugging enabled.'
[b7d3cc34]547else
[b3c467b]548        echo '  Debugging disabled.'
[b7d3cc34]549fi
550
551if [ "$strip" = "1" ]; then
[b3c467b]552        echo '  Binary stripping enabled.'
[b7d3cc34]553else
[b3c467b]554        echo '  Binary stripping disabled.'
[b7d3cc34]555fi
556
[b3c467b]557echo '  Using event handler: '$events
558echo '  Using SSL library: '$ssl
559echo '  Building with these storage backends: '$STORAGES
[b7d3cc34]560
561if [ -n "$protocols" ]; then
[b3c467b]562        echo '  Building with these protocols:' $protocols
[b7d3cc34]563else
[b3c467b]564        echo '  Building without IM-protocol support. We wish you a lot of fun...'
[b7d3cc34]565fi
Note: See TracBrowser for help on using the repository browser.