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
RevLine 
[b7d3cc34]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/'
[85cf37f]16plugindir='$prefix/lib/bitlbee/'
17includedir='$prefix/include/bitlbee/'
18libevent='/usr/'
[34b17d9]19pidfile='/var/run/bitlbee.pid'
[5c5a586]20ipcsocket='/var/run/bitlbee.sock'
[e506d6c]21pcdir='$prefix/lib/pkgconfig'
[b7d3cc34]22
23msn=1
24jabber=1
25oscar=1
26yahoo=1
27
28debug=0
29strip=1
[66b9e86e]30gcov=0
[2abfbc5]31plugins=1
[85cf37f]32
33events=glib
[670204f]34ldap=0
[b7d3cc34]35ssl=auto
36
37arch=`uname -s`
38cpu=`uname -m`
39
[670204f]40GLIB_MIN_VERSION=2.4
41
[b7d3cc34]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
[7b23afd]58--plugindir=...                                         $plugindir
[34b17d9]59--pidfile=...                                           $pidfile
[b7d3cc34]60--config=...                                            $config
[6dff9d4]61--ipcsocket=...                                         $ipcsocket
[b7d3cc34]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
[66b9e86e]70--gcov=0/1      Disable/enable test coverage reporting  $gcov
[2abfbc5]71--plugins=0/1   Disable/enable plugins support          $plugins
[b7d3cc34]72
[85cf37f]73--events=...    Event handler (glib, libevent)          $events
[b7d3cc34]74--ssl=...       SSL library to use (gnutls, nss, openssl, bogus, auto)
75                                                        $ssl
[aec56b0]76
[f1e7407]77--target=...    Cross compilation target                same as host
[b7d3cc34]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'`
[7b23afd]91plugindir=`eval echo "$plugindir/" | sed 's/\/\{1,\}/\//g'`
[85cf37f]92includedir=`eval echo "$includedir"/ | sed 's/\/\{1,\}/\//g'`
93libevent=`eval echo "$libevent"/ | sed 's/\/\{1,\}/\//g'`
94
[6dff9d4]95pidfile=`eval echo "$pidfile" | sed 's/\/\{1,\}/\//g'`
96ipcsocket=`eval echo "$ipcsocket" | sed 's/\/\{1,\}/\//g'`
[e506d6c]97pcdir=`eval echo "$pcdir" | sed 's/\/\{1,\}/\//g'`
[b7d3cc34]98
99cat<<EOF>Makefile.settings
100## BitlBee settings, generated by configure
101PREFIX=$prefix
102BINDIR=$bindir
103ETCDIR=$etcdir
104MANDIR=$mandir
105DATADIR=$datadir
[7b23afd]106PLUGINDIR=$plugindir
[b7d3cc34]107CONFIG=$config
[e506d6c]108INCLUDEDIR=$includedir
109PCDIR=$pcdir
[b7d3cc34]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"
[7b23afd]129#define PLUGINDIR "$plugindir"
[34b17d9]130#define PIDFILE "$pidfile"
[6dff9d4]131#define IPCSOCKET "$ipcsocket"
[b7d3cc34]132#define ARCH "$arch"
133#define CPU "$cpu"
134EOF
135
[f1e7407]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
[b7d3cc34]143if [ "$debug" = "1" ]; then
[285b55d]144        [ -z "$CFLAGS" ] && CFLAGS=-g
[b7d3cc34]145        echo 'DEBUG=1' >> Makefile.settings
[911cc4f]146        CFLAGS="$CFLAGS -DDEBUG"
[b7d3cc34]147else
[56f260a]148        [ -z "$CFLAGS" ] && CFLAGS="-O2 -fno-strict-aliasing"
[b7d3cc34]149fi
150
[285b55d]151echo CFLAGS=$CFLAGS >> Makefile.settings
[df1694b]152echo CFLAGS+=-I`pwd` -I`pwd`/lib -I`pwd`/protocols -I. >> Makefile.settings
[b7d3cc34]153
[f712188]154echo CFLAGS+=-DHAVE_CONFIG_H >> Makefile.settings
155
[b7d3cc34]156if [ -n "$CC" ]; then
[5973412]157        CC=$CC
[b7d3cc34]158elif type gcc > /dev/null 2> /dev/null; then
[5973412]159        CC=gcc
[b7d3cc34]160elif type cc > /dev/null 2> /dev/null; then
[5973412]161        CC=cc
[b7d3cc34]162else
163        echo 'Cannot find a C compiler, aborting.'
164        exit 1;
165fi
166
[5973412]167echo "CC=$CC" >> Makefile.settings;
168
[f1e7407]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
[b7d3cc34]176fi
177
[f1e7407]178echo "LD=$LD" >> Makefile.settings
179
[32c632f]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
[670204f]185        if $PKG_CONFIG glib-2.0 --atleast-version=$GLIB_MIN_VERSION; then
186                cat<<EOF>>Makefile.settings
[32c632f]187EFLAGS+=`$PKG_CONFIG --libs glib-2.0 gmodule-2.0`
188CFLAGS+=`$PKG_CONFIG --cflags glib-2.0 gmodule-2.0`
[b7d3cc34]189EOF
[670204f]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
[b7d3cc34]195else
[670204f]196        echo
[574af7e]197        echo 'Cannot find glib2 development libraries, aborting. (Install libglib2-dev?)'
[670204f]198        exit 1
[b7d3cc34]199fi
200
[85cf37f]201if [ "$events" = "libevent" ]; then
[003553b]202        if ! [ -f "${libevent}include/event.h" ]; then
[85cf37f]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
[b7d3cc34]217else
218        echo
[85cf37f]219        echo 'ERROR: Unknown event handler specified.'
220        exit 1
[b7d3cc34]221fi
[85cf37f]222echo 'EVENT_HANDLER=events_'$events'.o' >> Makefile.settings
[b7d3cc34]223
224detect_gnutls()
225{
[4af7b4f]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
[b7d3cc34]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{
[32c632f]248        if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG mozilla-nss; then
[b7d3cc34]249                cat<<EOF>>Makefile.settings
[32c632f]250EFLAGS+=`$PKG_CONFIG --libs mozilla-nss`
251CFLAGS+=`$PKG_CONFIG --cflags mozilla-nss`
[b7d3cc34]252EOF
253               
254                ssl=nss
255                ret=1;
256        else
257                ret=0;
258        fi;
259}
260
[f32d557]261detect_ldap()
[f665dab]262{
[5973412]263        TMPFILE=`mktemp`
264        if $CC -o $TMPFILE -shared -lldap 2>/dev/null >/dev/null; then
[f665dab]265                cat<<EOF>>Makefile.settings
[5973412]266EFLAGS+=-lldap
267CFLAGS+=
[f665dab]268EOF
[f32d557]269                ldap=1
[5973412]270                rm -f $TMPFILE
[f665dab]271                ret=1
[b7d3cc34]272        else
[5973412]273                ldap=0
[f665dab]274                ret=0
[b7d3cc34]275        fi
[f665dab]276}
277
[b3c467b]278if [ "$ssl" = "auto" ]; then
279        detect_gnutls
[b7d3cc34]280        if [ "$ret" = "0" ]; then
[b3c467b]281                detect_nss
[b7d3cc34]282        fi
[b3c467b]283elif [ "$ssl" = "gnutls" ]; then
284        detect_gnutls
285elif [ "$ssl" = "nss" ]; then
286        detect_nss
[85d7b85]287elif [ "$ssl" = "sspi" ]; then
288        echo
[b3c467b]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/)"'
[b7d3cc34]310       
[b3c467b]311        echo 'EFLAGS+=-lssl -lcrypto' >> Makefile.settings
312       
313        ret=1
314elif [ "$ssl" = "bogus" ]; then
315        echo
[670204f]316        echo 'Using bogus SSL code. This means some features will not work properly.'
[b3c467b]317       
318        ## Yes, you, at the console! How can you authenticate if you don't have any SSL!?
319        if [ "$msn" = "1" ]; then
[b7d3cc34]320                echo
[b3c467b]321                echo 'Real SSL support is necessary for MSN authentication, will build without'
322                echo 'MSN protocol support.'
323                msn=0
324        fi
[b7d3cc34]325       
[b3c467b]326        ret=1
327else
328        echo
329        echo 'ERROR: Unknown SSL library specified.'
330        exit 1
[b7d3cc34]331fi
332
[b3c467b]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)'
[b7d3cc34]339       
[b3c467b]340        exit 1
341fi;
342
343echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings
344
[36e9f62]345for i in /lib /usr/lib /usr/local/lib; do
[003553b]346        if [ -f $i/libresolv.a ]; then
[36e9f62]347                echo '#define HAVE_RESOLV_A' >> config.h
348                echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings
349                break
350        fi
351done
352
[b3c467b]353STORAGES="text xml"
354
[f32d557]355if [ "$ldap" = "auto" ]; then
356        detect_ldap
[b7d3cc34]357fi
358
[f32d557]359if [ "$ldap" = 0 ]; then
[5973412]360        echo "#undef WITH_LDAP" >> config.h
[f32d557]361elif [ "$ldap" = 1 ]; then
[5c5a586]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       
[5973412]367        echo "#define WITH_LDAP 1" >> config.h
[b3c467b]368        STORAGES="$STORAGES ldap"
[b7d3cc34]369fi
370
[b3c467b]371for i in $STORAGES; do
372        STORAGE_OBJS="$STORAGE_OBJS storage_$i.o"
373done
374echo "STORAGE_OBJS="$STORAGE_OBJS >> Makefile.settings
375
[b7d3cc34]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
[66b9e86e]396if [ "$gcov" = "1" ]; then
[31fc3970]397        echo "CFLAGS+=--coverage" >> Makefile.settings
398        echo "EFLAGS+=--coverage" >> Makefile.settings
[66b9e86e]399fi
400
[2abfbc5]401if [ "$plugins" = 0 ]; then
402        echo '#undef WITH_PLUGINS' >> config.h
403else
404        echo '#define WITH_PLUGINS' >> config.h
405fi
406
[ffea9b9]407echo
[a014331]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
[ffea9b9]415        rev=`bzr revno`
416        echo 'Using bzr revision #'$rev' as version number'
[a014331]417        BITLBEE_VERSION=\"bzr$nick-$rev\"
[b7d3cc34]418fi
419
420if [ -n "$BITLBEE_VERSION" ]; then
421        echo 'Spoofing version number: '$BITLBEE_VERSION
422        echo '#undef BITLBEE_VERSION' >> config.h
[ffea9b9]423        echo '#define BITLBEE_VERSION '$BITLBEE_VERSION >> config.h
424        echo
[b7d3cc34]425fi
426
[e506d6c]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
[b7d3cc34]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 '
[b5a22e3]448        protoobjs=$protoobjs'msn_mod.o '
[b7d3cc34]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 '
[b5a22e3]456        protoobjs=$protoobjs'jabber_mod.o '
[b7d3cc34]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 '
[b5a22e3]464        protoobjs=$protoobjs'oscar_mod.o '
[b7d3cc34]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 '
[b5a22e3]472        protoobjs=$protoobjs'yahoo_mod.o '
[b7d3cc34]473fi
474
475if [ "$protocols" = "PROTOCOLS = " ]; then
[43462708]476        echo "Warning: You haven't selected any communication protocol to compile!"
[b3c467b]477        echo "         BitlBee will run, but you will be unable to connect to IM servers!"
[b7d3cc34]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;;
[8de63c3]499AIX )
500        echo 'EFLAGS+=-Wl,-brtl' >> Makefile.settings
[b7d3cc34]501;;
502CYGWIN* )
503        echo 'Cygwin is not officially supported.'
504;;
[aec56b0]505Windows )
506        echo OUTFILE=bitlbee.exe >> Makefile.settings
507        echo LFLAGS+=-lwsock32 >> Makefile.settings
508        echo EFLAGS+=-lsecur32 >> Makefile.settings
509;;
[b7d3cc34]510* )
[8d6c4b1]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/.'
[b7d3cc34]513;;
514esac
515
[f1e7407]516if [ -n "$target" ]; then
517        echo "Cross-compiling for: $target"
518fi
519
[b7d3cc34]520echo
521echo 'Configuration done:'
522
523if [ "$debug" = "1" ]; then
[b3c467b]524        echo '  Debugging enabled.'
[b7d3cc34]525else
[b3c467b]526        echo '  Debugging disabled.'
[b7d3cc34]527fi
528
529if [ "$strip" = "1" ]; then
[b3c467b]530        echo '  Binary stripping enabled.'
[b7d3cc34]531else
[b3c467b]532        echo '  Binary stripping disabled.'
[b7d3cc34]533fi
534
[b3c467b]535echo '  Using event handler: '$events
536echo '  Using SSL library: '$ssl
537echo '  Building with these storage backends: '$STORAGES
[b7d3cc34]538
539if [ -n "$protocols" ]; then
[b3c467b]540        echo '  Building with these protocols:' $protocols
[b7d3cc34]541else
[b3c467b]542        echo '  Building without IM-protocol support. We wish you a lot of fun...'
[b7d3cc34]543fi
Note: See TracBrowser for help on using the repository browser.