From: Viktor Szakats Date: Thu, 9 Jan 2025 15:17:08 +0000 (+0100) Subject: msvc: require VS2005 for large file support X-Git-Tag: curl-8_12_0~146 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ad30f0f64dfcdd6c5021a80beecc74b86abbdc9;p=thirdparty%2Fcurl.git msvc: require VS2005 for large file support Large file support requires `_fseeki64()`. This function is offered in VS2005 and upper. VS2003 has it in the static CRT only, with declaration missing from headers, so it's not usable. Ref: https://archive.org/details/X10-38445 (MS Visual Studio .NET 2003) Ref: 8b76a8aeb21c8ae2261147af1bddd0d4637c252c #15526 Closes #15958 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index bd11cd61de..65d76a975a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1870,9 +1870,11 @@ include(CMake/OtherTests.cmake) add_definitions("-DHAVE_CONFIG_H") -# For Windows, all compilers used by CMake should support large files if(WIN32) - set(USE_WIN32_LARGE_FILES ON) + # _fseeki64() requires VS2005 + if(NOT MSVC OR (MSVC_VERSION GREATER_EQUAL 1400)) + set(USE_WIN32_LARGE_FILES ON) + endif() # Use the manifest embedded in the Windows Resource set(CMAKE_RC_FLAGS "${CMAKE_RC_FLAGS} -DCURL_EMBED_MANIFEST") @@ -1898,7 +1900,7 @@ if(MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4") endif() - # Use multithreaded compilation on VS 2008+ + # Use multithreaded compilation on VS2008+ if(CMAKE_C_COMPILER_ID STREQUAL "MSVC" AND MSVC_VERSION GREATER_EQUAL 1500) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") endif() diff --git a/lib/config-win32.h b/lib/config-win32.h index 81dd46cf15..d0c551f160 100644 --- a/lib/config-win32.h +++ b/lib/config-win32.h @@ -387,7 +387,8 @@ Vista /* LARGE FILE SUPPORT */ /* ---------------------------------------------------------------- */ -#if defined(_MSC_VER) || defined(__MINGW32__) +/* _fseeki64() requires VS2005 */ +#if (defined(_MSC_VER) && (_MSC_VER >= 1400)) || defined(__MINGW32__) # define USE_WIN32_LARGE_FILES /* Number of bits in a file offset, on hosts where this is settable. */ # ifdef __MINGW32__