From 2e6a1f4dfb8d2288a4bf468442b3b375d35cbe28 Mon Sep 17 00:00:00 2001 From: dwarning Date: Fri, 18 Oct 2024 19:55:19 +0200 Subject: [PATCH] workaround for ftime usage under mingw, still needed as long no compatible solution is found --- configure.ac | 13 ++++++++++++- src/frontend/resource.c | 15 ++++++++------- src/misc/misc_time.c | 4 ++-- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/configure.ac b/configure.ac index 87d3a470a..780973b1c 100644 --- a/configure.ac +++ b/configure.ac @@ -908,7 +908,18 @@ AC_STRUCT_TM AC_STRUCT_TIMEZONE AC_CHECK_FUNCS([localtime]) -AC_CHECK_FUNCS([gettimeofday times ftime]) +case $host_os in + *mingw* | *msys* ) + AC_CHECK_FUNCS([gettimeofday times]) + AC_CHECK_LIB([msvcr100], [ftime], + [AC_DEFINE([HAVE_FTIME], [1], [Have ftime routines in libmsvcr100]) + LIBS="$LIBS -lmsvcr100"]) + ;; + *) + AC_CHECK_FUNCS([gettimeofday times ftime]) + ;; +esac + # Do not use time or getrusage function for CPU time measurement under OpenMP if test "x$enable_openmp" = xno; then AC_CHECK_FUNCS([time getrusage]) diff --git a/src/frontend/resource.c b/src/frontend/resource.c index 09e116eb7..b54ee8772 100644 --- a/src/frontend/resource.c +++ b/src/frontend/resource.c @@ -182,14 +182,15 @@ printres(char *name) total_msec = ((x % hz) * 1000) / hz; cpu_elapsed = "CPU"; # else -# ifdef HAVE_FTIME - struct timeb timenow; - ftime(&timenow); - timediff(&timenow, &timebegin, &total_sec, &total_msec); - cpu_elapsed = "elapsed"; -# else +# ifdef HAVE_FTIME + struct timeb timenow; + struct timeb ftimezero; + ftime(&timenow); + timediff(&timenow, &ftimezero, &total_sec, &total_msec); + cpu_elapsed = "elapsed"; +# else # define NO_RUDATA -# endif +# endif # endif # endif diff --git a/src/misc/misc_time.c b/src/misc/misc_time.c index 39a06dad1..2abd1b511 100644 --- a/src/misc/misc_time.c +++ b/src/misc/misc_time.c @@ -80,9 +80,9 @@ void timebegin(void) { } #else #ifdef HAVE_FTIME - struct timeb timezero; + struct timeb ftimezero; void timebegin(void) { - ftime(&timezero); + ftime(&ftimezero); } #endif /* FTIME */ #endif /* TIMES */