diff --git a/CMake/win32-cache.cmake b/CMake/win32-cache.cmake index 4fe9eb1139..cb2e45cf56 100644 --- a/CMake/win32-cache.cmake +++ b/CMake/win32-cache.cmake @@ -191,6 +191,7 @@ if(MINGW OR MSVC) curl_prefill_type_size("LONG_LONG" 8) curl_prefill_type_size("__INT64" 8) curl_prefill_type_size("CURL_OFF_T" 8) + curl_prefill_type_size("ADDRESS_FAMILY" 2) # MSVC or mingw-w64 v2+ # CURL_SOCKET_T, SIZE_T: 8 for _WIN64, 4 otherwise # TIME_T: 8 for _WIN64 or UCRT or MSVC and not Windows CE, 4 otherwise # Also 4 for non-UCRT 32-bit when _USE_32BIT_TIME_T is set. @@ -199,20 +200,10 @@ if(MINGW OR MSVC) set(HAVE_SIZEOF_SSIZE_T 0) set(HAVE_FILE_OFFSET_BITS 0) curl_prefill_type_size("OFF_T" 4) - curl_prefill_type_size("ADDRESS_FAMILY" 2) else() # SSIZE_T: 8 for _WIN64, 4 otherwise - if(MINGW64_VERSION) - if(MINGW64_VERSION VERSION_GREATER_EQUAL 3.0) - set(HAVE_FILE_OFFSET_BITS 1) - curl_prefill_type_size("OFF_T" 8) - endif() - if(MINGW64_VERSION VERSION_GREATER_EQUAL 2.0) - curl_prefill_type_size("ADDRESS_FAMILY" 2) - else() - set(HAVE_SIZEOF_ADDRESS_FAMILY 0) - endif() - endif() + set(HAVE_FILE_OFFSET_BITS 1) # mingw-w64 v3+ + curl_prefill_type_size("OFF_T" 8) # mingw-w64 v3+ endif() endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index d113989a5c..f3041b652d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -246,6 +246,9 @@ if(WIN32) string(REGEX REPLACE "MINGW64_VERSION=" "" MINGW64_VERSION "${CURL_TEST_OUTPUT}") if(MINGW64_VERSION) message(STATUS "Found MINGW64_VERSION=${MINGW64_VERSION}") + if(MINGW64_VERSION VERSION_LESS 3.0) + message(FATAL_ERROR "mingw-w64 3.0 or upper is required") + endif() endif() endif() unset(MINGW64_VERSION CACHE) # Avoid storing in CMake cache @@ -1595,7 +1598,6 @@ if(WIN32) # Pre-fill detection results based on target OS version if(_CURL_PREFILL) if(NOT HAVE_WIN32_WINNT OR HAVE_WIN32_WINNT LESS 0x0600 OR # older than Windows Vista - (MINGW AND MINGW64_VERSION VERSION_LESS 2.0) OR WINCE OR WINDOWS_STORE) set(HAVE_IF_NAMETOINDEX 0) unset(HAVE_IF_NAMETOINDEX CACHE) diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 410fba07d4..0c53731710 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -181,7 +181,7 @@ Building for Windows XP is required as a minimum. You can build curl with: - Microsoft Visual Studio 2008 v9.0 or later (`_MSC_VER >= 1500`) -- MinGW-w64 +- MinGW-w64 3.0 or later (`__MINGW64_VERSION_MAJOR >= 3`) ## Building Windows DLLs and C runtime (CRT) linkage issues diff --git a/lib/curl_setup.h b/lib/curl_setup.h index fc5359d1b4..36da5c6cbf 100644 --- a/lib/curl_setup.h +++ b/lib/curl_setup.h @@ -75,6 +75,11 @@ #endif #endif +#if defined(__MINGW32__) && \ + (!defined(__MINGW64_VERSION_MAJOR) || (__MINGW64_VERSION_MAJOR < 3)) +#error "Building curl requires mingw-w64 3.0 or later" +#endif + /* Visual Studio 2008 is the minimum Visual Studio version we support. Workarounds for older versions of Visual Studio have been removed. */ #if defined(_MSC_VER) && (_MSC_VER < 1500) diff --git a/lib/easy_lock.h b/lib/easy_lock.h index 2d705174be..909753f43a 100644 --- a/lib/easy_lock.h +++ b/lib/easy_lock.h @@ -30,12 +30,6 @@ #if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x600 -#ifdef __MINGW32__ -#ifndef SRWLOCK_INIT -#define SRWLOCK_INIT NULL -#endif -#endif /* __MINGW32__ */ - #define curl_simple_lock SRWLOCK #define CURL_SIMPLE_LOCK_INIT SRWLOCK_INIT