source: configure @ f1e7407

Last change on this file since f1e7407 was f1e7407, checked in by Jelmer Vernooij <jelmer@…>, at 2008-04-02T15:38:34Z

Add --target argument to configure to allow cross-compilation.

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