diff --git a/SConstruct b/SConstruct index b57ff2e7..cfebd3d6 100644 --- a/SConstruct +++ b/SConstruct @@ -294,6 +294,7 @@ if env['CC'] == 'gcc': env.Append(CCFLAGS = Split('-pipe -Wall -O2 -g -W -pedantic -Wunused -Wshadow -std=gnu99')) env.Append(CPPFLAGS = [ + '-D_TIME_BITS=64', '-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE_SOURCE', '-D_LARGE_FILES', diff --git a/configure.ac b/configure.ac index 5787480e..50cc72cd 100644 --- a/configure.ac +++ b/configure.ac @@ -1553,7 +1553,7 @@ AC_ARG_ENABLE([lfs], ) AC_MSG_RESULT([$ENABLE_LFS]) if test "$ENABLE_LFS" = yes; then - CPPFLAGS="${CPPFLAGS} -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" + CPPFLAGS="${CPPFLAGS} -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES" AC_SYS_LARGEFILE fi diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c92a85b7..23f735a9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -11,7 +11,7 @@ include(FindPkgConfig) include(LighttpdMacros) -add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES -D_DEFAULT_SOURCE) +add_definitions(-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES -D_DEFAULT_SOURCE) # default to ON set(CMAKE_POSITION_INDEPENDENT_CODE ON CACHE BOOL "Default value for ``POSITION_INDEPENDENT_CODE`` of targets.") diff --git a/src/first.h b/src/first.h index 0380b22f..85c7b6a3 100644 --- a/src/first.h +++ b/src/first.h @@ -21,6 +21,16 @@ #define _Float32 float #endif +/* enable glibc Y2038 64-bit time_t (where available on 32-bit systems) */ +#ifdef _ILP32 +#ifndef _TIME_BITS +#define _TIME_BITS 64 +#endif +#ifndef _FILE_OFFSET_BITS +#define _FILE_OFFSET_BITS 64 +#endif +#endif + #include #include @@ -60,6 +70,8 @@ #elif defined(__TIMESIZE) #if __TIMESIZE == 64 #define HAS_TIME_BITS64 1 + #elif defined(__USE_TIME_BITS64) + #define HAS_TIME_BITS64 1 #else #define HAS_TIME_BITS64 0 #endif @@ -70,6 +82,7 @@ #define HAS_TIME_BITS64 0 #endif #elif defined(_ILP32) \ + && !defined(__USE_TIME_BITS64) \ && !defined(__NetBSD__) && !defined(__OpenBSD__) \ && (!defined(__FreeBSD__) || !defined(__i386__)) \ && !(defined(__APPLE__) && defined(__MACH__)) diff --git a/src/meson.build b/src/meson.build index a0c6ee9e..f05dcfb3 100644 --- a/src/meson.build +++ b/src/meson.build @@ -8,6 +8,7 @@ include_base_paths = [ ] defs = [ + '-D_TIME_BITS=64', '-D_FILE_OFFSET_BITS=64', '-D_LARGEFILE_SOURCE', '-D_LARGE_FILES',