source: configure @ e5d8d21

Last change on this file since e5d8d21 was e248c7f, checked in by Wilmer van der Gaast <wilmer@…>, at 2009-10-12T22:23:49Z

Automatically try prpl-$proto if $proto doesn't exist, and disable native
protocol modules if purple is enabled; they don't go together very well.

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