- Also install libintl.a and libiberty.
[android/toolchain/build.git] / configure.ac
1 #   Copyright (C) 2008, 2010, 2011 Google Inc.
2 #
3 # This file is free software; you can redistribute it and/or modify it
4 # under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful, but
9 # WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # General Public License for more details.
12 #
13
14 AC_INIT(android-tools,2.0)
15 AC_PREREQ(2.59)
16
17 AC_CONFIG_FILES([Makefile])
18
19 AC_CANONICAL_SYSTEM
20
21 # Get 'install' or 'install-sh' and its variants.
22 AC_PROG_INSTALL
23
24 # We only allow the following 3 targets:
25 # 1. arm-linux-androideabi (primary target)
26 # 2. arm-eabi (for Android kernel)
27 # 3. arm-newlib-eabi (for gcc testing)
28 # 4.i[3456]86-*-linux-gnu, x86-*-linux-gnu (for x86 targets)
29
30 GDB_TARGET=$target
31 case $target in
32   arm-unknown-linux-androideabi | arm-unknown-eabi)
33     BUILD_ANDROID_GCC=yes
34     GDB_TARGET=arm-elf-linux
35     ;;
36   arm-newlib-elf)
37     BUILD_ANDROID_GCC=no
38     ;;
39   i[[3456]]86-*-linux-gnu | x86_64-*-linux-gnu)
40     BUILD_ANDROID_GCC=yes
41     ;;
42   *)
43     AC_MSG_ERROR(Unsupported target $target.);
44 esac
45 AC_SUBST(BUILD_ANDROID_GCC)
46 AC_SUBST(GDB_TARGET)
47 AC_ARG_PROGRAM
48
49 # TOPLEVEL_CONFIGURE_ARGUMENTS lifted from top-level configure.ac in gcc.
50
51 # Export original configure arguments for use by sub-configures.
52 # Quote arguments with shell meta charatcers.
53 TOPLEVEL_CONFIGURE_ARGUMENTS=
54 TOPLEVEL_NO_GOLD_CONFIGURE_ARGUMENTS=
55
56 set -- "$progname" "$@"
57 for ac_arg
58 do
59   case "$ac_arg" in
60   *" "*|*"      "*|*[[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\']]*)
61     ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
62     # if the argument is of the form -foo=baz, quote the baz part only
63     ac_arg=`echo "'$ac_arg'" | sed "s/^'\([[-a-zA-Z0-9]]*=\)/\\1'/"` ;;
64   *) ;;
65   esac
66   # Add the quoted argument to the list.
67   TOPLEVEL_CONFIGURE_ARGUMENTS="$TOPLEVEL_CONFIGURE_ARGUMENTS $ac_arg"
68 done
69 if test "$silent" = yes; then
70   TOPLEVEL_CONFIGURE_ARGUMENTS="$TOPLEVEL_CONFIGURE_ARGUMENTS --silent"
71 fi
72 # Remove the initial space we just introduced and, as these will be
73 # expanded by make, quote '$'.
74 TOPLEVEL_CONFIGURE_ARGUMENTS=`echo "x$TOPLEVEL_CONFIGURE_ARGUMENTS" | sed -e 's/^x *//' -e 's,\\$,$$,g'`
75 AC_SUBST(TOPLEVEL_CONFIGURE_ARGUMENTS)
76
77 # Base args.  Strip norecursion, cache-file, srcdir, host, build,
78 # target, nonopt, and variable assignments.  These are the ones we
79 # might not want to pass down to subconfigures.  Also strip
80 # program-prefix, program-suffix, and program-transform-name, so that
81 # we can pass down a consistent program-transform-name.
82 baseargs=
83 keep_next=no
84 skip_next=no
85 eval "set -- $ac_configure_args"
86 for ac_arg
87 do
88   if test X"$skip_next" = X"yes"; then
89     skip_next=no
90     continue
91   fi
92   if test X"$keep_next" = X"yes"; then
93     case $ac_arg in
94       *\'*)
95         ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
96     esac
97     baseargs="$baseargs '$ac_arg'"
98     keep_next=no
99     continue
100   fi
101
102   # Handle separated arguments.  Based on the logic generated by
103   # autoconf 2.59.
104   case $ac_arg in
105     *=* | --config-cache | -C | -disable-* | --disable-* \
106       | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
107       | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
108       | -with-* | --with-* | -without-* | --without-* | --x)
109       separate_arg=no
110       ;;
111     -*)
112       separate_arg=yes
113       ;;
114     *)
115       separate_arg=no
116       ;;
117   esac
118
119   case "$ac_arg" in
120     --no*)
121       continue
122       ;;
123     --c* | \
124     --sr* | \
125     --ho* | \
126     --bu* | \
127     --t* | \
128     --program-* | \
129     -cache_file* | \
130     -srcdir* | \
131     -host* | \
132     -build* | \
133     -target* | \
134     -program-prefix* | \
135     -program-suffix* | \
136     -program-transform-name* )
137       skip_next=$separate_arg
138       continue
139       ;;
140     -*)
141       # An option.  Add it.
142       case $ac_arg in
143         *\'*)
144           ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
145       esac
146       baseargs="$baseargs '$ac_arg'"
147       keep_next=$separate_arg
148       ;;
149     *)
150       # Either a variable assignment, or a nonopt (triplet).  Don't
151       # pass it down; let the Makefile handle this.
152       continue
153       ;;
154   esac
155 done
156 # Remove the initial space we just introduced and, as these will be
157 # expanded by make, quote '$'.
158 baseargs=`echo "x$baseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'`
159
160 # Add in --program-transform-name, after --program-prefix and
161 # --program-suffix have been applied to it.  Autoconf has already
162 # doubled dollar signs and backslashes in program_transform_name; we want
163 # the backslashes un-doubled, and then the entire thing wrapped in single
164 # quotes, because this will be expanded first by make and then by the shell.
165 # Also, because we want to override the logic in subdir configure scripts to
166 # choose program_transform_name, replace any s,x,x, with s,y,y,.
167 sed -e "s,\\\\\\\\,\\\\,g; s,','\\\\'',g; s/s,x,x,/s,y,y,/" <<EOF_SED > conftestsed.out
168 ${program_transform_name}
169 EOF_SED
170 gcc_transform_name=`cat conftestsed.out`
171 rm -f conftestsed.out
172 baseargs="$baseargs --program-transform-name='${gcc_transform_name}'"
173 if test "$silent" = yes; then
174   baseargs="$baseargs --silent"
175 fi
176
177 AC_SUBST(baseargs)
178
179 # Strip --{enable|disable}-{gold|ld}* from baseargs.  These are used for the
180 # gold binutils.  Note that baseargs are quoted.
181 gold_baseargs=
182 for ac_arg in $baseargs
183 do
184   case $ac_arg in
185   \'--enable-gold\' | \'--enable-gold=*\' | \'--disable-gold\' | \
186    \'--enable-ld\' | \'--enable-ld=*\' | \'--disable-ld\' )
187     ;;
188   *)
189     gold_baseargs="$gold_baseargs $ac_arg"
190     ;;
191   esac
192 done
193
194 AC_SUBST(gold_baseargs)
195
196 # package to source path
197 case $srcdir in
198  /* | [A-Za-z]:*) package_to_srcdir=$srcdir ;;
199  *) package_to_srcdir=../$srcdir ;;
200 esac
201 AC_SUBST(package_to_srcdir)
202 #
203 # Specify tool component versions
204 #
205
206 # macro to check that we have a package. A package x exists if any one
207 # of the following exists (x is in the format of "tool-version"):
208 # 1. tool/x
209 # 2. tool/x.tar.gz
210 # 3. tool/x.tgz
211 # 4. tool/x.tar.bz2
212 m4_pattern_allow([^AC_MSG_ERROR$])
213 AC_DEFUN([ANDROID_CHECK_PACKAGE],
214 [x=$1; tool=$(echo "$x" | sed -e 's/-.*//'); version=$(echo "$x" | sed -e 's/[[^-]]*-//'); \
215 if test \( ! -d $srcdir/../$tool/$1 \) -a \( x"$version" != x"none"  \) ; then
216   if test -f $srcdir/../$tool/$1.tar ; then
217     mkdir -p temp-src && tar -C temp-src -xf $srcdir/../$tool/$1.tar
218   elif test -f $srcdir/../$tool/$1.tar.gz ; then
219     mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../$tool/$1.tar.gz
220   elif test -f $srcdir/../$tool/$1.tgz ; then
221     mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../$tool/$1.tgz
222   elif test -f $srcdir/../$tool/$1.tar.bz2 ; then
223     mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../$tool/$1.tar.bz2
224   elif test -f $srcdir/../tarballs/$1.tar ; then
225     mkdir -p temp-src && tar -C temp-src -xf $srcdir/../tarballs/$1.tar
226   elif test -f $srcdir/../tarballs/$1.tar.gz ; then
227     mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../tarballs/$1.tar.gz
228   elif test -f $srcdir/../tarballs/$1.tgz ; then
229     mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../tarballs/$1.tgz
230   elif test -f $srcdir/../tarballs/$1.tar.bz2 ; then
231     mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../tarballs/$1.tar.bz2
232   else
233     AC_MSG_ERROR('package $1 does not exist.')
234   fi
235 fi ])
236
237 # binutils version (default is 2.17)
238 AC_MSG_CHECKING([target binutils version to build])
239 AC_ARG_WITH([binutils-version],
240   [  --with-binutils-version=VERSION
241                           use binutils-VERSION (default is 2.17)],
242   [if test x"$withval" != x ; then
243      BINUTILS_VERSION="$withval"
244    fi],
245 [BINUTILS_VERSION="2.17"])
246 AC_MSG_RESULT($BINUTILS_VERSION)
247 AC_SUBST(BINUTILS_VERSION)
248 ANDROID_CHECK_PACKAGE(binutils-${BINUTILS_VERSION})
249
250 # gold binutils version (default is the same version as the main
251 # binutils package).
252 GOLD_VERSION="$BINUTILS_VERSION"
253 AC_MSG_CHECKING([target gold binutils version to build])
254 AC_ARG_WITH([gold-version],
255   [  --with-gold-version=VERSION
256                           use binutils-VERSION for gold (default is the main binutils version)],
257   [if test x"$withval" != x ; then
258      GOLD_VERSION="$withval"
259    fi])
260 AC_MSG_RESULT($GOLD_VERSION)
261 AC_SUBST(GOLD_VERSION)
262
263 # Skip check if we are using the main binutils for gold.
264 if test x"$GOLD_VERSION" != x"$BINUTILS_VERSION" ; then
265   ANDROID_CHECK_PACKAGE(binutils-${GOLD_VERSION})
266 fi
267
268 # gcc version (default is 4.2.1)
269 AC_MSG_CHECKING([target gcc version to build])
270 AC_ARG_WITH([gcc-version],
271   [  --with-gcc-version=VERSION
272                           use gcc-VERSION (default is 4.2.1)],
273   [if test x"$withval" != x ; then
274      GCC_VERSION="$withval"
275    fi],
276 [GCC_VERSION="4.2.1"])
277 AC_MSG_RESULT($GCC_VERSION)
278 AC_SUBST(GCC_VERSION)
279 ANDROID_CHECK_PACKAGE(gcc-${GCC_VERSION})
280
281 # figure out if we need to build gmp and mpfr for gcc 4.3.0+ 
282 gcc_version_file="${srcdir}/../gcc/gcc-${GCC_VERSION}/gcc/BASE-VER"
283 if test -f "${gcc_version_file}"; then
284   GCC_MAJOR=`head -n 1 $gcc_version_file | sed  -e "s/[[^0-9]].*//"`
285   GCC_MINOR=`head -n 1 $gcc_version_file | \
286             sed  -e "s/^[[0-9]]*\.//" -e "s/[[^0-9]].*//"`
287   if test "$GCC_MAJOR" -gt 4 -o \
288           \( "$GCC_MAJOR" -eq 4 -a "$GCC_MINOR" -ge 3 \) ; then
289     GCC_MIN_VERSION_4_3_0="yes"
290   else
291     GCC_MIN_VERSION_4_3_0="no"
292   fi
293   if test "$GCC_MAJOR" -gt 4 -o \
294               \( "$GCC_MAJOR" -eq 4 -a "$GCC_MINOR" -ge 5 \) ; then
295     GCC_MIN_VERSION_4_5_0="yes"
296   else
297     GCC_MIN_VERSION_4_5_0="no"
298   fi
299 else
300   # No version file, assume it is trunk
301   GCC_MIN_VERSION_4_3_0="yes"
302   GCC_MIN_VERSION_4_5_0="yes"
303 fi
304 AC_SUBST(GCC_MIN_VERSION_4_3_0)
305 AC_SUBST(GCC_MIN_VERSION_4_5_0)
306
307 # newlib version (default is 1.16.0)
308 # newlib is only used for arm-newlib-eabi for testing
309 if test x$target == xarm-newlib-elf ; then 
310 AC_MSG_CHECKING([target newlib version to build])
311 AC_ARG_WITH([newlib-version],
312   [  --with-newlib-version=VERSION
313                           use newlib-VERSION (default is 1.16.0)],
314   [if test x"$withval" != x ; then
315      NEWLIB_VERSION="$withval"
316    fi],
317 [NEWLIB_VERSION="1.16.0"])
318 AC_MSG_RESULT($NEWLIB_VERSION)
319 AC_SUBST(NEWLIB_VERSION)
320 ANDROID_CHECK_PACKAGE(newlib-${NEWLIB_VERSION})
321 fi
322
323 if test "$GCC_MIN_VERSION_4_3_0" == "yes"; then
324 # gmp version (default is 4.2.2)
325 # gmp is only used for gcc version higher than 4.3.0
326 AC_MSG_CHECKING([gmp version])
327 AC_ARG_WITH([gmp-version],
328   [  --with-gmp-version=VERSION
329                           use gmp-VERSION (default is 4.2.2)],
330   [if test x"$withval" != x ; then
331      GMP_VERSION="$withval"
332    fi],
333 [GMP_VERSION="4.2.2"])
334 AC_MSG_RESULT($GMP_VERSION)
335 ANDROID_CHECK_PACKAGE(gmp-${GMP_VERSION})
336
337 # mpfr version (default is 2.3.0)
338 # mpfr is only used for gcc version higher than 4.3.0
339 AC_MSG_CHECKING([mpfr version])
340 AC_ARG_WITH([mpfr-version],
341   [  --with-mpfr-version=VERSION
342                           use mpfr-VERSION (default is 2.3.0)],
343   [if test x"$withval" != x ; then
344      MPFR_VERSION="$withval"
345    fi],
346 [MPFR_VERSION="2.3.0"])
347 AC_MSG_RESULT($MPFR_VERSION)
348 ANDROID_CHECK_PACKAGE(mpfr-${MPFR_VERSION})
349
350 fi
351 AC_SUBST(GMP_VERSION)
352 AC_SUBST(MPFR_VERSION)
353
354 if test "$GCC_MIN_VERSION_4_5_0" == "yes"; then
355 # mpc version (default is 0.8.1)
356 # mpc is only used for gcc version higher than 4.5.0
357 AC_MSG_CHECKING([mpc version])
358 AC_ARG_WITH([mpc-version],
359   [  --with-mpc-version=VERSION
360                           use mpc-VERSION (default is 0.8.1)],
361   [if test x"$withval" != x; then
362      MPC_VERSION="$withval"
363    fi],
364 [MPC_VERSION="0.8.1"])
365 AC_MSG_RESULT($MPC_VERSION)
366 ANDROID_CHECK_PACKAGE(mpc-${MPC_VERSION})
367 fi
368 AC_SUBST(MPC_VERSION)
369
370 # gdb version (default is 6.6)
371 AC_MSG_CHECKING([target gdb version to build])
372 AC_ARG_WITH([gdb-version],
373   [  --with-gdb-version=VERSION
374                           use gdb-VERSION (default is 6.6)],
375   [if test x"$withval" != x ; then
376      GDB_VERSION="$withval"
377    fi],
378 [GDB_VERSION="6.6"])
379 AC_MSG_RESULT($GDB_VERSION)
380 AC_SUBST(GDB_VERSION)
381 ANDROID_CHECK_PACKAGE(gdb-${GDB_VERSION})
382
383 # Sysroot location
384 AC_ARG_WITH([sysroot],
385   [  --with-sysroot=DIR
386                           use target sysroot in DIR],
387   [if test x"$withval" != x ; then
388      if test $build != $host ; then
389        case "$withval" in
390          "$prefix"|"${prefix%/}/"*)
391            ;;
392          *)
393            AC_MSG_ERROR('Target sysroot must be a subdirectory of <prefix> for canadian cross build $prefix ; $withval')
394            ;;
395        esac
396      fi
397
398      sysroot="$withval"
399    fi],
400 [if test $build != $host ; then
401    AC_MSG_ERROR('Target sysroot is not set for canadian cross build')
402  fi])
403 AC_SUBST(sysroot)
404
405 # Specify a location for mpc
406 AC_ARG_WITH(mpc, [  --with-mpc=PATH
407                           specify prefix directory for installed MPC package.],
408   [if test -d "$withval" ; then
409      have_mpc="$withval"
410      have_mpfr="$withval"
411      have_gmp="$withval"
412    elif test x"$withval" != x"no"; then
413      AC_MSG_ERROR(invalid value for --with-mpc)
414    else
415      have_mpc=no
416    fi],
417   [have_mpc=no])
418 AC_SUBST(have_mpc)
419
420 # Specify a location for mpfr
421 AC_ARG_WITH(mpfr, [  --with-mpfr=PATH
422                           specify prefix directory for installed MPFR package.],
423   [if test -d "$withval" ; then
424      have_mpfr="$withval"
425      have_gmp="$withval"
426    elif test x"$withval" != x"no"; then
427      AC_MSG_ERROR(invalid value for --with-mpfr)
428    else
429      have_mpfr=no
430    fi],
431   [have_mpfr=no])
432 AC_SUBST(have_mpfr)
433
434 # Specify a location for gmp
435 AC_ARG_WITH(gmp, [  --with-gmp=PATH
436                           specify prefix directory for the installed GMP package.],
437   [if test -d "$withval" ; then
438      have_gmp="$withval"
439    elif test x"$withval" != x"no"; then
440      AC_MSG_ERROR(invalid value for --with-gmp)
441    else
442      have_gmp=no
443    fi],
444   [have_gmp=no])
445 AC_SUBST(have_gmp)
446
447 AC_OUTPUT