aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2023-09-27 00:58:17 +0300
committerJia Tan <jiat0218@gmail.com>2023-10-31 18:44:59 +0800
commit36fabdbe67c8a8fbdc3ac695a91fc443a1328cc4 (patch)
treeba20c834cc510c25e180ef0dd08a234996f92ddd /CMakeLists.txt
parentCMake: Generate and install liblzma.pc if not using MSVC. (diff)
downloadxz-36fabdbe67c8a8fbdc3ac695a91fc443a1328cc4.tar.xz
CMake: Use -D_FILE_OFFSET_BITS=64 if (and only if) needed.
A CMake option LARGE_FILE_SUPPORT is created if and only if -D_FILE_OFFSET_BITS=64 affects sizeof(off_t). This is needed on many 32-bit platforms and even with 64-bit builds with MinGW-w64 to get support for files larger than 2 GiB.
Diffstat (limited to '')
-rw-r--r--CMakeLists.txt7
1 files changed, 6 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f8eeebd3..b214d71d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,7 +9,6 @@
#
# On some platforms this builds also xz and xzdec, but these are
# highly experimental and meant for testing only:
-# - No large file support on those 32-bit platforms that need it
# - No replacement getopt_long(), libc must have it
# - No sandboxing support
# - No translations
@@ -53,6 +52,7 @@ include(CheckIncludeFile)
include(CheckSymbolExists)
include(CheckStructHasMember)
include(CheckCSourceCompiles)
+include(cmake/tuklib_large_file_support.cmake)
include(cmake/tuklib_integer.cmake)
include(cmake/tuklib_cpucores.cmake)
include(cmake/tuklib_physmem.cmake)
@@ -152,6 +152,11 @@ add_compile_definitions(
# it also adds the definitions to CMAKE_REQUIRED_DEFINITIONS.
tuklib_use_system_extensions(ALL)
+# Check for large file support. It's required on some 32-bit platforms and
+# even on 64-bit MinGW-w64 to get 64-bit off_t. This can be forced off on
+# the CMake command line if needed: -DLARGE_FILE_SUPPORT=OFF
+tuklib_large_file_support(ALL)
+
# This is needed by liblzma and xz.
tuklib_integer(ALL)