source: configure @ 3330468

Last change on this file since 3330468 was 3330468, checked in by Wilmer van der Gaast <wilmer@…>, at 2010-03-14T23:15:05Z

Merging in head.

  • Property mode set to 100755
File size: 14.2 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 /usr/lib /usr/local/lib"
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` -iquote`pwd`/lib -iquote`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        echo "$RESOLV_TESTCODE" | $CC -o /dev/null -x c - -lresolv >/dev/null 2>/dev/null
301        if [ "$?" = "0" ]; then
302                echo 'EFLAGS+=-lresolv' >> Makefile.settings
303                return 0
304        fi
305
306        return 1
307}
308
309detect_resolv_static()
310{
311        for i in $systemlibdirs; do
312                if [ -f $i/libresolv.a ]; then
313                        echo "$RESOLV_TESTCODE" | $CC -o /dev/null -x c - -Wl,$i/libresolv.a >/dev/null 2>/dev/null
314                        if [ "$?" = "0" ]; then
315                                echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings
316                                return 0
317                        fi
318                fi
319        done
320
321        return 1
322}
323
324if [ "$ssl" = "auto" ]; then
325        detect_gnutls
326        if [ "$ret" = "0" ]; then
327                detect_nss
328        fi
329elif [ "$ssl" = "gnutls" ]; then
330        detect_gnutls
331elif [ "$ssl" = "nss" ]; then
332        detect_nss
333elif [ "$ssl" = "sspi" ]; then
334        echo
335elif [ "$ssl" = "openssl" ]; then
336        echo
337        echo 'No detection code exists for OpenSSL. Make sure that you have a complete'
338        echo 'install of OpenSSL (including devel/header files) before reporting'
339        echo 'compilation problems.'
340        echo
341        echo 'Also, keep in mind that the OpenSSL is, according to some people, not'
342        echo 'completely GPL-compatible. Using GnuTLS or NSS is recommended and better'
343        echo 'supported by us. However, on many BSD machines, OpenSSL can be considered'
344        echo 'part of the operating system, which makes it GPL-compatible.'
345        echo
346        echo 'For more info, see: http://www.openssl.org/support/faq.html#LEGAL2'
347        echo '                    http://www.gnome.org/~markmc/openssl-and-the-gpl.html'
348        echo
349        echo 'Please note that distributing a BitlBee binary which links to OpenSSL is'
350        echo 'probably illegal. If you want to create and distribute a binary BitlBee'
351        echo 'package, you really should use GnuTLS or NSS instead.'
352        echo
353        echo 'Also, the OpenSSL license requires us to say this:'
354        echo ' *    "This product includes software developed by the OpenSSL Project'
355        echo ' *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"'
356       
357        echo 'EFLAGS+=-lssl -lcrypto' >> Makefile.settings
358       
359        ret=1
360elif [ "$ssl" = "bogus" ]; then
361        echo
362        echo 'Using bogus SSL code. This means some features will not work properly.'
363       
364        ## Yes, you, at the console! How can you authenticate if you don't have any SSL!?
365        if [ "$msn" = "1" -o "$yahoo" = "1" ]; then
366                echo
367                echo 'WARNING: The MSN and Yahoo! modules will not work without SSL. Disabling.'
368                msn=0
369                yahoo=0
370        fi
371       
372        ret=1
373else
374        echo
375        echo 'ERROR: Unknown SSL library specified.'
376        exit 1
377fi
378
379if [ "$ret" = "0" ]; then
380        echo
381        echo 'ERROR: Could not find a suitable SSL library (GnuTLS, libnss or OpenSSL).'
382        echo '       Please note that this script doesn'\''t have detection code for OpenSSL,'
383        echo '       so if you want to use that, you have to select it by hand. If you don'\''t'
384        echo '       need SSL support, you can select the "bogus" SSL library. (--ssl=bogus)'
385       
386        exit 1
387fi;
388
389echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings
390
391if detect_resolv_dynamic || detect_resolv_static; then
392        echo '#define HAVE_RESOLV_A' >> config.h
393fi
394
395STORAGES="text xml"
396
397if [ "$ldap" = "auto" ]; then
398        detect_ldap
399fi
400
401if [ "$ldap" = 0 ]; then
402        echo "#undef WITH_LDAP" >> config.h
403elif [ "$ldap" = 1 ]; then
404        echo
405        echo 'LDAP support is a work in progress and does NOT work AT ALL right now.'
406        echo
407        exit 1
408       
409        echo "#define WITH_LDAP 1" >> config.h
410        STORAGES="$STORAGES ldap"
411fi
412
413for i in $STORAGES; do
414        STORAGE_OBJS="$STORAGE_OBJS storage_$i.o"
415done
416echo "STORAGE_OBJS="$STORAGE_OBJS >> Makefile.settings
417
418if [ "$strip" = 0 ]; then
419        echo "STRIP=\# skip strip" >> Makefile.settings;
420else
421        if [ "$debug" = 1 ]; then
422                echo
423                echo 'Stripping binaries does not make sense when debugging. Stripping disabled.'
424                echo 'STRIP=\# skip strip' >> Makefile.settings
425                strip=0;
426        elif [ -n "$STRIP" ]; then
427                echo "STRIP=$STRIP" >> Makefile.settings;
428        elif type strip > /dev/null 2> /dev/null; then
429                echo "STRIP=strip" >> Makefile.settings;
430        else
431                echo
432                echo 'No strip utility found, cannot remove unnecessary parts from executable.'
433                echo 'STRIP=\# skip strip' >> Makefile.settings
434                strip=0;
435        fi;
436fi
437
438if [ "$gcov" = "1" ]; then
439        echo "CFLAGS+=--coverage" >> Makefile.settings
440        echo "EFLAGS+=--coverage" >> Makefile.settings
441fi
442
443if [ "$plugins" = 0 ]; then
444        echo '#undef WITH_PLUGINS' >> config.h
445else
446        echo '#define WITH_PLUGINS' >> config.h
447fi
448
449if [ ! -e doc/user-guide/help.txt ] && ! type xmlto > /dev/null 2> /dev/null; then
450        echo
451        echo 'WARNING: Building from an unreleased source tree without prebuilt helpfile.'
452        echo 'Install xmlto if you want online help to work.'
453fi
454
455echo
456if [ -z "$BITLBEE_VERSION" -a -d .bzr ] && type bzr > /dev/null 2> /dev/null; then
457        nick=`bzr nick`
458        if [ -n "$nick" -a "$nick" != "bitlbee" ]; then
459                nick="-$nick"
460        else
461                nick=""
462        fi
463        rev=`bzr revno`
464        echo 'Using bzr revision #'$rev' as version number'
465        BITLBEE_VERSION=\"bzr$nick-$rev\"
466fi
467
468if [ -n "$BITLBEE_VERSION" ]; then
469        echo 'Spoofing version number: '$BITLBEE_VERSION
470        echo '#undef BITLBEE_VERSION' >> config.h
471        echo '#define BITLBEE_VERSION '$BITLBEE_VERSION >> config.h
472        echo
473fi
474
475cat <<EOF>bitlbee.pc
476prefix=$prefix
477includedir=$includedir
478
479Name: bitlbee
480Description: IRC to IM gateway
481Requires: glib-2.0
482Version: $BITLBEE_VERSION
483Libs:
484Cflags: -I\${includedir}
485
486EOF
487
488protocols=''
489protoobjs=''
490
491if [ "$purple" = 0 ]; then
492        echo '#undef WITH_PURPLE' >> config.h
493else
494        if ! $PKG_CONFIG purple; then
495                echo
496                echo 'Cannot find libpurple development libraries, aborting. (Install libpurple-dev?)'
497                exit 1
498        fi
499        echo '#define WITH_PURPLE' >> config.h
500        cat<<EOF>>Makefile.settings
501EFLAGS += $($PKG_CONFIG purple --libs)
502PURPLE_CFLAGS += $($PKG_CONFIG purple --cflags)
503EOF
504        protocols=$protocols'purple '
505        protoobjs=$protoobjs'purple_mod.o '
506
507        # Having both libpurple and native IM modules in one binary may
508        # do strange things. Let's not do that.
509        msn=0
510        jabber=0
511        oscar=0
512        yahoo=0
513fi
514
515if [ "$msn" = 0 ]; then
516        echo '#undef WITH_MSN' >> config.h
517else
518        echo '#define WITH_MSN' >> config.h
519        protocols=$protocols'msn '
520        protoobjs=$protoobjs'msn_mod.o '
521fi
522
523if [ "$jabber" = 0 ]; then
524        echo '#undef WITH_JABBER' >> config.h
525else
526        echo '#define WITH_JABBER' >> config.h
527        protocols=$protocols'jabber '
528        protoobjs=$protoobjs'jabber_mod.o '
529fi
530
531if [ "$oscar" = 0 ]; then
532        echo '#undef WITH_OSCAR' >> config.h
533else
534        echo '#define WITH_OSCAR' >> config.h
535        protocols=$protocols'oscar '
536        protoobjs=$protoobjs'oscar_mod.o '
537fi
538
539if [ "$yahoo" = 0 ]; then
540        echo '#undef WITH_YAHOO' >> config.h
541else
542        echo '#define WITH_YAHOO' >> config.h
543        protocols=$protocols'yahoo '
544        protoobjs=$protoobjs'yahoo_mod.o '
545fi
546
547if [ "$protocols" = "PROTOCOLS = " ]; then
548        echo "Warning: You haven't selected any communication protocol to compile!"
549        echo "         BitlBee will run, but you will be unable to connect to IM servers!"
550fi
551
552echo "PROTOCOLS = $protocols" >> Makefile.settings
553echo "PROTOOBJS = $protoobjs" >> Makefile.settings
554
555echo Architecture: $arch
556case "$arch" in
557Linux )
558;;
559GNU/* )
560;;
561*BSD )
562;;
563Darwin )
564        echo 'STRIP=\# skip strip' >> Makefile.settings
565;;
566IRIX )
567;;
568SunOS )
569        echo 'EFLAGS+=-lresolv -lnsl -lsocket' >> Makefile.settings
570        echo 'STRIP=\# skip strip' >> Makefile.settings
571;;
572AIX )
573        echo 'EFLAGS+=-Wl,-brtl' >> Makefile.settings
574;;
575CYGWIN* )
576        echo 'Cygwin is not officially supported.'
577;;
578Windows )
579;;
580* )
581        echo 'We haven'\''t tested BitlBee on many platforms yet, yours is untested. YMMV.'
582        echo 'Please report any problems at http://bugs.bitlbee.org/.'
583;;
584esac
585
586if [ -n "$target" ]; then
587        echo "Cross-compiling for: $target"
588fi
589
590echo
591echo 'Configuration done:'
592
593if [ "$debug" = "1" ]; then
594        echo '  Debugging enabled.'
595else
596        echo '  Debugging disabled.'
597fi
598
599if [ "$strip" = "1" ]; then
600        echo '  Binary stripping enabled.'
601else
602        echo '  Binary stripping disabled.'
603fi
604
605echo '  Using event handler: '$events
606echo '  Using SSL library: '$ssl
607echo '  Building with these storage backends: '$STORAGES
608
609if [ -n "$protocols" ]; then
610        echo '  Building with these protocols:' $protocols
611else
612        echo '  Building without IM-protocol support. We wish you a lot of fun...'
613fi
Note: See TracBrowser for help on using the repository browser.