From 3bcc984c529cc0986dba6b323cfaa8b715a4340c Mon Sep 17 00:00:00 2001 From: Mahesh Maddineni Date: Fri, 6 Sep 2024 13:20:15 -0700 Subject: [PATCH] Fixed LIBM target issue and added the missing file gettimeoftheday c file --- cmake/modules/CheckDependentLibraries.cmake | 11 ++- utils/timer/msvc/gettimeofday.c | 75 +++++++++++++++++++++ 2 files changed, 79 insertions(+), 7 deletions(-) create mode 100644 utils/timer/msvc/gettimeofday.c diff --git a/cmake/modules/CheckDependentLibraries.cmake b/cmake/modules/CheckDependentLibraries.cmake index e211d930d60..4c2d33f124a 100644 --- a/cmake/modules/CheckDependentLibraries.cmake +++ b/cmake/modules/CheckDependentLibraries.cmake @@ -12,13 +12,10 @@ find_package(FLEX REQUIRED) find_package(BISON REQUIRED) -if(UNIX) - find_library(MATH_LIBRARY m) - add_library(LIBM INTERFACE IMPORTED GLOBAL) - set_property(TARGET LIBM PROPERTY INTERFACE_LINK_LIBRARIES ${MATH_LIBRARY}) - mark_as_advanced(M_LIBRARY) - message("!!! MATH_LIBRARY: ${MATH_LIBRARY}") -endif() +find_library(MATH_LIBRARY m) +add_library(LIBM INTERFACE IMPORTED GLOBAL) +set_property(TARGET LIBM PROPERTY INTERFACE_LINK_LIBRARIES ${MATH_LIBRARY}) +mark_as_advanced(M_LIBRARY) find_package(PROJ REQUIRED) if(PROJ_FOUND) diff --git a/utils/timer/msvc/gettimeofday.c b/utils/timer/msvc/gettimeofday.c new file mode 100644 index 00000000000..1e00f7ee149 --- /dev/null +++ b/utils/timer/msvc/gettimeofday.c @@ -0,0 +1,75 @@ +/* + * win32gettimeofday.c + * Win32 gettimeofday() replacement + * + * src/port/win32gettimeofday.c + * + * Copyright (c) 2003 SRA, Inc. + * Copyright (c) 2003 SKC, Inc. + * + * Permission to use, copy, modify, and distribute this software and + * its documentation for any purpose, without fee, and without a + * written agreement is hereby granted, provided that the above + * copyright notice and this paragraph and the following two + * paragraphs appear in all copies. + * + * IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, + * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING + * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS + * DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + * THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS + * IS" BASIS, AND THE AUTHOR HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, + * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + */ + +#include "c.h" + +#include + +#include + +/* FILETIME of Jan 1 1970 00:00:00, the PostgreSQL epoch */ +static const unsigned __int64 epoch = UINT64CONST(116444736000000000); + +/* + * FILETIME represents the number of 100-nanosecond intervals since + * January 1, 1601 (UTC). + */ +#define FILETIME_UNITS_PER_SEC 10000000L +#define FILETIME_UNITS_PER_USEC 10 + + +/* + * timezone information is stored outside the kernel so tzp isn't used anymore. + * + * Note: this function is not for Win32 high precision timing purposes. See + * elapsed_time(). + */ +int +gettimeofday(struct timeval *tp, void *tzp) +{ + FILETIME file_time; + ULARGE_INTEGER ularge; + + /* + * POSIX declines to define what tzp points to, saying "If tzp is not a + * null pointer, the behavior is unspecified". Let's take this + * opportunity to verify that noplace in Postgres tries to use any + * unportable behavior. + */ + Assert(tzp == NULL); + + GetSystemTimePreciseAsFileTime(&file_time); + ularge.LowPart = file_time.dwLowDateTime; + ularge.HighPart = file_time.dwHighDateTime; + + tp->tv_sec = (long) ((ularge.QuadPart - epoch) / FILETIME_UNITS_PER_SEC); + tp->tv_usec = (long) (((ularge.QuadPart - epoch) % FILETIME_UNITS_PER_SEC) + / FILETIME_UNITS_PER_USEC); + + return 0; +}