This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by libsamplerate configure 0.1.8, which was
generated by GNU Autoconf 2.68.  Invocation command line was

  $ ./configure --enable-gcc-werror --host=arm-linux-androideabi --with-sysroot=/home/evigier/android-14b-toolchain/sysroot

## --------- ##
## Platform. ##
## --------- ##

hostname = evigier-ThinkPad-X220
uname -m = x86_64
uname -r = 3.0.0-17-generic
uname -s = Linux
uname -v = #30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012

/usr/bin/uname -p = unknown
/bin/uname -X     = unknown

/bin/arch              = unknown
/usr/bin/arch -k       = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo      = unknown
/bin/machine           = unknown
/usr/bin/oslevel       = unknown
/bin/universe          = unknown

PATH: /home/evigier/android-14b-toolchain/bin
PATH: /home/evigier/tools/git-tools/bin
PATH: /usr/bin
PATH: /home/evigier/bin
PATH: /usr/lib/lightdm/lightdm
PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /usr/games
PATH: /home/evigier/.vim/custom
PATH: /home/evigier/bin
PATH: /home/evigier/eclipse
PATH: /home/evigier/android-sdk-linux/tools
PATH: /home/evigier/android-sdk-linux/platform-tools
PATH: /home/evigier/android-ndk-r8b


## ----------- ##
## Core tests. ##
## ----------- ##

configure:2587: error: cannot run /bin/bash Cfg/config.sub

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_env_CCC_set=
ac_cv_env_CCC_value=
ac_cv_env_CC_set=
ac_cv_env_CC_value=
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXCPP_set=
ac_cv_env_CXXCPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_FFTW3_CFLAGS_set=
ac_cv_env_FFTW3_CFLAGS_value=
ac_cv_env_FFTW3_LIBS_set=
ac_cv_env_FFTW3_LIBS_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_PKG_CONFIG_LIBDIR_set=
ac_cv_env_PKG_CONFIG_LIBDIR_value=
ac_cv_env_PKG_CONFIG_PATH_set=
ac_cv_env_PKG_CONFIG_PATH_value=
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
ac_cv_env_SNDFILE_CFLAGS_set=
ac_cv_env_SNDFILE_CFLAGS_value=
ac_cv_env_SNDFILE_LIBS_set=
ac_cv_env_SNDFILE_LIBS_value=
ac_cv_env_build_alias_set=
ac_cv_env_build_alias_value=
ac_cv_env_host_alias_set=set
ac_cv_env_host_alias_value=arm-linux-androideabi
ac_cv_env_target_alias_set=
ac_cv_env_target_alias_value=

## ----------------- ##
## Output variables. ##
## ----------------- ##

ACLOCAL=''
ACLOCAL_AMFLAGS=''
AMDEPBACKSLASH=''
AMDEP_FALSE=''
AMDEP_TRUE=''
AMTAR=''
AM_BACKSLASH=''
AM_DEFAULT_VERBOSITY=''
AR=''
AUTOCONF=''
AUTOHEADER=''
AUTOMAKE=''
AWK=''
CC=''
CCDEPMODE=''
CFLAGS=''
COMPILER_IS_GCC=''
CPP=''
CPPFLAGS=''
CXX=''
CXXCPP=''
CXXDEPMODE=''
CXXFLAGS=''
CYGPATH_W=''
DEFS=''
DEPDIR=''
DLLTOOL=''
DLLWRAP=''
DSYMUTIL=''
DUMPBIN=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
EXEEXT=''
FFTW3_CFLAGS=''
FFTW3_LIBS=''
FGREP=''
GCC_MAJOR_VERSION=''
GREP=''
HAVE_FFTW3=''
HAVE_SNDFILE=''
INSTALL_DATA=''
INSTALL_PROGRAM=''
INSTALL_SCRIPT=''
INSTALL_STRIP_PROGRAM=''
LD=''
LDFLAGS=''
LIBOBJS=''
LIBS=''
LIBTOOL=''
LIPO=''
LN_S=''
LTLIBOBJS=''
MAKEINFO=''
MANIFEST_TOOL=''
MKDIR_P=''
NM=''
NMEDIT=''
OBJDUMP=''
OBJEXT=''
OS_SPECIFIC_INCLUDES=''
OS_SPECIFIC_LINKS=''
OTOOL64=''
OTOOL=''
PACKAGE=''
PACKAGE_BUGREPORT='erikd@mega-nerd.com'
PACKAGE_NAME='libsamplerate'
PACKAGE_STRING='libsamplerate 0.1.8'
PACKAGE_TARNAME='libsamplerate'
PACKAGE_URL='http://www.mega-nerd.com/libsamplerate/'
PACKAGE_VERSION='0.1.8'
PATH_SEPARATOR=':'
PEXPORTS=''
PKG_CONFIG=''
PKG_CONFIG_LIBDIR=''
PKG_CONFIG_PATH=''
RANLIB=''
RC=''
SED=''
SET_MAKE=''
SHARED_VERSION_INFO=''
SHELL='/bin/bash'
SHLIB_VERSION_ARG=''
SNDFILE_CFLAGS=''
SNDFILE_LIBS=''
STRIP=''
VERSION=''
ac_ct_AR=''
ac_ct_CC=''
ac_ct_CXX=''
ac_ct_DUMPBIN=''
am__EXEEXT_FALSE=''
am__EXEEXT_TRUE=''
am__fastdepCC_FALSE=''
am__fastdepCC_TRUE=''
am__fastdepCXX_FALSE=''
am__fastdepCXX_TRUE=''
am__include=''
am__isrc=''
am__leading_dot=''
am__quote=''
am__tar=''
am__untar=''
bindir='${exec_prefix}/bin'
build=''
build_alias=''
build_cpu=''
build_os=''
build_vendor=''
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
exec_prefix='NONE'
host='arm-linux-androideabi'
host_alias='arm-linux-androideabi'
host_cpu=''
host_os=''
host_vendor=''
htmldir='${docdir}'
htmldocdir=''
includedir='${prefix}/include'
infodir='${datarootdir}/info'
install_sh=''
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mandir='${datarootdir}/man'
mkdir_p=''
oldincludedir='/usr/include'
pdfdir='${docdir}'
prefix='NONE'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
sharedstatedir='${prefix}/com'
sysconfdir='${prefix}/etc'
target=''
target_alias=''
target_cpu=''
target_os=''
target_vendor=''

## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME "libsamplerate"
#define PACKAGE_TARNAME "libsamplerate"
#define PACKAGE_VERSION "0.1.8"
#define PACKAGE_STRING "libsamplerate 0.1.8"
#define PACKAGE_BUGREPORT "erikd@mega-nerd.com"
#define PACKAGE_URL "http://www.mega-nerd.com/libsamplerate/"

configure: exit 2
