On 23/02/2023 15:42, Michael Olbrich wrote:
On Mon, Feb 20, 2023 at 01:41:05PM +0000, Ian Abbott wrote:
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

No need to mess with the existing CFLAGS. You can inject extra CFLAGS
though the toolchain wrappers. And for correctness, make it conditional:

ifdef PTXCONF_GLOBAL_LARGE_FILE
LIBTAHU_CFLAGS := -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64
endif

nothing else is needed.

Michael

Hi Michael,

Sorry to be a pain. I'm attempting to inject extra CFLAGS through the toolchain wrappers, but I'm not sure how to do it. Here is one of my attempts that does not work:

# ----------------------------------------------------------------------------
# Prepare
# ----------------------------------------------------------------------------

LIBTAHU_CONF_TOOL       := NO

# ----------------------------------------------------------------------------
# Compile
# ----------------------------------------------------------------------------

# -D_TIME_BITS=64 requires -D_FILE_OFFSET_BITS=64
LIBTAHU_CPPFLAGS := -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64
LIBTAHU_CFLAGS := -O2
LIBTAHU_MAKE_ENV := $(CROSS_ENV)
# Just build the dynamic library.
LIBTAHU_MAKE_OPT := \
        $(CROSS_ENV_PROGS) \
        lib/libtahu.so

$(STATEDIR)/libtahu.compile:
        @$(call targetinfo)
        @$(call world/compile, LIBTAHU)
        @$(call touch)

I'm obviously missing something to pass the properly wrapped CC and CPP variables (incorporating the extra flags) to 'make'. Could you provide a clue how to fix it?

Thanks

Ian

--
-=( Ian Abbott <[email protected]> || MEV Ltd. is a company  )=-
-=( registered in England & Wales.  Regd. number: 02862268.  )=-
-=( Regd. addr.: S11 & 12 Building 67, Europa Business Park, )=-
-=( Bird Hall Lane, STOCKPORT, SK3 0XA, UK. || www.mev.co.uk )=-


Reply via email to