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
