source: configure @ 6a1128d

Last change on this file since 6a1128d was 36e9f62, checked in by Wilmer van der Gaast <wilmer@…>, at 2006-10-07T17:46:28Z

Added SRV lookups to automatically find out the correct server for a
domain.

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