libtahu exposes a library function `get_current_timestamp()` to return
the real-time clock as the number of milliseconds since the Unix epoch
as a 64-bit value.  It calls `clock_gettime(CLOCK_REALTIME, &ts)` (where
`ts` is a `struct timespec`) to get the system time and does some simple
arithmetic on `ts.tv_sec` and `ts.tv_nsec` to convert the time to a
number of milliseconds.

Ideally, we want `ts.tv_sec` to have a 64-bit type to avoid Y2038
problems, but on most 32-bit architectures, `ts.tv_sec` will have a
32-bit type by default.  Try and select the 64-bit time interface even
on 32-bit architectures by appending `-D_FILE_OFFSET_BITS=64` and
`-D_TIME_BITS=64` to the `CFLAGS` variable when invoking `make`.  This
works for glibc 2.34 or later when the system is running on Linux kernel
5.1 or later.

Signed-off-by: Ian Abbott <[email protected]>
---
 rules/libtahu.make | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/rules/libtahu.make b/rules/libtahu.make
index 26c064c6d..3e392216d 100644
--- a/rules/libtahu.make
+++ b/rules/libtahu.make
@@ -37,11 +37,12 @@ LIBTAHU_CONF_TOOL   := NO
 # Compile
 # ----------------------------------------------------------------------------
 
-#LIBTAHU_MAKE_ENV      := $(CROSS_ENV)
-
+LIBTAHU_CPPFLAGS := -Iinclude -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64
+LIBTAHU_CFLAGS := -O2 -g -g3 -fPIC
 # Just build the dynamic library.
 LIBTAHU_MAKE_OPT       := \
        $(CROSS_ENV_PROGS) \
+       CFLAGS='$(CROSS_CPPFLAGS) $(LIBTAHU_CPPFLAGS) $(CROSS_CFLAGS) 
$(LIBTAHU_CFLAGS)' \
        lib/libtahu.so
 
 # ----------------------------------------------------------------------------
-- 
2.39.1


Reply via email to