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
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 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{
241        if $PKG_CONFIG --version > /dev/null 2>/dev/null && $PKG_CONFIG mozilla-nss; then
242                cat<<EOF>>Makefile.settings
243EFLAGS+=`$PKG_CONFIG --libs mozilla-nss`
244CFLAGS+=`$PKG_CONFIG --cflags mozilla-nss`
245EOF
246               
247                ssl=nss
248                ret=1;
249        else
250                ret=0;
251        fi;
252}
253
254detect_ldap()
255{
256        TMPFILE=`mktemp`
257        if $CC -o $TMPFILE -shared -lldap 2>/dev/null >/dev/null; then
258                cat<<EOF>>Makefile.settings
259EFLAGS+=-lldap
260CFLAGS+=
261EOF
262                ldap=1
263                rm -f $TMPFILE
264                ret=1
265        else
266                ldap=0
267                ret=0
268        fi
269}
270
271if [ "$ssl" = "auto" ]; then
272        detect_gnutls
273        if [ "$ret" = "0" ]; then
274                detect_nss
275        fi
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/)"'
301       
302        echo 'EFLAGS+=-lssl -lcrypto' >> Makefile.settings
303       
304        ret=1
305elif [ "$ssl" = "bogus" ]; then
306        echo
307        echo 'Using bogus SSL code. This means some features will not work properly.'
308       
309        ## Yes, you, at the console! How can you authenticate if you don't have any SSL!?
310        if [ "$msn" = "1" ]; then
311                echo
312                echo 'Real SSL support is necessary for MSN authentication, will build without'
313                echo 'MSN protocol support.'
314                msn=0
315        fi
316       
317        ret=1
318else
319        echo
320        echo 'ERROR: Unknown SSL library specified.'
321        exit 1
322fi
323
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)'
330       
331        exit 1
332fi;
333
334echo 'SSL_CLIENT=ssl_'$ssl'.o' >> Makefile.settings
335
336for i in /lib /usr/lib /usr/local/lib; do
337        if [ -f $i/libresolv.a ]; then
338                echo '#define HAVE_RESOLV_A' >> config.h
339                echo 'EFLAGS+='$i'/libresolv.a' >> Makefile.settings
340                break
341        fi
342done
343
344STORAGES="text xml"
345
346if [ "$ldap" = "auto" ]; then
347        detect_ldap
348fi
349
350if [ "$ldap" = 0 ]; then
351        echo "#undef WITH_LDAP" >> config.h
352elif [ "$ldap" = 1 ]; then
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       
358        echo "#define WITH_LDAP 1" >> config.h
359        STORAGES="$STORAGES ldap"
360fi
361
362for i in $STORAGES; do
363        STORAGE_OBJS="$STORAGE_OBJS storage_$i.o"
364done
365echo "STORAGE_OBJS="$STORAGE_OBJS >> Makefile.settings
366
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
387if [ "$gcov" = "1" ]; then
388        echo "CFLAGS+=-ftest-coverage -fprofile-arcs" >> Makefile.settings
389        echo "EFLAGS+=-lgcov" >> Makefile.settings
390fi
391
392if [ "$plugins" = 0 ]; then
393        echo '#undef WITH_PLUGINS' >> config.h
394else
395        echo '#define WITH_PLUGINS' >> config.h
396fi
397
398echo
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
406        rev=`bzr revno`
407        echo 'Using bzr revision #'$rev' as version number'
408        BITLBEE_VERSION=\"bzr$nick-$rev\"
409fi
410
411if [ -n "$BITLBEE_VERSION" ]; then
412        echo 'Spoofing version number: '$BITLBEE_VERSION
413        echo '#undef BITLBEE_VERSION' >> config.h
414        echo '#define BITLBEE_VERSION '$BITLBEE_VERSION >> config.h
415        echo
416fi
417
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
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 '
439        protoobjs=$protoobjs'msn_mod.o '
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 '
447        protoobjs=$protoobjs'jabber_mod.o '
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 '
455        protoobjs=$protoobjs'oscar_mod.o '
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 '
463        protoobjs=$protoobjs'yahoo_mod.o '
464fi
465
466if [ "$protocols" = "PROTOCOLS = " ]; then
467        echo "Warning: You haven't selected any communication protocol to compile!"
468        echo "         BitlBee will run, but you will be unable to connect to IM servers!"
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;;
486SunOS )
487        echo 'EFLAGS+=-lresolv -lnsl -lsocket' >> Makefile.settings
488        echo 'STRIP=\# skip strip' >> Makefile.settings
489;;
490AIX )
491        echo 'EFLAGS+=-Wl,-brtl' >> Makefile.settings
492;;
493CYGWIN* )
494        echo 'Cygwin is not officially supported.'
495;;
496* )
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/.'
499;;
500esac
501
502if [ -n "$target" ]; then
503        echo "Cross-compiling for: $target"
504fi
505
506echo
507echo 'Configuration done:'
508
509if [ "$debug" = "1" ]; then
510        echo '  Debugging enabled.'
511else
512        echo '  Debugging disabled.'
513fi
514
515if [ "$strip" = "1" ]; then
516        echo '  Binary stripping enabled.'
517else
518        echo '  Binary stripping disabled.'
519fi
520
521echo '  Using event handler: '$events
522echo '  Using SSL library: '$ssl
523echo '  Building with these storage backends: '$STORAGES
524
525if [ -n "$protocols" ]; then
526        echo '  Building with these protocols:' $protocols
527else
528        echo '  Building without IM-protocol support. We wish you a lot of fun...'
529fi
Note: See TracBrowser for help on using the repository browser.