source: configure @ b5b40ff

Last change on this file since b5b40ff was 81ee561, checked in by Wilmer van der Gaast <wilmer@…>, at 2010-03-20T18:03:18Z

Merging head. Most changes are not so relevant because they're to IM
modules.

  • Property mode set to 100755
File size: 14.3 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/sbin/'
12etcdir='$prefix/etc/bitlbee/'
13mandir='$prefix/share/man/'
14datadir='$prefix/share/bitlbee/'
15config='/var/lib/bitlbee/'
16plugindir='$prefix/lib/bitlbee/'
17includedir='$prefix/include/bitlbee/'
18libevent='/usr/'
19pidfile='/var/run/bitlbee.pid'
20ipcsocket='/var/run/bitlbee.sock'
21pcdir='$prefix/lib/pkgconfig'
22systemlibdirs="/lib /lib64 /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64"
23
24msn=1
25jabber=1
26oscar=1
27yahoo=1
28purple=0
29
30debug=0
31strip=1
32gcov=0
33plugins=1
34
35events=glib
36ldap=0
37ssl=auto
38
39arch=`uname -s`
40cpu=`uname -m`
41
42GLIB_MIN_VERSION=2.4
43
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
60--plugindir=...                                         $plugindir
61--pidfile=...                                           $pidfile
62--config=...                                            $config
63--ipcsocket=...                                         $ipcsocket
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
70--purple=0/1    Disable/enable libpurple support        $purple
71
72--debug=0/1     Disable/enable debugging                $debug
73--strip=0/1     Disable/enable binary stripping         $strip
74--gcov=0/1      Disable/enable test coverage reporting  $gcov
75--plugins=0/1   Disable/enable plugins support          $plugins
76
77--events=...    Event handler (glib, libevent)          $events
78--ssl=...       SSL library to use (gnutls, nss, openssl, bogus, auto)
79                                                        $ssl
80
81--target=...    Cross compilation target                same as host
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'`
95plugindir=`eval echo "$plugindir/" | sed 's/\/\{1,\}/\//g'`
96includedir=`eval echo "$includedir"/ | sed 's/\/\{1,\}/\//g'`
97libevent=`eval echo "$libevent"/ | sed 's/\/\{1,\}/\//g'`
98
99pidfile=`eval echo "$pidfile" | sed 's/\/\{1,\}/\//g'`
100ipcsocket=`eval echo "$ipcsocket" | sed 's/\/\{1,\}/\//g'`
101pcdir=`eval echo "$pcdir" | sed 's/\/\{1,\}/\//g'`
102
103cat<<EOF>Makefile.settings
104## BitlBee settings, generated by configure
105PREFIX=$prefix
106BINDIR=$bindir
107ETCDIR=$etcdir
108MANDIR=$mandir
109DATADIR=$datadir
110PLUGINDIR=$plugindir
111CONFIG=$config
112INCLUDEDIR=$includedir
113PCDIR=$pcdir
114
115TARGET=$target
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"
133#define PLUGINDIR "$plugindir"
134#define PIDFILE "$pidfile"
135#define IPCSOCKET "$ipcsocket"
136#define ARCH "$arch"
137#define CPU "$cpu"
138EOF
139
140
141
142if [ -n "$target" ]; then
143        PKG_CONFIG_LIBDIR=/usr/$target/lib/pkgconfig
144        export PKG_CONFIG_LIBDIR
145        PATH=/usr/$target/bin:$PATH
146        CC=$target-cc
147        LD=$target-ld
148        systemlibdirs="/usr/$target/lib"
149fi
150
151
152if [ "$debug" = "1" ]; then
153        [ -z "$CFLAGS" ] && CFLAGS=-g
154        echo 'DEBUG=1' >> Makefile.settings
155        CFLAGS="$CFLAGS -DDEBUG"
156else
157        [ -z "$CFLAGS" ] && CFLAGS="-O2 -fno-strict-aliasing"
158fi
159
160echo CFLAGS=$CFLAGS >> Makefile.settings
161echo CFLAGS+=-I`pwd` -I`pwd`/lib -I`pwd`/protocols -I. >> Makefile.settings
162
163echo CFLAGS+=-DHAVE_CONFIG_H >> Makefile.settings
164
165if [ -n "$CC" ]; then
166        CC=$CC
167elif type gcc > /dev/null 2> /dev/null; then
168        CC=gcc
169elif type cc > /dev/null 2> /dev/null; then
170        CC=cc
171else
172        echo 'Cannot find a C compiler, aborting.'
173        exit 1;
174fi
175
176echo "CC=$CC" >> Makefile.settings;
177
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
185fi
186
187echo "LD=$LD" >> Makefile.settings
188
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
194        if $PKG_CONFIG glib-2.0 --atleast-version=$GLIB_MIN_VERSION; then
195                cat<<EOF>>Makefile.settings
196EFLAGS+=`$PKG_CONFIG --libs glib-2.0 gmodule-2.0`
197CFLAGS+=`$PKG_CONFIG --cflags glib-2.0 gmodule-2.0`
198EOF
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
204else
205        echo
206        echo 'Cannot find glib2 development libraries, aborting. (Install libglib2-dev?)'
207        exit 1
208fi
209
210if [ "$events" = "libevent" ]; then
211        if ! [ -f "${libevent}include/event.h" ]; then
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
226else
227        echo
228        echo 'ERROR: Unknown event handler specified.'
229        exit 1
230fi
231echo 'EVENT_HANDLER=events_'$events'.o' >> Makefile.settings
232
233detect_gnutls()
234{
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
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{
257        if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG mozilla-nss; then
258                cat<<EOF>>Makefile.settings
259EFLAGS+=`$PKG_CONFIG --libs mozilla-nss`
260CFLAGS+=`$PKG_CONFIG --cflags mozilla-nss`
261EOF
262               
263                ssl=nss
264                ret=1;
265        else
266                ret=0;
267        fi;
268}
269
270detect_ldap()
271{
272        TMPFILE=$(mktemp)
273        if $CC -o $TMPFILE -shared -lldap 2>/dev/null >/dev/null; then
274                cat<<EOF>>Makefile.settings
275EFLAGS+=-lldap
276CFLAGS+=
277EOF
278                ldap=1
279                rm -f $TMPFILE
280                ret=1
281        else
282                ldap=0
283                ret=0
284        fi
285}
286
287RESOLV_TESTCODE='
288#include <arpa/nameser.h>
289#include <resolv.h>
290
291int main()
292{
293        ns_initparse( NULL, 0, NULL );
294        ns_parserr( NULL, ns_s_an, 0, NULL );
295}
296'
297
298detect_resolv_dynamic()
299{
300        TMPFILE=$(mktemp)
301        ret=1
302        echo "$RESOLV_TESTCODE" | $CC -o $TMPFILE -x c - -lresolv >/dev/null 2>/dev/null
303        if [ "$?" = "0" ]; then
304                echo 'EFLAGS+=-lresolv' >> Makefile.settings
305                ret=0
306        fi
307
308        rm -f $TMPFILE
309        return $ret
310}
311
312detect_resolv_static()
313{
314        TMPFILE=$(mktemp)
315        ret=1
316        for i in $systemlibdirs; do
317                if [ -f $i/libresolv.a ]; then
318                        echo "$RESOLV_TESTCODE" | $CC -o $TMPFILE -x c - -Wl,$i/libresolv.a >/dev/null 2>/dev/null
319                        if [ "$?" = "0" ]; then
320                                echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings
321                                ret=0
322                        fi
323                fi
324        done
325
326        rm -f $TMPFILE
327        return $ret
328}
329
330if [ "$ssl" = "auto" ]; then
331        detect_gnutls
332        if [ "$ret" = "0" ]; then
333                detect_nss
334        fi
335elif [ "$ssl" = "gnutls" ]; then
336        detect_gnutls
337elif [ "$ssl" = "nss" ]; then
338        detect_nss
339elif [ "$ssl" = "sspi" ]; then
340        echo
341elif [ "$ssl" = "openssl" ]; then
342        echo
343        echo 'No detection code exists for OpenSSL. Make sure that you have a complete'
344        echo 'install of OpenSSL (including devel/header files) before reporting'
345        echo 'compilation problems.'
346        echo
347        echo 'Also, keep in mind that the OpenSSL is, according to some people, not'
348        echo 'completely GPL-compatible. Using GnuTLS or NSS is recommended and better'
349        echo 'supported by us. However, on many BSD machines, OpenSSL can be considered'
350        echo 'part of the operating system, which makes it GPL-compatible.'
351        echo
352        echo 'For more info, see: http://www.openssl.org/support/faq.html#LEGAL2'
353        echo '                    http://www.gnome.org/~markmc/openssl-and-the-gpl.html'
354        echo
355        echo 'Please note that distributing a BitlBee binary which links to OpenSSL is'
356        echo 'probably illegal. If you want to create and distribute a binary BitlBee'
357        echo 'package, you really should use GnuTLS or NSS instead.'
358        echo
359        echo 'Also, the OpenSSL license requires us to say this:'
360        echo ' *    "This product includes software developed by the OpenSSL Project'
361        echo ' *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"'
362       
363        echo 'EFLAGS+=-lssl -lcrypto' >> Makefile.settings
364       
365        ret=1
366elif [ "$ssl" = "bogus" ]; then
367        echo
368        echo 'Using bogus SSL code. This means some features will not work properly.'
369       
370        ## Yes, you, at the console! How can you authenticate if you don't have any SSL!?
371        if [ "$msn" = "1" -o "$yahoo" = "1" ]; then
372                echo
373                echo 'WARNING: The MSN and Yahoo! modules will not work without SSL. Disabling.'
374                msn=0
375                yahoo=0
376        fi
377       
378        ret=1
379else
380        echo
381        echo 'ERROR: Unknown SSL library specified.'
382        exit 1
383fi
384
385if [ "$ret" = "0" ]; then
386        echo
387        echo 'ERROR: Could not find a suitable SSL library (GnuTLS, libnss or OpenSSL).'
388        echo '       Please note that this script doesn'\''t have detection code for OpenSSL,'
389        echo '       so if you want to use that, you have to select it by hand. If you don'\''t'
390        echo '       need SSL support, you can select the "bogus" SSL library. (--ssl=bogus)'
391       
392        exit 1
393fi;
394
395echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings
396
397if detect_resolv_dynamic || detect_resolv_static; then
398        echo '#define HAVE_RESOLV_A' >> config.h
399fi
400
401STORAGES="text xml"
402
403if [ "$ldap" = "auto" ]; then
404        detect_ldap
405fi
406
407if [ "$ldap" = 0 ]; then
408        echo "#undef WITH_LDAP" >> config.h
409elif [ "$ldap" = 1 ]; then
410        echo
411        echo 'LDAP support is a work in progress and does NOT work AT ALL right now.'
412        echo
413        exit 1
414       
415        echo "#define WITH_LDAP 1" >> config.h
416        STORAGES="$STORAGES ldap"
417fi
418
419for i in $STORAGES; do
420        STORAGE_OBJS="$STORAGE_OBJS storage_$i.o"
421done
422echo "STORAGE_OBJS="$STORAGE_OBJS >> Makefile.settings
423
424if [ "$strip" = 0 ]; then
425        echo "STRIP=\# skip strip" >> Makefile.settings;
426else
427        if [ "$debug" = 1 ]; then
428                echo
429                echo 'Stripping binaries does not make sense when debugging. Stripping disabled.'
430                echo 'STRIP=\# skip strip' >> Makefile.settings
431                strip=0;
432        elif [ -n "$STRIP" ]; then
433                echo "STRIP=$STRIP" >> Makefile.settings;
434        elif type strip > /dev/null 2> /dev/null; then
435                echo "STRIP=strip" >> Makefile.settings;
436        else
437                echo
438                echo 'No strip utility found, cannot remove unnecessary parts from executable.'
439                echo 'STRIP=\# skip strip' >> Makefile.settings
440                strip=0;
441        fi;
442fi
443
444if [ "$gcov" = "1" ]; then
445        echo "CFLAGS+=--coverage" >> Makefile.settings
446        echo "EFLAGS+=--coverage" >> Makefile.settings
447fi
448
449if [ "$plugins" = 0 ]; then
450        echo '#undef WITH_PLUGINS' >> config.h
451else
452        echo '#define WITH_PLUGINS' >> config.h
453fi
454
455if [ ! -e doc/user-guide/help.txt ] && ! type xmlto > /dev/null 2> /dev/null; then
456        echo
457        echo 'WARNING: Building from an unreleased source tree without prebuilt helpfile.'
458        echo 'Install xmlto if you want online help to work.'
459fi
460
461echo
462if [ -z "$BITLBEE_VERSION" -a -d .bzr ] && type bzr > /dev/null 2> /dev/null; then
463        nick=`bzr nick`
464        if [ -n "$nick" -a "$nick" != "bitlbee" ]; then
465                nick="-$nick"
466        else
467                nick=""
468        fi
469        rev=`bzr revno`
470        echo 'Using bzr revision #'$rev' as version number'
471        BITLBEE_VERSION=\"bzr$nick-$rev\"
472fi
473
474if [ -n "$BITLBEE_VERSION" ]; then
475        echo 'Spoofing version number: '$BITLBEE_VERSION
476        echo '#undef BITLBEE_VERSION' >> config.h
477        echo '#define BITLBEE_VERSION '$BITLBEE_VERSION >> config.h
478        echo
479fi
480
481cat <<EOF>bitlbee.pc
482prefix=$prefix
483includedir=$includedir
484
485Name: bitlbee
486Description: IRC to IM gateway
487Requires: glib-2.0
488Version: $BITLBEE_VERSION
489Libs:
490Cflags: -I\${includedir}
491
492EOF
493
494protocols=''
495protoobjs=''
496
497if [ "$purple" = 0 ]; then
498        echo '#undef WITH_PURPLE' >> config.h
499else
500        if ! $PKG_CONFIG purple; then
501                echo
502                echo 'Cannot find libpurple development libraries, aborting. (Install libpurple-dev?)'
503                exit 1
504        fi
505        echo '#define WITH_PURPLE' >> config.h
506        cat<<EOF>>Makefile.settings
507EFLAGS += $($PKG_CONFIG purple --libs)
508PURPLE_CFLAGS += $($PKG_CONFIG purple --cflags)
509EOF
510        protocols=$protocols'purple '
511        protoobjs=$protoobjs'purple_mod.o '
512
513        # Having both libpurple and native IM modules in one binary may
514        # do strange things. Let's not do that.
515        msn=0
516        jabber=0
517        oscar=0
518        yahoo=0
519fi
520
521if [ "$msn" = 0 ]; then
522        echo '#undef WITH_MSN' >> config.h
523else
524        echo '#define WITH_MSN' >> config.h
525        protocols=$protocols'msn '
526        protoobjs=$protoobjs'msn_mod.o '
527fi
528
529if [ "$jabber" = 0 ]; then
530        echo '#undef WITH_JABBER' >> config.h
531else
532        echo '#define WITH_JABBER' >> config.h
533        protocols=$protocols'jabber '
534        protoobjs=$protoobjs'jabber_mod.o '
535fi
536
537if [ "$oscar" = 0 ]; then
538        echo '#undef WITH_OSCAR' >> config.h
539else
540        echo '#define WITH_OSCAR' >> config.h
541        protocols=$protocols'oscar '
542        protoobjs=$protoobjs'oscar_mod.o '
543fi
544
545if [ "$yahoo" = 0 ]; then
546        echo '#undef WITH_YAHOO' >> config.h
547else
548        echo '#define WITH_YAHOO' >> config.h
549        protocols=$protocols'yahoo '
550        protoobjs=$protoobjs'yahoo_mod.o '
551fi
552
553if [ "$protocols" = "PROTOCOLS = " ]; then
554        echo "Warning: You haven't selected any communication protocol to compile!"
555        echo "         BitlBee will run, but you will be unable to connect to IM servers!"
556fi
557
558echo "PROTOCOLS = $protocols" >> Makefile.settings
559echo "PROTOOBJS = $protoobjs" >> Makefile.settings
560
561echo Architecture: $arch
562case "$arch" in
563Linux )
564;;
565GNU/* )
566;;
567*BSD )
568;;
569Darwin )
570        echo 'STRIP=\# skip strip' >> Makefile.settings
571;;
572IRIX )
573;;
574SunOS )
575        echo 'EFLAGS+=-lresolv -lnsl -lsocket' >> Makefile.settings
576        echo 'STRIP=\# skip strip' >> Makefile.settings
577;;
578AIX )
579        echo 'EFLAGS+=-Wl,-brtl' >> Makefile.settings
580;;
581CYGWIN* )
582        echo 'Cygwin is not officially supported.'
583;;
584Windows )
585;;
586* )
587        echo 'We haven'\''t tested BitlBee on many platforms yet, yours is untested. YMMV.'
588        echo 'Please report any problems at http://bugs.bitlbee.org/.'
589;;
590esac
591
592if [ -n "$target" ]; then
593        echo "Cross-compiling for: $target"
594fi
595
596echo
597echo 'Configuration done:'
598
599if [ "$debug" = "1" ]; then
600        echo '  Debugging enabled.'
601else
602        echo '  Debugging disabled.'
603fi
604
605if [ "$strip" = "1" ]; then
606        echo '  Binary stripping enabled.'
607else
608        echo '  Binary stripping disabled.'
609fi
610
611echo '  Using event handler: '$events
612echo '  Using SSL library: '$ssl
613echo '  Building with these storage backends: '$STORAGES
614
615if [ -n "$protocols" ]; then
616        echo '  Building with these protocols:' $protocols
617else
618        echo '  Building without IM-protocol support. We wish you a lot of fun...'
619fi
Note: See TracBrowser for help on using the repository browser.