mirror of
https://git.tukaani.org/xz.git
synced 2024-04-04 12:36:23 +02:00
xz/Windows: Ensure that clock_gettime() isn't used with MinGW-w64.
This commit alone doesn't change anything in the real-world: - configure.ac currently checks for clock_gettime() only when using pthreads. - CMakeLists.txt doesn't check for clock_gettime() on Windows. So clock_gettime() wasn't used with MinGW-w64 before either. clock_gettime() provides monotonic time and it's better than gettimeofday() in this sense. But clock_gettime() is defined in winpthreads, and liblzma or xz needs nothing else from winpthreads. By avoiding clock_gettime(), we avoid the dependency on libwinpthread-1.dll or the need to link against the static version. As a bonus, GetTickCount64() and MinGW-w64's gettimeofday() can be faster than clock_gettime(CLOCK_MONOTONIC, &tv). The resolution is more than good enough for the progress indicator in xz.
This commit is contained in:
parent
cdb4d91f24
commit
46fd991cd2
1 changed files with 7 additions and 2 deletions
|
@ -14,7 +14,7 @@
|
||||||
|
|
||||||
#if defined(MYTHREAD_VISTA) || defined(_MSC_VER)
|
#if defined(MYTHREAD_VISTA) || defined(_MSC_VER)
|
||||||
// Nothing
|
// Nothing
|
||||||
#elif defined(HAVE_CLOCK_GETTIME)
|
#elif defined(HAVE_CLOCK_GETTIME) && !defined(__MINGW32__)
|
||||||
# include <time.h>
|
# include <time.h>
|
||||||
#else
|
#else
|
||||||
# include <sys/time.h>
|
# include <sys/time.h>
|
||||||
|
@ -59,7 +59,12 @@ mytime_now(void)
|
||||||
// there's no reason to avoid a WinVista API here either.
|
// there's no reason to avoid a WinVista API here either.
|
||||||
return GetTickCount64();
|
return GetTickCount64();
|
||||||
|
|
||||||
#elif defined(HAVE_CLOCK_GETTIME)
|
#elif defined(HAVE_CLOCK_GETTIME) && !defined(__MINGW32__)
|
||||||
|
// MinGW-w64: clock_gettime() is defined in winpthreads but we need
|
||||||
|
// nothing else from winpthreads. By avoiding clock_gettime(), we
|
||||||
|
// avoid the dependency on libwinpthread-1.dll or the need to link
|
||||||
|
// against the static version. The downside is that the fallback
|
||||||
|
// method, gettimeofday(), doesn't provide monotonic time.
|
||||||
struct timespec tv;
|
struct timespec tv;
|
||||||
|
|
||||||
# ifdef HAVE_CLOCK_MONOTONIC
|
# ifdef HAVE_CLOCK_MONOTONIC
|
||||||
|
|
Loading…
Reference in a new issue