source: configure @ 12ebe74

Last change on this file since 12ebe74 was e46e077, checked in by Jelmer Vernooij <jelmer@…>, at 2008-04-02T15:39:40Z

Merge cross compilation patch.

  • Property mode set to 100755
File size: 12.7 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
76
77--target=...    Cross compilation target                same as host
78EOF
79                exit;
80        fi
81        eval "$e"
82        shift;
83done
84
85# Expand $prefix and get rid of double slashes
86bindir=`eval echo "$bindir/" | sed 's/\/\{1,\}/\//g'`
87etcdir=`eval echo "$etcdir/" | sed 's/\/\{1,\}/\//g'`
88mandir=`eval echo "$mandir/" | sed 's/\/\{1,\}/\//g'`
89datadir=`eval echo "$datadir/" | sed 's/\/\{1,\}/\//g'`
90config=`eval echo "$config/" | sed 's/\/\{1,\}/\//g'`
91plugindir=`eval echo "$plugindir/" | sed 's/\/\{1,\}/\//g'`
92includedir=`eval echo "$includedir"/ | sed 's/\/\{1,\}/\//g'`
93libevent=`eval echo "$libevent"/ | sed 's/\/\{1,\}/\//g'`
94
95pidfile=`eval echo "$pidfile" | sed 's/\/\{1,\}/\//g'`
96ipcsocket=`eval echo "$ipcsocket" | sed 's/\/\{1,\}/\//g'`
97pcdir=`eval echo "$pcdir" | sed 's/\/\{1,\}/\//g'`
98
99cat<<EOF>Makefile.settings
100## BitlBee settings, generated by configure
101PREFIX=$prefix
102BINDIR=$bindir
103ETCDIR=$etcdir
104MANDIR=$mandir
105DATADIR=$datadir
106PLUGINDIR=$plugindir
107CONFIG=$config
108INCLUDEDIR=$includedir
109PCDIR=$pcdir
110
111ARCH=$arch
112CPU=$cpu
113OUTFILE=bitlbee
114
115DESTDIR=
116LFLAGS=
117EFLAGS=
118EOF
119
120cat<<EOF>config.h
121/* BitlBee settings, generated by configure
122   
123   Do *NOT* use any of these defines in your code without thinking twice, most
124   of them can/will be overridden at run-time */
125
126#define CONFIG "$config"
127#define ETCDIR "$etcdir"
128#define VARDIR "$datadir"
129#define PLUGINDIR "$plugindir"
130#define PIDFILE "$pidfile"
131#define IPCSOCKET "$ipcsocket"
132#define ARCH "$arch"
133#define CPU "$cpu"
134EOF
135
136if [ -n "$target" ]; then
137        PKG_CONFIG_PATH=/usr/$target/lib/pkgconfig
138        PATH=/usr/$target/bin:$PATH
139        CC=$target-cc
140        LD=$target-ld
141fi
142
143if [ "$debug" = "1" ]; then
144        [ -z "$CFLAGS" ] && CFLAGS=-g
145        echo 'DEBUG=1' >> Makefile.settings
146        CFLAGS="$CFLAGS -DDEBUG"
147else
148        [ -z "$CFLAGS" ] && CFLAGS="-O2 -fno-strict-aliasing"
149fi
150
151echo CFLAGS=$CFLAGS >> Makefile.settings
152echo CFLAGS+=-I`pwd` -I`pwd`/lib -I`pwd`/protocols -I. >> Makefile.settings
153
154echo CFLAGS+=-DHAVE_CONFIG_H >> Makefile.settings
155
156if [ -n "$CC" ]; then
157        CC=$CC
158elif type gcc > /dev/null 2> /dev/null; then
159        CC=gcc
160elif type cc > /dev/null 2> /dev/null; then
161        CC=cc
162else
163        echo 'Cannot find a C compiler, aborting.'
164        exit 1;
165fi
166
167echo "CC=$CC" >> Makefile.settings;
168
169if [ -z "$LD" ]; then
170        if type ld > /dev/null 2> /dev/null; then
171                LD=ld
172        else
173                echo 'Cannot find ld, aborting.'
174                exit 1;
175        fi
176fi
177
178echo "LD=$LD" >> Makefile.settings
179
180if [ -z "$PKG_CONFIG" ]; then
181        PKG_CONFIG=pkg-config
182fi
183
184if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG glib-2.0; then
185        if $PKG_CONFIG glib-2.0 --atleast-version=$GLIB_MIN_VERSION; then
186                cat<<EOF>>Makefile.settings
187EFLAGS+=`$PKG_CONFIG --libs glib-2.0 gmodule-2.0`
188CFLAGS+=`$PKG_CONFIG --cflags glib-2.0 gmodule-2.0`
189EOF
190        else
191                echo
192                echo 'Found glib2 '`$PKG_CONFIG glib-2.0 --modversion`', but version '$GLIB_MIN_VERSION' or newer is required.'
193                exit 1
194        fi
195else
196        echo
197        echo 'Cannot find glib2 development libraries, aborting. (Install libglib2-dev?)'
198        exit 1
199fi
200
201if [ "$events" = "libevent" ]; then
202        if ! [ -f "${libevent}include/event.h" ]; then
203                echo
204                echo 'Warning: Could not find event.h, you might have to install it and/or specify'
205                echo 'its location using the --libevent= argument. (Example: If event.h is in'
206                echo '/usr/local/include and binaries are in /usr/local/lib: --libevent=/usr/local)'
207        fi
208       
209        echo '#define EVENTS_LIBEVENT' >> config.h
210        cat <<EOF>>Makefile.settings
211EFLAGS+=-levent -L${libevent}lib
212CFLAGS+=-I${libevent}include
213EOF
214elif [ "$events" = "glib" ]; then
215        ## We already use glib anyway, so this is all we need (and in fact not even this, but just to be sure...):
216        echo '#define EVENTS_GLIB' >> config.h
217else
218        echo
219        echo 'ERROR: Unknown event handler specified.'
220        exit 1
221fi
222echo 'EVENT_HANDLER=events_'$events'.o' >> Makefile.settings
223
224detect_gnutls()
225{
226        if $PKG_CONFIG --exists gnutls; then
227                cat <<EOF>>Makefile.settings
228EFLAGS+=`$PKG_CONFIG --libs gnutls`
229CFLAGS+=`$PKG_CONFIG --cflags gnutls`
230EOF
231                ssl=gnutls
232                ret=1
233        elif libgnutls-config --version > /dev/null 2> /dev/null; then
234                cat <<EOF>>Makefile.settings
235EFLAGS+=`libgnutls-config --libs`
236CFLAGS+=`libgnutls-config --cflags`
237EOF
238               
239                ssl=gnutls
240                ret=1;
241        else
242                ret=0;
243        fi;
244}
245
246detect_nss()
247{
248        if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG mozilla-nss; then
249                cat<<EOF>>Makefile.settings
250EFLAGS+=`$PKG_CONFIG --libs mozilla-nss`
251CFLAGS+=`$PKG_CONFIG --cflags mozilla-nss`
252EOF
253               
254                ssl=nss
255                ret=1;
256        else
257                ret=0;
258        fi;
259}
260
261detect_ldap()
262{
263        TMPFILE=`mktemp`
264        if $CC -o $TMPFILE -shared -lldap 2>/dev/null >/dev/null; then
265                cat<<EOF>>Makefile.settings
266EFLAGS+=-lldap
267CFLAGS+=
268EOF
269                ldap=1
270                rm -f $TMPFILE
271                ret=1
272        else
273                ldap=0
274                ret=0
275        fi
276}
277
278if [ "$ssl" = "auto" ]; then
279        detect_gnutls
280        if [ "$ret" = "0" ]; then
281                detect_nss
282        fi
283elif [ "$ssl" = "gnutls" ]; then
284        detect_gnutls
285elif [ "$ssl" = "nss" ]; then
286        detect_nss
287elif [ "$ssl" = "sspi" ]; then
288        echo
289elif [ "$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
314elif [ "$ssl" = "bogus" ]; then
315        echo
316        echo 'Using bogus SSL code. This means some features will not work properly.'
317       
318        ## Yes, you, at the console! How can you authenticate if you don't have any SSL!?
319        if [ "$msn" = "1" ]; then
320                echo
321                echo 'Real SSL support is necessary for MSN authentication, will build without'
322                echo 'MSN protocol support.'
323                msn=0
324        fi
325       
326        ret=1
327else
328        echo
329        echo 'ERROR: Unknown SSL library specified.'
330        exit 1
331fi
332
333if [ "$ret" = "0" ]; then
334        echo
335        echo 'ERROR: Could not find a suitable SSL library (GnuTLS, libnss or OpenSSL).'
336        echo '       Please note that this script doesn'\''t have detection code for OpenSSL,'
337        echo '       so if you want to use that, you have to select it by hand. If you don'\''t'
338        echo '       need SSL support, you can select the "bogus" SSL library. (--ssl=bogus)'
339       
340        exit 1
341fi;
342
343echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings
344
345for i in /lib /usr/lib /usr/local/lib; do
346        if [ -f $i/libresolv.a ]; then
347                echo '#define HAVE_RESOLV_A' >> config.h
348                echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings
349                break
350        fi
351done
352
353STORAGES="text xml"
354
355if [ "$ldap" = "auto" ]; then
356        detect_ldap
357fi
358
359if [ "$ldap" = 0 ]; then
360        echo "#undef WITH_LDAP" >> config.h
361elif [ "$ldap" = 1 ]; then
362        echo
363        echo 'LDAP support is a work in progress and does NOT work AT ALL right now.'
364        echo
365        exit 1
366       
367        echo "#define WITH_LDAP 1" >> config.h
368        STORAGES="$STORAGES ldap"
369fi
370
371for i in $STORAGES; do
372        STORAGE_OBJS="$STORAGE_OBJS storage_$i.o"
373done
374echo "STORAGE_OBJS="$STORAGE_OBJS >> Makefile.settings
375
376if [ "$strip" = 0 ]; then
377        echo "STRIP=\# skip strip" >> Makefile.settings;
378else
379        if [ "$debug" = 1 ]; then
380                echo
381                echo 'Stripping binaries does not make sense when debugging. Stripping disabled.'
382                echo 'STRIP=\# skip strip' >> Makefile.settings
383                strip=0;
384        elif [ -n "$STRIP" ]; then
385                echo "STRIP=$STRIP" >> Makefile.settings;
386        elif type strip > /dev/null 2> /dev/null; then
387                echo "STRIP=strip" >> Makefile.settings;
388        else
389                echo
390                echo 'No strip utility found, cannot remove unnecessary parts from executable.'
391                echo 'STRIP=\# skip strip' >> Makefile.settings
392                strip=0;
393        fi;
394fi
395
396if [ "$gcov" = "1" ]; then
397        echo "CFLAGS+=--coverage" >> Makefile.settings
398        echo "EFLAGS+=--coverage" >> Makefile.settings
399fi
400
401if [ "$plugins" = 0 ]; then
402        echo '#undef WITH_PLUGINS' >> config.h
403else
404        echo '#define WITH_PLUGINS' >> config.h
405fi
406
407echo
408if [ -z "$BITLBEE_VERSION" -a -d .bzr ] && type bzr > /dev/null 2> /dev/null; then
409        nick=`bzr nick`
410        if [ -n "$nick" -a "$nick" != "bitlbee" ]; then
411                nick="-$nick"
412        else
413                nick=""
414        fi
415        rev=`bzr revno`
416        echo 'Using bzr revision #'$rev' as version number'
417        BITLBEE_VERSION=\"bzr$nick-$rev\"
418fi
419
420if [ -n "$BITLBEE_VERSION" ]; then
421        echo 'Spoofing version number: '$BITLBEE_VERSION
422        echo '#undef BITLBEE_VERSION' >> config.h
423        echo '#define BITLBEE_VERSION '$BITLBEE_VERSION >> config.h
424        echo
425fi
426
427cat <<EOF>bitlbee.pc
428prefix=$prefix
429includedir=$includedir
430
431Name: bitlbee
432Description: IRC to IM gateway
433Requires: glib-2.0
434Version: $BITLBEE_VERSION
435Libs:
436Cflags: -I\${includedir}
437
438EOF
439
440protocols=''
441protoobjs=''
442
443if [ "$msn" = 0 ]; then
444        echo '#undef WITH_MSN' >> config.h
445else
446        echo '#define WITH_MSN' >> config.h
447        protocols=$protocols'msn '
448        protoobjs=$protoobjs'msn_mod.o '
449fi
450
451if [ "$jabber" = 0 ]; then
452        echo '#undef WITH_JABBER' >> config.h
453else
454        echo '#define WITH_JABBER' >> config.h
455        protocols=$protocols'jabber '
456        protoobjs=$protoobjs'jabber_mod.o '
457fi
458
459if [ "$oscar" = 0 ]; then
460        echo '#undef WITH_OSCAR' >> config.h
461else
462        echo '#define WITH_OSCAR' >> config.h
463        protocols=$protocols'oscar '
464        protoobjs=$protoobjs'oscar_mod.o '
465fi
466
467if [ "$yahoo" = 0 ]; then
468        echo '#undef WITH_YAHOO' >> config.h
469else
470        echo '#define WITH_YAHOO' >> config.h
471        protocols=$protocols'yahoo '
472        protoobjs=$protoobjs'yahoo_mod.o '
473fi
474
475if [ "$protocols" = "PROTOCOLS = " ]; then
476        echo "Warning: You haven't selected any communication protocol to compile!"
477        echo "         BitlBee will run, but you will be unable to connect to IM servers!"
478fi
479
480echo "PROTOCOLS = $protocols" >> Makefile.settings
481echo "PROTOOBJS = $protoobjs" >> Makefile.settings
482
483echo Architecture: $arch
484case "$arch" in
485Linux )
486;;
487GNU/* )
488;;
489*BSD )
490;;
491Darwin )
492;;
493IRIX )
494;;
495SunOS )
496        echo 'EFLAGS+=-lresolv -lnsl -lsocket' >> Makefile.settings
497        echo 'STRIP=\# skip strip' >> Makefile.settings
498;;
499AIX )
500        echo 'EFLAGS+=-Wl,-brtl' >> Makefile.settings
501;;
502CYGWIN* )
503        echo 'Cygwin is not officially supported.'
504;;
505Windows )
506        echo OUTFILE=bitlbee.exe >> Makefile.settings
507        echo LFLAGS+=-lwsock32 >> Makefile.settings
508        echo EFLAGS+=-lsecur32 >> Makefile.settings
509;;
510* )
511        echo 'We haven'\''t tested BitlBee on many platforms yet, yours is untested. YMMV.'
512        echo 'Please report any problems at http://bugs.bitlbee.org/.'
513;;
514esac
515
516if [ -n "$target" ]; then
517        echo "Cross-compiling for: $target"
518fi
519
520echo
521echo 'Configuration done:'
522
523if [ "$debug" = "1" ]; then
524        echo '  Debugging enabled.'
525else
526        echo '  Debugging disabled.'
527fi
528
529if [ "$strip" = "1" ]; then
530        echo '  Binary stripping enabled.'
531else
532        echo '  Binary stripping disabled.'
533fi
534
535echo '  Using event handler: '$events
536echo '  Using SSL library: '$ssl
537echo '  Building with these storage backends: '$STORAGES
538
539if [ -n "$protocols" ]; then
540        echo '  Building with these protocols:' $protocols
541else
542        echo '  Building without IM-protocol support. We wish you a lot of fun...'
543fi
Note: See TracBrowser for help on using the repository browser.