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 )=-