Add --enable-graphite option to build script
[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 ENABLE_GRAPHITE=no
197 AC_ARG_ENABLE([graphite],
198               AC_HELP_STRING([--enable-graphite],
199                              [Enable Graphite optimization @<:@default=no@:>@]))
200 if test x${enableval} != xyes; then
201   graphite=no
202 fi
203 if test "$GCC_MIN_VERSION_4_5_0" == "no"; then
204   graphite=no
205 fi
206 ENABLE_GRAPHITE=$graphite
207 AC_SUBST(ENABLE_GRAPHITE)
208
209 # package to source path
210 case $srcdir in
211  /* | [A-Za-z]:*) package_to_srcdir=$srcdir ;;
212  *) package_to_srcdir=../$srcdir ;;
213 esac
214 AC_SUBST(package_to_srcdir)
215 #
216 # Specify tool component versions
217 #
218
219 # macro to check that we have a package. A package x exists if any one
220 # of the following exists (x is in the format of "tool-version"):
221 # 1. tool/x
222 # 2. tool/x.tar.gz
223 # 3. tool/x.tgz
224 # 4. tool/x.tar.bz2
225 m4_pattern_allow([^AC_MSG_ERROR$])
226 AC_DEFUN([ANDROID_CHECK_PACKAGE],
227 [x=$1; tool=$(echo "$x" | sed -e 's/-.*//'); version=$(echo "$x" | sed -e 's/[[^-]]*-//'); \
228 if test \( ! -d $srcdir/../$tool/$1 \) -a \( x"$version" != x"none"  \) ; then
229   if test -f $srcdir/../$tool/$1.tar ; then
230     mkdir -p temp-src && tar -C temp-src -xf $srcdir/../$tool/$1.tar
231   elif test -f $srcdir/../$tool/$1.tar.gz ; then
232     mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../$tool/$1.tar.gz
233   elif test -f $srcdir/../$tool/$1.tgz ; then
234     mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../$tool/$1.tgz
235   elif test -f $srcdir/../$tool/$1.tar.bz2 ; then
236     mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../$tool/$1.tar.bz2
237   elif test -f $srcdir/../tarballs/$1.tar ; then
238     mkdir -p temp-src && tar -C temp-src -xf $srcdir/../tarballs/$1.tar
239   elif test -f $srcdir/../tarballs/$1.tar.gz ; then
240     mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../tarballs/$1.tar.gz
241   elif test -f $srcdir/../tarballs/$1.tgz ; then
242     mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../tarballs/$1.tgz
243   elif test -f $srcdir/../tarballs/$1.tar.bz2 ; then
244     mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../tarballs/$1.tar.bz2
245   else
246     AC_MSG_ERROR('package $1 does not exist.')
247   fi
248 fi ])
249
250 # binutils version (default is 2.17)
251 AC_MSG_CHECKING([target binutils version to build])
252 AC_ARG_WITH([binutils-version],
253   [  --with-binutils-version=VERSION
254                           use binutils-VERSION (default is 2.17)],
255   [if test x"$withval" != x ; then
256      BINUTILS_VERSION="$withval"
257    fi],
258 [BINUTILS_VERSION="2.17"])
259 AC_MSG_RESULT($BINUTILS_VERSION)
260 AC_SUBST(BINUTILS_VERSION)
261 ANDROID_CHECK_PACKAGE(binutils-${BINUTILS_VERSION})
262
263 # gold binutils version (default is the same version as the main
264 # binutils package).
265 GOLD_VERSION="$BINUTILS_VERSION"
266 AC_MSG_CHECKING([target gold binutils version to build])
267 AC_ARG_WITH([gold-version],
268   [  --with-gold-version=VERSION
269                           use binutils-VERSION for gold (default is the main binutils version)],
270   [if test x"$withval" != x ; then
271      GOLD_VERSION="$withval"
272    fi])
273 AC_MSG_RESULT($GOLD_VERSION)
274 AC_SUBST(GOLD_VERSION)
275
276 # Skip check if we are using the main binutils for gold.
277 if test x"$GOLD_VERSION" != x"$BINUTILS_VERSION" ; then
278   ANDROID_CHECK_PACKAGE(binutils-${GOLD_VERSION})
279 fi
280
281 # gcc version (default is 4.2.1)
282 AC_MSG_CHECKING([target gcc version to build])
283 AC_ARG_WITH([gcc-version],
284   [  --with-gcc-version=VERSION
285                           use gcc-VERSION (default is 4.2.1)],
286   [if test x"$withval" != x ; then
287      GCC_VERSION="$withval"
288    fi],
289 [GCC_VERSION="4.2.1"])
290 AC_MSG_RESULT($GCC_VERSION)
291 AC_SUBST(GCC_VERSION)
292 ANDROID_CHECK_PACKAGE(gcc-${GCC_VERSION})
293
294 # figure out if we need to build gmp and mpfr for gcc 4.3.0+ 
295 gcc_version_file="${srcdir}/../gcc/gcc-${GCC_VERSION}/gcc/BASE-VER"
296 if test -f "${gcc_version_file}"; then
297   GCC_MAJOR=`head -n 1 $gcc_version_file | sed  -e "s/[[^0-9]].*//"`
298   GCC_MINOR=`head -n 1 $gcc_version_file | \
299             sed  -e "s/^[[0-9]]*\.//" -e "s/[[^0-9]].*//"`
300   if test "$GCC_MAJOR" -gt 4 -o \
301           \( "$GCC_MAJOR" -eq 4 -a "$GCC_MINOR" -ge 3 \) ; then
302     GCC_MIN_VERSION_4_3_0="yes"
303   else
304     GCC_MIN_VERSION_4_3_0="no"
305   fi
306   if test "$GCC_MAJOR" -gt 4 -o \
307               \( "$GCC_MAJOR" -eq 4 -a "$GCC_MINOR" -ge 5 \) ; then
308     GCC_MIN_VERSION_4_5_0="yes"
309   else
310     GCC_MIN_VERSION_4_5_0="no"
311   fi
312 else
313   # No version file, assume it is trunk
314   GCC_MIN_VERSION_4_3_0="yes"
315   GCC_MIN_VERSION_4_5_0="yes"
316 fi
317 AC_SUBST(GCC_MIN_VERSION_4_3_0)
318 AC_SUBST(GCC_MIN_VERSION_4_5_0)
319
320 # newlib version (default is 1.16.0)
321 # newlib is only used for arm-newlib-eabi for testing
322 if test x$target == xarm-newlib-elf ; then 
323 AC_MSG_CHECKING([target newlib version to build])
324 AC_ARG_WITH([newlib-version],
325   [  --with-newlib-version=VERSION
326                           use newlib-VERSION (default is 1.16.0)],
327   [if test x"$withval" != x ; then
328      NEWLIB_VERSION="$withval"
329    fi],
330 [NEWLIB_VERSION="1.16.0"])
331 AC_MSG_RESULT($NEWLIB_VERSION)
332 AC_SUBST(NEWLIB_VERSION)
333 ANDROID_CHECK_PACKAGE(newlib-${NEWLIB_VERSION})
334 fi
335
336 if test "$GCC_MIN_VERSION_4_3_0" == "yes"; then
337 # gmp version (default is 4.2.2)
338 # gmp is only used for gcc version higher than 4.3.0
339 AC_MSG_CHECKING([gmp version])
340 AC_ARG_WITH([gmp-version],
341   [  --with-gmp-version=VERSION
342                           use gmp-VERSION (default is 4.2.2)],
343   [if test x"$withval" != x ; then
344      GMP_VERSION="$withval"
345    fi],
346 [GMP_VERSION="4.2.2"])
347 AC_MSG_RESULT($GMP_VERSION)
348 ANDROID_CHECK_PACKAGE(gmp-${GMP_VERSION})
349
350 # mpfr version (default is 2.3.0)
351 # mpfr is only used for gcc version higher than 4.3.0
352 AC_MSG_CHECKING([mpfr version])
353 AC_ARG_WITH([mpfr-version],
354   [  --with-mpfr-version=VERSION
355                           use mpfr-VERSION (default is 2.3.0)],
356   [if test x"$withval" != x ; then
357      MPFR_VERSION="$withval"
358    fi],
359 [MPFR_VERSION="2.3.0"])
360 AC_MSG_RESULT($MPFR_VERSION)
361 ANDROID_CHECK_PACKAGE(mpfr-${MPFR_VERSION})
362
363 fi
364 AC_SUBST(GMP_VERSION)
365 AC_SUBST(MPFR_VERSION)
366
367 if test "$GCC_MIN_VERSION_4_5_0" == "yes"; then
368 # mpc version (default is 0.8.1)
369 # mpc is only used for gcc version higher than 4.5.0
370 AC_MSG_CHECKING([mpc version])
371 AC_ARG_WITH([mpc-version],
372   [  --with-mpc-version=VERSION
373                           use mpc-VERSION (default is 0.8.1)],
374   [if test x"$withval" != x; then
375      MPC_VERSION="$withval"
376    fi],
377 [MPC_VERSION="0.8.1"])
378 AC_MSG_RESULT($MPC_VERSION)
379 ANDROID_CHECK_PACKAGE(mpc-${MPC_VERSION})
380 fi
381 AC_SUBST(MPC_VERSION)
382
383 if test "$ENABLE_GRAPHITE" == "yes"; then
384 # ppl version (default is 0.11.2)
385 # ppl is only used for gcc 4.5+ with graphite optimization.
386 AC_MSG_CHECKING([ppl version])
387 AC_ARG_WITH([ppl-version],
388   [  --with-ppl-version=VERSION
389                           use ppl-VERSION (default is 0.11.2)],
390   [if test x"$withval" != x ; then
391      PPL_VERSION="$withval"
392    fi],
393 [PPL_VERSION="0.11.2"])
394 AC_MSG_RESULT($PPL_VERSION)
395 ANDROID_CHECK_PACKAGE(ppl-${PPL_VERSION})
396 fi
397 AC_SUBST(PPL_VERSION)
398
399 if test "$ENABLE_GRAPHITE" == "yes"; then
400 # cloog-ppl or cloog version (default is 0.15.9)
401 # cloog is only used for gcc 4.5+ with graphite optimization.
402 AC_MSG_CHECKING([cloog version])
403 AC_ARG_WITH([cloog-version],
404   [  --with-cloog-version=VERSION
405                           use cloog-VERSION (default is 0.15.9)],
406   [if test x"$withval" != x ; then
407      CLOOG_VERSION="$withval"
408    fi],
409 [CLOOG_VERSION="0.15.9"])
410 AC_MSG_RESULT($CLOOG_VERSION)
411 case $CLOOG_VERSION in
412   0.15*)
413     # CLooG/PPL relies on the PPL for version 0.15.x
414     CLOOG_VERSION="ppl-$CLOOG_VERSION"
415     ;;
416   0.16*)
417     # CLooG 0.16.x has its own embedded polyhedral library
418     ;;
419   *)
420     AC_MSG_ERROR(Unsupported cloog version);
421 esac
422 ANDROID_CHECK_PACKAGE(cloog-${CLOOG_VERSION})
423 fi
424 AC_SUBST(CLOOG_VERSION)
425
426 # gdb version (default is 6.6)
427 AC_MSG_CHECKING([target gdb version to build])
428 AC_ARG_WITH([gdb-version],
429   [  --with-gdb-version=VERSION
430                           use gdb-VERSION (default is 6.6)],
431   [if test x"$withval" != x ; then
432      GDB_VERSION="$withval"
433    fi],
434 [GDB_VERSION="6.6"])
435 AC_MSG_RESULT($GDB_VERSION)
436 AC_SUBST(GDB_VERSION)
437 ANDROID_CHECK_PACKAGE(gdb-${GDB_VERSION})
438
439 # Sysroot location
440 AC_ARG_WITH([sysroot],
441   [  --with-sysroot=DIR
442                           use target sysroot in DIR],
443   [if test x"$withval" != x ; then
444      if test $build != $host ; then
445        case "$withval" in
446          "$prefix"|"${prefix%/}/"*)
447            ;;
448          *)
449            AC_MSG_ERROR('Target sysroot must be a subdirectory of <prefix> for canadian cross build $prefix ; $withval')
450            ;;
451        esac
452      fi
453
454      sysroot="$withval"
455    fi],
456 [if test $build != $host ; then
457    AC_MSG_ERROR('Target sysroot is not set for canadian cross build')
458  fi])
459 AC_SUBST(sysroot)
460
461 # Specify a location for mpc
462 AC_ARG_WITH(mpc, [  --with-mpc=PATH
463                           specify prefix directory for installed MPC package.],
464   [if test -d "$withval" ; then
465      have_mpc="$withval"
466      have_mpfr="$withval"
467      have_gmp="$withval"
468    elif test x"$withval" != x"no"; then
469      AC_MSG_ERROR(invalid value for --with-mpc)
470    else
471      have_mpc=no
472    fi],
473   [have_mpc=no])
474 AC_SUBST(have_mpc)
475
476 # Specify a location for mpfr
477 AC_ARG_WITH(mpfr, [  --with-mpfr=PATH
478                           specify prefix directory for installed MPFR package.],
479   [if test -d "$withval" ; then
480      have_mpfr="$withval"
481      have_gmp="$withval"
482    elif test x"$withval" != x"no"; then
483      AC_MSG_ERROR(invalid value for --with-mpfr)
484    else
485      have_mpfr=no
486    fi],
487   [have_mpfr=no])
488 AC_SUBST(have_mpfr)
489
490 # Specify a location for gmp
491 AC_ARG_WITH(gmp, [  --with-gmp=PATH
492                           specify prefix directory for the installed GMP package.],
493   [if test -d "$withval" ; then
494      have_gmp="$withval"
495    elif test x"$withval" != x"no"; then
496      AC_MSG_ERROR(invalid value for --with-gmp)
497    else
498      have_gmp=no
499    fi],
500   [have_gmp=no])
501 AC_SUBST(have_gmp)
502
503 # Specify a location for ppl
504 AC_ARG_WITH(ppl, [  --with-ppl=PATH
505                           specify prefix directory for the installed PPL package.],
506   [if test -d "$withval" ; then
507      have_ppl="$withval"
508    elif test x"$withval" != x"no"; then
509      AC_MSG_ERROR(invalid value for --with-ppl)
510    else
511      have_ppl=no
512    fi],
513   [have_ppl=no])
514 AC_SUBST(have_ppl)
515
516 # Specify a location for cloog
517 AC_ARG_WITH(cloog, [  --with-cloog=PATH
518                           specify prefix directory for the installed CLooG package.],
519   [if test -d "$withval" ; then
520      have_cloog="$withval"
521    elif test x"$withval" != x"no"; then
522      AC_MSG_ERROR(invalid value for --with-cloog)
523    else
524      have_cloog=no
525    fi],
526   [have_cloog=no])
527 AC_SUBST(have_cloog)
528
529 AC_OUTPUT