This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [v3] Fix / clean-up config vs crosses (2/n)
Paolo Carlini wrote:
... and, those C99 tests changed by Richard Sandiford (not Joseph
Myers, sorry) to use AC_TRY_COMPILE_OR_LINK are run *unconditionally*,
not only when native! Indeed, that seems the way to go. In case of
problems, we (the target maintainers, that is ;) can always add a yes
/ no parameter and enable a configure time option...
This is the updated version of the patch, which I mean to apply, tested
x86_64-linux.
Paolo.
///////////////////
2008-08-17 Paolo Carlini <paolo.carlini@oracle.com>
* acinclude.m4 ([GLIBCXX_CHECK_LFS], [GLIBCXX_CHECK_POLL],
[GLIBCXX_CHECK_S_ISREG_OR_S_IFREG], [GLIBCXX_CHECK_WRITEV]):
Use GCC_TRY_COMPILE_OR_LINK instead of AC_TRY_LINK, in C++,
with -fno-exceptions as flags.
* configure.ac: Run unconditionally GLIBCXX_CHECK_LFS,
GLIBCXX_CHECK_POLL, GLIBCXX_CHECK_S_ISREG_OR_S_IFREG,
GLIBCXX_CHECK_WRITEV and commonized AC_CHECK_HEADERS.
* crossconfig.m4: Adjust; remove AC_CHECK_HEADERS commonized
in configure.ac.
* configure: Regenerate.
Index: configure.ac
===================================================================
*** configure.ac (revision 139160)
--- configure.ac (working copy)
*************** GLIBCXX_CHECK_SYSTEM_ERROR
*** 125,165 ****
# For the streamoff typedef.
GLIBCXX_CHECK_INT64_T
# For C99 support to TR1.
GLIBCXX_CHECK_C99_TR1
# For common values of EOF, SEEK_CUR, SEEK_END.
GLIBCXX_CHECK_STDIO_MACROS
# Only do link tests if native. Else, hardcode.
if $GLIBCXX_IS_NATIVE; then
# 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 \
- sys/types.h sys/ipc.h sys/sem.h])
-
GLIBCXX_CHECK_LINKER_FEATURES
GLIBCXX_CHECK_MATH_SUPPORT
GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
GLIBCXX_CHECK_COMPLEX_MATH_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 LFS support.
- GLIBCXX_CHECK_LFS
-
# For dev/random and dev/urandom for TR1.
GLIBCXX_CHECK_RANDOM_TR1
--- 125,167 ----
# For the streamoff typedef.
GLIBCXX_CHECK_INT64_T
+ # For LFS support.
+ GLIBCXX_CHECK_LFS
+
+ # 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 C99 support to TR1.
GLIBCXX_CHECK_C99_TR1
# For common values of EOF, SEEK_CUR, SEEK_END.
GLIBCXX_CHECK_STDIO_MACROS
+ # Check for available headers.
+ AC_CHECK_HEADERS([endian.h float.h fp.h ieeefp.h inttypes.h locale.h \
+ machine/endian.h machine/param.h nan.h stdint.h stdlib.h string.h \
+ strings.h sys/ipc.h sys/isa_defs.h sys/machine.h sys/param.h \
+ sys/resource.h sys/sem.h sys/stat.h sys/time.h sys/types.h unistd.h \
+ wchar.h wctype.h])
+
# Only do link tests if native. Else, hardcode.
if $GLIBCXX_IS_NATIVE; then
# We can do more elaborate tests that assume a working linker.
CANADIAN=no
GLIBCXX_CHECK_LINKER_FEATURES
GLIBCXX_CHECK_MATH_SUPPORT
GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
GLIBCXX_CHECK_STDLIB_SUPPORT
# For dev/random and dev/urandom for TR1.
GLIBCXX_CHECK_RANDOM_TR1
Index: crossconfig.m4
===================================================================
*** crossconfig.m4 (revision 139160)
--- crossconfig.m4 (working copy)
*************** case "${host}" in
*** 11,20 ****
mips*-sde-elf*)
# These definitions are for the SDE C library rather than newlib.
- AC_CHECK_HEADERS([float.h inttypes.h locale.h \
- stdint.h stdlib.h string.h unistd.h wchar.h \
- machine/endian.h sys/ioctl.h sys/resource.h \
- sys/stat.h sys/time.h sys/types.h sys/uio.h])
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_COMPILER_FEATURES
--- 11,16 ----
*************** case "${host}" in
*** 23,30 ****
GLIBCXX_CHECK_BUILTIN_MATH_SUPPORT
GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
GLIBCXX_CHECK_STDLIB_SUPPORT
- GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
- AC_DEFINE(HAVE_WRITEV)
AC_DEFINE(HAVE_LIBM)
AC_DEFINE(HAVE_COPYSIGN)
--- 19,24 ----
*************** case "${host}" in
*** 42,50 ****
# Darwin versions vary, but the linker should work in a cross environment,
# so we just check for all the features here.
# 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 \
- sys/types.h])
# Don't call GLIBCXX_CHECK_LINKER_FEATURES, Darwin doesn't have a GNU ld
GLIBCXX_CHECK_MATH_SUPPORT
--- 36,41 ----
*************** case "${host}" in
*** 52,74 ****
GLIBCXX_CHECK_COMPLEX_MATH_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_DEFINE(HAVE_LC_MESSAGES)
;;
*djgpp)
- AC_CHECK_HEADERS([float.h ieeefp.h inttypes.h locale.h \
- memory.h stdint.h stdlib.h strings.h string.h unistd.h \
- wchar.h wctype.h machine/endian.h sys/ioctl.h sys/param.h \
- sys/resource.h sys/stat.h sys/time.h sys/types.h sys/uio.h])
# GLIBCXX_CHECK_MATH_SUPPORT
AC_DEFINE(HAVE_LIBM)
AC_DEFINE(HAVE_ISINF)
--- 43,52 ----
*************** case "${host}" in
*** 96,112 ****
# GLIBCXX_CHECK_STDLIB_SUPPORT
AC_DEFINE(HAVE_COPYSIGN)
AC_DEFINE(HAVE_COPYSIGNF)
- # GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
- AC_DEFINE(HAVE_S_ISREG)
- AC_DEFINE(HAVE_S_IFREG)
- AC_DEFINE(HAVE_WRITEV)
;;
*-freebsd*)
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
- machine/endian.h machine/param.h sys/machine.h sys/types.h \
- fp.h locale.h float.h inttypes.h sys/resource.h sys/stat.h \
- sys/time.h unistd.h])
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_LINKER_FEATURES
--- 74,82 ----
*************** case "${host}" in
*** 155,163 ****
fi
;;
*-hpux*)
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
- machine/endian.h machine/param.h sys/machine.h sys/types.h \
- fp.h locale.h float.h inttypes.h])
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_LINKER_FEATURES
--- 125,130 ----
*************** case "${host}" in
*** 178,187 ****
esac
;;
*-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
- machine/endian.h machine/param.h sys/machine.h sys/types.h \
- fp.h float.h endian.h inttypes.h locale.h float.h stdint.h \
- sys/ipc.h sys/sem.h])
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_COMPILER_FEATURES
--- 145,150 ----
*************** case "${host}" in
*** 191,208 ****
GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
GLIBCXX_CHECK_STDLIB_SUPPORT
- # For LFS.
- GLIBCXX_CHECK_LFS
-
- # 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_DEFINE(_GLIBCXX_USE_RANDOM_TR1)
AC_LC_MESSAGES
--- 154,159 ----
*************** case "${host}" in
*** 211,226 ****
AM_ICONV
;;
*-mingw32*)
- AC_CHECK_HEADERS([sys/types.h locale.h float.h])
AC_DEFINE(HAVE_STRTOF)
AC_DEFINE(HAVE_STRTOLD)
GLIBCXX_CHECK_LINKER_FEATURES
GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
;;
*-netbsd*)
- AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
- machine/endian.h machine/param.h sys/machine.h sys/types.h \
- fp.h locale.h float.h inttypes.h])
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_LINKER_FEATURES
--- 162,173 ----
*************** case "${host}" in
*** 242,249 ****
fi
;;
*-netware)
- AC_CHECK_HEADERS([nan.h ieeefp.h sys/isa_defs.h sys/machine.h \
- sys/types.h locale.h float.h inttypes.h])
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_LINKER_FEATURES
--- 189,194 ----
*************** case "${host}" in
*** 251,265 ****
AC_DEFINE(HAVE_HYPOT)
AC_DEFINE(HAVE_ISINF)
AC_DEFINE(HAVE_ISNAN)
-
- # 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
;;
*-qnx6.1* | *-qnx6.2*)
SECTION_FLAGS='-ffunction-sections -fdata-sections'
--- 196,201 ----
*************** case "${host}" in
*** 284,312 ****
*-solaris2.7 | *-solaris2.8 | *-solaris2.9 | *-solaris2.10)
GLIBCXX_CHECK_LINKER_FEATURES
AC_DEFINE(HAVE_MBSTATE_T)
- AC_DEFINE(HAVE_POLL)
- AC_DEFINE(HAVE_S_ISREG)
AC_DEFINE(HAVE_LC_MESSAGES)
AC_DEFINE(HAVE_FINITE)
AC_DEFINE(HAVE_FPCLASS)
# All of the dependencies for wide character support are here, so
# turn it on.
AC_DEFINE(_GLIBCXX_USE_WCHAR_T)
! # Are these tested for even when cross?
! AC_DEFINE(HAVE_FLOAT_H)
! AC_DEFINE(HAVE_IEEEFP_H)
! AC_DEFINE(HAVE_INTTYPES_H)
! AC_DEFINE(HAVE_LOCALE_H)
! AC_DEFINE(HAVE_NAN_H)
! AC_DEFINE(HAVE_SYS_FILIO_H)
! AC_DEFINE(HAVE_SYS_IOCTL_H)
! AC_DEFINE(HAVE_SYS_ISA_DEFS_H)
! AC_DEFINE(HAVE_SYS_RESOURCE_H)
! AC_DEFINE(HAVE_SYS_TIME_H)
! AC_DEFINE(HAVE_SYS_TYPES_H)
! AC_DEFINE(HAVE_UNISTD_H)
! AC_DEFINE(HAVE_WCHAR_H)
! AC_DEFINE(HAVE_WCTYPE_H)
AC_DEFINE(HAVE_LIBM)
;;
esac
--- 220,232 ----
*-solaris2.7 | *-solaris2.8 | *-solaris2.9 | *-solaris2.10)
GLIBCXX_CHECK_LINKER_FEATURES
AC_DEFINE(HAVE_MBSTATE_T)
AC_DEFINE(HAVE_LC_MESSAGES)
AC_DEFINE(HAVE_FINITE)
AC_DEFINE(HAVE_FPCLASS)
# All of the dependencies for wide character support are here, so
# turn it on.
AC_DEFINE(_GLIBCXX_USE_WCHAR_T)
!
AC_DEFINE(HAVE_LIBM)
;;
esac
*************** case "${host}" in
*** 338,345 ****
AC_DEFINE(HAVE_HYPOT)
;;
*-tpf)
- AC_CHECK_HEADERS([nan.h endian.h machine/endian.h \
- sys/param.h sys/types.h locale.h float.h inttypes.h])
SECTION_FLAGS='-ffunction-sections -fdata-sections'
AC_SUBST(SECTION_FLAGS)
GLIBCXX_CHECK_LINKER_FEATURES
--- 258,263 ----
Index: acinclude.m4
===================================================================
*** acinclude.m4 (revision 139160)
--- acinclude.m4 (working copy)
*************** dnl Check whether S_ISREG (Posix) or S_I
*** 390,398 ****
dnl Define HAVE_S_ISREG / HAVE_S_IFREG appropriately.
dnl
AC_DEFUN([GLIBCXX_CHECK_S_ISREG_OR_S_IFREG], [
AC_MSG_CHECKING([for S_ISREG or S_IFREG])
AC_CACHE_VAL(glibcxx_cv_S_ISREG, [
! AC_TRY_LINK(
[#include <sys/stat.h>],
[struct stat buffer;
fstat(0, &buffer);
--- 390,404 ----
dnl Define HAVE_S_ISREG / HAVE_S_IFREG appropriately.
dnl
AC_DEFUN([GLIBCXX_CHECK_S_ISREG_OR_S_IFREG], [
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
AC_MSG_CHECKING([for S_ISREG or S_IFREG])
AC_CACHE_VAL(glibcxx_cv_S_ISREG, [
! GCC_TRY_COMPILE_OR_LINK(
[#include <sys/stat.h>],
[struct stat buffer;
fstat(0, &buffer);
*************** AC_DEFUN([GLIBCXX_CHECK_S_ISREG_OR_S_IFR
*** 401,407 ****
[glibcxx_cv_S_ISREG=no])
])
AC_CACHE_VAL(glibcxx_cv_S_IFREG, [
! AC_TRY_LINK(
[#include <sys/stat.h>],
[struct stat buffer;
fstat(0, &buffer);
--- 407,413 ----
[glibcxx_cv_S_ISREG=no])
])
AC_CACHE_VAL(glibcxx_cv_S_IFREG, [
! GCC_TRY_COMPILE_OR_LINK(
[#include <sys/stat.h>],
[struct stat buffer;
fstat(0, &buffer);
*************** AC_DEFUN([GLIBCXX_CHECK_S_ISREG_OR_S_IFR
*** 420,425 ****
--- 426,434 ----
res=S_IFREG
fi
AC_MSG_RESULT($res)
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ AC_LANG_RESTORE
])
*************** dnl
*** 427,435 ****
dnl Check whether poll is available in <poll.h>, and define HAVE_POLL.
dnl
AC_DEFUN([GLIBCXX_CHECK_POLL], [
AC_MSG_CHECKING([for poll])
AC_CACHE_VAL(glibcxx_cv_POLL, [
! AC_TRY_LINK(
[#include <poll.h>],
[struct pollfd pfd[1];
pfd[0].events = POLLIN;
--- 436,450 ----
dnl Check whether poll is available in <poll.h>, and define HAVE_POLL.
dnl
AC_DEFUN([GLIBCXX_CHECK_POLL], [
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
AC_MSG_CHECKING([for poll])
AC_CACHE_VAL(glibcxx_cv_POLL, [
! GCC_TRY_COMPILE_OR_LINK(
[#include <poll.h>],
[struct pollfd pfd[1];
pfd[0].events = POLLIN;
*************** AC_DEFUN([GLIBCXX_CHECK_POLL], [
*** 441,446 ****
--- 456,464 ----
AC_DEFINE(HAVE_POLL, 1, [Define if poll is available in <poll.h>.])
fi
AC_MSG_RESULT($glibcxx_cv_POLL)
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ AC_LANG_RESTORE
])
*************** dnl
*** 448,456 ****
dnl Check whether writev is available in <sys/uio.h>, and define HAVE_WRITEV.
dnl
AC_DEFUN([GLIBCXX_CHECK_WRITEV], [
AC_MSG_CHECKING([for writev])
AC_CACHE_VAL(glibcxx_cv_WRITEV, [
! AC_TRY_LINK(
[#include <sys/uio.h>],
[struct iovec iov[2];
writev(0, iov, 0);],
--- 466,480 ----
dnl Check whether writev is available in <sys/uio.h>, and define HAVE_WRITEV.
dnl
AC_DEFUN([GLIBCXX_CHECK_WRITEV], [
+
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -fno-exceptions"
+
AC_MSG_CHECKING([for writev])
AC_CACHE_VAL(glibcxx_cv_WRITEV, [
! GCC_TRY_COMPILE_OR_LINK(
[#include <sys/uio.h>],
[struct iovec iov[2];
writev(0, iov, 0);],
*************** AC_DEFUN([GLIBCXX_CHECK_WRITEV], [
*** 461,466 ****
--- 485,493 ----
AC_DEFINE(HAVE_WRITEV, 1, [Define if writev is available in <sys/uio.h>.])
fi
AC_MSG_RESULT($glibcxx_cv_WRITEV)
+
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ AC_LANG_RESTORE
])
*************** AC_DEFUN([GLIBCXX_CHECK_LFS], [
*** 531,537 ****
CXXFLAGS="$CXXFLAGS -fno-exceptions"
AC_MSG_CHECKING([for LFS support])
AC_CACHE_VAL(glibcxx_cv_LFS, [
! AC_TRY_LINK(
[#include <unistd.h>
#include <stdio.h>
#include <sys/stat.h>
--- 558,564 ----
CXXFLAGS="$CXXFLAGS -fno-exceptions"
AC_MSG_CHECKING([for LFS support])
AC_CACHE_VAL(glibcxx_cv_LFS, [
! GCC_TRY_COMPILE_OR_LINK(
[#include <unistd.h>
#include <stdio.h>
#include <sys/stat.h>