Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmake: check fseeko after detecting HAVE_FILE_OFFSET_BITS #13264

wants to merge 2 commits into from


Copy link

@SirLynix SirLynix commented Apr 2, 2024

On Android, fseeko is defined as is (I omitted other functions for clarity):

/* See */
#if defined(__USE_FILE_OFFSET64)

#if __ANDROID_API__ >= 24
int fseeko(FILE* _Nonnull __fp, off_t __offset, int __whence) __RENAME(fseeko64) __INTRODUCED_IN(24);
#endif /* __ANDROID_API__ >= 24 */

int fseeko(FILE* _Nonnull __fp, off_t __offset, int __whence);

#if __ANDROID_API__ >= 24
int fseeko64(FILE* _Nonnull __fp, off64_t __offset, int __whence) __INTRODUCED_IN(24);
#endif /* __ANDROID_API__ >= 24 */


Which means that on Android 32bits (armv7), fseeko is only available in 32bits mode, if __USE_FILE_OFFSET64 (_FILE_OFFSET_BITS=64) is set then fseeko is not available.

CMake detects fseeko as available because _FILE_OFFSET_BITS=64 is not yet defined when it tests for this function existence, but then it defines _FILE_OFFSET_BITS=64 which makes fseeko unavailable and fails compilation:

/home/runner/.xmake/cache/packages/2404/l/libcurl/8.6.0/source/lib/formdata.c:794:10: error: call to undeclared function 'fseeko'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  return fseeko(stream, (off_t)offset, whence);
/home/runner/.xmake/cache/packages/2404/l/libcurl/8.6.0/source/lib/formdata.c:794:10: note: did you mean 'fseek'?
/home/runner/work/xmake-repo/xmake-repo/android-ndk-r26b/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/stdio.h:215:5: note: 'fseek' declared here
int fseek(FILE* _Nonnull __fp, long __offset, int __whence);

A simple fix is to test for fseeko existence after testing HAVE_FILE_OFFSET_BITS and especially after


tested here

Fix #12086 for good

CMakeLists.txt Outdated Show resolved Hide resolved
@vszakats vszakats changed the title CMake: check fseeko after detecting HAVE_FILE_OFFSET_BITS cmake: check fseeko after detecting HAVE_FILE_OFFSET_BITS Apr 2, 2024
SirLynix and others added 2 commits April 7, 2024 11:16
Co-authored-by: Viktor Szakats <>
@bagder bagder closed this in 6b86471 Apr 8, 2024
Copy link

bagder commented Apr 8, 2024


@SirLynix SirLynix deleted the patch-1 branch April 8, 2024 13:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Successfully merging this pull request may close these issues.

8.4.0 fails to build on cross-compiled android ARM
3 participants