Home | History | Annotate | Download | only in m4
      1 # stdio_h.m4 serial 16
      2 dnl Copyright (C) 2007-2009 Free Software Foundation, Inc.
      3 dnl This file is free software; the Free Software Foundation
      4 dnl gives unlimited permission to copy and/or distribute it,
      5 dnl with or without modifications, as long as this notice is preserved.
      6 
      7 AC_DEFUN([gl_STDIO_H],
      8 [
      9   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
     10   gl_CHECK_NEXT_HEADERS([stdio.h])
     11   dnl No need to create extra modules for these functions. Everyone who uses
     12   dnl <stdio.h> likely needs them.
     13   GNULIB_FPRINTF=1
     14   GNULIB_PRINTF=1
     15   GNULIB_VFPRINTF=1
     16   GNULIB_VPRINTF=1
     17   GNULIB_FPUTC=1
     18   GNULIB_PUTC=1
     19   GNULIB_PUTCHAR=1
     20   GNULIB_FPUTS=1
     21   GNULIB_PUTS=1
     22   GNULIB_FWRITE=1
     23   dnl This ifdef is just an optimization, to avoid performing a configure
     24   dnl check whose result is not used. It does not make the test of
     25   dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant.
     26   m4_ifdef([gl_SIGNAL_SIGPIPE], [
     27     gl_SIGNAL_SIGPIPE
     28     if test $gl_cv_header_signal_h_SIGPIPE != yes; then
     29       REPLACE_STDIO_WRITE_FUNCS=1
     30       AC_LIBOBJ([stdio-write])
     31     fi
     32   ])
     33 ])
     34 
     35 AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
     36 [
     37   dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
     38   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
     39   GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
     40 ])
     41 
     42 AC_DEFUN([gl_STDIO_H_DEFAULTS],
     43 [
     44   GNULIB_FPRINTF=0;              AC_SUBST([GNULIB_FPRINTF])
     45   GNULIB_FPRINTF_POSIX=0;        AC_SUBST([GNULIB_FPRINTF_POSIX])
     46   GNULIB_PRINTF=0;               AC_SUBST([GNULIB_PRINTF])
     47   GNULIB_PRINTF_POSIX=0;         AC_SUBST([GNULIB_PRINTF_POSIX])
     48   GNULIB_SNPRINTF=0;             AC_SUBST([GNULIB_SNPRINTF])
     49   GNULIB_SPRINTF_POSIX=0;        AC_SUBST([GNULIB_SPRINTF_POSIX])
     50   GNULIB_VFPRINTF=0;             AC_SUBST([GNULIB_VFPRINTF])
     51   GNULIB_VFPRINTF_POSIX=0;       AC_SUBST([GNULIB_VFPRINTF_POSIX])
     52   GNULIB_VPRINTF=0;              AC_SUBST([GNULIB_VPRINTF])
     53   GNULIB_VPRINTF_POSIX=0;        AC_SUBST([GNULIB_VPRINTF_POSIX])
     54   GNULIB_VSNPRINTF=0;            AC_SUBST([GNULIB_VSNPRINTF])
     55   GNULIB_VSPRINTF_POSIX=0;       AC_SUBST([GNULIB_VSPRINTF_POSIX])
     56   GNULIB_DPRINTF=0;              AC_SUBST([GNULIB_DPRINTF])
     57   GNULIB_VDPRINTF=0;             AC_SUBST([GNULIB_VDPRINTF])
     58   GNULIB_VASPRINTF=0;            AC_SUBST([GNULIB_VASPRINTF])
     59   GNULIB_OBSTACK_PRINTF=0;       AC_SUBST([GNULIB_OBSTACK_PRINTF])
     60   GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
     61   GNULIB_FOPEN=0;                AC_SUBST([GNULIB_FOPEN])
     62   GNULIB_FREOPEN=0;              AC_SUBST([GNULIB_FREOPEN])
     63   GNULIB_FSEEK=0;                AC_SUBST([GNULIB_FSEEK])
     64   GNULIB_FSEEKO=0;               AC_SUBST([GNULIB_FSEEKO])
     65   GNULIB_FTELL=0;                AC_SUBST([GNULIB_FTELL])
     66   GNULIB_FTELLO=0;               AC_SUBST([GNULIB_FTELLO])
     67   GNULIB_FFLUSH=0;               AC_SUBST([GNULIB_FFLUSH])
     68   GNULIB_FPURGE=0;               AC_SUBST([GNULIB_FPURGE])
     69   GNULIB_FCLOSE=0;               AC_SUBST([GNULIB_FCLOSE])
     70   GNULIB_FPUTC=0;                AC_SUBST([GNULIB_FPUTC])
     71   GNULIB_PUTC=0;                 AC_SUBST([GNULIB_PUTC])
     72   GNULIB_PUTCHAR=0;              AC_SUBST([GNULIB_PUTCHAR])
     73   GNULIB_FPUTS=0;                AC_SUBST([GNULIB_FPUTS])
     74   GNULIB_PUTS=0;                 AC_SUBST([GNULIB_PUTS])
     75   GNULIB_FWRITE=0;               AC_SUBST([GNULIB_FWRITE])
     76   GNULIB_GETDELIM=0;             AC_SUBST([GNULIB_GETDELIM])
     77   GNULIB_GETLINE=0;              AC_SUBST([GNULIB_GETLINE])
     78   GNULIB_PERROR=0;               AC_SUBST([GNULIB_PERROR])
     79   GNULIB_STDIO_H_SIGPIPE=0;      AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
     80   dnl Assume proper GNU behavior unless another module says otherwise.
     81   REPLACE_STDIO_WRITE_FUNCS=0;   AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
     82   REPLACE_FPRINTF=0;             AC_SUBST([REPLACE_FPRINTF])
     83   REPLACE_VFPRINTF=0;            AC_SUBST([REPLACE_VFPRINTF])
     84   REPLACE_PRINTF=0;              AC_SUBST([REPLACE_PRINTF])
     85   REPLACE_VPRINTF=0;             AC_SUBST([REPLACE_VPRINTF])
     86   REPLACE_SNPRINTF=0;            AC_SUBST([REPLACE_SNPRINTF])
     87   HAVE_DECL_SNPRINTF=1;          AC_SUBST([HAVE_DECL_SNPRINTF])
     88   REPLACE_VSNPRINTF=0;           AC_SUBST([REPLACE_VSNPRINTF])
     89   HAVE_DECL_VSNPRINTF=1;         AC_SUBST([HAVE_DECL_VSNPRINTF])
     90   REPLACE_SPRINTF=0;             AC_SUBST([REPLACE_SPRINTF])
     91   REPLACE_VSPRINTF=0;            AC_SUBST([REPLACE_VSPRINTF])
     92   HAVE_DPRINTF=1;                AC_SUBST([HAVE_DPRINTF])
     93   REPLACE_DPRINTF=0;             AC_SUBST([REPLACE_DPRINTF])
     94   HAVE_VDPRINTF=1;               AC_SUBST([HAVE_VDPRINTF])
     95   REPLACE_VDPRINTF=0;            AC_SUBST([REPLACE_VDPRINTF])
     96   HAVE_VASPRINTF=1;              AC_SUBST([HAVE_VASPRINTF])
     97   REPLACE_VASPRINTF=0;           AC_SUBST([REPLACE_VASPRINTF])
     98   HAVE_DECL_OBSTACK_PRINTF=1;    AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
     99   REPLACE_OBSTACK_PRINTF=0;      AC_SUBST([REPLACE_OBSTACK_PRINTF])
    100   REPLACE_FOPEN=0;               AC_SUBST([REPLACE_FOPEN])
    101   REPLACE_FREOPEN=0;             AC_SUBST([REPLACE_FREOPEN])
    102   HAVE_FSEEKO=1;                 AC_SUBST([HAVE_FSEEKO])
    103   REPLACE_FSEEKO=0;              AC_SUBST([REPLACE_FSEEKO])
    104   REPLACE_FSEEK=0;               AC_SUBST([REPLACE_FSEEK])
    105   HAVE_FTELLO=1;                 AC_SUBST([HAVE_FTELLO])
    106   REPLACE_FTELLO=0;              AC_SUBST([REPLACE_FTELLO])
    107   REPLACE_FTELL=0;               AC_SUBST([REPLACE_FTELL])
    108   REPLACE_FFLUSH=0;              AC_SUBST([REPLACE_FFLUSH])
    109   REPLACE_FPURGE=0;              AC_SUBST([REPLACE_FPURGE])
    110   HAVE_DECL_FPURGE=1;            AC_SUBST([HAVE_DECL_FPURGE])
    111   REPLACE_FCLOSE=0;              AC_SUBST([REPLACE_FCLOSE])
    112   HAVE_DECL_GETDELIM=1;          AC_SUBST([HAVE_DECL_GETDELIM])
    113   HAVE_DECL_GETLINE=1;           AC_SUBST([HAVE_DECL_GETLINE])
    114   REPLACE_GETLINE=0;             AC_SUBST([REPLACE_GETLINE])
    115   REPLACE_PERROR=0;              AC_SUBST([REPLACE_PERROR])
    116 ])
    117 
    118 dnl Code shared by fseeko and ftello.  Determine if large files are supported,
    119 dnl but stdin does not start as a large file by default.
    120 AC_DEFUN([gl_STDIN_LARGE_OFFSET],
    121   [
    122     AC_CACHE_CHECK([whether stdin defaults to large file offsets],
    123       [gl_cv_var_stdin_large_offset],
    124       [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]],
    125 [[#if defined __SL64 && defined __SCLE /* cygwin */
    126   /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making
    127      fseeko/ftello needlessly fail.  This bug was fixed in 1.5.25, and
    128      it is easier to do a version check than building a runtime test.  */
    129 # include <cygwin/version.h>
    130 # if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25)
    131   choke me
    132 # endif
    133 #endif]])],
    134 	[gl_cv_var_stdin_large_offset=yes],
    135 	[gl_cv_var_stdin_large_offset=no])])
    136 ])
    137