source: configure @ c9f0c79

Last change on this file since c9f0c79 was fd03770, checked in by Wilmer van der Gaast <wilmer@…>, at 2006-06-25T19:43:14Z

Merging from devel/Jelmer.

  • Property mode set to 100755
File size: 12.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'
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
209if [ "$events" = "libevent" ]; then
210        if ! [ -e "${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 libgnutls-config --version > /dev/null 2> /dev/null; then
235                cat <<EOF>>Makefile.settings
236EFLAGS+=`libgnutls-config --libs`
237CFLAGS+=`libgnutls-config --cflags`
238EOF
239               
240                ssl=gnutls
241                ret=1;
242        else
243                ret=0;
244        fi;
245}
246
247detect_nss()
248{
249        if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG mozilla-nss; then
250                cat<<EOF>>Makefile.settings
251EFLAGS+=`$PKG_CONFIG --libs mozilla-nss`
252CFLAGS+=`$PKG_CONFIG --cflags mozilla-nss`
253EOF
254               
255                ssl=nss
256                ret=1;
257        else
258                ret=0;
259        fi;
260}
261
262detect_ldap()
263{
264        TMPFILE=`mktemp`
265        if $CC -o $TMPFILE -shared -lldap 2>/dev/null >/dev/null; then
266                cat<<EOF>>Makefile.settings
267EFLAGS+=-lldap
268CFLAGS+=
269EOF
270                ldap=1
271                rm -f $TMPFILE
272                ret=1
273        else
274                ldap=0
275                ret=0
276        fi
277}
278
279if [ "$msn" = 1 -o "$jabber" = 1 ]; then
280        if [ "$ssl" = "auto" ]; then
281                detect_gnutls
282                if [ "$ret" = "0" ]; then
283                        detect_nss
284                fi;
285        elif [ "$ssl" = "gnutls" ]; then
286                detect_gnutls;
287        elif [ "$ssl" = "nss" ]; then
288                detect_nss;
289        elif [ "$ssl" = "openssl" ]; then
290                echo
291                echo 'No detection code exists for OpenSSL. Make sure that you have a complete'
292                echo 'install of OpenSSL (including devel/header files) before reporting'
293                echo 'compilation problems.'
294                echo
295                echo 'Also, keep in mind that the OpenSSL is, according to some people, not'
296                echo 'completely GPL-compatible. Using GnuTLS or NSS is recommended and better'
297                echo 'supported by us. However, on many BSD machines, OpenSSL can be considered'
298                echo 'part of the operating system, which makes it GPL-compatible.'
299                echo
300                echo 'For more info, see: http://www.openssl.org/support/faq.html#LEGAL2'
301                echo '                    http://www.gnome.org/~markmc/openssl-and-the-gpl.html'
302                echo
303                echo 'Please note that distributing a BitlBee binary which links to OpenSSL is'
304                echo 'probably illegal. If you want to create and distribute a binary BitlBee'
305                echo 'package, you really should use GnuTLS or NSS instead.'
306                echo
307                echo 'Also, the OpenSSL license requires us to say this:'
308                echo ' *    "This product includes software developed by the OpenSSL Project'
309                echo ' *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"'
310               
311                echo 'EFLAGS+=-lssl -lcrypto' >> Makefile.settings
312               
313                ret=1;
314        elif [ "$ssl" = "bogus" ]; then
315                echo
316                echo 'Using bogus SSL code. This will not make the MSN module work, but it will'
317                echo 'allow you to use the Jabber module - although without working SSL support.'
318               
319                ret=1;
320        else
321                echo
322                echo 'ERROR: Unknown SSL library specified.'
323                exit 1;
324        fi
325       
326        if [ "$ret" = "0" ]; then
327                echo
328                echo 'ERROR: Could not find a suitable SSL library (GnuTLS, libnss or OpenSSL).'
329                echo '       This is necessary for MSN and full Jabber support. To continue,'
330                echo '       install a suitable SSL library or disable MSN support (--msn=0).'
331                echo '       If you want Jabber without SSL support you can try --ssl=bogus.'
332               
333                exit 1;
334        fi;
335       
336        echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings
337fi
338
339if [ "$ldap" = "auto" ]; then
340        detect_ldap
341fi
342
343if [ "$ldap" = 0 ]; then
344        echo "LDAP_OBJ=" >> Makefile.settings
345        echo "#undef WITH_LDAP" >> config.h
346elif [ "$ldap" = 1 ]; then
347        echo "#define WITH_LDAP 1" >> config.h
348        echo "LDAP_OBJ=storage_ldap.o" >> Makefile.settings
349fi
350
351if [ "$strip" = 0 ]; then
352        echo "STRIP=\# skip strip" >> Makefile.settings;
353else
354        if [ "$debug" = 1 ]; then
355                echo
356                echo 'Stripping binaries does not make sense when debugging. Stripping disabled.'
357                echo 'STRIP=\# skip strip' >> Makefile.settings
358                strip=0;
359        elif [ -n "$STRIP" ]; then
360                echo "STRIP=$STRIP" >> Makefile.settings;
361        elif type strip > /dev/null 2> /dev/null; then
362                echo "STRIP=strip" >> Makefile.settings;
363        elif /bin/test -x /usr/ccs/bin/strip; then
364                echo "STRIP=/usr/ccs/bin/strip" >> Makefile.settings;
365        else
366                echo
367                echo 'No strip utility found, cannot remove unnecessary parts from executable.'
368                echo 'STRIP=\# skip strip' >> Makefile.settings
369                strip=0;
370        fi;
371fi
372
373echo
374if [ -z "$BITLBEE_VERSION" -a -d .bzr ] && type bzr > /dev/null 2> /dev/null; then
375        nick=`bzr nick`
376        if [ -n "$nick" -a "$nick" != "bitlbee" ]; then
377                nick="-$nick"
378        else
379                nick=""
380        fi
381        rev=`bzr revno`
382        echo 'Using bzr revision #'$rev' as version number'
383        BITLBEE_VERSION=\"bzr$nick-$rev\"
384fi
385
386if [ -n "$BITLBEE_VERSION" ]; then
387        echo 'Spoofing version number: '$BITLBEE_VERSION
388        echo '#undef BITLBEE_VERSION' >> config.h
389        echo '#define BITLBEE_VERSION '$BITLBEE_VERSION >> config.h
390        echo
391fi
392
393cat <<EOF>bitlbee.pc
394prefix=$prefix
395includedir=$includedir
396
397Name: bitlbee
398Description: IRC to IM gateway
399Requires: glib-2.0
400Version: $BITLBEE_VERSION
401Libs:
402Cflags: -I\${includedir}
403
404EOF
405
406protocols=''
407protoobjs=''
408
409if [ "$msn" = 0 ]; then
410        echo '#undef WITH_MSN' >> config.h
411else
412        echo '#define WITH_MSN' >> config.h
413        protocols=$protocols'msn '
414        protoobjs=$protoobjs'msn_mod.o '
415fi
416
417if [ "$jabber" = 0 ]; then
418        echo '#undef WITH_JABBER' >> config.h
419else
420        echo '#define WITH_JABBER' >> config.h
421        protocols=$protocols'jabber '
422        protoobjs=$protoobjs'jabber_mod.o '
423fi
424
425if [ "$oscar" = 0 ]; then
426        echo '#undef WITH_OSCAR' >> config.h
427else
428        echo '#define WITH_OSCAR' >> config.h
429        protocols=$protocols'oscar '
430        protoobjs=$protoobjs'oscar_mod.o '
431fi
432
433if [ "$yahoo" = 0 ]; then
434        echo '#undef WITH_YAHOO' >> config.h
435else
436        echo '#define WITH_YAHOO' >> config.h
437        protocols=$protocols'yahoo '
438        protoobjs=$protoobjs'yahoo_mod.o '
439fi
440
441if [ "$protocols" = "PROTOCOLS = " ]; then
442        echo "WARNING: You haven't selected any communication protocol to compile!"
443        echo "         Bitlbee will run, but you will be unable to connect to IM servers!"
444fi
445
446echo "PROTOCOLS = $protocols" >> Makefile.settings
447echo "PROTOOBJS = $protoobjs" >> Makefile.settings
448
449echo Architecture: $arch
450case "$arch" in
451Linux )
452;;
453GNU/* )
454;;
455*BSD )
456;;
457Darwin )
458;;
459IRIX )
460;;
461SunOS )
462        echo 'EFLAGS+=-lresolv -lnsl -lsocket' >> Makefile.settings
463        echo 'STRIP=\# skip strip' >> Makefile.settings
464;;
465CYGWIN* )
466        echo 'Cygwin is not officially supported.'
467;;
468* )
469        echo 'We haven'\''t tested BitlBee on many platforms yet, yours is untested. YMMV.'
470        echo 'Please report any problems at http://bugs.bitlbee.org/.'
471;;
472esac
473
474echo
475echo 'Configuration done:'
476
477if [ "$debug" = "1" ]; then
478        echo '  Debugging enabled.';
479else
480        echo '  Debugging disabled.';
481fi
482
483if [ "$strip" = "1" ]; then
484        echo '  Binary stripping enabled.';
485else
486        echo '  Binary stripping disabled.';
487fi
488
489echo '  Using event handler: '$events;
490echo '  Using SSL library: '$ssl;
491
492#if [ "$flood" = "0" ]; then
493#       echo '  Flood protection disabled.';
494#else
495#       echo '  Flood protection enabled.';
496#fi
497
498if [ -n "$protocols" ]; then
499        echo '  Building with these protocols:' $protocols;
500else
501        echo '  Building without IM-protocol support. We wish you a lot of fun...';
502fi
503
504if [ "$ldap" = "0" ]; then
505        echo "  LDAP storage backend disabled."
506else
507        echo "  LDAP storage backend enabled."
508fi
Note: See TracBrowser for help on using the repository browser.