* free-packet.c (copy_secret_key): Fixed memory leak when D is not
[gnupg.git] / scripts / autogen.sh
1 #!/bin/sh
2 # Run this to generate all the initial makefiles, etc.
3 #
4 # Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
5 #
6 # This file is free software; as a special exception the author gives
7 # unlimited permission to copy and/or distribute it, with or without
8 # modifications, as long as this notice is preserved.
9 #
10 # This program is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
12 # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
14 PGM=GnuPG
15 lib_config_files=""
16 autoconf_vers=2.57
17 automake_vers=1.7
18 aclocal_vers=1.7
19
20 ACLOCAL=${ACLOCAL:-aclocal}
21 AUTOCONF=${AUTOCONF:-autoconf}
22 AUTOMAKE=${AUTOMAKE:-automake}
23 AUTOHEADER=${AUTOHEADER:-autoheader}
24 DIE=no
25
26 # Used to cross-compile GnuPG for Windows.
27 if test "$1" = "--build-w32"; then
28     tmp=`dirname $0`
29     tsdir=`cd "$tmp"; cd ..; pwd`
30     shift
31     host=i386--mingw32
32     if [ ! -f $tsdir/scripts/config.guess ]; then
33         echo "$tsdir/scripts/config.guess not found" >&2
34         exit 1
35     fi
36     build=`$tsdir/scripts/config.guess`
37         
38     if ! mingw32 --version >/dev/null; then
39         echo "We need at least version 0.3 of MingW32/CPD" >&2
40         exit 1
41     fi
42
43     if [ -f "$tsdir/config.log" ]; then
44         if ! head $tsdir/config.log | grep i386--mingw32 >/dev/null; then
45             echo "Pease run a 'make distclean' first" >&2
46             exit 1
47         fi
48     fi
49
50     crossbindir=`mingw32 --install-dir`/bin
51     CC=`mingw32 --get-path gcc`
52     CPP=`mingw32 --get-path cpp`
53     AR=`mingw32 --get-path ar`
54     RANLIB=`mingw32 --get-path ranlib`
55     export CC CPP AR RANLIB 
56
57     disable_foo_tests=""
58     if [ -n "$lib_config_files" ]; then
59         for i in $lib_config_files; do
60             j=`echo $i | tr '[a-z-]' '[A-Z_]'`
61             eval "$j=${crossbindir}/$i"
62             export $j
63             disable_foo_tests="$disable_foo_tests --disable-`echo $i| \
64                            sed 's,-config$,,'`-test"
65             if [ ! -f "${crossbindir}/$i" ]; then                   
66                 echo "$i not installed for MingW32" >&2
67                 DIE=yes
68             fi
69         done
70     fi
71     [ $DIE = yes ] && exit 1
72
73     $tsdir/configure --build=${build} --host=${host} \
74                 ${disable_foo_tests}  $*
75
76     # Ugly hack to overcome a gettext problem.  Someone should look into
77     # gettext to figure out why the po directory is not ignored as it used
78     # to be.
79     [ $? = 0 ] && touch $tsdir/po/all
80     exit $?
81 fi
82
83
84 # This is the special case to build on a ColdFire platform under 
85 # the uClinux kernel.  Tested on a MCF4249C3 board.
86 if test "$1" = "--build-coldfire"; then
87     tmp=`dirname $0`
88     tsdir=`cd "$tmp"; cd ..; pwd`
89     shift
90     if [ $# -lt 1 ]; then
91       echo "usage: autogen.sh --build-coldfire <crossroot>" >&2
92       exit 1
93     fi
94     crossdir="$1"
95     shift
96
97     host=m68k-elf
98     crossprefix=${host}-
99     if [ ! -f $tsdir/scripts/config.guess ]; then
100         echo "$tsdir/scripts/config.guess not found" >&2
101         exit 1
102     fi
103     build=`$tsdir/scripts/config.guess`
104         
105     if [ -f "$tsdir/config.log" ]; then
106         if ! head $tsdir/config.log | grep m68k-elf >/dev/null; then
107             echo "Pease run a 'make distclean' first" >&2
108             exit 1
109         fi
110     fi
111
112     crossbindir=$crossdir/bin
113     CC=${crossbindir}/${crossprefix}gcc
114     CPP=${crossbindir}/cpp
115     AR=${crossbindir}/${crossprefix}ar
116     RANLIB=${crossbindir}/${crossprefix}ranlib
117
118     CFLAGS="-Os -g -fomit-frame-pointer"
119     CFLAGS="$CFLAGS -m5307 -DCONFIG_COLDFIRE"
120     CFLAGS="$CFLAGS -Dlinux -D__linux__ -Dunix -D__uClinux__ -DEMBED"
121     CFLAGS="$CFLAGS -fno-builtin -msep-data"
122     LDFLAGS="-Wl,-elf2flt -Wl,-move-rodata -nostartfiles"
123     LDFLAGS="$LDFLAGS ${crossdir}/m68k-elf/lib/crt0.o"
124     LIBS="-lc"
125
126     disable_foo_tests=""
127     if [ -n "$lib_config_files" ]; then
128         for i in $lib_config_files; do
129             j=`echo $i | tr '[a-z-]' '[A-Z_]'`
130             eval "$j=${crossbindir}/$i"
131             export $j
132             disable_foo_tests="$disable_foo_tests --disable-`echo $i| \
133                            sed 's,-config$,,'`-test"
134             if [ ! -f "${crossbindir}/$i" ]; then                   
135                 echo "$i not installed for ColdFire" >&2
136                 DIE=yes
137             fi
138         done
139     fi
140     [ $DIE = yes ] && exit 1
141
142     $tsdir/configure --build=${build} --host=${host} \
143                 ${disable_foo_tests} \
144                 --disable-dynload \
145                 --disable-exec \
146                 --disable-photo-viewers \
147                 --disable-keyserver-helpers \
148                 --disable-ldap \
149                 --disable-mailto \
150                 --disable-largefile \
151                 --disable-asm \
152                 --disable-nls $* \
153                 CC="$CC" CPP="$CPP" AR="$AR" RANLIB="$RANLIB" \
154                 CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" LIBS="$LIBS"
155     exit $?
156 fi
157
158
159 # This is the special case to build on a ColdFire platform under 
160 # the uClinux kernel with uClinux-dist.  Tested on a MCF4249C3 board.
161 if test "$1" = "--build-uclinux"; then
162     tmp=`dirname $0`
163     tsdir=`cd "$tmp"; cd ..; pwd`
164     shift
165
166     if [ ! -f $tsdir/scripts/config.guess ]; then
167         echo "$tsdir/scripts/config.guess not found" >&2
168         exit 1
169     fi
170     build=`$tsdir/scripts/config.guess`
171     host=m68k-elf
172         
173     if [ -f "$tsdir/config.log" ]; then
174         if ! head $tsdir/config.log | grep m68k-elf >/dev/null; then
175             echo "Please run a 'make distclean' first" >&2
176             exit 1
177         fi
178     fi
179
180     $tsdir/configure --build=${build} --host=${host} \
181                 ${disable_foo_tests} \
182                 --disable-dynload \
183                 --disable-exec \
184                 --disable-photo-viewers \
185                 --disable-keyserver-helpers \
186                 --disable-ldap \
187                 --disable-mailto \
188                 --disable-largefile \
189                 --disable-asm \
190                 --disable-nls $* \
191                 CC="$CC" CPP="$CPP" AR="$AR" RANLIB="$RANLIB" \
192                 CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" LIBS="$LDLIBS"
193     exit $?
194 fi
195
196
197
198 if ($AUTOCONF --version) < /dev/null > /dev/null 2>&1 ; then
199     if ($AUTOCONF --version | awk 'NR==1 { if( $3 >= '$autoconf_vers') \
200                                exit 1; exit 0; }');
201     then
202        echo "**Error**: "\`autoconf\'" is too old."
203        echo '           (version ' $autoconf_vers ' or newer is required)'
204        DIE="yes"
205     fi
206 else
207     echo
208     echo "**Error**: You must have "\`autoconf\'" installed to compile $PGM."
209     echo '           (version ' $autoconf_vers ' or newer is required)'
210     DIE="yes"
211 fi
212
213 if ($AUTOMAKE --version) < /dev/null > /dev/null 2>&1 ; then
214   if ($AUTOMAKE --version | awk 'NR==1 { if( $4 >= '$automake_vers') \
215                              exit 1; exit 0; }');
216      then
217      echo "**Error**: "\`automake\'" is too old."
218      echo '           (version ' $automake_vers ' or newer is required)'
219      DIE="yes"
220   fi
221   if ($ACLOCAL --version) < /dev/null > /dev/null 2>&1; then
222     if ($ACLOCAL --version | awk 'NR==1 { if( $4 >= '$aclocal_vers' ) \
223                                                 exit 1; exit 0; }' );
224     then
225       echo "**Error**: "\`aclocal\'" is too old."
226       echo '           (version ' $aclocal_vers ' or newer is required)'
227       DIE="yes"
228     fi
229   else
230     echo
231     echo "**Error**: Missing "\`aclocal\'".  The version of "\`automake\'
232     echo "           installed doesn't appear recent enough."
233     DIE="yes"
234   fi
235 else
236     echo
237     echo "**Error**: You must have "\`automake\'" installed to compile $PGM."
238     echo '           (version ' $automake_vers ' or newer is required)'
239     DIE="yes"
240 fi
241
242
243 if (gettext --version </dev/null 2>/dev/null | awk 'NR==1 { split($4,A,"."); \
244     X=10000*A[1]+100*A[2]+A[3]; echo X; if( X >= 1201 ) exit 1; exit 0}')
245     then
246     echo "**Error**: You must have "\`gettext\'" installed to compile $PGM."
247     echo '           (version 0.12.1 or newer is required; get'
248     echo '            ftp://alpha.gnu.org/gnu/gettext/gettext-0.12.1.tar.gz'
249     echo '            or install the latest Debian package)'
250     DIE="yes"
251 fi
252
253
254 if test "$DIE" = "yes"; then
255     exit 1
256 fi
257
258 echo "Running aclocal -I m4 ${ACLOCAL_FLAGS:+$ACLOCAL_FLAGS }..."
259 $ACLOCAL -I m4 $ACLOCAL_FLAGS
260 echo "Running autoheader..."
261 $AUTOHEADER
262 echo "Running automake --gnu ..."
263 $AUTOMAKE --gnu;
264 echo "Running autoconf..."
265 $AUTOCONF
266
267 echo "You can now run \"./configure --enable-maintainer-mode\" and then \"make\"."
268