Linux: Do not force 64-bit time_t on 32-bit archs with system libarchive

Commit 1b9e8f833f (Linux: Compile with 64-bit time_t even on 32-bit
architectures, 2025-06-26, v4.1.0-rc2~16^2) broke running with a
system-provided libarchive that uses a 32-bit `time_t`.  If CMake
is configured to build with a system libarchive, assume the user
has taken responsibility to match `time_t` sizes.

Fixes: #27448
This commit is contained in:
Brad King
2025-12-11 14:33:49 -05:00
parent 16cc3e25d4
commit cea7f7fc32

View File

@@ -68,8 +68,14 @@ endif()
# Use 64-bit off_t on 32-bit Linux
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SIZEOF_VOID_P EQUAL 4)
# ensure 64bit offsets are used for filesystem accesses for 32bit compilation
add_compile_definitions(_FILE_OFFSET_BITS=64 _TIME_BITS=64)
# Use 64-bit off_t even in 32-bit builds.
add_compile_definitions(_FILE_OFFSET_BITS=64)
# Use 64-bit time_t even in 32-bit builds. Skip this with
# system libarchive because its ABI uses the default time_t.
if (NOT CMAKE_USE_SYSTEM_LIBARCHIVE)
add_compile_definitions(_TIME_BITS=64)
endif()
endif()
# Workaround for TOC Overflow on ppc64