source: configure @ 92a9c68

Last change on this file since 92a9c68 was 123cac7, checked in by Wilmer van der Gaast <wilmer@…>, at 2010-04-07T19:40:39Z

Merging Twitter support.

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