source: configure @ 6738a67

Last change on this file since 6738a67 was 6738a67, checked in by Sven Moritz Hallberg <pesco@…>, at 2008-07-16T23:22:52Z

merge in latest trunk

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