| # Copyright (C) 2008 Google Inc. |
| # |
| # This file is free software; you can redistribute it and/or modify it |
| # under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, but |
| # WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| # General Public License for more details. |
| # |
| |
| AC_INIT(android-tools,2.0) |
| AC_PREREQ(2.59) |
| |
| AC_CONFIG_FILES([Makefile]) |
| |
| AC_CANONICAL_SYSTEM |
| |
| # We only allow the following 3 targets: |
| # 1. arm-linux-androideabi (primary target) |
| # 2. arm-eabi (for Android kernel) |
| # 3. arm-newlib-eabi (for gcc testing) |
| # 4.i[3456]86-*-linux-gnu, x86-*-linux-gnu (for x86 targets) |
| |
| GDB_TARGET=$target |
| case $target in |
| arm-unknown-linux-androideabi | arm-unknown-eabi) |
| BUILD_ANDROID_GCC=yes |
| GDB_TARGET=arm-elf-linux |
| ;; |
| arm-newlib-elf) |
| BUILD_ANDROID_GCC=no |
| ;; |
| i[[3456]]86-*-linux-gnu | x86_64-*-linux-gnu) |
| BUILD_ANDROID_GCC=yes |
| ;; |
| *) |
| AC_MSG_ERROR(Unsupported target $target.); |
| esac |
| AC_SUBST(BUILD_ANDROID_GCC) |
| AC_SUBST(GDB_TARGET) |
| AC_ARG_PROGRAM |
| |
| # TOPLEVEL_CONFIGURE_ARGUMENTS lifted from top-level configure.ac in gcc. |
| |
| # Export original configure arguments for use by sub-configures. |
| # Quote arguments with shell meta charatcers. |
| TOPLEVEL_CONFIGURE_ARGUMENTS= |
| set -- "$progname" "$@" |
| for ac_arg |
| do |
| case "$ac_arg" in |
| *" "*|*" "*|*[[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\']]*) |
| ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` |
| # if the argument is of the form -foo=baz, quote the baz part only |
| ac_arg=`echo "'$ac_arg'" | sed "s/^'\([[-a-zA-Z0-9]]*=\)/\\1'/"` ;; |
| *) ;; |
| esac |
| # Add the quoted argument to the list. |
| TOPLEVEL_CONFIGURE_ARGUMENTS="$TOPLEVEL_CONFIGURE_ARGUMENTS $ac_arg" |
| done |
| if test "$silent" = yes; then |
| TOPLEVEL_CONFIGURE_ARGUMENTS="$TOPLEVEL_CONFIGURE_ARGUMENTS --silent" |
| fi |
| # Remove the initial space we just introduced and, as these will be |
| # expanded by make, quote '$'. |
| TOPLEVEL_CONFIGURE_ARGUMENTS=`echo "x$TOPLEVEL_CONFIGURE_ARGUMENTS" | sed -e 's/^x *//' -e 's,\\$,$$,g'` |
| AC_SUBST(TOPLEVEL_CONFIGURE_ARGUMENTS) |
| |
| # Base args. Strip norecursion, cache-file, srcdir, host, build, |
| # target, nonopt, and variable assignments. These are the ones we |
| # might not want to pass down to subconfigures. Also strip |
| # program-prefix, program-suffix, and program-transform-name, so that |
| # we can pass down a consistent program-transform-name. |
| baseargs= |
| keep_next=no |
| skip_next=no |
| eval "set -- $ac_configure_args" |
| for ac_arg |
| do |
| if test X"$skip_next" = X"yes"; then |
| skip_next=no |
| continue |
| fi |
| if test X"$keep_next" = X"yes"; then |
| case $ac_arg in |
| *\'*) |
| ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; |
| esac |
| baseargs="$baseargs '$ac_arg'" |
| keep_next=no |
| continue |
| fi |
| |
| # Handle separated arguments. Based on the logic generated by |
| # autoconf 2.59. |
| case $ac_arg in |
| *=* | --config-cache | -C | -disable-* | --disable-* \ |
| | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ |
| | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ |
| | -with-* | --with-* | -without-* | --without-* | --x) |
| separate_arg=no |
| ;; |
| -*) |
| separate_arg=yes |
| ;; |
| *) |
| separate_arg=no |
| ;; |
| esac |
| |
| case "$ac_arg" in |
| --no*) |
| continue |
| ;; |
| --c* | \ |
| --sr* | \ |
| --ho* | \ |
| --bu* | \ |
| --t* | \ |
| --program-* | \ |
| -cache_file* | \ |
| -srcdir* | \ |
| -host* | \ |
| -build* | \ |
| -target* | \ |
| -program-prefix* | \ |
| -program-suffix* | \ |
| -program-transform-name* ) |
| skip_next=$separate_arg |
| continue |
| ;; |
| -*) |
| # An option. Add it. |
| case $ac_arg in |
| *\'*) |
| ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; |
| esac |
| baseargs="$baseargs '$ac_arg'" |
| keep_next=$separate_arg |
| ;; |
| *) |
| # Either a variable assignment, or a nonopt (triplet). Don't |
| # pass it down; let the Makefile handle this. |
| continue |
| ;; |
| esac |
| done |
| # Remove the initial space we just introduced and, as these will be |
| # expanded by make, quote '$'. |
| baseargs=`echo "x$baseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'` |
| |
| # Add in --program-transform-name, after --program-prefix and |
| # --program-suffix have been applied to it. Autoconf has already |
| # doubled dollar signs and backslashes in program_transform_name; we want |
| # the backslashes un-doubled, and then the entire thing wrapped in single |
| # quotes, because this will be expanded first by make and then by the shell. |
| # Also, because we want to override the logic in subdir configure scripts to |
| # choose program_transform_name, replace any s,x,x, with s,y,y,. |
| sed -e "s,\\\\\\\\,\\\\,g; s,','\\\\'',g; s/s,x,x,/s,y,y,/" <<EOF_SED > conftestsed.out |
| ${program_transform_name} |
| EOF_SED |
| gcc_transform_name=`cat conftestsed.out` |
| rm -f conftestsed.out |
| baseargs="$baseargs --program-transform-name='${gcc_transform_name}'" |
| if test "$silent" = yes; then |
| baseargs="$baseargs --silent" |
| fi |
| |
| AC_SUBST(baseargs) |
| |
| # |
| # Check for Canadian cross, which is not supported. |
| # |
| AC_MSG_CHECKING([for Canadian cross]) |
| if test $build != $host ; then |
| AC_MSG_ERROR(Canadian cross build not supported.) |
| fi |
| AC_MSG_RESULT(no) |
| |
| # package to source path |
| case $srcdir in |
| /* | [A-Za-z]:*) package_to_srcdir=$srcdir ;; |
| *) package_to_srcdir=../$srcdir ;; |
| esac |
| AC_SUBST(package_to_srcdir) |
| # |
| # Specify tool component versions |
| # |
| |
| # macro to check that we have a package. A package x exists if any one |
| # of the following exists (x is in the format of "tool-version"): |
| # 1. tool/x |
| # 2. tool/x.tar.gz |
| # 3. tool/x.tgz |
| # 4. tool/x.tar.bz2 |
| m4_pattern_allow([^AC_MSG_ERROR$]) |
| AC_DEFUN([ANDROID_CHECK_PACKAGE], |
| [x=$1; tool=${x%-*}; \ |
| if test ! -d $srcdir/../$tool/$1 ; then |
| if test -f $srcdir/../$tool/$1.tar ; then |
| mkdir -p temp-src && tar -C temp-src -xf $srcdir/../$tool/$1.tar |
| elif test -f $srcdir/../$tool/$1.tar.gz ; then |
| mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../$tool/$1.tar.gz |
| elif test -f $srcdir/../$tool/$1.tgz ; then |
| mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../$tool/$1.tgz |
| elif test -f $srcdir/../$tool/$1.tar.bz2 ; then |
| mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../$tool/$1.tar.bz2 |
| elif test -f $srcdir/../tarballs/$1.tar ; then |
| mkdir -p temp-src && tar -C temp-src -xf $srcdir/../tarballs/$1.tar |
| elif test -f $srcdir/../tarballs/$1.tar.gz ; then |
| mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../tarballs/$1.tar.gz |
| elif test -f $srcdir/../tarballs/$1.tgz ; then |
| mkdir -p temp-src && tar -C temp-src -xzf $srcdir/../tarballs/$1.tgz |
| elif test -f $srcdir/../tarballs/$1.tar.bz2 ; then |
| mkdir -p temp-src && tar -C temp-src -xjf $srcdir/../tarballs/$1.tar.bz2 |
| else |
| AC_MSG_ERROR('package $1 does not exist.') |
| fi |
| fi ]) |
| |
| # binutils version (default is 2.17) |
| AC_MSG_CHECKING([target binutils version to build]) |
| AC_ARG_WITH([binutils-version], |
| [ --with-binutils-version=VERSION |
| use binutils-VERSION (default is 2.17)], |
| [if test x"$withval" != x ; then |
| BINUTILS_VERSION="$withval" |
| fi], |
| [BINUTILS_VERSION="2.17"]) |
| AC_MSG_RESULT($BINUTILS_VERSION) |
| AC_SUBST(BINUTILS_VERSION) |
| ANDROID_CHECK_PACKAGE(binutils-${BINUTILS_VERSION}) |
| |
| # gcc version (default is 4.2.1) |
| AC_MSG_CHECKING([target gcc version to build]) |
| AC_ARG_WITH([gcc-version], |
| [ --with-gcc-version=VERSION |
| use gcc-VERSION (default is 4.2.1)], |
| [if test x"$withval" != x ; then |
| GCC_VERSION="$withval" |
| fi], |
| [GCC_VERSION="4.2.1"]) |
| AC_MSG_RESULT($GCC_VERSION) |
| AC_SUBST(GCC_VERSION) |
| ANDROID_CHECK_PACKAGE(gcc-${GCC_VERSION}) |
| |
| # figure out if we need to build gmp and mpfr for gcc 4.3.0+ |
| gcc_version_file="${srcdir}/../gcc/gcc-${GCC_VERSION}/gcc/BASE-VER" |
| if test -f "${gcc_version_file}"; then |
| GCC_MAJOR=`head -n 1 $gcc_version_file | sed -e "s/[[^0-9]].*//"` |
| GCC_MINOR=`head -n 1 $gcc_version_file | \ |
| sed -e "s/^[[0-9]]*\.//" -e "s/[[^0-9]].*//"` |
| if test "$GCC_MAJOR" -gt 4 -o \ |
| \( "$GCC_MAJOR" -eq 4 -a "$GCC_MINOR" -ge 3 \) ; then |
| GCC_MIN_VERSION_4_3_0="yes" |
| else |
| GCC_MIN_VERSION_4_3_0="no" |
| fi |
| if test "$GCC_MAJOR" -gt 4 -o \ |
| \( "$GCC_MAJOR" -eq 4 -a "$GCC_MINOR" -ge 5 \) ; then |
| GCC_MIN_VERSION_4_5_0="yes" |
| else |
| GCC_MIN_VERSION_4_5_0="no" |
| fi |
| else |
| # No version file, assume it is trunk |
| GCC_MIN_VERSION_4_3_0="yes" |
| GCC_MIN_VERSION_4_5_0="yes" |
| fi |
| AC_SUBST(GCC_MIN_VERSION_4_3_0) |
| AC_SUBST(GCC_MIN_VERSION_4_5_0) |
| |
| # newlib version (default is 1.16.0) |
| # newlib is only used for arm-newlib-eabi for testing |
| if test x$target == xarm-newlib-elf ; then |
| AC_MSG_CHECKING([target newlib version to build]) |
| AC_ARG_WITH([newlib-version], |
| [ --with-newlib-version=VERSION |
| use newlib-VERSION (default is 1.16.0)], |
| [if test x"$withval" != x ; then |
| NEWLIB_VERSION="$withval" |
| fi], |
| [NEWLIB_VERSION="1.16.0"]) |
| AC_MSG_RESULT($NEWLIB_VERSION) |
| AC_SUBST(NEWLIB_VERSION) |
| ANDROID_CHECK_PACKAGE(newlib-${NEWLIB_VERSION}) |
| fi |
| |
| if test "$GCC_MIN_VERSION_4_3_0" == "yes"; then |
| # gmp version (default is 4.2.2) |
| # gmp is only used for gcc version higher than 4.3.0 |
| AC_MSG_CHECKING([gmp version]) |
| AC_ARG_WITH([gmp-version], |
| [ --with-gmp-version=VERSION |
| use gmp-VERSION (default is 4.2.2)], |
| [if test x"$withval" != x ; then |
| GMP_VERSION="$withval" |
| fi], |
| [GMP_VERSION="4.2.2"]) |
| AC_MSG_RESULT($GMP_VERSION) |
| ANDROID_CHECK_PACKAGE(gmp-${GMP_VERSION}) |
| |
| # mpfr version (default is 2.3.0) |
| # mpfr is only used for gcc version higher than 4.3.0 |
| AC_MSG_CHECKING([mpfr version]) |
| AC_ARG_WITH([mpfr-version], |
| [ --with-mpfr-version=VERSION |
| use mpfr-VERSION (default is 2.3.0)], |
| [if test x"$withval" != x ; then |
| MPFR_VERSION="$withval" |
| fi], |
| [MPFR_VERSION="2.3.0"]) |
| AC_MSG_RESULT($MPFR_VERSION) |
| ANDROID_CHECK_PACKAGE(mpfr-${MPFR_VERSION}) |
| |
| fi |
| AC_SUBST(GMP_VERSION) |
| AC_SUBST(MPFR_VERSION) |
| |
| if test "$GCC_MIN_VERSION_4_5_0" == "yes"; then |
| # mpc version (default is 0.8.1) |
| # mpc is only used for gcc version higher than 4.5.0 |
| AC_MSG_CHECKING([mpc version]) |
| AC_ARG_WITH([mpc-version], |
| [ --with-mpc-version=VERSION |
| use mpc-VERSION (default is 0.8.1)], |
| [if test x"$withval" != x; then |
| MPC_VERSION="$withval" |
| fi], |
| [MPC_VERSION="0.8.1"]) |
| AC_MSG_RESULT($MPC_VERSION) |
| ANDROID_CHECK_PACKAGE(mpc-${MPC_VERSION}) |
| fi |
| AC_SUBST(MPC_VERSION) |
| |
| # gdb version (default is 6.6) |
| AC_MSG_CHECKING([target gdb version to build]) |
| AC_ARG_WITH([gdb-version], |
| [ --with-gdb-version=VERSION |
| use gdb-VERSION (default is 6.6)], |
| [if test x"$withval" != x ; then |
| GDB_VERSION="$withval" |
| fi], |
| [GDB_VERSION="6.6"]) |
| AC_MSG_RESULT($GDB_VERSION) |
| AC_SUBST(GDB_VERSION) |
| ANDROID_CHECK_PACKAGE(gdb-${GDB_VERSION}) |
| |
| AC_OUTPUT |