# Handy for debugging:
#AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
+if test "$build" != "$host"; then
+ # We are being configured with some form of cross compiler.
+ GLIBCXX_IS_NATIVE=false
+ GCC_NO_EXECUTABLES
+else
+ GLIBCXX_IS_NATIVE=true
+fi
+
# Sets up automake. Must come after AC_CANONICAL_SYSTEM. Each of the
# following is magically included in AUTOMAKE_OPTIONS in each Makefile.am.
# 1.x: minimum required version
AC_SUBST(enable_static)
#AC_MSG_NOTICE([====== Finished libtool configuration]) ; sleep 10
+# Possibly disable most of the library.
+## XXX Consider skipping unncessary tests altogether in this case, rather
+## than just ignoring the results. Faster /and/ more correct, win win.
+GLIBCXX_ENABLE_HOSTED
+
# Check for support bits and g++ features that don't require linking.
GLIBCXX_ENABLE_SJLJ_EXCEPTIONS
GLIBCXX_ENABLE_LIBUNWIND_EXCEPTIONS
-GLIBCXX_ENABLE_PCH([yes])
+GLIBCXX_ENABLE_PCH($is_hosted)
# Enable all the variable C++ runtime options.
# NB: C_MBCHAR must come early.
fi
-if test "$build" != "$host"; then
+if $GLIBCXX_IS_NATIVE; then
- # We are being configured with some form of cross compiler.
- GLIBCXX_IS_NATIVE=false
+ # We can do more elaborate tests that assume a working linker.
+ CANADIAN=no
+
+ # Check for available headers.
+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
+ machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h \
+ sys/types.h])
+
+ GLIBCXX_CHECK_COMPILER_FEATURES
+ GLIBCXX_CHECK_LINKER_FEATURES
+ GLIBCXX_CHECK_MATH_SUPPORT
+ GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
+ GLIBCXX_CHECK_WCHAR_T_SUPPORT
+ GLIBCXX_CHECK_STDLIB_SUPPORT
+
+ # For showmanyc_helper().
+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
+ GLIBCXX_CHECK_POLL
+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
+
+ # For xsputn_2().
+ AC_CHECK_HEADERS(sys/uio.h)
+ GLIBCXX_CHECK_WRITEV
+
+ # For the __streamoff_base_type typedef.
+ GLIBCXX_CHECK_INT64_T
+
+ # For LFS support.
+ GLIBCXX_CHECK_LFS
+
+ AC_LC_MESSAGES
+
+ AC_TRY_COMPILE(
+ [#include <setjmp.h>],
+ [sigjmp_buf env;
+ while (! sigsetjmp (env, 1))
+ siglongjmp (env, 1);
+ ],
+ [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available.])])
+
+ AC_FUNC_MMAP
+
+else
# This lets us hard-code the functionality we know we'll have in the cross
# target environment. "Let" is a sugar-coated word placed on an especially
# crosses can be removed.
# If Canadian cross, then don't pick up tools from the build directory.
- # Used in GLIBCXX_EXPORT_INCLUDES (and nowhere else?).
+ # Used only in GLIBCXX_EXPORT_INCLUDES.
if test -n "$with_cross_host" &&
- test x"$build" != x"$with_cross_host" &&
+ test x"$build_alias" != x"$with_cross_host" &&
test x"$build" != x"$target";
then
CANADIAN=yes
AC_DEFINE(HAVE_TANHL)
fi
-else
-
- # We are being configured natively. We can do more elaborate tests that
- # include AC_TRY_COMPILE now, as the linker is assumed to be working.
- GLIBCXX_IS_NATIVE=true
- CANADIAN=no
-
- # Check for available headers.
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h machine/endian.h \
- machine/param.h sys/machine.h fp.h locale.h float.h inttypes.h gconv.h \
- sys/types.h])
-
- GLIBCXX_CHECK_COMPILER_FEATURES
- GLIBCXX_CHECK_LINKER_FEATURES
- GLIBCXX_CHECK_MATH_SUPPORT
- GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
- GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
- GLIBCXX_CHECK_WCHAR_T_SUPPORT
- GLIBCXX_CHECK_STDLIB_SUPPORT
-
- # For showmanyc_helper().
- AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
- GLIBCXX_CHECK_POLL
- GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
-
- # For xsputn_2().
- AC_CHECK_HEADERS(sys/uio.h)
- GLIBCXX_CHECK_WRITEV
-
- AC_LC_MESSAGES
-
- AC_TRY_COMPILE(
- [#include <setjmp.h>],
- [sigjmp_buf env;
- while (! sigsetjmp (env, 1))
- siglongjmp (env, 1);
- ],
- [AC_DEFINE(HAVE_SIGSETJMP, 1, [Define if sigsetjmp is available.])])
-
- AC_FUNC_MMAP
fi
# This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
# uses it, and it only gets used in this file.)
ATOMICITY_INC_SRCDIR=config/${atomicity_include_dir}
OS_INC_SRCDIR=config/${os_include_dir}
-FPOS_INC_SRCDIR=config/${fpos_include_dir}
AC_SUBST(ATOMICITY_INC_SRCDIR)
-AC_SUBST(FPOS_INC_SRCDIR)
AC_SUBST(OS_INC_SRCDIR)
# Determine cross-compile flags and AM_CONDITIONALs.
#AC_SUBST(GLIBCXX_IS_NATIVE)
-AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
+#AM_CONDITIONAL(CANADIAN, test $CANADIAN = yes)
# from GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT:
-AM_CONDITIONAL(GLIBCXX_BUILD_LIBMATH, test $need_libmath = yes)
+#AM_CONDITIONAL(GLIBCXX_BUILD_LIBMATH, test $need_libmath = yes)
+GLIBCXX_EVALUATE_CONDITIONALS
AC_CACHE_SAVE
multilib_arg=
fi
-# Export all the install information
+# Export all the install information.
GLIBCXX_EXPORT_INSTALL_INFO
# Export all the include and flag information to Makefiles.
dnl In autoconf 2.5x, AC_OUTPUT is replaced by four AC_CONFIG_* macros,
dnl which can all be called multiple times as needed, plus one (different)
-dnl AC_OUPUT macro. This one lists the files to be created:
-AC_CONFIG_FILES([ \
+dnl AC_OUTPUT macro. This one lists the files to be created:
+AC_CONFIG_FILES( \
Makefile \
- include/Makefile \
- libmath/Makefile \
- libsupc++/Makefile \
- po/Makefile \
- src/Makefile \
- testsuite/Makefile \
- ])
+ AC_FOREACH([DIR], glibcxx_SUBDIRS, [DIR/Makefile ])
+ )
AC_CONFIG_FILES([scripts/check_survey],[chmod +x scripts/check_survey])
AC_CONFIG_FILES([scripts/testsuite_flags],[chmod +x scripts/testsuite_flags])
# To work around this not being passed down from config-ml.in ->
# srcdir/Makefile.am -> srcdir/{src,libsupc++,...}/Makefile.am, manually
# append it here. Only modify Makefiles that have just been created.
- for i in src libsupc++ testsuite; do
+ #
+ # Also, get rid of this simulated-VPATH thing that automake does.
+ cat > vpsed << \_EOF
+s!`test -f '$<' || echo '$(srcdir)/'`!!
+_EOF
+ for i in $SUBDIRS; do
case $CONFIG_FILES in
*${i}/Makefile*)
#echo "Adding MULTISUBDIR to $i/Makefile"
- grep '^MULTISUBDIR =' Makefile >> $i/Makefile
+ sed -f vpsed $i/Makefile > tmp
+ grep '^MULTISUBDIR =' Makefile >> tmp
+ mv tmp $i/Makefile
;;
esac
done
+ rm vpsed
fi
(cd include && ${MAKE-make})
],
[
-# No init-vars needed so far which aren't already passed by autoconf.
+# Variables needed in config.status (file generation) which aren't already
+# passed by autoconf.
+SUBDIRS="$SUBDIRS"
])
dnl And this actually makes things happen: