This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]