source: configure @ 6c91e6e

Last change on this file since 6c91e6e was 764c7d1, checked in by Sven Moritz Hallberg <sm@…>, at 2008-02-03T21:30:03Z

OTR support, first checkin

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