Blame m4/time_r.m4

Packit Service fdd496
dnl Reentrant time functions: localtime_r, gmtime_r.
Packit Service fdd496
Packit Service fdd496
dnl Copyright (C) 2003, 2006-2017 Free Software Foundation, Inc.
Packit Service fdd496
dnl This file is free software; the Free Software Foundation
Packit Service fdd496
dnl gives unlimited permission to copy and/or distribute it,
Packit Service fdd496
dnl with or without modifications, as long as this notice is preserved.
Packit Service fdd496
Packit Service fdd496
dnl Written by Paul Eggert.
Packit Service fdd496
Packit Service fdd496
AC_DEFUN([gl_TIME_R],
Packit Service fdd496
[
Packit Service fdd496
  dnl Persuade glibc and Solaris <time.h> to declare localtime_r.
Packit Service fdd496
  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
Packit Service fdd496
Packit Service fdd496
  AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
Packit Service fdd496
  AC_REQUIRE([AC_C_RESTRICT])
Packit Service fdd496
Packit Service fdd496
  dnl Some systems don't declare localtime_r() and gmtime_r() if _REENTRANT is
Packit Service fdd496
  dnl not defined.
Packit Service fdd496
  AC_CHECK_DECLS([localtime_r], [], [], [[#include <time.h>]])
Packit Service fdd496
  if test $ac_cv_have_decl_localtime_r = no; then
Packit Service fdd496
    HAVE_DECL_LOCALTIME_R=0
Packit Service fdd496
  fi
Packit Service fdd496
Packit Service fdd496
  AC_CHECK_FUNCS_ONCE([localtime_r])
Packit Service fdd496
  if test $ac_cv_func_localtime_r = yes; then
Packit Service fdd496
    HAVE_LOCALTIME_R=1
Packit Service fdd496
    AC_CACHE_CHECK([whether localtime_r is compatible with its POSIX signature],
Packit Service fdd496
      [gl_cv_time_r_posix],
Packit Service fdd496
      [AC_COMPILE_IFELSE(
Packit Service fdd496
         [AC_LANG_PROGRAM(
Packit Service fdd496
            [[#include <time.h>]],
Packit Service fdd496
            [[/* We don't need to append 'restrict's to the argument types,
Packit Service fdd496
                 even though the POSIX signature has the 'restrict's,
Packit Service fdd496
                 since C99 says they can't affect type compatibility.  */
Packit Service fdd496
              struct tm * (*ptr) (time_t const *, struct tm *) = localtime_r;
Packit Service fdd496
              if (ptr) return 0;
Packit Service fdd496
              /* Check the return type is a pointer.
Packit Service fdd496
                 On HP-UX 10 it is 'int'.  */
Packit Service fdd496
              *localtime_r (0, 0);]])
Packit Service fdd496
         ],
Packit Service fdd496
         [gl_cv_time_r_posix=yes],
Packit Service fdd496
         [gl_cv_time_r_posix=no])
Packit Service fdd496
      ])
Packit Service fdd496
    if test $gl_cv_time_r_posix = yes; then
Packit Service fdd496
      REPLACE_LOCALTIME_R=0
Packit Service fdd496
    else
Packit Service fdd496
      REPLACE_LOCALTIME_R=1
Packit Service fdd496
    fi
Packit Service fdd496
  else
Packit Service fdd496
    HAVE_LOCALTIME_R=0
Packit Service fdd496
  fi
Packit Service fdd496
])
Packit Service fdd496
Packit Service fdd496
# Prerequisites of lib/time_r.c.
Packit Service fdd496
AC_DEFUN([gl_PREREQ_TIME_R], [
Packit Service fdd496
  :
Packit Service fdd496
])