packages feed

time 1.12.2 → 1.16

raw patch · 77 files changed

Files

changelog.md view
@@ -1,5 +1,43 @@ # Change Log +## [1.16] - 2026-05-03++- add periodIn+- use template-haskell-lift rather than template-haskell for Lift instances on GHC 9.14 and later+- support GHC 9.14+- improve documentation, test, build, CI++## [1.15] - 2025-08-04++- support compiler / GHC backends (with CI):+  - JavaScript+  - WebAssembly+  - MicroHs+- add diffTimeOfDay+- add \[add/diff\]\[UTC/Local\]Duration\[Clip/Rollover\]+- add patterns for DiffTime & NominalDiffTime+- UNIXish formatting/parsing:+  - add instance ParseTime DayOfWeek+  - make use of %s specifiers in parsing various types+  - instances for Quarter and QuarterOfYear+  - %v specifier for quarter-of-year+- ISO8601 formatting/parsing:+  - loosen up parsing time-zone modifiers+- add Lift instances to all types (really this time)+- hide Data.Time.Format.Internal+- add periodToDayClip+- fix MonthDay and QuarterDay clipping++## [1.14] - 2024-03-10+- add Lift instances to all types+- add Generic instances to all types that have exposed constructors+- fix show of CalendarDiffTime+- fix diffGregorianDurationRollOver, diffJulianDurationRollOver+- Parsing is now maximal munch rather than ambiguous for+  - digits of %q and %Q specifiers+  - optional timezone for UTCTime+  - optional specifiers in ISO8601 formats+ ## [1.12.2] - 2022-05-14 - add weekFirstDay, weekLastDay, weekAllDays - expose formatting/parsing internals@@ -40,6 +78,7 @@ - add instance Ord DayOfWeek - add instance Read DiffTime (and NominalDiffTime) - change instance Read UTCTime to allow omitted timezone+- parsing dates rejects ambiguity based on digits, even if there's only one valid date  ## [1.10] - 2020-03-13 - remove deprecated functions parseTime, readTime, readsTime
configure view
@@ -1,4691 +1,4850 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles.-# Generated by GNU Autoconf 2.69 for Haskell time package 1.12.2.-#-# Report bugs to <ashley@semantic.org>.-#-#-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.-#-#-# This configure script is free software; the Free Software Foundation-# gives unlimited permission to copy, distribute and modify it.-## -------------------- ##-## M4sh Initialization. ##-## -------------------- ##--# Be more Bourne compatible-DUALCASE=1; export DUALCASE # for MKS sh-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :-  emulate sh-  NULLCMD=:-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '${1+"$@"}'='"$@"'-  setopt NO_GLOB_SUBST-else-  case `(set -o) 2>/dev/null` in #(-  *posix*) :-    set -o posix ;; #(-  *) :-     ;;-esac-fi---as_nl='-'-export as_nl-# Printing a long string crashes Solaris 7 /usr/bin/printf.-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo-# Prefer a ksh shell builtin over an external printf program on Solaris,-# but without wasting forks for bash or zsh.-if test -z "$BASH_VERSION$ZSH_VERSION" \-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='print -r --'-  as_echo_n='print -rn --'-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='printf %s\n'-  as_echo_n='printf %s'-else-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'-    as_echo_n='/usr/ucb/echo -n'-  else-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'-    as_echo_n_body='eval-      arg=$1;-      case $arg in #(-      *"$as_nl"*)-	expr "X$arg" : "X\\(.*\\)$as_nl";-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;-      esac;-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"-    '-    export as_echo_n_body-    as_echo_n='sh -c $as_echo_n_body as_echo'-  fi-  export as_echo_body-  as_echo='sh -c $as_echo_body as_echo'-fi--# The user is always right.-if test "${PATH_SEPARATOR+set}" != set; then-  PATH_SEPARATOR=:-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||-      PATH_SEPARATOR=';'-  }-fi---# IFS-# We need space, tab and new line, in precisely that order.  Quoting is-# there to prevent editors from complaining about space-tab.-# (If _AS_PATH_WALK were called with IFS unset, it would disable word-# splitting by setting IFS to empty value.)-IFS=" ""	$as_nl"--# Find who we are.  Look in the path if we contain no directory separator.-as_myself=-case $0 in #((-  *[\\/]* ) as_myself=$0 ;;-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break-  done-IFS=$as_save_IFS--     ;;-esac-# We did not find ourselves, most probably we were run as `sh COMMAND'-# in which case we are not to be found in the path.-if test "x$as_myself" = x; then-  as_myself=$0-fi-if test ! -f "$as_myself"; then-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2-  exit 1-fi--# Unset variables that we do not need and which cause bugs (e.g. in-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"-# suppresses any "Segmentation fault" message there.  '((' could-# trigger a bug in pdksh 5.2.14.-for as_var in BASH_ENV ENV MAIL MAILPATH-do eval test x\${$as_var+set} = xset \-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :-done-PS1='$ '-PS2='> '-PS4='+ '--# NLS nuisances.-LC_ALL=C-export LC_ALL-LANGUAGE=C-export LANGUAGE--# CDPATH.-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH--# Use a proper internal environment variable to ensure we don't fall-  # into an infinite loop, continuously re-executing ourselves.-  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then-    _as_can_reexec=no; export _as_can_reexec;-    # We cannot yet assume a decent shell, so we have to provide a-# neutralization value for shells without unset; and this also-# works around shells that cannot unset nonexistent variables.-# Preserve -v and -x to the replacement shell.-BASH_ENV=/dev/null-ENV=/dev/null-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV-case $- in # ((((-  *v*x* | *x*v* ) as_opts=-vx ;;-  *v* ) as_opts=-v ;;-  *x* ) as_opts=-x ;;-  * ) as_opts= ;;-esac-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}-# Admittedly, this is quite paranoid, since all the known shells bail-# out after a failed `exec'.-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2-as_fn_exit 255-  fi-  # We don't want this to propagate to other subprocesses.-          { _as_can_reexec=; unset _as_can_reexec;}-if test "x$CONFIG_SHELL" = x; then-  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :-  emulate sh-  NULLCMD=:-  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '\${1+\"\$@\"}'='\"\$@\"'-  setopt NO_GLOB_SUBST-else-  case \`(set -o) 2>/dev/null\` in #(-  *posix*) :-    set -o posix ;; #(-  *) :-     ;;-esac-fi-"-  as_required="as_fn_return () { (exit \$1); }-as_fn_success () { as_fn_return 0; }-as_fn_failure () { as_fn_return 1; }-as_fn_ret_success () { return 0; }-as_fn_ret_failure () { return 1; }--exitcode=0-as_fn_success || { exitcode=1; echo as_fn_success failed.; }-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :--else-  exitcode=1; echo positional parameters were not saved.-fi-test x\$exitcode = x0 || exit 1-test -x / || exit 1"-  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO-  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO-  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1-test \$(( 1 + 1 )) = 2 || exit 1"-  if (eval "$as_required") 2>/dev/null; then :-  as_have_required=yes-else-  as_have_required=no-fi-  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :--else-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-as_found=false-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-  as_found=:-  case $as_dir in #(-	 /*)-	   for as_base in sh bash ksh sh5; do-	     # Try only shells that exist, to save several forks.-	     as_shell=$as_dir/$as_base-	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&-		    { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :-  CONFIG_SHELL=$as_shell as_have_required=yes-		   if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :-  break 2-fi-fi-	   done;;-       esac-  as_found=false-done-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&-	      { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :-  CONFIG_SHELL=$SHELL as_have_required=yes-fi; }-IFS=$as_save_IFS---      if test "x$CONFIG_SHELL" != x; then :-  export CONFIG_SHELL-             # We cannot yet assume a decent shell, so we have to provide a-# neutralization value for shells without unset; and this also-# works around shells that cannot unset nonexistent variables.-# Preserve -v and -x to the replacement shell.-BASH_ENV=/dev/null-ENV=/dev/null-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV-case $- in # ((((-  *v*x* | *x*v* ) as_opts=-vx ;;-  *v* ) as_opts=-v ;;-  *x* ) as_opts=-x ;;-  * ) as_opts= ;;-esac-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}-# Admittedly, this is quite paranoid, since all the known shells bail-# out after a failed `exec'.-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2-exit 255-fi--    if test x$as_have_required = xno; then :-  $as_echo "$0: This script requires a shell more modern than all"-  $as_echo "$0: the shells that I found on your system."-  if test x${ZSH_VERSION+set} = xset ; then-    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"-    $as_echo "$0: be upgraded to zsh 4.3.4 or later."-  else-    $as_echo "$0: Please tell bug-autoconf@gnu.org and-$0: ashley@semantic.org about your system, including any-$0: error possibly output before this message. Then install-$0: a modern shell, or manually run the script under such a-$0: shell if you do have one."-  fi-  exit 1-fi-fi-fi-SHELL=${CONFIG_SHELL-/bin/sh}-export SHELL-# Unset more variables known to interfere with behavior of common tools.-CLICOLOR_FORCE= GREP_OPTIONS=-unset CLICOLOR_FORCE GREP_OPTIONS--## --------------------- ##-## M4sh Shell Functions. ##-## --------------------- ##-# as_fn_unset VAR-# ----------------# Portably unset VAR.-as_fn_unset ()-{-  { eval $1=; unset $1;}-}-as_unset=as_fn_unset--# as_fn_set_status STATUS-# ------------------------# Set $? to STATUS, without forking.-as_fn_set_status ()-{-  return $1-} # as_fn_set_status--# as_fn_exit STATUS-# ------------------# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.-as_fn_exit ()-{-  set +e-  as_fn_set_status $1-  exit $1-} # as_fn_exit--# as_fn_mkdir_p-# --------------# Create "$as_dir" as a directory, including parents if necessary.-as_fn_mkdir_p ()-{--  case $as_dir in #(-  -*) as_dir=./$as_dir;;-  esac-  test -d "$as_dir" || eval $as_mkdir_p || {-    as_dirs=-    while :; do-      case $as_dir in #(-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(-      *) as_qdir=$as_dir;;-      esac-      as_dirs="'$as_qdir' $as_dirs"-      as_dir=`$as_dirname -- "$as_dir" ||-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_dir" : 'X\(//\)[^/]' \| \-	 X"$as_dir" : 'X\(//\)$' \| \-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$as_dir" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-      test -d "$as_dir" && break-    done-    test -z "$as_dirs" || eval "mkdir $as_dirs"-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"---} # as_fn_mkdir_p--# as_fn_executable_p FILE-# ------------------------# Test if FILE is an executable regular file.-as_fn_executable_p ()-{-  test -f "$1" && test -x "$1"-} # as_fn_executable_p-# as_fn_append VAR VALUE-# -----------------------# Append the text in VALUE to the end of the definition contained in VAR. Take-# advantage of any shell optimizations that allow amortized linear growth over-# repeated appends, instead of the typical quadratic growth present in naive-# implementations.-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :-  eval 'as_fn_append ()-  {-    eval $1+=\$2-  }'-else-  as_fn_append ()-  {-    eval $1=\$$1\$2-  }-fi # as_fn_append--# as_fn_arith ARG...-# -------------------# Perform arithmetic evaluation on the ARGs, and store the result in the-# global $as_val. Take advantage of shells that can avoid forks. The arguments-# must be portable across $(()) and expr.-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :-  eval 'as_fn_arith ()-  {-    as_val=$(( $* ))-  }'-else-  as_fn_arith ()-  {-    as_val=`expr "$@" || test $? -eq 1`-  }-fi # as_fn_arith---# as_fn_error STATUS ERROR [LINENO LOG_FD]-# -----------------------------------------# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the-# script with STATUS, using 1 if that was 0.-as_fn_error ()-{-  as_status=$1; test $as_status -eq 0 && as_status=1-  if test "$4"; then-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4-  fi-  $as_echo "$as_me: error: $2" >&2-  as_fn_exit $as_status-} # as_fn_error--if expr a : '\(a\)' >/dev/null 2>&1 &&-   test "X`expr 00001 : '.*\(...\)'`" = X001; then-  as_expr=expr-else-  as_expr=false-fi--if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then-  as_basename=basename-else-  as_basename=false-fi--if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then-  as_dirname=dirname-else-  as_dirname=false-fi--as_me=`$as_basename -- "$0" ||-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \-	 X"$0" : 'X\(//\)$' \| \-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X/"$0" |-    sed '/^.*\/\([^/][^/]*\)\/*$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`--# Avoid depending upon Character Ranges.-as_cr_letters='abcdefghijklmnopqrstuvwxyz'-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'-as_cr_Letters=$as_cr_letters$as_cr_LETTERS-as_cr_digits='0123456789'-as_cr_alnum=$as_cr_Letters$as_cr_digits---  as_lineno_1=$LINENO as_lineno_1a=$LINENO-  as_lineno_2=$LINENO as_lineno_2a=$LINENO-  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&-  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {-  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)-  sed -n '-    p-    /[$]LINENO/=-  ' <$as_myself |-    sed '-      s/[$]LINENO.*/&-/-      t lineno-      b-      :lineno-      N-      :loop-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/-      t loop-      s/-\n.*//-    ' >$as_me.lineno &&-  chmod +x "$as_me.lineno" ||-    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }--  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have-  # already done that, so ensure we don't try to do so again and fall-  # in an infinite loop.  This has already happened in practice.-  _as_can_reexec=no; export _as_can_reexec-  # Don't try to exec as it changes $[0], causing all sort of problems-  # (the dirname of $[0] is not the place where we might find the-  # original and so on.  Autoconf is especially sensitive to this).-  . "./$as_me.lineno"-  # Exit status is that of the last command.-  exit-}--ECHO_C= ECHO_N= ECHO_T=-case `echo -n x` in #(((((--n*)-  case `echo 'xy\c'` in-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.-  xy)  ECHO_C='\c';;-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null-       ECHO_T='	';;-  esac;;-*)-  ECHO_N='-n';;-esac--rm -f conf$$ conf$$.exe conf$$.file-if test -d conf$$.dir; then-  rm -f conf$$.dir/conf$$.file-else-  rm -f conf$$.dir-  mkdir conf$$.dir 2>/dev/null-fi-if (echo >conf$$.file) 2>/dev/null; then-  if ln -s conf$$.file conf$$ 2>/dev/null; then-    as_ln_s='ln -s'-    # ... but there are two gotchas:-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.-    # In both cases, we have to default to `cp -pR'.-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||-      as_ln_s='cp -pR'-  elif ln conf$$.file conf$$ 2>/dev/null; then-    as_ln_s=ln-  else-    as_ln_s='cp -pR'-  fi-else-  as_ln_s='cp -pR'-fi-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file-rmdir conf$$.dir 2>/dev/null--if mkdir -p . 2>/dev/null; then-  as_mkdir_p='mkdir -p "$as_dir"'-else-  test -d ./-p && rmdir ./-p-  as_mkdir_p=false-fi--as_test_x='test -x'-as_executable_p=as_fn_executable_p--# Sed expression to map a string onto a valid CPP name.-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"--# Sed expression to map a string onto a valid variable name.-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"---test -n "$DJDIR" || exec 7<&0 </dev/null-exec 6>&1--# Name of the host.-# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,-# so uname gets run too.-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`--#-# Initializations.-#-ac_default_prefix=/usr/local-ac_clean_files=-ac_config_libobj_dir=.-LIBOBJS=-cross_compiling=no-subdirs=-MFLAGS=-MAKEFLAGS=--# Identity of this package.-PACKAGE_NAME='Haskell time package'-PACKAGE_TARNAME='time'-PACKAGE_VERSION='1.12.2'-PACKAGE_STRING='Haskell time package 1.12.2'-PACKAGE_BUGREPORT='ashley@semantic.org'-PACKAGE_URL=''--ac_unique_file="lib/include/HsTime.h"-# Factoring default headers for most tests.-ac_includes_default="\-#include <stdio.h>-#ifdef HAVE_SYS_TYPES_H-# include <sys/types.h>-#endif-#ifdef HAVE_SYS_STAT_H-# include <sys/stat.h>-#endif-#ifdef STDC_HEADERS-# include <stdlib.h>-# include <stddef.h>-#else-# ifdef HAVE_STDLIB_H-#  include <stdlib.h>-# endif-#endif-#ifdef HAVE_STRING_H-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H-#  include <memory.h>-# endif-# include <string.h>-#endif-#ifdef HAVE_STRINGS_H-# include <strings.h>-#endif-#ifdef HAVE_INTTYPES_H-# include <inttypes.h>-#endif-#ifdef HAVE_STDINT_H-# include <stdint.h>-#endif-#ifdef HAVE_UNISTD_H-# include <unistd.h>-#endif"--ac_header_list=-ac_subst_vars='LTLIBOBJS-LIBOBJS-EGREP-GREP-CPP-OBJEXT-EXEEXT-ac_ct_CC-CPPFLAGS-LDFLAGS-CFLAGS-CC-target_alias-host_alias-build_alias-LIBS-ECHO_T-ECHO_N-ECHO_C-DEFS-mandir-localedir-libdir-psdir-pdfdir-dvidir-htmldir-infodir-docdir-oldincludedir-includedir-runstatedir-localstatedir-sharedstatedir-sysconfdir-datadir-datarootdir-libexecdir-sbindir-bindir-program_transform_name-prefix-exec_prefix-PACKAGE_URL-PACKAGE_BUGREPORT-PACKAGE_STRING-PACKAGE_VERSION-PACKAGE_TARNAME-PACKAGE_NAME-PATH_SEPARATOR-SHELL'-ac_subst_files=''-ac_user_opts='-enable_option_checking-with_gcc-with_compiler-'-      ac_precious_vars='build_alias-host_alias-target_alias-CC-CFLAGS-LDFLAGS-LIBS-CPPFLAGS-CPP'---# Initialize some variables set by options.-ac_init_help=-ac_init_version=false-ac_unrecognized_opts=-ac_unrecognized_sep=-# The variables have the same names as the options, with-# dashes changed to underlines.-cache_file=/dev/null-exec_prefix=NONE-no_create=-no_recursion=-prefix=NONE-program_prefix=NONE-program_suffix=NONE-program_transform_name=s,x,x,-silent=-site=-srcdir=-verbose=-x_includes=NONE-x_libraries=NONE--# Installation directory options.-# These are left unexpanded so users can "make install exec_prefix=/foo"-# and all the variables that are supposed to be based on exec_prefix-# by default will actually change.-# Use braces instead of parens because sh, perl, etc. also accept them.-# (The list follows the same order as the GNU Coding Standards.)-bindir='${exec_prefix}/bin'-sbindir='${exec_prefix}/sbin'-libexecdir='${exec_prefix}/libexec'-datarootdir='${prefix}/share'-datadir='${datarootdir}'-sysconfdir='${prefix}/etc'-sharedstatedir='${prefix}/com'-localstatedir='${prefix}/var'-runstatedir='${localstatedir}/run'-includedir='${prefix}/include'-oldincludedir='/usr/include'-docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'-infodir='${datarootdir}/info'-htmldir='${docdir}'-dvidir='${docdir}'-pdfdir='${docdir}'-psdir='${docdir}'-libdir='${exec_prefix}/lib'-localedir='${datarootdir}/locale'-mandir='${datarootdir}/man'--ac_prev=-ac_dashdash=-for ac_option-do-  # If the previous option needs an argument, assign it.-  if test -n "$ac_prev"; then-    eval $ac_prev=\$ac_option-    ac_prev=-    continue-  fi--  case $ac_option in-  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;-  *=)   ac_optarg= ;;-  *)    ac_optarg=yes ;;-  esac--  # Accept the important Cygnus configure options, so we can diagnose typos.--  case $ac_dashdash$ac_option in-  --)-    ac_dashdash=yes ;;--  -bindir | --bindir | --bindi | --bind | --bin | --bi)-    ac_prev=bindir ;;-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)-    bindir=$ac_optarg ;;--  -build | --build | --buil | --bui | --bu)-    ac_prev=build_alias ;;-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)-    build_alias=$ac_optarg ;;--  -cache-file | --cache-file | --cache-fil | --cache-fi \-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)-    ac_prev=cache_file ;;-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)-    cache_file=$ac_optarg ;;--  --config-cache | -C)-    cache_file=config.cache ;;--  -datadir | --datadir | --datadi | --datad)-    ac_prev=datadir ;;-  -datadir=* | --datadir=* | --datadi=* | --datad=*)-    datadir=$ac_optarg ;;--  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \-  | --dataroo | --dataro | --datar)-    ac_prev=datarootdir ;;-  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \-  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)-    datarootdir=$ac_optarg ;;--  -disable-* | --disable-*)-    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid feature name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"enable_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval enable_$ac_useropt=no ;;--  -docdir | --docdir | --docdi | --doc | --do)-    ac_prev=docdir ;;-  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)-    docdir=$ac_optarg ;;--  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)-    ac_prev=dvidir ;;-  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)-    dvidir=$ac_optarg ;;--  -enable-* | --enable-*)-    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid feature name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"enable_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval enable_$ac_useropt=\$ac_optarg ;;--  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \-  | --exec | --exe | --ex)-    ac_prev=exec_prefix ;;-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \-  | --exec=* | --exe=* | --ex=*)-    exec_prefix=$ac_optarg ;;--  -gas | --gas | --ga | --g)-    # Obsolete; use --with-gas.-    with_gas=yes ;;--  -help | --help | --hel | --he | -h)-    ac_init_help=long ;;-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)-    ac_init_help=recursive ;;-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)-    ac_init_help=short ;;--  -host | --host | --hos | --ho)-    ac_prev=host_alias ;;-  -host=* | --host=* | --hos=* | --ho=*)-    host_alias=$ac_optarg ;;--  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)-    ac_prev=htmldir ;;-  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \-  | --ht=*)-    htmldir=$ac_optarg ;;--  -includedir | --includedir | --includedi | --included | --include \-  | --includ | --inclu | --incl | --inc)-    ac_prev=includedir ;;-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \-  | --includ=* | --inclu=* | --incl=* | --inc=*)-    includedir=$ac_optarg ;;--  -infodir | --infodir | --infodi | --infod | --info | --inf)-    ac_prev=infodir ;;-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)-    infodir=$ac_optarg ;;--  -libdir | --libdir | --libdi | --libd)-    ac_prev=libdir ;;-  -libdir=* | --libdir=* | --libdi=* | --libd=*)-    libdir=$ac_optarg ;;--  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \-  | --libexe | --libex | --libe)-    ac_prev=libexecdir ;;-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \-  | --libexe=* | --libex=* | --libe=*)-    libexecdir=$ac_optarg ;;--  -localedir | --localedir | --localedi | --localed | --locale)-    ac_prev=localedir ;;-  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)-    localedir=$ac_optarg ;;--  -localstatedir | --localstatedir | --localstatedi | --localstated \-  | --localstate | --localstat | --localsta | --localst | --locals)-    ac_prev=localstatedir ;;-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \-  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)-    localstatedir=$ac_optarg ;;--  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)-    ac_prev=mandir ;;-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)-    mandir=$ac_optarg ;;--  -nfp | --nfp | --nf)-    # Obsolete; use --without-fp.-    with_fp=no ;;--  -no-create | --no-create | --no-creat | --no-crea | --no-cre \-  | --no-cr | --no-c | -n)-    no_create=yes ;;--  -no-recursion | --no-recursion | --no-recursio | --no-recursi \-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)-    no_recursion=yes ;;--  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \-  | --oldin | --oldi | --old | --ol | --o)-    ac_prev=oldincludedir ;;-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)-    oldincludedir=$ac_optarg ;;--  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)-    ac_prev=prefix ;;-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)-    prefix=$ac_optarg ;;--  -program-prefix | --program-prefix | --program-prefi | --program-pref \-  | --program-pre | --program-pr | --program-p)-    ac_prev=program_prefix ;;-  -program-prefix=* | --program-prefix=* | --program-prefi=* \-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)-    program_prefix=$ac_optarg ;;--  -program-suffix | --program-suffix | --program-suffi | --program-suff \-  | --program-suf | --program-su | --program-s)-    ac_prev=program_suffix ;;-  -program-suffix=* | --program-suffix=* | --program-suffi=* \-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)-    program_suffix=$ac_optarg ;;--  -program-transform-name | --program-transform-name \-  | --program-transform-nam | --program-transform-na \-  | --program-transform-n | --program-transform- \-  | --program-transform | --program-transfor \-  | --program-transfo | --program-transf \-  | --program-trans | --program-tran \-  | --progr-tra | --program-tr | --program-t)-    ac_prev=program_transform_name ;;-  -program-transform-name=* | --program-transform-name=* \-  | --program-transform-nam=* | --program-transform-na=* \-  | --program-transform-n=* | --program-transform-=* \-  | --program-transform=* | --program-transfor=* \-  | --program-transfo=* | --program-transf=* \-  | --program-trans=* | --program-tran=* \-  | --progr-tra=* | --program-tr=* | --program-t=*)-    program_transform_name=$ac_optarg ;;--  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)-    ac_prev=pdfdir ;;-  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)-    pdfdir=$ac_optarg ;;--  -psdir | --psdir | --psdi | --psd | --ps)-    ac_prev=psdir ;;-  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)-    psdir=$ac_optarg ;;--  -q | -quiet | --quiet | --quie | --qui | --qu | --q \-  | -silent | --silent | --silen | --sile | --sil)-    silent=yes ;;--  -runstatedir | --runstatedir | --runstatedi | --runstated \-  | --runstate | --runstat | --runsta | --runst | --runs \-  | --run | --ru | --r)-    ac_prev=runstatedir ;;-  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \-  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \-  | --run=* | --ru=* | --r=*)-    runstatedir=$ac_optarg ;;--  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)-    ac_prev=sbindir ;;-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \-  | --sbi=* | --sb=*)-    sbindir=$ac_optarg ;;--  -sharedstatedir | --sharedstatedir | --sharedstatedi \-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \-  | --sharedst | --shareds | --shared | --share | --shar \-  | --sha | --sh)-    ac_prev=sharedstatedir ;;-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \-  | --sha=* | --sh=*)-    sharedstatedir=$ac_optarg ;;--  -site | --site | --sit)-    ac_prev=site ;;-  -site=* | --site=* | --sit=*)-    site=$ac_optarg ;;--  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)-    ac_prev=srcdir ;;-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)-    srcdir=$ac_optarg ;;--  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \-  | --syscon | --sysco | --sysc | --sys | --sy)-    ac_prev=sysconfdir ;;-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)-    sysconfdir=$ac_optarg ;;--  -target | --target | --targe | --targ | --tar | --ta | --t)-    ac_prev=target_alias ;;-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)-    target_alias=$ac_optarg ;;--  -v | -verbose | --verbose | --verbos | --verbo | --verb)-    verbose=yes ;;--  -version | --version | --versio | --versi | --vers | -V)-    ac_init_version=: ;;--  -with-* | --with-*)-    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid package name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"with_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval with_$ac_useropt=\$ac_optarg ;;--  -without-* | --without-*)-    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`-    # Reject names that are not valid shell variable names.-    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&-      as_fn_error $? "invalid package name: $ac_useropt"-    ac_useropt_orig=$ac_useropt-    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`-    case $ac_user_opts in-      *"-"with_$ac_useropt"-"*) ;;-      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"-	 ac_unrecognized_sep=', ';;-    esac-    eval with_$ac_useropt=no ;;--  --x)-    # Obsolete; use --with-x.-    with_x=yes ;;--  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \-  | --x-incl | --x-inc | --x-in | --x-i)-    ac_prev=x_includes ;;-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)-    x_includes=$ac_optarg ;;--  -x-libraries | --x-libraries | --x-librarie | --x-librari \-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)-    ac_prev=x_libraries ;;-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)-    x_libraries=$ac_optarg ;;--  -*) as_fn_error $? "unrecognized option: \`$ac_option'-Try \`$0 --help' for more information"-    ;;--  *=*)-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`-    # Reject names that are not valid shell variable names.-    case $ac_envvar in #(-      '' | [0-9]* | *[!_$as_cr_alnum]* )-      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;-    esac-    eval $ac_envvar=\$ac_optarg-    export $ac_envvar ;;--  *)-    # FIXME: should be removed in autoconf 3.0.-    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&-      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2-    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"-    ;;--  esac-done--if test -n "$ac_prev"; then-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`-  as_fn_error $? "missing argument to $ac_option"-fi--if test -n "$ac_unrecognized_opts"; then-  case $enable_option_checking in-    no) ;;-    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;-    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;-  esac-fi--# Check all directory arguments for consistency.-for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \-		datadir sysconfdir sharedstatedir localstatedir includedir \-		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \-		libdir localedir mandir runstatedir-do-  eval ac_val=\$$ac_var-  # Remove trailing slashes.-  case $ac_val in-    */ )-      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`-      eval $ac_var=\$ac_val;;-  esac-  # Be sure to have absolute directory names.-  case $ac_val in-    [\\/$]* | ?:[\\/]* )  continue;;-    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;-  esac-  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"-done--# There might be people who depend on the old broken behavior: `$host'-# used to hold the argument of --host etc.-# FIXME: To remove some day.-build=$build_alias-host=$host_alias-target=$target_alias--# FIXME: To remove some day.-if test "x$host_alias" != x; then-  if test "x$build_alias" = x; then-    cross_compiling=maybe-  elif test "x$build_alias" != "x$host_alias"; then-    cross_compiling=yes-  fi-fi--ac_tool_prefix=-test -n "$host_alias" && ac_tool_prefix=$host_alias---test "$silent" = yes && exec 6>/dev/null---ac_pwd=`pwd` && test -n "$ac_pwd" &&-ac_ls_di=`ls -di .` &&-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||-  as_fn_error $? "working directory cannot be determined"-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||-  as_fn_error $? "pwd does not report name of working directory"---# Find the source files, if location was not specified.-if test -z "$srcdir"; then-  ac_srcdir_defaulted=yes-  # Try the directory containing this script, then the parent directory.-  ac_confdir=`$as_dirname -- "$as_myself" ||-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_myself" : 'X\(//\)[^/]' \| \-	 X"$as_myself" : 'X\(//\)$' \| \-	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$as_myself" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-  srcdir=$ac_confdir-  if test ! -r "$srcdir/$ac_unique_file"; then-    srcdir=..-  fi-else-  ac_srcdir_defaulted=no-fi-if test ! -r "$srcdir/$ac_unique_file"; then-  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."-  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"-fi-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"-ac_abs_confdir=`(-	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"-	pwd)`-# When building in place, set srcdir=.-if test "$ac_abs_confdir" = "$ac_pwd"; then-  srcdir=.-fi-# Remove unnecessary trailing slashes from srcdir.-# Double slashes in file names in object file debugging info-# mess up M-x gdb in Emacs.-case $srcdir in-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;-esac-for ac_var in $ac_precious_vars; do-  eval ac_env_${ac_var}_set=\${${ac_var}+set}-  eval ac_env_${ac_var}_value=\$${ac_var}-  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}-  eval ac_cv_env_${ac_var}_value=\$${ac_var}-done--#-# Report the --help message.-#-if test "$ac_init_help" = "long"; then-  # Omit some internal or obsolete options to make the list less imposing.-  # This message is too long to be a string in the A/UX 3.1 sh.-  cat <<_ACEOF-\`configure' configures Haskell time package 1.12.2 to adapt to many kinds of systems.--Usage: $0 [OPTION]... [VAR=VALUE]...--To assign environment variables (e.g., CC, CFLAGS...), specify them as-VAR=VALUE.  See below for descriptions of some of the useful variables.--Defaults for the options are specified in brackets.--Configuration:-  -h, --help              display this help and exit-      --help=short        display options specific to this package-      --help=recursive    display the short help of all the included packages-  -V, --version           display version information and exit-  -q, --quiet, --silent   do not print \`checking ...' messages-      --cache-file=FILE   cache test results in FILE [disabled]-  -C, --config-cache      alias for \`--cache-file=config.cache'-  -n, --no-create         do not create output files-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']--Installation directories:-  --prefix=PREFIX         install architecture-independent files in PREFIX-                          [$ac_default_prefix]-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX-                          [PREFIX]--By default, \`make install' will install all the files in-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify-an installation prefix other than \`$ac_default_prefix' using \`--prefix',-for instance \`--prefix=\$HOME'.--For better control, use the options below.--Fine tuning of the installation directories:-  --bindir=DIR            user executables [EPREFIX/bin]-  --sbindir=DIR           system admin executables [EPREFIX/sbin]-  --libexecdir=DIR        program executables [EPREFIX/libexec]-  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]-  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]-  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]-  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]-  --libdir=DIR            object code libraries [EPREFIX/lib]-  --includedir=DIR        C header files [PREFIX/include]-  --oldincludedir=DIR     C header files for non-gcc [/usr/include]-  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]-  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]-  --infodir=DIR           info documentation [DATAROOTDIR/info]-  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]-  --mandir=DIR            man documentation [DATAROOTDIR/man]-  --docdir=DIR            documentation root [DATAROOTDIR/doc/time]-  --htmldir=DIR           html documentation [DOCDIR]-  --dvidir=DIR            dvi documentation [DOCDIR]-  --pdfdir=DIR            pdf documentation [DOCDIR]-  --psdir=DIR             ps documentation [DOCDIR]-_ACEOF--  cat <<\_ACEOF-_ACEOF-fi--if test -n "$ac_init_help"; then-  case $ac_init_help in-     short | recursive ) echo "Configuration of Haskell time package 1.12.2:";;-   esac-  cat <<\_ACEOF--Optional Packages:-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)-Gnu C compiler-Haskell compiler--Some influential environment variables:-  CC          C compiler command-  CFLAGS      C compiler flags-  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a-              nonstandard directory <lib dir>-  LIBS        libraries to pass to the linker, e.g. -l<library>-  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if-              you have headers in a nonstandard directory <include dir>-  CPP         C preprocessor--Use these variables to override the choices made by `configure' or to help-it to find libraries and programs with nonstandard names/locations.--Report bugs to <ashley@semantic.org>.-_ACEOF-ac_status=$?-fi--if test "$ac_init_help" = "recursive"; then-  # If there are subdirs, report their specific --help.-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue-    test -d "$ac_dir" ||-      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||-      continue-    ac_builddir=.--case "$ac_dir" in-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;-*)-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`-  # A ".." for each directory in $ac_dir_suffix.-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`-  case $ac_top_builddir_sub in-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;-  esac ;;-esac-ac_abs_top_builddir=$ac_pwd-ac_abs_builddir=$ac_pwd$ac_dir_suffix-# for backward compatibility:-ac_top_builddir=$ac_top_build_prefix--case $srcdir in-  .)  # We are building in place.-    ac_srcdir=.-    ac_top_srcdir=$ac_top_builddir_sub-    ac_abs_top_srcdir=$ac_pwd ;;-  [\\/]* | ?:[\\/]* )  # Absolute name.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir-    ac_abs_top_srcdir=$srcdir ;;-  *) # Relative name.-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_build_prefix$srcdir-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;-esac-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix--    cd "$ac_dir" || { ac_status=$?; continue; }-    # Check for guested configure.-    if test -f "$ac_srcdir/configure.gnu"; then-      echo &&-      $SHELL "$ac_srcdir/configure.gnu" --help=recursive-    elif test -f "$ac_srcdir/configure"; then-      echo &&-      $SHELL "$ac_srcdir/configure" --help=recursive-    else-      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2-    fi || ac_status=$?-    cd "$ac_pwd" || { ac_status=$?; break; }-  done-fi--test -n "$ac_init_help" && exit $ac_status-if $ac_init_version; then-  cat <<\_ACEOF-Haskell time package configure 1.12.2-generated by GNU Autoconf 2.69--Copyright (C) 2012 Free Software Foundation, Inc.-This configure script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it.-_ACEOF-  exit-fi--## ------------------------ ##-## Autoconf initialization. ##-## ------------------------ ##--# ac_fn_c_try_compile LINENO-# ---------------------------# Try to compile conftest.$ac_ext, and return whether this succeeded.-ac_fn_c_try_compile ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  rm -f conftest.$ac_objext-  if { { ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_compile") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    grep -v '^ *+' conftest.err >conftest.er1-    cat conftest.er1 >&5-    mv -f conftest.er1 conftest.err-  fi-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest.$ac_objext; then :-  ac_retval=0-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--	ac_retval=1-fi-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_compile--# ac_fn_c_try_cpp LINENO-# -----------------------# Try to preprocess conftest.$ac_ext, and return whether this succeeded.-ac_fn_c_try_cpp ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  if { { ac_try="$ac_cpp conftest.$ac_ext"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    grep -v '^ *+' conftest.err >conftest.er1-    cat conftest.er1 >&5-    mv -f conftest.er1 conftest.err-  fi-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } > conftest.i && {-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||-	 test ! -s conftest.err-       }; then :-  ac_retval=0-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--    ac_retval=1-fi-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_cpp--# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES-# --------------------------------------------------------# Tests whether HEADER exists, giving a warning if it cannot be compiled using-# the include files in INCLUDES and setting the cache variable VAR-# accordingly.-ac_fn_c_check_header_mongrel ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  if eval \${$3+:} false; then :-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-else-  # Is the header compilable?-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5-$as_echo_n "checking $2 usability... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-#include <$2>-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_header_compiler=yes-else-  ac_header_compiler=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5-$as_echo "$ac_header_compiler" >&6; }--# Is the header present?-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5-$as_echo_n "checking $2 presence... " >&6; }-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <$2>-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :-  ac_header_preproc=yes-else-  ac_header_preproc=no-fi-rm -f conftest.err conftest.i conftest.$ac_ext-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5-$as_echo "$ac_header_preproc" >&6; }--# So?  What about this header?-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((-  yes:no: )-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}-    ;;-  no:yes:* )-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5-$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5-$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}-( $as_echo "## ---------------------------------- ##-## Report this to ashley@semantic.org ##-## ---------------------------------- ##"-     ) | sed "s/^/$as_me: WARNING:     /" >&2-    ;;-esac-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-else-  eval "$3=\$ac_header_compiler"-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-fi-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_header_mongrel--# ac_fn_c_try_run LINENO-# -----------------------# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes-# that executables *can* be run.-ac_fn_c_try_run ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  if { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'-  { { case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_try") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; }; then :-  ac_retval=0-else-  $as_echo "$as_me: program exited with status $ac_status" >&5-       $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--       ac_retval=$ac_status-fi-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_run--# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES-# --------------------------------------------------------# Tests whether HEADER exists and can be compiled using the include files in-# INCLUDES, setting the cache variable VAR accordingly.-ac_fn_c_check_header_compile ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-#include <$2>-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  eval "$3=yes"-else-  eval "$3=no"-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_header_compile--# ac_fn_c_try_link LINENO-# ------------------------# Try to link conftest.$ac_ext, and return whether this succeeded.-ac_fn_c_try_link ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  rm -f conftest.$ac_objext conftest$ac_exeext-  if { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    grep -v '^ *+' conftest.err >conftest.er1-    cat conftest.er1 >&5-    mv -f conftest.er1 conftest.err-  fi-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; } && {-	 test -z "$ac_c_werror_flag" ||-	 test ! -s conftest.err-       } && test -s conftest$ac_exeext && {-	 test "$cross_compiling" = yes ||-	 test -x conftest$ac_exeext-       }; then :-  ac_retval=0-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--	ac_retval=1-fi-  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information-  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would-  # interfere with the next link command; also delete a directory that is-  # left behind by Apple's compiler.  We do this before executing the actions.-  rm -rf conftest.dSYM conftest_ipa8_conftest.oo-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno-  as_fn_set_status $ac_retval--} # ac_fn_c_try_link--# ac_fn_c_check_func LINENO FUNC VAR-# -----------------------------------# Tests whether FUNC exists, setting the cache variable VAR accordingly-ac_fn_c_check_func ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5-$as_echo_n "checking for $2... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-/* Define $2 to an innocuous variant, in case <limits.h> declares $2.-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */-#define $2 innocuous_$2--/* System header to define __stub macros and hopefully few prototypes,-    which can conflict with char $2 (); below.-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since-    <limits.h> exists even on freestanding compilers.  */--#ifdef __STDC__-# include <limits.h>-#else-# include <assert.h>-#endif--#undef $2--/* Override any GCC internal prototype to avoid an error.-   Use char because int might match the return type of a GCC-   builtin and then its argument prototype would still apply.  */-#ifdef __cplusplus-extern "C"-#endif-char $2 ();-/* The GNU C library defines this for functions which it implements-    to always fail with ENOSYS.  Some functions are actually named-    something starting with __ and the normal name is an alias.  */-#if defined __stub_$2 || defined __stub___$2-choke me-#endif--int-main ()-{-return $2 ();-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  eval "$3=yes"-else-  eval "$3=no"-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_func--# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES-# -----------------------------------------------------# Tries to find if the field MEMBER exists in type AGGR, after including-# INCLUDES, setting cache variable VAR accordingly.-ac_fn_c_check_member ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5-$as_echo_n "checking for $2.$3... " >&6; }-if eval \${$4+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$5-int-main ()-{-static $2 ac_aggr;-if (ac_aggr.$3)-return 0;-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  eval "$4=yes"-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$5-int-main ()-{-static $2 ac_aggr;-if (sizeof ac_aggr.$3)-return 0;-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  eval "$4=yes"-else-  eval "$4=no"-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-eval ac_res=\$$4-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_member--# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES-# ----------------------------------------------# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR-# accordingly.-ac_fn_c_check_decl ()-{-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-  as_decl_name=`echo $2|sed 's/ *(.*//'`-  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }-if eval \${$3+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-$4-int-main ()-{-#ifndef $as_decl_name-#ifdef __cplusplus-  (void) $as_decl_use;-#else-  (void) $as_decl_name;-#endif-#endif--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  eval "$3=yes"-else-  eval "$3=no"-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-eval ac_res=\$$3-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5-$as_echo "$ac_res" >&6; }-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno--} # ac_fn_c_check_decl-cat >config.log <<_ACEOF-This file contains any messages produced by compilers while-running configure, to aid debugging if configure makes a mistake.--It was created by Haskell time package $as_me 1.12.2, which was-generated by GNU Autoconf 2.69.  Invocation command line was--  $ $0 $@--_ACEOF-exec 5>>config.log-{-cat <<_ASUNAME-## --------- ##-## Platform. ##-## --------- ##--hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`-uname -m = `(uname -m) 2>/dev/null || echo unknown`-uname -r = `(uname -r) 2>/dev/null || echo unknown`-uname -s = `(uname -s) 2>/dev/null || echo unknown`-uname -v = `(uname -v) 2>/dev/null || echo unknown`--/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`--/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`--_ASUNAME--as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    $as_echo "PATH: $as_dir"-  done-IFS=$as_save_IFS--} >&5--cat >&5 <<_ACEOF---## ----------- ##-## Core tests. ##-## ----------- ##--_ACEOF---# Keep a trace of the command line.-# Strip out --no-create and --no-recursion so they do not pile up.-# Strip out --silent because we don't want to record it for future runs.-# Also quote any args containing shell meta-characters.-# Make two passes to allow for proper duplicate-argument suppression.-ac_configure_args=-ac_configure_args0=-ac_configure_args1=-ac_must_keep_next=false-for ac_pass in 1 2-do-  for ac_arg-  do-    case $ac_arg in-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \-    | -silent | --silent | --silen | --sile | --sil)-      continue ;;-    *\'*)-      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;-    esac-    case $ac_pass in-    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;-    2)-      as_fn_append ac_configure_args1 " '$ac_arg'"-      if test $ac_must_keep_next = true; then-	ac_must_keep_next=false # Got value, back to normal.-      else-	case $ac_arg in-	  *=* | --config-cache | -C | -disable-* | --disable-* \-	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \-	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \-	  | -with-* | --with-* | -without-* | --without-* | --x)-	    case "$ac_configure_args0 " in-	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;-	    esac-	    ;;-	  -* ) ac_must_keep_next=true ;;-	esac-      fi-      as_fn_append ac_configure_args " '$ac_arg'"-      ;;-    esac-  done-done-{ ac_configure_args0=; unset ac_configure_args0;}-{ ac_configure_args1=; unset ac_configure_args1;}--# When interrupted or exit'd, cleanup temporary files, and complete-# config.log.  We remove comments because anyway the quotes in there-# would cause problems or look ugly.-# WARNING: Use '\'' to represent an apostrophe within the trap.-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.-trap 'exit_status=$?-  # Save into config.log some information that might help in debugging.-  {-    echo--    $as_echo "## ---------------- ##-## Cache variables. ##-## ---------------- ##"-    echo-    # The following way of writing the cache mishandles newlines in values,-(-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do-    eval ac_val=\$$ac_var-    case $ac_val in #(-    *${as_nl}*)-      case $ac_var in #(-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;-      esac-      case $ac_var in #(-      _ | IFS | as_nl) ;; #(-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(-      *) { eval $ac_var=; unset $ac_var;} ;;-      esac ;;-    esac-  done-  (set) 2>&1 |-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(-    *${as_nl}ac_space=\ *)-      sed -n \-	"s/'\''/'\''\\\\'\'''\''/g;-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"-      ;; #(-    *)-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"-      ;;-    esac |-    sort-)-    echo--    $as_echo "## ----------------- ##-## Output variables. ##-## ----------------- ##"-    echo-    for ac_var in $ac_subst_vars-    do-      eval ac_val=\$$ac_var-      case $ac_val in-      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;-      esac-      $as_echo "$ac_var='\''$ac_val'\''"-    done | sort-    echo--    if test -n "$ac_subst_files"; then-      $as_echo "## ------------------- ##-## File substitutions. ##-## ------------------- ##"-      echo-      for ac_var in $ac_subst_files-      do-	eval ac_val=\$$ac_var-	case $ac_val in-	*\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;-	esac-	$as_echo "$ac_var='\''$ac_val'\''"-      done | sort-      echo-    fi--    if test -s confdefs.h; then-      $as_echo "## ----------- ##-## confdefs.h. ##-## ----------- ##"-      echo-      cat confdefs.h-      echo-    fi-    test "$ac_signal" != 0 &&-      $as_echo "$as_me: caught signal $ac_signal"-    $as_echo "$as_me: exit $exit_status"-  } >&5-  rm -f core *.core core.conftest.* &&-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&-    exit $exit_status-' 0-for ac_signal in 1 2 13 15; do-  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal-done-ac_signal=0--# confdefs.h avoids OS command line length limits that DEFS can exceed.-rm -f -r conftest* confdefs.h--$as_echo "/* confdefs.h */" > confdefs.h--# Predefined preprocessor variables.--cat >>confdefs.h <<_ACEOF-#define PACKAGE_NAME "$PACKAGE_NAME"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_VERSION "$PACKAGE_VERSION"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_STRING "$PACKAGE_STRING"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"-_ACEOF--cat >>confdefs.h <<_ACEOF-#define PACKAGE_URL "$PACKAGE_URL"-_ACEOF---# Let the site file select an alternate cache file if it wants to.-# Prefer an explicitly selected file to automatically selected ones.-ac_site_file1=NONE-ac_site_file2=NONE-if test -n "$CONFIG_SITE"; then-  # We do not want a PATH search for config.site.-  case $CONFIG_SITE in #((-    -*)  ac_site_file1=./$CONFIG_SITE;;-    */*) ac_site_file1=$CONFIG_SITE;;-    *)   ac_site_file1=./$CONFIG_SITE;;-  esac-elif test "x$prefix" != xNONE; then-  ac_site_file1=$prefix/share/config.site-  ac_site_file2=$prefix/etc/config.site-else-  ac_site_file1=$ac_default_prefix/share/config.site-  ac_site_file2=$ac_default_prefix/etc/config.site-fi-for ac_site_file in "$ac_site_file1" "$ac_site_file2"-do-  test "x$ac_site_file" = xNONE && continue-  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5-$as_echo "$as_me: loading site script $ac_site_file" >&6;}-    sed 's/^/| /' "$ac_site_file" >&5-    . "$ac_site_file" \-      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "failed to load site script $ac_site_file-See \`config.log' for more details" "$LINENO" 5; }-  fi-done--if test -r "$cache_file"; then-  # Some versions of bash will fail to source /dev/null (special files-  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.-  if test /dev/null != "$cache_file" && test -f "$cache_file"; then-    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5-$as_echo "$as_me: loading cache $cache_file" >&6;}-    case $cache_file in-      [\\/]* | ?:[\\/]* ) . "$cache_file";;-      *)                      . "./$cache_file";;-    esac-  fi-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5-$as_echo "$as_me: creating cache $cache_file" >&6;}-  >$cache_file-fi--as_fn_append ac_header_list " sys/time.h"-# Check that the precious variables saved in the cache have kept the same-# value.-ac_cache_corrupted=false-for ac_var in $ac_precious_vars; do-  eval ac_old_set=\$ac_cv_env_${ac_var}_set-  eval ac_new_set=\$ac_env_${ac_var}_set-  eval ac_old_val=\$ac_cv_env_${ac_var}_value-  eval ac_new_val=\$ac_env_${ac_var}_value-  case $ac_old_set,$ac_new_set in-    set,)-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}-      ac_cache_corrupted=: ;;-    ,set)-      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}-      ac_cache_corrupted=: ;;-    ,);;-    *)-      if test "x$ac_old_val" != "x$ac_new_val"; then-	# differences in whitespace do not lead to failure.-	ac_old_val_w=`echo x $ac_old_val`-	ac_new_val_w=`echo x $ac_new_val`-	if test "$ac_old_val_w" != "$ac_new_val_w"; then-	  { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}-	  ac_cache_corrupted=:-	else-	  { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}-	  eval $ac_var=\$ac_old_val-	fi-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5-$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}-	{ $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5-$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}-      fi;;-  esac-  # Pass precious variables to config.status.-  if test "$ac_new_set" = set; then-    case $ac_new_val in-    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;-    *) ac_arg=$ac_var=$ac_new_val ;;-    esac-    case " $ac_configure_args " in-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.-      *) as_fn_append ac_configure_args " '$ac_arg'" ;;-    esac-  fi-done-if $ac_cache_corrupted; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}-  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5-fi-## -------------------- ##-## Main body of script. ##-## -------------------- ##--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu----# Safety check: Ensure that we are in the correct source directory.---# These are to silence warnings with older Cabal versions--# Check whether --with-gcc was given.-if test "${with_gcc+set}" = set; then :-  withval=$with_gcc;-fi---# Check whether --with-compiler was given.-if test "${with_compiler+set}" = set; then :-  withval=$with_compiler;-fi---ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu-if test -n "$ac_tool_prefix"; then-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.-set dummy ${ac_tool_prefix}gcc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_CC="${ac_tool_prefix}gcc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---fi-if test -z "$ac_cv_prog_CC"; then-  ac_ct_CC=$CC-  # Extract the first word of "gcc", so it can be a program name with args.-set dummy gcc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_ac_ct_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$ac_ct_CC"; then-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_ac_ct_CC="gcc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-ac_ct_CC=$ac_cv_prog_ac_ct_CC-if test -n "$ac_ct_CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5-$as_echo "$ac_ct_CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi--  if test "x$ac_ct_CC" = x; then-    CC=""-  else-    case $cross_compiling:$ac_tool_warned in-yes:)-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}-ac_tool_warned=yes ;;-esac-    CC=$ac_ct_CC-  fi-else-  CC="$ac_cv_prog_CC"-fi--if test -z "$CC"; then-          if test -n "$ac_tool_prefix"; then-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.-set dummy ${ac_tool_prefix}cc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_CC="${ac_tool_prefix}cc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---  fi-fi-if test -z "$CC"; then-  # Extract the first word of "cc", so it can be a program name with args.-set dummy cc; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-  ac_prog_rejected=no-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then-       ac_prog_rejected=yes-       continue-     fi-    ac_cv_prog_CC="cc"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--if test $ac_prog_rejected = yes; then-  # We found a bogon in the path, so make sure we never use it.-  set dummy $ac_cv_prog_CC-  shift-  if test $# != 0; then-    # We chose a different compiler from the bogus one.-    # However, it has the same basename, so the bogon will be chosen-    # first if we set CC to just the basename; use the full file name.-    shift-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"-  fi-fi-fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---fi-if test -z "$CC"; then-  if test -n "$ac_tool_prefix"; then-  for ac_prog in cl.exe-  do-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.-set dummy $ac_tool_prefix$ac_prog; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$CC"; then-  ac_cv_prog_CC="$CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-CC=$ac_cv_prog_CC-if test -n "$CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5-$as_echo "$CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---    test -n "$CC" && break-  done-fi-if test -z "$CC"; then-  ac_ct_CC=$CC-  for ac_prog in cl.exe-do-  # Extract the first word of "$ac_prog", so it can be a program name with args.-set dummy $ac_prog; ac_word=$2-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5-$as_echo_n "checking for $ac_word... " >&6; }-if ${ac_cv_prog_ac_ct_CC+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -n "$ac_ct_CC"; then-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.-else-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_exec_ext in '' $ac_executable_extensions; do-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then-    ac_cv_prog_ac_ct_CC="$ac_prog"-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5-    break 2-  fi-done-  done-IFS=$as_save_IFS--fi-fi-ac_ct_CC=$ac_cv_prog_ac_ct_CC-if test -n "$ac_ct_CC"; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5-$as_echo "$ac_ct_CC" >&6; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-fi---  test -n "$ac_ct_CC" && break-done--  if test "x$ac_ct_CC" = x; then-    CC=""-  else-    case $cross_compiling:$ac_tool_warned in-yes:)-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}-ac_tool_warned=yes ;;-esac-    CC=$ac_ct_CC-  fi-fi--fi---test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "no acceptable C compiler found in \$PATH-See \`config.log' for more details" "$LINENO" 5; }--# Provide some information about the compiler.-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5-set X $ac_compile-ac_compiler=$2-for ac_option in --version -v -V -qversion; do-  { { ac_try="$ac_compiler $ac_option >&5"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err-  ac_status=$?-  if test -s conftest.err; then-    sed '10a\-... rest of stderr output deleted ...-         10q' conftest.err >conftest.er1-    cat conftest.er1 >&5-  fi-  rm -f conftest.er1 conftest.err-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }-done--cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-ac_clean_files_save=$ac_clean_files-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"-# Try to create an executable without -o first, disregard a.out.-# It will help us diagnose broken compilers, and finding out an intuition-# of exeext.-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5-$as_echo_n "checking whether the C compiler works... " >&6; }-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`--# The possible output files:-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"--ac_rmfiles=-for ac_file in $ac_files-do-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;-  esac-done-rm -f $ac_rmfiles--if { { ac_try="$ac_link_default"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link_default") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; then :-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'-# in a Makefile.  We should not override ac_cv_exeext if it was cached,-# so that the user can short-circuit this test for compilers unknown to-# Autoconf.-for ac_file in $ac_files ''-do-  test -f "$ac_file" || continue-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )-	;;-    [ab].out )-	# We found the default executable, but exeext='' is most-	# certainly right.-	break;;-    *.* )-	if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;-	then :; else-	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`-	fi-	# We set ac_cv_exeext here because the later test for it is not-	# safe: cross compilers may not add the suffix if given an `-o'-	# argument, so we may need to know it at that point already.-	# Even if this section looks crufty: it has the advantage of-	# actually working.-	break;;-    * )-	break;;-  esac-done-test "$ac_cv_exeext" = no && ac_cv_exeext=--else-  ac_file=''-fi-if test -z "$ac_file"; then :-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5-$as_echo "no" >&6; }-$as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error 77 "C compiler cannot create executables-See \`config.log' for more details" "$LINENO" 5; }-else-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5-$as_echo "yes" >&6; }-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5-$as_echo_n "checking for C compiler default output file name... " >&6; }-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5-$as_echo "$ac_file" >&6; }-ac_exeext=$ac_cv_exeext--rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out-ac_clean_files=$ac_clean_files_save-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5-$as_echo_n "checking for suffix of executables... " >&6; }-if { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; then :-  # If both `conftest.exe' and `conftest' are `present' (well, observable)-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will-# work properly (i.e., refer to `conftest.exe'), while it won't with-# `rm'.-for ac_file in conftest.exe conftest conftest.*; do-  test -f "$ac_file" || continue-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`-	  break;;-    * ) break;;-  esac-done-else-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "cannot compute suffix of executables: cannot compile and link-See \`config.log' for more details" "$LINENO" 5; }-fi-rm -f conftest conftest$ac_cv_exeext-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5-$as_echo "$ac_cv_exeext" >&6; }--rm -f conftest.$ac_ext-EXEEXT=$ac_cv_exeext-ac_exeext=$EXEEXT-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdio.h>-int-main ()-{-FILE *f = fopen ("conftest.out", "w");- return ferror (f) || fclose (f) != 0;--  ;-  return 0;-}-_ACEOF-ac_clean_files="$ac_clean_files conftest.out"-# Check that the compiler produces executables we can run.  If not, either-# the compiler is broken, or we cross compile.-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5-$as_echo_n "checking whether we are cross compiling... " >&6; }-if test "$cross_compiling" != yes; then-  { { ac_try="$ac_link"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_link") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }-  if { ac_try='./conftest$ac_cv_exeext'-  { { case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_try") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; }; then-    cross_compiling=no-  else-    if test "$cross_compiling" = maybe; then-	cross_compiling=yes-    else-	{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "cannot run C compiled programs.-If you meant to cross compile, use \`--host'.-See \`config.log' for more details" "$LINENO" 5; }-    fi-  fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5-$as_echo "$cross_compiling" >&6; }--rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out-ac_clean_files=$ac_clean_files_save-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5-$as_echo_n "checking for suffix of object files... " >&6; }-if ${ac_cv_objext+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-rm -f conftest.o conftest.obj-if { { ac_try="$ac_compile"-case "(($ac_try" in-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;-  *) ac_try_echo=$ac_try;;-esac-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""-$as_echo "$ac_try_echo"; } >&5-  (eval "$ac_compile") 2>&5-  ac_status=$?-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5-  test $ac_status = 0; }; then :-  for ac_file in conftest.o conftest.obj conftest.*; do-  test -f "$ac_file" || continue;-  case $ac_file in-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`-       break;;-  esac-done-else-  $as_echo "$as_me: failed program was:" >&5-sed 's/^/| /' conftest.$ac_ext >&5--{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "cannot compute suffix of object files: cannot compile-See \`config.log' for more details" "$LINENO" 5; }-fi-rm -f conftest.$ac_cv_objext conftest.$ac_ext-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5-$as_echo "$ac_cv_objext" >&6; }-OBJEXT=$ac_cv_objext-ac_objext=$OBJEXT-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }-if ${ac_cv_c_compiler_gnu+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{-#ifndef __GNUC__-       choke me-#endif--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_compiler_gnu=yes-else-  ac_compiler_gnu=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-ac_cv_c_compiler_gnu=$ac_compiler_gnu--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5-$as_echo "$ac_cv_c_compiler_gnu" >&6; }-if test $ac_compiler_gnu = yes; then-  GCC=yes-else-  GCC=-fi-ac_test_CFLAGS=${CFLAGS+set}-ac_save_CFLAGS=$CFLAGS-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5-$as_echo_n "checking whether $CC accepts -g... " >&6; }-if ${ac_cv_prog_cc_g+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_save_c_werror_flag=$ac_c_werror_flag-   ac_c_werror_flag=yes-   ac_cv_prog_cc_g=no-   CFLAGS="-g"-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_prog_cc_g=yes-else-  CFLAGS=""-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :--else-  ac_c_werror_flag=$ac_save_c_werror_flag-	 CFLAGS="-g"-	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_prog_cc_g=yes-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-   ac_c_werror_flag=$ac_save_c_werror_flag-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5-$as_echo "$ac_cv_prog_cc_g" >&6; }-if test "$ac_test_CFLAGS" = set; then-  CFLAGS=$ac_save_CFLAGS-elif test $ac_cv_prog_cc_g = yes; then-  if test "$GCC" = yes; then-    CFLAGS="-g -O2"-  else-    CFLAGS="-g"-  fi-else-  if test "$GCC" = yes; then-    CFLAGS="-O2"-  else-    CFLAGS=-  fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }-if ${ac_cv_prog_cc_c89+:} false; then :-  $as_echo_n "(cached) " >&6-else-  ac_cv_prog_cc_c89=no-ac_save_CC=$CC-cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdarg.h>-#include <stdio.h>-struct stat;-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */-struct buf { int x; };-FILE * (*rcsopen) (struct buf *, struct stat *, int);-static char *e (p, i)-     char **p;-     int i;-{-  return p[i];-}-static char *f (char * (*g) (char **, int), char **p, ...)-{-  char *s;-  va_list v;-  va_start (v,p);-  s = g (p, va_arg (v,int));-  va_end (v);-  return s;-}--/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has-   function prototypes and stuff, but not '\xHH' hex character constants.-   These don't provoke an error unfortunately, instead are silently treated-   as 'x'.  The following induces an error, until -std is added to get-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an-   array size at least.  It's necessary to write '\x00'==0 to get something-   that's true only with -std.  */-int osf4_cc_array ['\x00' == 0 ? 1 : -1];--/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters-   inside strings and character constants.  */-#define FOO(x) 'x'-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];--int test (int i, double x);-struct s1 {int (*f) (int a);};-struct s2 {int (*f) (double a);};-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);-int argc;-char **argv;-int-main ()-{-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];-  ;-  return 0;-}-_ACEOF-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \-	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"-do-  CC="$ac_save_CC $ac_arg"-  if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_prog_cc_c89=$ac_arg-fi-rm -f core conftest.err conftest.$ac_objext-  test "x$ac_cv_prog_cc_c89" != "xno" && break-done-rm -f conftest.$ac_ext-CC=$ac_save_CC--fi-# AC_CACHE_VAL-case "x$ac_cv_prog_cc_c89" in-  x)-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5-$as_echo "none needed" >&6; } ;;-  xno)-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5-$as_echo "unsupported" >&6; } ;;-  *)-    CC="$CC $ac_cv_prog_cc_c89"-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;-esac-if test "x$ac_cv_prog_cc_c89" != xno; then :--fi--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu----ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5-$as_echo_n "checking how to run the C preprocessor... " >&6; }-# On Suns, sometimes $CPP names a directory.-if test -n "$CPP" && test -d "$CPP"; then-  CPP=-fi-if test -z "$CPP"; then-  if ${ac_cv_prog_CPP+:} false; then :-  $as_echo_n "(cached) " >&6-else-      # Double quotes because CPP needs to be expanded-    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"-    do-      ac_preproc_ok=false-for ac_c_preproc_warn_flag in '' yes-do-  # Use a header file that comes with gcc, so configuring glibc-  # with a fresh cross-compiler works.-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since-  # <limits.h> exists even on freestanding compilers.-  # On the NeXT, cc -E runs the code through the compiler's parser,-  # not just through cpp. "Syntax error" is here to catch this case.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#ifdef __STDC__-# include <limits.h>-#else-# include <assert.h>-#endif-		     Syntax error-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :--else-  # Broken: fails on valid input.-continue-fi-rm -f conftest.err conftest.i conftest.$ac_ext--  # OK, works on sane cases.  Now check whether nonexistent headers-  # can be detected and how.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <ac_nonexistent.h>-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :-  # Broken: success on invalid input.-continue-else-  # Passes both tests.-ac_preproc_ok=:-break-fi-rm -f conftest.err conftest.i conftest.$ac_ext--done-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.-rm -f conftest.i conftest.err conftest.$ac_ext-if $ac_preproc_ok; then :-  break-fi--    done-    ac_cv_prog_CPP=$CPP--fi-  CPP=$ac_cv_prog_CPP-else-  ac_cv_prog_CPP=$CPP-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5-$as_echo "$CPP" >&6; }-ac_preproc_ok=false-for ac_c_preproc_warn_flag in '' yes-do-  # Use a header file that comes with gcc, so configuring glibc-  # with a fresh cross-compiler works.-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since-  # <limits.h> exists even on freestanding compilers.-  # On the NeXT, cc -E runs the code through the compiler's parser,-  # not just through cpp. "Syntax error" is here to catch this case.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#ifdef __STDC__-# include <limits.h>-#else-# include <assert.h>-#endif-		     Syntax error-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :--else-  # Broken: fails on valid input.-continue-fi-rm -f conftest.err conftest.i conftest.$ac_ext--  # OK, works on sane cases.  Now check whether nonexistent headers-  # can be detected and how.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <ac_nonexistent.h>-_ACEOF-if ac_fn_c_try_cpp "$LINENO"; then :-  # Broken: success on invalid input.-continue-else-  # Passes both tests.-ac_preproc_ok=:-break-fi-rm -f conftest.err conftest.i conftest.$ac_ext--done-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.-rm -f conftest.i conftest.err conftest.$ac_ext-if $ac_preproc_ok; then :--else-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check-See \`config.log' for more details" "$LINENO" 5; }-fi--ac_ext=c-ac_cpp='$CPP $CPPFLAGS'-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'-ac_compiler_gnu=$ac_cv_c_compiler_gnu---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }-if ${ac_cv_path_GREP+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if test -z "$GREP"; then-  ac_path_GREP_found=false-  # Loop through the user's path and test for each of PROGNAME-LIST-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_prog in grep ggrep; do-    for ac_exec_ext in '' $ac_executable_extensions; do-      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"-      as_fn_executable_p "$ac_path_GREP" || continue-# Check for GNU ac_path_GREP and select it if it is found.-  # Check for GNU $ac_path_GREP-case `"$ac_path_GREP" --version 2>&1` in-*GNU*)-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;-*)-  ac_count=0-  $as_echo_n 0123456789 >"conftest.in"-  while :-  do-    cat "conftest.in" "conftest.in" >"conftest.tmp"-    mv "conftest.tmp" "conftest.in"-    cp "conftest.in" "conftest.nl"-    $as_echo 'GREP' >> "conftest.nl"-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break-    as_fn_arith $ac_count + 1 && ac_count=$as_val-    if test $ac_count -gt ${ac_path_GREP_max-0}; then-      # Best one so far, save it but keep looking for a better one-      ac_cv_path_GREP="$ac_path_GREP"-      ac_path_GREP_max=$ac_count-    fi-    # 10*(2^10) chars as input seems more than enough-    test $ac_count -gt 10 && break-  done-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;-esac--      $ac_path_GREP_found && break 3-    done-  done-  done-IFS=$as_save_IFS-  if test -z "$ac_cv_path_GREP"; then-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5-  fi-else-  ac_cv_path_GREP=$GREP-fi--fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5-$as_echo "$ac_cv_path_GREP" >&6; }- GREP="$ac_cv_path_GREP"---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5-$as_echo_n "checking for egrep... " >&6; }-if ${ac_cv_path_EGREP+:} false; then :-  $as_echo_n "(cached) " >&6-else-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1-   then ac_cv_path_EGREP="$GREP -E"-   else-     if test -z "$EGREP"; then-  ac_path_EGREP_found=false-  # Loop through the user's path and test for each of PROGNAME-LIST-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    for ac_prog in egrep; do-    for ac_exec_ext in '' $ac_executable_extensions; do-      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"-      as_fn_executable_p "$ac_path_EGREP" || continue-# Check for GNU ac_path_EGREP and select it if it is found.-  # Check for GNU $ac_path_EGREP-case `"$ac_path_EGREP" --version 2>&1` in-*GNU*)-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;-*)-  ac_count=0-  $as_echo_n 0123456789 >"conftest.in"-  while :-  do-    cat "conftest.in" "conftest.in" >"conftest.tmp"-    mv "conftest.tmp" "conftest.in"-    cp "conftest.in" "conftest.nl"-    $as_echo 'EGREP' >> "conftest.nl"-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break-    as_fn_arith $ac_count + 1 && ac_count=$as_val-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then-      # Best one so far, save it but keep looking for a better one-      ac_cv_path_EGREP="$ac_path_EGREP"-      ac_path_EGREP_max=$ac_count-    fi-    # 10*(2^10) chars as input seems more than enough-    test $ac_count -gt 10 && break-  done-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;-esac--      $ac_path_EGREP_found && break 3-    done-  done-  done-IFS=$as_save_IFS-  if test -z "$ac_cv_path_EGREP"; then-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5-  fi-else-  ac_cv_path_EGREP=$EGREP-fi--   fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5-$as_echo "$ac_cv_path_EGREP" >&6; }- EGREP="$ac_cv_path_EGREP"---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5-$as_echo_n "checking for ANSI C header files... " >&6; }-if ${ac_cv_header_stdc+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdlib.h>-#include <stdarg.h>-#include <string.h>-#include <float.h>--int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_header_stdc=yes-else-  ac_cv_header_stdc=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext--if test $ac_cv_header_stdc = yes; then-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <string.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |-  $EGREP "memchr" >/dev/null 2>&1; then :--else-  ac_cv_header_stdc=no-fi-rm -f conftest*--fi--if test $ac_cv_header_stdc = yes; then-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <stdlib.h>--_ACEOF-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |-  $EGREP "free" >/dev/null 2>&1; then :--else-  ac_cv_header_stdc=no-fi-rm -f conftest*--fi--if test $ac_cv_header_stdc = yes; then-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.-  if test "$cross_compiling" = yes; then :-  :-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <ctype.h>-#include <stdlib.h>-#if ((' ' & 0x0FF) == 0x020)-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))-#else-# define ISLOWER(c) \-		   (('a' <= (c) && (c) <= 'i') \-		     || ('j' <= (c) && (c) <= 'r') \-		     || ('s' <= (c) && (c) <= 'z'))-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))-#endif--#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))-int-main ()-{-  int i;-  for (i = 0; i < 256; i++)-    if (XOR (islower (i), ISLOWER (i))-	|| toupper (i) != TOUPPER (i))-      return 2;-  return 0;-}-_ACEOF-if ac_fn_c_try_run "$LINENO"; then :--else-  ac_cv_header_stdc=no-fi-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \-  conftest.$ac_objext conftest.beam conftest.$ac_ext-fi--fi-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5-$as_echo "$ac_cv_header_stdc" >&6; }-if test $ac_cv_header_stdc = yes; then--$as_echo "#define STDC_HEADERS 1" >>confdefs.h--fi--# On IRIX 5.3, sys/types and inttypes.h are conflicting.-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \-		  inttypes.h stdint.h unistd.h-do :-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default-"-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :-  cat >>confdefs.h <<_ACEOF-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1-_ACEOF--fi--done----  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"-if test "x$ac_cv_header_minix_config_h" = xyes; then :-  MINIX=yes-else-  MINIX=-fi---  if test "$MINIX" = yes; then--$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h---$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h---$as_echo "#define _MINIX 1" >>confdefs.h--  fi---  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }-if ${ac_cv_safe_to_define___extensions__+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */--#         define __EXTENSIONS__ 1-          $ac_includes_default-int-main ()-{--  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_safe_to_define___extensions__=yes-else-  ac_cv_safe_to_define___extensions__=no-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }-  test $ac_cv_safe_to_define___extensions__ = yes &&-    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h--  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h--  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h--  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h--  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h----ac_config_headers="$ac_config_headers lib/include/HsTimeConfig.h"---for ac_header in time.h-do :-  ac_fn_c_check_header_mongrel "$LINENO" "time.h" "ac_cv_header_time_h" "$ac_includes_default"-if test "x$ac_cv_header_time_h" = xyes; then :-  cat >>confdefs.h <<_ACEOF-#define HAVE_TIME_H 1-_ACEOF--fi--done--for ac_func in gmtime_r localtime_r-do :-  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :-  cat >>confdefs.h <<_ACEOF-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1-_ACEOF--fi-done---for ac_func in clock_gettime-do :-  ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime"-if test "x$ac_cv_func_clock_gettime" = xyes; then :-  cat >>confdefs.h <<_ACEOF-#define HAVE_CLOCK_GETTIME 1-_ACEOF--fi-done---{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5-$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }-if ${ac_cv_struct_tm+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <sys/types.h>-#include <time.h>--int-main ()-{-struct tm tm;-				     int *p = &tm.tm_sec;-				     return !p;-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_compile "$LINENO"; then :-  ac_cv_struct_tm=time.h-else-  ac_cv_struct_tm=sys/time.h-fi-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5-$as_echo "$ac_cv_struct_tm" >&6; }-if test $ac_cv_struct_tm = sys/time.h; then--$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h--fi--ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include <sys/types.h>-#include <$ac_cv_struct_tm>--"-if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then :--cat >>confdefs.h <<_ACEOF-#define HAVE_STRUCT_TM_TM_ZONE 1-_ACEOF---fi--if test "$ac_cv_member_struct_tm_tm_zone" = yes; then--$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h--else-  ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include <time.h>-"-if test "x$ac_cv_have_decl_tzname" = xyes; then :-  ac_have_decl=1-else-  ac_have_decl=0-fi--cat >>confdefs.h <<_ACEOF-#define HAVE_DECL_TZNAME $ac_have_decl-_ACEOF--  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5-$as_echo_n "checking for tzname... " >&6; }-if ${ac_cv_var_tzname+:} false; then :-  $as_echo_n "(cached) " >&6-else-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext-/* end confdefs.h.  */-#include <time.h>-#if !HAVE_DECL_TZNAME-extern char *tzname[];-#endif--int-main ()-{-return tzname[0][0];-  ;-  return 0;-}-_ACEOF-if ac_fn_c_try_link "$LINENO"; then :-  ac_cv_var_tzname=yes-else-  ac_cv_var_tzname=no-fi-rm -f core conftest.err conftest.$ac_objext \-    conftest$ac_exeext conftest.$ac_ext-fi-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5-$as_echo "$ac_cv_var_tzname" >&6; }-  if test $ac_cv_var_tzname = yes; then--$as_echo "#define HAVE_TZNAME 1" >>confdefs.h--  fi-fi------  for ac_header in $ac_header_list-do :-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default-"-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :-  cat >>confdefs.h <<_ACEOF-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1-_ACEOF--fi--done-------  for ac_header in sys/time.h-do :-  ac_fn_c_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default"-if test "x$ac_cv_header_sys_time_h" = xyes; then :-  cat >>confdefs.h <<_ACEOF-#define HAVE_SYS_TIME_H 1-_ACEOF--fi--done--  ac_fn_c_check_decl "$LINENO" "altzone" "ac_cv_have_decl_altzone" "-  #if HAVE_SYS_TIME_H-  #include <sys/time.h>-  #endif-  #include <time.h>--"-if test "x$ac_cv_have_decl_altzone" = xyes; then :-  ac_have_decl=1-else-  ac_have_decl=0-fi--cat >>confdefs.h <<_ACEOF-#define HAVE_DECL_ALTZONE $ac_have_decl-_ACEOF----cat >confcache <<\_ACEOF-# This file is a shell script that caches the results of configure-# tests run on this system so they can be shared between configure-# scripts and configure runs, see configure's option --config-cache.-# It is not useful on other systems.  If it contains results you don't-# want to keep, you may remove or edit it.-#-# config.status only pays attention to the cache file if you give it-# the --recheck option to rerun configure.-#-# `ac_cv_env_foo' variables (set or unset) will be overridden when-# loading this file, other *unset* `ac_cv_foo' will be assigned the-# following values.--_ACEOF--# The following way of writing the cache mishandles newlines in values,-# but we know of no workaround that is simple, portable, and efficient.-# So, we kill variables containing newlines.-# Ultrix sh set writes to stderr and can't be redirected directly,-# and sets the high bit in the cache file unless we assign to the vars.-(-  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do-    eval ac_val=\$$ac_var-    case $ac_val in #(-    *${as_nl}*)-      case $ac_var in #(-      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;-      esac-      case $ac_var in #(-      _ | IFS | as_nl) ;; #(-      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(-      *) { eval $ac_var=; unset $ac_var;} ;;-      esac ;;-    esac-  done--  (set) 2>&1 |-    case $as_nl`(ac_space=' '; set) 2>&1` in #(-    *${as_nl}ac_space=\ *)-      # `set' does not quote correctly, so add quotes: double-quote-      # substitution turns \\\\ into \\, and sed turns \\ into \.-      sed -n \-	"s/'/'\\\\''/g;-	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"-      ;; #(-    *)-      # `set' quotes correctly as required by POSIX, so do not add quotes.-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"-      ;;-    esac |-    sort-) |-  sed '-     /^ac_cv_env_/b end-     t clear-     :clear-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/-     t end-     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/-     :end' >>confcache-if diff "$cache_file" confcache >/dev/null 2>&1; then :; else-  if test -w "$cache_file"; then-    if test "x$cache_file" != "x/dev/null"; then-      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5-$as_echo "$as_me: updating cache $cache_file" >&6;}-      if test ! -f "$cache_file" || test -h "$cache_file"; then-	cat confcache >"$cache_file"-      else-        case $cache_file in #(-        */* | ?:*)-	  mv -f confcache "$cache_file"$$ &&-	  mv -f "$cache_file"$$ "$cache_file" ;; #(-        *)-	  mv -f confcache "$cache_file" ;;-	esac-      fi-    fi-  else-    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}-  fi-fi-rm -f confcache--test "x$prefix" = xNONE && prefix=$ac_default_prefix-# Let make expand exec_prefix.-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'--DEFS=-DHAVE_CONFIG_H--ac_libobjs=-ac_ltlibobjs=-U=-for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue-  # 1. Remove the extension, and $U if already installed.-  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'-  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`-  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR-  #    will be set to the directory where LIBOBJS objects are built.-  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"-  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'-done-LIBOBJS=$ac_libobjs--LTLIBOBJS=$ac_ltlibobjs----: "${CONFIG_STATUS=./config.status}"-ac_write_fail=0-ac_clean_files_save=$ac_clean_files-ac_clean_files="$ac_clean_files $CONFIG_STATUS"-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}-as_write_fail=0-cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1-#! $SHELL-# Generated by $as_me.-# Run this file to recreate the current configuration.-# Compiler output produced by configure, useful for debugging-# configure, is in config.log if it exists.--debug=false-ac_cs_recheck=false-ac_cs_silent=false--SHELL=\${CONFIG_SHELL-$SHELL}-export SHELL-_ASEOF-cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1-## -------------------- ##-## M4sh Initialization. ##-## -------------------- ##--# Be more Bourne compatible-DUALCASE=1; export DUALCASE # for MKS sh-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :-  emulate sh-  NULLCMD=:-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which-  # is contrary to our usage.  Disable this feature.-  alias -g '${1+"$@"}'='"$@"'-  setopt NO_GLOB_SUBST-else-  case `(set -o) 2>/dev/null` in #(-  *posix*) :-    set -o posix ;; #(-  *) :-     ;;-esac-fi---as_nl='-'-export as_nl-# Printing a long string crashes Solaris 7 /usr/bin/printf.-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo-# Prefer a ksh shell builtin over an external printf program on Solaris,-# but without wasting forks for bash or zsh.-if test -z "$BASH_VERSION$ZSH_VERSION" \-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='print -r --'-  as_echo_n='print -rn --'-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then-  as_echo='printf %s\n'-  as_echo_n='printf %s'-else-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'-    as_echo_n='/usr/ucb/echo -n'-  else-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'-    as_echo_n_body='eval-      arg=$1;-      case $arg in #(-      *"$as_nl"*)-	expr "X$arg" : "X\\(.*\\)$as_nl";-	arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;-      esac;-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"-    '-    export as_echo_n_body-    as_echo_n='sh -c $as_echo_n_body as_echo'-  fi-  export as_echo_body-  as_echo='sh -c $as_echo_body as_echo'-fi--# The user is always right.-if test "${PATH_SEPARATOR+set}" != set; then-  PATH_SEPARATOR=:-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||-      PATH_SEPARATOR=';'-  }-fi---# IFS-# We need space, tab and new line, in precisely that order.  Quoting is-# there to prevent editors from complaining about space-tab.-# (If _AS_PATH_WALK were called with IFS unset, it would disable word-# splitting by setting IFS to empty value.)-IFS=" ""	$as_nl"--# Find who we are.  Look in the path if we contain no directory separator.-as_myself=-case $0 in #((-  *[\\/]* ) as_myself=$0 ;;-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR-for as_dir in $PATH-do-  IFS=$as_save_IFS-  test -z "$as_dir" && as_dir=.-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break-  done-IFS=$as_save_IFS--     ;;-esac-# We did not find ourselves, most probably we were run as `sh COMMAND'-# in which case we are not to be found in the path.-if test "x$as_myself" = x; then-  as_myself=$0-fi-if test ! -f "$as_myself"; then-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2-  exit 1-fi--# Unset variables that we do not need and which cause bugs (e.g. in-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"-# suppresses any "Segmentation fault" message there.  '((' could-# trigger a bug in pdksh 5.2.14.-for as_var in BASH_ENV ENV MAIL MAILPATH-do eval test x\${$as_var+set} = xset \-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :-done-PS1='$ '-PS2='> '-PS4='+ '--# NLS nuisances.-LC_ALL=C-export LC_ALL-LANGUAGE=C-export LANGUAGE--# CDPATH.-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH---# as_fn_error STATUS ERROR [LINENO LOG_FD]-# -----------------------------------------# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the-# script with STATUS, using 1 if that was 0.-as_fn_error ()-{-  as_status=$1; test $as_status -eq 0 && as_status=1-  if test "$4"; then-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4-  fi-  $as_echo "$as_me: error: $2" >&2-  as_fn_exit $as_status-} # as_fn_error---# as_fn_set_status STATUS-# ------------------------# Set $? to STATUS, without forking.-as_fn_set_status ()-{-  return $1-} # as_fn_set_status--# as_fn_exit STATUS-# ------------------# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.-as_fn_exit ()-{-  set +e-  as_fn_set_status $1-  exit $1-} # as_fn_exit--# as_fn_unset VAR-# ----------------# Portably unset VAR.-as_fn_unset ()-{-  { eval $1=; unset $1;}-}-as_unset=as_fn_unset-# as_fn_append VAR VALUE-# -----------------------# Append the text in VALUE to the end of the definition contained in VAR. Take-# advantage of any shell optimizations that allow amortized linear growth over-# repeated appends, instead of the typical quadratic growth present in naive-# implementations.-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :-  eval 'as_fn_append ()-  {-    eval $1+=\$2-  }'-else-  as_fn_append ()-  {-    eval $1=\$$1\$2-  }-fi # as_fn_append--# as_fn_arith ARG...-# -------------------# Perform arithmetic evaluation on the ARGs, and store the result in the-# global $as_val. Take advantage of shells that can avoid forks. The arguments-# must be portable across $(()) and expr.-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :-  eval 'as_fn_arith ()-  {-    as_val=$(( $* ))-  }'-else-  as_fn_arith ()-  {-    as_val=`expr "$@" || test $? -eq 1`-  }-fi # as_fn_arith---if expr a : '\(a\)' >/dev/null 2>&1 &&-   test "X`expr 00001 : '.*\(...\)'`" = X001; then-  as_expr=expr-else-  as_expr=false-fi--if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then-  as_basename=basename-else-  as_basename=false-fi--if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then-  as_dirname=dirname-else-  as_dirname=false-fi--as_me=`$as_basename -- "$0" ||-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \-	 X"$0" : 'X\(//\)$' \| \-	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X/"$0" |-    sed '/^.*\/\([^/][^/]*\)\/*$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\/\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`--# Avoid depending upon Character Ranges.-as_cr_letters='abcdefghijklmnopqrstuvwxyz'-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'-as_cr_Letters=$as_cr_letters$as_cr_LETTERS-as_cr_digits='0123456789'-as_cr_alnum=$as_cr_Letters$as_cr_digits--ECHO_C= ECHO_N= ECHO_T=-case `echo -n x` in #(((((--n*)-  case `echo 'xy\c'` in-  *c*) ECHO_T='	';;	# ECHO_T is single tab character.-  xy)  ECHO_C='\c';;-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null-       ECHO_T='	';;-  esac;;-*)-  ECHO_N='-n';;-esac--rm -f conf$$ conf$$.exe conf$$.file-if test -d conf$$.dir; then-  rm -f conf$$.dir/conf$$.file-else-  rm -f conf$$.dir-  mkdir conf$$.dir 2>/dev/null-fi-if (echo >conf$$.file) 2>/dev/null; then-  if ln -s conf$$.file conf$$ 2>/dev/null; then-    as_ln_s='ln -s'-    # ... but there are two gotchas:-    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.-    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.-    # In both cases, we have to default to `cp -pR'.-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||-      as_ln_s='cp -pR'-  elif ln conf$$.file conf$$ 2>/dev/null; then-    as_ln_s=ln-  else-    as_ln_s='cp -pR'-  fi-else-  as_ln_s='cp -pR'-fi-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file-rmdir conf$$.dir 2>/dev/null---# as_fn_mkdir_p-# --------------# Create "$as_dir" as a directory, including parents if necessary.-as_fn_mkdir_p ()-{--  case $as_dir in #(-  -*) as_dir=./$as_dir;;-  esac-  test -d "$as_dir" || eval $as_mkdir_p || {-    as_dirs=-    while :; do-      case $as_dir in #(-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(-      *) as_qdir=$as_dir;;-      esac-      as_dirs="'$as_qdir' $as_dirs"-      as_dir=`$as_dirname -- "$as_dir" ||-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$as_dir" : 'X\(//\)[^/]' \| \-	 X"$as_dir" : 'X\(//\)$' \| \-	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$as_dir" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-      test -d "$as_dir" && break-    done-    test -z "$as_dirs" || eval "mkdir $as_dirs"-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"---} # as_fn_mkdir_p-if mkdir -p . 2>/dev/null; then-  as_mkdir_p='mkdir -p "$as_dir"'-else-  test -d ./-p && rmdir ./-p-  as_mkdir_p=false-fi---# as_fn_executable_p FILE-# ------------------------# Test if FILE is an executable regular file.-as_fn_executable_p ()-{-  test -f "$1" && test -x "$1"-} # as_fn_executable_p-as_test_x='test -x'-as_executable_p=as_fn_executable_p--# Sed expression to map a string onto a valid CPP name.-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"--# Sed expression to map a string onto a valid variable name.-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"---exec 6>&1-## ----------------------------------- ##-## Main body of $CONFIG_STATUS script. ##-## ----------------------------------- ##-_ASEOF-test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-# Save the log message, to keep $0 and so on meaningful, and to-# report actual input values of CONFIG_FILES etc. instead of their-# values after options handling.-ac_log="-This file was extended by Haskell time package $as_me 1.12.2, which was-generated by GNU Autoconf 2.69.  Invocation command line was--  CONFIG_FILES    = $CONFIG_FILES-  CONFIG_HEADERS  = $CONFIG_HEADERS-  CONFIG_LINKS    = $CONFIG_LINKS-  CONFIG_COMMANDS = $CONFIG_COMMANDS-  $ $0 $@--on `(hostname || uname -n) 2>/dev/null | sed 1q`-"--_ACEOF---case $ac_config_headers in *"-"*) set x $ac_config_headers; shift; ac_config_headers=$*;;-esac---cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-# Files that config.status was made for.-config_headers="$ac_config_headers"--_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-ac_cs_usage="\-\`$as_me' instantiates files and other configuration actions-from templates according to the current configuration.  Unless the files-and actions are specified as TAGs, all are instantiated by default.--Usage: $0 [OPTION]... [TAG]...--  -h, --help       print this help, then exit-  -V, --version    print version number and configuration settings, then exit-      --config     print configuration, then exit-  -q, --quiet, --silent-                   do not print progress messages-  -d, --debug      don't remove temporary files-      --recheck    update $as_me by reconfiguring in the same conditions-      --header=FILE[:TEMPLATE]-                   instantiate the configuration header FILE--Configuration headers:-$config_headers--Report bugs to <ashley@semantic.org>."--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"-ac_cs_version="\\-Haskell time package config.status 1.12.2-configured by $0, generated by GNU Autoconf 2.69,-  with options \\"\$ac_cs_config\\"--Copyright (C) 2012 Free Software Foundation, Inc.-This config.status script is free software; the Free Software Foundation-gives unlimited permission to copy, distribute and modify it."--ac_pwd='$ac_pwd'-srcdir='$srcdir'-test -n "\$AWK" || AWK=awk-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-# The default lists apply if the user does not specify any file.-ac_need_defaults=:-while test $# != 0-do-  case $1 in-  --*=?*)-    ac_option=`expr "X$1" : 'X\([^=]*\)='`-    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`-    ac_shift=:-    ;;-  --*=)-    ac_option=`expr "X$1" : 'X\([^=]*\)='`-    ac_optarg=-    ac_shift=:-    ;;-  *)-    ac_option=$1-    ac_optarg=$2-    ac_shift=shift-    ;;-  esac--  case $ac_option in-  # Handling of the options.-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)-    ac_cs_recheck=: ;;-  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )-    $as_echo "$ac_cs_version"; exit ;;-  --config | --confi | --conf | --con | --co | --c )-    $as_echo "$ac_cs_config"; exit ;;-  --debug | --debu | --deb | --de | --d | -d )-    debug=: ;;-  --header | --heade | --head | --hea )-    $ac_shift-    case $ac_optarg in-    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;-    esac-    as_fn_append CONFIG_HEADERS " '$ac_optarg'"-    ac_need_defaults=false;;-  --he | --h)-    # Conflict between --help and --header-    as_fn_error $? "ambiguous option: \`$1'-Try \`$0 --help' for more information.";;-  --help | --hel | -h )-    $as_echo "$ac_cs_usage"; exit ;;-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \-  | -silent | --silent | --silen | --sile | --sil | --si | --s)-    ac_cs_silent=: ;;--  # This is an error.-  -*) as_fn_error $? "unrecognized option: \`$1'-Try \`$0 --help' for more information." ;;--  *) as_fn_append ac_config_targets " $1"-     ac_need_defaults=false ;;--  esac-  shift-done--ac_configure_extra_args=--if $ac_cs_silent; then-  exec 6>/dev/null-  ac_configure_extra_args="$ac_configure_extra_args --silent"-fi--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-if \$ac_cs_recheck; then-  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion-  shift-  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6-  CONFIG_SHELL='$SHELL'-  export CONFIG_SHELL-  exec "\$@"-fi--_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-exec 5>>config.log-{-  echo-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX-## Running $as_me. ##-_ASBOX-  $as_echo "$ac_log"-} >&5--_ACEOF-cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-_ACEOF--cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1--# Handling of arguments.-for ac_config_target in $ac_config_targets-do-  case $ac_config_target in-    "lib/include/HsTimeConfig.h") CONFIG_HEADERS="$CONFIG_HEADERS lib/include/HsTimeConfig.h" ;;--  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;-  esac-done---# If the user did not use the arguments to specify the items to instantiate,-# then the envvar interface is used.  Set only those that are not.-# We use the long form for the default assignment because of an extremely-# bizarre bug on SunOS 4.1.3.-if $ac_need_defaults; then-  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers-fi--# Have a temporary directory for convenience.  Make it in the build tree-# simply because there is no reason against having it here, and in addition,-# creating and moving files from /tmp can sometimes cause problems.-# Hook for its removal unless debugging.-# Note that there is a small window in which the directory will not be cleaned:-# after its creation but before its name has been assigned to `$tmp'.-$debug ||-{-  tmp= ac_tmp=-  trap 'exit_status=$?-  : "${ac_tmp:=$tmp}"-  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status-' 0-  trap 'as_fn_exit 1' 1 2 13 15-}-# Create a (secure) tmp directory for tmp files.--{-  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&-  test -d "$tmp"-}  ||-{-  tmp=./conf$$-$RANDOM-  (umask 077 && mkdir "$tmp")-} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5-ac_tmp=$tmp--# Set up the scripts for CONFIG_HEADERS section.-# No need to generate them if there are no CONFIG_HEADERS.-# This happens for instance with `./config.status Makefile'.-if test -n "$CONFIG_HEADERS"; then-cat >"$ac_tmp/defines.awk" <<\_ACAWK ||-BEGIN {-_ACEOF--# Transform confdefs.h into an awk script `defines.awk', embedded as-# here-document in config.status, that substitutes the proper values into-# config.h.in to produce config.h.--# Create a delimiter string that does not exist in confdefs.h, to ease-# handling of long lines.-ac_delim='%!_!# '-for ac_last_try in false false :; do-  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`-  if test -z "$ac_tt"; then-    break-  elif $ac_last_try; then-    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5-  else-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "-  fi-done--# For the awk script, D is an array of macro values keyed by name,-# likewise P contains macro parameters if any.  Preserve backslash-# newline sequences.--ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*-sed -n '-s/.\{148\}/&'"$ac_delim"'/g-t rset-:rset-s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /-t def-d-:def-s/\\$//-t bsnl-s/["\\]/\\&/g-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\-D["\1"]=" \3"/p-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p-d-:bsnl-s/["\\]/\\&/g-s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\-D["\1"]=" \3\\\\\\n"\\/p-t cont-s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p-t cont-d-:cont-n-s/.\{148\}/&'"$ac_delim"'/g-t clear-:clear-s/\\$//-t bsnlc-s/["\\]/\\&/g; s/^/"/; s/$/"/p-d-:bsnlc-s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p-b cont-' <confdefs.h | sed '-s/'"$ac_delim"'/"\\\-"/g' >>$CONFIG_STATUS || ac_write_fail=1--cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1-  for (key in D) D_is_set[key] = 1-  FS = ""-}-/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {-  line = \$ 0-  split(line, arg, " ")-  if (arg[1] == "#") {-    defundef = arg[2]-    mac1 = arg[3]-  } else {-    defundef = substr(arg[1], 2)-    mac1 = arg[2]-  }-  split(mac1, mac2, "(") #)-  macro = mac2[1]-  prefix = substr(line, 1, index(line, defundef) - 1)-  if (D_is_set[macro]) {-    # Preserve the white space surrounding the "#".-    print prefix "define", macro P[macro] D[macro]-    next-  } else {-    # Replace #undef with comments.  This is necessary, for example,-    # in the case of _POSIX_SOURCE, which is predefined and required-    # on some systems where configure will not decide to define it.-    if (defundef == "undef") {-      print "/*", prefix defundef, macro, "*/"-      next-    }-  }-}-{ print }-_ACAWK-_ACEOF-cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1-  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5-fi # test -n "$CONFIG_HEADERS"---eval set X "    :H $CONFIG_HEADERS    "-shift-for ac_tag-do-  case $ac_tag in-  :[FHLC]) ac_mode=$ac_tag; continue;;-  esac-  case $ac_mode$ac_tag in-  :[FHL]*:*);;-  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;-  :[FH]-) ac_tag=-:-;;-  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;-  esac-  ac_save_IFS=$IFS-  IFS=:-  set x $ac_tag-  IFS=$ac_save_IFS-  shift-  ac_file=$1-  shift--  case $ac_mode in-  :L) ac_source=$1;;-  :[FH])-    ac_file_inputs=-    for ac_f-    do-      case $ac_f in-      -) ac_f="$ac_tmp/stdin";;-      *) # Look for the file first in the build tree, then in the source tree-	 # (if the path is not absolute).  The absolute path cannot be DOS-style,-	 # because $ac_f cannot contain `:'.-	 test -f "$ac_f" ||-	   case $ac_f in-	   [\\/$]*) false;;-	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;-	   esac ||-	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;-      esac-      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac-      as_fn_append ac_file_inputs " '$ac_f'"-    done--    # Let's still pretend it is `configure' which instantiates (i.e., don't-    # use $as_me), people would be surprised to read:-    #    /* config.h.  Generated by config.status.  */-    configure_input='Generated from '`-	  $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'-	`' by configure.'-    if test x"$ac_file" != x-; then-      configure_input="$ac_file.  $configure_input"-      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5-$as_echo "$as_me: creating $ac_file" >&6;}-    fi-    # Neutralize special characters interpreted by sed in replacement strings.-    case $configure_input in #(-    *\&* | *\|* | *\\* )-       ac_sed_conf_input=`$as_echo "$configure_input" |-       sed 's/[\\\\&|]/\\\\&/g'`;; #(-    *) ac_sed_conf_input=$configure_input;;-    esac--    case $ac_tag in-    *:-:* | *:-) cat >"$ac_tmp/stdin" \-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;-    esac-    ;;-  esac--  ac_dir=`$as_dirname -- "$ac_file" ||-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \-	 X"$ac_file" : 'X\(//\)[^/]' \| \-	 X"$ac_file" : 'X\(//\)$' \| \-	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||-$as_echo X"$ac_file" |-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)[^/].*/{-	    s//\1/-	    q-	  }-	  /^X\(\/\/\)$/{-	    s//\1/-	    q-	  }-	  /^X\(\/\).*/{-	    s//\1/-	    q-	  }-	  s/.*/./; q'`-  as_dir="$ac_dir"; as_fn_mkdir_p-  ac_builddir=.--case "$ac_dir" in-.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;-*)-  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`-  # A ".." for each directory in $ac_dir_suffix.-  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`-  case $ac_top_builddir_sub in-  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;-  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;-  esac ;;-esac-ac_abs_top_builddir=$ac_pwd-ac_abs_builddir=$ac_pwd$ac_dir_suffix-# for backward compatibility:-ac_top_builddir=$ac_top_build_prefix--case $srcdir in-  .)  # We are building in place.-    ac_srcdir=.-    ac_top_srcdir=$ac_top_builddir_sub-    ac_abs_top_srcdir=$ac_pwd ;;-  [\\/]* | ?:[\\/]* )  # Absolute name.-    ac_srcdir=$srcdir$ac_dir_suffix;-    ac_top_srcdir=$srcdir-    ac_abs_top_srcdir=$srcdir ;;-  *) # Relative name.-    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix-    ac_top_srcdir=$ac_top_build_prefix$srcdir-    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;-esac-ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix---  case $ac_mode in--  :H)-  #-  # CONFIG_HEADER-  #-  if test x"$ac_file" != x-; then-    {-      $as_echo "/* $configure_input  */" \-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"-    } >"$ac_tmp/config.h" \-      || as_fn_error $? "could not create $ac_file" "$LINENO" 5-    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then-      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5-$as_echo "$as_me: $ac_file is unchanged" >&6;}-    else-      rm -f "$ac_file"-      mv "$ac_tmp/config.h" "$ac_file" \-	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5-    fi-  else-    $as_echo "/* $configure_input  */" \-      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \-      || as_fn_error $? "could not create -" "$LINENO" 5-  fi- ;;---  esac--done # for ac_tag---as_fn_exit 0-_ACEOF-ac_clean_files=$ac_clean_files_save--test $ac_write_fail = 0 ||-  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5---# configure is writing to config.log, and then calls config.status.-# config.status does its own redirection, appending to config.log.-# Unfortunately, on DOS this fails, as config.log is still kept open-# by configure, so config.status won't be able to write to it; its-# output is simply discarded.  So we exec the FD to /dev/null,-# effectively closing config.log, so it can be properly (re)opened and-# appended to by config.status.  When coming back to configure, we-# need to make the FD available again.-if test "$no_create" != yes; then-  ac_cs_success=:-  ac_config_status_args=-  test "$silent" = yes &&-    ac_config_status_args="$ac_config_status_args --quiet"-  exec 5>/dev/null-  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false-  exec 5>>config.log-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which-  # would make configure fail if this is the last instruction.-  $ac_cs_success || as_fn_exit 1-fi-if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}-fi+# Generated by GNU Autoconf 2.71 for Haskell time package 1.16.+#+# Report bugs to <ashley@semantic.org>.+#+#+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,+# Inc.+#+#+# This configure script is free software; the Free Software Foundation+# gives unlimited permission to copy, distribute and modify it.+## -------------------- ##+## M4sh Initialization. ##+## -------------------- ##++# Be more Bourne compatible+DUALCASE=1; export DUALCASE # for MKS sh+as_nop=:+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1+then :+  emulate sh+  NULLCMD=:+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which+  # is contrary to our usage.  Disable this feature.+  alias -g '${1+"$@"}'='"$@"'+  setopt NO_GLOB_SUBST+else $as_nop+  case `(set -o) 2>/dev/null` in #(+  *posix*) :+    set -o posix ;; #(+  *) :+     ;;+esac+fi++++# Reset variables that may have inherited troublesome values from+# the environment.++# IFS needs to be set, to space, tab, and newline, in precisely that order.+# (If _AS_PATH_WALK were called with IFS unset, it would have the+# side effect of setting IFS to empty, thus disabling word splitting.)+# Quoting is to prevent editors from complaining about space-tab.+as_nl='+'+export as_nl+IFS=" ""	$as_nl"++PS1='$ '+PS2='> '+PS4='+ '++# Ensure predictable behavior from utilities with locale-dependent output.+LC_ALL=C+export LC_ALL+LANGUAGE=C+export LANGUAGE++# We cannot yet rely on "unset" to work, but we need these variables+# to be unset--not just set to an empty or harmless value--now, to+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct+# also avoids known problems related to "unset" and subshell syntax+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH+do eval test \${$as_var+y} \+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :+done++# Ensure that fds 0, 1, and 2 are open.+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi++# The user is always right.+if ${PATH_SEPARATOR+false} :; then+  PATH_SEPARATOR=:+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||+      PATH_SEPARATOR=';'+  }+fi+++# Find who we are.  Look in the path if we contain no directory separator.+as_myself=+case $0 in #((+  *[\\/]* ) as_myself=$0 ;;+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break+  done+IFS=$as_save_IFS++     ;;+esac+# We did not find ourselves, most probably we were run as `sh COMMAND'+# in which case we are not to be found in the path.+if test "x$as_myself" = x; then+  as_myself=$0+fi+if test ! -f "$as_myself"; then+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2+  exit 1+fi+++# Use a proper internal environment variable to ensure we don't fall+  # into an infinite loop, continuously re-executing ourselves.+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then+    _as_can_reexec=no; export _as_can_reexec;+    # We cannot yet assume a decent shell, so we have to provide a+# neutralization value for shells without unset; and this also+# works around shells that cannot unset nonexistent variables.+# Preserve -v and -x to the replacement shell.+BASH_ENV=/dev/null+ENV=/dev/null+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV+case $- in # ((((+  *v*x* | *x*v* ) as_opts=-vx ;;+  *v* ) as_opts=-v ;;+  *x* ) as_opts=-x ;;+  * ) as_opts= ;;+esac+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}+# Admittedly, this is quite paranoid, since all the known shells bail+# out after a failed `exec'.+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2+exit 255+  fi+  # We don't want this to propagate to other subprocesses.+          { _as_can_reexec=; unset _as_can_reexec;}+if test "x$CONFIG_SHELL" = x; then+  as_bourne_compatible="as_nop=:+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1+then :+  emulate sh+  NULLCMD=:+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which+  # is contrary to our usage.  Disable this feature.+  alias -g '\${1+\"\$@\"}'='\"\$@\"'+  setopt NO_GLOB_SUBST+else \$as_nop+  case \`(set -o) 2>/dev/null\` in #(+  *posix*) :+    set -o posix ;; #(+  *) :+     ;;+esac+fi+"+  as_required="as_fn_return () { (exit \$1); }+as_fn_success () { as_fn_return 0; }+as_fn_failure () { as_fn_return 1; }+as_fn_ret_success () { return 0; }+as_fn_ret_failure () { return 1; }++exitcode=0+as_fn_success || { exitcode=1; echo as_fn_success failed.; }+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }+if ( set x; as_fn_ret_success y && test x = \"\$1\" )+then :++else \$as_nop+  exitcode=1; echo positional parameters were not saved.+fi+test x\$exitcode = x0 || exit 1+blah=\$(echo \$(echo blah))+test x\"\$blah\" = xblah || exit 1+test -x / || exit 1"+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1"+  if (eval "$as_required") 2>/dev/null+then :+  as_have_required=yes+else $as_nop+  as_have_required=no+fi+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null+then :++else $as_nop+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+as_found=false+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+  as_found=:+  case $as_dir in #(+	 /*)+	   for as_base in sh bash ksh sh5; do+	     # Try only shells that exist, to save several forks.+	     as_shell=$as_dir$as_base+	     if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&+		    as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null+then :+  CONFIG_SHELL=$as_shell as_have_required=yes+		   if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null+then :+  break 2+fi+fi+	   done;;+       esac+  as_found=false+done+IFS=$as_save_IFS+if $as_found+then :++else $as_nop+  if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&+	      as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null+then :+  CONFIG_SHELL=$SHELL as_have_required=yes+fi+fi+++      if test "x$CONFIG_SHELL" != x+then :+  export CONFIG_SHELL+             # We cannot yet assume a decent shell, so we have to provide a+# neutralization value for shells without unset; and this also+# works around shells that cannot unset nonexistent variables.+# Preserve -v and -x to the replacement shell.+BASH_ENV=/dev/null+ENV=/dev/null+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV+case $- in # ((((+  *v*x* | *x*v* ) as_opts=-vx ;;+  *v* ) as_opts=-v ;;+  *x* ) as_opts=-x ;;+  * ) as_opts= ;;+esac+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}+# Admittedly, this is quite paranoid, since all the known shells bail+# out after a failed `exec'.+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2+exit 255+fi++    if test x$as_have_required = xno+then :+  printf "%s\n" "$0: This script requires a shell more modern than all"+  printf "%s\n" "$0: the shells that I found on your system."+  if test ${ZSH_VERSION+y} ; then+    printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"+    printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."+  else+    printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and+$0: ashley@semantic.org about your system, including any+$0: error possibly output before this message. Then install+$0: a modern shell, or manually run the script under such a+$0: shell if you do have one."+  fi+  exit 1+fi+fi+fi+SHELL=${CONFIG_SHELL-/bin/sh}+export SHELL+# Unset more variables known to interfere with behavior of common tools.+CLICOLOR_FORCE= GREP_OPTIONS=+unset CLICOLOR_FORCE GREP_OPTIONS++## --------------------- ##+## M4sh Shell Functions. ##+## --------------------- ##+# as_fn_unset VAR+# ---------------+# Portably unset VAR.+as_fn_unset ()+{+  { eval $1=; unset $1;}+}+as_unset=as_fn_unset+++# as_fn_set_status STATUS+# -----------------------+# Set $? to STATUS, without forking.+as_fn_set_status ()+{+  return $1+} # as_fn_set_status++# as_fn_exit STATUS+# -----------------+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.+as_fn_exit ()+{+  set +e+  as_fn_set_status $1+  exit $1+} # as_fn_exit+# as_fn_nop+# ---------+# Do nothing but, unlike ":", preserve the value of $?.+as_fn_nop ()+{+  return $?+}+as_nop=as_fn_nop++# as_fn_mkdir_p+# -------------+# Create "$as_dir" as a directory, including parents if necessary.+as_fn_mkdir_p ()+{++  case $as_dir in #(+  -*) as_dir=./$as_dir;;+  esac+  test -d "$as_dir" || eval $as_mkdir_p || {+    as_dirs=+    while :; do+      case $as_dir in #(+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(+      *) as_qdir=$as_dir;;+      esac+      as_dirs="'$as_qdir' $as_dirs"+      as_dir=`$as_dirname -- "$as_dir" ||+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+	 X"$as_dir" : 'X\(//\)[^/]' \| \+	 X"$as_dir" : 'X\(//\)$' \| \+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||+printf "%s\n" X"$as_dir" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{+	    s//\1/+	    q+	  }+	  /^X\(\/\/\)[^/].*/{+	    s//\1/+	    q+	  }+	  /^X\(\/\/\)$/{+	    s//\1/+	    q+	  }+	  /^X\(\/\).*/{+	    s//\1/+	    q+	  }+	  s/.*/./; q'`+      test -d "$as_dir" && break+    done+    test -z "$as_dirs" || eval "mkdir $as_dirs"+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"+++} # as_fn_mkdir_p++# as_fn_executable_p FILE+# -----------------------+# Test if FILE is an executable regular file.+as_fn_executable_p ()+{+  test -f "$1" && test -x "$1"+} # as_fn_executable_p+# as_fn_append VAR VALUE+# ----------------------+# Append the text in VALUE to the end of the definition contained in VAR. Take+# advantage of any shell optimizations that allow amortized linear growth over+# repeated appends, instead of the typical quadratic growth present in naive+# implementations.+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null+then :+  eval 'as_fn_append ()+  {+    eval $1+=\$2+  }'+else $as_nop+  as_fn_append ()+  {+    eval $1=\$$1\$2+  }+fi # as_fn_append++# as_fn_arith ARG...+# ------------------+# Perform arithmetic evaluation on the ARGs, and store the result in the+# global $as_val. Take advantage of shells that can avoid forks. The arguments+# must be portable across $(()) and expr.+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null+then :+  eval 'as_fn_arith ()+  {+    as_val=$(( $* ))+  }'+else $as_nop+  as_fn_arith ()+  {+    as_val=`expr "$@" || test $? -eq 1`+  }+fi # as_fn_arith++# as_fn_nop+# ---------+# Do nothing but, unlike ":", preserve the value of $?.+as_fn_nop ()+{+  return $?+}+as_nop=as_fn_nop++# as_fn_error STATUS ERROR [LINENO LOG_FD]+# ----------------------------------------+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the+# script with STATUS, using 1 if that was 0.+as_fn_error ()+{+  as_status=$1; test $as_status -eq 0 && as_status=1+  if test "$4"; then+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4+  fi+  printf "%s\n" "$as_me: error: $2" >&2+  as_fn_exit $as_status+} # as_fn_error++if expr a : '\(a\)' >/dev/null 2>&1 &&+   test "X`expr 00001 : '.*\(...\)'`" = X001; then+  as_expr=expr+else+  as_expr=false+fi++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then+  as_basename=basename+else+  as_basename=false+fi++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then+  as_dirname=dirname+else+  as_dirname=false+fi++as_me=`$as_basename -- "$0" ||+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \+	 X"$0" : 'X\(//\)$' \| \+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||+printf "%s\n" X/"$0" |+    sed '/^.*\/\([^/][^/]*\)\/*$/{+	    s//\1/+	    q+	  }+	  /^X\/\(\/\/\)$/{+	    s//\1/+	    q+	  }+	  /^X\/\(\/\).*/{+	    s//\1/+	    q+	  }+	  s/.*/./; q'`++# Avoid depending upon Character Ranges.+as_cr_letters='abcdefghijklmnopqrstuvwxyz'+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'+as_cr_Letters=$as_cr_letters$as_cr_LETTERS+as_cr_digits='0123456789'+as_cr_alnum=$as_cr_Letters$as_cr_digits+++  as_lineno_1=$LINENO as_lineno_1a=$LINENO+  as_lineno_2=$LINENO as_lineno_2a=$LINENO+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)+  sed -n '+    p+    /[$]LINENO/=+  ' <$as_myself |+    sed '+      s/[$]LINENO.*/&-/+      t lineno+      b+      :lineno+      N+      :loop+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/+      t loop+      s/-\n.*//+    ' >$as_me.lineno &&+  chmod +x "$as_me.lineno" ||+    { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }++  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have+  # already done that, so ensure we don't try to do so again and fall+  # in an infinite loop.  This has already happened in practice.+  _as_can_reexec=no; export _as_can_reexec+  # Don't try to exec as it changes $[0], causing all sort of problems+  # (the dirname of $[0] is not the place where we might find the+  # original and so on.  Autoconf is especially sensitive to this).+  . "./$as_me.lineno"+  # Exit status is that of the last command.+  exit+}+++# Determine whether it's possible to make 'echo' print without a newline.+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed+# for compatibility with existing Makefiles.+ECHO_C= ECHO_N= ECHO_T=+case `echo -n x` in #(((((+-n*)+  case `echo 'xy\c'` in+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.+  xy)  ECHO_C='\c';;+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null+       ECHO_T='	';;+  esac;;+*)+  ECHO_N='-n';;+esac++# For backward compatibility with old third-party macros, we provide+# the shell variables $as_echo and $as_echo_n.  New code should use+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.+as_echo='printf %s\n'+as_echo_n='printf %s'+++rm -f conf$$ conf$$.exe conf$$.file+if test -d conf$$.dir; then+  rm -f conf$$.dir/conf$$.file+else+  rm -f conf$$.dir+  mkdir conf$$.dir 2>/dev/null+fi+if (echo >conf$$.file) 2>/dev/null; then+  if ln -s conf$$.file conf$$ 2>/dev/null; then+    as_ln_s='ln -s'+    # ... but there are two gotchas:+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.+    # In both cases, we have to default to `cp -pR'.+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||+      as_ln_s='cp -pR'+  elif ln conf$$.file conf$$ 2>/dev/null; then+    as_ln_s=ln+  else+    as_ln_s='cp -pR'+  fi+else+  as_ln_s='cp -pR'+fi+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file+rmdir conf$$.dir 2>/dev/null++if mkdir -p . 2>/dev/null; then+  as_mkdir_p='mkdir -p "$as_dir"'+else+  test -d ./-p && rmdir ./-p+  as_mkdir_p=false+fi++as_test_x='test -x'+as_executable_p=as_fn_executable_p++# Sed expression to map a string onto a valid CPP name.+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"++# Sed expression to map a string onto a valid variable name.+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"+++test -n "$DJDIR" || exec 7<&0 </dev/null+exec 6>&1++# Name of the host.+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,+# so uname gets run too.+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`++#+# Initializations.+#+ac_default_prefix=/usr/local+ac_clean_files=+ac_config_libobj_dir=.+LIBOBJS=+cross_compiling=no+subdirs=+MFLAGS=+MAKEFLAGS=++# Identity of this package.+PACKAGE_NAME='Haskell time package'+PACKAGE_TARNAME='time'+PACKAGE_VERSION='1.16'+PACKAGE_STRING='Haskell time package 1.16'+PACKAGE_BUGREPORT='ashley@semantic.org'+PACKAGE_URL=''++ac_unique_file="lib/include/HsTime.h"+# Factoring default headers for most tests.+ac_includes_default="\+#include <stddef.h>+#ifdef HAVE_STDIO_H+# include <stdio.h>+#endif+#ifdef HAVE_STDLIB_H+# include <stdlib.h>+#endif+#ifdef HAVE_STRING_H+# include <string.h>+#endif+#ifdef HAVE_INTTYPES_H+# include <inttypes.h>+#endif+#ifdef HAVE_STDINT_H+# include <stdint.h>+#endif+#ifdef HAVE_STRINGS_H+# include <strings.h>+#endif+#ifdef HAVE_SYS_TYPES_H+# include <sys/types.h>+#endif+#ifdef HAVE_SYS_STAT_H+# include <sys/stat.h>+#endif+#ifdef HAVE_UNISTD_H+# include <unistd.h>+#endif"++ac_header_c_list=+ac_subst_vars='LTLIBOBJS+LIBOBJS+OBJEXT+EXEEXT+ac_ct_CC+CPPFLAGS+LDFLAGS+CFLAGS+CC+target_alias+host_alias+build_alias+LIBS+ECHO_T+ECHO_N+ECHO_C+DEFS+mandir+localedir+libdir+psdir+pdfdir+dvidir+htmldir+infodir+docdir+oldincludedir+includedir+runstatedir+localstatedir+sharedstatedir+sysconfdir+datadir+datarootdir+libexecdir+sbindir+bindir+program_transform_name+prefix+exec_prefix+PACKAGE_URL+PACKAGE_BUGREPORT+PACKAGE_STRING+PACKAGE_VERSION+PACKAGE_TARNAME+PACKAGE_NAME+PATH_SEPARATOR+SHELL'+ac_subst_files=''+ac_user_opts='+enable_option_checking+with_gcc+with_compiler+'+      ac_precious_vars='build_alias+host_alias+target_alias+CC+CFLAGS+LDFLAGS+LIBS+CPPFLAGS'+++# Initialize some variables set by options.+ac_init_help=+ac_init_version=false+ac_unrecognized_opts=+ac_unrecognized_sep=+# The variables have the same names as the options, with+# dashes changed to underlines.+cache_file=/dev/null+exec_prefix=NONE+no_create=+no_recursion=+prefix=NONE+program_prefix=NONE+program_suffix=NONE+program_transform_name=s,x,x,+silent=+site=+srcdir=+verbose=+x_includes=NONE+x_libraries=NONE++# Installation directory options.+# These are left unexpanded so users can "make install exec_prefix=/foo"+# and all the variables that are supposed to be based on exec_prefix+# by default will actually change.+# Use braces instead of parens because sh, perl, etc. also accept them.+# (The list follows the same order as the GNU Coding Standards.)+bindir='${exec_prefix}/bin'+sbindir='${exec_prefix}/sbin'+libexecdir='${exec_prefix}/libexec'+datarootdir='${prefix}/share'+datadir='${datarootdir}'+sysconfdir='${prefix}/etc'+sharedstatedir='${prefix}/com'+localstatedir='${prefix}/var'+runstatedir='${localstatedir}/run'+includedir='${prefix}/include'+oldincludedir='/usr/include'+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'+infodir='${datarootdir}/info'+htmldir='${docdir}'+dvidir='${docdir}'+pdfdir='${docdir}'+psdir='${docdir}'+libdir='${exec_prefix}/lib'+localedir='${datarootdir}/locale'+mandir='${datarootdir}/man'++ac_prev=+ac_dashdash=+for ac_option+do+  # If the previous option needs an argument, assign it.+  if test -n "$ac_prev"; then+    eval $ac_prev=\$ac_option+    ac_prev=+    continue+  fi++  case $ac_option in+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;+  *=)   ac_optarg= ;;+  *)    ac_optarg=yes ;;+  esac++  case $ac_dashdash$ac_option in+  --)+    ac_dashdash=yes ;;++  -bindir | --bindir | --bindi | --bind | --bin | --bi)+    ac_prev=bindir ;;+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)+    bindir=$ac_optarg ;;++  -build | --build | --buil | --bui | --bu)+    ac_prev=build_alias ;;+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)+    build_alias=$ac_optarg ;;++  -cache-file | --cache-file | --cache-fil | --cache-fi \+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)+    ac_prev=cache_file ;;+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)+    cache_file=$ac_optarg ;;++  --config-cache | -C)+    cache_file=config.cache ;;++  -datadir | --datadir | --datadi | --datad)+    ac_prev=datadir ;;+  -datadir=* | --datadir=* | --datadi=* | --datad=*)+    datadir=$ac_optarg ;;++  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \+  | --dataroo | --dataro | --datar)+    ac_prev=datarootdir ;;+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)+    datarootdir=$ac_optarg ;;++  -disable-* | --disable-*)+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&+      as_fn_error $? "invalid feature name: \`$ac_useropt'"+    ac_useropt_orig=$ac_useropt+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`+    case $ac_user_opts in+      *"+"enable_$ac_useropt"+"*) ;;+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"+	 ac_unrecognized_sep=', ';;+    esac+    eval enable_$ac_useropt=no ;;++  -docdir | --docdir | --docdi | --doc | --do)+    ac_prev=docdir ;;+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)+    docdir=$ac_optarg ;;++  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)+    ac_prev=dvidir ;;+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)+    dvidir=$ac_optarg ;;++  -enable-* | --enable-*)+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&+      as_fn_error $? "invalid feature name: \`$ac_useropt'"+    ac_useropt_orig=$ac_useropt+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`+    case $ac_user_opts in+      *"+"enable_$ac_useropt"+"*) ;;+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"+	 ac_unrecognized_sep=', ';;+    esac+    eval enable_$ac_useropt=\$ac_optarg ;;++  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \+  | --exec | --exe | --ex)+    ac_prev=exec_prefix ;;+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \+  | --exec=* | --exe=* | --ex=*)+    exec_prefix=$ac_optarg ;;++  -gas | --gas | --ga | --g)+    # Obsolete; use --with-gas.+    with_gas=yes ;;++  -help | --help | --hel | --he | -h)+    ac_init_help=long ;;+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)+    ac_init_help=recursive ;;+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)+    ac_init_help=short ;;++  -host | --host | --hos | --ho)+    ac_prev=host_alias ;;+  -host=* | --host=* | --hos=* | --ho=*)+    host_alias=$ac_optarg ;;++  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)+    ac_prev=htmldir ;;+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \+  | --ht=*)+    htmldir=$ac_optarg ;;++  -includedir | --includedir | --includedi | --included | --include \+  | --includ | --inclu | --incl | --inc)+    ac_prev=includedir ;;+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \+  | --includ=* | --inclu=* | --incl=* | --inc=*)+    includedir=$ac_optarg ;;++  -infodir | --infodir | --infodi | --infod | --info | --inf)+    ac_prev=infodir ;;+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)+    infodir=$ac_optarg ;;++  -libdir | --libdir | --libdi | --libd)+    ac_prev=libdir ;;+  -libdir=* | --libdir=* | --libdi=* | --libd=*)+    libdir=$ac_optarg ;;++  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \+  | --libexe | --libex | --libe)+    ac_prev=libexecdir ;;+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \+  | --libexe=* | --libex=* | --libe=*)+    libexecdir=$ac_optarg ;;++  -localedir | --localedir | --localedi | --localed | --locale)+    ac_prev=localedir ;;+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)+    localedir=$ac_optarg ;;++  -localstatedir | --localstatedir | --localstatedi | --localstated \+  | --localstate | --localstat | --localsta | --localst | --locals)+    ac_prev=localstatedir ;;+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)+    localstatedir=$ac_optarg ;;++  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)+    ac_prev=mandir ;;+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)+    mandir=$ac_optarg ;;++  -nfp | --nfp | --nf)+    # Obsolete; use --without-fp.+    with_fp=no ;;++  -no-create | --no-create | --no-creat | --no-crea | --no-cre \+  | --no-cr | --no-c | -n)+    no_create=yes ;;++  -no-recursion | --no-recursion | --no-recursio | --no-recursi \+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)+    no_recursion=yes ;;++  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \+  | --oldin | --oldi | --old | --ol | --o)+    ac_prev=oldincludedir ;;+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)+    oldincludedir=$ac_optarg ;;++  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)+    ac_prev=prefix ;;+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)+    prefix=$ac_optarg ;;++  -program-prefix | --program-prefix | --program-prefi | --program-pref \+  | --program-pre | --program-pr | --program-p)+    ac_prev=program_prefix ;;+  -program-prefix=* | --program-prefix=* | --program-prefi=* \+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)+    program_prefix=$ac_optarg ;;++  -program-suffix | --program-suffix | --program-suffi | --program-suff \+  | --program-suf | --program-su | --program-s)+    ac_prev=program_suffix ;;+  -program-suffix=* | --program-suffix=* | --program-suffi=* \+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)+    program_suffix=$ac_optarg ;;++  -program-transform-name | --program-transform-name \+  | --program-transform-nam | --program-transform-na \+  | --program-transform-n | --program-transform- \+  | --program-transform | --program-transfor \+  | --program-transfo | --program-transf \+  | --program-trans | --program-tran \+  | --progr-tra | --program-tr | --program-t)+    ac_prev=program_transform_name ;;+  -program-transform-name=* | --program-transform-name=* \+  | --program-transform-nam=* | --program-transform-na=* \+  | --program-transform-n=* | --program-transform-=* \+  | --program-transform=* | --program-transfor=* \+  | --program-transfo=* | --program-transf=* \+  | --program-trans=* | --program-tran=* \+  | --progr-tra=* | --program-tr=* | --program-t=*)+    program_transform_name=$ac_optarg ;;++  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)+    ac_prev=pdfdir ;;+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)+    pdfdir=$ac_optarg ;;++  -psdir | --psdir | --psdi | --psd | --ps)+    ac_prev=psdir ;;+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)+    psdir=$ac_optarg ;;++  -q | -quiet | --quiet | --quie | --qui | --qu | --q \+  | -silent | --silent | --silen | --sile | --sil)+    silent=yes ;;++  -runstatedir | --runstatedir | --runstatedi | --runstated \+  | --runstate | --runstat | --runsta | --runst | --runs \+  | --run | --ru | --r)+    ac_prev=runstatedir ;;+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \+  | --run=* | --ru=* | --r=*)+    runstatedir=$ac_optarg ;;++  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)+    ac_prev=sbindir ;;+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \+  | --sbi=* | --sb=*)+    sbindir=$ac_optarg ;;++  -sharedstatedir | --sharedstatedir | --sharedstatedi \+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \+  | --sharedst | --shareds | --shared | --share | --shar \+  | --sha | --sh)+    ac_prev=sharedstatedir ;;+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \+  | --sha=* | --sh=*)+    sharedstatedir=$ac_optarg ;;++  -site | --site | --sit)+    ac_prev=site ;;+  -site=* | --site=* | --sit=*)+    site=$ac_optarg ;;++  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)+    ac_prev=srcdir ;;+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)+    srcdir=$ac_optarg ;;++  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \+  | --syscon | --sysco | --sysc | --sys | --sy)+    ac_prev=sysconfdir ;;+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)+    sysconfdir=$ac_optarg ;;++  -target | --target | --targe | --targ | --tar | --ta | --t)+    ac_prev=target_alias ;;+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)+    target_alias=$ac_optarg ;;++  -v | -verbose | --verbose | --verbos | --verbo | --verb)+    verbose=yes ;;++  -version | --version | --versio | --versi | --vers | -V)+    ac_init_version=: ;;++  -with-* | --with-*)+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&+      as_fn_error $? "invalid package name: \`$ac_useropt'"+    ac_useropt_orig=$ac_useropt+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`+    case $ac_user_opts in+      *"+"with_$ac_useropt"+"*) ;;+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"+	 ac_unrecognized_sep=', ';;+    esac+    eval with_$ac_useropt=\$ac_optarg ;;++  -without-* | --without-*)+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`+    # Reject names that are not valid shell variable names.+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&+      as_fn_error $? "invalid package name: \`$ac_useropt'"+    ac_useropt_orig=$ac_useropt+    ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`+    case $ac_user_opts in+      *"+"with_$ac_useropt"+"*) ;;+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"+	 ac_unrecognized_sep=', ';;+    esac+    eval with_$ac_useropt=no ;;++  --x)+    # Obsolete; use --with-x.+    with_x=yes ;;++  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \+  | --x-incl | --x-inc | --x-in | --x-i)+    ac_prev=x_includes ;;+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)+    x_includes=$ac_optarg ;;++  -x-libraries | --x-libraries | --x-librarie | --x-librari \+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)+    ac_prev=x_libraries ;;+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)+    x_libraries=$ac_optarg ;;++  -*) as_fn_error $? "unrecognized option: \`$ac_option'+Try \`$0 --help' for more information"+    ;;++  *=*)+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`+    # Reject names that are not valid shell variable names.+    case $ac_envvar in #(+      '' | [0-9]* | *[!_$as_cr_alnum]* )+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;+    esac+    eval $ac_envvar=\$ac_optarg+    export $ac_envvar ;;++  *)+    # FIXME: should be removed in autoconf 3.0.+    printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&+      printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"+    ;;++  esac+done++if test -n "$ac_prev"; then+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`+  as_fn_error $? "missing argument to $ac_option"+fi++if test -n "$ac_unrecognized_opts"; then+  case $enable_option_checking in+    no) ;;+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;+    *)     printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;+  esac+fi++# Check all directory arguments for consistency.+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \+		datadir sysconfdir sharedstatedir localstatedir includedir \+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \+		libdir localedir mandir runstatedir+do+  eval ac_val=\$$ac_var+  # Remove trailing slashes.+  case $ac_val in+    */ )+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`+      eval $ac_var=\$ac_val;;+  esac+  # Be sure to have absolute directory names.+  case $ac_val in+    [\\/$]* | ?:[\\/]* )  continue;;+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;+  esac+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"+done++# There might be people who depend on the old broken behavior: `$host'+# used to hold the argument of --host etc.+# FIXME: To remove some day.+build=$build_alias+host=$host_alias+target=$target_alias++# FIXME: To remove some day.+if test "x$host_alias" != x; then+  if test "x$build_alias" = x; then+    cross_compiling=maybe+  elif test "x$build_alias" != "x$host_alias"; then+    cross_compiling=yes+  fi+fi++ac_tool_prefix=+test -n "$host_alias" && ac_tool_prefix=$host_alias-++test "$silent" = yes && exec 6>/dev/null+++ac_pwd=`pwd` && test -n "$ac_pwd" &&+ac_ls_di=`ls -di .` &&+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||+  as_fn_error $? "working directory cannot be determined"+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||+  as_fn_error $? "pwd does not report name of working directory"+++# Find the source files, if location was not specified.+if test -z "$srcdir"; then+  ac_srcdir_defaulted=yes+  # Try the directory containing this script, then the parent directory.+  ac_confdir=`$as_dirname -- "$as_myself" ||+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+	 X"$as_myself" : 'X\(//\)[^/]' \| \+	 X"$as_myself" : 'X\(//\)$' \| \+	 X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||+printf "%s\n" X"$as_myself" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{+	    s//\1/+	    q+	  }+	  /^X\(\/\/\)[^/].*/{+	    s//\1/+	    q+	  }+	  /^X\(\/\/\)$/{+	    s//\1/+	    q+	  }+	  /^X\(\/\).*/{+	    s//\1/+	    q+	  }+	  s/.*/./; q'`+  srcdir=$ac_confdir+  if test ! -r "$srcdir/$ac_unique_file"; then+    srcdir=..+  fi+else+  ac_srcdir_defaulted=no+fi+if test ! -r "$srcdir/$ac_unique_file"; then+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"+fi+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"+ac_abs_confdir=`(+	cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"+	pwd)`+# When building in place, set srcdir=.+if test "$ac_abs_confdir" = "$ac_pwd"; then+  srcdir=.+fi+# Remove unnecessary trailing slashes from srcdir.+# Double slashes in file names in object file debugging info+# mess up M-x gdb in Emacs.+case $srcdir in+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;+esac+for ac_var in $ac_precious_vars; do+  eval ac_env_${ac_var}_set=\${${ac_var}+set}+  eval ac_env_${ac_var}_value=\$${ac_var}+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}+  eval ac_cv_env_${ac_var}_value=\$${ac_var}+done++#+# Report the --help message.+#+if test "$ac_init_help" = "long"; then+  # Omit some internal or obsolete options to make the list less imposing.+  # This message is too long to be a string in the A/UX 3.1 sh.+  cat <<_ACEOF+\`configure' configures Haskell time package 1.16 to adapt to many kinds of systems.++Usage: $0 [OPTION]... [VAR=VALUE]...++To assign environment variables (e.g., CC, CFLAGS...), specify them as+VAR=VALUE.  See below for descriptions of some of the useful variables.++Defaults for the options are specified in brackets.++Configuration:+  -h, --help              display this help and exit+      --help=short        display options specific to this package+      --help=recursive    display the short help of all the included packages+  -V, --version           display version information and exit+  -q, --quiet, --silent   do not print \`checking ...' messages+      --cache-file=FILE   cache test results in FILE [disabled]+  -C, --config-cache      alias for \`--cache-file=config.cache'+  -n, --no-create         do not create output files+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']++Installation directories:+  --prefix=PREFIX         install architecture-independent files in PREFIX+                          [$ac_default_prefix]+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX+                          [PREFIX]++By default, \`make install' will install all the files in+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify+an installation prefix other than \`$ac_default_prefix' using \`--prefix',+for instance \`--prefix=\$HOME'.++For better control, use the options below.++Fine tuning of the installation directories:+  --bindir=DIR            user executables [EPREFIX/bin]+  --sbindir=DIR           system admin executables [EPREFIX/sbin]+  --libexecdir=DIR        program executables [EPREFIX/libexec]+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]+  --libdir=DIR            object code libraries [EPREFIX/lib]+  --includedir=DIR        C header files [PREFIX/include]+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]+  --infodir=DIR           info documentation [DATAROOTDIR/info]+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]+  --mandir=DIR            man documentation [DATAROOTDIR/man]+  --docdir=DIR            documentation root [DATAROOTDIR/doc/time]+  --htmldir=DIR           html documentation [DOCDIR]+  --dvidir=DIR            dvi documentation [DOCDIR]+  --pdfdir=DIR            pdf documentation [DOCDIR]+  --psdir=DIR             ps documentation [DOCDIR]+_ACEOF++  cat <<\_ACEOF+_ACEOF+fi++if test -n "$ac_init_help"; then+  case $ac_init_help in+     short | recursive ) echo "Configuration of Haskell time package 1.16:";;+   esac+  cat <<\_ACEOF++Optional Packages:+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)+Gnu C compiler+Haskell compiler++Some influential environment variables:+  CC          C compiler command+  CFLAGS      C compiler flags+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a+              nonstandard directory <lib dir>+  LIBS        libraries to pass to the linker, e.g. -l<library>+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if+              you have headers in a nonstandard directory <include dir>++Use these variables to override the choices made by `configure' or to help+it to find libraries and programs with nonstandard names/locations.++Report bugs to <ashley@semantic.org>.+_ACEOF+ac_status=$?+fi++if test "$ac_init_help" = "recursive"; then+  # If there are subdirs, report their specific --help.+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue+    test -d "$ac_dir" ||+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||+      continue+    ac_builddir=.++case "$ac_dir" in+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;+*)+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`+  # A ".." for each directory in $ac_dir_suffix.+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`+  case $ac_top_builddir_sub in+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;+  esac ;;+esac+ac_abs_top_builddir=$ac_pwd+ac_abs_builddir=$ac_pwd$ac_dir_suffix+# for backward compatibility:+ac_top_builddir=$ac_top_build_prefix++case $srcdir in+  .)  # We are building in place.+    ac_srcdir=.+    ac_top_srcdir=$ac_top_builddir_sub+    ac_abs_top_srcdir=$ac_pwd ;;+  [\\/]* | ?:[\\/]* )  # Absolute name.+    ac_srcdir=$srcdir$ac_dir_suffix;+    ac_top_srcdir=$srcdir+    ac_abs_top_srcdir=$srcdir ;;+  *) # Relative name.+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix+    ac_top_srcdir=$ac_top_build_prefix$srcdir+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;+esac+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix++    cd "$ac_dir" || { ac_status=$?; continue; }+    # Check for configure.gnu first; this name is used for a wrapper for+    # Metaconfig's "Configure" on case-insensitive file systems.+    if test -f "$ac_srcdir/configure.gnu"; then+      echo &&+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive+    elif test -f "$ac_srcdir/configure"; then+      echo &&+      $SHELL "$ac_srcdir/configure" --help=recursive+    else+      printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2+    fi || ac_status=$?+    cd "$ac_pwd" || { ac_status=$?; break; }+  done+fi++test -n "$ac_init_help" && exit $ac_status+if $ac_init_version; then+  cat <<\_ACEOF+Haskell time package configure 1.16+generated by GNU Autoconf 2.71++Copyright (C) 2021 Free Software Foundation, Inc.+This configure script is free software; the Free Software Foundation+gives unlimited permission to copy, distribute and modify it.+_ACEOF+  exit+fi++## ------------------------ ##+## Autoconf initialization. ##+## ------------------------ ##++# ac_fn_c_try_compile LINENO+# --------------------------+# Try to compile conftest.$ac_ext, and return whether this succeeded.+ac_fn_c_try_compile ()+{+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack+  rm -f conftest.$ac_objext conftest.beam+  if { { ac_try="$ac_compile"+case "(($ac_try" in+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+  *) ac_try_echo=$ac_try;;+esac+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""+printf "%s\n" "$ac_try_echo"; } >&5+  (eval "$ac_compile") 2>conftest.err+  ac_status=$?+  if test -s conftest.err; then+    grep -v '^ *+' conftest.err >conftest.er1+    cat conftest.er1 >&5+    mv -f conftest.er1 conftest.err+  fi+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5+  test $ac_status = 0; } && {+	 test -z "$ac_c_werror_flag" ||+	 test ! -s conftest.err+       } && test -s conftest.$ac_objext+then :+  ac_retval=0+else $as_nop+  printf "%s\n" "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++	ac_retval=1+fi+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno+  as_fn_set_status $ac_retval++} # ac_fn_c_try_compile++# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES+# -------------------------------------------------------+# Tests whether HEADER exists and can be compiled using the include files in+# INCLUDES, setting the cache variable VAR accordingly.+ac_fn_c_check_header_compile ()+{+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5+printf %s "checking for $2... " >&6; }+if eval test \${$3+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+$4+#include <$2>+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  eval "$3=yes"+else $as_nop+  eval "$3=no"+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+fi+eval ac_res=\$$3+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5+printf "%s\n" "$ac_res" >&6; }+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno++} # ac_fn_c_check_header_compile++# ac_fn_c_try_link LINENO+# -----------------------+# Try to link conftest.$ac_ext, and return whether this succeeded.+ac_fn_c_try_link ()+{+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack+  rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext+  if { { ac_try="$ac_link"+case "(($ac_try" in+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+  *) ac_try_echo=$ac_try;;+esac+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""+printf "%s\n" "$ac_try_echo"; } >&5+  (eval "$ac_link") 2>conftest.err+  ac_status=$?+  if test -s conftest.err; then+    grep -v '^ *+' conftest.err >conftest.er1+    cat conftest.er1 >&5+    mv -f conftest.er1 conftest.err+  fi+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5+  test $ac_status = 0; } && {+	 test -z "$ac_c_werror_flag" ||+	 test ! -s conftest.err+       } && test -s conftest$ac_exeext && {+	 test "$cross_compiling" = yes ||+	 test -x conftest$ac_exeext+       }+then :+  ac_retval=0+else $as_nop+  printf "%s\n" "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++	ac_retval=1+fi+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would+  # interfere with the next link command; also delete a directory that is+  # left behind by Apple's compiler.  We do this before executing the actions.+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno+  as_fn_set_status $ac_retval++} # ac_fn_c_try_link++# ac_fn_c_check_func LINENO FUNC VAR+# ----------------------------------+# Tests whether FUNC exists, setting the cache variable VAR accordingly+ac_fn_c_check_func ()+{+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5+printf %s "checking for $2... " >&6; }+if eval test \${$3+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */+#define $2 innocuous_$2++/* System header to define __stub macros and hopefully few prototypes,+   which can conflict with char $2 (); below.  */++#include <limits.h>+#undef $2++/* Override any GCC internal prototype to avoid an error.+   Use char because int might match the return type of a GCC+   builtin and then its argument prototype would still apply.  */+#ifdef __cplusplus+extern "C"+#endif+char $2 ();+/* The GNU C library defines this for functions which it implements+    to always fail with ENOSYS.  Some functions are actually named+    something starting with __ and the normal name is an alias.  */+#if defined __stub_$2 || defined __stub___$2+choke me+#endif++int+main (void)+{+return $2 ();+  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_link "$LINENO"+then :+  eval "$3=yes"+else $as_nop+  eval "$3=no"+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam \+    conftest$ac_exeext conftest.$ac_ext+fi+eval ac_res=\$$3+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5+printf "%s\n" "$ac_res" >&6; }+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno++} # ac_fn_c_check_func++# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES+# ----------------------------------------------------+# Tries to find if the field MEMBER exists in type AGGR, after including+# INCLUDES, setting cache variable VAR accordingly.+ac_fn_c_check_member ()+{+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5+printf %s "checking for $2.$3... " >&6; }+if eval test \${$4+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+$5+int+main (void)+{+static $2 ac_aggr;+if (ac_aggr.$3)+return 0;+  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  eval "$4=yes"+else $as_nop+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+$5+int+main (void)+{+static $2 ac_aggr;+if (sizeof ac_aggr.$3)+return 0;+  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  eval "$4=yes"+else $as_nop+  eval "$4=no"+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+fi+eval ac_res=\$$4+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5+printf "%s\n" "$ac_res" >&6; }+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno++} # ac_fn_c_check_member++# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR+# ------------------------------------------------------------------+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.+ac_fn_check_decl ()+{+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack+  as_decl_name=`echo $2|sed 's/ *(.*//'`+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5+printf %s "checking whether $as_decl_name is declared... " >&6; }+if eval test \${$3+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`+  eval ac_save_FLAGS=\$$6+  as_fn_append $6 " $5"+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+$4+int+main (void)+{+#ifndef $as_decl_name+#ifdef __cplusplus+  (void) $as_decl_use;+#else+  (void) $as_decl_name;+#endif+#endif++  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  eval "$3=yes"+else $as_nop+  eval "$3=no"+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+  eval $6=\$ac_save_FLAGS++fi+eval ac_res=\$$3+	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5+printf "%s\n" "$ac_res" >&6; }+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno++} # ac_fn_check_decl+ac_configure_args_raw=+for ac_arg+do+  case $ac_arg in+  *\'*)+    ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;+  esac+  as_fn_append ac_configure_args_raw " '$ac_arg'"+done++case $ac_configure_args_raw in+  *$as_nl*)+    ac_safe_unquote= ;;+  *)+    ac_unsafe_z='|&;<>()$`\\"*?[ ''	' # This string ends in space, tab.+    ac_unsafe_a="$ac_unsafe_z#~"+    ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"+    ac_configure_args_raw=`      printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;+esac++cat >config.log <<_ACEOF+This file contains any messages produced by compilers while+running configure, to aid debugging if configure makes a mistake.++It was created by Haskell time package $as_me 1.16, which was+generated by GNU Autoconf 2.71.  Invocation command line was++  $ $0$ac_configure_args_raw++_ACEOF+exec 5>>config.log+{+cat <<_ASUNAME+## --------- ##+## Platform. ##+## --------- ##++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`+uname -m = `(uname -m) 2>/dev/null || echo unknown`+uname -r = `(uname -r) 2>/dev/null || echo unknown`+uname -s = `(uname -s) 2>/dev/null || echo unknown`+uname -v = `(uname -v) 2>/dev/null || echo unknown`++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`++/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`++_ASUNAME++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    printf "%s\n" "PATH: $as_dir"+  done+IFS=$as_save_IFS++} >&5++cat >&5 <<_ACEOF+++## ----------- ##+## Core tests. ##+## ----------- ##++_ACEOF+++# Keep a trace of the command line.+# Strip out --no-create and --no-recursion so they do not pile up.+# Strip out --silent because we don't want to record it for future runs.+# Also quote any args containing shell meta-characters.+# Make two passes to allow for proper duplicate-argument suppression.+ac_configure_args=+ac_configure_args0=+ac_configure_args1=+ac_must_keep_next=false+for ac_pass in 1 2+do+  for ac_arg+  do+    case $ac_arg in+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \+    | -silent | --silent | --silen | --sile | --sil)+      continue ;;+    *\'*)+      ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;+    esac+    case $ac_pass in+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;+    2)+      as_fn_append ac_configure_args1 " '$ac_arg'"+      if test $ac_must_keep_next = true; then+	ac_must_keep_next=false # Got value, back to normal.+      else+	case $ac_arg in+	  *=* | --config-cache | -C | -disable-* | --disable-* \+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \+	  | -with-* | --with-* | -without-* | --without-* | --x)+	    case "$ac_configure_args0 " in+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;+	    esac+	    ;;+	  -* ) ac_must_keep_next=true ;;+	esac+      fi+      as_fn_append ac_configure_args " '$ac_arg'"+      ;;+    esac+  done+done+{ ac_configure_args0=; unset ac_configure_args0;}+{ ac_configure_args1=; unset ac_configure_args1;}++# When interrupted or exit'd, cleanup temporary files, and complete+# config.log.  We remove comments because anyway the quotes in there+# would cause problems or look ugly.+# WARNING: Use '\'' to represent an apostrophe within the trap.+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.+trap 'exit_status=$?+  # Sanitize IFS.+  IFS=" ""	$as_nl"+  # Save into config.log some information that might help in debugging.+  {+    echo++    printf "%s\n" "## ---------------- ##+## Cache variables. ##+## ---------------- ##"+    echo+    # The following way of writing the cache mishandles newlines in values,+(+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do+    eval ac_val=\$$ac_var+    case $ac_val in #(+    *${as_nl}*)+      case $ac_var in #(+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;+      esac+      case $ac_var in #(+      _ | IFS | as_nl) ;; #(+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(+      *) { eval $ac_var=; unset $ac_var;} ;;+      esac ;;+    esac+  done+  (set) 2>&1 |+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(+    *${as_nl}ac_space=\ *)+      sed -n \+	"s/'\''/'\''\\\\'\'''\''/g;+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"+      ;; #(+    *)+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"+      ;;+    esac |+    sort+)+    echo++    printf "%s\n" "## ----------------- ##+## Output variables. ##+## ----------------- ##"+    echo+    for ac_var in $ac_subst_vars+    do+      eval ac_val=\$$ac_var+      case $ac_val in+      *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;+      esac+      printf "%s\n" "$ac_var='\''$ac_val'\''"+    done | sort+    echo++    if test -n "$ac_subst_files"; then+      printf "%s\n" "## ------------------- ##+## File substitutions. ##+## ------------------- ##"+      echo+      for ac_var in $ac_subst_files+      do+	eval ac_val=\$$ac_var+	case $ac_val in+	*\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;+	esac+	printf "%s\n" "$ac_var='\''$ac_val'\''"+      done | sort+      echo+    fi++    if test -s confdefs.h; then+      printf "%s\n" "## ----------- ##+## confdefs.h. ##+## ----------- ##"+      echo+      cat confdefs.h+      echo+    fi+    test "$ac_signal" != 0 &&+      printf "%s\n" "$as_me: caught signal $ac_signal"+    printf "%s\n" "$as_me: exit $exit_status"+  } >&5+  rm -f core *.core core.conftest.* &&+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&+    exit $exit_status+' 0+for ac_signal in 1 2 13 15; do+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal+done+ac_signal=0++# confdefs.h avoids OS command line length limits that DEFS can exceed.+rm -f -r conftest* confdefs.h++printf "%s\n" "/* confdefs.h */" > confdefs.h++# Predefined preprocessor variables.++printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h++printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h++printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h++printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h++printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h++printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h+++# Let the site file select an alternate cache file if it wants to.+# Prefer an explicitly selected file to automatically selected ones.+if test -n "$CONFIG_SITE"; then+  ac_site_files="$CONFIG_SITE"+elif test "x$prefix" != xNONE; then+  ac_site_files="$prefix/share/config.site $prefix/etc/config.site"+else+  ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"+fi++for ac_site_file in $ac_site_files+do+  case $ac_site_file in #(+  */*) :+     ;; #(+  *) :+    ac_site_file=./$ac_site_file ;;+esac+  if test -f "$ac_site_file" && test -r "$ac_site_file"; then+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}+    sed 's/^/| /' "$ac_site_file" >&5+    . "$ac_site_file" \+      || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}+as_fn_error $? "failed to load site script $ac_site_file+See \`config.log' for more details" "$LINENO" 5; }+  fi+done++if test -r "$cache_file"; then+  # Some versions of bash will fail to source /dev/null (special files+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}+    case $cache_file in+      [\\/]* | ?:[\\/]* ) . "$cache_file";;+      *)                      . "./$cache_file";;+    esac+  fi+else+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}+  >$cache_file+fi++# Test code for whether the C compiler supports C89 (global declarations)+ac_c_conftest_c89_globals='+/* Does the compiler advertise C89 conformance?+   Do not test the value of __STDC__, because some compilers set it to 0+   while being otherwise adequately conformant. */+#if !defined __STDC__+# error "Compiler does not advertise C89 conformance"+#endif++#include <stddef.h>+#include <stdarg.h>+struct stat;+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh.  */+struct buf { int x; };+struct buf * (*rcsopen) (struct buf *, struct stat *, int);+static char *e (p, i)+     char **p;+     int i;+{+  return p[i];+}+static char *f (char * (*g) (char **, int), char **p, ...)+{+  char *s;+  va_list v;+  va_start (v,p);+  s = g (p, va_arg (v,int));+  va_end (v);+  return s;+}++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has+   function prototypes and stuff, but not \xHH hex character constants.+   These do not provoke an error unfortunately, instead are silently treated+   as an "x".  The following induces an error, until -std is added to get+   proper ANSI mode.  Curiously \x00 != x always comes out true, for an+   array size at least.  It is necessary to write \x00 == 0 to get something+   that is true only with -std.  */+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters+   inside strings and character constants.  */+#define FOO(x) '\''x'\''+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];++int test (int i, double x);+struct s1 {int (*f) (int a);};+struct s2 {int (*f) (double a);};+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),+               int, int);'++# Test code for whether the C compiler supports C89 (body of main).+ac_c_conftest_c89_main='+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);+'++# Test code for whether the C compiler supports C99 (global declarations)+ac_c_conftest_c99_globals='+// Does the compiler advertise C99 conformance?+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L+# error "Compiler does not advertise C99 conformance"+#endif++#include <stdbool.h>+extern int puts (const char *);+extern int printf (const char *, ...);+extern int dprintf (int, const char *, ...);+extern void *malloc (size_t);++// Check varargs macros.  These examples are taken from C99 6.10.3.5.+// dprintf is used instead of fprintf to avoid needing to declare+// FILE and stderr.+#define debug(...) dprintf (2, __VA_ARGS__)+#define showlist(...) puts (#__VA_ARGS__)+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))+static void+test_varargs_macros (void)+{+  int x = 1234;+  int y = 5678;+  debug ("Flag");+  debug ("X = %d\n", x);+  showlist (The first, second, and third items.);+  report (x>y, "x is %d but y is %d", x, y);+}++// Check long long types.+#define BIG64 18446744073709551615ull+#define BIG32 4294967295ul+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)+#if !BIG_OK+  #error "your preprocessor is broken"+#endif+#if BIG_OK+#else+  #error "your preprocessor is broken"+#endif+static long long int bignum = -9223372036854775807LL;+static unsigned long long int ubignum = BIG64;++struct incomplete_array+{+  int datasize;+  double data[];+};++struct named_init {+  int number;+  const wchar_t *name;+  double average;+};++typedef const char *ccp;++static inline int+test_restrict (ccp restrict text)+{+  // See if C++-style comments work.+  // Iterate through items via the restricted pointer.+  // Also check for declarations in for loops.+  for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)+    continue;+  return 0;+}++// Check varargs and va_copy.+static bool+test_varargs (const char *format, ...)+{+  va_list args;+  va_start (args, format);+  va_list args_copy;+  va_copy (args_copy, args);++  const char *str = "";+  int number = 0;+  float fnumber = 0;++  while (*format)+    {+      switch (*format++)+	{+	case '\''s'\'': // string+	  str = va_arg (args_copy, const char *);+	  break;+	case '\''d'\'': // int+	  number = va_arg (args_copy, int);+	  break;+	case '\''f'\'': // float+	  fnumber = va_arg (args_copy, double);+	  break;+	default:+	  break;+	}+    }+  va_end (args_copy);+  va_end (args);++  return *str && number && fnumber;+}+'++# Test code for whether the C compiler supports C99 (body of main).+ac_c_conftest_c99_main='+  // Check bool.+  _Bool success = false;+  success |= (argc != 0);++  // Check restrict.+  if (test_restrict ("String literal") == 0)+    success = true;+  char *restrict newvar = "Another string";++  // Check varargs.+  success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);+  test_varargs_macros ();++  // Check flexible array members.+  struct incomplete_array *ia =+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));+  ia->datasize = 10;+  for (int i = 0; i < ia->datasize; ++i)+    ia->data[i] = i * 1.234;++  // Check named initializers.+  struct named_init ni = {+    .number = 34,+    .name = L"Test wide string",+    .average = 543.34343,+  };++  ni.number = 58;++  int dynamic_array[ni.number];+  dynamic_array[0] = argv[0][0];+  dynamic_array[ni.number - 1] = 543;++  // work around unused variable warnings+  ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''+	 || dynamic_array[ni.number - 1] != 543);+'++# Test code for whether the C compiler supports C11 (global declarations)+ac_c_conftest_c11_globals='+// Does the compiler advertise C11 conformance?+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L+# error "Compiler does not advertise C11 conformance"+#endif++// Check _Alignas.+char _Alignas (double) aligned_as_double;+char _Alignas (0) no_special_alignment;+extern char aligned_as_int;+char _Alignas (0) _Alignas (int) aligned_as_int;++// Check _Alignof.+enum+{+  int_alignment = _Alignof (int),+  int_array_alignment = _Alignof (int[100]),+  char_alignment = _Alignof (char)+};+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");++// Check _Noreturn.+int _Noreturn does_not_return (void) { for (;;) continue; }++// Check _Static_assert.+struct test_static_assert+{+  int x;+  _Static_assert (sizeof (int) <= sizeof (long int),+                  "_Static_assert does not work in struct");+  long int y;+};++// Check UTF-8 literals.+#define u8 syntax error!+char const utf8_literal[] = u8"happens to be ASCII" "another string";++// Check duplicate typedefs.+typedef long *long_ptr;+typedef long int *long_ptr;+typedef long_ptr long_ptr;++// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.+struct anonymous+{+  union {+    struct { int i; int j; };+    struct { int k; long int l; } w;+  };+  int m;+} v1;+'++# Test code for whether the C compiler supports C11 (body of main).+ac_c_conftest_c11_main='+  _Static_assert ((offsetof (struct anonymous, i)+		   == offsetof (struct anonymous, w.k)),+		  "Anonymous union alignment botch");+  v1.i = 2;+  v1.w.k = 5;+  ok |= v1.i != 5;+'++# Test code for whether the C compiler supports C11 (complete).+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}+${ac_c_conftest_c99_globals}+${ac_c_conftest_c11_globals}++int+main (int argc, char **argv)+{+  int ok = 0;+  ${ac_c_conftest_c89_main}+  ${ac_c_conftest_c99_main}+  ${ac_c_conftest_c11_main}+  return ok;+}+"++# Test code for whether the C compiler supports C99 (complete).+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}+${ac_c_conftest_c99_globals}++int+main (int argc, char **argv)+{+  int ok = 0;+  ${ac_c_conftest_c89_main}+  ${ac_c_conftest_c99_main}+  return ok;+}+"++# Test code for whether the C compiler supports C89 (complete).+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}++int+main (int argc, char **argv)+{+  int ok = 0;+  ${ac_c_conftest_c89_main}+  return ok;+}+"++as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"+as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"+as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H"+# Check that the precious variables saved in the cache have kept the same+# value.+ac_cache_corrupted=false+for ac_var in $ac_precious_vars; do+  eval ac_old_set=\$ac_cv_env_${ac_var}_set+  eval ac_new_set=\$ac_env_${ac_var}_set+  eval ac_old_val=\$ac_cv_env_${ac_var}_value+  eval ac_new_val=\$ac_env_${ac_var}_value+  case $ac_old_set,$ac_new_set in+    set,)+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}+      ac_cache_corrupted=: ;;+    ,set)+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}+      ac_cache_corrupted=: ;;+    ,);;+    *)+      if test "x$ac_old_val" != "x$ac_new_val"; then+	# differences in whitespace do not lead to failure.+	ac_old_val_w=`echo x $ac_old_val`+	ac_new_val_w=`echo x $ac_new_val`+	if test "$ac_old_val_w" != "$ac_new_val_w"; then+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}+	  ac_cache_corrupted=:+	else+	  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}+	  eval $ac_var=\$ac_old_val+	fi+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5+printf "%s\n" "$as_me:   former value:  \`$ac_old_val'" >&2;}+	{ printf "%s\n" "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5+printf "%s\n" "$as_me:   current value: \`$ac_new_val'" >&2;}+      fi;;+  esac+  # Pass precious variables to config.status.+  if test "$ac_new_set" = set; then+    case $ac_new_val in+    *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;+    *) ac_arg=$ac_var=$ac_new_val ;;+    esac+    case " $ac_configure_args " in+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;+    esac+  fi+done+if $ac_cache_corrupted; then+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}+  as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'+	    and start over" "$LINENO" 5+fi+## -------------------- ##+## Main body of script. ##+## -------------------- ##++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu++++# Safety check: Ensure that we are in the correct source directory.+++# These are to silence warnings with older Cabal versions++# Check whether --with-gcc was given.+if test ${with_gcc+y}+then :+  withval=$with_gcc;+fi+++# Check whether --with-compiler was given.+if test ${with_compiler+y}+then :+  withval=$with_compiler;+fi++++++++++++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu+if test -n "$ac_tool_prefix"; then+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.+set dummy ${ac_tool_prefix}gcc; ac_word=$2+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5+printf %s "checking for $ac_word... " >&6; }+if test ${ac_cv_prog_CC+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    for ac_exec_ext in '' $ac_executable_extensions; do+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then+    ac_cv_prog_CC="${ac_tool_prefix}gcc"+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+  done+IFS=$as_save_IFS++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5+printf "%s\n" "$CC" >&6; }+else+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5+printf "%s\n" "no" >&6; }+fi+++fi+if test -z "$ac_cv_prog_CC"; then+  ac_ct_CC=$CC+  # Extract the first word of "gcc", so it can be a program name with args.+set dummy gcc; ac_word=$2+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5+printf %s "checking for $ac_word... " >&6; }+if test ${ac_cv_prog_ac_ct_CC+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  if test -n "$ac_ct_CC"; then+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    for ac_exec_ext in '' $ac_executable_extensions; do+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then+    ac_cv_prog_ac_ct_CC="gcc"+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+  done+IFS=$as_save_IFS++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5+printf "%s\n" "$ac_ct_CC" >&6; }+else+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5+printf "%s\n" "no" >&6; }+fi++  if test "x$ac_ct_CC" = x; then+    CC=""+  else+    case $cross_compiling:$ac_tool_warned in+yes:)+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}+ac_tool_warned=yes ;;+esac+    CC=$ac_ct_CC+  fi+else+  CC="$ac_cv_prog_CC"+fi++if test -z "$CC"; then+          if test -n "$ac_tool_prefix"; then+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.+set dummy ${ac_tool_prefix}cc; ac_word=$2+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5+printf %s "checking for $ac_word... " >&6; }+if test ${ac_cv_prog_CC+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    for ac_exec_ext in '' $ac_executable_extensions; do+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then+    ac_cv_prog_CC="${ac_tool_prefix}cc"+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+  done+IFS=$as_save_IFS++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5+printf "%s\n" "$CC" >&6; }+else+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5+printf "%s\n" "no" >&6; }+fi+++  fi+fi+if test -z "$CC"; then+  # Extract the first word of "cc", so it can be a program name with args.+set dummy cc; ac_word=$2+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5+printf %s "checking for $ac_word... " >&6; }+if test ${ac_cv_prog_CC+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+  ac_prog_rejected=no+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    for ac_exec_ext in '' $ac_executable_extensions; do+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then+    if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then+       ac_prog_rejected=yes+       continue+     fi+    ac_cv_prog_CC="cc"+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+  done+IFS=$as_save_IFS++if test $ac_prog_rejected = yes; then+  # We found a bogon in the path, so make sure we never use it.+  set dummy $ac_cv_prog_CC+  shift+  if test $# != 0; then+    # We chose a different compiler from the bogus one.+    # However, it has the same basename, so the bogon will be chosen+    # first if we set CC to just the basename; use the full file name.+    shift+    ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"+  fi+fi+fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5+printf "%s\n" "$CC" >&6; }+else+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5+printf "%s\n" "no" >&6; }+fi+++fi+if test -z "$CC"; then+  if test -n "$ac_tool_prefix"; then+  for ac_prog in cl.exe+  do+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.+set dummy $ac_tool_prefix$ac_prog; ac_word=$2+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5+printf %s "checking for $ac_word... " >&6; }+if test ${ac_cv_prog_CC+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    for ac_exec_ext in '' $ac_executable_extensions; do+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+  done+IFS=$as_save_IFS++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5+printf "%s\n" "$CC" >&6; }+else+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5+printf "%s\n" "no" >&6; }+fi+++    test -n "$CC" && break+  done+fi+if test -z "$CC"; then+  ac_ct_CC=$CC+  for ac_prog in cl.exe+do+  # Extract the first word of "$ac_prog", so it can be a program name with args.+set dummy $ac_prog; ac_word=$2+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5+printf %s "checking for $ac_word... " >&6; }+if test ${ac_cv_prog_ac_ct_CC+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  if test -n "$ac_ct_CC"; then+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    for ac_exec_ext in '' $ac_executable_extensions; do+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then+    ac_cv_prog_ac_ct_CC="$ac_prog"+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+  done+IFS=$as_save_IFS++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5+printf "%s\n" "$ac_ct_CC" >&6; }+else+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5+printf "%s\n" "no" >&6; }+fi+++  test -n "$ac_ct_CC" && break+done++  if test "x$ac_ct_CC" = x; then+    CC=""+  else+    case $cross_compiling:$ac_tool_warned in+yes:)+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}+ac_tool_warned=yes ;;+esac+    CC=$ac_ct_CC+  fi+fi++fi+if test -z "$CC"; then+  if test -n "$ac_tool_prefix"; then+  # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.+set dummy ${ac_tool_prefix}clang; ac_word=$2+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5+printf %s "checking for $ac_word... " >&6; }+if test ${ac_cv_prog_CC+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  if test -n "$CC"; then+  ac_cv_prog_CC="$CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    for ac_exec_ext in '' $ac_executable_extensions; do+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then+    ac_cv_prog_CC="${ac_tool_prefix}clang"+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+  done+IFS=$as_save_IFS++fi+fi+CC=$ac_cv_prog_CC+if test -n "$CC"; then+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5+printf "%s\n" "$CC" >&6; }+else+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5+printf "%s\n" "no" >&6; }+fi+++fi+if test -z "$ac_cv_prog_CC"; then+  ac_ct_CC=$CC+  # Extract the first word of "clang", so it can be a program name with args.+set dummy clang; ac_word=$2+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5+printf %s "checking for $ac_word... " >&6; }+if test ${ac_cv_prog_ac_ct_CC+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  if test -n "$ac_ct_CC"; then+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.+else+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    for ac_exec_ext in '' $ac_executable_extensions; do+  if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then+    ac_cv_prog_ac_ct_CC="clang"+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5+    break 2+  fi+done+  done+IFS=$as_save_IFS++fi+fi+ac_ct_CC=$ac_cv_prog_ac_ct_CC+if test -n "$ac_ct_CC"; then+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5+printf "%s\n" "$ac_ct_CC" >&6; }+else+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5+printf "%s\n" "no" >&6; }+fi++  if test "x$ac_ct_CC" = x; then+    CC=""+  else+    case $cross_compiling:$ac_tool_warned in+yes:)+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}+ac_tool_warned=yes ;;+esac+    CC=$ac_ct_CC+  fi+else+  CC="$ac_cv_prog_CC"+fi++fi+++test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}+as_fn_error $? "no acceptable C compiler found in \$PATH+See \`config.log' for more details" "$LINENO" 5; }++# Provide some information about the compiler.+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5+set X $ac_compile+ac_compiler=$2+for ac_option in --version -v -V -qversion -version; do+  { { ac_try="$ac_compiler $ac_option >&5"+case "(($ac_try" in+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+  *) ac_try_echo=$ac_try;;+esac+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""+printf "%s\n" "$ac_try_echo"; } >&5+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err+  ac_status=$?+  if test -s conftest.err; then+    sed '10a\+... rest of stderr output deleted ...+         10q' conftest.err >conftest.er1+    cat conftest.er1 >&5+  fi+  rm -f conftest.er1 conftest.err+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5+  test $ac_status = 0; }+done++cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */++int+main (void)+{++  ;+  return 0;+}+_ACEOF+ac_clean_files_save=$ac_clean_files+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"+# Try to create an executable without -o first, disregard a.out.+# It will help us diagnose broken compilers, and finding out an intuition+# of exeext.+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5+printf %s "checking whether the C compiler works... " >&6; }+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`++# The possible output files:+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"++ac_rmfiles=+for ac_file in $ac_files+do+  case $ac_file in+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;+  esac+done+rm -f $ac_rmfiles++if { { ac_try="$ac_link_default"+case "(($ac_try" in+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+  *) ac_try_echo=$ac_try;;+esac+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""+printf "%s\n" "$ac_try_echo"; } >&5+  (eval "$ac_link_default") 2>&5+  ac_status=$?+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5+  test $ac_status = 0; }+then :+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'+# in a Makefile.  We should not override ac_cv_exeext if it was cached,+# so that the user can short-circuit this test for compilers unknown to+# Autoconf.+for ac_file in $ac_files ''+do+  test -f "$ac_file" || continue+  case $ac_file in+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )+	;;+    [ab].out )+	# We found the default executable, but exeext='' is most+	# certainly right.+	break;;+    *.* )+	if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;+	then :; else+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`+	fi+	# We set ac_cv_exeext here because the later test for it is not+	# safe: cross compilers may not add the suffix if given an `-o'+	# argument, so we may need to know it at that point already.+	# Even if this section looks crufty: it has the advantage of+	# actually working.+	break;;+    * )+	break;;+  esac+done+test "$ac_cv_exeext" = no && ac_cv_exeext=++else $as_nop+  ac_file=''+fi+if test -z "$ac_file"+then :+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5+printf "%s\n" "no" >&6; }+printf "%s\n" "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}+as_fn_error 77 "C compiler cannot create executables+See \`config.log' for more details" "$LINENO" 5; }+else $as_nop+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5+printf "%s\n" "yes" >&6; }+fi+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5+printf %s "checking for C compiler default output file name... " >&6; }+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5+printf "%s\n" "$ac_file" >&6; }+ac_exeext=$ac_cv_exeext++rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out+ac_clean_files=$ac_clean_files_save+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5+printf %s "checking for suffix of executables... " >&6; }+if { { ac_try="$ac_link"+case "(($ac_try" in+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+  *) ac_try_echo=$ac_try;;+esac+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""+printf "%s\n" "$ac_try_echo"; } >&5+  (eval "$ac_link") 2>&5+  ac_status=$?+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5+  test $ac_status = 0; }+then :+  # If both `conftest.exe' and `conftest' are `present' (well, observable)+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will+# work properly (i.e., refer to `conftest.exe'), while it won't with+# `rm'.+for ac_file in conftest.exe conftest conftest.*; do+  test -f "$ac_file" || continue+  case $ac_file in+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`+	  break;;+    * ) break;;+  esac+done+else $as_nop+  { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}+as_fn_error $? "cannot compute suffix of executables: cannot compile and link+See \`config.log' for more details" "$LINENO" 5; }+fi+rm -f conftest conftest$ac_cv_exeext+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5+printf "%s\n" "$ac_cv_exeext" >&6; }++rm -f conftest.$ac_ext+EXEEXT=$ac_cv_exeext+ac_exeext=$EXEEXT+cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+#include <stdio.h>+int+main (void)+{+FILE *f = fopen ("conftest.out", "w");+ return ferror (f) || fclose (f) != 0;++  ;+  return 0;+}+_ACEOF+ac_clean_files="$ac_clean_files conftest.out"+# Check that the compiler produces executables we can run.  If not, either+# the compiler is broken, or we cross compile.+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5+printf %s "checking whether we are cross compiling... " >&6; }+if test "$cross_compiling" != yes; then+  { { ac_try="$ac_link"+case "(($ac_try" in+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+  *) ac_try_echo=$ac_try;;+esac+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""+printf "%s\n" "$ac_try_echo"; } >&5+  (eval "$ac_link") 2>&5+  ac_status=$?+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5+  test $ac_status = 0; }+  if { ac_try='./conftest$ac_cv_exeext'+  { { case "(($ac_try" in+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+  *) ac_try_echo=$ac_try;;+esac+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""+printf "%s\n" "$ac_try_echo"; } >&5+  (eval "$ac_try") 2>&5+  ac_status=$?+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5+  test $ac_status = 0; }; }; then+    cross_compiling=no+  else+    if test "$cross_compiling" = maybe; then+	cross_compiling=yes+    else+	{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}+as_fn_error 77 "cannot run C compiled programs.+If you meant to cross compile, use \`--host'.+See \`config.log' for more details" "$LINENO" 5; }+    fi+  fi+fi+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5+printf "%s\n" "$cross_compiling" >&6; }++rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out+ac_clean_files=$ac_clean_files_save+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5+printf %s "checking for suffix of object files... " >&6; }+if test ${ac_cv_objext+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */++int+main (void)+{++  ;+  return 0;+}+_ACEOF+rm -f conftest.o conftest.obj+if { { ac_try="$ac_compile"+case "(($ac_try" in+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;+  *) ac_try_echo=$ac_try;;+esac+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""+printf "%s\n" "$ac_try_echo"; } >&5+  (eval "$ac_compile") 2>&5+  ac_status=$?+  printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5+  test $ac_status = 0; }+then :+  for ac_file in conftest.o conftest.obj conftest.*; do+  test -f "$ac_file" || continue;+  case $ac_file in+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`+       break;;+  esac+done+else $as_nop+  printf "%s\n" "$as_me: failed program was:" >&5+sed 's/^/| /' conftest.$ac_ext >&5++{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}+as_fn_error $? "cannot compute suffix of object files: cannot compile+See \`config.log' for more details" "$LINENO" 5; }+fi+rm -f conftest.$ac_cv_objext conftest.$ac_ext+fi+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5+printf "%s\n" "$ac_cv_objext" >&6; }+OBJEXT=$ac_cv_objext+ac_objext=$OBJEXT+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5+printf %s "checking whether the compiler supports GNU C... " >&6; }+if test ${ac_cv_c_compiler_gnu+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */++int+main (void)+{+#ifndef __GNUC__+       choke me+#endif++  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  ac_compiler_gnu=yes+else $as_nop+  ac_compiler_gnu=no+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+ac_cv_c_compiler_gnu=$ac_compiler_gnu++fi+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }+ac_compiler_gnu=$ac_cv_c_compiler_gnu++if test $ac_compiler_gnu = yes; then+  GCC=yes+else+  GCC=+fi+ac_test_CFLAGS=${CFLAGS+y}+ac_save_CFLAGS=$CFLAGS+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5+printf %s "checking whether $CC accepts -g... " >&6; }+if test ${ac_cv_prog_cc_g+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  ac_save_c_werror_flag=$ac_c_werror_flag+   ac_c_werror_flag=yes+   ac_cv_prog_cc_g=no+   CFLAGS="-g"+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */++int+main (void)+{++  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  ac_cv_prog_cc_g=yes+else $as_nop+  CFLAGS=""+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */++int+main (void)+{++  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :++else $as_nop+  ac_c_werror_flag=$ac_save_c_werror_flag+	 CFLAGS="-g"+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */++int+main (void)+{++  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  ac_cv_prog_cc_g=yes+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+   ac_c_werror_flag=$ac_save_c_werror_flag+fi+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }+if test $ac_test_CFLAGS; then+  CFLAGS=$ac_save_CFLAGS+elif test $ac_cv_prog_cc_g = yes; then+  if test "$GCC" = yes; then+    CFLAGS="-g -O2"+  else+    CFLAGS="-g"+  fi+else+  if test "$GCC" = yes; then+    CFLAGS="-O2"+  else+    CFLAGS=+  fi+fi+ac_prog_cc_stdc=no+if test x$ac_prog_cc_stdc = xno+then :+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5+printf %s "checking for $CC option to enable C11 features... " >&6; }+if test ${ac_cv_prog_cc_c11+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  ac_cv_prog_cc_c11=no+ac_save_CC=$CC+cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+$ac_c_conftest_c11_program+_ACEOF+for ac_arg in '' -std=gnu11+do+  CC="$ac_save_CC $ac_arg"+  if ac_fn_c_try_compile "$LINENO"+then :+  ac_cv_prog_cc_c11=$ac_arg+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam+  test "x$ac_cv_prog_cc_c11" != "xno" && break+done+rm -f conftest.$ac_ext+CC=$ac_save_CC+fi++if test "x$ac_cv_prog_cc_c11" = xno+then :+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5+printf "%s\n" "unsupported" >&6; }+else $as_nop+  if test "x$ac_cv_prog_cc_c11" = x+then :+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5+printf "%s\n" "none needed" >&6; }+else $as_nop+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }+     CC="$CC $ac_cv_prog_cc_c11"+fi+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11+  ac_prog_cc_stdc=c11+fi+fi+if test x$ac_prog_cc_stdc = xno+then :+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5+printf %s "checking for $CC option to enable C99 features... " >&6; }+if test ${ac_cv_prog_cc_c99+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  ac_cv_prog_cc_c99=no+ac_save_CC=$CC+cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+$ac_c_conftest_c99_program+_ACEOF+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=+do+  CC="$ac_save_CC $ac_arg"+  if ac_fn_c_try_compile "$LINENO"+then :+  ac_cv_prog_cc_c99=$ac_arg+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam+  test "x$ac_cv_prog_cc_c99" != "xno" && break+done+rm -f conftest.$ac_ext+CC=$ac_save_CC+fi++if test "x$ac_cv_prog_cc_c99" = xno+then :+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5+printf "%s\n" "unsupported" >&6; }+else $as_nop+  if test "x$ac_cv_prog_cc_c99" = x+then :+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5+printf "%s\n" "none needed" >&6; }+else $as_nop+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }+     CC="$CC $ac_cv_prog_cc_c99"+fi+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99+  ac_prog_cc_stdc=c99+fi+fi+if test x$ac_prog_cc_stdc = xno+then :+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5+printf %s "checking for $CC option to enable C89 features... " >&6; }+if test ${ac_cv_prog_cc_c89+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  ac_cv_prog_cc_c89=no+ac_save_CC=$CC+cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+$ac_c_conftest_c89_program+_ACEOF+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"+do+  CC="$ac_save_CC $ac_arg"+  if ac_fn_c_try_compile "$LINENO"+then :+  ac_cv_prog_cc_c89=$ac_arg+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam+  test "x$ac_cv_prog_cc_c89" != "xno" && break+done+rm -f conftest.$ac_ext+CC=$ac_save_CC+fi++if test "x$ac_cv_prog_cc_c89" = xno+then :+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5+printf "%s\n" "unsupported" >&6; }+else $as_nop+  if test "x$ac_cv_prog_cc_c89" = x+then :+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5+printf "%s\n" "none needed" >&6; }+else $as_nop+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }+     CC="$CC $ac_cv_prog_cc_c89"+fi+  ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89+  ac_prog_cc_stdc=c89+fi+fi++ac_ext=c+ac_cpp='$CPP $CPPFLAGS'+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'+ac_compiler_gnu=$ac_cv_c_compiler_gnu++++ac_header= ac_cache=+for ac_item in $ac_header_c_list+do+  if test $ac_cache; then+    ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"+    if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then+      printf "%s\n" "#define $ac_item 1" >> confdefs.h+    fi+    ac_header= ac_cache=+  elif test $ac_header; then+    ac_cache=$ac_item+  else+    ac_header=$ac_item+  fi+done+++++++++if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes+then :++printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h++fi+++++++  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5+printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; }+if test ${ac_cv_safe_to_define___extensions__+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */++#         define __EXTENSIONS__ 1+          $ac_includes_default+int+main (void)+{++  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  ac_cv_safe_to_define___extensions__=yes+else $as_nop+  ac_cv_safe_to_define___extensions__=no+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+fi+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5+printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }++  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5+printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }+if test ${ac_cv_should_define__xopen_source+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  ac_cv_should_define__xopen_source=no+    if test $ac_cv_header_wchar_h = yes+then :+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */++          #include <wchar.h>+          mbstate_t x;+int+main (void)+{++  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :++else $as_nop+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */++            #define _XOPEN_SOURCE 500+            #include <wchar.h>+            mbstate_t x;+int+main (void)+{++  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  ac_cv_should_define__xopen_source=yes+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+fi+fi+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5+printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }++  printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h++  printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h++  printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h++  printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h++  printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h++  printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h++  printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h++  printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h++  printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h++  printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h++  printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h++  printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h++  printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h++  printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h++  printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h++  if test $ac_cv_header_minix_config_h = yes+then :+  MINIX=yes+    printf "%s\n" "#define _MINIX 1" >>confdefs.h++    printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h++    printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h++else $as_nop+  MINIX=+fi+  if test $ac_cv_safe_to_define___extensions__ = yes+then :+  printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h++fi+  if test $ac_cv_should_define__xopen_source = yes+then :+  printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h++fi+++ac_config_headers="$ac_config_headers lib/include/HsTimeConfig.h"+++ac_fn_c_check_header_compile "$LINENO" "time.h" "ac_cv_header_time_h" "$ac_includes_default"+if test "x$ac_cv_header_time_h" = xyes+then :+  printf "%s\n" "#define HAVE_TIME_H 1" >>confdefs.h++fi++ac_fn_c_check_func "$LINENO" "gmtime_r" "ac_cv_func_gmtime_r"+if test "x$ac_cv_func_gmtime_r" = xyes+then :+  printf "%s\n" "#define HAVE_GMTIME_R 1" >>confdefs.h++fi+ac_fn_c_check_func "$LINENO" "localtime_r" "ac_cv_func_localtime_r"+if test "x$ac_cv_func_localtime_r" = xyes+then :+  printf "%s\n" "#define HAVE_LOCALTIME_R 1" >>confdefs.h++fi+++ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime"+if test "x$ac_cv_func_clock_gettime" = xyes+then :+  printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h++fi++ac_fn_c_check_func "$LINENO" "tzset" "ac_cv_func_tzset"+if test "x$ac_cv_func_tzset" = xyes+then :+  printf "%s\n" "#define HAVE_TZSET 1" >>confdefs.h++fi+++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5+printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; }+if test ${ac_cv_struct_tm+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+#include <sys/types.h>+#include <time.h>++int+main (void)+{+struct tm tm;+				     int *p = &tm.tm_sec;+				     return !p;+  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  ac_cv_struct_tm=time.h+else $as_nop+  ac_cv_struct_tm=sys/time.h+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+fi+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5+printf "%s\n" "$ac_cv_struct_tm" >&6; }+if test $ac_cv_struct_tm = sys/time.h; then++printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h++fi++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }+if test ${ac_cv_c_undeclared_builtin_options+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  ac_save_CFLAGS=$CFLAGS+   ac_cv_c_undeclared_builtin_options='cannot detect'+   for ac_arg in '' -fno-builtin; do+     CFLAGS="$ac_save_CFLAGS $ac_arg"+     # This test program should *not* compile successfully.+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */++int+main (void)+{+(void) strchr;+  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :++else $as_nop+  # This test program should compile successfully.+        # No library function is consistently available on+        # freestanding implementations, so test against a dummy+        # declaration.  Include always-available headers on the+        # off chance that they somehow elicit warnings.+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+#include <float.h>+#include <limits.h>+#include <stdarg.h>+#include <stddef.h>+extern void ac_decl (int, char *);++int+main (void)+{+(void) ac_decl (0, (char *) 0);+  (void) ac_decl;++  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_compile "$LINENO"+then :+  if test x"$ac_arg" = x+then :+  ac_cv_c_undeclared_builtin_options='none needed'+else $as_nop+  ac_cv_c_undeclared_builtin_options=$ac_arg+fi+          break+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext+    done+    CFLAGS=$ac_save_CFLAGS++fi+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }+  case $ac_cv_c_undeclared_builtin_options in #(+  'cannot detect') :+    { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}+as_fn_error $? "cannot make $CC report undeclared builtins+See \`config.log' for more details" "$LINENO" 5; } ;; #(+  'none needed') :+    ac_c_undeclared_builtin_options='' ;; #(+  *) :+    ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;+esac++ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include <sys/types.h>+#include <$ac_cv_struct_tm>++"+if test "x$ac_cv_member_struct_tm_tm_zone" = xyes+then :++printf "%s\n" "#define HAVE_STRUCT_TM_TM_ZONE 1" >>confdefs.h+++fi++if test "$ac_cv_member_struct_tm_tm_zone" = yes; then++printf "%s\n" "#define HAVE_TM_ZONE 1" >>confdefs.h++else+  ac_fn_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include <time.h>+" "$ac_c_undeclared_builtin_options" "CFLAGS"+if test "x$ac_cv_have_decl_tzname" = xyes+then :+  ac_have_decl=1+else $as_nop+  ac_have_decl=0+fi+printf "%s\n" "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h++  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5+printf %s "checking for tzname... " >&6; }+if test ${ac_cv_var_tzname+y}+then :+  printf %s "(cached) " >&6+else $as_nop+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext+/* end confdefs.h.  */+#include <time.h>+#if !HAVE_DECL_TZNAME+extern char *tzname[];+#endif++int+main (void)+{+return tzname[0][0];+  ;+  return 0;+}+_ACEOF+if ac_fn_c_try_link "$LINENO"+then :+  ac_cv_var_tzname=yes+else $as_nop+  ac_cv_var_tzname=no+fi+rm -f core conftest.err conftest.$ac_objext conftest.beam \+    conftest$ac_exeext conftest.$ac_ext+fi+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5+printf "%s\n" "$ac_cv_var_tzname" >&6; }+  if test $ac_cv_var_tzname = yes; then++printf "%s\n" "#define HAVE_TZNAME 1" >>confdefs.h++  fi+fi+++++++  ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default"+if test "x$ac_cv_header_sys_time_h" = xyes+then :+  printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h++fi++  ac_fn_check_decl "$LINENO" "altzone" "ac_cv_have_decl_altzone" "+  #if HAVE_SYS_TIME_H+  #include <sys/time.h>+  #endif+  #include <time.h>++" "$ac_c_undeclared_builtin_options" "CFLAGS"+if test "x$ac_cv_have_decl_altzone" = xyes+then :+  ac_have_decl=1+else $as_nop+  ac_have_decl=0+fi+printf "%s\n" "#define HAVE_DECL_ALTZONE $ac_have_decl" >>confdefs.h++++cat >confcache <<\_ACEOF+# This file is a shell script that caches the results of configure+# tests run on this system so they can be shared between configure+# scripts and configure runs, see configure's option --config-cache.+# It is not useful on other systems.  If it contains results you don't+# want to keep, you may remove or edit it.+#+# config.status only pays attention to the cache file if you give it+# the --recheck option to rerun configure.+#+# `ac_cv_env_foo' variables (set or unset) will be overridden when+# loading this file, other *unset* `ac_cv_foo' will be assigned the+# following values.++_ACEOF++# The following way of writing the cache mishandles newlines in values,+# but we know of no workaround that is simple, portable, and efficient.+# So, we kill variables containing newlines.+# Ultrix sh set writes to stderr and can't be redirected directly,+# and sets the high bit in the cache file unless we assign to the vars.+(+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do+    eval ac_val=\$$ac_var+    case $ac_val in #(+    *${as_nl}*)+      case $ac_var in #(+      *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;+      esac+      case $ac_var in #(+      _ | IFS | as_nl) ;; #(+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(+      *) { eval $ac_var=; unset $ac_var;} ;;+      esac ;;+    esac+  done++  (set) 2>&1 |+    case $as_nl`(ac_space=' '; set) 2>&1` in #(+    *${as_nl}ac_space=\ *)+      # `set' does not quote correctly, so add quotes: double-quote+      # substitution turns \\\\ into \\, and sed turns \\ into \.+      sed -n \+	"s/'/'\\\\''/g;+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"+      ;; #(+    *)+      # `set' quotes correctly as required by POSIX, so do not add quotes.+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"+      ;;+    esac |+    sort+) |+  sed '+     /^ac_cv_env_/b end+     t clear+     :clear+     s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/+     t end+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/+     :end' >>confcache+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else+  if test -w "$cache_file"; then+    if test "x$cache_file" != "x/dev/null"; then+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}+      if test ! -f "$cache_file" || test -h "$cache_file"; then+	cat confcache >"$cache_file"+      else+        case $cache_file in #(+        */* | ?:*)+	  mv -f confcache "$cache_file"$$ &&+	  mv -f "$cache_file"$$ "$cache_file" ;; #(+        *)+	  mv -f confcache "$cache_file" ;;+	esac+      fi+    fi+  else+    { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}+  fi+fi+rm -f confcache++test "x$prefix" = xNONE && prefix=$ac_default_prefix+# Let make expand exec_prefix.+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'++DEFS=-DHAVE_CONFIG_H++ac_libobjs=+ac_ltlibobjs=+U=+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue+  # 1. Remove the extension, and $U if already installed.+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'+  ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR+  #    will be set to the directory where LIBOBJS objects are built.+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'+done+LIBOBJS=$ac_libobjs++LTLIBOBJS=$ac_ltlibobjs++++: "${CONFIG_STATUS=./config.status}"+ac_write_fail=0+ac_clean_files_save=$ac_clean_files+ac_clean_files="$ac_clean_files $CONFIG_STATUS"+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}+as_write_fail=0+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1+#! $SHELL+# Generated by $as_me.+# Run this file to recreate the current configuration.+# Compiler output produced by configure, useful for debugging+# configure, is in config.log if it exists.++debug=false+ac_cs_recheck=false+ac_cs_silent=false++SHELL=\${CONFIG_SHELL-$SHELL}+export SHELL+_ASEOF+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1+## -------------------- ##+## M4sh Initialization. ##+## -------------------- ##++# Be more Bourne compatible+DUALCASE=1; export DUALCASE # for MKS sh+as_nop=:+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1+then :+  emulate sh+  NULLCMD=:+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which+  # is contrary to our usage.  Disable this feature.+  alias -g '${1+"$@"}'='"$@"'+  setopt NO_GLOB_SUBST+else $as_nop+  case `(set -o) 2>/dev/null` in #(+  *posix*) :+    set -o posix ;; #(+  *) :+     ;;+esac+fi++++# Reset variables that may have inherited troublesome values from+# the environment.++# IFS needs to be set, to space, tab, and newline, in precisely that order.+# (If _AS_PATH_WALK were called with IFS unset, it would have the+# side effect of setting IFS to empty, thus disabling word splitting.)+# Quoting is to prevent editors from complaining about space-tab.+as_nl='+'+export as_nl+IFS=" ""	$as_nl"++PS1='$ '+PS2='> '+PS4='+ '++# Ensure predictable behavior from utilities with locale-dependent output.+LC_ALL=C+export LC_ALL+LANGUAGE=C+export LANGUAGE++# We cannot yet rely on "unset" to work, but we need these variables+# to be unset--not just set to an empty or harmless value--now, to+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh).  This construct+# also avoids known problems related to "unset" and subshell syntax+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH+do eval test \${$as_var+y} \+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :+done++# Ensure that fds 0, 1, and 2 are open.+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi+if (exec 3>&2)            ; then :; else exec 2>/dev/null; fi++# The user is always right.+if ${PATH_SEPARATOR+false} :; then+  PATH_SEPARATOR=:+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||+      PATH_SEPARATOR=';'+  }+fi+++# Find who we are.  Look in the path if we contain no directory separator.+as_myself=+case $0 in #((+  *[\\/]* ) as_myself=$0 ;;+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR+for as_dir in $PATH+do+  IFS=$as_save_IFS+  case $as_dir in #(((+    '') as_dir=./ ;;+    */) ;;+    *) as_dir=$as_dir/ ;;+  esac+    test -r "$as_dir$0" && as_myself=$as_dir$0 && break+  done+IFS=$as_save_IFS++     ;;+esac+# We did not find ourselves, most probably we were run as `sh COMMAND'+# in which case we are not to be found in the path.+if test "x$as_myself" = x; then+  as_myself=$0+fi+if test ! -f "$as_myself"; then+  printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2+  exit 1+fi++++# as_fn_error STATUS ERROR [LINENO LOG_FD]+# ----------------------------------------+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the+# script with STATUS, using 1 if that was 0.+as_fn_error ()+{+  as_status=$1; test $as_status -eq 0 && as_status=1+  if test "$4"; then+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack+    printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4+  fi+  printf "%s\n" "$as_me: error: $2" >&2+  as_fn_exit $as_status+} # as_fn_error++++# as_fn_set_status STATUS+# -----------------------+# Set $? to STATUS, without forking.+as_fn_set_status ()+{+  return $1+} # as_fn_set_status++# as_fn_exit STATUS+# -----------------+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.+as_fn_exit ()+{+  set +e+  as_fn_set_status $1+  exit $1+} # as_fn_exit++# as_fn_unset VAR+# ---------------+# Portably unset VAR.+as_fn_unset ()+{+  { eval $1=; unset $1;}+}+as_unset=as_fn_unset++# as_fn_append VAR VALUE+# ----------------------+# Append the text in VALUE to the end of the definition contained in VAR. Take+# advantage of any shell optimizations that allow amortized linear growth over+# repeated appends, instead of the typical quadratic growth present in naive+# implementations.+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null+then :+  eval 'as_fn_append ()+  {+    eval $1+=\$2+  }'+else $as_nop+  as_fn_append ()+  {+    eval $1=\$$1\$2+  }+fi # as_fn_append++# as_fn_arith ARG...+# ------------------+# Perform arithmetic evaluation on the ARGs, and store the result in the+# global $as_val. Take advantage of shells that can avoid forks. The arguments+# must be portable across $(()) and expr.+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null+then :+  eval 'as_fn_arith ()+  {+    as_val=$(( $* ))+  }'+else $as_nop+  as_fn_arith ()+  {+    as_val=`expr "$@" || test $? -eq 1`+  }+fi # as_fn_arith+++if expr a : '\(a\)' >/dev/null 2>&1 &&+   test "X`expr 00001 : '.*\(...\)'`" = X001; then+  as_expr=expr+else+  as_expr=false+fi++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then+  as_basename=basename+else+  as_basename=false+fi++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then+  as_dirname=dirname+else+  as_dirname=false+fi++as_me=`$as_basename -- "$0" ||+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \+	 X"$0" : 'X\(//\)$' \| \+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||+printf "%s\n" X/"$0" |+    sed '/^.*\/\([^/][^/]*\)\/*$/{+	    s//\1/+	    q+	  }+	  /^X\/\(\/\/\)$/{+	    s//\1/+	    q+	  }+	  /^X\/\(\/\).*/{+	    s//\1/+	    q+	  }+	  s/.*/./; q'`++# Avoid depending upon Character Ranges.+as_cr_letters='abcdefghijklmnopqrstuvwxyz'+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'+as_cr_Letters=$as_cr_letters$as_cr_LETTERS+as_cr_digits='0123456789'+as_cr_alnum=$as_cr_Letters$as_cr_digits+++# Determine whether it's possible to make 'echo' print without a newline.+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed+# for compatibility with existing Makefiles.+ECHO_C= ECHO_N= ECHO_T=+case `echo -n x` in #(((((+-n*)+  case `echo 'xy\c'` in+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.+  xy)  ECHO_C='\c';;+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null+       ECHO_T='	';;+  esac;;+*)+  ECHO_N='-n';;+esac++# For backward compatibility with old third-party macros, we provide+# the shell variables $as_echo and $as_echo_n.  New code should use+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.+as_echo='printf %s\n'+as_echo_n='printf %s'++rm -f conf$$ conf$$.exe conf$$.file+if test -d conf$$.dir; then+  rm -f conf$$.dir/conf$$.file+else+  rm -f conf$$.dir+  mkdir conf$$.dir 2>/dev/null+fi+if (echo >conf$$.file) 2>/dev/null; then+  if ln -s conf$$.file conf$$ 2>/dev/null; then+    as_ln_s='ln -s'+    # ... but there are two gotchas:+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.+    # In both cases, we have to default to `cp -pR'.+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||+      as_ln_s='cp -pR'+  elif ln conf$$.file conf$$ 2>/dev/null; then+    as_ln_s=ln+  else+    as_ln_s='cp -pR'+  fi+else+  as_ln_s='cp -pR'+fi+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file+rmdir conf$$.dir 2>/dev/null+++# as_fn_mkdir_p+# -------------+# Create "$as_dir" as a directory, including parents if necessary.+as_fn_mkdir_p ()+{++  case $as_dir in #(+  -*) as_dir=./$as_dir;;+  esac+  test -d "$as_dir" || eval $as_mkdir_p || {+    as_dirs=+    while :; do+      case $as_dir in #(+      *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(+      *) as_qdir=$as_dir;;+      esac+      as_dirs="'$as_qdir' $as_dirs"+      as_dir=`$as_dirname -- "$as_dir" ||+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+	 X"$as_dir" : 'X\(//\)[^/]' \| \+	 X"$as_dir" : 'X\(//\)$' \| \+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||+printf "%s\n" X"$as_dir" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{+	    s//\1/+	    q+	  }+	  /^X\(\/\/\)[^/].*/{+	    s//\1/+	    q+	  }+	  /^X\(\/\/\)$/{+	    s//\1/+	    q+	  }+	  /^X\(\/\).*/{+	    s//\1/+	    q+	  }+	  s/.*/./; q'`+      test -d "$as_dir" && break+    done+    test -z "$as_dirs" || eval "mkdir $as_dirs"+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"+++} # as_fn_mkdir_p+if mkdir -p . 2>/dev/null; then+  as_mkdir_p='mkdir -p "$as_dir"'+else+  test -d ./-p && rmdir ./-p+  as_mkdir_p=false+fi+++# as_fn_executable_p FILE+# -----------------------+# Test if FILE is an executable regular file.+as_fn_executable_p ()+{+  test -f "$1" && test -x "$1"+} # as_fn_executable_p+as_test_x='test -x'+as_executable_p=as_fn_executable_p++# Sed expression to map a string onto a valid CPP name.+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"++# Sed expression to map a string onto a valid variable name.+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"+++exec 6>&1+## ----------------------------------- ##+## Main body of $CONFIG_STATUS script. ##+## ----------------------------------- ##+_ASEOF+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1+# Save the log message, to keep $0 and so on meaningful, and to+# report actual input values of CONFIG_FILES etc. instead of their+# values after options handling.+ac_log="+This file was extended by Haskell time package $as_me 1.16, which was+generated by GNU Autoconf 2.71.  Invocation command line was++  CONFIG_FILES    = $CONFIG_FILES+  CONFIG_HEADERS  = $CONFIG_HEADERS+  CONFIG_LINKS    = $CONFIG_LINKS+  CONFIG_COMMANDS = $CONFIG_COMMANDS+  $ $0 $@++on `(hostname || uname -n) 2>/dev/null | sed 1q`+"++_ACEOF+++case $ac_config_headers in *"+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;+esac+++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1+# Files that config.status was made for.+config_headers="$ac_config_headers"++_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1+ac_cs_usage="\+\`$as_me' instantiates files and other configuration actions+from templates according to the current configuration.  Unless the files+and actions are specified as TAGs, all are instantiated by default.++Usage: $0 [OPTION]... [TAG]...++  -h, --help       print this help, then exit+  -V, --version    print version number and configuration settings, then exit+      --config     print configuration, then exit+  -q, --quiet, --silent+                   do not print progress messages+  -d, --debug      don't remove temporary files+      --recheck    update $as_me by reconfiguring in the same conditions+      --header=FILE[:TEMPLATE]+                   instantiate the configuration header FILE++Configuration headers:+$config_headers++Report bugs to <ashley@semantic.org>."++_ACEOF+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1+ac_cs_config='$ac_cs_config_escaped'+ac_cs_version="\\+Haskell time package config.status 1.16+configured by $0, generated by GNU Autoconf 2.71,+  with options \\"\$ac_cs_config\\"++Copyright (C) 2021 Free Software Foundation, Inc.+This config.status script is free software; the Free Software Foundation+gives unlimited permission to copy, distribute and modify it."++ac_pwd='$ac_pwd'+srcdir='$srcdir'+test -n "\$AWK" || AWK=awk+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1+# The default lists apply if the user does not specify any file.+ac_need_defaults=:+while test $# != 0+do+  case $1 in+  --*=?*)+    ac_option=`expr "X$1" : 'X\([^=]*\)='`+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`+    ac_shift=:+    ;;+  --*=)+    ac_option=`expr "X$1" : 'X\([^=]*\)='`+    ac_optarg=+    ac_shift=:+    ;;+  *)+    ac_option=$1+    ac_optarg=$2+    ac_shift=shift+    ;;+  esac++  case $ac_option in+  # Handling of the options.+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)+    ac_cs_recheck=: ;;+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )+    printf "%s\n" "$ac_cs_version"; exit ;;+  --config | --confi | --conf | --con | --co | --c )+    printf "%s\n" "$ac_cs_config"; exit ;;+  --debug | --debu | --deb | --de | --d | -d )+    debug=: ;;+  --header | --heade | --head | --hea )+    $ac_shift+    case $ac_optarg in+    *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;+    esac+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"+    ac_need_defaults=false;;+  --he | --h)+    # Conflict between --help and --header+    as_fn_error $? "ambiguous option: \`$1'+Try \`$0 --help' for more information.";;+  --help | --hel | -h )+    printf "%s\n" "$ac_cs_usage"; exit ;;+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \+  | -silent | --silent | --silen | --sile | --sil | --si | --s)+    ac_cs_silent=: ;;++  # This is an error.+  -*) as_fn_error $? "unrecognized option: \`$1'+Try \`$0 --help' for more information." ;;++  *) as_fn_append ac_config_targets " $1"+     ac_need_defaults=false ;;++  esac+  shift+done++ac_configure_extra_args=++if $ac_cs_silent; then+  exec 6>/dev/null+  ac_configure_extra_args="$ac_configure_extra_args --silent"+fi++_ACEOF+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1+if \$ac_cs_recheck; then+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion+  shift+  \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6+  CONFIG_SHELL='$SHELL'+  export CONFIG_SHELL+  exec "\$@"+fi++_ACEOF+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1+exec 5>>config.log+{+  echo+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX+## Running $as_me. ##+_ASBOX+  printf "%s\n" "$ac_log"+} >&5++_ACEOF+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1+_ACEOF++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1++# Handling of arguments.+for ac_config_target in $ac_config_targets+do+  case $ac_config_target in+    "lib/include/HsTimeConfig.h") CONFIG_HEADERS="$CONFIG_HEADERS lib/include/HsTimeConfig.h" ;;++  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;+  esac+done+++# If the user did not use the arguments to specify the items to instantiate,+# then the envvar interface is used.  Set only those that are not.+# We use the long form for the default assignment because of an extremely+# bizarre bug on SunOS 4.1.3.+if $ac_need_defaults; then+  test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers+fi++# Have a temporary directory for convenience.  Make it in the build tree+# simply because there is no reason against having it here, and in addition,+# creating and moving files from /tmp can sometimes cause problems.+# Hook for its removal unless debugging.+# Note that there is a small window in which the directory will not be cleaned:+# after its creation but before its name has been assigned to `$tmp'.+$debug ||+{+  tmp= ac_tmp=+  trap 'exit_status=$?+  : "${ac_tmp:=$tmp}"+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status+' 0+  trap 'as_fn_exit 1' 1 2 13 15+}+# Create a (secure) tmp directory for tmp files.++{+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&+  test -d "$tmp"+}  ||+{+  tmp=./conf$$-$RANDOM+  (umask 077 && mkdir "$tmp")+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5+ac_tmp=$tmp++# Set up the scripts for CONFIG_HEADERS section.+# No need to generate them if there are no CONFIG_HEADERS.+# This happens for instance with `./config.status Makefile'.+if test -n "$CONFIG_HEADERS"; then+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||+BEGIN {+_ACEOF++# Transform confdefs.h into an awk script `defines.awk', embedded as+# here-document in config.status, that substitutes the proper values into+# config.h.in to produce config.h.++# Create a delimiter string that does not exist in confdefs.h, to ease+# handling of long lines.+ac_delim='%!_!# '+for ac_last_try in false false :; do+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`+  if test -z "$ac_tt"; then+    break+  elif $ac_last_try; then+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5+  else+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "+  fi+done++# For the awk script, D is an array of macro values keyed by name,+# likewise P contains macro parameters if any.  Preserve backslash+# newline sequences.++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*+sed -n '+s/.\{148\}/&'"$ac_delim"'/g+t rset+:rset+s/^[	 ]*#[	 ]*define[	 ][	 ]*/ /+t def+d+:def+s/\\$//+t bsnl+s/["\\]/\\&/g+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\+D["\1"]=" \3"/p+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2"/p+d+:bsnl+s/["\\]/\\&/g+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/P["\1"]="\2"\+D["\1"]=" \3\\\\\\n"\\/p+t cont+s/^ \('"$ac_word_re"'\)[	 ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p+t cont+d+:cont+n+s/.\{148\}/&'"$ac_delim"'/g+t clear+:clear+s/\\$//+t bsnlc+s/["\\]/\\&/g; s/^/"/; s/$/"/p+d+:bsnlc+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p+b cont+' <confdefs.h | sed '+s/'"$ac_delim"'/"\\\+"/g' >>$CONFIG_STATUS || ac_write_fail=1++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1+  for (key in D) D_is_set[key] = 1+  FS = ""+}+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {+  line = \$ 0+  split(line, arg, " ")+  if (arg[1] == "#") {+    defundef = arg[2]+    mac1 = arg[3]+  } else {+    defundef = substr(arg[1], 2)+    mac1 = arg[2]+  }+  split(mac1, mac2, "(") #)+  macro = mac2[1]+  prefix = substr(line, 1, index(line, defundef) - 1)+  if (D_is_set[macro]) {+    # Preserve the white space surrounding the "#".+    print prefix "define", macro P[macro] D[macro]+    next+  } else {+    # Replace #undef with comments.  This is necessary, for example,+    # in the case of _POSIX_SOURCE, which is predefined and required+    # on some systems where configure will not decide to define it.+    if (defundef == "undef") {+      print "/*", prefix defundef, macro, "*/"+      next+    }+  }+}+{ print }+_ACAWK+_ACEOF+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5+fi # test -n "$CONFIG_HEADERS"+++eval set X "    :H $CONFIG_HEADERS    "+shift+for ac_tag+do+  case $ac_tag in+  :[FHLC]) ac_mode=$ac_tag; continue;;+  esac+  case $ac_mode$ac_tag in+  :[FHL]*:*);;+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;+  :[FH]-) ac_tag=-:-;;+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;+  esac+  ac_save_IFS=$IFS+  IFS=:+  set x $ac_tag+  IFS=$ac_save_IFS+  shift+  ac_file=$1+  shift++  case $ac_mode in+  :L) ac_source=$1;;+  :[FH])+    ac_file_inputs=+    for ac_f+    do+      case $ac_f in+      -) ac_f="$ac_tmp/stdin";;+      *) # Look for the file first in the build tree, then in the source tree+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,+	 # because $ac_f cannot contain `:'.+	 test -f "$ac_f" ||+	   case $ac_f in+	   [\\/$]*) false;;+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;+	   esac ||+	   as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;+      esac+      case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac+      as_fn_append ac_file_inputs " '$ac_f'"+    done++    # Let's still pretend it is `configure' which instantiates (i.e., don't+    # use $as_me), people would be surprised to read:+    #    /* config.h.  Generated by config.status.  */+    configure_input='Generated from '`+	  printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'+	`' by configure.'+    if test x"$ac_file" != x-; then+      configure_input="$ac_file.  $configure_input"+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5+printf "%s\n" "$as_me: creating $ac_file" >&6;}+    fi+    # Neutralize special characters interpreted by sed in replacement strings.+    case $configure_input in #(+    *\&* | *\|* | *\\* )+       ac_sed_conf_input=`printf "%s\n" "$configure_input" |+       sed 's/[\\\\&|]/\\\\&/g'`;; #(+    *) ac_sed_conf_input=$configure_input;;+    esac++    case $ac_tag in+    *:-:* | *:-) cat >"$ac_tmp/stdin" \+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;+    esac+    ;;+  esac++  ac_dir=`$as_dirname -- "$ac_file" ||+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \+	 X"$ac_file" : 'X\(//\)[^/]' \| \+	 X"$ac_file" : 'X\(//\)$' \| \+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||+printf "%s\n" X"$ac_file" |+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{+	    s//\1/+	    q+	  }+	  /^X\(\/\/\)[^/].*/{+	    s//\1/+	    q+	  }+	  /^X\(\/\/\)$/{+	    s//\1/+	    q+	  }+	  /^X\(\/\).*/{+	    s//\1/+	    q+	  }+	  s/.*/./; q'`+  as_dir="$ac_dir"; as_fn_mkdir_p+  ac_builddir=.++case "$ac_dir" in+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;+*)+  ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`+  # A ".." for each directory in $ac_dir_suffix.+  ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`+  case $ac_top_builddir_sub in+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;+  esac ;;+esac+ac_abs_top_builddir=$ac_pwd+ac_abs_builddir=$ac_pwd$ac_dir_suffix+# for backward compatibility:+ac_top_builddir=$ac_top_build_prefix++case $srcdir in+  .)  # We are building in place.+    ac_srcdir=.+    ac_top_srcdir=$ac_top_builddir_sub+    ac_abs_top_srcdir=$ac_pwd ;;+  [\\/]* | ?:[\\/]* )  # Absolute name.+    ac_srcdir=$srcdir$ac_dir_suffix;+    ac_top_srcdir=$srcdir+    ac_abs_top_srcdir=$srcdir ;;+  *) # Relative name.+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix+    ac_top_srcdir=$ac_top_build_prefix$srcdir+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;+esac+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix+++  case $ac_mode in++  :H)+  #+  # CONFIG_HEADER+  #+  if test x"$ac_file" != x-; then+    {+      printf "%s\n" "/* $configure_input  */" >&1 \+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"+    } >"$ac_tmp/config.h" \+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}+    else+      rm -f "$ac_file"+      mv "$ac_tmp/config.h" "$ac_file" \+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5+    fi+  else+    printf "%s\n" "/* $configure_input  */" >&1 \+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \+      || as_fn_error $? "could not create -" "$LINENO" 5+  fi+ ;;+++  esac++done # for ac_tag+++as_fn_exit 0+_ACEOF+ac_clean_files=$ac_clean_files_save++test $ac_write_fail = 0 ||+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5+++# configure is writing to config.log, and then calls config.status.+# config.status does its own redirection, appending to config.log.+# Unfortunately, on DOS this fails, as config.log is still kept open+# by configure, so config.status won't be able to write to it; its+# output is simply discarded.  So we exec the FD to /dev/null,+# effectively closing config.log, so it can be properly (re)opened and+# appended to by config.status.  When coming back to configure, we+# need to make the FD available again.+if test "$no_create" != yes; then+  ac_cs_success=:+  ac_config_status_args=+  test "$silent" = yes &&+    ac_config_status_args="$ac_config_status_args --quiet"+  exec 5>/dev/null+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false+  exec 5>>config.log+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which+  # would make configure fail if this is the last instruction.+  $ac_cs_success || as_fn_exit 1+fi+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then+  { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}+fi+ 
configure.ac view
@@ -1,4 +1,4 @@-AC_INIT([Haskell time package],[1.12.2],[ashley@semantic.org],[time])+AC_INIT([Haskell time package],[1.16],[ashley@semantic.org],[time])  # Safety check: Ensure that we are in the correct source directory. AC_CONFIG_SRCDIR([lib/include/HsTime.h])@@ -17,6 +17,7 @@ AC_CHECK_FUNCS([gmtime_r localtime_r])  AC_CHECK_FUNCS([clock_gettime])+AC_CHECK_FUNCS([tzset])  AC_STRUCT_TM AC_STRUCT_TIMEZONE
lib/Data/Format.hs view
@@ -15,6 +15,7 @@     literalFormat,     specialCaseShowFormat,     specialCaseFormat,+    specialCaseReadFormat,     optionalFormat,     casesFormat,     optionalSignFormat,@@ -52,7 +53,7 @@     pVoid :: f Void     (<++>) :: f a -> f b -> f (Either a b) -parseReader :: (MonadFail m) => ReadP t -> String -> m t+parseReader :: MonadFail m => ReadP t -> String -> m t parseReader readp s =     case [t | (t, "") <- readP_to_S readp s] of         [t] -> return t@@ -75,7 +76,7 @@         Nothing -> error "formatShow: bad value"  -- | Parse a value in the format-formatParseM :: (MonadFail m) => Format t -> String -> m t+formatParseM :: MonadFail m => Format t -> String -> m t formatParseM format = parseReader $ formatReadP format  instance IsoVariant Format where@@ -119,7 +120,8 @@                 a <- ra                 b <- rb                 return (a, b)-            in MkFormat sab rab+        in+            MkFormat sab rab     (MkFormat sa ra) **> (MkFormat sb rb) =         let             s b = do@@ -129,7 +131,8 @@             r = do                 ra                 rb-            in MkFormat s r+        in+            MkFormat s r     (MkFormat sa ra) <** (MkFormat sb rb) =         let             s a = do@@ -140,7 +143,8 @@                 a <- ra                 rb                 return a-            in MkFormat s r+        in+            MkFormat s r  instance Summish Format where     pVoid = MkFormat absurd pfail@@ -149,7 +153,8 @@             sab (Left a) = sa a             sab (Right b) = sb b             rab = (fmap Left ra) +++ (fmap Right rb)-            in MkFormat sab rab+        in+            MkFormat sab rab  literalFormat :: String -> Format () literalFormat s = MkFormat{formatShowM = \_ -> Just s, formatReadP = string s >> return ()}@@ -160,7 +165,8 @@         s' t             | t == val = Just str         s' t = s t-        in MkFormat s' r+    in+        MkFormat s' r  specialCaseFormat :: Eq a => (a, String) -> Format a -> Format a specialCaseFormat (val, str) (MkFormat s r) =@@ -168,9 +174,17 @@         s' t             | t == val = Just str         s' t = s t-        r' = (string str >> return val) +++ r-        in MkFormat s' r'+        r' = r <++ (string str >> return val)+    in+        MkFormat s' r' +specialCaseReadFormat :: (a, String) -> Format a -> Format a+specialCaseReadFormat (val, str) (MkFormat s r) =+    let+        r' = r <++ (string str >> return val)+    in+        MkFormat s r'+ optionalFormat :: Eq a => a -> Format a -> Format a optionalFormat val = specialCaseFormat (val, "") @@ -180,7 +194,8 @@         s t = lookup t pairs         r [] = pfail         r ((v, str) : pp) = (string str >> return v) <++ r pp-        in MkFormat s $ r pairs+    in+        MkFormat s $ r pairs  optionalSignFormat :: (Eq t, Num t) => Format t optionalSignFormat = casesFormat [(1, ""), (1, "+"), (0, ""), (-1, "-")]@@ -204,45 +219,55 @@     digits <-         case mdigitcount of             Just digitcount -> count digitcount $ satisfy isDigit-            Nothing -> many1 $ satisfy isDigit+            Nothing -> munch1 isDigit     moredigits <-         case allowDecimal of             False -> return ""             True ->                 option "" $ do                     _ <- char '.' +++ char ','-                    dd <- many1 (satisfy isDigit)+                    dd <- munch1 isDigit                     return $ '.' : dd     return $ sign $ read $ digits ++ moredigits -zeroPad :: Maybe Int -> String -> String-zeroPad Nothing s = s-zeroPad (Just i) s = replicate (i - length s) '0' ++ s+zeroPad :: Maybe Int -> String -> Maybe String+zeroPad Nothing s = Just s+zeroPad (Just i) s =+    let+        padCount = i - length s+    in+        if padCount >= 0+            then Just $ replicate padCount '0' ++ s+            else Nothing  trimTrailing :: String -> String-trimTrailing "" = ""-trimTrailing "." = ""-trimTrailing s-    | last s == '0' = trimTrailing $ init s-trimTrailing s = s+trimTrailing =+    (\s -> if s == "." then "" else s)+        . reverse+        . dropWhile (== '0')+        . reverse  showNumber :: Show t => SignOption -> Maybe Int -> t -> Maybe String showNumber signOpt mdigitcount t =     let-        showIt str =+        showIt str = do             let                 (intPart, decPart) = break ((==) '.') str-                in (zeroPad mdigitcount intPart) ++ trimTrailing decPart-        in case show t of+            paddedIntPart <- zeroPad mdigitcount intPart+            return $ paddedIntPart ++ trimTrailing decPart+    in+        case show t of             ('-' : str) ->                 case signOpt of                     NoSign -> Nothing-                    _ -> Just $ '-' : showIt str-            str ->-                Just $-                    case signOpt of-                        PosNegSign -> '+' : showIt str-                        _ -> showIt str+                    _ -> do+                        s <- showIt str+                        return $ '-' : s+            str -> do+                s <- showIt str+                return $ case signOpt of+                    PosNegSign -> '+' : s+                    _ -> s  integerFormat :: (Show t, Read t, Num t) => SignOption -> Maybe Int -> Format t integerFormat signOpt mdigitcount = MkFormat (showNumber signOpt mdigitcount) (readNumber signOpt mdigitcount False)
lib/Data/Time/Calendar.hs view
@@ -1,14 +1,78 @@ {-# LANGUAGE Safe #-}  module Data.Time.Calendar (-    module Data.Time.Calendar.Days,+    -- * Days+    Day (..),+    addDays,+    diffDays,++    -- * DayPeriod+    DayPeriod (..),+    periodAllDays,+    periodIn,+    periodLength,+    periodFromDay,+    periodToDay,+    periodToDayClip,+    periodToDayValid,++    -- * Calendar Duration     module Data.Time.Calendar.CalendarDiffDays,-    module Data.Time.Calendar.Gregorian,-    module Data.Time.Calendar.Week,++    -- * Year, month and day+    Year,+    pattern CommonEra,+    pattern BeforeCommonEra,+    MonthOfYear,+    pattern January,+    pattern February,+    pattern March,+    pattern April,+    pattern May,+    pattern June,+    pattern July,+    pattern August,+    pattern September,+    pattern October,+    pattern November,+    pattern December,+    DayOfMonth,++    -- * Gregorian calendar+    toGregorian,+    fromGregorian,+    pattern YearMonthDay,+    fromGregorianValid,+    showGregorian,+    gregorianMonthLength,+    -- calendrical arithmetic+    -- e.g. "one month after March 31st"+    addGregorianMonthsClip,+    addGregorianMonthsRollOver,+    addGregorianYearsClip,+    addGregorianYearsRollOver,+    addGregorianDurationClip,+    addGregorianDurationRollOver,+    diffGregorianDurationClip,+    diffGregorianDurationRollOver,+    -- re-exported from OrdinalDate+    isLeapYear,++    -- * Week+    DayOfWeek (..),+    dayOfWeek,+    dayOfWeekDiff,+    firstDayOfWeekOnAfter,+    weekAllDays,+    weekFirstDay,+    weekLastDay, ) where  import Data.Time.Calendar.CalendarDiffDays import Data.Time.Calendar.Days import Data.Time.Calendar.Gregorian+import Data.Time.Calendar.MonthDay+import Data.Time.Calendar.OrdinalDate+import Data.Time.Calendar.Types import Data.Time.Calendar.Week import Data.Time.Format ()
lib/Data/Time/Calendar/CalendarDiffDays.hs view
@@ -1,24 +1,22 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-} -module Data.Time.Calendar.CalendarDiffDays (-    -- * Calendar Duration-    module Data.Time.Calendar.CalendarDiffDays,-) where+module Data.Time.Calendar.CalendarDiffDays where  import Control.DeepSeq import Data.Data+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  data CalendarDiffDays = CalendarDiffDays     { cdMonths :: Integer     , cdDays :: Integer     }-    deriving-        ( Eq-        , -- | @since 1.9.2-          Data-        , -- | @since 1.9.2-          Typeable-        )+    deriving (Eq, Typeable, Data, Generic, TH.Lift)  instance NFData CalendarDiffDays where     rnf (CalendarDiffDays m d) = rnf m `seq` rnf d `seq` ()@@ -31,9 +29,6 @@ instance Monoid CalendarDiffDays where     mempty = CalendarDiffDays 0 0     mappend = (<>)--instance Show CalendarDiffDays where-    show (CalendarDiffDays m d) = "P" ++ show m ++ "M" ++ show d ++ "D"  calendarDay :: CalendarDiffDays calendarDay = CalendarDiffDays 0 1
lib/Data/Time/Calendar/Days.hs view
@@ -1,29 +1,24 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-} -module Data.Time.Calendar.Days (-    -- * Days-    Day (..),-    addDays,-    diffDays,--    -- * DayPeriod-    DayPeriod (..),-    periodAllDays,-    periodLength,-    periodFromDay,-    periodToDay,-    periodToDayValid,-) where+module Data.Time.Calendar.Days where  import Control.DeepSeq import Data.Data import Data.Ix+import Data.Time.Calendar.Private+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  -- | The Modified Julian Day is a standard count of days, with zero being the day 1858-11-17. newtype Day = ModifiedJulianDay     { toModifiedJulianDay :: Integer     }-    deriving (Eq, Ord, Data, Typeable)+    deriving (Eq, Ord, Typeable, Data, Generic, TH.Lift)  instance NFData Day where     rnf (ModifiedJulianDay a) = rnf a@@ -70,6 +65,12 @@ periodAllDays :: DayPeriod p => p -> [Day] periodAllDays p = [periodFirstDay p .. periodLastDay p] +-- | Test whether a day is in a given period.+--+-- @since 1.16+periodIn :: DayPeriod p => p -> Day -> Bool+periodIn p d = (d >= periodFirstDay p) && (d <= periodLastDay p)+ -- | The number of days in this period. -- -- @since 1.12.1@@ -82,10 +83,12 @@ -- -- @since 1.12.1 periodFromDay :: DayPeriod p => Day -> (p, Int)-periodFromDay d = let-    p = dayPeriod d-    dt = succ $ fromInteger $ diffDays d $ periodFirstDay p-    in (p, dt)+periodFromDay d =+    let+        p = dayPeriod d+        dt = succ $ fromInteger $ diffDays d $ periodFirstDay p+    in+        (p, dt)  -- | Inverse of 'periodFromDay'. --@@ -93,13 +96,21 @@ periodToDay :: DayPeriod p => p -> Int -> Day periodToDay p i = addDays (toInteger $ pred i) $ periodFirstDay p +-- | Inverse of 'periodFromDay', clipping the day number to the period.+--+-- @since 1.15+periodToDayClip :: DayPeriod p => p -> Int -> Day+periodToDayClip p i = periodToDay p $ clip 1 (periodLength p) i+ -- | Validating inverse of 'periodFromDay'. -- -- @since 1.12.1 periodToDayValid :: DayPeriod p => p -> Int -> Maybe Day-periodToDayValid p i = let-    d = periodToDay p i-    in if fst (periodFromDay d) == p then Just d else Nothing+periodToDayValid p i =+    let+        d = periodToDay p i+    in+        if fst (periodFromDay d) == p then Just d else Nothing  instance DayPeriod Day where     periodFirstDay = id
lib/Data/Time/Calendar/Gregorian.hs view
@@ -1,55 +1,14 @@ {-# LANGUAGE Safe #-}-{-# LANGUAGE TypeSynonymInstances #-}  {-# OPTIONS -fno-warn-orphans #-} -module Data.Time.Calendar.Gregorian (-    -- * Year, month and day-    Year,-    pattern CommonEra,-    pattern BeforeCommonEra,-    MonthOfYear,-    pattern January,-    pattern February,-    pattern March,-    pattern April,-    pattern May,-    pattern June,-    pattern July,-    pattern August,-    pattern September,-    pattern October,-    pattern November,-    pattern December,-    DayOfMonth,--    -- * Gregorian calendar-    toGregorian,-    fromGregorian,-    pattern YearMonthDay,-    fromGregorianValid,-    showGregorian,-    gregorianMonthLength,-    -- calendrical arithmetic-    -- e.g. "one month after March 31st"-    addGregorianMonthsClip,-    addGregorianMonthsRollOver,-    addGregorianYearsClip,-    addGregorianYearsRollOver,-    addGregorianDurationClip,-    addGregorianDurationRollOver,-    diffGregorianDurationClip,-    diffGregorianDurationRollOver,-    -- re-exported from OrdinalDate-    isLeapYear,-) where+module Data.Time.Calendar.Gregorian where  import Data.Time.Calendar.CalendarDiffDays import Data.Time.Calendar.Days import Data.Time.Calendar.MonthDay import Data.Time.Calendar.OrdinalDate import Data.Time.Calendar.Private-import Data.Time.Calendar.Types  -- | Convert to proleptic Gregorian calendar. toGregorian :: Day -> (Year, MonthOfYear, DayOfMonth)@@ -131,48 +90,58 @@ addGregorianDurationRollOver :: CalendarDiffDays -> Day -> Day addGregorianDurationRollOver (CalendarDiffDays m d) day = addDays d $ addGregorianMonthsRollOver m day --- | Calendrical difference, with as many whole months as possible+-- | Calendrical difference, with as many whole months as possible.+-- Has the property @addGregorianDurationClip (diffGregorianDurationClip d2 d1) d1 = d2@.+-- For example, 2027-03-01 - 2027-01-31 = 1 month and 1 day. diffGregorianDurationClip :: Day -> Day -> CalendarDiffDays-diffGregorianDurationClip day2 day1 = let-    (y1, m1, d1) = toGregorian day1-    (y2, m2, d2) = toGregorian day2-    ym1 = y1 * 12 + toInteger m1-    ym2 = y2 * 12 + toInteger m2-    ymdiff = ym2 - ym1-    ymAllowed =-        if day2 >= day1-            then-                if d2 >= d1-                    then ymdiff-                    else ymdiff - 1-            else-                if d2 <= d1-                    then ymdiff-                    else ymdiff + 1-    dayAllowed = addGregorianDurationClip (CalendarDiffDays ymAllowed 0) day1-    in CalendarDiffDays ymAllowed $ diffDays day2 dayAllowed+diffGregorianDurationClip day2 day1 =+    let+        (y1, m1, d1) = toGregorian day1+        (y2, m2, d2) = toGregorian day2+        ym1 = y1 * 12 + toInteger m1+        ym2 = y2 * 12 + toInteger m2+        ymdiff = ym2 - ym1+        ymAllowed =+            if day2 >= day1+                then+                    if d2 >= d1+                        then ymdiff+                        else ymdiff - 1+                else+                    if d2 <= d1+                        then ymdiff+                        else ymdiff + 1+        dayAllowed = addGregorianDurationClip (CalendarDiffDays ymAllowed 0) day1+    in+        CalendarDiffDays ymAllowed $ diffDays day2 dayAllowed  -- | Calendrical difference, with as many whole months as possible.--- Same as 'diffGregorianDurationClip' for positive durations.+-- Has the property @addGregorianDurationRollOver (diffGregorianDurationRollOver d2 d1) d1 = d2@.+-- For example, 2027-03-01 - 2027-01-31 = 29 days. diffGregorianDurationRollOver :: Day -> Day -> CalendarDiffDays-diffGregorianDurationRollOver day2 day1 = let-    (y1, m1, d1) = toGregorian day1-    (y2, m2, d2) = toGregorian day2-    ym1 = y1 * 12 + toInteger m1-    ym2 = y2 * 12 + toInteger m2-    ymdiff = ym2 - ym1-    ymAllowed =+diffGregorianDurationRollOver day2 day1 =+    let+        (y1, m1, _) = toGregorian day1+        (y2, m2, _) = toGregorian day2+        ym1 = y1 * 12 + toInteger m1+        ym2 = y2 * 12 + toInteger m2+        ymdiff = ym2 - ym1+        findpos mdiff =+            let+                dayAllowed = addGregorianDurationRollOver (CalendarDiffDays mdiff 0) day1+                dd = diffDays day2 dayAllowed+            in+                if dd >= 0 then CalendarDiffDays mdiff dd else findpos (pred mdiff)+        findneg mdiff =+            let+                dayAllowed = addGregorianDurationRollOver (CalendarDiffDays mdiff 0) day1+                dd = diffDays day2 dayAllowed+            in+                if dd <= 0 then CalendarDiffDays mdiff dd else findpos (succ mdiff)+    in         if day2 >= day1-            then-                if d2 >= d1-                    then ymdiff-                    else ymdiff - 1-            else-                if d2 <= d1-                    then ymdiff-                    else ymdiff + 1-    dayAllowed = addGregorianDurationRollOver (CalendarDiffDays ymAllowed 0) day1-    in CalendarDiffDays ymAllowed $ diffDays day2 dayAllowed+            then findpos ymdiff+            else findneg ymdiff  -- orphan instance instance Show Day where
lib/Data/Time/Calendar/Julian.hs view
@@ -17,6 +17,8 @@     pattern December,     DayOfMonth,     DayOfYear,++    -- * Year and day format     module Data.Time.Calendar.JulianYearDay,     toJulian,     fromJulian,@@ -125,43 +127,49 @@  -- | Calendrical difference, with as many whole months as possible diffJulianDurationClip :: Day -> Day -> CalendarDiffDays-diffJulianDurationClip day2 day1 = let-    (y1, m1, d1) = toJulian day1-    (y2, m2, d2) = toJulian day2-    ym1 = y1 * 12 + toInteger m1-    ym2 = y2 * 12 + toInteger m2-    ymdiff = ym2 - ym1-    ymAllowed =-        if day2 >= day1-            then-                if d2 >= d1-                    then ymdiff-                    else ymdiff - 1-            else-                if d2 <= d1-                    then ymdiff-                    else ymdiff + 1-    dayAllowed = addJulianDurationClip (CalendarDiffDays ymAllowed 0) day1-    in CalendarDiffDays ymAllowed $ diffDays day2 dayAllowed+diffJulianDurationClip day2 day1 =+    let+        (y1, m1, d1) = toJulian day1+        (y2, m2, d2) = toJulian day2+        ym1 = y1 * 12 + toInteger m1+        ym2 = y2 * 12 + toInteger m2+        ymdiff = ym2 - ym1+        ymAllowed =+            if day2 >= day1+                then+                    if d2 >= d1+                        then ymdiff+                        else ymdiff - 1+                else+                    if d2 <= d1+                        then ymdiff+                        else ymdiff + 1+        dayAllowed = addJulianDurationClip (CalendarDiffDays ymAllowed 0) day1+    in+        CalendarDiffDays ymAllowed $ diffDays day2 dayAllowed  -- | Calendrical difference, with as many whole months as possible.--- Same as 'diffJulianDurationClip' for positive durations. diffJulianDurationRollOver :: Day -> Day -> CalendarDiffDays-diffJulianDurationRollOver day2 day1 = let-    (y1, m1, d1) = toJulian day1-    (y2, m2, d2) = toJulian day2-    ym1 = y1 * 12 + toInteger m1-    ym2 = y2 * 12 + toInteger m2-    ymdiff = ym2 - ym1-    ymAllowed =+diffJulianDurationRollOver day2 day1 =+    let+        (y1, m1, _) = toJulian day1+        (y2, m2, _) = toJulian day2+        ym1 = y1 * 12 + toInteger m1+        ym2 = y2 * 12 + toInteger m2+        ymdiff = ym2 - ym1+        findpos mdiff =+            let+                dayAllowed = addJulianDurationRollOver (CalendarDiffDays mdiff 0) day1+                dd = diffDays day2 dayAllowed+            in+                if dd >= 0 then CalendarDiffDays mdiff dd else findpos (pred mdiff)+        findneg mdiff =+            let+                dayAllowed = addJulianDurationRollOver (CalendarDiffDays mdiff 0) day1+                dd = diffDays day2 dayAllowed+            in+                if dd <= 0 then CalendarDiffDays mdiff dd else findpos (succ mdiff)+    in         if day2 >= day1-            then-                if d2 >= d1-                    then ymdiff-                    else ymdiff - 1-            else-                if d2 <= d1-                    then ymdiff-                    else ymdiff + 1-    dayAllowed = addJulianDurationRollOver (CalendarDiffDays ymAllowed 0) day1-    in CalendarDiffDays ymAllowed $ diffDays day2 dayAllowed+            then findpos ymdiff+            else findneg ymdiff
lib/Data/Time/Calendar/JulianYearDay.hs view
@@ -1,9 +1,6 @@ {-# LANGUAGE Safe #-} -module Data.Time.Calendar.JulianYearDay (-    -- * Year and day format-    module Data.Time.Calendar.JulianYearDay,-) where+module Data.Time.Calendar.JulianYearDay where  import Data.Time.Calendar.Days import Data.Time.Calendar.Private
lib/Data/Time/Calendar/Month.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-}  -- | An absolute count of common calendar months.@@ -18,12 +19,19 @@ import Data.Time.Calendar.Days import Data.Time.Calendar.Gregorian import Data.Time.Calendar.Private+import Data.Time.Calendar.Types+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif import Text.ParserCombinators.ReadP import Text.Read  -- | An absolute count of common calendar months. -- Number is equal to @(year * 12) + (monthOfYear - 1)@.-newtype Month = MkMonth Integer deriving (Eq, Ord, Data, Typeable)+newtype Month = MkMonth Integer deriving (Eq, Ord, Typeable, Data, Generic, TH.Lift)  instance NFData Month where     rnf (MkMonth m) = rnf m@@ -72,7 +80,7 @@ -- Invalid months of year will be clipped to the correct range. pattern YearMonth :: Year -> MonthOfYear -> Month pattern YearMonth y my <--    MkMonth ((\m -> divMod' m 12) -> (y, succ . fromInteger -> my))+    MkMonth ((\m -> divMod' m 12) -> (y, (succ . fromInteger -> my)))     where         YearMonth y my = MkMonth $ (y * 12) + toInteger (pred $ clip 1 12 my) @@ -89,7 +97,7 @@ pattern MonthDay m dm <-     (periodFromDay -> (m, dm))     where-        MonthDay = periodToDay+        MonthDay = periodToDayClip  fromMonthDayValid :: Month -> DayOfMonth -> Maybe Day fromMonthDayValid = periodToDayValid
lib/Data/Time/Calendar/OrdinalDate.hs view
@@ -115,18 +115,20 @@     -- Monday is 1, Sunday is 7 (as @%u@ in 'Data.Time.Format.formatTime').     Int ->     Day-fromMondayStartWeek year w d = let-    -- first day of the year-    firstDay = fromOrdinalDate year 1-    -- 0-based year day of first monday of the year-    zbFirstMonday = (5 - toModifiedJulianDay firstDay) `mod` 7-    -- 0-based week of year-    zbWeek = w - 1-    -- 0-based day of week-    zbDay = d - 1-    -- 0-based day in year-    zbYearDay = zbFirstMonday + 7 * toInteger zbWeek + toInteger zbDay-    in addDays zbYearDay firstDay+fromMondayStartWeek year w d =+    let+        -- first day of the year+        firstDay = fromOrdinalDate year 1+        -- 0-based year day of first monday of the year+        zbFirstMonday = (5 - toModifiedJulianDay firstDay) `mod` 7+        -- 0-based week of year+        zbWeek = w - 1+        -- 0-based day of week+        zbDay = d - 1+        -- 0-based day in year+        zbYearDay = zbFirstMonday + 7 * toInteger zbWeek + toInteger zbDay+    in+        addDays zbYearDay firstDay  fromMondayStartWeekValid ::     -- | Year.@@ -173,18 +175,20 @@     -- Sunday is 0, Saturday is 6 (as @%w@ in 'Data.Time.Format.formatTime').     Int ->     Day-fromSundayStartWeek year w d = let-    -- first day of the year-    firstDay = fromOrdinalDate year 1-    -- 0-based year day of first monday of the year-    zbFirstSunday = (4 - toModifiedJulianDay firstDay) `mod` 7-    -- 0-based week of year-    zbWeek = w - 1-    -- 0-based day of week-    zbDay = d-    -- 0-based day in year-    zbYearDay = zbFirstSunday + 7 * toInteger zbWeek + toInteger zbDay-    in addDays zbYearDay firstDay+fromSundayStartWeek year w d =+    let+        -- first day of the year+        firstDay = fromOrdinalDate year 1+        -- 0-based year day of first monday of the year+        zbFirstSunday = (4 - toModifiedJulianDay firstDay) `mod` 7+        -- 0-based week of year+        zbWeek = w - 1+        -- 0-based day of week+        zbDay = d+        -- 0-based day in year+        zbYearDay = zbFirstSunday + 7 * toInteger zbWeek + toInteger zbDay+    in+        addDays zbYearDay firstDay  fromSundayStartWeekValid ::     -- | Year.
lib/Data/Time/Calendar/Private.hs view
@@ -36,29 +36,29 @@     | x < 10 = '0' : (showFixed True x) show2Fixed x = showFixed True x -show2 :: (ShowPadded t) => t -> String+show2 :: ShowPadded t => t -> String show2 = showPaddedNum $ Pad 2 '0' -show3 :: (ShowPadded t) => t -> String+show3 :: ShowPadded t => t -> String show3 = showPaddedNum $ Pad 3 '0' -show4 :: (ShowPadded t) => t -> String+show4 :: ShowPadded t => t -> String show4 = showPaddedNum $ Pad 4 '0' -mod100 :: (Integral i) => i -> i+mod100 :: Integral i => i -> i mod100 x = mod x 100 -div100 :: (Integral i) => i -> i+div100 :: Integral i => i -> i div100 x = div x 100 -clip :: (Ord t) => t -> t -> t -> t+clip :: Ord t => t -> t -> t -> t clip a _ x     | x < a = a clip _ b x     | x > b = b clip _ _ x = x -clipValid :: (Ord t) => t -> t -> t -> Maybe t+clipValid :: Ord t => t -> t -> t -> Maybe t clipValid a _ x     | x < a = Nothing clipValid _ b x@@ -74,6 +74,8 @@     f = quotBy d n  quotRemBy :: (Real a, Integral b) => a -> a -> (b, a)-quotRemBy d n = let-    f = quotBy d n-    in (f, n - (fromIntegral f) * d)+quotRemBy d n =+    let+        f = quotBy d n+    in+        (f, n - (fromIntegral f) * d)
lib/Data/Time/Calendar/Quarter.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-}  -- | Year quarters.@@ -22,11 +23,17 @@ import Data.Time.Calendar.Month import Data.Time.Calendar.Private import Data.Time.Calendar.Types+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif import Text.ParserCombinators.ReadP import Text.Read  -- | Quarters of each year. Each quarter corresponds to three months.-data QuarterOfYear = Q1 | Q2 | Q3 | Q4 deriving (Eq, Ord, Data, Typeable, Read, Show, Ix)+data QuarterOfYear = Q1 | Q2 | Q3 | Q4 deriving (Eq, Ord, Read, Show, Ix, Typeable, Data, Generic, TH.Lift)  -- | maps Q1..Q4 to 1..4 instance Enum QuarterOfYear where@@ -53,7 +60,7 @@  -- | An absolute count of year quarters. -- Number is equal to @(year * 4) + (quarterOfYear - 1)@.-newtype Quarter = MkQuarter Integer deriving (Eq, Ord, Data, Typeable)+newtype Quarter = MkQuarter Integer deriving (Eq, Ord, Typeable, Data, Generic, TH.Lift)  instance NFData Quarter where     rnf (MkQuarter m) = rnf m@@ -111,7 +118,7 @@ -- | Bidirectional abstract constructor. pattern YearQuarter :: Year -> QuarterOfYear -> Quarter pattern YearQuarter y qy <--    MkQuarter ((\q -> divMod' q 4) -> (y, toEnum . succ . fromInteger -> qy))+    MkQuarter ((\q -> divMod' q 4) -> (y, (toEnum . succ . fromInteger -> qy)))     where         YearQuarter y qy = MkQuarter $ (y * 4) + toInteger (pred $ fromEnum qy) @@ -140,6 +147,6 @@ pattern QuarterDay q dq <-     (periodFromDay -> (q, dq))     where-        QuarterDay = periodToDay+        QuarterDay = periodToDayClip  {-# COMPLETE QuarterDay #-}
lib/Data/Time/Calendar/Week.hs view
@@ -1,21 +1,19 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-} -module Data.Time.Calendar.Week (-    -- * Week-    DayOfWeek (..),-    dayOfWeek,-    dayOfWeekDiff,-    firstDayOfWeekOnAfter,-    weekAllDays,-    weekFirstDay,-    weekLastDay,-) where+module Data.Time.Calendar.Week where  import Control.DeepSeq import Data.Data import Data.Fixed import Data.Ix import Data.Time.Calendar.Days+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  data DayOfWeek     = Monday@@ -25,7 +23,7 @@     | Friday     | Saturday     | Sunday-    deriving (Eq, Show, Read, Data, Typeable, Ord, Ix)+    deriving (Eq, Ord, Ix, Show, Read, Typeable, Data, Generic, TH.Lift)  instance NFData DayOfWeek where     rnf Monday = ()
lib/Data/Time/Calendar/WeekDate.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-}  -- | Week-based calendars@@ -23,20 +24,27 @@ import Data.Time.Calendar.OrdinalDate import Data.Time.Calendar.Private import Data.Time.Calendar.Week+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  data FirstWeekType     = -- | first week is the first whole week of the year       FirstWholeWeek     | -- | first week is the first week with four days in the year       FirstMostWeek-    deriving (Eq)+    deriving (Eq, TH.Lift)  firstDayOfWeekCalendar :: FirstWeekType -> DayOfWeek -> Year -> Day-firstDayOfWeekCalendar wt dow year = let-    jan1st = fromOrdinalDate year 1-    in case wt of-        FirstWholeWeek -> firstDayOfWeekOnAfter dow jan1st-        FirstMostWeek -> firstDayOfWeekOnAfter dow $ addDays (-3) jan1st+firstDayOfWeekCalendar wt dow year =+    let+        jan1st = fromOrdinalDate year 1+    in+        case wt of+            FirstWholeWeek -> firstDayOfWeekOnAfter dow jan1st+            FirstMostWeek -> firstDayOfWeekOnAfter dow $ addDays (-3) jan1st  -- | Convert to the given kind of "week calendar". -- Note that the year number matches the weeks, and so is not always the same as the Gregorian year number.@@ -47,18 +55,20 @@     DayOfWeek ->     Day ->     (Year, WeekOfYear, DayOfWeek)-toWeekCalendar wt ws d = let-    dw = dayOfWeek d-    (y0, _) = toOrdinalDate d-    j1p = firstDayOfWeekCalendar wt ws $ pred y0-    j1 = firstDayOfWeekCalendar wt ws y0-    j1s = firstDayOfWeekCalendar wt ws $ succ y0-    in if d < j1-        then (pred y0, succ $ div (fromInteger $ diffDays d j1p) 7, dw)-        else-            if d < j1s-                then (y0, succ $ div (fromInteger $ diffDays d j1) 7, dw)-                else (succ y0, succ $ div (fromInteger $ diffDays d j1s) 7, dw)+toWeekCalendar wt ws d =+    let+        dw = dayOfWeek d+        (y0, _) = toOrdinalDate d+        j1p = firstDayOfWeekCalendar wt ws $ pred y0+        j1 = firstDayOfWeekCalendar wt ws y0+        j1s = firstDayOfWeekCalendar wt ws $ succ y0+    in+        if d < j1+            then (pred y0, succ $ div (fromInteger $ diffDays d j1p) 7, dw)+            else+                if d < j1s+                    then (y0, succ $ div (fromInteger $ diffDays d j1) 7, dw)+                    else (succ y0, succ $ div (fromInteger $ diffDays d j1s) 7, dw)  -- | Convert from the given kind of "week calendar". -- Invalid week and day values will be clipped to the correct range.@@ -71,15 +81,17 @@     WeekOfYear ->     DayOfWeek ->     Day-fromWeekCalendar wt ws y wy dw = let-    d1 :: Day-    d1 = firstDayOfWeekCalendar wt ws y-    wy' = clip 1 53 wy-    getday :: WeekOfYear -> Day-    getday wy'' = addDays (toInteger $ (pred wy'' * 7) + (dayOfWeekDiff dw ws)) d1-    d1s = firstDayOfWeekCalendar wt ws $ succ y-    day = getday wy'-    in if wy' == 53 then if day >= d1s then getday 52 else day else day+fromWeekCalendar wt ws y wy dw =+    let+        d1 :: Day+        d1 = firstDayOfWeekCalendar wt ws y+        wy' = clip 1 53 wy+        getday :: WeekOfYear -> Day+        getday wy'' = addDays (toInteger $ (pred wy'' * 7) + (dayOfWeekDiff dw ws)) d1+        d1s = firstDayOfWeekCalendar wt ws $ succ y+        day = getday wy'+    in+        if wy' == 53 then if day >= d1s then getday 52 else day else day  -- | Convert from the given kind of "week calendar". -- Invalid week and day values will return Nothing.@@ -92,17 +104,21 @@     WeekOfYear ->     DayOfWeek ->     Maybe Day-fromWeekCalendarValid wt ws y wy dw = let-    d = fromWeekCalendar wt ws y wy dw-    in if toWeekCalendar wt ws d == (y, wy, dw) then Just d else Nothing+fromWeekCalendarValid wt ws y wy dw =+    let+        d = fromWeekCalendar wt ws y wy dw+    in+        if toWeekCalendar wt ws d == (y, wy, dw) then Just d else Nothing  -- | Convert to ISO 8601 Week Date format. First element of result is year, second week number (1-53), third day of week (1 for Monday to 7 for Sunday). -- Note that \"Week\" years are not quite the same as Gregorian years, as the first day of the year is always a Monday. -- The first week of a year is the first week to contain at least four days in the corresponding Gregorian year. toWeekDate :: Day -> (Year, WeekOfYear, Int)-toWeekDate d = let-    (y, wy, dw) = toWeekCalendar FirstMostWeek Monday d-    in (y, wy, fromEnum dw)+toWeekDate d =+    let+        (y, wy, dw) = toWeekCalendar FirstMostWeek Monday d+    in+        (y, wy, fromEnum dw)  -- | Convert from ISO 8601 Week Date format. First argument is year, second week number (1-52 or 53), third day of week (1 for Monday to 7 for Sunday). -- Invalid week and day values will be clipped to the correct range.@@ -113,7 +129,7 @@ -- Invalid week values will be clipped to the correct range. pattern YearWeekDay :: Year -> WeekOfYear -> DayOfWeek -> Day pattern YearWeekDay y wy dw <--    (toWeekDate -> (y, wy, toEnum -> dw))+    (toWeekDate -> (y, wy, (toEnum -> dw)))     where         YearWeekDay y wy dw = fromWeekDate y wy (fromEnum dw) 
lib/Data/Time/Clock.hs view
@@ -2,10 +2,37 @@  -- | Types and functions for UTC and UT1 module Data.Time.Clock (-    module Data.Time.Clock.Internal.UniversalTime,-    module Data.Time.Clock.Internal.DiffTime,-    module Data.Time.Clock.Internal.UTCTime,-    module Data.Time.Clock.Internal.NominalDiffTime,+    -- * Universal Time++    -- | Time as measured by the Earth.+    UniversalTime (..),++    -- * Absolute intervals+    DiffTime,+    pattern Picoseconds,+    pattern Seconds,+    pattern Minutes,+    pattern Hours,+    secondsToDiffTime,+    picosecondsToDiffTime,+    diffTimeToPicoseconds,++    -- * UTC++    -- | UTC is time as measured by a clock, corrected to keep pace with the earth by adding or removing+    -- occasional seconds, known as \"leap seconds\".+    -- These corrections are not predictable and are announced with six month's notice.+    -- No table of these corrections is provided, as any program compiled with it would become+    -- out of date in six months.+    --+    -- If you don't care about leap seconds, use 'UTCTime' and 'NominalDiffTime' for your clock calculations,+    -- and you'll be fine.+    UTCTime (..),+    NominalDiffTime,+    pattern Nominal,+    secondsToNominalDiffTime,+    nominalDiffTimeToSeconds,+    nominalDay,     module Data.Time.Clock.Internal.UTCDiff,     getCurrentTime,     getTime_resolution,
lib/Data/Time/Clock/Internal/AbsoluteTime.hs view
@@ -1,24 +1,23 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-}  -- | TAI and leap-second maps for converting to UTC: most people won't need this module.-module Data.Time.Clock.Internal.AbsoluteTime (-    -- TAI arithmetic-    AbsoluteTime,-    taiEpoch,-    addAbsoluteTime,-    diffAbsoluteTime,-    taiNominalDayStart,-) where+module Data.Time.Clock.Internal.AbsoluteTime where  import Control.DeepSeq import Data.Data import Data.Time.Calendar.Days import Data.Time.Clock.Internal.DiffTime+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  -- | AbsoluteTime is TAI, time as measured by a clock. newtype AbsoluteTime     = MkAbsoluteTime DiffTime-    deriving (Eq, Ord, Data, Typeable)+    deriving (Eq, Ord, Typeable, Data, TH.Lift)  instance NFData AbsoluteTime where     rnf (MkAbsoluteTime a) = rnf a
lib/Data/Time/Clock/Internal/CTimespec.hsc view
@@ -1,18 +1,21 @@+#if !defined(javascript_HOST_ARCH) {-# LANGUAGE CApiFFI #-}+#endif  module Data.Time.Clock.Internal.CTimespec where  #include "HsTimeConfig.h" -#if !defined(mingw32_HOST_OS) && HAVE_CLOCK_GETTIME+#if !defined(mingw32_HOST_OS) && HAVE_CLOCK_GETTIME && !defined(__MHS__)  import Foreign import Foreign.C import System.IO.Unsafe+import System.Posix.Types  #include <time.h> -type ClockID = #{type clockid_t}+type ClockID = CClockId  data CTimespec = MkCTimespec CTime CLong @@ -27,9 +30,33 @@         #{poke struct timespec, tv_sec } p s         #{poke struct timespec, tv_nsec} p ns +#if defined(javascript_HOST_ARCH)+ foreign import ccall unsafe "time.h clock_gettime"     clock_gettime :: ClockID -> Ptr CTimespec -> IO CInt-foreign import ccall unsafe "time.h clock_getres"++#else /* defined(javascript_HOST_ARCH) */++foreign import capi unsafe "time.h clock_gettime"+    clock_gettime :: ClockID -> Ptr CTimespec -> IO CInt++#endif /* defined(javascript_HOST_ARCH) */++-- | Get the current time from the given clock.+clockGetTime :: ClockID -> IO CTimespec+clockGetTime clockid = alloca (\ptspec -> do+    throwErrnoIfMinus1_ "clock_gettime" $ clock_gettime clockid ptspec+    peek ptspec+    )++#if defined(javascript_HOST_ARCH)++clockGetRes :: ClockID -> IO (Either Errno CTimespec)+clockGetRes _ = return $ Right $ MkCTimespec 0 0++#else /* defined(javascript_HOST_ARCH) */++foreign import capi unsafe "time.h clock_getres"     clock_getres :: ClockID -> Ptr CTimespec -> IO CInt  -- | Get the resolution of the given clock.@@ -44,22 +71,23 @@             errno <- getErrno             return $ Left errno --- | Get the current time from the given clock.-clockGetTime :: ClockID -> IO CTimespec-clockGetTime clockid = alloca (\ptspec -> do-    throwErrnoIfMinus1_ "clock_gettime" $ clock_gettime clockid ptspec-    peek ptspec-    )+#endif /* defined(javascript_HOST_ARCH) */ -foreign import capi unsafe "time.h value CLOCK_REALTIME" clock_REALTIME :: ClockID+#if defined(javascript_HOST_ARCH)+-- JS backend doesn't support foreign imports with capi convention+clock_REALTIME :: ClockID+clock_REALTIME = #{const CLOCK_REALTIME}+#else /* defined(javascript_HOST_ARCH) */+foreign import capi unsafe "HsTime.h value HS_CLOCK_REALTIME" clock_REALTIME :: ClockID+#endif /* defined(javascript_HOST_ARCH) */  clock_TAI :: Maybe ClockID clock_TAI = #if defined(CLOCK_TAI)     Just #{const CLOCK_TAI}-#else+#else /* defined(CLOCK_TAI) */     Nothing-#endif+#endif /* defined(CLOCK_TAI) */  realtimeRes :: CTimespec realtimeRes = unsafePerformIO $ do@@ -75,4 +103,5 @@         Left _ -> return Nothing         Right res -> return $ Just res -#endif+#endif /* !defined(mingw32_HOST_OS) && HAVE_CLOCK_GETTIME */+
lib/Data/Time/Clock/Internal/CTimeval.hs view
@@ -1,5 +1,8 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-}+#if !defined(javascript_HOST_ARCH)+{-# LANGUAGE CApiFFI #-}+#endif  module Data.Time.Clock.Internal.CTimeval where @@ -23,7 +26,15 @@         pokeElemOff (castPtr p) 0 s         pokeElemOff (castPtr p) 1 mus -foreign import ccall unsafe "time.h gettimeofday" gettimeofday :: Ptr CTimeval -> Ptr () -> IO CInt+#if defined(javascript_HOST_ARCH) || defined(__MHS__)++foreign import ccall unsafe "sys/time.h gettimeofday" gettimeofday :: Ptr CTimeval -> Ptr () -> IO CInt++#else++foreign import capi unsafe "sys/time.h gettimeofday" gettimeofday :: Ptr CTimeval -> Ptr () -> IO CInt++#endif  -- | Get the current POSIX time from the system clock. getCTimeval :: IO CTimeval
lib/Data/Time/Clock/Internal/DiffTime.hs view
@@ -1,19 +1,21 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Trustworthy #-} -module Data.Time.Clock.Internal.DiffTime (-    -- * Absolute intervals-    DiffTime,-    secondsToDiffTime,-    picosecondsToDiffTime,-    diffTimeToPicoseconds,-) where+module Data.Time.Clock.Internal.DiffTime where  import Control.DeepSeq import Data.Data import Data.Fixed+#ifdef __GLASGOW_HASKELL__ import GHC.Read+#endif+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif import Text.ParserCombinators.ReadP-import Text.ParserCombinators.ReadPrec+import Text.Read  -- | This is a length of time, as measured by a clock. -- Conversion functions such as 'fromInteger' and 'realToFrac' will treat it as seconds.@@ -22,7 +24,7 @@ -- It has a precision of one picosecond (= 10^-12 s). Enumeration functions will treat it as picoseconds. newtype DiffTime     = MkDiffTime Pico-    deriving (Eq, Ord, Data, Typeable)+    deriving (Eq, Ord, Typeable, Data, TH.Lift)  instance NFData DiffTime where     rnf (MkDiffTime t) = rnf t@@ -64,13 +66,41 @@     fromRational r = MkDiffTime (fromRational r)  instance RealFrac DiffTime where-    properFraction (MkDiffTime a) = let-        (b', a') = properFraction a-        in (b', MkDiffTime a')+    properFraction (MkDiffTime a) =+        let+            (b', a') = properFraction a+        in+            (b', MkDiffTime a')     truncate (MkDiffTime a) = truncate a     round (MkDiffTime a) = round a     ceiling (MkDiffTime a) = ceiling a     floor (MkDiffTime a) = floor a++pattern Picoseconds :: Integer -> DiffTime+pattern Picoseconds a <- (diffTimeToPicoseconds -> a)+    where+        Picoseconds a = picosecondsToDiffTime a++{-# COMPLETE Picoseconds #-}++pattern Seconds :: Pico -> DiffTime+pattern Seconds a = MkDiffTime a++{-# COMPLETE Seconds #-}++pattern Minutes :: Pico -> DiffTime+pattern Minutes a <- Seconds ((/ 60) -> a)+    where+        Minutes a = Seconds $ a * 60++{-# COMPLETE Minutes #-}++pattern Hours :: Pico -> DiffTime+pattern Hours a <- Minutes ((/ 60) -> a)+    where+        Hours a = Minutes $ a * 60++{-# COMPLETE Hours #-}  -- | Create a 'DiffTime' which represents an integral number of seconds. secondsToDiffTime :: Integer -> DiffTime
lib/Data/Time/Clock/Internal/NominalDiffTime.hs view
@@ -1,33 +1,45 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Trustworthy #-} -module Data.Time.Clock.Internal.NominalDiffTime (-    NominalDiffTime,-    secondsToNominalDiffTime,-    nominalDiffTimeToSeconds,-    nominalDay,-) where+module Data.Time.Clock.Internal.NominalDiffTime where  import Control.DeepSeq import Data.Data import Data.Fixed+#ifdef __GLASGOW_HASKELL__ import GHC.Read+#endif+import Data.Time.Clock.Internal.DiffTime+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif import Text.ParserCombinators.ReadP import Text.ParserCombinators.ReadPrec  -- | This is a length of time, as measured by UTC.--- It has a precision of 10^-12 s.+-- It has a precision of one picosecond (10^-12 s). -- -- Conversion functions such as 'fromInteger' and 'realToFrac' will treat it as seconds. -- For example, @(0.010 :: NominalDiffTime)@ corresponds to 10 milliseconds. ----- It has a precision of one picosecond (= 10^-12 s). Enumeration functions will treat it as picoseconds.+-- Enumeration functions will treat it as picoseconds. -- -- It ignores leap-seconds, so it's not necessarily a fixed amount of clock time. -- For instance, 23:00 UTC + 2 hours of NominalDiffTime = 01:00 UTC (+ 1 day), -- regardless of whether a leap-second intervened. newtype NominalDiffTime     = MkNominalDiffTime Pico-    deriving (Eq, Ord, Data, Typeable)+    deriving (Eq, Ord, Typeable, Data, TH.Lift)++-- | convert from DiffTime+pattern Nominal :: DiffTime -> NominalDiffTime+pattern Nominal dt <- MkNominalDiffTime (realToFrac -> dt)+    where+        Nominal dt = MkNominalDiffTime $ realToFrac dt++{-# COMPLETE Nominal #-}  -- | Create a 'NominalDiffTime' from a number of seconds. --
lib/Data/Time/Clock/Internal/SystemTime.hs view
@@ -1,6 +1,8 @@ {-# LANGUAGE CPP #-} +#if !defined(__MHS__) #include "HsTimeConfig.h"+#endif  #if defined(mingw32_HOST_OS) || !defined(HAVE_CLOCK_GETTIME) {-# LANGUAGE Safe #-}@@ -20,10 +22,16 @@ import Data.Int (Int64) import Data.Time.Clock.Internal.DiffTime import Data.Word+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  #ifdef mingw32_HOST_OS import qualified System.Win32.Time as Win32-#elif defined(HAVE_CLOCK_GETTIME)+#elif defined(HAVE_CLOCK_GETTIME) && !defined(__MHS__) import Data.Time.Clock.Internal.CTimespec import Foreign.C.Types (CLong(..), CTime(..)) #else@@ -39,7 +47,7 @@     { systemSeconds :: {-# UNPACK #-} !Int64     , systemNanoseconds :: {-# UNPACK #-} !Word32     }-    deriving (Eq, Ord, Show, Data, Typeable)+    deriving (Eq, Ord, Show, Typeable, Data, Generic, TH.Lift)  instance NFData SystemTime where     rnf a = a `seq` ()@@ -72,7 +80,7 @@ getTime_resolution = 100E-9 -- 100ns  getTAISystemTime = Nothing-#elif defined(HAVE_CLOCK_GETTIME)+#elif defined(HAVE_CLOCK_GETTIME) && !defined(__MHS__) -- Use hi-res clock_gettime timespecToSystemTime :: CTimespec -> SystemTime timespecToSystemTime (MkCTimespec (CTime s) (CLong ns)) = (MkSystemTime (fromIntegral s) (fromIntegral ns))
lib/Data/Time/Clock/Internal/UTCTime.hs view
@@ -1,23 +1,18 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-} -module Data.Time.Clock.Internal.UTCTime (-    -- * UTC--    -- | UTC is time as measured by a clock, corrected to keep pace with the earth by adding or removing-    -- occasional seconds, known as \"leap seconds\".-    -- These corrections are not predictable and are announced with six month's notice.-    -- No table of these corrections is provided, as any program compiled with it would become-    -- out of date in six months.-    ---    -- If you don't care about leap seconds, use 'UTCTime' and 'NominalDiffTime' for your clock calculations,-    -- and you'll be fine.-    UTCTime (..),-) where+module Data.Time.Clock.Internal.UTCTime where  import Control.DeepSeq import Data.Data import Data.Time.Calendar.Days import Data.Time.Clock.Internal.DiffTime+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  -- | This is the simplest representation of UTC. -- It consists of the day number, and a time offset from midnight.@@ -28,16 +23,7 @@     , utctDayTime :: DiffTime     -- ^ the time from midnight, 0 <= t < 86401s (because of leap-seconds)     }-    deriving (Data, Typeable)+    deriving (Eq, Ord, Typeable, Data, Generic, TH.Lift)  instance NFData UTCTime where     rnf (UTCTime d t) = rnf d `seq` rnf t `seq` ()--instance Eq UTCTime where-    (UTCTime da ta) == (UTCTime db tb) = (da == db) && (ta == tb)--instance Ord UTCTime where-    compare (UTCTime da ta) (UTCTime db tb) =-        case (compare da db) of-            EQ -> compare ta tb-            cmp -> cmp
lib/Data/Time/Clock/Internal/UniversalTime.hs view
@@ -1,21 +1,23 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-} -module Data.Time.Clock.Internal.UniversalTime (-    -- * Universal Time--    -- | Time as measured by the Earth.-    UniversalTime (..),-) where+module Data.Time.Clock.Internal.UniversalTime where  import Control.DeepSeq import Data.Data+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  -- | The Modified Julian Date is the day with the fraction of the day, measured from UT midnight. -- It's used to represent UT1, which is time as measured by the earth's rotation, adjusted for various wobbles. newtype UniversalTime = ModJulianDate     { getModJulianDate :: Rational     }-    deriving (Eq, Ord, Data, Typeable)+    deriving (Eq, Ord, Typeable, Data, Generic, TH.Lift)  instance NFData UniversalTime where     rnf (ModJulianDate a) = rnf a
lib/Data/Time/Clock/POSIX.hs view
@@ -34,9 +34,11 @@ import Data.Time.Clock.System  posixSecondsToUTCTime :: POSIXTime -> UTCTime-posixSecondsToUTCTime i = let-    (d, t) = divMod' i posixDayLength-    in UTCTime (addDays d systemEpochDay) (realToFrac t)+posixSecondsToUTCTime i =+    let+        (d, t) = divMod' i posixDayLength+    in+        UTCTime (addDays d systemEpochDay) (realToFrac t)  utcTimeToPOSIXSeconds :: UTCTime -> POSIXTime utcTimeToPOSIXSeconds (UTCTime d t) =
lib/Data/Time/Clock/System.hs view
@@ -27,48 +27,54 @@  -- | Convert 'SystemTime' to 'UTCTime', matching zero 'SystemTime' to midnight of 'systemEpochDay' UTC. systemToUTCTime :: SystemTime -> UTCTime-systemToUTCTime (MkSystemTime seconds nanoseconds) = let-    days :: Int64-    timeSeconds :: Int64-    (days, timeSeconds) = seconds `divMod` 86400-    day :: Day-    day = addDays (fromIntegral days) systemEpochDay-    timeNanoseconds :: Int64-    timeNanoseconds = timeSeconds * 1000000000 + (fromIntegral nanoseconds)-    timePicoseconds :: Int64-    timePicoseconds = timeNanoseconds * 1000-    time :: DiffTime-    time = picosecondsToDiffTime $ fromIntegral timePicoseconds-    in UTCTime day time+systemToUTCTime (MkSystemTime seconds nanoseconds) =+    let+        days :: Int64+        timeSeconds :: Int64+        (days, timeSeconds) = seconds `divMod` 86400+        day :: Day+        day = addDays (fromIntegral days) systemEpochDay+        timeNanoseconds :: Int64+        timeNanoseconds = timeSeconds * 1000000000 + (fromIntegral nanoseconds)+        timePicoseconds :: Int64+        timePicoseconds = timeNanoseconds * 1000+        time :: DiffTime+        time = picosecondsToDiffTime $ fromIntegral timePicoseconds+    in+        UTCTime day time  -- | Convert 'UTCTime' to 'SystemTime', matching zero 'SystemTime' to midnight of 'systemEpochDay' UTC. utcToSystemTime :: UTCTime -> SystemTime-utcToSystemTime (UTCTime day time) = let-    days :: Int64-    days = fromIntegral $ diffDays day systemEpochDay-    timePicoseconds :: Int64-    timePicoseconds = fromIntegral $ diffTimeToPicoseconds time-    timeNanoseconds :: Int64-    timeNanoseconds = timePicoseconds `div` 1000-    timeSeconds :: Int64-    nanoseconds :: Int64-    (timeSeconds, nanoseconds) =-        if timeNanoseconds >= 86400000000000-            then (86399, timeNanoseconds - 86399000000000)-            else timeNanoseconds `divMod` 1000000000-    seconds :: Int64-    seconds = days * 86400 + timeSeconds-    in MkSystemTime seconds $ fromIntegral nanoseconds+utcToSystemTime (UTCTime day time) =+    let+        days :: Int64+        days = fromIntegral $ diffDays day systemEpochDay+        timePicoseconds :: Int64+        timePicoseconds = fromIntegral $ diffTimeToPicoseconds time+        timeNanoseconds :: Int64+        timeNanoseconds = timePicoseconds `div` 1000+        timeSeconds :: Int64+        nanoseconds :: Int64+        (timeSeconds, nanoseconds) =+            if timeNanoseconds >= 86400000000000+                then (86399, timeNanoseconds - 86399000000000)+                else timeNanoseconds `divMod` 1000000000+        seconds :: Int64+        seconds = days * 86400 + timeSeconds+    in+        MkSystemTime seconds $ fromIntegral nanoseconds  systemEpochAbsolute :: AbsoluteTime systemEpochAbsolute = taiNominalDayStart systemEpochDay  -- | Convert 'SystemTime' to 'AbsoluteTime', matching zero 'SystemTime' to midnight of 'systemEpochDay' TAI. systemToTAITime :: SystemTime -> AbsoluteTime-systemToTAITime (MkSystemTime s ns) = let-    diff :: DiffTime-    diff = (fromIntegral s) + (fromIntegral ns) * 1E-9-    in addAbsoluteTime diff systemEpochAbsolute+systemToTAITime (MkSystemTime s ns) =+    let+        diff :: DiffTime+        diff = (fromIntegral s) + (fromIntegral ns) * 1E-9+    in+        addAbsoluteTime diff systemEpochAbsolute  -- | The day of the epoch of 'SystemTime', 1970-01-01 systemEpochDay :: Day
lib/Data/Time/Clock/TAI.hs view
@@ -1,14 +1,19 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-}  {-# OPTIONS -fno-warn-orphans #-}  -- | TAI and leap-second maps for converting to UTC: most people won't need this module. module Data.Time.Clock.TAI (-    -- TAI arithmetic-    module Data.Time.Clock.Internal.AbsoluteTime,-    -- leap-second map type+    -- * Absolute Time+    AbsoluteTime,+    taiEpoch,+    addAbsoluteTime,+    diffAbsoluteTime,+    taiNominalDayStart,++    -- * Leap-Second Map     LeapSecondMap,-    -- conversion between UTC and TAI with map     utcDayLength,     utcToTAITime,     taiToUTCTime,@@ -23,6 +28,9 @@ import Data.Time.Clock.Internal.SystemTime import Data.Time.Clock.System import Data.Time.LocalTime+#ifdef __MHS__+import Data.Tuple.Instances+#endif  instance Show AbsoluteTime where     show t = show (utcToLocalTime utc (fromJust (taiToUTCTime (const (Just 0)) t))) ++ " TAI" -- ugly, but standard apparently@@ -49,17 +57,19 @@     return $ addAbsoluteTime dtime t  taiToUTCTime :: LeapSecondMap -> AbsoluteTime -> Maybe UTCTime-taiToUTCTime lsmap abstime = let-    stable day = do-        dayt <- dayStart lsmap day-        len <- utcDayLength lsmap day-        let-            dtime = diffAbsoluteTime abstime dayt-            day' = addDays (div' dtime len) day-        if day == day'-            then return (UTCTime day dtime)-            else stable day'-    in stable $ ModifiedJulianDay $ div' (diffAbsoluteTime abstime taiEpoch) 86400+taiToUTCTime lsmap abstime =+    let+        stable day = do+            dayt <- dayStart lsmap day+            len <- utcDayLength lsmap day+            let+                dtime = diffAbsoluteTime abstime dayt+                day' = addDays (div' dtime len) day+            if day == day'+                then return (UTCTime day dtime)+                else stable day'+    in+        stable $ ModifiedJulianDay $ div' (diffAbsoluteTime abstime taiEpoch) 86400  -- | TAI clock, if it exists. Note that it is unlikely to be set correctly, without due care and attention. taiClock :: Maybe (DiffTime, IO AbsoluteTime)
lib/Data/Time/Format.hs view
@@ -4,9 +4,25 @@     -- * UNIX-style formatting     FormatTime (),     formatTime,-    module Data.Time.Format.Parse,++    -- * UNIX-style parsing+    parseTimeM,+    parseTimeMultipleM,+    parseTimeOrError,+    readSTime,+    readPTime,+    ParseTime (),++    -- * Locale+    TimeLocale (..),+    defaultTimeLocale,+    iso8601DateFormat,+    rfc822DateFormat, ) where  import Data.Time.Format.Format.Class import Data.Time.Format.Format.Instances ()+import Data.Time.Format.ISO8601 ()+import Data.Time.Format.Locale import Data.Time.Format.Parse+import Data.Time.Format.Parse.Class
lib/Data/Time/Format/Format/Class.hs view
@@ -39,28 +39,30 @@  -- the weird UNIX logic is here getPadOption :: Bool -> Bool -> Int -> Char -> Maybe FormatNumericPadding -> Maybe Int -> PadOption-getPadOption trunc fdef idef cdef mnpad mi = let-    c = case mnpad of-        Just (Just c') -> c'-        Just Nothing -> ' '-        _ -> cdef-    i = case mi of-        Just i' -> case mnpad of-            Just Nothing -> i'-            _ ->-                if trunc-                    then i'-                    else max i' idef-        Nothing -> idef-    f = case mi of-        Just _ -> True-        Nothing -> case mnpad of-            Nothing -> fdef-            Just Nothing -> False-            Just (Just _) -> True-    in if f-        then Pad i c-        else NoPad+getPadOption trunc fdef idef cdef mnpad mi =+    let+        c = case mnpad of+            Just (Just c') -> c'+            Just Nothing -> ' '+            _ -> cdef+        i = case mi of+            Just i' -> case mnpad of+                Just Nothing -> i'+                _ ->+                    if trunc+                        then i'+                        else max i' idef+            Nothing -> idef+        f = case mi of+            Just _ -> True+            Nothing -> case mnpad of+                Nothing -> fdef+                Just Nothing -> False+                Just (Just _) -> True+    in+        if f+            then Pad i c+            else NoPad  formatGeneral ::     Bool -> Bool -> Int -> Char -> (TimeLocale -> PadOption -> t -> String) -> (FormatOptions -> t -> String)@@ -70,7 +72,7 @@ formatString :: (TimeLocale -> t -> String) -> (FormatOptions -> t -> String) formatString ff = formatGeneral False False 1 ' ' $ \locale pado -> showPadded pado . ff locale -formatNumber :: (ShowPadded i) => Bool -> Int -> Char -> (t -> i) -> (FormatOptions -> t -> String)+formatNumber :: ShowPadded i => Bool -> Int -> Char -> (t -> i) -> (FormatOptions -> t -> String) formatNumber fdef idef cdef ff = formatGeneral False fdef idef cdef $ \_ pado -> showPaddedNum pado . ff  formatNumberStd :: Int -> (t -> Integer) -> (FormatOptions -> t -> String)@@ -79,25 +81,29 @@ showPaddedFixed :: HasResolution a => PadOption -> PadOption -> Fixed a -> String showPaddedFixed padn padf x     | x < 0 = '-' : showPaddedFixed padn padf (negate x)-showPaddedFixed padn padf x = let-    ns = showPaddedNum padn $ (floor x :: Integer)-    fs = showPaddedFixedFraction padf x-    ds =-        if null fs-            then ""-            else "."-    in ns ++ ds ++ fs+showPaddedFixed padn padf x =+    let+        ns = showPaddedNum padn $ (floor x :: Integer)+        fs = showPaddedFixedFraction padf x+        ds =+            if null fs+                then ""+                else "."+    in+        ns ++ ds ++ fs  showPaddedFixedFraction :: HasResolution a => PadOption -> Fixed a -> String-showPaddedFixedFraction pado x = let-    digits = dropWhile (== '.') $ dropWhile (/= '.') $ showFixed True x-    n = length digits-    in case pado of-        NoPad -> digits-        Pad i c ->-            if i < n-                then take i digits-                else digits ++ replicate (i - n) c+showPaddedFixedFraction pado x =+    let+        digits = dropWhile (== '.') $ dropWhile (/= '.') $ showFixed True x+        n = length digits+    in+        case pado of+            NoPad -> digits+            Pad i c ->+                if i < n+                    then take i digits+                    else digits ++ replicate (i - n) c  -- | Substitute various time-related information for each %-code in the string, as per 'formatCharacter'. --@@ -205,15 +211,26 @@ -- -- [@%A@] day of week, long form ('fst' from 'wDays' @locale@), @Sunday@ - @Saturday@ ----- === 'Month'--- For 'Month' (and 'Day' and 'LocalTime' and 'ZonedTime' and 'UTCTime' and 'UniversalTime'):+-- === 'QuarterOfYear'+-- For 'QuarterOfYear' (and 'Quarter' and 'Month' and 'Day' and 'LocalTime' and 'ZonedTime' and 'UTCTime' and 'UniversalTime'): --+-- [@%v@] quarter number, @1@ - @4@+--+-- === 'Quarter'+-- For 'Quarter' (and 'Month' and 'Day' and 'LocalTime' and 'ZonedTime' and 'UTCTime' and 'UniversalTime'):+-- -- [@%Y@] year, no padding. Note @%0Y@ and @%_Y@ pad to four chars -- -- [@%y@] year of century, 0-padded to two chars, @00@ - @99@ -- -- [@%C@] century, no padding. Note @%0C@ and @%_C@ pad to two chars --+-- [@%v@] quarter number, @1@ - @4@+--+--+-- === 'Month'+-- For 'Month' (and 'Day' and 'LocalTime' and 'ZonedTime' and 'UTCTime' and 'UniversalTime'):+-- -- [@%B@] month name, long form ('fst' from 'months' @locale@), @January@ - @December@ -- -- [@%b@, @%h@] month name, short form ('snd' from 'months' @locale@), @Jan@ - @Dec@@@ -235,10 +252,14 @@ -- -- [@%j@] day of year, 0-padded to three chars, @001@ - @366@ ----- [@%f@] century for Week Date format, no padding. Note @%0f@ and @%_f@ pad to two chars+-- [@%G@] year for ISO 8601 Week Date format. Note @%0G@ and @%_G@ pad to four chars ----- [@%V@] week of year for Week Date format, 0-padded to two chars, @01@ - @53@+-- [@%g@] year of century for ISO 8601 Week Date format, 0-padded to two chars, @00@ - @99@ --+-- [@%f@] century for ISO 8601 Week Date format, no padding. Note @%0f@ and @%_f@ pad to two chars+--+-- [@%V@] week of year for ISO 8601 Week Date format, 0-padded to two chars, @01@ - @53@+-- -- [@%U@] week of year where weeks start on Sunday (as 'sundayStartWeek'), 0-padded to two chars, @00@ - @53@ -- -- [@%W@] week of year where weeks start on Monday (as 'mondayStartWeek'), 0-padded to two chars, @00@ - @53@@@ -321,7 +342,7 @@ -- For a whole number of seconds, @%ES@ omits the decimal point unless padding is specified. -- -- [@%0ES@] seconds of minute as two digits, with decimal point and \<width\> (default 12) decimal places.-formatTime :: (FormatTime t) => TimeLocale -> String -> t -> String+formatTime :: FormatTime t => TimeLocale -> String -> t -> String formatTime _ [] _ = "" formatTime locale ('%' : cs) t =     case formatTime1 locale cs t of@@ -329,7 +350,7 @@         Nothing -> '%' : (formatTime locale cs t) formatTime locale (c : cs) t = c : (formatTime locale cs t) -formatTime1 :: (FormatTime t) => TimeLocale -> String -> t -> Maybe String+formatTime1 :: FormatTime t => TimeLocale -> String -> t -> Maybe String formatTime1 locale ('_' : cs) t = formatTime2 locale id (Just (Just ' ')) cs t formatTime1 locale ('-' : cs) t = formatTime2 locale id (Just Nothing) cs t formatTime1 locale ('0' : cs) t = formatTime2 locale id (Just (Just '0')) cs t@@ -352,13 +373,15 @@         Nothing -> (mx, s)  formatTime2 ::-    (FormatTime t) => TimeLocale -> (String -> String) -> Maybe FormatNumericPadding -> String -> t -> Maybe String-formatTime2 locale recase mpad cs t = let-    (mwidth, rest) = pullNumber Nothing cs-    in formatTime3 locale recase mpad mwidth rest t+    FormatTime t => TimeLocale -> (String -> String) -> Maybe FormatNumericPadding -> String -> t -> Maybe String+formatTime2 locale recase mpad cs t =+    let+        (mwidth, rest) = pullNumber Nothing cs+    in+        formatTime3 locale recase mpad mwidth rest t  formatTime3 ::-    (FormatTime t) =>+    FormatTime t =>     TimeLocale ->     (String -> String) ->     Maybe FormatNumericPadding ->@@ -369,11 +392,11 @@ formatTime3 locale recase mpad mwidth ('E' : cs) = formatTime4 True recase (MkFormatOptions locale mpad mwidth) cs formatTime3 locale recase mpad mwidth cs = formatTime4 False recase (MkFormatOptions locale mpad mwidth) cs -formatTime4 :: (FormatTime t) => Bool -> (String -> String) -> FormatOptions -> String -> t -> Maybe String+formatTime4 :: FormatTime t => Bool -> (String -> String) -> FormatOptions -> String -> t -> Maybe String formatTime4 alt recase fo (c : cs) t = Just $ (recase (formatChar alt c fo t)) ++ (formatTime (foLocale fo) cs t) formatTime4 _alt _recase _fo [] _t = Nothing -formatChar :: (FormatTime t) => Bool -> Char -> FormatOptions -> t -> String+formatChar :: FormatTime t => Bool -> Char -> FormatOptions -> t -> String formatChar _ '%' = formatString $ \_ _ -> "%" formatChar _ 't' = formatString $ \_ _ -> "\t" formatChar _ 'n' = formatString $ \_ _ -> "\n"
lib/Data/Time/Format/Format/Instances.hs view
@@ -3,8 +3,9 @@ {-# OPTIONS -fno-warn-orphans #-}  module Data.Time.Format.Format.Instances (-    ) where +) where+ import Control.Applicative ((<|>)) import Data.Char import Data.Fixed@@ -14,6 +15,7 @@ import Data.Time.Calendar.Month import Data.Time.Calendar.OrdinalDate import Data.Time.Calendar.Private+import Data.Time.Calendar.Quarter import Data.Time.Calendar.Week import Data.Time.Calendar.WeekDate import Data.Time.Clock.Internal.DiffTime@@ -39,11 +41,13 @@             <|> mapFormatCharacter localTimeOfDay (formatCharacter alt c)  todAMPM :: TimeLocale -> TimeOfDay -> String-todAMPM locale day = let-    (am, pm) = amPm locale-    in if (todHour day) < 12-        then am-        else pm+todAMPM locale day =+    let+        (am, pm) = amPm locale+    in+        if (todHour day) < 12+            then am+            else pm  tod12Hour :: TimeOfDay -> Int tod12Hour day = (mod (todHour day - 1) 12) + 1@@ -87,15 +91,17 @@     formatCharacter False 'z' = Just $ formatGeneral False True 4 '0' $ \_ -> timeZoneOffsetString'' False     formatCharacter True 'z' = Just $ formatGeneral False True 5 '0' $ \_ -> timeZoneOffsetString'' True     formatCharacter alt 'Z' =-        Just $ \fo z -> let-            n = timeZoneName z-            idef =-                if alt-                    then 5-                    else 4-            in if null n-                then formatGeneral False True idef '0' (\_ -> timeZoneOffsetString'' alt) fo z-                else formatString (\_ -> timeZoneName) fo z+        Just $ \fo z ->+            let+                n = timeZoneName z+                idef =+                    if alt+                        then 5+                        else 4+            in+                if null n+                    then formatGeneral False True idef '0' (\_ -> timeZoneOffsetString'' alt) fo z+                    else formatString (\_ -> timeZoneName) fo z     formatCharacter _ _ = Nothing  instance FormatTime DayOfWeek where@@ -105,11 +111,20 @@     formatCharacter _ 'A' = Just $ formatString $ \locale wd -> fst $ (wDays locale) !! (mod (fromEnum wd) 7)     formatCharacter _ _ = Nothing -instance FormatTime Month where+instance FormatTime QuarterOfYear where+    -- Quarter of Year+    formatCharacter _ 'v' = Just $ formatNumber False 1 '0' fromEnum+    formatCharacter _ _ = Nothing++instance FormatTime Quarter where     -- Year Count-    formatCharacter _ 'Y' = Just $ formatNumber False 4 '0' $ \(YearMonth y _) -> y-    formatCharacter _ 'y' = Just $ formatNumber True 2 '0' $ \(YearMonth y _) -> mod100 y-    formatCharacter _ 'C' = Just $ formatNumber False 2 '0' $ \(YearMonth y _) -> div100 y+    formatCharacter _ 'Y' = Just $ formatNumber False 4 '0' $ \(YearQuarter y _) -> y+    formatCharacter _ 'y' = Just $ formatNumber True 2 '0' $ \(YearQuarter y _) -> mod100 y+    formatCharacter _ 'C' = Just $ formatNumber False 2 '0' $ \(YearQuarter y _) -> div100 y+    -- Default+    formatCharacter alt c = mapFormatCharacter (\(YearQuarter _ q) -> q) $ formatCharacter alt c++instance FormatTime Month where     -- Month of Year     formatCharacter _ 'B' =         Just $ formatString $ \locale (YearMonth _ my) -> fst $ (months locale) !! (my - 1)@@ -119,7 +134,7 @@         Just $ formatString $ \locale (YearMonth _ my) -> snd $ (months locale) !! (my - 1)     formatCharacter _ 'm' = Just $ formatNumber True 2 '0' $ \(YearMonth _ m) -> m     -- Default-    formatCharacter _ _ = Nothing+    formatCharacter alt c = mapFormatCharacter monthQuarter $ formatCharacter alt c  instance FormatTime Day where     -- Aggregate@@ -166,11 +181,13 @@     formatCharacter False 'S' = Just $ formatNumberStd 2 $ remBy 60 . quotBy 1     formatCharacter True 'S' =         Just $-            formatGeneral True False 12 '0' $ \_ padf t -> let-                padn = case padf of-                    NoPad -> NoPad-                    Pad _ c -> Pad 2 c-                in showPaddedFixed padn padf (realToFrac $ remBy 60 t :: Pico)+            formatGeneral True False 12 '0' $ \_ padf t ->+                let+                    padn = case padf of+                        NoPad -> NoPad+                        Pad _ c -> Pad 2 c+                in+                    showPaddedFixed padn padf (realToFrac $ remBy 60 t :: Pico)     formatCharacter _ _ = Nothing  instance FormatTime DiffTime where@@ -187,11 +204,13 @@     formatCharacter False 'S' = Just $ formatNumberStd 2 $ remBy 60 . quotBy 1     formatCharacter True 'S' =         Just $-            formatGeneral True False 12 '0' $ \_ padf t -> let-                padn = case padf of-                    NoPad -> NoPad-                    Pad _ c -> Pad 2 c-                in showPaddedFixed padn padf (realToFrac $ remBy 60 t :: Pico)+            formatGeneral True False 12 '0' $ \_ padf t ->+                let+                    padn = case padf of+                        NoPad -> NoPad+                        Pad _ c -> Pad 2 c+                in+                    showPaddedFixed padn padf (realToFrac $ remBy 60 t :: Pico)     formatCharacter _ _ = Nothing  instance FormatTime CalendarDiffDays where
lib/Data/Time/Format/ISO8601.hs view
@@ -1,5 +1,7 @@ {-# LANGUAGE Safe #-} +{-# OPTIONS -fno-warn-orphans #-}+ module Data.Time.Format.ISO8601 (     -- * Format     Format,@@ -58,17 +60,27 @@ import Data.Fixed import Data.Format import Data.Ratio-import Data.Time+import Data.Time.Calendar.CalendarDiffDays+import Data.Time.Calendar.Days+import Data.Time.Calendar.Gregorian import Data.Time.Calendar.OrdinalDate import Data.Time.Calendar.Private import Data.Time.Calendar.WeekDate+import Data.Time.Clock.Internal.NominalDiffTime+import Data.Time.Clock.Internal.UTCTime+import Data.Time.LocalTime.Internal.CalendarDiffTime+import Data.Time.LocalTime.Internal.LocalTime+import Data.Time.LocalTime.Internal.TimeOfDay+import Data.Time.LocalTime.Internal.TimeZone hiding (timeZoneOffsetString'')+import Data.Time.LocalTime.Internal.ZonedTime import Text.ParserCombinators.ReadP+import Text.Read (Read (..), lift) import Prelude hiding (fail)  data FormatExtension-    = -- | ISO 8601:2004(E) sec. 2.3.4. Use hyphens and colons.+    = -- | Use hyphens and colons. [ISO 8601:2004(E) sec. 2.3.4]       ExtendedFormat-    | -- | ISO 8601:2004(E) sec. 2.3.3. Omit hyphens and colons. "The basic format should be avoided in plain text."+    | -- | Omit hyphens and colons. "The basic format should be avoided in plain text." [ISO 8601:2004(E) sec. 2.3.3]       BasicFormat  -- | Read a value in either extended or basic format@@ -76,7 +88,7 @@ formatReadPExtension ff = formatReadP (ff ExtendedFormat) +++ formatReadP (ff BasicFormat)  -- | Parse a value in either extended or basic format-parseFormatExtension :: (MonadFail m) => (FormatExtension -> Format t) -> String -> m t+parseFormatExtension :: MonadFail m => (FormatExtension -> Format t) -> String -> m t parseFormatExtension ff = parseReader $ formatReadPExtension ff  sepFormat :: String -> Format a -> Format b -> Format (a, b)@@ -163,65 +175,65 @@ mapTimeOfDay :: Format (Int, (Int, Pico)) -> Format TimeOfDay mapTimeOfDay = mapMFormat (\(h, (m, s)) -> isoMakeTimeOfDayValid h m s) (\(TimeOfDay h m s) -> Just (h, (m, s))) --- | ISO 8601:2004(E) sec. 4.1.2.2+-- | @yyyy-mm-dd@ (extended), @yyyymmdd@ (basic) [ISO 8601:2004(E) sec. 4.1.2.2] calendarFormat :: FormatExtension -> Format Day calendarFormat fe = mapGregorian $ extDashFormat fe yearFormat $ extDashFormat fe monthFormat dayOfMonthFormat --- | ISO 8601:2004(E) sec. 4.1.2.3(a)+-- | @yyyy-mm@ [ISO 8601:2004(E) sec. 4.1.2.3(a)] yearMonthFormat :: Format (Integer, Int) yearMonthFormat = yearFormat <**> literalFormat "-" **> monthFormat --- | ISO 8601:2004(E) sec. 4.1.2.3(b)+-- | @yyyy@ [ISO 8601:2004(E) sec. 4.1.2.3(b)] yearFormat :: Format Integer yearFormat = yearFormat' --- | ISO 8601:2004(E) sec. 4.1.2.3(c)+-- | @yy@ [ISO 8601:2004(E) sec. 4.1.2.3(c)] centuryFormat :: Format Integer centuryFormat = integerFormat NegSign (Just 2) --- | ISO 8601:2004(E) sec. 4.1.2.4(a)+-- | @±__y__yyyy-mm-dd@ (extended), @±__y__yyyymmdd@ (basic) [ISO 8601:2004(E) sec. 4.1.2.4(a)] expandedCalendarFormat :: Int -> FormatExtension -> Format Day expandedCalendarFormat n fe =     mapGregorian $ extDashFormat fe (expandedYearFormat n) $ extDashFormat fe monthFormat dayOfMonthFormat --- | ISO 8601:2004(E) sec. 4.1.2.4(b)+-- | @±__y__yyyy-mm@ [ISO 8601:2004(E) sec. 4.1.2.4(b)] expandedYearMonthFormat :: Int -> Format (Integer, Int) expandedYearMonthFormat n = dashFormat (expandedYearFormat n) monthFormat --- | ISO 8601:2004(E) sec. 4.1.2.4(c)+-- | @±__y__yyyy@ [ISO 8601:2004(E) sec. 4.1.2.4(c)] expandedYearFormat :: Int -> Format Integer expandedYearFormat = expandedYearFormat' --- | ISO 8601:2004(E) sec. 4.1.2.4(d)+-- | @±__y__yy@ [ISO 8601:2004(E) sec. 4.1.2.4(d)] expandedCenturyFormat :: Int -> Format Integer expandedCenturyFormat n = integerFormat PosNegSign (Just n) --- | ISO 8601:2004(E) sec. 4.1.3.2+-- | @yyyy-ddd@ (extended), @yyyyddd@ (basic) [ISO 8601:2004(E) sec. 4.1.3.2] ordinalDateFormat :: FormatExtension -> Format Day ordinalDateFormat fe = mapOrdinalDate $ extDashFormat fe yearFormat dayOfYearFormat --- | ISO 8601:2004(E) sec. 4.1.3.3+-- | @__y__yyyy-ddd@ (extended), @__y__yyyyddd@ (basic) [ISO 8601:2004(E) sec. 4.1.3.3] expandedOrdinalDateFormat :: Int -> FormatExtension -> Format Day expandedOrdinalDateFormat n fe = mapOrdinalDate $ extDashFormat fe (expandedYearFormat n) dayOfYearFormat --- | ISO 8601:2004(E) sec. 4.1.4.2+-- | @yyyy-Www-D@ (extended), @yyyyWwwd@ (basic) [ISO 8601:2004(E) sec. 4.1.4.2] weekDateFormat :: FormatExtension -> Format Day weekDateFormat fe = mapWeekDate $ extDashFormat fe yearFormat $ extDashFormat fe weekOfYearFormat dayOfWeekFormat --- | ISO 8601:2004(E) sec. 4.1.4.3+-- | @yyyy-Www@ (extended), @yyyyWww@ (basic) [ISO 8601:2004(E) sec. 4.1.4.3] yearWeekFormat :: FormatExtension -> Format (Integer, Int) yearWeekFormat fe = extDashFormat fe yearFormat weekOfYearFormat --- | ISO 8601:2004(E) sec. 4.1.4.2+-- | @±__y__yyyy-Www-d@ (extended), @±__y__yyyyWwwD@ (basic) [ISO 8601:2004(E) sec. 4.1.4.4] expandedWeekDateFormat :: Int -> FormatExtension -> Format Day expandedWeekDateFormat n fe =     mapWeekDate $ extDashFormat fe (expandedYearFormat n) $ extDashFormat fe weekOfYearFormat dayOfWeekFormat --- | ISO 8601:2004(E) sec. 4.1.4.3+-- | @±__y__yyyy-Www@ (extended), @±__y__yyyyWww@ (basic) [ISO 8601:2004(E) sec. 4.1.4.4] expandedYearWeekFormat :: Int -> FormatExtension -> Format (Integer, Int) expandedYearWeekFormat n fe = extDashFormat fe (expandedYearFormat n) weekOfYearFormat --- | ISO 8601:2004(E) sec. 4.2.2.2, 4.2.2.4(a)+-- | @hh:mm:ss[.s__s__]@ (extended), @hhmmss[.s__s__]@ (basic) [ISO 8601:2004(E) sec. 4.2.2.2, 4.2.2.4(a)] timeOfDayFormat :: FormatExtension -> Format TimeOfDay timeOfDayFormat fe = mapTimeOfDay $ extColonFormat fe hourFormat' $ extColonFormat fe minuteFormat secondFormat @@ -229,147 +241,172 @@ fromRationalRound :: Rational -> NominalDiffTime fromRationalRound r = fromRational $ round (r * 1000000000000) % 1000000000000 --- | ISO 8601:2004(E) sec. 4.2.2.3(a), 4.2.2.4(b)+-- | @hh:mm[.m__m__]@ (extended), @hhmm[.m__m__]@ (basic) [ISO 8601:2004(E) sec. 4.2.2.3(a), 4.2.2.4(b)] hourMinuteFormat :: FormatExtension -> Format TimeOfDay-hourMinuteFormat fe = let-    toTOD (h, m) =-        case timeToDaysAndTimeOfDay $ fromRationalRound $ toRational $ (fromIntegral h) * 3600 + m * 60 of+hourMinuteFormat fe =+    let+        toTOD (h, m) =+            case timeToDaysAndTimeOfDay $ fromRationalRound $ toRational $ (fromIntegral h) * 3600 + m * 60 of+                (0, tod) -> Just tod+                (1, TimeOfDay 0 0 0) -> Just $ TimeOfDay 24 0 0+                _ -> Nothing+        fromTOD tod =+            let+                mm = (realToFrac $ daysAndTimeOfDayToTime 0 tod) / 60+            in+                Just $ quotRemBy 60 mm+    in+        mapMFormat toTOD fromTOD $ extColonFormat fe hourFormat' $ minuteDecimalFormat++-- | @hh[.h__h__]@ [ISO 8601:2004(E) sec. 4.2.2.3(b), 4.2.2.4(c)]+hourFormat :: Format TimeOfDay+hourFormat =+    let+        toTOD h = case timeToDaysAndTimeOfDay $ fromRationalRound $ toRational $ h * 3600 of             (0, tod) -> Just tod             (1, TimeOfDay 0 0 0) -> Just $ TimeOfDay 24 0 0             _ -> Nothing-    fromTOD tod = let-        mm = (realToFrac $ daysAndTimeOfDayToTime 0 tod) / 60-        in Just $ quotRemBy 60 mm-    in mapMFormat toTOD fromTOD $ extColonFormat fe hourFormat' $ minuteDecimalFormat---- | ISO 8601:2004(E) sec. 4.2.2.3(b), 4.2.2.4(c)-hourFormat :: Format TimeOfDay-hourFormat = let-    toTOD h = case timeToDaysAndTimeOfDay $ fromRationalRound $ toRational $ h * 3600 of-        (0, tod) -> Just tod-        (1, TimeOfDay 0 0 0) -> Just $ TimeOfDay 24 0 0-        _ -> Nothing-    fromTOD tod = Just $ (realToFrac $ daysAndTimeOfDayToTime 0 tod) / 3600-    in mapMFormat toTOD fromTOD $ hourDecimalFormat+        fromTOD tod = Just $ (realToFrac $ daysAndTimeOfDayToTime 0 tod) / 3600+    in+        mapMFormat toTOD fromTOD $ hourDecimalFormat --- | ISO 8601:2004(E) sec. 4.2.2.5+-- | @Tx@ [ISO 8601:2004(E) sec. 4.2.2.5] withTimeDesignator :: Format t -> Format t withTimeDesignator f = literalFormat "T" **> f --- | ISO 8601:2004(E) sec. 4.2.4+-- | @xZ@ [ISO 8601:2004(E) sec. 4.2.4] withUTCDesignator :: Format t -> Format t-withUTCDesignator f = f <** literalFormat "Z"+withUTCDesignator f = f <** specialCaseReadFormat ((), "") (literalFormat "Z") --- | ISO 8601:2004(E) sec. 4.2.5.1+-- | @±hh:mm@ (extended), @±hhmm@ (basic) [ISO 8601:2004(E) sec. 4.2.5.1] timeOffsetFormat :: FormatExtension -> Format TimeZone-timeOffsetFormat fe = let-    toTimeZone (sign, ehm) =-        minutesToTimeZone $-            sign * case ehm of-                Left h -> h * 60-                Right (h, m) -> h * 60 + m-    fromTimeZone tz = let-        mm = timeZoneMinutes tz-        (h, m) = quotRem (abs mm) 60-        in (signum mm, Right (h, m))-    digits2 = integerFormat NoSign (Just 2)-    in isoMap toTimeZone fromTimeZone $-        mandatorySignFormat <**> (digits2 <++> extColonFormat fe digits2 digits2)+timeOffsetFormat fe =+    let+        toTimeZone (sign, ehm) =+            minutesToTimeZone $+                sign * case ehm of+                    Left h -> h * 60+                    Right (h, m) -> h * 60 + m+        fromTimeZone tz =+            let+                mm = timeZoneMinutes tz+                (h, m) = quotRem (abs mm) 60+            in+                (signum mm, Right (h, m))+        digits2 = integerFormat NoSign (Just 2)+    in+        specialCaseReadFormat (utc, "") $+            specialCaseReadFormat (utc, "Z") $+                isoMap toTimeZone fromTimeZone $+                    mandatorySignFormat <**> (digits2 <++> extColonFormat fe digits2 digits2) --- | ISO 8601:2004(E) sec. 4.2.5.2+-- | @hh:mm:ss±hh:mm@ (extended), @hhmmss±hhmm@ (basic) [ISO 8601:2004(E) sec. 4.2.5.2] timeOfDayAndOffsetFormat :: FormatExtension -> Format (TimeOfDay, TimeZone) timeOfDayAndOffsetFormat fe = timeOfDayFormat fe <**> timeOffsetFormat fe --- | ISO 8601:2004(E) sec. 4.3.2+-- | @xTy@ [ISO 8601:2004(E) sec. 4.3.2] localTimeFormat :: Format Day -> Format TimeOfDay -> Format LocalTime localTimeFormat fday ftod =-    isoMap (\(day, tod) -> LocalTime day tod) (\(LocalTime day tod) -> (day, tod)) $ fday <**> withTimeDesignator ftod+    isoMap (\(day, tod) -> LocalTime day tod) (\(LocalTime day tod) -> (day, tod)) $ dayAndTimeFormat fday ftod --- | ISO 8601:2004(E) sec. 4.3.2+-- | @xTy±hh:mm@ (extended), @xTy±hhmm@ (basic) [ISO 8601:2004(E) sec. 4.3.2] zonedTimeFormat :: Format Day -> Format TimeOfDay -> FormatExtension -> Format ZonedTime zonedTimeFormat fday ftod fe =     isoMap (\(lt, tz) -> ZonedTime lt tz) (\(ZonedTime lt tz) -> (lt, tz)) $         timeAndOffsetFormat (localTimeFormat fday ftod) fe --- | ISO 8601:2004(E) sec. 4.3.2+-- | @xTyZ@ [ISO 8601:2004(E) sec. 4.3.2] utcTimeFormat :: Format Day -> Format TimeOfDay -> Format UTCTime utcTimeFormat fday ftod =     isoMap (localTimeToUTC utc) (utcToLocalTime utc) $ withUTCDesignator $ localTimeFormat fday ftod --- | ISO 8601:2004(E) sec. 4.3.3+-- | @xTy@ [ISO 8601:2004(E) sec. 4.3.3] dayAndTimeFormat :: Format Day -> Format time -> Format (Day, time)-dayAndTimeFormat fday ft = fday <**> withTimeDesignator ft+dayAndTimeFormat fday ftod = fday <**> withTimeDesignator ftod --- | ISO 8601:2004(E) sec. 4.3.3+-- | @x±hh:mm@ (extended), @x±hhmm@ (basic) [ISO 8601:2004(E) sec. 4.3.3] timeAndOffsetFormat :: Format t -> FormatExtension -> Format (t, TimeZone) timeAndOffsetFormat ft fe = ft <**> timeOffsetFormat fe  intDesignator :: (Eq t, Show t, Read t, Num t) => Char -> Format t-intDesignator c = optionalFormat 0 $ integerFormat NoSign Nothing <** literalFormat [c]+intDesignator c = optionalFormat 0 $ integerFormat NegSign Nothing <** literalFormat [c]  decDesignator :: (Eq t, Show t, Read t, Num t) => Char -> Format t-decDesignator c = optionalFormat 0 $ decimalFormat NoSign Nothing <** literalFormat [c]+decDesignator c = optionalFormat 0 $ decimalFormat NegSign Nothing <** literalFormat [c]  daysDesigs :: Format CalendarDiffDays-daysDesigs = let-    toCD (y, (m, (w, d))) = CalendarDiffDays (y * 12 + m) (w * 7 + d)-    fromCD (CalendarDiffDays mm d) = (quot mm 12, (rem mm 12, (0, d)))-    in isoMap toCD fromCD $ intDesignator 'Y' <**> intDesignator 'M' <**> intDesignator 'W' <**> intDesignator 'D'+daysDesigs =+    let+        toCD (y, (m, (w, d))) = CalendarDiffDays (y * 12 + m) (w * 7 + d)+        fromCD (CalendarDiffDays mm d) = (quot mm 12, (rem mm 12, (0, d)))+    in+        isoMap toCD fromCD $ intDesignator 'Y' <**> intDesignator 'M' <**> intDesignator 'W' <**> intDesignator 'D' --- | ISO 8601:2004(E) sec. 4.4.3.2+-- | @PyyYmmMddD@ [ISO 8601:2004(E) sec. 4.4.3.2] durationDaysFormat :: Format CalendarDiffDays durationDaysFormat = (**>) (literalFormat "P") $ specialCaseShowFormat (mempty, "0D") $ daysDesigs --- | ISO 8601:2004(E) sec. 4.4.3.2+-- | @PyyYmmMddDThhHmmMss[.s__s__]S@ [ISO 8601:2004(E) sec. 4.4.3.2] durationTimeFormat :: Format CalendarDiffTime-durationTimeFormat = let-    toCT (cd, (h, (m, s))) =-        mappend (calendarTimeDays cd) (calendarTimeTime $ daysAndTimeOfDayToTime 0 $ TimeOfDay h m s)-    fromCT (CalendarDiffTime mm t) = let-        (d, TimeOfDay h m s) = timeToDaysAndTimeOfDay t-        in (CalendarDiffDays mm d, (h, (m, s)))-    in (**>) (literalFormat "P") $-        specialCaseShowFormat (mempty, "0D") $-            isoMap toCT fromCT $-                (<**>) daysDesigs $-                    optionalFormat (0, (0, 0)) $-                        literalFormat "T" **> intDesignator 'H' <**> intDesignator 'M' <**> decDesignator 'S'+durationTimeFormat =+    let+        toCT (cd, (h, (m, s))) =+            mappend (calendarTimeDays cd) (calendarTimeTime $ daysAndTimeOfDayToTime 0 $ TimeOfDay h m s)+        fromCT (CalendarDiffTime mm t) =+            let+                (d, TimeOfDay h m s) = timeToDaysAndTimeOfDay t+            in+                (CalendarDiffDays mm d, (h, (m, s)))+    in+        (**>) (literalFormat "P") $+            specialCaseShowFormat (mempty, "0D") $+                isoMap toCT fromCT $+                    (<**>) daysDesigs $+                        optionalFormat (0, (0, 0)) $+                            literalFormat "T" **> intDesignator 'H' <**> intDesignator 'M' <**> decDesignator 'S' --- | ISO 8601:2004(E) sec. 4.4.3.3+-- | @Pyyyy-mm-dd@ (extended), @Pyyyymmdd@ (basic) [ISO 8601:2004(E) sec. 4.4.3.3] alternativeDurationDaysFormat :: FormatExtension -> Format CalendarDiffDays-alternativeDurationDaysFormat fe = let-    toCD (y, (m, d)) = CalendarDiffDays (y * 12 + m) d-    fromCD (CalendarDiffDays mm d) = (quot mm 12, (rem mm 12, d))-    in isoMap toCD fromCD $-        (**>) (literalFormat "P") $-            extDashFormat fe (clipFormat (0, 9999) $ integerFormat NegSign $ Just 4) $-                extDashFormat fe (clipFormat (0, 12) $ integerFormat NegSign $ Just 2) $-                    (clipFormat (0, 30) $ integerFormat NegSign $ Just 2)+alternativeDurationDaysFormat fe =+    let+        toCD (y, (m, d)) = CalendarDiffDays (y * 12 + m) d+        fromCD (CalendarDiffDays mm d) = (quot mm 12, (rem mm 12, d))+    in+        isoMap toCD fromCD $+            (**>) (literalFormat "P") $+                extDashFormat fe (clipFormat (0, 9999) $ integerFormat NegSign $ Just 4) $+                    extDashFormat fe (clipFormat (0, 12) $ integerFormat NegSign $ Just 2) $+                        (clipFormat (0, 30) $ integerFormat NegSign $ Just 2) --- | ISO 8601:2004(E) sec. 4.4.3.3+-- | @Pyyyy-mm-ddThh:mm:ss@ (extended), @PyyyymmddThhmmss@ (basic) [ISO 8601:2004(E) sec. 4.4.3.3] alternativeDurationTimeFormat :: FormatExtension -> Format CalendarDiffTime-alternativeDurationTimeFormat fe = let-    toCT (cd, (h, (m, s))) =-        mappend (calendarTimeDays cd) (calendarTimeTime $ daysAndTimeOfDayToTime 0 $ TimeOfDay h m s)-    fromCT (CalendarDiffTime mm t) = let-        (d, TimeOfDay h m s) = timeToDaysAndTimeOfDay t-        in (CalendarDiffDays mm d, (h, (m, s)))-    in isoMap toCT fromCT $-        (<**>) (alternativeDurationDaysFormat fe) $-            withTimeDesignator $-                extColonFormat fe (clipFormat (0, 24) $ integerFormat NegSign (Just 2)) $-                    extColonFormat fe (clipFormat (0, 60) $ integerFormat NegSign (Just 2)) $-                        (clipFormat (0, 60) $ decimalFormat NegSign (Just 2))+alternativeDurationTimeFormat fe =+    let+        toCT (cd, (h, (m, s))) =+            mappend (calendarTimeDays cd) (calendarTimeTime $ daysAndTimeOfDayToTime 0 $ TimeOfDay h m s)+        fromCT (CalendarDiffTime mm t) =+            let+                (d, TimeOfDay h m s) = timeToDaysAndTimeOfDay t+            in+                (CalendarDiffDays mm d, (h, (m, s)))+    in+        isoMap toCT fromCT $+            (<**>) (alternativeDurationDaysFormat fe) $+                withTimeDesignator $+                    extColonFormat fe (clipFormat (0, 24) $ integerFormat NegSign (Just 2)) $+                        extColonFormat fe (clipFormat (0, 60) $ integerFormat NegSign (Just 2)) $+                            (clipFormat (0, 60) $ decimalFormat NegSign (Just 2)) --- | ISO 8601:2004(E) sec. 4.4.4.1+-- | @x\/y@ [ISO 8601:2004(E) sec. 4.4.4.1] intervalFormat :: Format a -> Format b -> Format (a, b) intervalFormat = sepFormat "/" --- | ISO 8601:2004(E) sec. 4.5+-- | @Rn\/x\/y@ [ISO 8601:2004(E) sec. 4.5] recurringIntervalFormat :: Format a -> Format b -> Format (Int, a, b) recurringIntervalFormat fa fb =     isoMap (\(r, (a, b)) -> (r, a, b)) (\(r, a, b) -> (r, (a, b))) $-        sepFormat "/" (literalFormat "R" **> integerFormat NoSign Nothing) $ intervalFormat fa fb+        sepFormat "/" (literalFormat "R" **> integerFormat NoSign Nothing) $+            intervalFormat fa fb  class ISO8601 t where     -- | The most commonly used ISO 8601 format for this type.@@ -383,34 +420,50 @@ iso8601ParseM :: (MonadFail m, ISO8601 t) => String -> m t iso8601ParseM = formatParseM iso8601Format --- | @yyyy-mm-dd@ (ISO 8601:2004(E) sec. 4.1.2.2 extended format)+-- | @yyyy-mm-dd@ [ISO 8601:2004(E) sec. 4.1.2.2 extended format] instance ISO8601 Day where     iso8601Format = calendarFormat ExtendedFormat --- | @hh:mm:ss[.sss]@ (ISO 8601:2004(E) sec. 4.2.2.2, 4.2.2.4(a) extended format)+-- | @hh:mm:ss[.s__s__]@ [ISO 8601:2004(E) sec. 4.2.2.2, 4.2.2.4(a) extended format] instance ISO8601 TimeOfDay where     iso8601Format = timeOfDayFormat ExtendedFormat --- | @±hh:mm@ (ISO 8601:2004(E) sec. 4.2.5.1 extended format)+-- | @±hh:mm@ [ISO 8601:2004(E) sec. 4.2.5.1 extended format] instance ISO8601 TimeZone where     iso8601Format = timeOffsetFormat ExtendedFormat --- | @yyyy-mm-ddThh:mm:ss[.sss]@ (ISO 8601:2004(E) sec. 4.3.2 extended format)+-- | @yyyy-mm-ddThh:mm:ss[.s__s__]@ [ISO 8601:2004(E) sec. 4.3.2 extended format] instance ISO8601 LocalTime where     iso8601Format = localTimeFormat iso8601Format iso8601Format --- | @yyyy-mm-ddThh:mm:ss[.sss]±hh:mm@ (ISO 8601:2004(E) sec. 4.3.2 extended format)+-- | @yyyy-mm-ddThh:mm:ss[.s__s__]±hh:mm@ [ISO 8601:2004(E) sec. 4.3.2 extended format] instance ISO8601 ZonedTime where     iso8601Format = zonedTimeFormat iso8601Format iso8601Format ExtendedFormat --- | @yyyy-mm-ddThh:mm:ss[.sss]Z@ (ISO 8601:2004(E) sec. 4.3.2 extended format)+-- | @yyyy-mm-ddThh:mm:ss[.s__s__]Z@ [ISO 8601:2004(E) sec. 4.3.2 extended format] instance ISO8601 UTCTime where     iso8601Format = utcTimeFormat iso8601Format iso8601Format --- | @PyYmMdD@ (ISO 8601:2004(E) sec. 4.4.3.2)+-- | @PyYmMdD@ [ISO 8601:2004(E) sec. 4.4.3.2] instance ISO8601 CalendarDiffDays where     iso8601Format = durationDaysFormat --- | @PyYmMdDThHmMs[.sss]S@ (ISO 8601:2004(E) sec. 4.4.3.2)+-- | @PyYmMdDThHmMs[.s__s__]S@ [ISO 8601:2004(E) sec. 4.4.3.2] instance ISO8601 CalendarDiffTime where     iso8601Format = durationTimeFormat++-- orphan instance+instance Read CalendarDiffDays where+    readPrec = lift $ formatReadP iso8601Format++-- orphan instance+instance Show CalendarDiffDays where+    show = formatShow iso8601Format++-- orphan instance+instance Read CalendarDiffTime where+    readPrec = lift $ formatReadP iso8601Format++-- orphan instance+instance Show CalendarDiffTime where+    show = formatShow iso8601Format
lib/Data/Time/Format/Internal.hs view
@@ -1,8 +1,8 @@ {-# LANGUAGE Safe #-}  -- |---The contents of this module is liable to change, or disappear entirely.---Please <https://github.com/haskell/time/issues/new let me know> if you depend on anything here.+-- The contents of this module is liable to change, or disappear entirely.+-- Please <https://github.com/haskell/time/issues/new let me know> if you depend on anything here. module Data.Time.Format.Internal (     -- * ISO8601 formatting     Format (..),
lib/Data/Time/Format/Locale.hs view
@@ -1,12 +1,7 @@ {-# LANGUAGE Safe #-}  -- Note: this file derives from old-locale:System.Locale.hs, which is copyright (c) The University of Glasgow 2001-module Data.Time.Format.Locale (-    TimeLocale (..),-    defaultTimeLocale,-    iso8601DateFormat,-    rfc822DateFormat,-) where+module Data.Time.Format.Locale where  import Data.Time.LocalTime.Internal.TimeZone 
lib/Data/Time/Format/Parse.hs view
@@ -2,20 +2,8 @@  {-# OPTIONS -fno-warn-orphans #-} -module Data.Time.Format.Parse (-    -- * UNIX-style parsing-    parseTimeM,-    parseTimeMultipleM,-    parseTimeOrError,-    readSTime,-    readPTime,-    ParseTime (),--    -- * Locale-    module Data.Time.Format.Locale,-) where+module Data.Time.Format.Parse where -import Control.Applicative ((<|>)) import Control.Monad.Fail import Data.Char import Data.Proxy@@ -236,10 +224,14 @@ instance Read ZonedTime where     readsPrec n = readParen False $ \s -> [(ZonedTime t z, r2) | (t, r1) <- readsPrec n s, (z, r2) <- readsPrec n r1] +(<||) :: [a] -> [a] -> [a]+[] <|| b = b+a <|| _ = a+ instance Read UTCTime where     readsPrec n s = do         (lt, s') <- readsPrec n s-        (tz, s'') <- readsPrec n s' <|> pure (utc, s')+        (tz, s'') <- readsPrec n s' <|| pure (utc, s')         return (localTimeToUTC tz lt, s'')  instance Read UniversalTime where
lib/Data/Time/Format/Parse/Class.hs view
@@ -1,7 +1,6 @@ {-# LANGUAGE Safe #-}  module Data.Time.Format.Parse.Class (-    -- * Parsing     ParseNumericPadding (..),     ParseTime (..),     parseSpecifiers,@@ -10,7 +9,9 @@     durationParseTimeSpecifier, ) where +import Control.Monad import Data.Char+import Data.Foldable import Data.Maybe import Data.Proxy import Data.Time.Format.Locale@@ -66,149 +67,187 @@     scan this s  parseSpecifiers :: ParseTime t => Proxy t -> TimeLocale -> String -> ReadP [(Char, String)]-parseSpecifiers pt locale = let-    parse :: String -> ReadP [(Char, String)]-    parse [] = return []-    parse ('%' : cs) = parse1 cs-    parse (c : cs) | isSpace c = do-        _ <- satisfy isSpace-        case cs of-            (c' : _) | isSpace c' -> return ()-            _ -> skipSpaces-        parse cs-    parse (c : cs) = do-        _ <- charCI c-        parse cs-    parse1 :: String -> ReadP [(Char, String)]-    parse1 ('-' : cs) = parse2 (Just NoPadding) cs-    parse1 ('_' : cs) = parse2 (Just SpacePadding) cs-    parse1 ('0' : cs) = parse2 (Just ZeroPadding) cs-    parse1 cs = parse2 Nothing cs-    parse2 :: Maybe ParseNumericPadding -> String -> ReadP [(Char, String)]-    parse2 mpad ('E' : cs) = parse3 mpad True cs-    parse2 mpad cs = parse3 mpad False cs-    parse3 :: Maybe ParseNumericPadding -> Bool -> String -> ReadP [(Char, String)]-    parse3 _ _ ('%' : cs) = do-        _ <- char '%'-        parse cs-    parse3 _ _ (c : cs) | Just s <- substituteTimeSpecifier pt locale c = parse $ s ++ cs-    parse3 mpad _alt (c : cs) = do-        str <- parseTimeSpecifier pt locale mpad c-        specs <- parse cs-        return $ (c, str) : specs-    parse3 _ _ [] = return []-    in parse+parseSpecifiers pt locale =+    let+        parse :: String -> ReadP [(Char, String)]+        parse [] = return []+        parse ('%' : cs) = parse1 cs+        parse (c : cs) | isSpace c = do+            _ <- satisfy isSpace+            case cs of+                (c' : _) | isSpace c' -> return ()+                _ -> skipSpaces+            parse cs+        parse (c : cs) = do+            _ <- charCI c+            parse cs+        parse1 :: String -> ReadP [(Char, String)]+        parse1 ('-' : cs) = parse2 (Just NoPadding) cs+        parse1 ('_' : cs) = parse2 (Just SpacePadding) cs+        parse1 ('0' : cs) = parse2 (Just ZeroPadding) cs+        parse1 cs = parse2 Nothing cs+        parse2 :: Maybe ParseNumericPadding -> String -> ReadP [(Char, String)]+        parse2 mpad ('E' : cs) = parse3 mpad True cs+        parse2 mpad cs = parse3 mpad False cs+        parse3 :: Maybe ParseNumericPadding -> Bool -> String -> ReadP [(Char, String)]+        parse3 _ _ ('%' : cs) = do+            _ <- char '%'+            parse cs+        parse3 _ _ (c : cs) | Just s <- substituteTimeSpecifier pt locale c = parse $ s ++ cs+        parse3 mpad _alt (c : cs) = do+            str <- parseTimeSpecifier pt locale mpad c+            specs <- parse cs+            return $ (c, str) : specs+        parse3 _ _ [] = return []+    in+        parse  data PaddingSide     = PrePadding     | PostPadding -allowEmptyParser :: Bool -> ReadP String-allowEmptyParser False = many1 (satisfy isDigit)-allowEmptyParser True = many (satisfy isDigit)+data EmptyOption = AllowEmptyOption | ForbidEmptyOption -parsePaddedDigits :: PaddingSide -> ParseNumericPadding -> Bool -> Int -> ReadP String-parsePaddedDigits _ ZeroPadding _ n = count n (satisfy isDigit)-parsePaddedDigits PrePadding SpacePadding allowEmpty _n = skipSpaces >> allowEmptyParser allowEmpty-parsePaddedDigits PostPadding SpacePadding allowEmpty _n = do-    r <- allowEmptyParser allowEmpty+checkEmptyOption :: EmptyOption -> String -> ReadP ()+checkEmptyOption ForbidEmptyOption "" = mzero+checkEmptyOption _ _ = return ()++data MunchType = AmbiguousMunchType | MaximalMunchType++data Munch = InexactMunch MunchType | ExactMunch Int++munchDigits :: MunchType -> ReadP String+munchDigits AmbiguousMunchType = many $ satisfy isDigit+munchDigits MaximalMunchType = munch isDigit++checkAll :: (a -> Bool) -> [a] -> ReadP ()+checkAll f l = for_ l $ \c -> if f c then return () else mzero++parseAnyPaddedDigits :: Maybe PaddingSide -> Munch -> ReadP String+parseAnyPaddedDigits mpad (ExactMunch n) = do+    chars <- count n get+    case mpad of+        Nothing -> do+            checkAll isDigit chars+            return chars+        Just PrePadding -> do+            let+                digits = dropWhile isSpace chars+            checkAll isDigit digits+            return digits+        Just PostPadding -> do+            let+                (digits, spaces) = span isDigit chars+            checkAll isSpace spaces+            return digits+parseAnyPaddedDigits Nothing (InexactMunch munchtype) = munchDigits munchtype+parseAnyPaddedDigits (Just PrePadding) (InexactMunch munchtype) = do     skipSpaces+    munchDigits munchtype+parseAnyPaddedDigits (Just PostPadding) (InexactMunch munchtype) = do+    r <- munchDigits munchtype+    skipSpaces     return r-parsePaddedDigits _ NoPadding False _n = many1 (satisfy isDigit)-parsePaddedDigits _ NoPadding True _n = many (satisfy isDigit) -parsePaddedSignedDigits :: ParseNumericPadding -> Int -> ReadP String-parsePaddedSignedDigits pad n = do-    sign <- option "" $ char '-' >> return "-"-    digits <- parsePaddedDigits PrePadding pad False n-    return $ sign ++ digits+parsePaddedDigits :: Maybe PaddingSide -> Munch -> EmptyOption -> ReadP String+parsePaddedDigits mps mn eo = do+    digits <- parseAnyPaddedDigits mps mn+    checkEmptyOption eo digits+    return digits -parseSignedDecimal :: ReadP String-parseSignedDecimal = do-    sign <- option "" $ char '-' >> return "-"-    skipSpaces-    digits <- many1 $ satisfy isDigit-    decimaldigits <--        option "" $ do-            _ <- char '.'-            dd <- many $ satisfy isDigit-            return $ '.' : dd-    return $ sign ++ digits ++ decimaldigits+parsePaddingDigits :: PaddingSide -> ParseNumericPadding -> EmptyOption -> MunchType -> Int -> ReadP String+parsePaddingDigits _ps NoPadding eo mt _n = parsePaddedDigits Nothing (InexactMunch mt) eo+parsePaddingDigits _ps ZeroPadding eo _mt n = parsePaddedDigits Nothing (ExactMunch n) eo+parsePaddingDigits ps SpacePadding eo mt _n = parsePaddedDigits (Just ps) (InexactMunch mt) eo +allowNegative :: ReadP String -> ReadP String+allowNegative p = do+    sign <- option "" $ fmap pure $ char '-'+    val <- p+    return $ sign ++ val+ timeParseTimeSpecifier :: TimeLocale -> Maybe ParseNumericPadding -> Char -> ReadP String-timeParseTimeSpecifier l mpad c = let-    digits' ps pad = parsePaddedDigits ps (fromMaybe pad mpad)-    digits pad = digits' PrePadding pad False-    oneOf = choice . map stringCI-    numericTZ = do-        s <- choice [char '+', char '-']-        h <- parsePaddedDigits PrePadding ZeroPadding False 2-        optional (char ':')-        m <- parsePaddedDigits PrePadding ZeroPadding False 2-        return (s : h ++ m)-    allowNegative :: ReadP String -> ReadP String-    allowNegative p = (char '-' >> fmap ('-' :) p) <++ p-    in case c of-        -- century-        'C' -> allowNegative $ digits SpacePadding 2-        'f' -> allowNegative $ digits SpacePadding 2-        -- year-        'Y' -> allowNegative $ digits SpacePadding 4-        'G' -> allowNegative $ digits SpacePadding 4-        -- year of century-        'y' -> digits ZeroPadding 2-        'g' -> digits ZeroPadding 2-        -- month of year-        'B' -> oneOf (map fst (months l))-        'b' -> oneOf (map snd (months l))-        'm' -> digits ZeroPadding 2-        -- day of month-        'd' -> digits ZeroPadding 2-        'e' -> digits SpacePadding 2-        -- week of year-        'V' -> digits ZeroPadding 2-        'U' -> digits ZeroPadding 2-        'W' -> digits ZeroPadding 2-        -- day of week-        'u' -> oneOf $ map (: []) ['1' .. '7']-        'a' -> oneOf (map snd (wDays l))-        'A' -> oneOf (map fst (wDays l))-        'w' -> oneOf $ map (: []) ['0' .. '6']-        -- day of year-        'j' -> digits ZeroPadding 3-        -- dayhalf of day (i.e. AM or PM)-        'P' ->-            oneOf-                ( let-                    (am, pm) = amPm l-                    in [am, pm]-                )-        'p' ->-            oneOf-                ( let-                    (am, pm) = amPm l-                    in [am, pm]-                )-        -- hour of day (i.e. 24h)-        'H' -> digits ZeroPadding 2-        'k' -> digits SpacePadding 2-        -- hour of dayhalf (i.e. 12h)-        'I' -> digits ZeroPadding 2-        'l' -> digits SpacePadding 2-        -- minute of hour-        'M' -> digits ZeroPadding 2-        -- second of minute-        'S' -> digits ZeroPadding 2-        -- picosecond of second-        'q' -> digits' PostPadding ZeroPadding True 12-        'Q' -> (char '.' >> digits' PostPadding NoPadding True 12) <++ return ""-        -- time zone-        'z' -> numericTZ-        'Z' -> munch1 isAlpha <++ numericTZ-        -- seconds since epoch-        's' -> (char '-' >> fmap ('-' :) (munch1 isDigit)) <++ munch1 isDigit-        _ -> fail $ "Unknown format character: " ++ show c+timeParseTimeSpecifier l mpad c =+    let+        parseDigits :: PaddingSide -> ParseNumericPadding -> EmptyOption -> MunchType -> Int -> ReadP String+        parseDigits ps pad = parsePaddingDigits ps $ fromMaybe pad mpad +        parseDigitsUsual :: ParseNumericPadding -> Int -> ReadP String+        parseDigitsUsual pad = parseDigits PrePadding pad ForbidEmptyOption AmbiguousMunchType++        oneOf = choice . map stringCI+        numericTZ = do+            s <- choice [char '+', char '-']+            h <- parseDigitsUsual ZeroPadding 2+            optional (char ':')+            m <- parseDigitsUsual ZeroPadding 2+            return (s : h ++ m)+    in+        case c of+            -- century+            'C' -> allowNegative $ parseDigitsUsual SpacePadding 2+            'f' -> allowNegative $ parseDigitsUsual SpacePadding 2+            -- year+            'Y' -> allowNegative $ parseDigitsUsual SpacePadding 4+            'G' -> allowNegative $ parseDigitsUsual SpacePadding 4+            -- year of century+            'y' -> parseDigitsUsual ZeroPadding 2+            'g' -> parseDigitsUsual ZeroPadding 2+            -- quarter of year+            'v' -> parseDigitsUsual ZeroPadding 1+            -- month of year+            'B' -> oneOf (map fst (months l))+            'b' -> oneOf (map snd (months l))+            'm' -> parseDigitsUsual ZeroPadding 2+            -- day of month+            'd' -> parseDigitsUsual ZeroPadding 2+            'e' -> parseDigitsUsual SpacePadding 2+            -- week of year+            'V' -> parseDigitsUsual ZeroPadding 2+            'U' -> parseDigitsUsual ZeroPadding 2+            'W' -> parseDigitsUsual ZeroPadding 2+            -- day of week+            'u' -> oneOf $ map (: []) ['1' .. '7']+            'a' -> oneOf (map snd (wDays l))+            'A' -> oneOf (map fst (wDays l))+            'w' -> oneOf $ map (: []) ['0' .. '6']+            -- day of year+            'j' -> parseDigitsUsual ZeroPadding 3+            -- dayhalf of day (i.e. AM or PM)+            'P' ->+                oneOf+                    ( let+                        (am, pm) = amPm l+                      in+                        [am, pm]+                    )+            'p' ->+                oneOf+                    ( let+                        (am, pm) = amPm l+                      in+                        [am, pm]+                    )+            -- hour of day (i.e. 24h)+            'H' -> parseDigitsUsual ZeroPadding 2+            'k' -> parseDigitsUsual SpacePadding 2+            -- hour of dayhalf (i.e. 12h)+            'I' -> parseDigitsUsual ZeroPadding 2+            'l' -> parseDigitsUsual SpacePadding 2+            -- minute of hour+            'M' -> parseDigitsUsual ZeroPadding 2+            -- second of minute+            'S' -> parseDigitsUsual ZeroPadding 2+            -- picosecond of second+            'q' -> parseDigits PostPadding NoPadding AllowEmptyOption MaximalMunchType 12+            'Q' -> (char '.' >> parseDigits PostPadding NoPadding AllowEmptyOption MaximalMunchType 12) <++ return ""+            -- time zone+            'z' -> numericTZ+            'Z' -> munch1 isAlpha <++ numericTZ+            -- seconds since epoch+            's' -> (char '-' >> fmap ('-' :) (munch1 isDigit)) <++ munch1 isDigit+            _ -> fail $ "Unknown format character: " ++ show c+ timeSubstituteTimeSpecifier :: TimeLocale -> Char -> Maybe String timeSubstituteTimeSpecifier l 'c' = Just $ dateTimeFmt l timeSubstituteTimeSpecifier _ 'R' = Just "%H:%M"@@ -222,19 +261,33 @@ timeSubstituteTimeSpecifier _ _ = Nothing  durationParseTimeSpecifier :: TimeLocale -> Maybe ParseNumericPadding -> Char -> ReadP String-durationParseTimeSpecifier _ mpad c = let-    padopt = parsePaddedSignedDigits $ fromMaybe NoPadding mpad-    in case c of-        'y' -> padopt 1-        'b' -> padopt 1-        'B' -> padopt 2-        'w' -> padopt 1-        'd' -> padopt 1-        'D' -> padopt 1-        'h' -> padopt 1-        'H' -> padopt 2-        'm' -> padopt 1-        'M' -> padopt 2-        's' -> parseSignedDecimal-        'S' -> parseSignedDecimal-        _ -> fail $ "Unknown format character: " ++ show c+durationParseTimeSpecifier _ mpad c =+    let+        parsePaddedSignedDigits :: Int -> ReadP String+        parsePaddedSignedDigits n = allowNegative $ do+            parsePaddingDigits PrePadding (fromMaybe NoPadding mpad) ForbidEmptyOption MaximalMunchType n++        parseSignedDecimal :: ReadP String+        parseSignedDecimal = allowNegative $ do+            digits <- munch1 isDigit+            decimaldigits <-+                option "" $ do+                    _ <- char '.'+                    dd <- munch isDigit+                    return $ '.' : dd+            return $ digits ++ decimaldigits+    in+        case c of+            'y' -> parsePaddedSignedDigits 1+            'b' -> parsePaddedSignedDigits 1+            'B' -> parsePaddedSignedDigits 2+            'w' -> parsePaddedSignedDigits 1+            'd' -> parsePaddedSignedDigits 1+            'D' -> parsePaddedSignedDigits 1+            'h' -> parsePaddedSignedDigits 1+            'H' -> parsePaddedSignedDigits 2+            'm' -> parsePaddedSignedDigits 1+            'M' -> parsePaddedSignedDigits 2+            's' -> parseSignedDecimal+            'S' -> parseSignedDecimal+            _ -> fail $ "Unknown format character: " ++ show c
lib/Data/Time/Format/Parse/Instances.hs view
@@ -3,12 +3,14 @@ {-# OPTIONS -fno-warn-orphans #-}  module Data.Time.Format.Parse.Instances (-    ) where +) where+ import Control.Applicative ((<|>)) import Data.Char import Data.Fixed import Data.List (elemIndex, find)+import Data.Maybe import Data.Ratio import Data.Time.Calendar.CalendarDiffDays import Data.Time.Calendar.Days@@ -16,6 +18,8 @@ import Data.Time.Calendar.Month import Data.Time.Calendar.OrdinalDate import Data.Time.Calendar.Private (clipValid)+import Data.Time.Calendar.Quarter+import Data.Time.Calendar.Types import Data.Time.Calendar.WeekDate import Data.Time.Clock.Internal.DiffTime import Data.Time.Clock.Internal.NominalDiffTime@@ -32,269 +36,474 @@ import Data.Traversable import Text.Read (readMaybe) -data DayComponent-    = DCCentury Integer -- century of all years-    | DCCenturyYear Integer -- 0-99, last two digits of both real years and week years-    | DCYearMonth MonthOfYear -- 1-12-    | DCMonthDay DayOfMonth -- 1-31-    | DCYearDay DayOfYear -- 1-366-    | DCWeekDay Int -- 1-7 (mon-sun)-    | DCYearWeek-        WeekType-        WeekOfYear -- 1-53 or 0-53- data WeekType     = ISOWeek     | SundayWeek     | MondayWeek+    deriving Eq -makeDayComponent :: TimeLocale -> Char -> String -> Maybe [DayComponent]-makeDayComponent l c x = let-    ra :: (Read a) => Maybe a-    ra = readMaybe x-    zeroBasedListIndex :: [String] -> Maybe Int-    zeroBasedListIndex ss = elemIndex (map toUpper x) $ fmap (map toUpper) ss-    oneBasedListIndex :: [String] -> Maybe Int-    oneBasedListIndex ss = do-        index <- zeroBasedListIndex ss-        return $ 1 + index-    in case c of-        -- %C: century (all but the last two digits of the year), 00 - 99-        'C' -> do-            a <- ra-            return [DCCentury a]-        -- %f century (all but the last two digits of the year), 00 - 99-        'f' -> do-            a <- ra-            return [DCCentury a]-        -- %Y: year-        'Y' -> do-            a <- ra-            return [DCCentury (a `div` 100), DCCenturyYear (a `mod` 100)]-        -- %G: year for Week Date format-        'G' -> do-            a <- ra-            return [DCCentury (a `div` 100), DCCenturyYear (a `mod` 100)]-        -- %y: last two digits of year, 00 - 99-        'y' -> do-            a <- ra-            return [DCCenturyYear a]-        -- %g: last two digits of year for Week Date format, 00 - 99-        'g' -> do-            a <- ra-            return [DCCenturyYear a]-        -- %B: month name, long form (fst from months locale), January - December-        'B' -> do-            a <- oneBasedListIndex $ fmap fst $ months l-            return [DCYearMonth a]-        -- %b: month name, short form (snd from months locale), Jan - Dec-        'b' -> do-            a <- oneBasedListIndex $ fmap snd $ months l-            return [DCYearMonth a]-        -- %m: month of year, leading 0 as needed, 01 - 12-        'm' -> do-            raw <- ra-            a <- clipValid 1 12 raw-            return [DCYearMonth a]-        -- %d: day of month, leading 0 as needed, 01 - 31-        'd' -> do-            raw <- ra-            a <- clipValid 1 31 raw-            return [DCMonthDay a]-        -- %e: day of month, leading space as needed, 1 - 31-        'e' -> do-            raw <- ra-            a <- clipValid 1 31 raw-            return [DCMonthDay a]-        -- %V: week for Week Date format, 01 - 53-        'V' -> do-            raw <- ra-            a <- clipValid 1 53 raw-            return [DCYearWeek ISOWeek a]-        -- %U: week number of year, where weeks start on Sunday (as sundayStartWeek), 00 - 53-        'U' -> do-            raw <- ra-            a <- clipValid 0 53 raw-            return [DCYearWeek SundayWeek a]-        -- %W: week number of year, where weeks start on Monday (as mondayStartWeek), 00 - 53-        'W' -> do-            raw <- ra-            a <- clipValid 0 53 raw-            return [DCYearWeek MondayWeek a]-        -- %u: day for Week Date format, 1 - 7-        'u' -> do-            raw <- ra-            a <- clipValid 1 7 raw-            return [DCWeekDay a]-        -- %a: day of week, short form (snd from wDays locale), Sun - Sat-        'a' -> do-            a' <- zeroBasedListIndex $ fmap snd $ wDays l-            let-                a =-                    if a' == 0-                        then 7-                        else a'-            return [DCWeekDay a]-        -- %A: day of week, long form (fst from wDays locale), Sunday - Saturday-        'A' -> do-            a' <- zeroBasedListIndex $ fmap fst $ wDays l-            let-                a =-                    if a' == 0-                        then 7-                        else a'-            return [DCWeekDay a]-        -- %w: day of week number, 0 (= Sunday) - 6 (= Saturday)-        'w' -> do-            raw <- ra-            a' <- clipValid 0 6 raw-            let-                a =-                    if a' == 0-                        then 7-                        else a'-            return [DCWeekDay a]-        -- %j: day of year for Ordinal Date format, 001 - 366-        'j' -> do-            raw <- ra-            a <- clipValid 1 366 raw-            return [DCYearDay a]-        -- unrecognised, pass on to other parsers-        _ -> return []+mkDayFromWeekType :: WeekType -> Year -> WeekOfYear -> DayOfWeek -> Maybe Day+mkDayFromWeekType wt y woy dow =+    case wt of+        ISOWeek -> fromWeekDateValid y woy $ fromEnum dow+        SundayWeek -> fromSundayStartWeekValid y woy $ mod (fromEnum dow) 7+        MondayWeek -> fromMondayStartWeekValid y woy $ fromEnum dow -makeDayComponents :: TimeLocale -> [(Char, String)] -> Maybe [DayComponent]-makeDayComponents l pairs = do-    components <- for pairs $ \(c, x) -> makeDayComponent l c x-    return $ concat components+data DayFact+    = CenturyDayFact Integer -- century of all years+    | YearOfCenturyDayFact Integer -- 0-99, last two digits of both real years and week years+    | QuarterOfYearDayFact QuarterOfYear+    | MonthOfYearDayFact MonthOfYear -- 1-12+    | DayOfMonthDayFact DayOfMonth -- 1-31+    | DayOfYearDayFact DayOfYear -- 1-366+    | DayOfWeekDayFact DayOfWeek+    | WeekOfYearDayFact+        WeekType+        WeekOfYear -- 1-53 or 0-53+    | UTCTimeDayFact UTCTime+    | TimeZoneDayFact TimeZone -safeLast :: a -> [a] -> a-safeLast x xs = last (x : xs)+lastMatch :: (a -> Maybe b) -> [a] -> Maybe b+lastMatch f aa = listToMaybe $ reverse $ catMaybes $ fmap f aa +dayFactGetCentury :: [DayFact] -> Maybe Integer+dayFactGetCentury = lastMatch $ \case+    CenturyDayFact x -> Just x+    _ -> Nothing++dayFactGetYearOfCentury :: [DayFact] -> Maybe Integer+dayFactGetYearOfCentury = lastMatch $ \case+    YearOfCenturyDayFact x -> Just x+    _ -> Nothing++dayFactGetQuarterOfYear :: [DayFact] -> Maybe QuarterOfYear+dayFactGetQuarterOfYear = lastMatch $ \case+    QuarterOfYearDayFact x -> Just x+    _ -> Nothing++dayFactGetMonthOfYear :: [DayFact] -> Maybe MonthOfYear+dayFactGetMonthOfYear = lastMatch $ \case+    MonthOfYearDayFact x -> Just x+    _ -> Nothing++dayFactGetDayOfMonth :: [DayFact] -> Maybe DayOfMonth+dayFactGetDayOfMonth = lastMatch $ \case+    DayOfMonthDayFact x -> Just x+    _ -> Nothing++dayFactGetDayOfYear :: [DayFact] -> Maybe DayOfYear+dayFactGetDayOfYear = lastMatch $ \case+    DayOfYearDayFact x -> Just x+    _ -> Nothing++dayFactGetDayOfWeek :: [DayFact] -> Maybe DayOfWeek+dayFactGetDayOfWeek = lastMatch $ \case+    DayOfWeekDayFact x -> Just x+    _ -> Nothing++dayFactGetWeekOfYear :: [DayFact] -> Maybe (WeekType, WeekOfYear)+dayFactGetWeekOfYear = lastMatch $ \case+    WeekOfYearDayFact wt x -> Just (wt, x)+    _ -> Nothing++dayFactGetUTCTime :: [DayFact] -> Maybe UTCTime+dayFactGetUTCTime = lastMatch $ \case+    UTCTimeDayFact x -> Just x+    _ -> Nothing++dayFactGetTimeZone :: [DayFact] -> Maybe TimeZone+dayFactGetTimeZone = lastMatch $ \case+    TimeZoneDayFact x -> Just x+    _ -> Nothing++readSpec_z :: String -> Maybe Int+readSpec_z = readTzOffset++readSpec_Z :: TimeLocale -> String -> Maybe TimeZone+readSpec_Z _ str | Just offset <- readTzOffset str = Just $ TimeZone offset False ""+readSpec_Z l str | Just zone <- getKnownTimeZone l str = Just zone+readSpec_Z _ "UTC" = Just utc+readSpec_Z _ [c] | Just zone <- getMilZone c = Just zone+readSpec_Z _ _ = Nothing++makeDayFact :: TimeLocale -> Char -> String -> Maybe [DayFact]+makeDayFact l c x =+    let+        ra :: Read a => Maybe a+        ra = readMaybe x+        zeroBasedListIndex :: [String] -> Maybe Int+        zeroBasedListIndex ss = elemIndex (map toUpper x) $ fmap (map toUpper) ss+        oneBasedListIndex :: [String] -> Maybe Int+        oneBasedListIndex ss = do+            index <- zeroBasedListIndex ss+            return $ 1 + index+    in+        case c of+            -- %C: century (all but the last two digits of the year), 00 - 99+            'C' -> do+                a <- ra+                return [CenturyDayFact a]+            -- %f century (all but the last two digits of the year), 00 - 99+            'f' -> do+                a <- ra+                return [CenturyDayFact a]+            -- %Y: year+            'Y' -> do+                a <- ra+                return [CenturyDayFact (a `div` 100), YearOfCenturyDayFact (a `mod` 100)]+            -- %G: year for Week Date format+            'G' -> do+                a <- ra+                return [CenturyDayFact (a `div` 100), YearOfCenturyDayFact (a `mod` 100)]+            -- %y: last two digits of year, 00 - 99+            'y' -> do+                a <- ra+                return [YearOfCenturyDayFact a]+            -- %g: last two digits of year for Week Date format, 00 - 99+            'g' -> do+                a <- ra+                return [YearOfCenturyDayFact a]+            -- %v: quarter of year, 1 - 4+            'v' -> do+                raw <- ra+                a <- clipValid 1 4 raw+                return [QuarterOfYearDayFact $ toEnum a]+            -- %B: month name, long form (fst from months locale), January - December+            'B' -> do+                a <- oneBasedListIndex $ fmap fst $ months l+                return [MonthOfYearDayFact a]+            -- %b: month name, short form (snd from months locale), Jan - Dec+            'b' -> do+                a <- oneBasedListIndex $ fmap snd $ months l+                return [MonthOfYearDayFact a]+            -- %m: month of year, leading 0 as needed, 01 - 12+            'm' -> do+                raw <- ra+                a <- clipValid 1 12 raw+                return [MonthOfYearDayFact a]+            -- %d: day of month, leading 0 as needed, 01 - 31+            'd' -> do+                raw <- ra+                a <- clipValid 1 31 raw+                return [DayOfMonthDayFact a]+            -- %e: day of month, leading space as needed, 1 - 31+            'e' -> do+                raw <- ra+                a <- clipValid 1 31 raw+                return [DayOfMonthDayFact a]+            -- %V: week for Week Date format, 01 - 53+            'V' -> do+                raw <- ra+                a <- clipValid 1 53 raw+                return [WeekOfYearDayFact ISOWeek a]+            -- %U: week number of year, where weeks start on Sunday (as sundayStartWeek), 00 - 53+            'U' -> do+                raw <- ra+                a <- clipValid 0 53 raw+                return [WeekOfYearDayFact SundayWeek a]+            -- %W: week number of year, where weeks start on Monday (as mondayStartWeek), 00 - 53+            'W' -> do+                raw <- ra+                a <- clipValid 0 53 raw+                return [WeekOfYearDayFact MondayWeek a]+            -- %u: day for Week Date format, 1 - 7+            'u' -> do+                raw <- ra+                a <- clipValid 1 7 raw+                return [DayOfWeekDayFact $ toEnum a]+            -- %a: day of week, short form (snd from wDays locale), Sun - Sat+            'a' -> do+                a <- zeroBasedListIndex $ fmap snd $ wDays l+                return [DayOfWeekDayFact $ toEnum a]+            -- %A: day of week, long form (fst from wDays locale), Sunday - Saturday+            'A' -> do+                a <- zeroBasedListIndex $ fmap fst $ wDays l+                return [DayOfWeekDayFact $ toEnum a]+            -- %w: day of week number, 0 (= Sunday) - 6 (= Saturday)+            'w' -> do+                raw <- ra+                a <- clipValid 0 6 raw+                return [DayOfWeekDayFact $ toEnum a]+            -- %j: day of year for Ordinal Date format, 001 - 366+            'j' -> do+                raw <- ra+                a <- clipValid 1 366 raw+                return [DayOfYearDayFact a]+            -- %s: number of whole seconds since the Unix epoch.+            's' -> do+                raw <- ra+                return [UTCTimeDayFact $ posixSecondsToUTCTime $ fromInteger raw]+            'z' -> do+                a <- readSpec_z x+                return [TimeZoneDayFact $ TimeZone a False ""]+            'Z' -> do+                a <- readSpec_Z l x+                return [TimeZoneDayFact a]+            -- unrecognised, pass on to other parsers+            _ -> return []++makeDayFacts :: TimeLocale -> [(Char, String)] -> Maybe [DayFact]+makeDayFacts l pairs = do+    factss <- for pairs $ \(c, x) -> makeDayFact l c x+    return $ mconcat factss++dayFactYear :: [DayFact] -> Integer+dayFactYear facts =+    let+        d = fromMaybe 70 $ dayFactGetYearOfCentury facts+        c =+            fromMaybe+                ( if d >= 69+                    then 19+                    else 20+                )+                $ dayFactGetCentury facts+    in+        100 * c + d++dayFactDay :: [DayFact] -> Maybe Day+dayFactDay facts =+    case dayFactYear facts of+        y | Just doy <- dayFactGetDayOfYear facts -> fromOrdinalDateValid y doy+        y+            | Just moy <- dayFactGetMonthOfYear facts ->+                let+                    dom = fromMaybe 1 $ dayFactGetDayOfMonth facts+                in+                    fromGregorianValid y moy dom+        y+            | Just (wt, woy) <- dayFactGetWeekOfYear facts ->+                let+                    dow = fromMaybe Thursday $ dayFactGetDayOfWeek facts+                in+                    mkDayFromWeekType wt y woy dow+        y+            | Just qoy <- dayFactGetQuarterOfYear facts ->+                let+                    moy = case qoy of+                        Q1 -> 1+                        Q2 -> 4+                        Q3 -> 7+                        Q4 -> 10+                    dom = fromMaybe 1 $ dayFactGetDayOfMonth facts+                in+                    fromGregorianValid y moy dom+        _+            | Just ut <- dayFactGetUTCTime facts ->+                let+                    tz = fromMaybe utc $ dayFactGetTimeZone facts+                in+                    Just $ localDay $ utcToLocalTime tz ut+        y | Just dom <- dayFactGetDayOfMonth facts -> fromGregorianValid y 1 dom+        y | Just dow <- dayFactGetDayOfWeek facts -> fromWeekDateValid y 1 $ fromEnum dow+        y -> fromOrdinalDateValid y 1+ instance ParseTime Day where     substituteTimeSpecifier _ = timeSubstituteTimeSpecifier     parseTimeSpecifier _ = timeParseTimeSpecifier     buildTime l pairs = do-        cs <- makeDayComponents l pairs-        -- 'Nothing' indicates a parse failure,-        -- while 'Just []' means no information-        let-            y = let-                d = safeLast 70 [x | DCCenturyYear x <- cs]-                c =-                    safeLast-                        ( if d >= 69-                            then 19-                            else 20-                        )-                        [x | DCCentury x <- cs]-                in 100 * c + d-            rest (DCYearMonth m : _) = let-                d = safeLast 1 [x | DCMonthDay x <- cs]-                in fromGregorianValid y m d-            rest (DCYearDay d : _) = fromOrdinalDateValid y d-            rest (DCYearWeek wt w : _) = let-                d = safeLast 4 [x | DCWeekDay x <- cs]-                in case wt of-                    ISOWeek -> fromWeekDateValid y w d-                    SundayWeek -> fromSundayStartWeekValid y w (d `mod` 7)-                    MondayWeek -> fromMondayStartWeekValid y w d-            rest (_ : xs) = rest xs-            rest [] = rest [DCYearMonth 1]-        rest cs+        facts <- makeDayFacts l pairs+        dayFactDay facts +instance ParseTime DayOfWeek where+    substituteTimeSpecifier _ = timeSubstituteTimeSpecifier+    parseTimeSpecifier _ = timeParseTimeSpecifier+    buildTime l pairs = do+        facts <- makeDayFacts l pairs+        dayFactGetDayOfWeek facts+            <|> (fmap dayOfWeek $ dayFactDay facts)+ instance ParseTime Month where     substituteTimeSpecifier _ = timeSubstituteTimeSpecifier     parseTimeSpecifier _ = timeParseTimeSpecifier     buildTime l pairs = do-        cs <- makeDayComponents l pairs-        -- 'Nothing' indicates a parse failure,-        -- while 'Just []' means no information-        let-            y = let-                d = safeLast 70 [x | DCCenturyYear x <- cs]-                c =-                    safeLast-                        ( if d >= 69-                            then 19-                            else 20-                        )-                        [x | DCCentury x <- cs]-                in 100 * c + d-            rest (DCYearMonth m : _) = fromYearMonthValid y m-            rest (_ : xs) = rest xs-            rest [] = fromYearMonthValid y 1-        rest cs+        facts <- makeDayFacts l pairs+        case dayFactGetMonthOfYear facts of+            Just moy ->+                let+                    y = dayFactYear facts+                in+                    Just $ YearMonth y moy+            Nothing -> fmap dayPeriod $ dayFactDay facts -mfoldl :: (Monad m) => (a -> b -> m a) -> m a -> [b] -> m a-mfoldl f = let-    mf ma b = do-        a <- ma-        f a b-    in foldl mf+instance ParseTime QuarterOfYear where+    substituteTimeSpecifier _ = timeSubstituteTimeSpecifier+    parseTimeSpecifier _ = timeParseTimeSpecifier+    buildTime l pairs = do+        facts <- makeDayFacts l pairs+        case dayFactGetQuarterOfYear facts of+            Just qoy -> Just qoy+            Nothing -> do+                QuarterDay (YearQuarter _ qoy) _ <- dayFactDay facts+                return qoy -instance ParseTime TimeOfDay where+instance ParseTime Quarter where     substituteTimeSpecifier _ = timeSubstituteTimeSpecifier     parseTimeSpecifier _ = timeParseTimeSpecifier-    buildTime l = let-        f t@(TimeOfDay h m s) (c, x) = let-            ra :: (Read a) => Maybe a-            ra = readMaybe x-            getAmPm = let+    buildTime l pairs = do+        facts <- makeDayFacts l pairs+        case dayFactGetQuarterOfYear facts of+            Just qoy ->+                let+                    y = dayFactYear facts+                in+                    Just $ YearQuarter y qoy+            Nothing -> fmap dayPeriod $ dayFactDay facts++mfoldl :: Monad m => (a -> b -> m a) -> m a -> [b] -> m a+mfoldl f =+    let+        mf ma b = do+            a <- ma+            f a b+    in+        foldl mf++data AMPM = AM | PM++data TimeFact+    = AMAPMTimeFact AMPM+    | HourTimeFact Int+    | MinuteTimeFact Int+    | WholeSecondTimeFact Int+    | FractSecondTimeFact Pico+    | UTCTimeFact UTCTime+    | ZoneTimeFact TimeZone++timeFactGetAMPM :: [TimeFact] -> Maybe AMPM+timeFactGetAMPM = lastMatch $ \case+    AMAPMTimeFact x -> Just x+    _ -> Nothing++timeFactGetHour :: [TimeFact] -> Maybe Int+timeFactGetHour = lastMatch $ \case+    HourTimeFact x -> Just x+    _ -> Nothing++timeFactGetMinute :: [TimeFact] -> Maybe Int+timeFactGetMinute = lastMatch $ \case+    MinuteTimeFact x -> Just x+    _ -> Nothing++timeFactGetWholeSecond :: [TimeFact] -> Maybe Int+timeFactGetWholeSecond = lastMatch $ \case+    WholeSecondTimeFact x -> Just x+    _ -> Nothing++timeFactGetFractSecond :: [TimeFact] -> Maybe Pico+timeFactGetFractSecond = lastMatch $ \case+    FractSecondTimeFact x -> Just x+    _ -> Nothing++timeFactGetUTC :: [TimeFact] -> Maybe UTCTime+timeFactGetUTC = lastMatch $ \case+    UTCTimeFact x -> Just x+    _ -> Nothing++timeFactGetZone :: [TimeFact] -> Maybe TimeZone+timeFactGetZone = lastMatch $ \case+    ZoneTimeFact x -> Just x+    _ -> Nothing++makeTimeFact :: TimeLocale -> Char -> String -> Maybe [TimeFact]+makeTimeFact l c x =+    let+        ra :: Read a => Maybe a+        ra = readMaybe x+        getAmPm =+            let                 upx = map toUpper x                 (amStr, pmStr) = amPm l-                in if upx == amStr-                    then Just $ TimeOfDay (h `mod` 12) m s+            in+                if upx == amStr+                    then Just [AMAPMTimeFact AM]                     else                         if upx == pmStr-                            then-                                Just $-                                    TimeOfDay-                                        ( if h < 12-                                            then h + 12-                                            else h-                                        )-                                        m-                                        s+                            then Just [AMAPMTimeFact PM]                             else Nothing-            in case c of-                'P' -> getAmPm-                'p' -> getAmPm-                'H' -> do-                    raw <- ra-                    a <- clipValid 0 23 raw-                    return $ TimeOfDay a m s-                'I' -> do-                    raw <- ra-                    a <- clipValid 1 12 raw-                    return $ TimeOfDay a m s-                'k' -> do-                    raw <- ra-                    a <- clipValid 0 23 raw-                    return $ TimeOfDay a m s-                'l' -> do-                    raw <- ra-                    a <- clipValid 1 12 raw-                    return $ TimeOfDay a m s-                'M' -> do-                    raw <- ra-                    a <- clipValid 0 59 raw-                    return $ TimeOfDay h a s-                'S' -> do-                    raw <- ra-                    a <- clipValid 0 60 raw-                    return $ TimeOfDay h m (fromInteger a)-                'q' -> do-                    ps <- (readMaybe $ take 12 $ rpad 12 '0' x) <|> return 0-                    return $ TimeOfDay h m (mkPico (floor s) ps)-                'Q' ->-                    if null x-                        then Just t-                        else do-                            ps <- (readMaybe $ take 12 $ rpad 12 '0' x) <|> return 0-                            return $ TimeOfDay h m (mkPico (floor s) ps)-                _ -> Just t-        in mfoldl f (Just midnight)+    in+        case c of+            'P' -> getAmPm+            'p' -> getAmPm+            'H' -> do+                raw <- ra+                a <- clipValid 0 23 raw+                return [HourTimeFact a]+            'I' -> do+                raw <- ra+                a <- clipValid 1 12 raw+                return [HourTimeFact a]+            'k' -> do+                raw <- ra+                a <- clipValid 0 23 raw+                return [HourTimeFact a]+            'l' -> do+                raw <- ra+                a <- clipValid 1 12 raw+                return [HourTimeFact a]+            'M' -> do+                raw <- ra+                a <- clipValid 0 59 raw+                return [MinuteTimeFact a]+            'S' -> do+                raw <- ra+                a <- clipValid 0 60 raw+                return [WholeSecondTimeFact $ fromInteger a]+            'q' -> do+                ps <- (readMaybe $ take 12 $ rpad 12 '0' x) <|> return 0+                return [FractSecondTimeFact $ mkPico 0 ps]+            'Q' ->+                if null x+                    then return []+                    else do+                        ps <- (readMaybe $ take 12 $ rpad 12 '0' x) <|> return 0+                        return [FractSecondTimeFact $ mkPico 0 ps]+            's' -> do+                raw <- ra+                return [UTCTimeFact $ posixSecondsToUTCTime $ fromInteger raw]+            'z' -> do+                a <- readSpec_z x+                return [ZoneTimeFact $ TimeZone a False ""]+            'Z' -> do+                a <- readSpec_Z l x+                return [ZoneTimeFact a]+            _ -> return [] +makeTimeFacts :: TimeLocale -> [(Char, String)] -> Maybe [TimeFact]+makeTimeFacts l pairs = do+    factss <- for pairs $ \(c, x) -> makeTimeFact l c x+    return $ mconcat factss++instance ParseTime TimeOfDay where+    substituteTimeSpecifier _ = timeSubstituteTimeSpecifier+    parseTimeSpecifier _ = timeParseTimeSpecifier+    buildTime l pairs = do+        facts <- makeTimeFacts l pairs+        -- 'Nothing' indicates a parse failure,+        -- while 'Just []' means no information+        case timeFactGetUTC facts of+            Just t ->+                let+                    zone = fromMaybe utc $ timeFactGetZone facts+                    sf = fromMaybe 0 $ timeFactGetFractSecond facts+                    TimeOfDay h m s = localTimeOfDay $ utcToLocalTime zone t+                in+                    return $ TimeOfDay h m $ s + sf+            Nothing ->+                let+                    h = fromMaybe 0 $ timeFactGetHour facts+                    m = fromMaybe 0 $ timeFactGetMinute facts+                    si = fromMaybe 0 $ timeFactGetWholeSecond facts+                    sf = fromMaybe 0 $ timeFactGetFractSecond facts+                    s :: Pico+                    s = fromIntegral si + sf+                    h' = case timeFactGetAMPM facts of+                        Nothing -> h+                        Just AM -> mod h 12+                        Just PM -> if h < 12 then h + 12 else h+                in+                    return $ TimeOfDay h' m s+ rpad :: Int -> a -> [a] -> [a] rpad n c xs = xs ++ replicate (n - length xs) c @@ -306,7 +515,7 @@     parseTimeSpecifier _ = timeParseTimeSpecifier     buildTime l xs = LocalTime <$> (buildTime l xs) <*> (buildTime l xs) -enumDiff :: (Enum a) => a -> a -> Int+enumDiff :: Enum a => a -> a -> Int enumDiff a b = (fromEnum a) - (fromEnum b)  getMilZoneHours :: Char -> Maybe Int@@ -323,11 +532,13 @@ getMilZoneHours _ = Nothing  getMilZone :: Char -> Maybe TimeZone-getMilZone c = let-    yc = toUpper c-    in do-        hours <- getMilZoneHours yc-        return $ TimeZone (hours * 60) False [yc]+getMilZone c =+    let+        yc = toUpper c+    in+        do+            hours <- getMilZoneHours yc+            return $ TimeZone (hours * 60) False [yc]  getKnownTimeZone :: TimeLocale -> String -> Maybe TimeZone getKnownTimeZone locale x = find (\tz -> map toUpper x == timeZoneName tz) (knownTimeZones locale)@@ -335,50 +546,49 @@ instance ParseTime TimeZone where     substituteTimeSpecifier _ = timeSubstituteTimeSpecifier     parseTimeSpecifier _ = timeParseTimeSpecifier-    buildTime l = let-        f :: Char -> String -> TimeZone -> Maybe TimeZone-        f 'z' str (TimeZone _ dst name)-            | Just offset <- readTzOffset str = Just $ TimeZone offset dst name-        f 'z' _ _ = Nothing-        f 'Z' str _-            | Just offset <- readTzOffset str = Just $ TimeZone offset False ""-        f 'Z' str _-            | Just zone <- getKnownTimeZone l str = Just zone-        f 'Z' "UTC" _ = Just utc-        f 'Z' [c] _-            | Just zone <- getMilZone c = Just zone-        f 'Z' _ _ = Nothing-        f _ _ tz = Just tz-        in foldl (\mt (c, s) -> mt >>= f c s) (Just $ minutesToTimeZone 0)+    buildTime l =+        let+            f :: Char -> String -> TimeZone -> Maybe TimeZone+            f 'z' str (TimeZone _ dst name) = do+                offset <- readSpec_z str+                return $ TimeZone offset dst name+            f 'Z' str _ = readSpec_Z l str+            f _ _ tz = Just tz+        in+            foldl (\mt (c, s) -> mt >>= f c s) (Just $ minutesToTimeZone 0)  readTzOffset :: String -> Maybe Int-readTzOffset str = let-    getSign '+' = Just 1-    getSign '-' = Just (-1)-    getSign _ = Nothing-    calc s h1 h2 m1 m2 = do-        sign <- getSign s-        h <- readMaybe [h1, h2]-        m <- readMaybe [m1, m2]-        return $ sign * (60 * h + m)-    in case str of-        (s : h1 : h2 : ':' : m1 : m2 : []) -> calc s h1 h2 m1 m2-        (s : h1 : h2 : m1 : m2 : []) -> calc s h1 h2 m1 m2-        _ -> Nothing+readTzOffset str =+    let+        getSign '+' = Just 1+        getSign '-' = Just (-1)+        getSign _ = Nothing+        calc s h1 h2 m1 m2 = do+            sign <- getSign s+            h <- readMaybe [h1, h2]+            m <- readMaybe [m1, m2]+            return $ sign * (60 * h + m)+    in+        case str of+            (s : h1 : h2 : ':' : m1 : m2 : []) -> calc s h1 h2 m1 m2+            (s : h1 : h2 : m1 : m2 : []) -> calc s h1 h2 m1 m2+            _ -> Nothing  instance ParseTime ZonedTime where     substituteTimeSpecifier _ = timeSubstituteTimeSpecifier     parseTimeSpecifier _ = timeParseTimeSpecifier-    buildTime l xs = let-        f (ZonedTime (LocalTime _ tod) z) ('s', x) = do-            a <- readMaybe x-            let-                s = fromInteger a-                (_, ps) = properFraction (todSec tod) :: (Integer, Pico)-                s' = s + fromRational (toRational ps)-            return $ utcToZonedTime z (posixSecondsToUTCTime s')-        f t _ = Just t-        in mfoldl f (ZonedTime <$> (buildTime l xs) <*> (buildTime l xs)) xs+    buildTime l xs =+        let+            f (ZonedTime (LocalTime _ tod) z) ('s', x) = do+                a <- readMaybe x+                let+                    s = fromInteger a+                    (_, ps) = properFraction (todSec tod) :: (Integer, Pico)+                    s' = s + fromRational (toRational ps)+                return $ utcToZonedTime z (posixSecondsToUTCTime s')+            f t _ = Just t+        in+            mfoldl f (ZonedTime <$> (buildTime l xs) <*> (buildTime l xs)) xs  instance ParseTime UTCTime where     substituteTimeSpecifier _ = timeSubstituteTimeSpecifier@@ -390,6 +600,8 @@     parseTimeSpecifier _ = timeParseTimeSpecifier     buildTime l xs = localTimeToUT1 0 <$> buildTime l xs +--- Duration+ buildTimeMonths :: [(Char, String)] -> Maybe Integer buildTimeMonths xs = do     tt <-@@ -414,19 +626,21 @@  buildTimeSeconds :: [(Char, String)] -> Maybe Pico buildTimeSeconds xs = do-    tt <- for xs $ \(c, s) -> let-        readInt :: Integer -> Maybe Pico-        readInt t = do-            i <- readMaybe s-            return $ fromInteger $ i * t-        in case c of-            'h' -> readInt 3600-            'H' -> readInt 3600-            'm' -> readInt 60-            'M' -> readInt 60-            's' -> readMaybe s-            'S' -> readMaybe s-            _ -> return 0+    tt <- for xs $ \(c, s) ->+        let+            readInt :: Integer -> Maybe Pico+            readInt t = do+                i <- readMaybe s+                return $ fromInteger $ i * t+        in+            case c of+                'h' -> readInt 3600+                'H' -> readInt 3600+                'm' -> readInt 60+                'M' -> readInt 60+                's' -> readMaybe s+                'S' -> readMaybe s+                _ -> return 0     return $ sum tt  instance ParseTime NominalDiffTime where
lib/Data/Time/LocalTime.hs view
@@ -11,14 +11,53 @@     -- getting the locale time zone     getTimeZone,     getCurrentTimeZone,-    module Data.Time.LocalTime.Internal.TimeOfDay,++    -- * Time of day+    TimeOfDay (..),+    midnight,+    midday,+    makeTimeOfDayValid,+    timeToDaysAndTimeOfDay,+    daysAndTimeOfDayToTime,+    utcToLocalTimeOfDay,+    localToUTCTimeOfDay,+    timeToTimeOfDay,+    pastMidnight,+    timeOfDayToTime,+    sinceMidnight,+    diffTimeOfDay,+    dayFractionToTimeOfDay,+    timeOfDayToDayFraction,++    -- * Calendar Duration     module Data.Time.LocalTime.Internal.CalendarDiffTime,-    module Data.Time.LocalTime.Internal.LocalTime,-    module Data.Time.LocalTime.Internal.ZonedTime,++    -- * Local Time+    LocalTime (..),+    addLocalTime,+    diffLocalTime,+    -- converting UTC and UT1 times to LocalTime+    utcToLocalTime,+    localTimeToUTC,+    ut1ToLocalTime,+    localTimeToUT1,+    -- using CalendarDiffTime+    addLocalDurationClip,+    addLocalDurationRollOver,+    diffLocalDurationClip,+    diffLocalDurationRollOver,++    -- * Zoned Time+    ZonedTime (..),+    utcToZonedTime,+    zonedTimeToUTC,+    getZonedTime,+    utcToLocalZonedTime, ) where  import Data.Time.Format () import Data.Time.LocalTime.Internal.CalendarDiffTime+import Data.Time.LocalTime.Internal.Foreign import Data.Time.LocalTime.Internal.LocalTime import Data.Time.LocalTime.Internal.TimeOfDay import Data.Time.LocalTime.Internal.TimeZone hiding (timeZoneOffsetString'')
lib/Data/Time/LocalTime/Internal/CalendarDiffTime.hs view
@@ -1,27 +1,27 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-} -module Data.Time.LocalTime.Internal.CalendarDiffTime (-    -- * Calendar Duration-    module Data.Time.LocalTime.Internal.CalendarDiffTime,-) where+module Data.Time.LocalTime.Internal.CalendarDiffTime where  import Control.DeepSeq import Data.Data-import Data.Fixed import Data.Time.Calendar.CalendarDiffDays+import Data.Time.Calendar.Gregorian import Data.Time.Clock.Internal.NominalDiffTime+import Data.Time.Clock.Internal.UTCDiff+import Data.Time.Clock.Internal.UTCTime+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  data CalendarDiffTime = CalendarDiffTime     { ctMonths :: Integer     , ctTime :: NominalDiffTime     }-    deriving-        ( Eq-        , -- | @since 1.9.2-          Data-        , -- | @since 1.9.2-          Typeable-        )+    deriving (Eq, Typeable, Data, Generic, TH.Lift)  instance NFData CalendarDiffTime where     rnf (CalendarDiffTime m t) = rnf m `seq` rnf t `seq` ()@@ -35,9 +35,6 @@     mempty = CalendarDiffTime 0 0     mappend = (<>) -instance Show CalendarDiffTime where-    show (CalendarDiffTime m t) = "P" ++ show m ++ "MT" ++ showFixed True (realToFrac t :: Pico) ++ "S"- calendarTimeDays :: CalendarDiffDays -> CalendarDiffTime calendarTimeDays (CalendarDiffDays m d) = CalendarDiffTime m $ fromInteger d * nominalDay @@ -47,3 +44,25 @@ -- | Scale by a factor. Note that @scaleCalendarDiffTime (-1)@ will not perfectly invert a duration, due to variable month lengths. scaleCalendarDiffTime :: Integer -> CalendarDiffTime -> CalendarDiffTime scaleCalendarDiffTime k (CalendarDiffTime m d) = CalendarDiffTime (k * m) (fromInteger k * d)++addUTCDurationClip :: CalendarDiffTime -> UTCTime -> UTCTime+addUTCDurationClip (CalendarDiffTime m d) (UTCTime day t) =+    addUTCTime d $ UTCTime (addGregorianMonthsClip m day) t++addUTCDurationRollOver :: CalendarDiffTime -> UTCTime -> UTCTime+addUTCDurationRollOver (CalendarDiffTime m d) (UTCTime day t) =+    addUTCTime d $ UTCTime (addGregorianMonthsRollOver m day) t++diffUTCDurationClip :: UTCTime -> UTCTime -> CalendarDiffTime+diffUTCDurationClip (UTCTime day1 t1) (UTCTime day2 t2) =+    let+        CalendarDiffTime m t = calendarTimeDays $ diffGregorianDurationClip day1 day2+    in+        CalendarDiffTime m $ t + realToFrac (t1 - t2)++diffUTCDurationRollOver :: UTCTime -> UTCTime -> CalendarDiffTime+diffUTCDurationRollOver (UTCTime day1 t1) (UTCTime day2 t2) =+    let+        CalendarDiffTime m t = calendarTimeDays $ diffGregorianDurationRollOver day1 day2+    in+        CalendarDiffTime m $ t + realToFrac (t1 - t2)
+ lib/Data/Time/LocalTime/Internal/Foreign.hs view
@@ -0,0 +1,119 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE Safe #-}++module Data.Time.LocalTime.Internal.Foreign (+    getTimeZone,+    getCurrentTimeZone,+) where++import Data.Time.Clock.Internal.UTCTime+import Data.Time.Clock.POSIX+import Data.Time.Clock.System+import Data.Time.LocalTime.Internal.TimeZone+import Foreign+import Foreign.C+#if defined(javascript_HOST_ARCH)+import Data.Time.Calendar.Gregorian+import Data.Time.Clock.Internal.NominalDiffTime+import Data.Time.LocalTime.Internal.LocalTime+import Data.Time.LocalTime.Internal.TimeOfDay+#endif++#if defined(javascript_HOST_ARCH)++foreign import javascript "((dy,dm,dd,th,tm,ts) => { return new Date(dy,dm,dd,th,tm,ts).getTimezoneOffset(); })"+  js_get_timezone_minutes :: Int -> Int -> Int -> Int -> Int -> Int -> IO Int++get_timezone_minutes :: UTCTime -> IO Int+get_timezone_minutes ut = let+    lt :: LocalTime+    lt = utcToLocalTime utc ut+    in case lt of+        LocalTime (YearMonthDay dy dm dd) (TimeOfDay th tm ts) ->+            js_get_timezone_minutes (fromInteger dy) (pred dm) dd th tm (floor ts)++getTimeZoneCTime :: CTime -> IO TimeZone+getTimeZoneCTime ct = do+    let+        ut :: UTCTime+        ut = posixSecondsToUTCTime $ secondsToNominalDiffTime $ fromIntegral $ fromCTime ct+    mins <- get_timezone_minutes ut+    return $ TimeZone mins False ""++fromCTime :: CTime -> Int64+fromCTime (CTime tt) = fromIntegral tt++#else+{-# CFILES cbits/HsTime.c #-}+foreign import ccall unsafe "HsTime.h get_current_timezone_seconds"+    get_current_timezone_seconds ::+        CTime -> Ptr CInt -> Ptr CString -> IO CLong++getTimeZoneCTime :: CTime -> IO TimeZone+getTimeZoneCTime ctime =+    with 0 $ \pdst ->+        with nullPtr $ \pcname -> do+            secs <- get_current_timezone_seconds ctime pdst pcname+            case secs of+                0x80000000 -> fail "localtime_r failed"+                _ -> do+                    dst <- peek pdst+                    cname <- peek pcname+                    name <- peekCString cname+                    return (TimeZone (div (fromIntegral secs) 60) (dst == 1) name)+#endif++-- there's no instance Bounded CTime, so this is the easiest way to check for overflow+toCTime :: Int64 -> IO CTime+toCTime t =+    let+        tt = fromIntegral t+        t' = fromIntegral tt+    in+        if t' == t+            then return $ CTime tt+            else fail "Data.Time.LocalTime.Internal.TimeZone.toCTime: Overflow"++-- | Get the configured time-zone for a given time (varying as per summertime adjustments).+getTimeZoneSystem :: SystemTime -> IO TimeZone+getTimeZoneSystem t = do+    ctime <- toCTime $ systemSeconds t+    getTimeZoneCTime ctime++-- | Get the configured time-zone for a given time (varying as per summertime adjustments).+--+-- On Unix systems the output of this function depends on:+--+-- 1. The value of @TZ@ environment variable (if set)+--+-- 2. The system time zone (usually configured by @\/etc\/localtime@ symlink)+--+-- For details see tzset(3) and localtime(3).+--+-- Example:+--+-- @+-- > let t = `UTCTime` (`Data.Time.Calendar.fromGregorian` 2021 7 1) 0+-- > `getTimeZone` t+-- CEST+-- > `System.Environment.setEnv` \"TZ\" \"America/New_York\" >> `getTimeZone` t+-- EDT+-- > `System.Environment.setEnv` \"TZ\" \"Europe/Berlin\" >> `getTimeZone` t+-- CEST+-- @+--+-- On Windows systems the output of this function depends on:+--+-- 1. The value of @TZ@ environment variable (if set).+-- See [here](https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset) for how Windows interprets this variable.+--+-- 2. The system time zone, configured in Settings+getTimeZone :: UTCTime -> IO TimeZone+getTimeZone t = do+    ctime <- toCTime $ floor $ utcTimeToPOSIXSeconds t+    getTimeZoneCTime ctime++-- | Get the configured time-zone for the current time.+getCurrentTimeZone :: IO TimeZone+getCurrentTimeZone = getSystemTime >>= getTimeZoneSystem
lib/Data/Time/LocalTime/Internal/LocalTime.hs view
@@ -1,18 +1,9 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-}  {-# OPTIONS -fno-warn-orphans #-} -module Data.Time.LocalTime.Internal.LocalTime (-    -- * Local Time-    LocalTime (..),-    addLocalTime,-    diffLocalTime,-    -- converting UTC and UT1 times to LocalTime-    utcToLocalTime,-    localTimeToUTC,-    ut1ToLocalTime,-    localTimeToUT1,-) where+module Data.Time.LocalTime.Internal.LocalTime where  import Control.DeepSeq import Data.Data@@ -22,8 +13,15 @@ import Data.Time.Clock.Internal.UTCDiff import Data.Time.Clock.Internal.UTCTime import Data.Time.Clock.Internal.UniversalTime+import Data.Time.LocalTime.Internal.CalendarDiffTime import Data.Time.LocalTime.Internal.TimeOfDay import Data.Time.LocalTime.Internal.TimeZone+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  -- | A simple day and time aggregate, where the day is of the specified parameter, -- and the time is a TimeOfDay.@@ -33,7 +31,7 @@     { localDay :: Day     , localTimeOfDay :: TimeOfDay     }-    deriving (Eq, Ord, Data, Typeable)+    deriving (Eq, Ord, Typeable, Data, Generic, TH.Lift)  instance NFData LocalTime where     rnf (LocalTime d t) = rnf d `seq` rnf t `seq` ()@@ -78,3 +76,25 @@ -- orphan instance instance Show UniversalTime where     show t = show (ut1ToLocalTime 0 t)++addLocalDurationClip :: CalendarDiffTime -> LocalTime -> LocalTime+addLocalDurationClip (CalendarDiffTime m d) (LocalTime day t) =+    addLocalTime d $ LocalTime (addGregorianMonthsClip m day) t++addLocalDurationRollOver :: CalendarDiffTime -> LocalTime -> LocalTime+addLocalDurationRollOver (CalendarDiffTime m d) (LocalTime day t) =+    addLocalTime d $ LocalTime (addGregorianMonthsRollOver m day) t++diffLocalDurationClip :: LocalTime -> LocalTime -> CalendarDiffTime+diffLocalDurationClip (LocalTime day1 t1) (LocalTime day2 t2) =+    let+        CalendarDiffTime m t = calendarTimeDays $ diffGregorianDurationClip day1 day2+    in+        CalendarDiffTime m $ t + diffTimeOfDay t1 t2++diffLocalDurationRollOver :: LocalTime -> LocalTime -> CalendarDiffTime+diffLocalDurationRollOver (LocalTime day1 t1) (LocalTime day2 t2) =+    let+        CalendarDiffTime m t = calendarTimeDays $ diffGregorianDurationRollOver day1 day2+    in+        CalendarDiffTime m $ t + diffTimeOfDay t1 t2
lib/Data/Time/LocalTime/Internal/TimeOfDay.hs view
@@ -1,22 +1,7 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-} -module Data.Time.LocalTime.Internal.TimeOfDay (-    -- * Time of day-    TimeOfDay (..),-    midnight,-    midday,-    makeTimeOfDayValid,-    timeToDaysAndTimeOfDay,-    daysAndTimeOfDayToTime,-    utcToLocalTimeOfDay,-    localToUTCTimeOfDay,-    timeToTimeOfDay,-    pastMidnight,-    timeOfDayToTime,-    sinceMidnight,-    dayFractionToTimeOfDay,-    timeOfDayToDayFraction,-) where+module Data.Time.LocalTime.Internal.TimeOfDay where  import Control.DeepSeq import Data.Data@@ -25,6 +10,12 @@ import Data.Time.Clock.Internal.DiffTime import Data.Time.Clock.Internal.NominalDiffTime import Data.Time.LocalTime.Internal.TimeZone+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  -- | Time of day as represented in hour, minute and second (with picoseconds), typically used to express local time of day. --@@ -36,10 +27,10 @@     , todMin :: Int     -- ^ range 0 - 59     , todSec :: Pico-    -- ^ Note that 0 <= 'todSec' < 61, accomodating leap seconds.+    -- ^ Note that 0 <= 'todSec' < 61, accommodating leap seconds.     -- Any local minute may have a leap second, since leap seconds happen in all zones simultaneously     }-    deriving (Eq, Ord, Data, Typeable)+    deriving (Eq, Ord, Typeable, Data, Generic, TH.Lift)  instance NFData TimeOfDay where     rnf (TimeOfDay h m s) = rnf h `seq` rnf m `seq` rnf s `seq` ()@@ -65,12 +56,14 @@ -- | Convert a period of time into a count of days and a time of day since midnight. -- The time of day will never have a leap second. timeToDaysAndTimeOfDay :: NominalDiffTime -> (Integer, TimeOfDay)-timeToDaysAndTimeOfDay dt = let-    s = realToFrac dt-    (m, ms) = divMod' s 60-    (h, hm) = divMod' m 60-    (d, dh) = divMod' h 24-    in (d, TimeOfDay dh hm ms)+timeToDaysAndTimeOfDay dt =+    let+        s = realToFrac dt+        (m, ms) = divMod' s 60+        (h, hm) = divMod' m 60+        (d, dh) = divMod' h 24+    in+        (d, TimeOfDay dh hm ms)  -- | Convert a count of days and a time of day since midnight into a period of time. daysAndTimeOfDayToTime :: Integer -> TimeOfDay -> NominalDiffTime@@ -123,3 +116,6 @@ -- | Get the fraction of a day since midnight given a time of day. timeOfDayToDayFraction :: TimeOfDay -> Rational timeOfDayToDayFraction tod = realToFrac (timeOfDayToTime tod) / realToFrac posixDayLength++diffTimeOfDay :: TimeOfDay -> TimeOfDay -> NominalDiffTime+diffTimeOfDay t1 t2 = realToFrac $ daysAndTimeOfDayToTime 0 t1 - daysAndTimeOfDayToTime 0 t2
lib/Data/Time/LocalTime/Internal/TimeZone.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE ForeignFunctionInterface #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-}  module Data.Time.LocalTime.Internal.TimeZone (@@ -10,19 +10,17 @@     minutesToTimeZone,     hoursToTimeZone,     utc,-    -- getting the locale time zone-    getTimeZone,-    getCurrentTimeZone, ) where  import Control.DeepSeq import Data.Data import Data.Time.Calendar.Private-import Data.Time.Clock.Internal.UTCTime-import Data.Time.Clock.POSIX-import Data.Time.Clock.System-import Foreign-import Foreign.C+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  -- | A TimeZone is a whole number of minutes offset from UTC, together with a name and a \"just for summer\" flag. data TimeZone = TimeZone@@ -33,7 +31,7 @@     , timeZoneName :: String     -- ^ The name of the zone, typically a three- or four-letter acronym.     }-    deriving (Eq, Ord, Data, Typeable)+    deriving (Eq, Ord, Typeable, Data, Generic, TH.Lift)  instance NFData TimeZone where     rnf (TimeZone m so n) = rnf m `seq` rnf so `seq` rnf n `seq` ()@@ -48,11 +46,13 @@  showT :: Bool -> PadOption -> Int -> String showT False opt t = showPaddedNum opt ((div t 60) * 100 + (mod t 60))-showT True opt t = let-    opt' = case opt of-        NoPad -> NoPad-        Pad i c -> Pad (max 0 $ i - 3) c-    in showPaddedNum opt' (div t 60) ++ ":" ++ show2 (mod t 60)+showT True opt t =+    let+        opt' = case opt of+            NoPad -> NoPad+            Pad i c -> Pad (max 0 $ i - 3) c+    in+        showPaddedNum opt' (div t 60) ++ ":" ++ show2 (mod t 60)  timeZoneOffsetString'' :: Bool -> PadOption -> TimeZone -> String timeZoneOffsetString'' colon opt (TimeZone t _ _)@@ -76,79 +76,3 @@ -- | The UTC time zone. utc :: TimeZone utc = TimeZone 0 False "UTC"--{-# CFILES cbits/HsTime.c #-}-foreign import ccall unsafe "HsTime.h get_current_timezone_seconds"-    get_current_timezone_seconds ::-        CTime -> Ptr CInt -> Ptr CString -> IO CLong--getTimeZoneCTime :: CTime -> IO TimeZone-getTimeZoneCTime ctime =-    with-        0-        ( \pdst ->-            with-                nullPtr-                ( \pcname -> do-                    secs <- get_current_timezone_seconds ctime pdst pcname-                    case secs of-                        0x80000000 -> fail "localtime_r failed"-                        _ -> do-                            dst <- peek pdst-                            cname <- peek pcname-                            name <- peekCString cname-                            return (TimeZone (div (fromIntegral secs) 60) (dst == 1) name)-                )-        )---- there's no instance Bounded CTime, so this is the easiest way to check for overflow-toCTime :: Int64 -> IO CTime-toCTime t = let-    tt = fromIntegral t-    t' = fromIntegral tt-    in if t' == t-        then return $ CTime tt-        else fail "Data.Time.LocalTime.Internal.TimeZone.toCTime: Overflow"---- | Get the configured time-zone for a given time (varying as per summertime adjustments).-getTimeZoneSystem :: SystemTime -> IO TimeZone-getTimeZoneSystem t = do-    ctime <- toCTime $ systemSeconds t-    getTimeZoneCTime ctime---- | Get the configured time-zone for a given time (varying as per summertime adjustments).------ On Unix systems the output of this function depends on:------ 1. The value of @TZ@ environment variable (if set)------ 2. The system time zone (usually configured by @\/etc\/localtime@ symlink)------ For details see tzset(3) and localtime(3).------ Example:------ @--- > let t = `UTCTime` (`Data.Time.Calendar.fromGregorian` 2021 7 1) 0--- > `getTimeZone` t--- CEST--- > `System.Environment.setEnv` \"TZ\" \"America/New_York\" >> `getTimeZone` t--- EDT--- > `System.Environment.setEnv` \"TZ\" \"Europe/Berlin\" >> `getTimeZone` t--- CEST--- @------ On Windows systems the output of this function depends on:------ 1. The value of @TZ@ environment variable (if set).--- See [here](https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/tzset) for how Windows interprets this variable.------ 2. The system time zone, configured in Settings-getTimeZone :: UTCTime -> IO TimeZone-getTimeZone t = do-    ctime <- toCTime $ floor $ utcTimeToPOSIXSeconds t-    getTimeZoneCTime ctime---- | Get the configured time-zone for the current time.-getCurrentTimeZone :: IO TimeZone-getCurrentTimeZone = getSystemTime >>= getTimeZoneSystem
lib/Data/Time/LocalTime/Internal/ZonedTime.hs view
@@ -1,21 +1,23 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE Safe #-}  {-# OPTIONS -fno-warn-orphans #-} -module Data.Time.LocalTime.Internal.ZonedTime (-    ZonedTime (..),-    utcToZonedTime,-    zonedTimeToUTC,-    getZonedTime,-    utcToLocalZonedTime,-) where+module Data.Time.LocalTime.Internal.ZonedTime where  import Control.DeepSeq import Data.Data import Data.Time.Clock.Internal.UTCTime import Data.Time.Clock.POSIX+import Data.Time.LocalTime.Internal.Foreign import Data.Time.LocalTime.Internal.LocalTime import Data.Time.LocalTime.Internal.TimeZone+import GHC.Generics+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif  -- | A local time together with a time zone. --@@ -26,7 +28,7 @@     { zonedTimeToLocalTime :: LocalTime     , zonedTimeZone :: TimeZone     }-    deriving (Data, Typeable)+    deriving (Typeable, Data, Generic, TH.Lift)  instance NFData ZonedTime where     rnf (ZonedTime lt z) = rnf lt `seq` rnf z `seq` ()
lib/cbits/HsTime.c view
@@ -10,7 +10,7 @@     // as Microsoft considers the POSIX named `tzset()` function     // deprecated (see http://msdn.microsoft.com/en-us/library/ms235384.aspx)     _tzset();-#else+#elif defined(HAVE_TZSET)     tzset(); #endif @@ -35,7 +35,7 @@         *pname = dst ? _tzname[1] : _tzname[0];         return - (dst ? _timezone - 3600 : _timezone); #else-# if HAVE_TZNAME+# if HAVE_TZNAME || defined(__MHS__)         *pname = *tzname; # else #  error "Don't know how to get timezone name on your OS"
lib/include/HsTime.h view
@@ -1,7 +1,7 @@ #ifndef __HSTIME_H__ #define __HSTIME_H__ -#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32)+#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32) || defined(__MHS__) #define HAVE_TIME_H 1 #else @@ -17,6 +17,8 @@ #if HAVE_TIME_H #include <time.h> #endif++#define HS_CLOCK_REALTIME (uintptr_t)(CLOCK_REALTIME)  long int get_current_timezone_seconds (time_t,int* pdst,char const* * pname); 
lib/include/HsTimeConfig.h.in view
@@ -20,12 +20,15 @@ /* Define to 1 if you have the `localtime_r' function. */ #undef HAVE_LOCALTIME_R -/* Define to 1 if you have the <memory.h> header file. */-#undef HAVE_MEMORY_H+/* Define to 1 if you have the <minix/config.h> header file. */+#undef HAVE_MINIX_CONFIG_H  /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the <stdio.h> header file. */+#undef HAVE_STDIO_H+ /* Define to 1 if you have the <stdlib.h> header file. */ #undef HAVE_STDLIB_H @@ -58,9 +61,15 @@    `tzname'. */ #undef HAVE_TZNAME +/* Define to 1 if you have the `tzset' function. */+#undef HAVE_TZSET+ /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if you have the <wchar.h> header file. */+#undef HAVE_WCHAR_H+ /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT @@ -79,7 +88,9 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION -/* Define to 1 if you have the ANSI C header files. */+/* Define to 1 if all of the C90 standard headers exist (not just the ones+   required in a freestanding environment). This macro is provided for+   backward compatibility; new code need not use it. */ #undef STDC_HEADERS  /* Define to 1 if your <sys/time.h> declares `struct tm'. */@@ -89,30 +100,86 @@ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif+/* Enable general extensions on macOS.  */+#ifndef _DARWIN_C_SOURCE+# undef _DARWIN_C_SOURCE+#endif+/* Enable general extensions on Solaris.  */+#ifndef __EXTENSIONS__+# undef __EXTENSIONS__+#endif /* Enable GNU extensions on systems that have them.  */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif-/* Enable threading extensions on Solaris.  */+/* Enable X/Open compliant socket functions that do not require linking+   with -lxnet on HP-UX 11.11.  */+#ifndef _HPUX_ALT_XOPEN_SOCKET_API+# undef _HPUX_ALT_XOPEN_SOCKET_API+#endif+/* Identify the host operating system as Minix.+   This macro does not affect the system headers' behavior.+   A future release of Autoconf may stop defining this macro.  */+#ifndef _MINIX+# undef _MINIX+#endif+/* Enable general extensions on NetBSD.+   Enable NetBSD compatibility extensions on Minix.  */+#ifndef _NETBSD_SOURCE+# undef _NETBSD_SOURCE+#endif+/* Enable OpenBSD compatibility extensions on NetBSD.+   Oddly enough, this does nothing on OpenBSD.  */+#ifndef _OPENBSD_SOURCE+# undef _OPENBSD_SOURCE+#endif+/* Define to 1 if needed for POSIX-compatible behavior.  */+#ifndef _POSIX_SOURCE+# undef _POSIX_SOURCE+#endif+/* Define to 2 if needed for POSIX-compatible behavior.  */+#ifndef _POSIX_1_SOURCE+# undef _POSIX_1_SOURCE+#endif+/* Enable POSIX-compatible threading on Solaris.  */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif+/* Enable extensions specified by ISO/IEC TS 18661-5:2014.  */+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__+# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__+#endif+/* Enable extensions specified by ISO/IEC TS 18661-1:2014.  */+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__+# undef __STDC_WANT_IEC_60559_BFP_EXT__+#endif+/* Enable extensions specified by ISO/IEC TS 18661-2:2015.  */+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__+# undef __STDC_WANT_IEC_60559_DFP_EXT__+#endif+/* Enable extensions specified by ISO/IEC TS 18661-4:2015.  */+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__+# undef __STDC_WANT_IEC_60559_FUNCS_EXT__+#endif+/* Enable extensions specified by ISO/IEC TS 18661-3:2015.  */+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__+# undef __STDC_WANT_IEC_60559_TYPES_EXT__+#endif+/* Enable extensions specified by ISO/IEC TR 24731-2:2010.  */+#ifndef __STDC_WANT_LIB_EXT2__+# undef __STDC_WANT_LIB_EXT2__+#endif+/* Enable extensions specified by ISO/IEC 24747:2009.  */+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__+# undef __STDC_WANT_MATH_SPEC_FUNCS__+#endif /* Enable extensions on HP NonStop.  */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif-/* Enable general extensions on Solaris.  */-#ifndef __EXTENSIONS__-# undef __EXTENSIONS__+/* Enable X/Open extensions.  Define to 500 only if necessary+   to make mbstate_t available.  */+#ifndef _XOPEN_SOURCE+# undef _XOPEN_SOURCE #endif --/* Define to 1 if on MINIX. */-#undef _MINIX--/* Define to 2 if the system does not provide POSIX.1 features except with-   this defined. */-#undef _POSIX_1_SOURCE--/* Define to 1 if you need to in order for `stat' and other things to work. */-#undef _POSIX_SOURCE
+ test/ForeignCalls.hs view
@@ -0,0 +1,50 @@+module Main (main) where++import Control.Exception+import Control.Monad+import Data.Foldable+import Data.Monoid+import Data.Time+import Data.Time.Clock.POSIX+import Data.Time.Clock.System+import Data.Time.Clock.TAI+import Data.Traversable+import System.Exit+import System.IO++data Test = MkTest String (IO ())++tests :: [Test]+tests =+    [ MkTest "getCurrentTime" $ void $ getCurrentTime+    , MkTest "getZonedTime" $ void $ getZonedTime+    , MkTest "getCurrentTimeZone" $ void $ getCurrentTimeZone+    , MkTest "getTimeZone" $ void $ getCurrentTime >>= getTimeZone+    , MkTest "getPOSIXTime" $ void $ getPOSIXTime+    , MkTest "getSystemTime" $ void $ getSystemTime+    , MkTest "getTime_resolution" $ void $ evaluate getTime_resolution+    , MkTest "taiClock time" $ for_ taiClock $ \(_, getTime) -> void $ getTime+    , MkTest "taiClock resolution" $ for_ taiClock $ \(res, _) -> void $ evaluate res+    ]++runTest :: Test -> IO Bool+runTest (MkTest name action) = do+    hPutStr stderr $ name <> ": "+    result <- try action+    case result of+        Left err -> do+            hPutStrLn stderr $ "FAILED: " <> show (err :: SomeException)+            return False+        Right () -> do+            hPutStrLn stderr "PASSED"+            return True++main :: IO ()+main = do+    results <- for tests $ \test -> do+        passed <- runTest test+        return (Sum $ if passed then 1 else 0 :: Int, Sum 1)+    let+        (Sum i, Sum n) = mconcat results+    hPutStrLn stderr $ show i <> " out of " <> show n <> " tests passed"+    exitWith $ if i == n then ExitSuccess else ExitFailure 1
test/main/Main.hs view
@@ -15,6 +15,7 @@ import Test.Calendar.Week import Test.Calendar.Year import Test.Clock.Conversion+import Test.Clock.Pattern import Test.Clock.Resolution import Test.Clock.TAI import Test.Format.Compile ()@@ -48,7 +49,7 @@             , testYear             , testDuration             ]-        , testGroup "Clock" [testClockConversion, testResolutions, testTAI]+        , testGroup "Clock" [testClockPatterns, testClockConversion, testResolutions, testTAI]         , testGroup "Format" [testFormat, testParseTime, testISO8601]         , testGroup "LocalTime" [testTime, testTimeOfDay, testCalendarDiffTime]         ]
+ test/main/Test/AddDiff.hs view
@@ -0,0 +1,20 @@+module Test.AddDiff (+    AddDiff (..),+    testAddDiff,+) where++import Test.Arbitrary+import Test.Tasty+import Test.Tasty.QuickCheck hiding (reason)++data AddDiff duration time = MkAddDiff+    { adName :: String+    , adAdd :: duration -> time -> time+    , adDifference :: time -> time -> duration+    }++testAddDiff :: (Arbitrary (NoLeapSeconds time), Eq time, Show time) => AddDiff duration time -> TestTree+testAddDiff MkAddDiff{..} =+    testProperty adName $+        \(MkNoLeapSeconds time1) (MkNoLeapSeconds time2) ->+            adAdd (adDifference time2 time1) time1 == time2
test/main/Test/Arbitrary.hs view
@@ -1,6 +1,9 @@ {-# OPTIONS -fno-warn-orphans #-} -module Test.Arbitrary where+module Test.Arbitrary (+    supportedDayRange,+    NoLeapSeconds (..),+) where  import Control.Monad import Data.Fixed@@ -23,14 +26,51 @@  deriving instance Show FirstWeekType +deriving instance Random Month++supportedMonthRange :: (Month, Month)+supportedMonthRange = (YearMonth (-9899) 1, YearMonth 9999 12)++shrinkYear :: Integer -> [Integer]+shrinkYear y =+    let+        yearShrink =+            if y > 2000+                then [pred y]+                else+                    if y < 2000+                        then [succ y]+                        else []+        year10Shrink =+            if y > 2010+                then fmap (\i -> y - i) [1 .. 10]+                else+                    if y < 1990+                        then fmap (\i -> y + i) [1 .. 10]+                        else []+        year100Shrink =+            if y > 2100+                then [y - 100]+                else+                    if y < 1900+                        then [y + 100]+                        else []+    in+        year100Shrink <> year10Shrink <> yearShrink+ instance Arbitrary Month where-    arbitrary = liftM MkMonth $ choose (-30000, 200000)+    arbitrary = choose supportedMonthRange  instance Arbitrary Quarter where-    arbitrary = liftM MkQuarter $ choose (-30000, 200000)+    arbitrary = fmap monthQuarter arbitrary+    shrink (YearQuarter y qoy) =+        fmap (\y' -> YearQuarter y' qoy) (shrinkYear y)+            <> fmap (YearQuarter y) (shrink qoy)  instance Arbitrary QuarterOfYear where     arbitrary = liftM toEnum $ choose (1, 4)+    shrink Q1 = []+    shrink _ = [Q1]  deriving instance Random Day @@ -39,24 +79,19 @@  instance Arbitrary Day where     arbitrary = choose supportedDayRange-    shrink day = let-        (y, m, d) = toGregorian day-        dayShrink =-            if d > 1-                then [fromGregorian y m (d - 1)]-                else []-        monthShrink =-            if m > 1-                then [fromGregorian y (m - 1) d]-                else []-        yearShrink =-            if y > 2000-                then [fromGregorian (y - 1) m d]-                else-                    if y < 2000-                        then [fromGregorian (y + 1) m d]-                        else []-        in dayShrink ++ monthShrink ++ yearShrink+    shrink day =+        let+            (y, m, d) = toGregorian day+            dayShrink =+                if d > 1+                    then [fromGregorian y m (d - 1)]+                    else []+            monthShrink =+                if m > 1+                    then [fromGregorian y (m - 1) d]+                    else []+        in+            dayShrink <> monthShrink <> fmap (\y' -> fromGregorian y' m d) (shrinkYear y)  instance CoArbitrary Day where     coarbitrary (ModifiedJulianDay d) = coarbitrary d@@ -64,6 +99,16 @@ instance Arbitrary CalendarDiffDays where     arbitrary = liftM2 CalendarDiffDays arbitrary arbitrary +newtype NoLeapSeconds a = MkNoLeapSeconds {unNoLeapSeconds :: a}+    deriving newtype (Eq, Ord, Show)++arbitraryNoLeapSeconds :: Arbitrary (NoLeapSeconds a) => Gen a+arbitraryNoLeapSeconds = fmap unNoLeapSeconds arbitrary++instance {-# OVERLAPPABLE #-} Arbitrary t => Arbitrary (NoLeapSeconds t) where+    arbitrary = fmap MkNoLeapSeconds arbitrary+    shrink (MkNoLeapSeconds t) = fmap MkNoLeapSeconds $ shrink t+ instance Arbitrary DiffTime where     arbitrary = oneof [intSecs, fracSecs] -- up to 1 leap second       where@@ -77,6 +122,17 @@ instance CoArbitrary DiffTime where     coarbitrary t = coarbitrary (fromEnum t) +instance Arbitrary (NoLeapSeconds DiffTime) where+    arbitrary = fmap MkNoLeapSeconds $ oneof [intSecs, fracSecs] -- no leap second+      where+        intSecs = liftM secondsToDiffTime' $ choose (0, 86399)+        fracSecs = liftM picosecondsToDiffTime' $ choose (0, 86399 * 10 ^ (12 :: Int))+        secondsToDiffTime' :: Integer -> DiffTime+        secondsToDiffTime' = fromInteger+        picosecondsToDiffTime' :: Integer -> DiffTime+        picosecondsToDiffTime' x = fromRational (x % 10 ^ (12 :: Int))+    shrink (MkNoLeapSeconds t) = fmap MkNoLeapSeconds $ shrink t+ instance Arbitrary NominalDiffTime where     arbitrary = oneof [intSecs, fracSecs]       where@@ -97,29 +153,37 @@  reduceDigits :: Int -> Pico -> Maybe Pico reduceDigits (-1) _ = Nothing-reduceDigits n x = let-    d :: Pico-    d = 10 ^^ (negate n)-    r = mod' x d-    in case r of-        0 -> reduceDigits (n - 1) x-        _ -> Just $ x - r+reduceDigits n x =+    let+        d :: Pico+        d = 10 ^^ (negate n)+        r = mod' x d+    in+        case r of+            0 -> reduceDigits (n - 1) x+            _ -> Just $ x - r  instance Arbitrary TimeOfDay where     arbitrary = liftM timeToTimeOfDay arbitrary-    shrink (TimeOfDay h m s) = let-        shrinkInt 0 = []-        shrinkInt 1 = [0]-        shrinkInt _ = [0, 1]-        shrinkPico 0 = []-        shrinkPico 1 = [0]-        shrinkPico p = case reduceDigits 12 p of-            Just p' -> [0, 1, p']-            Nothing -> [0, 1]-        in [TimeOfDay h' m s | h' <- shrinkInt h]-        ++ [TimeOfDay h m' s | m' <- shrinkInt m]-            ++ [TimeOfDay h m s' | s' <- shrinkPico s]+    shrink (TimeOfDay h m s) =+        let+            shrinkInt 0 = []+            shrinkInt 1 = [0]+            shrinkInt _ = [0, 1]+            shrinkPico 0 = []+            shrinkPico 1 = [0]+            shrinkPico p = case reduceDigits 12 p of+                Just p' -> [0, 1, p']+                Nothing -> [0, 1]+        in+            [TimeOfDay h' m s | h' <- shrinkInt h]+                ++ [TimeOfDay h m' s | m' <- shrinkInt m]+                ++ [TimeOfDay h m s' | s' <- shrinkPico s] +instance Arbitrary (NoLeapSeconds TimeOfDay) where+    arbitrary = fmap (MkNoLeapSeconds . timeToTimeOfDay) arbitraryNoLeapSeconds+    shrink (MkNoLeapSeconds t) = fmap MkNoLeapSeconds $ shrink t+ instance CoArbitrary TimeOfDay where     coarbitrary t = coarbitrary (timeOfDayToTime t) @@ -130,6 +194,10 @@ instance CoArbitrary LocalTime where     coarbitrary t = coarbitrary (floor (utcTimeToPOSIXSeconds (localTimeToUTC utc t)) :: Integer) +instance Arbitrary (NoLeapSeconds LocalTime) where+    arbitrary = fmap MkNoLeapSeconds $ liftM2 LocalTime arbitraryNoLeapSeconds arbitraryNoLeapSeconds+    shrink (MkNoLeapSeconds t) = fmap MkNoLeapSeconds $ shrink t+ instance Arbitrary TimeZone where     arbitrary = liftM minutesToTimeZone $ choose (-720, 720)     shrink (TimeZone 0 _ _) = []@@ -145,12 +213,20 @@ instance CoArbitrary ZonedTime where     coarbitrary t = coarbitrary (floor (utcTimeToPOSIXSeconds (zonedTimeToUTC t)) :: Integer) +instance Arbitrary (NoLeapSeconds ZonedTime) where+    arbitrary = fmap MkNoLeapSeconds $ liftM2 ZonedTime arbitraryNoLeapSeconds arbitraryNoLeapSeconds+    shrink (MkNoLeapSeconds t) = fmap MkNoLeapSeconds $ shrink t+ instance Arbitrary UTCTime where     arbitrary = liftM2 UTCTime arbitrary arbitrary     shrink t = fmap (localTimeToUTC utc) $ shrink $ utcToLocalTime utc t  instance CoArbitrary UTCTime where     coarbitrary t = coarbitrary (floor (utcTimeToPOSIXSeconds t) :: Integer)++instance Arbitrary (NoLeapSeconds UTCTime) where+    arbitrary = fmap MkNoLeapSeconds $ liftM2 UTCTime arbitraryNoLeapSeconds arbitraryNoLeapSeconds+    shrink (MkNoLeapSeconds t) = fmap MkNoLeapSeconds $ shrink t  instance Arbitrary UniversalTime where     arbitrary = liftM (\n -> ModJulianDate $ n % k) $ choose (-313698 * k, 2973483 * k) -- 1000-01-1 to 9999-12-31
test/main/Test/Calendar/CalendarProps.hs view
@@ -21,4 +21,4 @@     YearQuarter y qy -> q == YearQuarter y qy  testCalendarProps :: TestTree-testCalendarProps = nameTest "calender-props" [testYearMonth, testMonthDay, testYearQuarter]+testCalendarProps = nameTest "calendar-props" [testYearMonth, testMonthDay, testYearQuarter]
test/main/Test/Calendar/ClipDates.hs view
@@ -23,9 +23,11 @@ tupleUp2 l1 l2 = concatMap (\e -> map (e,) l2) l1  tupleUp3 :: [a] -> [b] -> [c] -> [(a, b, c)]-tupleUp3 l1 l2 l3 = let-    ts = tupleUp2 l2 l3-    in concatMap (\e -> map (\(f, g) -> (e, f, g)) ts) l1+tupleUp3 l1 l2 l3 =+    let+        ts = tupleUp2 l2 l3+    in+        concatMap (\e -> map (\(f, g) -> (e, f, g)) ts) l1  testPairs :: String -> [String] -> [String] -> TestTree testPairs name expected found = testGroup name $ fmap (\(e, f) -> testCase e $ assertEqual "" e f) $ zip expected found
test/main/Test/Calendar/ConvertBack.hs view
@@ -9,20 +9,22 @@ import Test.Tasty import Test.Tasty.HUnit -checkDay :: (Show t) => (Day -> t) -> (t -> Day) -> (t -> Maybe Day) -> Day -> String-checkDay encodeDay decodeDay decodeDayValid day = let-    st = encodeDay day-    day' = decodeDay st-    mday' = decodeDayValid st-    a =-        if day /= day'-            then unwords [show day, "-> ", show st, "-> ", show day', "(diff", show (diffDays day' day) ++ ")"]-            else ""-    b =-        if Just day /= mday'-            then unwords [show day, "->", show st, "->", show mday']-            else ""-    in a ++ b+checkDay :: Show t => (Day -> t) -> (t -> Day) -> (t -> Maybe Day) -> Day -> String+checkDay encodeDay decodeDay decodeDayValid day =+    let+        st = encodeDay day+        day' = decodeDay st+        mday' = decodeDayValid st+        a =+            if day /= day'+                then unwords [show day, "-> ", show st, "-> ", show day', "(diff", show (diffDays day' day) ++ ")"]+                else ""+        b =+            if Just day /= mday'+                then unwords [show day, "->", show st, "->", show mday']+                else ""+    in+        a ++ b  checkers :: [Day -> String] checkers =
test/main/Test/Calendar/DayPeriod.hs view
@@ -161,15 +161,21 @@  testWeek :: [TestTree] testWeek =-    [ testProperty "weekFirstDay/weekLastDay range" $ \dw (MkWDay d) -> let-        f = weekFirstDay dw d-        l = weekLastDay dw d-        in f <= d && d <= l-    , testProperty "weekFirstDay/weekLastDay range" $ \dw (MkWDay d) -> let-        f = weekFirstDay dw d-        l = weekLastDay dw d-        in addDays 6 f == l-    , testProperty "weekFirstDay dayOfWeek" $ \dw (MkWDay d) -> let-        f = weekFirstDay dw d-        in dayOfWeek f == dw+    [ testProperty "weekFirstDay/weekLastDay range" $ \dw (MkWDay d) ->+        let+            f = weekFirstDay dw d+            l = weekLastDay dw d+        in+            f <= d && d <= l+    , testProperty "weekFirstDay/weekLastDay range" $ \dw (MkWDay d) ->+        let+            f = weekFirstDay dw d+            l = weekLastDay dw d+        in+            addDays 6 f == l+    , testProperty "weekFirstDay dayOfWeek" $ \dw (MkWDay d) ->+        let+            f = weekFirstDay dw d+        in+            dayOfWeek f == dw     ]
test/main/Test/Calendar/Duration.hs view
@@ -4,43 +4,103 @@  import Data.Time.Calendar import Data.Time.Calendar.Julian+import Test.AddDiff import Test.Arbitrary () import Test.Tasty import Test.Tasty.HUnit import Test.Tasty.QuickCheck hiding (reason) -testAddDiff :: TestTree-testAddDiff =+type CalendarAddDiff = (AddDiff CalendarDiffDays Day, Integer -> Int -> Int -> Day)++gregorianClip :: CalendarAddDiff+gregorianClip = (MkAddDiff "gregorianClip" addGregorianDurationClip diffGregorianDurationClip, fromGregorian)++gregorianRollOver :: CalendarAddDiff+gregorianRollOver = (MkAddDiff "gregorianRollOver" addGregorianDurationRollOver diffGregorianDurationRollOver, fromGregorian)++julianClip :: CalendarAddDiff+julianClip = (MkAddDiff "julianClip" addJulianDurationClip diffJulianDurationClip, fromJulian)++julianRollOver :: CalendarAddDiff+julianRollOver = (MkAddDiff "julianRollOver" addJulianDurationRollOver diffJulianDurationRollOver, fromJulian)++addDiffs :: [CalendarAddDiff]+addDiffs =+    [ gregorianClip+    , gregorianRollOver+    , julianClip+    , julianRollOver+    ]++testAddDiffs :: TestTree+testAddDiffs =     testGroup-        "add diff"-        [ testProperty "add diff GregorianDurationClip" $ \day1 day2 ->-            addGregorianDurationClip (diffGregorianDurationClip day2 day1) day1 == day2-        , testProperty "add diff GregorianDurationRollOver" $ \day1 day2 ->-            addGregorianDurationRollOver (diffGregorianDurationRollOver day2 day1) day1 == day2-        , testProperty "add diff JulianDurationClip" $ \day1 day2 ->-            addJulianDurationClip (diffJulianDurationClip day2 day1) day1 == day2-        , testProperty "add diff JulianDurationRollOver" $ \day1 day2 ->-            addJulianDurationRollOver (diffJulianDurationRollOver day2 day1) day1 == day2-        ]+        "add-diff"+        $ fmap (testAddDiff . fst) addDiffs -testClip :: (Integer, Int, Int) -> (Integer, Int, Int) -> (Integer, Integer) -> TestTree-testClip (y1, m1, d1) (y2, m2, d2) (em, ed) = let-    day1 = fromGregorian y1 m1 d1-    day2 = fromGregorian y2 m2 d2-    expected = CalendarDiffDays em ed-    found = diffGregorianDurationClip day1 day2-    in testCase (show day1 ++ " - " ++ show day2) $ assertEqual "" expected found+newtype Smallish = MkSmallish Integer deriving (Eq, Ord) -testDiffs :: TestTree-testDiffs =+deriving newtype instance Show Smallish++instance Arbitrary Smallish where+    arbitrary = do+        b <- arbitrary+        n <- if b then choose (0, 60) else return 30+        return $ MkSmallish n++testPositiveDiff :: CalendarAddDiff -> TestTree+testPositiveDiff (MkAddDiff{..}, _) = testProperty adName $ \day1 (MkSmallish i) ->+    let+        day2 = addDays i day1+        r = adDifference day2 day1+    in+        property $ cdMonths r >= 0 && cdDays r >= 0++testPositiveDiffs :: TestTree+testPositiveDiffs =     testGroup-        "diffs"-        [ testClip (2017, 04, 07) (2017, 04, 07) (0, 0)-        , testClip (2017, 04, 07) (2017, 04, 01) (0, 6)-        , testClip (2017, 04, 01) (2017, 04, 07) (0, -6)-        , testClip (2017, 04, 07) (2017, 02, 01) (2, 6)-        , testClip (2017, 02, 01) (2017, 04, 07) (-2, -6)+        "positive-diff"+        $ fmap testPositiveDiff addDiffs++testSpecific :: CalendarAddDiff -> (Integer, Int, Int) -> (Integer, Int, Int) -> (Integer, Integer) -> TestTree+testSpecific (MkAddDiff{..}, fromYMD) (y2, m2, d2) (y1, m1, d1) (em, ed) =+    let+        day1 = fromYMD y1 m1 d1+        day2 = fromYMD y2 m2 d2+        expected = CalendarDiffDays em ed+        found = adDifference day2 day1+    in+        testCase (adName ++ ": " ++ show day2 ++ " - " ++ show day1) $ do+            assertEqual "add" day2 $ adAdd found day1+            assertEqual "diff" expected found++testSpecificPair :: (Integer, Int, Int) -> (Integer, Int, Int) -> (Integer, Integer) -> (Integer, Integer) -> TestTree+testSpecificPair day2 day1 clipD rollD =+    testGroup+        (show day2 ++ " - " ++ show day1)+        [ testSpecific gregorianClip day2 day1 clipD+        , testSpecific gregorianRollOver day2 day1 rollD+        , testSpecific julianClip day2 day1 clipD+        , testSpecific julianRollOver day2 day1 rollD         ] +testSpecifics :: TestTree+testSpecifics =+    testGroup+        "specific"+        [ testSpecificPair (2017, 04, 07) (2017, 04, 07) (0, 0) (0, 0)+        , testSpecific gregorianClip (2017, 04, 07) (2017, 04, 01) (0, 6)+        , testSpecific gregorianClip (2017, 04, 01) (2017, 04, 07) (0, -6)+        , testSpecific gregorianClip (2017, 04, 07) (2017, 02, 01) (2, 6)+        , testSpecific gregorianClip (2017, 02, 01) (2017, 04, 07) (-2, -6)+        , testSpecificPair (2000, 03, 01) (2000, 01, 30) (1, 1) (1, 0)+        , testSpecificPair (2001, 03, 01) (2001, 01, 30) (1, 1) (0, 30)+        , testSpecificPair (2001, 03, 01) (2000, 01, 30) (13, 1) (12, 30)+        , testSpecificPair (2000, 03, 01) (2000, 01, 31) (1, 1) (0, 30)+        , testSpecificPair (2001, 03, 01) (2001, 01, 31) (1, 1) (0, 29)+        , testSpecificPair (2001, 03, 01) (2000, 01, 31) (13, 1) (12, 29)+        , testSpecificPair (2001, 10, 01) (2001, 08, 31) (1, 1) (1, 0)+        ]+ testDuration :: TestTree-testDuration = testGroup "CalendarDiffDays" [testAddDiff, testDiffs]+testDuration = testGroup "CalendarDiffDays" [testAddDiffs, testPositiveDiffs, testSpecifics]
test/main/Test/Calendar/Easter.hs view
@@ -18,20 +18,22 @@  testEaster :: TestTree testEaster =-    testCase "testEaster" $ let-        ds = unlines $ map (\day -> unwords [showWithWDay day, "->", showWithWDay (sundayAfter day)]) days-        f y =-            unwords-                [ show y ++ ", Gregorian: moon,"-                , show (gregorianPaschalMoon y) ++ ": Easter,"-                , showWithWDay (gregorianEaster y)-                ]-                ++ "\n"-        g y =-            unwords-                [ show y ++ ", Orthodox : moon,"-                , show (orthodoxPaschalMoon y) ++ ": Easter,"-                , showWithWDay (orthodoxEaster y)-                ]-                ++ "\n"-        in assertEqual "" testEasterRef $ ds ++ concatMap (\y -> f y ++ g y) [2000 .. 2020]+    testCase "testEaster" $+        let+            ds = unlines $ map (\day -> unwords [showWithWDay day, "->", showWithWDay (sundayAfter day)]) days+            f y =+                unwords+                    [ show y ++ ", Gregorian: moon,"+                    , show (gregorianPaschalMoon y) ++ ": Easter,"+                    , showWithWDay (gregorianEaster y)+                    ]+                    ++ "\n"+            g y =+                unwords+                    [ show y ++ ", Orthodox : moon,"+                    , show (orthodoxPaschalMoon y) ++ ": Easter,"+                    , showWithWDay (orthodoxEaster y)+                    ]+                    ++ "\n"+        in+            assertEqual "" testEasterRef $ ds ++ concatMap (\y -> f y ++ g y) [2000 .. 2020]
test/main/Test/Calendar/MonthDay.hs view
@@ -2,6 +2,8 @@     testMonthDay, ) where +import Data.Time.Calendar+import Data.Time.Calendar.Month import Data.Time.Calendar.MonthDay import Test.Calendar.MonthDayRef import Test.Tasty@@ -14,8 +16,23 @@  testMonthDay :: TestTree testMonthDay =-    testCase "testMonthDay" $-        assertEqual "" testMonthDayRef $ concat $ map (\isL -> unlines (leap isL : yearDays isL)) [False, True]+    testGroup+        "MonthDay"+        [ testCase "good" $+            assertEqual "" testMonthDayRef $+                concat $+                    map (\isL -> unlines (leap isL : yearDays isL)) [False, True]+        , testGroup+            "clip"+            [ testCase "12" $ assertEqual "" (YearMonthDay 2005 05 12) (MonthDay (MkMonth 24064) 12)+            , testCase "1" $ assertEqual "" (YearMonthDay 2005 05 1) (MonthDay (MkMonth 24064) 1)+            , testCase "0" $ assertEqual "" (YearMonthDay 2005 05 1) (MonthDay (MkMonth 24064) 0)+            , testCase "-1" $ assertEqual "" (YearMonthDay 2005 05 1) (MonthDay (MkMonth 24064) (-1))+            , testCase "31" $ assertEqual "" (YearMonthDay 2005 05 31) (MonthDay (MkMonth 24064) 31)+            , testCase "32" $ assertEqual "" (YearMonthDay 2005 05 31) (MonthDay (MkMonth 24064) 32)+            , testCase "33" $ assertEqual "" (YearMonthDay 2005 05 31) (MonthDay (MkMonth 24064) 33)+            ]+        ]   where     leap isLeap =         if isLeap@@ -28,6 +45,7 @@                     (m, d) = dayOfYearToMonthAndDay isLeap yd                     yd' = monthAndDayToDayOfYear isLeap m d                     mdtext = show m ++ "-" ++ show d-                    in showCompare yd mdtext yd'+                in+                    showCompare yd mdtext yd'             )             [-2 .. 369]
test/main/Test/Calendar/Valid.hs view
@@ -11,36 +11,38 @@ import Test.Tasty.QuickCheck hiding (reason)  validResult :: (Eq c, Show c, Eq t, Show t) => (s -> c) -> Bool -> (t -> c) -> (c -> t) -> (c -> Maybe t) -> s -> Result-validResult sc valid toComponents fromComponents fromComponentsValid s = let-    c = sc s-    mt = fromComponentsValid c-    t' = fromComponents c-    c' = toComponents t'-    in if valid-        then case mt of-            Nothing -> rejected-            Just t ->-                if t' /= t-                    then failed{reason = "'fromValid' gives " ++ show t ++ ", but 'from' gives " ++ show t'}-                    else-                        if c' /= c-                            then-                                failed-                                    { reason =-                                        "found valid, but converts "-                                            ++ show c-                                            ++ " -> "-                                            ++ show t'-                                            ++ " -> "-                                            ++ show c'-                                    }-                            else succeeded-        else case mt of-            Nothing ->-                if c' /= c-                    then succeeded-                    else failed{reason = show c ++ " found invalid, but converts with " ++ show t'}-            Just _ -> rejected+validResult sc valid toComponents fromComponents fromComponentsValid s =+    let+        c = sc s+        mt = fromComponentsValid c+        t' = fromComponents c+        c' = toComponents t'+    in+        if valid+            then case mt of+                Nothing -> rejected+                Just t ->+                    if t' /= t+                        then failed{reason = "'fromValid' gives " ++ show t ++ ", but 'from' gives " ++ show t'}+                        else+                            if c' /= c+                                then+                                    failed+                                        { reason =+                                            "found valid, but converts "+                                                ++ show c+                                                ++ " -> "+                                                ++ show t'+                                                ++ " -> "+                                                ++ show c'+                                        }+                                else succeeded+            else case mt of+                Nothing ->+                    if c' /= c+                        then succeeded+                        else failed{reason = show c ++ " found invalid, but converts with " ++ show t'}+                Just _ -> rejected  validTest ::     (Arbitrary s, Show s, Eq c, Show c, Eq t, Show t) =>@@ -58,16 +60,20 @@         ]  toSundayStartWeek :: Day -> (Integer, Int, Int)-toSundayStartWeek day = let-    (y, _) = toOrdinalDate day-    (w, d) = sundayStartWeek day-    in (y, w, d)+toSundayStartWeek day =+    let+        (y, _) = toOrdinalDate day+        (w, d) = sundayStartWeek day+    in+        (y, w, d)  toMondayStartWeek :: Day -> (Integer, Int, Int)-toMondayStartWeek day = let-    (y, _) = toOrdinalDate day-    (w, d) = mondayStartWeek day-    in (y, w, d)+toMondayStartWeek day =+    let+        (y, _) = toOrdinalDate day+        (w, d) = mondayStartWeek day+    in+        (y, w, d)  newtype WYear     = MkWYear Year
test/main/Test/Calendar/Week.hs view
@@ -13,7 +13,8 @@ testDay :: TestTree testDay =     nameTest "day" $ do-        let day = fromGregorian 2018 1 9+        let+            day = fromGregorian 2018 1 9         assertEqual "" (ModifiedJulianDay 58127) day         assertEqual "" (2018, 2, 2) $ toWeekDate day         assertEqual "" Tuesday $ dayOfWeek day@@ -40,8 +41,8 @@             assertEqual "" [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday] [Sunday .. Saturday]         , nameTest "[Thursday .. Wednesday]" $             assertEqual "" [Thursday, Friday, Saturday, Sunday, Monday, Tuesday, Wednesday] [Thursday .. Wednesday]-        , nameTest "[Tuesday ..]" $-            assertEqual+        , nameTest "[Tuesday ..]"+            $ assertEqual                 ""                 [ Tuesday                 , Wednesday@@ -59,9 +60,9 @@                 , Monday                 , Tuesday                 ]-                $ take 15 [Tuesday ..]-        , nameTest "[Wednesday, Tuesday ..]" $-            assertEqual+            $ take 15 [Tuesday ..]+        , nameTest "[Wednesday, Tuesday ..]"+            $ assertEqual                 ""                 [ Wednesday                 , Tuesday@@ -79,7 +80,7 @@                 , Thursday                 , Wednesday                 ]-                $ take 15 [Wednesday, Tuesday ..]+            $ take 15 [Wednesday, Tuesday ..]         , nameTest "[Sunday, Friday ..]" $             assertEqual "" [Sunday, Friday, Wednesday, Monday, Saturday, Thursday, Tuesday, Sunday] $                 take 8 [Sunday, Friday ..]@@ -99,27 +100,35 @@ prop_firstDayOfWeekOnAfter_Day dw d = dayOfWeek (firstDayOfWeekOnAfter dw d) == dw  prop_toFromWeekCalendar :: FirstWeekType -> DayOfWeek -> Day -> Bool-prop_toFromWeekCalendar wt ws d = let-    (y, wy, dw) = toWeekCalendar wt ws d-    in fromWeekCalendar wt ws y wy dw == d+prop_toFromWeekCalendar wt ws d =+    let+        (y, wy, dw) = toWeekCalendar wt ws d+    in+        fromWeekCalendar wt ws y wy dw == d  prop_weekChanges :: FirstWeekType -> DayOfWeek -> Day -> Bool-prop_weekChanges wt ws d = let-    (_, wy0, _) = toWeekCalendar wt ws d-    (_, wy1, dw) = toWeekCalendar wt ws $ succ d-    in if dw == ws then wy0 /= wy1 else wy0 == wy1+prop_weekChanges wt ws d =+    let+        (_, wy0, _) = toWeekCalendar wt ws d+        (_, wy1, dw) = toWeekCalendar wt ws $ succ d+    in+        if dw == ws then wy0 /= wy1 else wy0 == wy1  prop_weekYearWholeStart :: DayOfWeek -> Year -> Bool-prop_weekYearWholeStart ws y = let-    d = fromWeekCalendar FirstWholeWeek ws y 1 ws-    (y', dy) = toOrdinalDate d-    in y == y' && dy >= 1 && dy <= 7+prop_weekYearWholeStart ws y =+    let+        d = fromWeekCalendar FirstWholeWeek ws y 1 ws+        (y', dy) = toOrdinalDate d+    in+        y == y' && dy >= 1 && dy <= 7  prop_weekYearMostStart :: DayOfWeek -> Year -> Bool-prop_weekYearMostStart ws y = let-    d = fromWeekCalendar FirstMostWeek ws y 2 ws-    (y', dy) = toOrdinalDate d-    in y == y' && dy >= 5 && dy <= 11+prop_weekYearMostStart ws y =+    let+        d = fromWeekCalendar FirstMostWeek ws y 2 ws+        (y', dy) = toOrdinalDate d+    in+        y == y' && dy >= 5 && dy <= 11  testDiff :: TestTree testDiff =
test/main/Test/Clock/Conversion.hs view
@@ -9,17 +9,19 @@  testClockConversion :: TestTree testClockConversion =-    testGroup "clock conversion" $ let-        testPair :: (SystemTime, UTCTime) -> TestTree-        testPair (st, ut) =-            testGroup (show ut) $-                [ testCase "systemToUTCTime" $ assertEqual (show ut) ut $ systemToUTCTime st-                , testCase "utcToSystemTime" $ assertEqual (show ut) st $ utcToSystemTime ut-                ]-        in [ testPair (MkSystemTime 0 0, UTCTime systemEpochDay 0)-           , testPair (MkSystemTime 86399 0, UTCTime systemEpochDay 86399)-           , testPair (MkSystemTime 86399 999999999, UTCTime systemEpochDay 86399.999999999)-           , testPair (MkSystemTime 86399 1000000000, UTCTime systemEpochDay 86400)-           , testPair (MkSystemTime 86399 1999999999, UTCTime systemEpochDay 86400.999999999)-           , testPair (MkSystemTime 86400 0, UTCTime (succ systemEpochDay) 0)-           ]+    testGroup "clock conversion" $+        let+            testPair :: (SystemTime, UTCTime) -> TestTree+            testPair (st, ut) =+                testGroup (show ut) $+                    [ testCase "systemToUTCTime" $ assertEqual (show ut) ut $ systemToUTCTime st+                    , testCase "utcToSystemTime" $ assertEqual (show ut) st $ utcToSystemTime ut+                    ]+        in+            [ testPair (MkSystemTime 0 0, UTCTime systemEpochDay 0)+            , testPair (MkSystemTime 86399 0, UTCTime systemEpochDay 86399)+            , testPair (MkSystemTime 86399 999999999, UTCTime systemEpochDay 86399.999999999)+            , testPair (MkSystemTime 86399 1000000000, UTCTime systemEpochDay 86400)+            , testPair (MkSystemTime 86399 1999999999, UTCTime systemEpochDay 86400.999999999)+            , testPair (MkSystemTime 86400 0, UTCTime (succ systemEpochDay) 0)+            ]
+ test/main/Test/Clock/Pattern.hs view
@@ -0,0 +1,32 @@+module Test.Clock.Pattern (+    testClockPatterns,+) where++import Data.Time.Clock+import Test.Tasty+import Test.Tasty.HUnit++testClockPatterns :: TestTree+testClockPatterns =+    let+        testSame :: forall a. (Eq a, Show a) => TestName -> a -> a -> TestTree+        testSame name expected found = testCase name $ assertEqual "" expected found+    in+        testGroup "pattern" $+            [ testGroup+                "construct"+                [ testSame "Seconds" 52.4 (Seconds 52.4)+                , testSame "Seconds-Picoseconds" (Picoseconds 7_276_000_000_000) (Seconds 7.276)+                , testSame "Minutes-Seconds" (Seconds 210) (Minutes 3.5)+                , testSame "Hours-Minutes" (Minutes 120) (Hours 2)+                , testSame "Nominal" 37.4 (Nominal 37.4)+                ]+            , testGroup+                "deconstruct"+                [ testSame "Seconds" 52.4 ((\(Seconds x) -> x) 52.4)+                , testSame "Seconds-Picoseconds" 7.276 ((\(Seconds x) -> x) $ Picoseconds 7_276_000_000_000)+                , testSame "Minutes-Seconds" 3.5 ((\(Minutes x) -> x) $ Seconds 210)+                , testSame "Hours-Minutes" 2 ((\(Hours x) -> x) $ Minutes 120)+                , testSame "Nominal" 37.4 ((\(Nominal x) -> x) 37.4)+                ]+            ]
test/main/Test/Clock/TAI.hs view
@@ -19,28 +19,30 @@  testTAI :: TestTree testTAI =-    testGroup "leap second transition" $ let-        dayA = fromGregorian 1972 6 30-        dayB = fromGregorian 1972 7 1-        utcTime1 = UTCTime dayA 86399-        utcTime2 = UTCTime dayA 86400-        utcTime3 = UTCTime dayB 0-        mAbsTime1 = utcToTAITime sampleLeapSecondMap utcTime1-        mAbsTime2 = utcToTAITime sampleLeapSecondMap utcTime2-        mAbsTime3 = utcToTAITime sampleLeapSecondMap utcTime3-        in [ testCase "mapping" $ do+    testGroup "leap second transition" $+        let+            dayA = fromGregorian 1972 6 30+            dayB = fromGregorian 1972 7 1+            utcTime1 = UTCTime dayA 86399+            utcTime2 = UTCTime dayA 86400+            utcTime3 = UTCTime dayB 0+            mAbsTime1 = utcToTAITime sampleLeapSecondMap utcTime1+            mAbsTime2 = utcToTAITime sampleLeapSecondMap utcTime2+            mAbsTime3 = utcToTAITime sampleLeapSecondMap utcTime3+        in+            [ testCase "mapping" $ do                 assertEqual "dayA" (Just 10) $ sampleLeapSecondMap dayA                 assertEqual "dayB" (Just 11) $ sampleLeapSecondMap dayB-           , testCase "day length" $ do+            , testCase "day length" $ do                 assertEqual "dayA" (Just 86401) $ utcDayLength sampleLeapSecondMap dayA                 assertEqual "dayB" (Just 86400) $ utcDayLength sampleLeapSecondMap dayB-           , testCase "differences" $ do+            , testCase "differences" $ do                 absTime1 <- assertJust mAbsTime1                 absTime2 <- assertJust mAbsTime2                 absTime3 <- assertJust mAbsTime3                 assertEqual "absTime2 - absTime1" 1 $ diffAbsoluteTime absTime2 absTime1                 assertEqual "absTime3 - absTime2" 1 $ diffAbsoluteTime absTime3 absTime2-           , testGroup+            , testGroup                 "round-trip"                 [ testCase "1" $ do                     absTime <- assertJust mAbsTime1@@ -55,4 +57,4 @@                     utcTime <- assertJust $ taiToUTCTime sampleLeapSecondMap absTime                     assertEqual "round-trip" utcTime3 utcTime                 ]-           ]+            ]
test/main/Test/Format/Compile.hs view
@@ -1,8 +1,7 @@ -- Tests succeed if module compiles-{-# LANGUAGE GeneralizedNewtypeDeriving #-}- module Test.Format.Compile (-    ) where++) where  import Data.Time 
test/main/Test/Format/Format.hs view
@@ -9,12 +9,12 @@ import Test.TestUtil  -- as found in http://www.opengroup.org/onlinepubs/007908799/xsh/strftime.html--- plus FgGklz+-- plus FgGklvz -- f not supported -- P not always supported -- s time-zone dependent chars :: [Char]-chars = "aAbBcCdDeFgGhHIjklmMnprRStTuUVwWxXyYzZ%"+chars = "aAbBcCdDeFgGhHIjklmMnprRStTuUvVwWxXyYzZ%"  -- as found in "man strftime" on a glibc system. '#' is different, though modifiers :: [Char]@@ -63,10 +63,12 @@ testDayOfWeek =     testGroup "DayOfWeek" $         tgroup "uwaA" $ \fmt ->-            tgroup days $ \day -> let-                dayFormat = formatTime defaultTimeLocale ['%', fmt] day-                dowFormat = formatTime defaultTimeLocale ['%', fmt] $ dayOfWeek day-                in assertEqual "" dayFormat dowFormat+            tgroup days $ \day ->+                let+                    dayFormat = formatTime defaultTimeLocale ['%', fmt] day+                    dowFormat = formatTime defaultTimeLocale ['%', fmt] $ dayOfWeek day+                in+                    assertEqual "" dayFormat dowFormat  testZone :: String -> String -> Int -> TestTree testZone fmt expected minutes =@@ -161,32 +163,40 @@         , testAFormat "%3ES" "01.245" (61.24582 :: DiffTime)         ] -testCalenderDiffDays :: TestTree-testCalenderDiffDays =+testCalendarDiffDays :: TestTree+testCalendarDiffDays =     testGroup-        "CalenderDiffDays"+        "CalendarDiffDays"         [ testAFormat "%yy%Bm%ww%Dd" "5y4m3w2d" $ CalendarDiffDays 64 23         , testAFormat "%bm %dd" "64m 23d" $ CalendarDiffDays 64 23         , testAFormat "%yy%Bm%ww%Dd" "-5y-4m-3w-2d" $ CalendarDiffDays (-64) (-23)         , testAFormat "%bm %dd" "-64m -23d" $ CalendarDiffDays (-64) (-23)         ] -testCalenderDiffTime :: TestTree-testCalenderDiffTime =+testCalendarDiffTime :: TestTree+testCalendarDiffTime =     testGroup-        "CalenderDiffTime"+        "CalendarDiffTime"         [ testAFormat "%yy%Bm%ww%Dd%Hh%Mm%Ss" "5y4m3w2d2h22m8s" $ CalendarDiffTime 64 $ 23 * 86400 + 8528.21         , testAFormat "%yy%Bm%ww%Dd%Hh%Mm%ESs" "5y4m3w2d2h22m8.21s" $ CalendarDiffTime 64 $ 23 * 86400 + 8528.21         , testAFormat "%yy%Bm%ww%Dd%Hh%Mm%0ESs" "5y4m3w2d2h22m08.210000000000s" $-            CalendarDiffTime 64 $ 23 * 86400 + 8528.21+            CalendarDiffTime 64 $+                23 * 86400 + 8528.21         , testAFormat "%bm %dd %hh %mm %Ess" "64m 23d 554h 33262m 1995728.21s" $-            CalendarDiffTime 64 $ 23 * 86400 + 8528.21+            CalendarDiffTime 64 $+                23 * 86400 + 8528.21         , testAFormat "%yy%Bm%ww%Dd%Hh%Mm%Ss" "-5y-4m-3w-2d-2h-22m-8s" $-            CalendarDiffTime (-64) $ negate $ 23 * 86400 + 8528.21+            CalendarDiffTime (-64) $+                negate $+                    23 * 86400 + 8528.21         , testAFormat "%yy%Bm%ww%Dd%Hh%Mm%ESs" "-5y-4m-3w-2d-2h-22m-8.21s" $-            CalendarDiffTime (-64) $ negate $ 23 * 86400 + 8528.21+            CalendarDiffTime (-64) $+                negate $+                    23 * 86400 + 8528.21         , testAFormat "%bm %dd %hh %mm %Ess" "-64m -23d -554h -33262m -1995728.21s" $-            CalendarDiffTime (-64) $ negate $ 23 * 86400 + 8528.21+            CalendarDiffTime (-64) $+                negate $+                    23 * 86400 + 8528.21         ]  testFormat :: TestTree@@ -197,6 +207,6 @@         , testTimeZone         , testNominalDiffTime         , testDiffTime-        , testCalenderDiffDays-        , testCalenderDiffTime+        , testCalendarDiffDays+        , testCalendarDiffTime         ]
test/main/Test/Format/ISO8601.hs view
@@ -4,10 +4,10 @@     testISO8601, ) where +import Data.Coerce import Data.Ratio import Data.Time import Data.Time.Format.ISO8601-import Data.Time.Format.Internal import Test.Arbitrary () import Test.QuickCheck.Property import Test.Tasty@@ -26,38 +26,52 @@             let                 found = formatParseM fmt str                 expected = Just val-                in property $+            in+                property $                     if expected == found                         then succeeded                         else failed{reason = show str ++ ": expected " ++ (show expected) ++ ", found " ++ (show found)}  class SpecialTestValues a where+    testGen :: Gen a+    default testGen :: Arbitrary a => Gen a+    testGen = arbitrary+     -- | values that should always be tested     specialTestValues :: [a]--instance {-# OVERLAPPABLE #-} SpecialTestValues a where     specialTestValues = [] +instance {-# OVERLAPPABLE #-} Arbitrary a => SpecialTestValues a+ instance SpecialTestValues TimeOfDay where     specialTestValues = [TimeOfDay 0 0 0, TimeOfDay 0 0 60, TimeOfDay 1 0 60, TimeOfDay 24 0 0] -readShowTestCheck :: (Eq a, Show a, Arbitrary a, SpecialTestValues a) => (a -> Bool) -> Format a -> [TestTree]-readShowTestCheck skip fmt = [nameTest "random" $ readShowProperty skip fmt, nameTest "special" $ fmap (\a -> nameTest (show a) $ readShowProperty skip fmt a) $ filter (not . skip) specialTestValues]+instance SpecialTestValues (Integer, Int) where+    testGen = do+        Small y <- arbitrary+        woy <- choose (-10, 120)+        pure (y, woy) -readShowTest :: (Eq a, Show a, Arbitrary a, SpecialTestValues a) => Format a -> [TestTree]+readShowTestCheck :: (Eq a, Show a, SpecialTestValues a) => (a -> Bool) -> Format a -> [TestTree]+readShowTestCheck skip fmt =+    [ nameTest "random" $ fmap (readShowProperty skip fmt) testGen+    , nameTest "special" $ fmap (\a -> nameTest (show a) $ readShowProperty skip fmt a) $ filter (not . skip) specialTestValues+    ]++readShowTest :: (Eq a, Show a, SpecialTestValues a) => Format a -> [TestTree] readShowTest = readShowTestCheck $ \_ -> False  readBoth :: NameTest t => (FormatExtension -> t) -> [TestTree] readBoth fmts = [nameTest "extended" $ fmts ExtendedFormat, nameTest "basic" $ fmts BasicFormat] -readShowTestsCheck :: (Eq a, Show a, Arbitrary a, SpecialTestValues a) => (a -> Bool) -> (FormatExtension -> Format a) -> [TestTree]+readShowTestsCheck :: (Eq a, Show a, SpecialTestValues a) => (a -> Bool) -> (FormatExtension -> Format a) -> [TestTree] readShowTestsCheck skip fmts = readBoth $ \fe -> readShowTestCheck skip $ fmts fe -readShowTests :: (Eq a, Show a, Arbitrary a, SpecialTestValues a) => (FormatExtension -> Format a) -> [TestTree]+readShowTests :: (Eq a, Show a, SpecialTestValues a) => (FormatExtension -> Format a) -> [TestTree] readShowTests = readShowTestsCheck $ \_ -> False -newtype Durational t = MkDurational {unDurational :: t}-    deriving (Eq)+newtype Durational t = MkDurational t+    deriving Eq  instance Show t => Show (Durational t) where     show (MkDurational t) = show t@@ -69,63 +83,71 @@         return $ MkDurational $ CalendarDiffDays mm dd  instance Arbitrary (Durational CalendarDiffTime) where-    arbitrary = let-        limit = 40 * 86400-        picofactor = 10 ^ (12 :: Int)-        in do-            mm <- choose (-10000, 10000)-            ss <- choose (negate limit * picofactor, limit * picofactor)-            return $ MkDurational $ CalendarDiffTime mm $ fromRational $ ss % picofactor+    arbitrary =+        let+            limit = 40 * 86400+            picofactor = 10 ^ (12 :: Int)+        in+            do+                mm <- choose (-10000, 10000)+                ss <- choose (negate limit * picofactor, limit * picofactor)+                return $ MkDurational $ CalendarDiffTime mm $ fromRational $ ss % picofactor  durationalFormat :: Format a -> Format (Durational a)-durationalFormat (MkFormat sa ra) = MkFormat (\b -> sa $ unDurational b) (fmap MkDurational ra)+durationalFormat = coerce  testReadShowFormat :: TestTree testReadShowFormat =-    nameTest-        "read-show format"-        [ nameTest "calendarFormat" $ readShowTests $ calendarFormat-        , nameTest "yearMonthFormat" $ readShowTest $ yearMonthFormat-        , nameTest "yearFormat" $ readShowTest $ yearFormat-        , nameTest "centuryFormat" $ readShowTest $ centuryFormat-        , nameTest "expandedCalendarFormat" $ readShowTests $ expandedCalendarFormat 6-        , nameTest "expandedYearMonthFormat" $ readShowTest $ expandedYearMonthFormat 6-        , nameTest "expandedYearFormat" $ readShowTest $ expandedYearFormat 6-        , nameTest "expandedCenturyFormat" $ readShowTest $ expandedCenturyFormat 4-        , nameTest "ordinalDateFormat" $ readShowTests $ ordinalDateFormat-        , nameTest "expandedOrdinalDateFormat" $ readShowTests $ expandedOrdinalDateFormat 6-        , nameTest "weekDateFormat" $ readShowTests $ weekDateFormat-        , nameTest "yearWeekFormat" $ readShowTests $ yearWeekFormat-        , nameTest "expandedWeekDateFormat" $ readShowTests $ expandedWeekDateFormat 6-        , nameTest "expandedYearWeekFormat" $ readShowTests $ expandedYearWeekFormat 6-        , nameTest "timeOfDayFormat" $ readShowTests $ timeOfDayFormat-        , nameTest "hourMinuteFormat" $ readShowTestsCheck (\(TimeOfDay _ _ s) -> s >= 60) $ hourMinuteFormat-        , nameTest "hourFormat" $ readShowTestCheck (\(TimeOfDay _ _ s) -> s >= 60) $ hourFormat-        , nameTest "withTimeDesignator" $ readShowTests $ \fe -> withTimeDesignator $ timeOfDayFormat fe-        , nameTest "withUTCDesignator" $ readShowTests $ \fe -> withUTCDesignator $ timeOfDayFormat fe-        , nameTest "timeOffsetFormat" $ readShowTests $ timeOffsetFormat-        , nameTest "timeOfDayAndOffsetFormat" $ readShowTests $ timeOfDayAndOffsetFormat-        , nameTest "localTimeFormat" $-            readShowTests $ \fe -> localTimeFormat (calendarFormat fe) (timeOfDayFormat fe)-        , nameTest "zonedTimeFormat" $-            readShowTests $ \fe -> zonedTimeFormat (calendarFormat fe) (timeOfDayFormat fe) fe-        , nameTest "utcTimeFormat" $ readShowTests $ \fe -> utcTimeFormat (calendarFormat fe) (timeOfDayFormat fe)-        , nameTest "dayAndTimeFormat" $-            readShowTests $ \fe -> dayAndTimeFormat (calendarFormat fe) (timeOfDayFormat fe)-        , nameTest "timeAndOffsetFormat" $ readShowTests $ \fe -> timeAndOffsetFormat (timeOfDayFormat fe) fe-        , nameTest "durationDaysFormat" $ readShowTest $ durationDaysFormat-        , nameTest "durationTimeFormat" $ readShowTest $ durationTimeFormat-        , nameTest "alternativeDurationDaysFormat" $-            readBoth $ \fe -> readShowTest (durationalFormat $ alternativeDurationDaysFormat fe)-        , nameTest "alternativeDurationTimeFormat" $-            readBoth $ \fe -> readShowTest (durationalFormat $ alternativeDurationTimeFormat fe)-        , nameTest "intervalFormat" $-            readShowTests $ \fe ->-                intervalFormat (localTimeFormat (calendarFormat fe) (timeOfDayFormat fe)) durationTimeFormat-        , nameTest "recurringIntervalFormat" $-            readShowTests $ \fe ->-                recurringIntervalFormat (localTimeFormat (calendarFormat fe) (timeOfDayFormat fe)) durationTimeFormat-        ]+    localOption (QuickCheckTests 1000) $+        nameTest+            "read-show format"+            [ nameTest "calendarFormat" $ readShowTests $ calendarFormat+            , nameTest "yearMonthFormat" $ readShowTest $ yearMonthFormat+            , nameTest "yearFormat" $ readShowTest $ yearFormat+            , nameTest "centuryFormat" $ readShowTest $ centuryFormat+            , nameTest "expandedCalendarFormat" $ readShowTests $ expandedCalendarFormat 6+            , nameTest "expandedYearMonthFormat" $ readShowTest $ expandedYearMonthFormat 6+            , nameTest "expandedYearFormat" $ readShowTest $ expandedYearFormat 6+            , nameTest "expandedCenturyFormat" $ readShowTest $ expandedCenturyFormat 4+            , nameTest "ordinalDateFormat" $ readShowTests $ ordinalDateFormat+            , nameTest "expandedOrdinalDateFormat" $ readShowTests $ expandedOrdinalDateFormat 6+            , nameTest "weekDateFormat" $ readShowTests $ weekDateFormat+            , nameTest "yearWeekFormat" $ readShowTests $ yearWeekFormat+            , nameTest "expandedWeekDateFormat" $ readShowTests $ expandedWeekDateFormat 6+            , nameTest "expandedYearWeekFormat" $ readShowTests $ expandedYearWeekFormat 6+            , nameTest "timeOfDayFormat" $ readShowTests $ timeOfDayFormat+            , nameTest "hourMinuteFormat" $ readShowTestsCheck (\(TimeOfDay _ _ s) -> s >= 60) $ hourMinuteFormat+            , nameTest "hourFormat" $ readShowTestCheck (\(TimeOfDay _ _ s) -> s >= 60) $ hourFormat+            , nameTest "withTimeDesignator" $ readShowTests $ \fe -> withTimeDesignator $ timeOfDayFormat fe+            , nameTest "withUTCDesignator" $ readShowTests $ \fe -> withUTCDesignator $ timeOfDayFormat fe+            , nameTest "timeOffsetFormat" $ readShowTests $ timeOffsetFormat+            , nameTest "timeOfDayAndOffsetFormat" $ readShowTests $ timeOfDayAndOffsetFormat+            , nameTest "localTimeFormat" $+                readShowTests $+                    \fe -> localTimeFormat (calendarFormat fe) (timeOfDayFormat fe)+            , nameTest "zonedTimeFormat" $+                readShowTests $+                    \fe -> zonedTimeFormat (calendarFormat fe) (timeOfDayFormat fe) fe+            , nameTest "utcTimeFormat" $ readShowTests $ \fe -> utcTimeFormat (calendarFormat fe) (timeOfDayFormat fe)+            , nameTest "dayAndTimeFormat" $+                readShowTests $+                    \fe -> dayAndTimeFormat (calendarFormat fe) (timeOfDayFormat fe)+            , nameTest "timeAndOffsetFormat" $ readShowTests $ \fe -> timeAndOffsetFormat (timeOfDayFormat fe) fe+            , nameTest "durationDaysFormat" $ readShowTest $ durationDaysFormat+            , nameTest "durationTimeFormat" $ readShowTest $ durationTimeFormat+            , nameTest "alternativeDurationDaysFormat" $+                readBoth $+                    \fe -> readShowTest (durationalFormat $ alternativeDurationDaysFormat fe)+            , nameTest "alternativeDurationTimeFormat" $+                readBoth $+                    \fe -> readShowTest (durationalFormat $ alternativeDurationTimeFormat fe)+            , nameTest "intervalFormat" $+                readShowTests $ \fe ->+                    intervalFormat (localTimeFormat (calendarFormat fe) (timeOfDayFormat fe)) durationTimeFormat+            , nameTest "recurringIntervalFormat" $+                readShowTests $ \fe ->+                    recurringIntervalFormat (localTimeFormat (calendarFormat fe) (timeOfDayFormat fe)) durationTimeFormat+            ]  testShowReadFormat :: (Show t, Eq t) => String -> Format t -> String -> t -> TestTree testShowReadFormat name fmt str val =@@ -158,11 +180,14 @@         , testShowReadFormat "durationTimeFormat" durationTimeFormat "PT1M18.77634S" $ CalendarDiffTime 0 $ 78.77634         , testShowReadFormat "durationTimeFormat" durationTimeFormat "PT2H1M18.77634S" $ CalendarDiffTime 0 $ 7278.77634         , testShowReadFormat "durationTimeFormat" durationTimeFormat "P5DT2H1M18.77634S" $-            CalendarDiffTime 0 $ 5 * nominalDay + 7278.77634+            CalendarDiffTime 0 $+                5 * nominalDay + 7278.77634         , testShowReadFormat "durationTimeFormat" durationTimeFormat "P7Y10M5DT2H1M18.77634S" $-            CalendarDiffTime 94 $ 5 * nominalDay + 7278.77634+            CalendarDiffTime 94 $+                5 * nominalDay + 7278.77634         , testShowReadFormat "durationTimeFormat" durationTimeFormat "P7Y10MT2H1M18.77634S" $-            CalendarDiffTime 94 $ 7278.77634+            CalendarDiffTime 94 $+                7278.77634         , testShowReadFormat "durationTimeFormat" durationTimeFormat "P8YT2H1M18.77634S" $ CalendarDiffTime 96 $ 7278.77634         , testShowReadFormat "alternativeDurationDaysFormat" (alternativeDurationDaysFormat ExtendedFormat) "P0001-00-00" $             CalendarDiffDays 12 0@@ -179,12 +204,14 @@             "alternativeDurationTimeFormat"             (alternativeDurationTimeFormat ExtendedFormat)             "P0007-10-05T02:01:18.77634"-            $ CalendarDiffTime 94 $ 5 * nominalDay + 7278.77634+            $ CalendarDiffTime 94+            $ 5 * nominalDay + 7278.77634         , testShowReadFormat             "alternativeDurationTimeFormat"             (alternativeDurationTimeFormat ExtendedFormat)             "P4271-10-05T02:01:18.77634"-            $ CalendarDiffTime (12 * 4271 + 10) $ 5 * nominalDay + 7278.77634+            $ CalendarDiffTime (12 * 4271 + 10)+            $ 5 * nominalDay + 7278.77634         , testShowReadFormat "centuryFormat" centuryFormat "02" 2         , testShowReadFormat "centuryFormat" centuryFormat "21" 21         , testShowReadFormat@@ -268,6 +295,16 @@             iso8601Format             "2024-07-06T08:45:56.553+06"             (ZonedTime (LocalTime (fromGregorian 2024 07 06) (TimeOfDay 8 45 56.553)) (minutesToTimeZone 360))+        , testReadFormat+            "zonedTimeFormat"+            iso8601Format+            "2024-05-30T16:15:18Z"+            (ZonedTime (LocalTime (fromGregorian 2024 05 30) (TimeOfDay 16 15 18)) utc)+        , testReadFormat+            "zonedTimeFormat"+            iso8601Format+            "2024-05-30T16:15:18"+            (ZonedTime (LocalTime (fromGregorian 2024 05 30) (TimeOfDay 16 15 18)) utc)         , testShowReadFormat             "utcTimeFormat"             iso8601Format@@ -277,6 +314,11 @@             "utcTimeFormat"             iso8601Format             "2028-12-31T23:59:60.9Z"+            (UTCTime (fromGregorian 2028 12 31) (timeOfDayToTime $ TimeOfDay 23 59 60.9))+        , testReadFormat+            "utcTimeFormat"+            iso8601Format+            "2028-12-31T23:59:60.9"             (UTCTime (fromGregorian 2028 12 31) (timeOfDayToTime $ TimeOfDay 23 59 60.9))         , testShowReadFormat "weekDateFormat" (weekDateFormat ExtendedFormat) "1994-W52-7" (fromGregorian 1995 1 1)         , testShowReadFormat "weekDateFormat" (weekDateFormat ExtendedFormat) "1995-W01-1" (fromGregorian 1995 1 2)
test/main/Test/Format/ParseTime.hs view
@@ -20,7 +20,6 @@ import Test.Tasty.HUnit import Test.Tasty.QuickCheck hiding (reason) import Test.TestUtil-import Text.Read  format :: FormatTime t => String -> t -> String format f t = formatTime defaultTimeLocale f t@@ -40,15 +39,17 @@     }  instance Show (FormatCode pf t) where-    show (MkFormatCode m w a s) = let-        ms = m-        ws = fromMaybe "" $ fmap show w-        as =-            if a-                then "E"-                else ""-        ss = [s]-        in '%' : (ms <> ws <> as <> ss)+    show (MkFormatCode m w a s) =+        let+            ms = m+            ws = fromMaybe "" $ fmap show w+            as =+                if a+                    then "E"+                    else ""+            ss = [s]+        in+            '%' : (ms <> ws <> as <> ss)  formatCode :: FormatTime t => FormatCode pf t -> t -> String formatCode fc = format $ show fc@@ -65,19 +66,21 @@ minCodeWidth _ = 0  fcShrink :: FormatCode pf t -> [FormatCode pf t]-fcShrink fc = let-    fc1 = case fcWidth fc of-        Nothing -> []-        Just w-            | w > (minCodeWidth $ fcSpecifier fc) -> [fc{fcWidth = Nothing}, fc{fcWidth = Just $ w - 1}]-        Just _ -> [fc{fcWidth = Nothing}]-    fc2 = case fcAlt fc of-        False -> []-        True -> [fc{fcAlt = False}]-    fc3 = case fcModifier fc of-        "" -> []-        _ -> [fc{fcModifier = ""}]-    in fc1 ++ fc2 ++ fc3+fcShrink fc =+    let+        fc1 = case fcWidth fc of+            Nothing -> []+            Just w+                | w > (minCodeWidth $ fcSpecifier fc) -> [fc{fcWidth = Nothing}, fc{fcWidth = Just $ w - 1}]+            Just _ -> [fc{fcWidth = Nothing}]+        fc2 = case fcAlt fc of+            False -> []+            True -> [fc{fcAlt = False}]+        fc3 = case fcModifier fc of+            "" -> []+            _ -> [fc{fcModifier = ""}]+    in+        fc1 ++ fc2 ++ fc3  instance HasFormatCodes t => Arbitrary (FormatCode FormatOnly t) where     arbitrary = do@@ -105,10 +108,10 @@ testParseTime =     testGroup         "testParseTime"-        [ readOtherTypesTest-        , readTests+        [ readsTests         , simpleFormatTests         , extests+        , spacingTests         , particularParseTests         , badParseTests         , defaultTimeZoneTests@@ -143,8 +146,8 @@             ++ ( concat $                     fmap                         ( \y ->-                            [ (makeExhaustiveTest "parse %Y%m%d" (yearDays y) parseYMD)-                            , (makeExhaustiveTest "parse %Y %m %d" (yearDays y) parseYearDayD)+                            [ {- (makeExhaustiveTest "parse %Y%m%d" (yearDays y) parseYMD)+                              , -} (makeExhaustiveTest "parse %Y %m %d" (yearDays y) parseYearDayD)                             , (makeExhaustiveTest "parse %Y %-m %e" (yearDays y) parseYearDayE)                             ]                         )@@ -152,46 +155,45 @@                )         ) -readTest :: (Eq a, Show a, Read a) => [(a, String)] -> String -> TestTree-readTest expected target = let-    found = reads target-    result = assertEqual "" expected found-    name = show target-    in Test.Tasty.HUnit.testCase name result+testReads :: (Eq a, Show a, Read a) => [(a, String)] -> String -> TestTree+testReads expected target =+    let+        found = reads target+        result = assertEqual "" expected found+        name = show target+    in+        Test.Tasty.HUnit.testCase name result -readTestsParensSpaces ::+readsTestsParensSpaces ::     forall a.     (Eq a, Show a, Read a) =>     a ->     String ->     TestTree-readTestsParensSpaces expected target =+readsTestsParensSpaces expected target =     testGroup         target-        [ readTest [(expected, "")] $ target-        , readTest [(expected, "")] $ "(" ++ target ++ ")"-        , readTest [(expected, "")] $ " (" ++ target ++ ")"-        , readTest [(expected, " ")] $ " ( " ++ target ++ " ) "-        , readTest [(expected, " ")] $ " (( " ++ target ++ " )) "-        , readTest ([] :: [(a, String)]) $ "(" ++ target-        , readTest [(expected, ")")] $ "" ++ target ++ ")"-        , readTest [(expected, "")] $ "((" ++ target ++ "))"-        , readTest [(expected, " ")] $ "  (   (     " ++ target ++ "   )  ) "+        [ testReads [(expected, "")] $ target+        , testReads [(expected, "")] $ "(" ++ target ++ ")"+        , testReads [(expected, "")] $ " (" ++ target ++ ")"+        , testReads [(expected, " ")] $ " ( " ++ target ++ " ) "+        , testReads [(expected, " ")] $ " (( " ++ target ++ " )) "+        , testReads ([] :: [(a, String)]) $ "(" ++ target+        , testReads [(expected, ")")] $ "" ++ target ++ ")"+        , testReads [(expected, "")] $ "((" ++ target ++ "))"+        , testReads [(expected, " ")] $ "  (   (     " ++ target ++ "   )  ) "         ]-  where -readOtherTypesTest :: TestTree-readOtherTypesTest =-    testGroup "read other types" [readTestsParensSpaces (3 :: Integer) "3", readTestsParensSpaces "a" "\"a\""]--readTests :: TestTree-readTests =+readsTests :: TestTree+readsTests =     testGroup-        "read times"-        [ readTestsParensSpaces testDay "1912-07-08"-        , -- readTestsParensSpaces testDay "1912-7-8",-          readTestsParensSpaces testTimeOfDay "08:04:02"-          -- ,readTestsParensSpaces testTimeOfDay "8:4:2"+        "reads"+        [ readsTestsParensSpaces (3 :: Integer) "3"+        , readsTestsParensSpaces "a" "\"a\""+        , readsTestsParensSpaces testDay "1912-07-08"+        , -- , readsTestsParensSpaces testDay "1912-7-8"+          readsTestsParensSpaces testTimeOfDay "08:04:02"+          -- , readsTestsParensSpaces testTimeOfDay "8:4:2"         ]   where     testDay = fromGregorian 1912 7 8@@ -200,43 +202,45 @@ epoch :: LocalTime epoch = LocalTime (fromGregorian 1970 0 0) midnight +testReadSTime :: (Show a, Eq a, ParseTime a) => [(a, String)] -> String -> String -> TestTree+testReadSTime expected formatStr target =+    let+        found = readSTime False defaultTimeLocale formatStr target+        result = assertEqual "" expected found+        name = (show formatStr) ++ " of " ++ (show target)+    in+        Test.Tasty.HUnit.testCase name result+ simpleFormatTests :: TestTree simpleFormatTests =     testGroup         "simple"-        [ readsTest [(epoch, "")] "" ""-        , readsTest [(epoch, " ")] "" " "-        , readsTest [(epoch, "")] " " " "-        , readsTest [(epoch, "")] " " "  "-        , readsTest [(epoch, "")] "%k" "0"-        , readsTest [(epoch, "")] "%k" " 0"-        , readsTest [(epoch, "")] "%m" "01"-        , readsTest [(epoch, " ")] "%m" "01 "-        , readsTest [(epoch, " ")] " %m" " 01 "-        , readsTest [(epoch, "")] " %m" " 01"+        [ testReadSTime [(epoch, "")] "" ""+        , testReadSTime [(epoch, " ")] "" " "+        , testReadSTime [(epoch, "")] " " " "+        , testReadSTime [(epoch, "")] " " "  "+        , testReadSTime [(epoch, "")] "%k" "0"+        , testReadSTime [(epoch, "")] "%k" " 0"+        , testReadSTime [(epoch, "")] "%m" "01"+        , testReadSTime [(epoch, " ")] "%m" "01 "+        , testReadSTime [(epoch, " ")] " %m" " 01 "+        , testReadSTime [(epoch, "")] " %m" " 01"         , -- https://ghc.haskell.org/trac/ghc/ticket/9150-          readsTest [(epoch, "")] " %M" " 00"-        , readsTest [(epoch, "")] "%M " "00 "-        , readsTest [(epoch, "")] "%Q" ""-        , readsTest [(epoch, " ")] "%Q" " "-        , readsTest [(epoch, "X")] "%Q" "X"-        , readsTest [(epoch, " X")] "%Q" " X"-        , readsTest [(epoch, "")] "%Q " " "-        , readsTest [(epoch, "")] "%Q X" " X"-        , readsTest [(epoch, "")] "%QX" "X"+          testReadSTime [(epoch, "")] " %M" " 00"+        , testReadSTime [(epoch, "")] "%M " "00 "+        , testReadSTime [(epoch, "")] "%Q" ""+        , testReadSTime [(epoch, " ")] "%Q" " "+        , testReadSTime [(epoch, "X")] "%Q" "X"+        , testReadSTime [(epoch, " X")] "%Q" " X"+        , testReadSTime [(epoch, "")] "%Q " " "+        , testReadSTime [(epoch, "")] "%Q X" " X"+        , testReadSTime [(epoch, "")] "%QX" "X"         ]-  where-    readsTest :: (Show a, Eq a, ParseTime a) => [(a, String)] -> String -> String -> TestTree-    readsTest expected formatStr target = let-        found = readSTime False defaultTimeLocale formatStr target-        result = assertEqual "" expected found-        name = (show formatStr) ++ " of " ++ (show target)-        in Test.Tasty.HUnit.testCase name result -spacingTests :: (Show t, Eq t, ParseTime t) => t -> String -> String -> TestTree-spacingTests expected formatStr target =+spacingForFormatTests :: (Show t, Eq t, ParseTime t) => t -> String -> String -> TestTree+spacingForFormatTests expected formatStr target =     testGroup-        "particular"+        formatStr         [ parseTest False (Just expected) formatStr target         , parseTest True (Just expected) formatStr target         , parseTest False (Just expected) (formatStr ++ " ") (target ++ " ")@@ -247,26 +251,36 @@         , parseTest True (Just expected) (" " ++ formatStr) ("  " ++ target)         ] +spacingTests :: TestTree+spacingTests =+    testGroup+        "spacing"+        [ spacingForFormatTests epoch "%Q" ""+        , spacingForFormatTests epoch "%Q" ".0"+        , spacingForFormatTests epoch "%k" " 0"+        , spacingForFormatTests epoch "%M" "00"+        , spacingForFormatTests epoch "%m" "01"+        , spacingForFormatTests (TimeZone 120 False "") "%z" "+0200"+        , spacingForFormatTests (TimeZone 120 False "") "%Z" "+0200"+        , spacingForFormatTests (TimeZone (-480) False "PST") "%Z" "PST"+        ]+ particularParseTests :: TestTree particularParseTests =     testGroup         "particular"-        [ spacingTests epoch "%Q" ""-        , spacingTests epoch "%Q" ".0"-        , spacingTests epoch "%k" " 0"-        , spacingTests epoch "%M" "00"-        , spacingTests epoch "%m" "01"-        , spacingTests (TimeZone 120 False "") "%z" "+0200"-        , spacingTests (TimeZone 120 False "") "%Z" "+0200"-        , spacingTests (TimeZone (-480) False "PST") "%Z" "PST"+        [ parseTest @Day True Nothing "%-d%-m%0Y" "2122012" -- ISSUE #232+        , parseTest @Day True Nothing "%-d%-m%0Y" "2132012" -- ISSUE #232         ]  badParseTests :: TestTree badParseTests = testGroup "bad" [parseTest False (Nothing :: Maybe Day) "%Y" ""] +{- parseYMD :: Day -> TestTree parseYMD day = case toGregorian day of     (y, m, d) -> parseTest False (Just day) "%Y%m%d" ((show y) ++ (show2 m) ++ (show2 d))+-}  parseYearDayD :: Day -> TestTree parseYearDayD day = case toGregorian day of@@ -297,26 +311,23 @@ parseCentury int c =     parseTest False (Just (fromGregorian (c * 100) 1 1)) ("%-C" ++ int ++ "%y") ((show c) ++ int ++ "00") -parseTest :: (Show t, Eq t, ParseTime t) => Bool -> Maybe t -> String -> String -> TestTree-parseTest sp expected formatStr target = let-    found = parse sp formatStr target-    result = assertEqual "" expected found-    name =-        (show formatStr)-            ++ " of "-            ++ (show target)-            ++ ( if sp-                    then " allowing spaces"-                    else ""-               )-    in Test.Tasty.HUnit.testCase name result+parseTest :: forall t. (Show t, Eq t, ParseTime t) => Bool -> Maybe t -> String -> String -> TestTree+parseTest sp expected formatStr target =+    let+        found = parse sp formatStr target+        result = assertEqual "" expected found+        name =+            (show formatStr)+                ++ " of "+                ++ (show target)+                ++ ( if sp+                        then " allowing spaces"+                        else ""+                   )+    in+        Test.Tasty.HUnit.testCase name result -{--readsTest :: forall t. (Show t, Eq t, ParseTime t) => Maybe t -> String -> String -> TestTree-readsTest (Just e) = readsTest' [(e,"")]-readsTest Nothing = readsTest' ([] :: [(t,String)])--}-enumAdd :: (Enum a) => Int -> a -> a+enumAdd :: Enum a => Int -> a -> a enumAdd i a = toEnum (i + fromEnum a)  getMilZoneLetter :: Int -> Char@@ -364,26 +375,31 @@  -- test_parse_format :: (FormatTime t, ParseTime t, Show t) => String -> t -> (String, String, Maybe t)-test_parse_format f t = let-    s = format f t-    in (show t, s, parse False f s `asTypeOf` Just t)+test_parse_format f t =+    let+        s = format f t+    in+        (show t, s, parse False f s `asTypeOf` Just t)  --  -- * show and read  --+reads_expect :: a -> [(a, String)]+reads_expect t = [(t, "")]+ prop_read_show :: (Read a, Show a, Eq a) => a -> Result-prop_read_show t = compareResult (Just t) (readMaybe (show t))+prop_read_show t = compareResult (reads_expect t) (reads (show t))  prop_read_show_ZonedUTC :: ZonedTime -> Result-prop_read_show_ZonedUTC t = compareResult (Just $ zonedTimeToUTC t) (readMaybe (show t))+prop_read_show_ZonedUTC t = compareResult (reads_expect $ zonedTimeToUTC t) (reads (show t))  prop_read_show_LocalUTC :: LocalTime -> Result-prop_read_show_LocalUTC t = compareResult (Just $ localTimeToUTC utc t) (readMaybe (show t))+prop_read_show_LocalUTC t = compareResult (reads_expect $ localTimeToUTC utc t) (reads (show t))  prop_read_show_UTC_no_TZ :: UTCTime -> Result-prop_read_show_UTC_no_TZ t = compareResult (Just t) $ readMaybe $ show $ utcToLocalTime utc t+prop_read_show_UTC_no_TZ t = compareResult (reads_expect t) $ reads $ show $ utcToLocalTime utc t  -- @@ -405,16 +421,20 @@  -- prop_fromMondayStartWeek :: Day -> Result-prop_fromMondayStartWeek d = let-    (w, wd) = mondayStartWeek d-    (y, _, _) = toGregorian d-    in compareResult d (fromMondayStartWeek y w wd)+prop_fromMondayStartWeek d =+    let+        (w, wd) = mondayStartWeek d+        (y, _, _) = toGregorian d+    in+        compareResult d (fromMondayStartWeek y w wd)  prop_fromSundayStartWeek :: Day -> Result-prop_fromSundayStartWeek d = let-    (w, wd) = sundayStartWeek d-    (y, _, _) = toGregorian d-    in compareResult d (fromSundayStartWeek y w wd)+prop_fromSundayStartWeek d =+    let+        (w, wd) = sundayStartWeek d+        (y, _, _) = toGregorian d+    in+        compareResult d (fromSundayStartWeek y w wd)  -- t == parse (format t) prop_parse_format :: (Eq t, FormatTime t, ParseTime t, Show t) => FormatString t -> t -> Result@@ -444,13 +464,15 @@     FormatCode ParseAndFormat t ->     t ->     Result-prop_format_parse_format _ fc v = let-    s1 = formatCode fc v-    ms1 = in1970 (fmap (formatCode fc) (incompleteS :: Maybe t)) (fcSpecifier fc) s1-    mv2 :: Maybe t-    mv2 = parseCode fc s1-    ms2 = fmap (formatCode fc) mv2-    in compareResult ms1 ms2+prop_format_parse_format _ fc v =+    let+        s1 = formatCode fc v+        ms1 = in1970 (fmap (formatCode fc) (incompleteS :: Maybe t)) (fcSpecifier fc) s1+        mv2 :: Maybe t+        mv2 = parseCode fc s1+        ms2 = fmap (formatCode fc) mv2+    in+        compareResult ms1 ms2  instance HasFormatCodes Day where     allFormatCodes _ = [(False, s) | s <- "DFxYyCBbhmdejfVUW"]@@ -458,6 +480,18 @@ instance HasFormatCodes TimeOfDay where     allFormatCodes _ = [(False, s) | s <- "RTXrPpHkIlMSqQ"] +instance HasFormatCodes DayOfWeek where+    allFormatCodes _ = [(False, s) | s <- "uwaA"]++instance HasFormatCodes Month where+    allFormatCodes _ = [(False, s) | s <- "YyCBbhm"]++instance HasFormatCodes QuarterOfYear where+    allFormatCodes _ = [(False, s) | s <- "v"]++instance HasFormatCodes Quarter where+    allFormatCodes _ = allFormatCodes (Proxy :: Proxy QuarterOfYear) ++ [(False, s) | s <- "YyC"]+ instance HasFormatCodes LocalTime where     allFormatCodes _ = allFormatCodes (Proxy :: Proxy Day) ++ allFormatCodes (Proxy :: Proxy TimeOfDay) @@ -467,7 +501,7 @@ instance HasFormatCodes ZonedTime where     allFormatCodes _ =         [(False, s) | s <- "cs"]-        ++ allFormatCodes (Proxy :: Proxy LocalTime)+            ++ allFormatCodes (Proxy :: Proxy LocalTime)             ++ allFormatCodes (Proxy :: Proxy TimeZone)  instance HasFormatCodes UTCTime where@@ -520,16 +554,18 @@ typedTests prop =     [ nameTest "Day" $ tgroup dayFormats prop     , nameTest "Month" $ tgroup monthFormats prop+    , nameTest "Quarter" $ tgroup quarterFormats prop     , nameTest "TimeOfDay" $ tgroup timeOfDayFormats prop     , nameTest "LocalTime" $ tgroup localTimeFormats prop     , nameTest "TimeZone" $ tgroup timeZoneFormats prop     , nameTest "ZonedTime" $ tgroup zonedTimeFormats prop     , nameTest "ZonedTime" $-        tgroup zonedTimeAlmostFormats $ \fmt t -> (todSec $ localTimeOfDay $ zonedTimeToLocalTime t) < 60 ==> prop fmt t+        tgroup zonedTimeAlmostFormats $+            \fmt t -> (todSec $ localTimeOfDay $ zonedTimeToLocalTime t) < 60 ==> prop fmt t     , nameTest "UTCTime" $ tgroup utcTimeAlmostFormats $ \fmt t -> utctDayTime t < 86400 ==> prop fmt t     , nameTest "UniversalTime" $ tgroup universalTimeFormats prop     , nameTest "CalendarDiffDays" $ tgroup calendarDiffDaysFormats prop-    , nameTest "CalenderDiffTime" $ tgroup calendarDiffTimeFormats prop+    , nameTest "CalendarDiffTime" $ tgroup calendarDiffTimeFormats prop     , nameTest "DiffTime" $ tgroup diffTimeFormats prop     , nameTest "NominalDiffTime" $ tgroup nominalDiffTimeFormats prop     ]@@ -540,6 +576,10 @@ allTypes f =     [ f "Day" (Proxy :: Proxy Day)     , f "TimeOfDay" (Proxy :: Proxy TimeOfDay)+    , f "DayOfWeek" (Proxy :: Proxy DayOfWeek)+    , f "Month" (Proxy :: Proxy Month)+    , f "QuarterOfYear" (Proxy :: Proxy QuarterOfYear)+    , f "Quarter" (Proxy :: Proxy Quarter)     , f "LocalTime" (Proxy :: Proxy LocalTime)     , f "TimeZone" (Proxy :: Proxy TimeZone)     , f "ZonedTime" (Proxy :: Proxy ZonedTime)@@ -550,22 +590,24 @@ allLeapSecondTypes ::     (forall t. (Eq t, Show t, Arbitrary t, FormatTime t, ParseTime t, HasFormatCodes t) => String -> t -> r) ->     [r]-allLeapSecondTypes f = let-    day :: Day-    day = fromGregorian 2000 01 01-    lsTimeOfDay :: TimeOfDay-    lsTimeOfDay = TimeOfDay 23 59 60.5-    lsLocalTime :: LocalTime-    lsLocalTime = LocalTime day lsTimeOfDay-    lsZonedTime :: ZonedTime-    lsZonedTime = ZonedTime lsLocalTime utc-    lsUTCTime :: UTCTime-    lsUTCTime = UTCTime day 86400.5-    in [ f "TimeOfDay" lsTimeOfDay-       , f "LocalTime" lsLocalTime-       , f "ZonedTime" lsZonedTime-       , f "UTCTime" lsUTCTime-       ]+allLeapSecondTypes f =+    let+        day :: Day+        day = fromGregorian 2000 01 01+        lsTimeOfDay :: TimeOfDay+        lsTimeOfDay = TimeOfDay 23 59 60.5+        lsLocalTime :: LocalTime+        lsLocalTime = LocalTime day lsTimeOfDay+        lsZonedTime :: ZonedTime+        lsZonedTime = ZonedTime lsLocalTime utc+        lsUTCTime :: UTCTime+        lsUTCTime = UTCTime day 86400.5+    in+        [ f "TimeOfDay" lsTimeOfDay+        , f "LocalTime" lsLocalTime+        , f "ZonedTime" lsZonedTime+        , f "UTCTime" lsUTCTime+        ]  parseEmptyTest ::     forall t.@@ -580,12 +622,93 @@ parseEmptyTests :: TestTree parseEmptyTests = nameTest "parse empty" $ allTypes $ \name p -> nameTest name $ parseEmptyTest p +class (Eq a, Show a, ParseTime a) => TestParse a where+    nonPosixValue :: a -> Bool+    nonPosixValue _ = False++instance TestParse UTCTime where+    nonPosixValue (UTCTime _ dt) = dt >= 86400 || dt < 0++instance TestParse ZonedTime where+    nonPosixValue (ZonedTime t _) = nonPosixValue t++instance TestParse TimeZone++instance TestParse LocalTime where+    nonPosixValue (LocalTime _ t) = nonPosixValue t++instance TestParse Day++instance TestParse Month++instance TestParse DayOfWeek++instance TestParse TimeOfDay where+    nonPosixValue (TimeOfDay _ _ s) = s >= 60 || s < 0++prop_parse_s :: forall a. TestParse a => (UTCTime -> a) -> UTCTime -> Result+prop_parse_s f t =+    if nonPosixValue t+        then succeeded+        else+            let+                str = format "%s%Q" t+                found = parse False "%s%Q" str+                expected = f t+            in+                compareResult (Just expected) found++prop_parse_sz :: forall a. TestParse a => (ZonedTime -> a) -> ZonedTime -> Result+prop_parse_sz f t =+    if nonPosixValue t+        then succeeded+        else+            let+                str = format "%s%Q %z" t+                found = parse False "%s%Q %z" str+                expected = f t+            in+                compareResult (Just expected) found++zeroTimeZone :: TimeZone+zeroTimeZone = TimeZone 0 False ""++parse_s_tests :: TestTree+parse_s_tests =+    nameTest+        "parse_s"+        [ nameTest "UTCTime" $ prop_parse_s @UTCTime id+        , nameTest "ZonedTime" $ prop_parse_s @ZonedTime $ utcToZonedTime zeroTimeZone+        , nameTest "TimeZone" $ prop_parse_s @TimeZone $ \_ -> zeroTimeZone+        , nameTest "LocalTime" $ prop_parse_s @LocalTime $ utcToLocalTime zeroTimeZone+        , nameTest "Day" $ prop_parse_s @Day utctDay+        , nameTest "Month" $ prop_parse_s @Month $ (\(MonthDay m _) -> m) . utctDay+        , nameTest "DayOfWeek" $ prop_parse_s @DayOfWeek $ dayOfWeek . utctDay+        , nameTest "TimeOfDay" $ prop_parse_s @TimeOfDay $ localTimeOfDay . utcToLocalTime zeroTimeZone+        ]++parse_sz_tests :: TestTree+parse_sz_tests =+    nameTest+        "parse_sz"+        [ nameTest "UTCTime" $ prop_parse_sz @UTCTime zonedTimeToUTC+        , nameTest "ZonedTime" $ prop_parse_sz @ZonedTime id+        , nameTest "TimeZone" $ prop_parse_sz @TimeZone zonedTimeZone+        , nameTest "LocalTime" $ prop_parse_sz @LocalTime zonedTimeToLocalTime+        , nameTest "Day" $ prop_parse_sz @Day $ localDay . zonedTimeToLocalTime+        , nameTest "Month" $ prop_parse_sz @Month $ (\(MonthDay m _) -> m) . localDay . zonedTimeToLocalTime+        , nameTest "DayOfWeek" $ prop_parse_sz @DayOfWeek $ dayOfWeek . localDay . zonedTimeToLocalTime+        , nameTest "TimeOfDay" $ prop_parse_sz @TimeOfDay $ localTimeOfDay . zonedTimeToLocalTime+        ]+ formatParseFormatTests :: TestTree formatParseFormatTests =     nameTest         "format_parse_format"         [ localOption (QuickCheckTests 50000) $-            nameTest "general" $ allTypes $ \name p -> nameTest name $ prop_format_parse_format p+            nameTest "general" $+                allTypes $+                    \name p -> nameTest name $ prop_format_parse_format p         , nameTest "#177" $             [ nameTest "start" $ \fc -> prop_format_parse_format Proxy fc (fst supportedDayRange)             , nameTest "end" $ \fc -> prop_format_parse_format Proxy fc (snd supportedDayRange)@@ -627,8 +750,8 @@         , nameTest "UniversalTime" (prop_read_show :: UniversalTime -> Result)         , nameTest "NominalDiffTime" (prop_read_show :: NominalDiffTime -> Result)         , nameTest "DiffTime" (prop_read_show :: DiffTime -> Result)-        -- nameTest "CalendarDiffDays" (prop_read_show :: CalendarDiffDays -> Result),-        -- nameTest "CalendarDiffTime" (prop_read_show :: CalendarDiffTime -> Result)+        , nameTest "CalendarDiffDays" (prop_read_show :: CalendarDiffDays -> Result)+        , nameTest "CalendarDiffTime" (prop_read_show :: CalendarDiffTime -> Result)         ]  parseShowTests :: TestTree@@ -653,6 +776,8 @@             , nameTest "parse_format_lower" $ typedTests prop_parse_format_lower             , nameTest "parse_format_upper" $ typedTests prop_parse_format_upper             , parseEmptyTests+            , parse_s_tests+            , parse_sz_tests             , formatParseFormatTests             , badInputTests             ]@@ -725,6 +850,22 @@         , "%C-%y-%B"         , "%C-%y-%b"         , "%C-%y-%h"+        ]++quarterFormats :: [FormatString Quarter]+quarterFormats =+    map+        FormatString+        -- numeric year, quarter+        [ "%Y-%v"+        , "%Y-Q%v"+        , "%YQ%v"+        , "%C%y%v"+        , "%Y %v"+        , "%v/%Y"+        , "%v/%Y"+        , "%Y/%vm"+        , "%C %y %v"         ]  timeOfDayFormats :: [FormatString TimeOfDay]
test/main/Test/LocalTime/CalendarDiffTime.hs view
@@ -2,16 +2,120 @@     testCalendarDiffTime, ) where --- import Data.Time.LocalTime+import Data.Fixed+import Data.Time+import Test.AddDiff import Test.Arbitrary () import Test.Tasty+import Test.Tasty.HUnit+import Test.TestUtil --- import Test.Tasty.QuickCheck hiding (reason)--- testReadShow :: TestTree--- testReadShow = testProperty "read . show" $ \(t :: CalendarDiffTime) -> read (show t) == t+utcClip :: AddDiff CalendarDiffTime UTCTime+utcClip = MkAddDiff "utcClip" addUTCDurationClip diffUTCDurationClip++utcRollOver :: AddDiff CalendarDiffTime UTCTime+utcRollOver = MkAddDiff "utcRollOver" addUTCDurationRollOver diffUTCDurationRollOver++localClip :: AddDiff CalendarDiffTime LocalTime+localClip = MkAddDiff "localClip" addLocalDurationClip diffLocalDurationClip++localRollOver :: AddDiff CalendarDiffTime LocalTime+localRollOver = MkAddDiff "localRollOver" addLocalDurationRollOver diffLocalDurationRollOver++testAddDiffs :: TestTree+testAddDiffs =+    testGroup+        "add-diff"+        [ testGroup "UTC" $ fmap testAddDiff [utcClip, utcRollOver]+        , testGroup "LocalTime" $ fmap testAddDiff [localClip, localRollOver]+        ]++utcTime :: Integer -> Int -> Int -> DiffTime -> UTCTime+utcTime y m d = UTCTime (YearMonthDay y m d)++localTime :: Integer -> Int -> Int -> Int -> Int -> Pico -> LocalTime+localTime y m d h minute s = LocalTime (YearMonthDay y m d) $ TimeOfDay h minute s++testSpecifics :: TestTree+testSpecifics =+    testGroup+        "specific"+        [ testGroup+            "add"+            [ testCase "UTC clip" $+                assertEqual+                    "Jan 31 + 1 month clips to Feb 28"+                    (utcTime 2001 2 28 0)+                    (addUTCDurationClip (CalendarDiffTime 1 0) $ utcTime 2001 1 31 0)+            , testCase "UTC rollover" $+                assertEqual+                    "Jan 31 + 1 month rolls over to Mar 3"+                    (utcTime 2001 3 3 0)+                    (addUTCDurationRollOver (CalendarDiffTime 1 0) $ utcTime 2001 1 31 0)+            , testCase "LocalTime clip" $+                assertEqual+                    "Jan 31 + 1 month clips to Feb 28"+                    (localTime 2001 2 28 0 0 0)+                    (addLocalDurationClip (CalendarDiffTime 1 0) $ localTime 2001 1 31 0 0 0)+            , testCase "LocalTime rollover" $+                assertEqual+                    "Jan 31 + 1 month rolls over to Mar 3"+                    (localTime 2001 3 3 0 0 0)+                    (addLocalDurationRollOver (CalendarDiffTime 1 0) $ localTime 2001 1 31 0 0 0)+            , testCase "time part" $+                assertEqual+                    "the time part can carry into the next day"+                    (localTime 2001 2 1 0 0 1)+                    (addLocalDurationClip (CalendarDiffTime 0 2) $ localTime 2001 1 31 23 59 59)+            ]+        , testGroup+            "diff"+            [ testCase "UTC clip" $+                assertEqual+                    "Mar 1 - Jan 30 clips as 1 month and 1 day"+                    (CalendarDiffTime 1 nominalDay)+                    (diffUTCDurationClip (utcTime 2001 3 1 0) $ utcTime 2001 1 30 0)+            , testCase "UTC rollover" $+                assertEqual+                    "Mar 1 - Jan 30 rolls over as 30 days"+                    (CalendarDiffTime 0 $ 30 * nominalDay)+                    (diffUTCDurationRollOver (utcTime 2001 3 1 0) $ utcTime 2001 1 30 0)+            , testCase "LocalTime clip" $+                assertEqual+                    "Mar 1 - Jan 30 clips as 1 month and 1 day"+                    (CalendarDiffTime 1 nominalDay)+                    (diffLocalDurationClip (localTime 2001 3 1 0 0 0) $ localTime 2001 1 30 0 0 0)+            , testCase "LocalTime rollover" $+                assertEqual+                    "Mar 1 - Jan 30 rolls over as 30 days"+                    (CalendarDiffTime 0 $ 30 * nominalDay)+                    (diffLocalDurationRollOver (localTime 2001 3 1 0 0 0) $ localTime 2001 1 30 0 0 0)+            ]+        ]++testReadShowExact :: (Read a, Show a, Eq a) => String -> a -> TestTree+testReadShowExact t v =+    nameTest+        t+        [ nameTest "show" $ assertEqual "show" t $ show v+        , nameTest "read" $ assertEqual "read" v $ read t+        ]+ testCalendarDiffTime :: TestTree testCalendarDiffTime =-    testGroup+    nameTest         "CalendarDiffTime"-        -- testReadShow-        []+        [ testReadShowExact "P0D" $ CalendarDiffTime 0 0+        , testReadShowExact "P1DT1S" $ CalendarDiffTime 0 $ secondsToNominalDiffTime 86401+        , testReadShowExact "P-1DT1S" $ CalendarDiffTime 0 $ secondsToNominalDiffTime $ negate 86399+        , testReadShowExact "P-1D" $ CalendarDiffTime 0 $ secondsToNominalDiffTime $ negate 86400+        , testReadShowExact "P-2DT23H59M59S" $ CalendarDiffTime 0 $ secondsToNominalDiffTime $ negate 86401+        , testReadShowExact "P1M-1DT1S" $ CalendarDiffTime 1 $ secondsToNominalDiffTime $ negate 86399+        , testReadShowExact "P1M-1D" $ CalendarDiffTime 1 $ secondsToNominalDiffTime $ negate 86400+        , testReadShowExact "P1M-2DT23H59M59S" $ CalendarDiffTime 1 $ secondsToNominalDiffTime $ negate 86401+        , testReadShowExact "P-1Y-1M-1DT1S" $ CalendarDiffTime (-13) $ secondsToNominalDiffTime $ negate 86399+        , testReadShowExact "P-1Y-1M-1D" $ CalendarDiffTime (-13) $ secondsToNominalDiffTime $ negate 86400+        , testReadShowExact "P-1Y-1M-2DT23H59M59S" $ CalendarDiffTime (-13) $ secondsToNominalDiffTime $ negate 86401+        , testAddDiffs+        , testSpecifics+        ]
test/main/Test/LocalTime/Time.hs view
@@ -10,16 +10,18 @@ import Test.Tasty.HUnit  showCal :: Integer -> String-showCal mjd = let-    date = ModifiedJulianDay mjd-    (y, m, d) = toGregorian date-    date' = fromGregorian y m d-    in concat-        [ show mjd ++ "=" ++ showGregorian date ++ "=" ++ showOrdinalDate date ++ "=" ++ showWeekDate date ++ "\n"-        , if date == date'-            then ""-            else "=" ++ (show $ toModifiedJulianDay date') ++ "!"-        ]+showCal mjd =+    let+        date = ModifiedJulianDay mjd+        (y, m, d) = toGregorian date+        date' = fromGregorian y m d+    in+        concat+            [ show mjd ++ "=" ++ showGregorian date ++ "=" ++ showOrdinalDate date ++ "=" ++ showWeekDate date ++ "\n"+            , if date == date'+                then ""+                else "=" ++ (show $ toModifiedJulianDay date') ++ "!"+            ]  testCal :: String testCal =@@ -63,10 +65,12 @@ leapSec1998 = localTimeToUTC utc leapSec1998Cal  testUTC :: String-testUTC = let-    lsMineCal = utcToLocalTime myzone leapSec1998-    lsMine = localTimeToUTC myzone lsMineCal-    in unlines [showCal 51178, show leapSec1998Cal, showUTCTime leapSec1998, show lsMineCal, showUTCTime lsMine]+testUTC =+    let+        lsMineCal = utcToLocalTime myzone leapSec1998+        lsMine = localTimeToUTC myzone lsMineCal+    in+        unlines [showCal 51178, show leapSec1998Cal, showUTCTime leapSec1998, show lsMineCal, showUTCTime lsMine]  neglong :: Rational neglong = -120@@ -86,17 +90,20 @@         ]  testTimeOfDayToDayFraction :: String-testTimeOfDayToDayFraction = let-    f = dayFractionToTimeOfDay . timeOfDayToDayFraction-    in unlines-        [ show $ f $ TimeOfDay 12 34 56.789-        , show $ f $ TimeOfDay 12 34 56.789123-        , show $ f $ TimeOfDay 12 34 56.789123456-        , show $ f $ TimeOfDay 12 34 56.789123456789-        , show $ f $ TimeOfDay minBound 0 0-        ]+testTimeOfDayToDayFraction =+    let+        f = dayFractionToTimeOfDay . timeOfDayToDayFraction+    in+        unlines+            [ show $ f $ TimeOfDay 12 34 56.789+            , show $ f $ TimeOfDay 12 34 56.789123+            , show $ f $ TimeOfDay 12 34 56.789123456+            , show $ f $ TimeOfDay 12 34 56.789123456789+            , show $ f $ TimeOfDay minBound 0 0+            ]  testTime :: TestTree testTime =     testCase "testTime" $-        assertEqual "times" testTimeRef $ unlines [testCal, testUTC, testUT1, testTimeOfDayToDayFraction]+        assertEqual "times" testTimeRef $+            unlines [testCal, testUTC, testUT1, testTimeOfDayToDayFraction]
test/main/Test/LocalTime/TimeOfDay.hs view
@@ -11,12 +11,16 @@ testTimeOfDay =     testGroup         "TimeOfDay"-        [ testProperty "daysAndTimeOfDayToTime . timeToDaysAndTimeOfDay" $ \ndt -> let-            (d, tod) = timeToDaysAndTimeOfDay ndt-            ndt' = daysAndTimeOfDayToTime d tod-            in ndt' == ndt-        , testProperty "timeOfDayToTime . timeToTimeOfDay" $ \dt -> let-            tod = timeToTimeOfDay dt-            dt' = timeOfDayToTime tod-            in dt' == dt+        [ testProperty "daysAndTimeOfDayToTime . timeToDaysAndTimeOfDay" $ \ndt ->+            let+                (d, tod) = timeToDaysAndTimeOfDay ndt+                ndt' = daysAndTimeOfDayToTime d tod+            in+                ndt' == ndt+        , testProperty "timeOfDayToTime . timeToTimeOfDay" $ \dt ->+            let+                tod = timeToTimeOfDay dt+                dt' = timeOfDayToTime tod+            in+                dt' == dt         ]
test/main/Test/TestUtil.hs view
@@ -32,5 +32,8 @@ instance (Arbitrary a, Show a, Testable b) => NameTest (a -> b) where     nameTest name = nameTest name . property +instance Testable a => NameTest (Gen a) where+    nameTest name = nameTest name . property+ tgroup :: (Show a, NameTest t) => [a] -> (a -> t) -> [TestTree] tgroup aa f = fmap (\a -> nameTest (show a) $ f a) aa
+ test/template/Main.hs view
@@ -0,0 +1,31 @@+{-# LANGUAGE CPP #-}++module Main (main) where++import Data.Time.Clock+#if __GLASGOW_HASKELL__ >= 914+import qualified Language.Haskell.TH.Lift as TH+#else+import qualified Language.Haskell.TH.Syntax as TH+#endif+import Test.Tasty+import Test.Tasty.HUnit+import Test.TastyWrapper++testLift :: TestTree+testLift =+    testGroup+        "Lift instances"+        [ testCase "DiffTime" $ $$(TH.liftTyped (secondsToDiffTime 100)) @?= secondsToDiffTime 100+        , testCase "NominalDiffTime" $ $$(TH.liftTyped (secondsToNominalDiffTime 100)) @?= secondsToNominalDiffTime 100+        ]++tests :: TestTree+tests =+    testGroup+        "time-template"+        [ testLift+        ]++main :: IO ()+main = tastyWrapper $ defaultMain tests
+ test/template/Test/TastyWrapper.hs view
@@ -0,0 +1,20 @@+{-# LANGUAGE CPP #-}++module Test.TastyWrapper where++#if defined(javascript_HOST_ARCH)+import GHC.IO.Handle (hDuplicateTo)+import System.IO (IOMode (ReadMode), stdin, withFile)+#endif++tastyWrapper :: IO a -> IO a+#if defined(javascript_HOST_ARCH)+-- Tasty's console reporter queries terminal width through ansi-terminal, which+-- trips h$fdReady in the JS RTS when this test runs attached to a TTY.+tastyWrapper action =+    withFile "/dev/null" ReadMode $ \devNull -> do+        hDuplicateTo devNull stdin+        action+#else+tastyWrapper = id+#endif
test/unix/Test/Format/Format.hs view
@@ -76,12 +76,16 @@ locale = defaultTimeLocale{dateTimeFmt = "%a %b %e %H:%M:%S %Y"}  instance Random (F.Fixed res) where-    randomR (MkFixed lo, MkFixed hi) oldgen = let-        (v, newgen) = randomR (lo, hi) oldgen-        in (MkFixed v, newgen)-    random oldgen = let-        (v, newgen) = random oldgen-        in (MkFixed v, newgen)+    randomR (MkFixed lo, MkFixed hi) oldgen =+        let+            (v, newgen) = randomR (lo, hi) oldgen+        in+            (MkFixed v, newgen)+    random oldgen =+        let+            (v, newgen) = random oldgen+        in+            (MkFixed v, newgen)  instance Arbitrary TimeZone where     arbitrary = do@@ -104,10 +108,12 @@  -- | The size of 'CTime' is platform-dependent. secondsFitInCTime :: Integer -> Bool-secondsFitInCTime sec = let-    CTime ct = fromInteger sec-    sec' = toInteger ct-    in sec == sec'+secondsFitInCTime sec =+    let+        CTime ct = fromInteger sec+        sec' = toInteger ct+    in+        sec == sec'  instance Arbitrary UTCTime where     arbitrary = do@@ -144,15 +150,22 @@     isPadChar _ = False unixWorkarounds _ s = s +lastM :: [a] -> Maybe a+lastM [] = Nothing+lastM [a] = Just a+lastM (_ : aa) = lastM aa+ compareFormat :: (String -> String) -> String -> TimeZone -> UTCTime -> Result compareFormat _modUnix fmt zone _time-    | last fmt == 'Z' && timeZoneName zone == "" = rejected-compareFormat modUnix fmt zone time = let-    ctime = utcToZonedTime zone time-    haskellText = formatTime locale fmt ctime-    unixText = unixFormatTime fmt zone time-    expectedText = unixWorkarounds fmt (modUnix unixText)-    in assertEqualQC (show time ++ " with " ++ show zone) expectedText haskellText+    | lastM fmt == Just 'Z' && timeZoneName zone == "" = rejected+compareFormat modUnix fmt zone time =+    let+        ctime = utcToZonedTime zone time+        haskellText = formatTime locale fmt ctime+        unixText = unixFormatTime fmt zone time+        expectedText = unixWorkarounds fmt (modUnix unixText)+    in+        assertEqualQC (show time ++ " with " ++ show zone) expectedText haskellText  -- as found in http://www.opengroup.org/onlinepubs/007908799/xsh/strftime.html -- plus FgGklz@@ -200,10 +213,12 @@  formatUnitTest :: String -> Pico -> String -> TestTree formatUnitTest fmt sec expected =-    nameTest (show fmt) $ let-        tod = TimeOfDay 0 0 (1 + sec)-        found = formatTime locale fmt tod-        in assertEqual "" expected found+    nameTest (show fmt) $+        let+            tod = TimeOfDay 0 0 (1 + sec)+            found = formatTime locale fmt tod+        in+            assertEqual "" expected found  testQs :: [TestTree] testQs =
test/unix/Test/LocalTime/TimeZone.hs view
@@ -10,7 +10,8 @@ testTimeZone :: TestTree testTimeZone =     testCase "getTimeZone respects TZ env var" $ do-        let epoch = UTCTime (ModifiedJulianDay 57000) 0+        let+            epoch = UTCTime (ModifiedJulianDay 57000) 0         setEnv "TZ" "UTC+0"         zone1 <- getTimeZone epoch         setEnv "TZ" "EST+5"
test/unix/Test/TestUtil.hs view
@@ -32,7 +32,7 @@ instance (Arbitrary a, Show a, Testable b) => NameTest (a -> b) where     nameTest name = nameTest name . property -instance (Testable a) => NameTest (Gen a) where+instance Testable a => NameTest (Gen a) where     nameTest name = nameTest name . property  tgroup :: (Show a, NameTest t) => [a] -> (a -> t) -> [TestTree]
time.cabal view
@@ -1,6 +1,6 @@ cabal-version:  3.0 name:           time-version:        1.12.2+version:        1.16 stability:      stable license:        BSD-2-Clause license-file:   LICENSE@@ -13,13 +13,13 @@ category:       Time build-type:     Configure tested-with:-    GHC == 8.10.7,-    GHC == 9.0.2,-    GHC == 9.2.2+    GHC == 9.8.4,+    GHC == 9.10.3,+    GHC == 9.12.4,+    GHC == 9.14.1 x-follows-version-policy:  extra-source-files:-    changelog.md     aclocal.m4     configure.ac     configure@@ -32,6 +32,8 @@     config.status     autom4te.cache     lib/include/HsTimeConfig.h+extra-doc-files:+    changelog.md  source-repository head     type:     git@@ -39,18 +41,27 @@  library     hs-source-dirs: lib-    default-language: Haskell2010+    default-language: GHC2021     default-extensions:-        Rank2Types-        DeriveDataTypeable-        StandaloneDeriving+        NoGeneralizedNewtypeDeriving+        LambdaCase         PatternSynonyms         ViewPatterns-    ghc-options: -Wall -fwarn-tabs+    ghc-options:+        -Wall+        -fwarn-tabs+        -Wno-deriving-typeable     c-sources: lib/cbits/HsTime.c     build-depends:-        base >= 4.14 && < 5,-        deepseq >= 1.1+        base >= 4.19 && < 5,+        deepseq >= 1.1,+    -- template-haskell-lift was added as a boot library in GHC-9.14+    -- once we no longer wish to backport releases to older major releases,+    -- this conditional can be dropped+    if impl(ghc < 9.14)+        build-depends: template-haskell+    elif impl(ghc)+        build-depends: template-haskell-lift >= 0.1 && <0.2     if os(windows)         build-depends: Win32     exposed-modules:@@ -68,7 +79,6 @@         Data.Time.Clock.TAI,         Data.Time.LocalTime,         Data.Time.Format,-        Data.Time.Format.Internal,         Data.Time.Format.ISO8601,         Data.Time     other-modules:@@ -80,6 +90,7 @@         Data.Time.Calendar.Private,         Data.Time.Calendar.Types,         Data.Time.Calendar.Week,+        Data.Time.Format.Internal,         Data.Time.Clock.Internal.DiffTime,         Data.Time.Clock.Internal.AbsoluteTime,         Data.Time.Clock.Internal.NominalDiffTime,@@ -88,8 +99,8 @@         Data.Time.Clock.Internal.SystemTime,         Data.Time.Clock.Internal.UTCTime,         Data.Time.Clock.Internal.CTimeval,-        Data.Time.Clock.Internal.CTimespec,         Data.Time.Clock.Internal.UTCDiff,+        Data.Time.LocalTime.Internal.Foreign,         Data.Time.LocalTime.Internal.TimeZone,         Data.Time.LocalTime.Internal.TimeOfDay,         Data.Time.LocalTime.Internal.CalendarDiffTime,@@ -101,6 +112,9 @@         Data.Time.Format.Format.Instances,         Data.Time.Format.Parse.Class,         Data.Time.Format.Parse.Instances+    if !impl(mhs)+        other-modules:+            Data.Time.Clock.Internal.CTimespec     include-dirs: lib/include     if os(windows)         install-includes:@@ -115,7 +129,7 @@ test-suite ShowDefaultTZAbbreviations     type: exitcode-stdio-1.0     hs-source-dirs: test-    default-language: Haskell2010+    default-language: GHC2021     ghc-options: -Wall -fwarn-tabs     build-depends:         base,@@ -125,29 +139,39 @@ test-suite ShowTime     type: exitcode-stdio-1.0     hs-source-dirs: test-    default-language: Haskell2010+    default-language: GHC2021     ghc-options: -Wall -fwarn-tabs     build-depends:         base,         time     main-is: ShowTime.hs +test-suite ForeignCalls+    type: exitcode-stdio-1.0+    hs-source-dirs: test+    default-language: GHC2021+    ghc-options: -Wall -fwarn-tabs+    build-depends:+        base,+        time+    main-is: ForeignCalls.hs+ test-suite test-main+    if arch (javascript)+        -- blocked by splitmix+        -- https://github.com/haskellari/splitmix/issues/93+        buildable: False     type: exitcode-stdio-1.0     hs-source-dirs: test/main-    default-language: Haskell2010+    default-language: GHC2021     default-extensions:-        Rank2Types-        GeneralizedNewtypeDeriving-        DeriveDataTypeable-        StandaloneDeriving-        ExistentialQuantification-        MultiParamTypeClasses-        FlexibleInstances+        DefaultSignatures+        DerivingStrategies+        RecordWildCards         UndecidableInstances-        ScopedTypeVariables-        TupleSections     ghc-options: -Wall -fwarn-tabs+    if !arch (wasm32)+        ghc-options: -threaded -rtsopts -with-rtsopts=-N     build-depends:         base,         deepseq,@@ -156,9 +180,14 @@         QuickCheck,         tasty,         tasty-hunit,-        tasty-quickcheck+        tasty-quickcheck,+    if impl(ghc < 9.14)+        build-depends: template-haskell+    elif impl(ghc)+        build-depends: template-haskell-lift >= 0.1 && <0.2     main-is: Main.hs     other-modules:+        Test.AddDiff         Test.Types         Test.TestUtil         Test.Arbitrary@@ -183,6 +212,7 @@         Test.Calendar.Week         Test.Calendar.Year         Test.Clock.Conversion+        Test.Clock.Pattern         Test.Clock.Resolution         Test.Clock.TAI         Test.Format.Compile@@ -194,22 +224,46 @@         Test.LocalTime.TimeOfDay         Test.LocalTime.TimeRef +test-suite test-template+    if arch (wasm32)+        buildable: False+    type: exitcode-stdio-1.0+    hs-source-dirs: test/template+    default-language: GHC2021+    default-extensions:+        DerivingStrategies+        UndecidableInstances+        RecordWildCards+        TemplateHaskell+    ghc-options: -Wall -fwarn-tabs+    build-depends:+        base,+        deepseq,+        time,+        random,+        QuickCheck,+        tasty,+        tasty-hunit,+        tasty-quickcheck,+    if impl(ghc < 9.14)+        build-depends: template-haskell+    elif impl(ghc)+        build-depends: template-haskell-lift >= 0.1 && <0.2+    main-is: Main.hs+    other-modules:+        Test.TastyWrapper+ test-suite test-unix-    if os(windows)+    if os(windows) || arch (javascript) || arch (wasm32)         buildable: False     type: exitcode-stdio-1.0     hs-source-dirs: test/unix-    default-language: Haskell2010+    default-language: GHC2021     default-extensions:-        Rank2Types-        DeriveDataTypeable-        StandaloneDeriving-        ExistentialQuantification-        MultiParamTypeClasses-        FlexibleInstances         UndecidableInstances-        ScopedTypeVariables     ghc-options: -Wall -fwarn-tabs+    if !arch (wasm32)+        ghc-options: -threaded -rtsopts -with-rtsopts=-N     c-sources: test/unix/Test/Format/FormatStuff.c     build-depends:         base,@@ -229,11 +283,15 @@ benchmark time-bench     type: exitcode-stdio-1.0     hs-source-dirs: benchmark-    default-language: Haskell2010+    default-language: GHC2021     ghc-options: -Wall -fwarn-tabs     build-depends:         base,         deepseq,         time,         criterion+    if impl(ghc < 9.14)+        build-depends: template-haskell+    elif impl(ghc)+        build-depends: template-haskell-lift >= 0.1 && <0.2     main-is: Main.hs