source: configure @ 7adc657

Last change on this file since 7adc657 was 003553b, checked in by Wilmer van der Gaast <wilmer@…>, at 2008-01-19T18:23:56Z

Using test -f instead of test -e. This breaks if the include files are
symlinks, but I guess that's less common than people trying to run BitlBee
on Solaris machines... (Bug #350)

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