cmake: Enable 64bit off_t on 32bit glibc systems
authorKhem Raj <raj.khem@gmail.com>
Sat, 4 Feb 2023 21:54:41 +0000 (13:54 -0800)
committerFangrui Song <i@maskray.me>
Sat, 4 Feb 2023 21:54:41 +0000 (13:54 -0800)
commit5cd554303ead0f8891eee3cd6d25cb07f5a7bf67
tree7a031bc33a698d998e2818c7458eb925baa58e6f
parent7e3943f5767d63b24c99aad056ad01cf7e6bfe52
cmake: Enable 64bit off_t on 32bit glibc systems

Pass -D_FILE_OFFSET_BITS=64 to compiler flags on 32bit glibc based
systems. This will make sure that 64bit versions of LFS functions are
used e.g. seek will behave same as lseek64. Also revert [1] partially
because this added a cmake test to detect lseek64 but then forgot to
pass the needed macro to actual compile, this test was incomplete too
since libc implementations like musl has 64bit off_t by default on 32bit
systems and does not bundle[2] -D_LARGEFILE64_SOURCE under -D_GNU_SOURCE
like glibc, which means the compile now fails on musl because the cmake
check passes but we do not have _LARGEFILE64_SOURCE defined. Using the
*64 function was transitional anyways so use -D_FILE_OFFSET_BITS=64
instead

[1] https://github.com/llvm/llvm-project/commit/8db7e5e4eed4c4e697dc3164f2c9351d8c3e942b
[2] https://git.musl-libc.org/cgit/musl/commit/?id=25e6fee27f4a293728dd15b659170e7b9c7db9bc

Reviewed By: MaskRay

Differential Revision: https://reviews.llvm.org/D139752
llvm/cmake/config-ix.cmake
llvm/include/llvm/Config/config.h.cmake
llvm/lib/Support/raw_ostream.cpp
llvm/utils/gn/secondary/llvm/include/llvm/Config/BUILD.gn
utils/bazel/llvm_configs/config.h.cmake