mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-16 11:31:00 +08:00
959d85b341
https://sourceware.org/ml/newlib/2016/msg01139.html https://gcc.gnu.org/ml/gcc/2016-12/msg00010.html There is no change if libtool is used. Some run-time support libraries provided by GCC (e.g. libgomp) use configure checks to detect certain features, e.g. availability of thread-local storage. The configure script generates a test program and tries to compile and link it. It should use target libraries and startfiles of the build tree if available and not random ones from the installation prefix for this procedure. The search directories specified by -B are a bit special, see for_each_path() in gcc.c of the GCC sources. First a search is performed on all search paths with the multilib directory appended (if desired), then a second search is performed on demand with the base directory only. For each multilib there is a "newlib" subdirectory. This directory is specified by a -B option for the support libraries. In order to find the newlib artifacts (ctr0.o, libc.a, libg.a and libm.a) they must be located in a proper multilib subdirectory withing the build directory. Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
656 lines
23 KiB
Plaintext
656 lines
23 KiB
Plaintext
dnl This is the newlib configure.in file.
|
|
dnl Process this file with autoconf to produce a configure script.
|
|
|
|
AC_PREREQ(2.59)
|
|
AC_INIT([newlib],[NEWLIB_VERSION])
|
|
AC_CONFIG_SRCDIR([libc])
|
|
AC_CONFIG_HEADERS([_newlib_version.h:_newlib_version.hin newlib.h:newlib.hin])
|
|
|
|
dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
|
|
AC_CONFIG_AUX_DIR(..)
|
|
|
|
dnl Support --enable-newlib-io-pos-args
|
|
dnl This option is actually read in libc/configure.in. It is repeated
|
|
dnl here so that it shows up in the help text.
|
|
AC_ARG_ENABLE(newlib-io-pos-args,
|
|
[ --enable-newlib-io-pos-args enable printf-family positional arg support],
|
|
[case "${enableval}" in
|
|
yes) newlib_io_pos_args=yes ;;
|
|
no) newlib_io_pos_args=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-io-pos-args option) ;;
|
|
esac], [newlib_io_pos_args=])dnl
|
|
|
|
dnl Support --enable-newlib-io-c99-formats
|
|
AC_ARG_ENABLE(newlib-io-c99-formats,
|
|
[ --enable-newlib-io-c99-formats enable C99 support in IO functions like printf/scanf],
|
|
[case "${enableval}" in
|
|
yes) newlib_io_c99_formats=yes;;
|
|
no) newlib_io_c99_formats=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-io-c99-formats option) ;;
|
|
esac], [newlib_io_c99_formats=])dnl
|
|
|
|
dnl Support --enable-newlib-register-fini
|
|
AC_ARG_ENABLE(newlib-register-fini,
|
|
[ --enable-newlib-register-fini enable finalization function registration using atexit],
|
|
[case "${enableval}" in
|
|
yes) newlib_register_fini=yes;;
|
|
no) newlib_register_fini=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-register-fini option) ;;
|
|
esac], [newlib_register_fini=])dnl
|
|
|
|
dnl Support --enable-newlib-io-long-long
|
|
AC_ARG_ENABLE(newlib-io-long-long,
|
|
[ --enable-newlib-io-long-long enable long long type support in IO functions like printf/scanf],
|
|
[case "${enableval}" in
|
|
yes) newlib_io_long_long=yes;;
|
|
no) newlib_io_long_long=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-io-long-long option) ;;
|
|
esac], [newlib_io_long_long=])dnl
|
|
|
|
dnl Support --enable-newlib-io-long-double
|
|
AC_ARG_ENABLE(newlib-io-long-double,
|
|
[ --enable-newlib-io-long-double enable long double type support in IO functions printf/scanf],
|
|
[case "${enableval}" in
|
|
yes) newlib_io_long_double=yes;;
|
|
no) newlib_io_long_double=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-io-long-double option) ;;
|
|
esac], [newlib_io_long_double=])dnl
|
|
|
|
dnl If multibyte support is enabled, iconv should be enabled too
|
|
dnl Support --enable-newlib-mb
|
|
AC_ARG_ENABLE(newlib-mb,
|
|
[ --enable-newlib-mb enable multibyte support],
|
|
[case "${enableval}" in
|
|
yes) newlib_mb=yes;;
|
|
no) newlib_mb=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-mb option) ;;
|
|
esac], [newlib_mb=])dnl
|
|
|
|
dnl Support --enable-newlib-iconv-encodings
|
|
AC_ARG_ENABLE(newlib-iconv-encodings,
|
|
[ --enable-newlib-iconv-encodings enable specific comma-separated list of bidirectional iconv encodings to be built-in],
|
|
[if test x${enableval} = x; then
|
|
AC_MSG_ERROR(bad value ${enableval} for newlib-iconv-encodings option - use comma-separated encodings list)
|
|
fi
|
|
iconv_encodings=${enableval}
|
|
], [iconv_encodings=])dnl
|
|
|
|
dnl Support --enable-newlib-iconv-from-encodings
|
|
AC_ARG_ENABLE(newlib-iconv-from-encodings,
|
|
[ --enable-newlib-iconv-from-encodings enable specific comma-separated list of \"from\" iconv encodings to be built-in],
|
|
[if test x${enableval} = x; then
|
|
AC_MSG_ERROR(bad value ${enableval} for newlib-iconv-from-encodings option - use comma-separated encodings list)
|
|
fi
|
|
iconv_from_encodings=${enableval}
|
|
], [iconv_from_encodings=])dnl
|
|
|
|
dnl Support --enable-newlib-iconv-to-encodings
|
|
AC_ARG_ENABLE(newlib-iconv-to-encodings,
|
|
[ --enable-newlib-iconv-to-encodings enable specific comma-separated list of \"to\" iconv encodings to be built-in],
|
|
[if test x${enableval} = x; then
|
|
AC_MSG_ERROR(bad value ${enableval} for newlib-iconv-to-encodings option - use comma-separated encodings list)
|
|
fi
|
|
iconv_to_encodings=${enableval}
|
|
], [iconv_to_encodings=])dnl
|
|
|
|
dnl Support --enable-newlib-iconv-external-ccs
|
|
AC_ARG_ENABLE(newlib-iconv-external-ccs,
|
|
[ --enable-newlib-iconv-external-ccs enable capabilities to load external CCS files for iconv],
|
|
[if test "${newlib_iconv_external_ccs+set}" != set; then
|
|
case "${enableval}" in
|
|
yes) newlib_iconv_external_ccs=yes ;;
|
|
no) newlib_iconv_external_ccs=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-iconv-external-ccs option) ;;
|
|
esac
|
|
fi], [newlib_iconv_external_ccs=${newlib_iconv_external_ccs}])dnl
|
|
|
|
dnl Support --disable-newlib-atexit-dynamic-alloc
|
|
AC_ARG_ENABLE(newlib-atexit-dynamic-alloc,
|
|
[ --disable-newlib-atexit-dynamic-alloc disable dynamic allocation of atexit entries],
|
|
[if test "${newlib_atexit_dynamic_alloc+set}" != set; then
|
|
case "${enableval}" in
|
|
yes) newlib_atexit_dynamic_alloc=yes ;;
|
|
no) newlib_atexit_dynamic_alloc=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-atexit-dynamic-alloc option) ;;
|
|
esac
|
|
fi], [newlib_atexit_dynamic_alloc=${newlib_atexit_dynamic_alloc}])dnl
|
|
|
|
dnl Support --enable-newlib-global-atexit
|
|
dnl Enable atexit data structure as global variables to save memory usage in
|
|
dnl _reent.
|
|
AC_ARG_ENABLE(newlib-global-atexit,
|
|
[ --enable-newlib-global-atexit enable atexit data structure as global],
|
|
[if test "${newlib_global_atexit+set}" != set; then
|
|
case "${enableval}" in
|
|
yes) newlib_global_atexit=yes ;;
|
|
no) newlib_global_atexit=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-global-atexit option) ;;
|
|
esac
|
|
fi], [newlib_global_atexit=no])dnl
|
|
|
|
dnl Support --enable-newlib-reent-small
|
|
AC_ARG_ENABLE(newlib-reent-small,
|
|
[ --enable-newlib-reent-small enable small reentrant struct support],
|
|
[case "${enableval}" in
|
|
yes) newlib_reent_small=yes;;
|
|
no) newlib_reent_small=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-reent-small option) ;;
|
|
esac], [newlib_reent_small=])dnl
|
|
|
|
dnl Support --disable-newlib-fvwrite-in-streamio
|
|
AC_ARG_ENABLE(newlib-fvwrite-in-streamio,
|
|
[ --disable-newlib-fvwrite-in-streamio disable iov in streamio],
|
|
[if test "${newlib_fvwrite_in_streamio+set}" != set; then
|
|
case "${enableval}" in
|
|
yes) newlib_fvwrite_in_streamio=yes ;;
|
|
no) newlib_fvwrite_in_streamio=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-fvwrite-in-streamio option) ;;
|
|
esac
|
|
fi], [newlib_fvwrite_in_streamio=yes])dnl
|
|
|
|
dnl Support --disable-newlib-fseek-optimization
|
|
AC_ARG_ENABLE(newlib-fseek-optimization,
|
|
[ --disable-newlib-fseek-optimization disable fseek optimization],
|
|
[if test "${newlib_fseek_optimization+set}" != set; then
|
|
case "${enableval}" in
|
|
yes) newlib_fseek_optimization=yes ;;
|
|
no) newlib_fseek_optimization=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-fseek-optimization option) ;;
|
|
esac
|
|
fi], [newlib_fseek_optimization=yes])dnl
|
|
|
|
dnl Support --enable-newlib-wide-orient
|
|
dnl This option is also read in libc/configure.in. It is repeated
|
|
dnl here so that it shows up in the help text.
|
|
AC_ARG_ENABLE(newlib_wide_orient,
|
|
[ --disable-newlib-wide-orient Turn off wide orientation in streamio],
|
|
[case "${enableval}" in
|
|
yes) newlib_wide_orient=yes ;;
|
|
no) newlib_wide_orient=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-wide-orient) ;;
|
|
esac],[newlib_wide_orient=yes])
|
|
|
|
dnl Support --enable-newlib-nano-malloc
|
|
dnl This option is also read in libc/configure.in. It is repeated
|
|
dnl here so that it shows up in the help text.
|
|
AC_ARG_ENABLE(newlib-nano-malloc,
|
|
[ --enable-newlib-nano-malloc use small-footprint nano-malloc implementation],
|
|
[if test "${newlib_nano_malloc+set}" != set; then
|
|
case "${enableval}" in
|
|
yes) newlib_nano_malloc=yes ;;
|
|
no) newlib_nano_malloc=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-nano-malloc option) ;;
|
|
esac
|
|
fi], [newlib_nano_malloc=])dnl
|
|
|
|
dnl Support --disable-newlib-unbuf-stream-opt
|
|
AC_ARG_ENABLE(newlib-unbuf-stream-opt,
|
|
[ --disable-newlib-unbuf-stream-opt disable unbuffered stream optimization in streamio],
|
|
[if test "${newlib_unbuf_stream_opt+set}" != set; then
|
|
case "${enableval}" in
|
|
yes) newlib_unbuf_stream_opt=yes ;;
|
|
no) newlib_unbuf_stream_opt=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-unbuf-stream-opt option) ;;
|
|
esac
|
|
fi], [newlib_unbuf_stream_opt=yes])dnl
|
|
|
|
dnl Support --enable-lite-exit
|
|
dnl Lite exit is a size-reduced implementation of exit that doesn't invoke
|
|
dnl clean-up functions such as _fini or global destructors.
|
|
AC_ARG_ENABLE(lite-exit,
|
|
[ --enable-lite-exit enable light weight exit],
|
|
[if test "${lite_exit+set}" != set; then
|
|
case "${enableval}" in
|
|
yes) lite_exit=yes ;;
|
|
no) lite_exit=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for lite-exit option) ;;
|
|
esac
|
|
fi], [lite_exit=no])dnl
|
|
|
|
dnl Support --enable-newlib-nano-formatted-io
|
|
dnl This option is also read in libc/configure.in. It is repeated
|
|
dnl here so that it shows up in the help text.
|
|
AC_ARG_ENABLE(newlib_nano_formatted_io,
|
|
[ --enable-newlib-nano-formatted-io Use nano version formatted IO],
|
|
[case "${enableval}" in
|
|
yes) newlib_nano_formatted_io=yes ;;
|
|
no) newlib_nano_formatted_io=no ;;
|
|
*) AC_MSG_ERROR(bad value ${enableval} for newlib-nano-formatted-io) ;;
|
|
esac],[newlib_nano_formatted_io=no])
|
|
|
|
NEWLIB_CONFIGURE(.)
|
|
|
|
dnl We have to enable libtool after NEWLIB_CONFIGURE because if we try and
|
|
dnl add it into NEWLIB_CONFIGURE, executable tests are made before the first
|
|
dnl line of the macro which fail because appropriate LDFLAGS are not set.
|
|
_LT_DECL_SED
|
|
_LT_PROG_ECHO_BACKSLASH
|
|
AC_PROG_AWK
|
|
if test "${use_libtool}" = "yes"; then
|
|
AC_LIBTOOL_WIN32_DLL
|
|
AM_PROG_LIBTOOL
|
|
fi
|
|
|
|
dnl The following is being disabled because the mathfp library is
|
|
dnl not up to standard due to inaccuracies caused by some of the
|
|
dnl floating-point algorithms used. If you wish to work on this,
|
|
dnl comment out the following line and uncomment out the lines
|
|
dnl following it to re-enable the feature.
|
|
newlib_hw_fp=false
|
|
#AC_ARG_ENABLE(newlib_hw_fp,
|
|
#[ --enable-newlib-hw-fp Turn on hardware floating point math],
|
|
#[case "${enableval}" in
|
|
# yes) newlib_hw_fp=true ;;
|
|
# no) newlib_hw_fp=false ;;
|
|
# *) AC_MSG_ERROR(bad value ${enableval} for --enable-newlib-hw-fp) ;;
|
|
# esac],[newlib_hw_fp=false])
|
|
AM_CONDITIONAL(NEWLIB_HW_FP, test x$newlib_hw_fp = xtrue)
|
|
|
|
# These get added in the top-level configure.in, except in the case where
|
|
# newlib is being built natively.
|
|
LIBC_INCLUDE_GREP=`echo ${CC} | grep \/libc\/include`
|
|
abs_newlib_basedir=`cd ${newlib_basedir} && pwd`
|
|
if test -z "${LIBC_INCLUDE_GREP}"; then
|
|
CC_FOR_NEWLIB="${CC} -I$PWD/targ-include -I${abs_newlib_basedir}/libc/include"
|
|
else
|
|
CC_FOR_NEWLIB="${CC}"
|
|
fi
|
|
AC_SUBST(CC_FOR_NEWLIB)
|
|
|
|
AC_CONFIG_SUBDIRS(libc)
|
|
AC_CONFIG_SUBDIRS(libm)
|
|
|
|
if test -z "${with_multisubdir}"; then
|
|
have_multisubdir=no
|
|
AC_CONFIG_SUBDIRS(doc)
|
|
else
|
|
have_multisubdir=yes
|
|
fi
|
|
AM_CONDITIONAL(HAVE_DOC, test x$have_multisubdir = xno)
|
|
|
|
# Some run-time support libraries provided by GCC (e.g. libgomp) use configure
|
|
# checks to detect certain features, e.g. availability of thread-local storage.
|
|
# The configure script generates a test program and tries to compile and link
|
|
# it. It should use target libraries and startfiles of the build tree if
|
|
# available and not random ones from the installation prefix for this
|
|
# procedure. The search directories specified by -B are a bit special, see
|
|
# for_each_path() in gcc.c of the GCC sources. First a search is performed on
|
|
# all search paths with the multilib directory appended (if desired), then a
|
|
# second search is performed on demand with the base directory only. For each
|
|
# multilib there is a "newlib" subdirectory. This directory is specified by a
|
|
# -B option for the support libraries. In order to find the newlib artifacts
|
|
# (ctr0.o, libc.a, libg.a and libm.a) they must be located in a proper multilib
|
|
# subdirectory withing the build directory.
|
|
AM_CONDITIONAL(HAVE_MULTISUBDIR, test x$have_multisubdir = xyes)
|
|
|
|
EXTRA_DIRS=
|
|
case $host in
|
|
i[[34567]]86-pc-linux-*)
|
|
AC_CONFIG_SUBDIRS(iconvdata)
|
|
EXTRA_DIRS=iconvdata
|
|
;;
|
|
esac
|
|
AC_SUBST(EXTRA_DIRS)
|
|
|
|
CRT0=
|
|
CRT0_DIR=
|
|
if test "x${have_crt0}" = "xyes"; then
|
|
CRT0=crt0.o
|
|
CRT0_DIR=libc/
|
|
fi
|
|
AM_CONDITIONAL(HAVE_CRT0, test x$have_crt0 = xyes)
|
|
AC_SUBST(CRT0)
|
|
AC_SUBST(CRT0_DIR)
|
|
|
|
CRT1=${crt1}
|
|
CRT1_DIR=
|
|
if test -n "${crt1_dir}"; then
|
|
CRT1_DIR=${crt1_dir}/
|
|
fi
|
|
AC_SUBST(CRT1)
|
|
AC_SUBST(CRT1_DIR)
|
|
|
|
if test -n "${libm_machine_dir}"; then
|
|
LIBM_MACHINE_OBJECTLIST=libm/machine/${libm_machine_dir}/objectlist.awk.in
|
|
fi
|
|
AC_SUBST(LIBM_MACHINE_OBJECTLIST)
|
|
|
|
if test -n "${machine_dir}"; then
|
|
MACHINE_OBJECTLIST=libc/machine/${machine_dir}/objectlist.awk.in
|
|
fi
|
|
AC_SUBST(MACHINE_OBJECTLIST)
|
|
|
|
if test -n "${sys_dir}"; then
|
|
SYS_OBJECTLIST=libc/sys/${sys_dir}/objectlist.awk.in
|
|
fi
|
|
AC_SUBST(SYS_OBJECTLIST)
|
|
|
|
if test "${have_sys_mach_dir}" = "yes"; then
|
|
SYS_MACH_OBJECTLIST=libc/sys/${sys_dir}/machine/${machine_dir}/objectlist.awk.in
|
|
fi
|
|
AC_SUBST(SYS_MACH_OBJECTLIST)
|
|
|
|
if test -n "${posix_dir}"; then
|
|
POSIX_OBJECTLIST=libc/${posix_dir}/objectlist.awk.in
|
|
fi
|
|
AC_SUBST(POSIX_OBJECTLIST)
|
|
|
|
if test -n "${signal_dir}"; then
|
|
SIGNAL_OBJECTLIST=libc/${signal_dir}/objectlist.awk.in
|
|
fi
|
|
AC_SUBST(SIGNAL_OBJECTLIST)
|
|
|
|
if test -n "${syscall_dir}"; then
|
|
SYSCALL_OBJECTLIST=libc/${syscall_dir}/objectlist.awk.in
|
|
fi
|
|
AC_SUBST(SYSCALL_OBJECTLIST)
|
|
|
|
if test -n "${unix_dir}"; then
|
|
UNIX_OBJECTLIST=libc/${unix_dir}/objectlist.awk.in
|
|
fi
|
|
AC_SUBST(UNIX_OBJECTLIST)
|
|
|
|
if test -n "${stdio64_dir}"; then
|
|
STDIO64_OBJECTLIST=libc/${stdio64_dir}/objectlist.awk.in
|
|
fi
|
|
AC_SUBST(STDIO64_OBJECTLIST)
|
|
|
|
# Put a plausible default for CC_FOR_BUILD in Makefile.
|
|
if test -z "$CC_FOR_BUILD"; then
|
|
CC_FOR_BUILD=gcc
|
|
fi
|
|
AC_SUBST(CC_FOR_BUILD)
|
|
|
|
if test "${newlib_elix_level}" -gt "0"; then
|
|
AC_DEFINE_UNQUOTED(_ELIX_LEVEL,${newlib_elix_level})
|
|
fi
|
|
|
|
if test "${newlib_io_c99_formats}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_WANT_IO_C99_FORMATS)
|
|
fi
|
|
|
|
if test "${newlib_register_fini}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_WANT_REGISTER_FINI)
|
|
fi
|
|
|
|
if test "${newlib_io_long_long}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_WANT_IO_LONG_LONG)
|
|
fi
|
|
|
|
if test "${newlib_io_long_double}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_WANT_IO_LONG_DOUBLE)
|
|
fi
|
|
|
|
if test "${newlib_io_pos_args}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_WANT_IO_POS_ARGS)
|
|
fi
|
|
|
|
if test "${newlib_reent_small}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_WANT_REENT_SMALL)
|
|
fi
|
|
|
|
if test "${newlib_mb}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_MB_CAPABLE)
|
|
AC_DEFINE_UNQUOTED(_MB_LEN_MAX,8)
|
|
else
|
|
AC_DEFINE_UNQUOTED(_MB_LEN_MAX,1)
|
|
fi
|
|
|
|
if test "${newlib_iconv_external_ccs}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_ICONV_ENABLE_EXTERNAL_CCS)
|
|
fi
|
|
|
|
AC_DEFINE(_NEWLIB_VERSION,"NEWLIB_VERSION","The newlib version in string format.")
|
|
AC_DEFINE(__NEWLIB__,NEWLIB_MAJOR_VERSION,"The newlib major version number.")
|
|
AC_DEFINE(__NEWLIB_MINOR__,NEWLIB_MINOR_VERSION,"The newlib minor version number.")
|
|
AC_DEFINE(__NEWLIB_PATCHLEVEL__,NEWLIB_PATCHLEVEL_VERSION,"The newlib patch level.")
|
|
|
|
if test "${multilib}" = "yes"; then
|
|
multilib_arg="--enable-multilib"
|
|
else
|
|
multilib_arg=
|
|
fi
|
|
|
|
if test "${newlib_iconv}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_ICONV_ENABLED,1)
|
|
fi
|
|
|
|
if test "x${newlib_iconv_external_ccs}" = "xyes"; then
|
|
if test "x${newlib_iconv}" = "x"; then
|
|
AC_MSG_ERROR(--enable-newlib-iconv-external-ccs option can't be used if iconv library is disabled, use --enable-newlib-iconv to enable it.)
|
|
fi
|
|
AC_DEFINE_UNQUOTED(_ICONV_ENABLE_EXTERNAL_CCS,1)
|
|
fi
|
|
|
|
if test "${newlib_atexit_dynamic_alloc}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_ATEXIT_DYNAMIC_ALLOC)
|
|
fi
|
|
|
|
if test "${newlib_global_atexit}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_REENT_GLOBAL_ATEXIT)
|
|
fi
|
|
|
|
if test "${newlib_fvwrite_in_streamio}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_FVWRITE_IN_STREAMIO)
|
|
fi
|
|
|
|
if test "${newlib_fseek_optimization}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_FSEEK_OPTIMIZATION)
|
|
fi
|
|
|
|
if test "${newlib_wide_orient}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_WIDE_ORIENT)
|
|
fi
|
|
|
|
if test "${newlib_nano_malloc}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_NANO_MALLOC)
|
|
fi
|
|
|
|
if test "${newlib_unbuf_stream_opt}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_UNBUF_STREAM_OPT)
|
|
fi
|
|
|
|
if test "${lite_exit}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_LITE_EXIT)
|
|
fi
|
|
|
|
if test "${newlib_nano_formatted_io}" = "yes"; then
|
|
AC_DEFINE_UNQUOTED(_NANO_FORMATTED_IO)
|
|
fi
|
|
|
|
dnl
|
|
dnl Parse --enable-newlib-iconv-encodings option argument
|
|
dnl
|
|
|
|
if test "x${iconv_encodings}" != "x" \
|
|
|| test "x${iconv_to_encodings}" != "x" \
|
|
|| test "x${iconv_from_encodings}" != "x"; then
|
|
if test "x${newlib_iconv}" = "x"; then
|
|
AC_MSG_ERROR([--enable-newlib-iconv-encodings, --enable-newlib-iconv-from-encodings and --enable-newlib-iconv-to-encodings option can't be used if iconv library is disabled, use --enable-newlib-iconv to enable it.])
|
|
fi
|
|
|
|
dnl Normalize encodings names and delete commas
|
|
iconv_encodings=`echo "${iconv_encodings}" | sed -e 's/,/ /g' -e 's/-/_/g' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
|
iconv_to_encodings=`echo "${iconv_to_encodings}" | sed -e 's/,/ /g' -e 's/-/_/g' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
|
iconv_from_encodings=`echo "${iconv_from_encodings}" | sed -e 's/,/ /g' -e 's/-/_/g' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
|
|
|
|
dnl Get the list of available encodings excluding comments
|
|
dnl Join line with previous if the first character is whitespace
|
|
available_encodings=`cat "${srcdir}/libc/iconv/encoding.aliases" | sed -e '/^#.*/d'`
|
|
|
|
dnl Check if required encodings are supported
|
|
dnl Convert aliases to names
|
|
|
|
dnl iconv_encodings
|
|
iconv_encodings1="${iconv_encodings}"
|
|
iconv_encodings=""
|
|
for encoding in ${iconv_encodings1}; do
|
|
result=`echo "${available_encodings}" | grep -e "\(^\| \)${encoding}\( \|\$\)"`
|
|
if test $? != "0"; then
|
|
AC_MSG_ERROR(${encoding} is not supported - see ${srcdir}/libc/iconv/encoding.aliases file for the list of available encodings)
|
|
fi
|
|
encoding1=`echo "${result}" | sed -e 's/\(^[[^ ]]*\).*$/\1/'`
|
|
iconv_encodings="${iconv_encodings} ${encoding1}"
|
|
done
|
|
dnl Enable appropriate option in newlib.h
|
|
for encoding in ${iconv_encodings}; do
|
|
opt=_ICONV_TO_ENCODING_`echo "${encoding}" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
|
|
AC_DEFINE_UNQUOTED($opt,1)
|
|
opt=_ICONV_FROM_ENCODING_`echo "${encoding}" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
|
|
AC_DEFINE_UNQUOTED($opt,1)
|
|
done
|
|
|
|
dnl iconv_to_encodings
|
|
iconv_encodings1="${iconv_to_encodings}"
|
|
iconv_to_encodings=""
|
|
for encoding in ${iconv_encodings1}; do
|
|
result=`echo "${available_encodings}" | grep -e "\(^\| \)${encoding}\( \|\$\)"`
|
|
if test $? != "0"; then
|
|
AC_MSG_ERROR(${encoding} is not supported - see ${srcdir}/libc/iconv/encoding.aliases file for the list of available encodings)
|
|
fi
|
|
encoding1=`echo "${result}" | sed -e 's/\(^[[^ ]]*\).*$/\1/'`
|
|
iconv_to_encodings="${iconv_to_encodings} ${encoding1}"
|
|
done
|
|
dnl Enable appropriate option in newlib.h
|
|
for encoding in ${iconv_to_encodings}; do
|
|
opt=_ICONV_TO_ENCODING_`echo "${encoding}" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
|
|
AC_DEFINE_UNQUOTED($opt,1)
|
|
done
|
|
|
|
dnl iconv_from_encodings
|
|
iconv_encodings1="${iconv_from_encodings}"
|
|
iconv_from_encodings=""
|
|
for encoding in ${iconv_encodings1}; do
|
|
result=`echo "${available_encodings}" | grep -e "\(^\| \)${encoding}\( \|\$\)"`
|
|
if test $? != "0"; then
|
|
AC_MSG_ERROR(${encoding} is not supported - see ${srcdir}/libc/iconv/encoding.aliases file for the list of available encodings)
|
|
fi
|
|
encoding1=`echo "${result}" | sed -e 's/\(^[[^ ]]*\).*$/\1/'`
|
|
iconv_from_encodings="${iconv_from_encodings} ${encoding1}"
|
|
done
|
|
dnl Enable appropriate option in newlib.h
|
|
for encoding in ${iconv_from_encodings}; do
|
|
opt=_ICONV_FROM_ENCODING_`echo "${encoding}" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
|
|
AC_DEFINE_UNQUOTED($opt,1)
|
|
done
|
|
fi;
|
|
|
|
AC_CACHE_CHECK(for .preinit_array/.init_array/.fini_array support,
|
|
libc_cv_initfinit_array, [dnl
|
|
cat > conftest.c <<EOF
|
|
int _start (void) { return 0; }
|
|
int __start (void) { return 0; }
|
|
int foo (void) { return 1; }
|
|
int (*fp) (void) __attribute__ ((section (".init_array"))) = foo;
|
|
EOF
|
|
if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c -o conftest conftest.c
|
|
1>&AS_MESSAGE_LOG_FD])
|
|
then
|
|
if ${READELF} -S conftest | grep -e INIT_ARRAY > /dev/null; then
|
|
libc_cv_initfinit_array=yes
|
|
else
|
|
libc_cv_initfinit_array=no
|
|
fi
|
|
else
|
|
libc_cv_initfinit_array=no
|
|
fi
|
|
rm -f conftest*])
|
|
AC_SUBST(libc_cv_initfinit_array)
|
|
if test $libc_cv_initfinit_array = yes; then
|
|
AC_DEFINE_UNQUOTED(HAVE_INITFINI_ARRAY)
|
|
fi
|
|
|
|
AC_CACHE_CHECK(if $CC accepts -fno-tree-loop-distribute-patterns with \
|
|
__attribute__ ((__optimize__)), libc_cv_cc_loop_to_function, [dnl
|
|
cat > conftest.c <<EOF
|
|
void
|
|
__attribute__ ((__optimize__ ("-fno-tree-loop-distribute-patterns")))
|
|
foo (void) {}
|
|
EOF
|
|
libc_cv_cc_loop_to_function=no
|
|
if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c
|
|
-fno-tree-loop-distribute-patterns conftest.c])
|
|
then
|
|
libc_cv_cc_loop_to_function=yes
|
|
fi
|
|
rm -f conftest*])
|
|
if test $libc_cv_cc_loop_to_function = yes; then
|
|
AC_DEFINE(_HAVE_CC_INHIBIT_LOOP_TO_LIBCALL)
|
|
fi
|
|
AC_SUBST(libc_cv_cc_loop_to_function)
|
|
|
|
dnl Autoconf 2.59 doesn't support the AC_TYPE_LONG_DOUBLE macro. Instead of:
|
|
dnl AC_TYPE_LONG_DOUBLE
|
|
dnl AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$ac_cv_type_long_double" = x"yes")
|
|
dnl we specify our own long double test.
|
|
dnl Additionally, ac_cv_objext is broken so that AC_COMPILE_IFELSE cannot be
|
|
dnl used, so use AC_TRY_COMMAND instead.
|
|
AC_CACHE_CHECK(whether long double type exists,
|
|
acnewlib_cv_type_long_double, [dnl
|
|
cat > conftest.c <<EOF
|
|
/* Check two ways: float.h defines and direct type declaration. */
|
|
#include <float.h>
|
|
#if defined(LDBL_MANT_DIG)
|
|
#define _HAVE_LONG_DOUBLE
|
|
#else
|
|
#error "LDBL != DBL"
|
|
#endif
|
|
long double test() {
|
|
long double ld = 0.0L;
|
|
return ld;
|
|
}
|
|
EOF
|
|
if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
|
|
1>&AS_MESSAGE_LOG_FD])
|
|
then
|
|
acnewlib_cv_type_long_double=yes;
|
|
else
|
|
acnewlib_cv_type_long_double=no;
|
|
fi
|
|
rm -f conftest*])
|
|
if test $acnewlib_cv_type_long_double = yes; then
|
|
AC_DEFINE_UNQUOTED(_HAVE_LONG_DOUBLE)
|
|
fi
|
|
AM_CONDITIONAL(HAVE_LONG_DOUBLE, test x"$acnewlib_cv_type_long_double" = x"yes")
|
|
|
|
AC_CACHE_CHECK(whether long double equals double,
|
|
newlib_cv_ldbl_eq_dbl, [dnl
|
|
cat > conftest.c <<EOF
|
|
#include <float.h>
|
|
#if DBL_MANT_DIG == LDBL_MANT_DIG && LDBL_MIN_EXP == DBL_MIN_EXP && \
|
|
LDBL_MAX_EXP == DBL_MAX_EXP
|
|
#define _LDBL_EQ_DBL
|
|
#else
|
|
#error "LDBL != DBL"
|
|
#endif
|
|
EOF
|
|
if AC_TRY_COMMAND([${CC} $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c
|
|
1>&AS_MESSAGE_LOG_FD])
|
|
then
|
|
newlib_cv_ldbl_eq_dbl=yes;
|
|
else
|
|
newlib_cv_ldbl_eq_dbl=no;
|
|
fi
|
|
rm -f conftest*])
|
|
if test $newlib_cv_ldbl_eq_dbl = yes; then
|
|
AC_DEFINE_UNQUOTED(_LDBL_EQ_DBL)
|
|
fi
|
|
|
|
AC_SUBST(CFLAGS)
|
|
|
|
AC_CONFIG_FILES([Makefile],
|
|
[if test -n "$CONFIG_FILES"; then
|
|
unset ac_file
|
|
. ${newlib_basedir}/../config-ml.in
|
|
fi],
|
|
srcdir=${srcdir}
|
|
host=${host}
|
|
with_multisubdir=${with_multisubdir}
|
|
ac_configure_args="${multilib_arg} ${ac_configure_args}"
|
|
CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
|
|
newlib_basedir=${newlib_basedir}
|
|
CC="${CC}"
|
|
LDFLAGS="${LDFLAGS}"
|
|
)
|
|
AC_OUTPUT
|