]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
msvc: drop support for VS2005 and older
authorViktor Szakats <commit@vsz.me>
Mon, 13 Jan 2025 19:49:20 +0000 (20:49 +0100)
committerViktor Szakats <commit@vsz.me>
Fri, 21 Feb 2025 11:01:00 +0000 (12:01 +0100)
- cmake: assume large file support (VS2005+ / `_fseeki64()`)
- config-win32.h: assume large file support (VS2005+ / `_fseeki64()`)
- config-win32.h: assume `HAVE_LONGLONG` (VS2003+)
- config-win32.h: assume 64-bit `time_t` (VS2005+)
- config-win32.h: assume VS2008+
- cmake: use multi-threaded/parallel compilation (VS2008+)
- curl_setup.h: require multi-threading MSVC CRT (~VS2005+)
- curl_setup.h: hard fail for unsupported MSVC versions.
Authored-by: Jay Satiro
- winbuild: bump minimum version

Follow-up to 308437ac53a142be2c3470330e7de3737915bb23 #15992
Ref: #15972
Closes #16004

CMakeLists.txt
lib/config-win32.h
lib/curl_setup.h
winbuild/README.md

index 398547adb4262fa21ceae846894648ad03b1dd0c..0f42fd8f4cac5de642210117fe82041fb1c3bc3d 100644 (file)
@@ -1932,10 +1932,7 @@ set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS "HAVE_CONFIG_H")
 if(WIN32)
   list(APPEND CURL_LIBS "ws2_32" "bcrypt")
 
-  # _fseeki64() requires VS2005
-  if(NOT MSVC OR (MSVC_VERSION GREATER_EQUAL 1400))
-    set(USE_WIN32_LARGE_FILES ON)
-  endif()
+  set(USE_WIN32_LARGE_FILES ON)
 
   # Use the manifest embedded in the Windows Resource
   string(APPEND CMAKE_RC_FLAGS " -DCURL_EMBED_MANIFEST")
@@ -1955,10 +1952,7 @@ if(MSVC)
   # Disable default manifest added by CMake
   string(APPEND CMAKE_EXE_LINKER_FLAGS " -MANIFEST:NO")
 
-  # Use multithreaded compilation on VS2008+
-  if(CMAKE_C_COMPILER_ID STREQUAL "MSVC" AND MSVC_VERSION GREATER_EQUAL 1500)
-    string(APPEND CMAKE_C_FLAGS " -MP")
-  endif()
+  string(APPEND CMAKE_C_FLAGS " -MP")  # Parallel compilation
 endif()
 
 if(CURL_WERROR)
index 94dddfd4db902e2e69a402d67e5c0ab642761fd7..1b1ead6c9a24cbb194f09da840cf49499b06c897 100644 (file)
 /* #undef HAVE_GMTIME_R */
 
 /* Define if the compiler supports the 'long long' data type. */
-#if (defined(_MSC_VER) && (_MSC_VER >= 1310)) || defined(__MINGW32__)
+#if defined(_MSC_VER) || defined(__MINGW32__)
 #define HAVE_LONGLONG 1
 #endif
 
-/* mingw-w64 and visual studio >= 2005 (MSVCR80)
-   all default to 64-bit time_t unless _USE_32BIT_TIME_T is defined */
-#if (defined(_MSC_VER) && (_MSC_VER >= 1400)) || defined(__MINGW32__)
+/* Default to 64-bit time_t unless _USE_32BIT_TIME_T is defined */
+#if defined(_MSC_VER) || defined(__MINGW32__)
 #  ifndef _USE_32BIT_TIME_T
 #    define SIZEOF_TIME_T 8
 #  else
 #endif
 
 /* VS2008 default target settings and minimum build target check. */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (_MSC_VER <= 1600)
+#if defined(_MSC_VER) && (_MSC_VER <= 1600)
 #  ifndef _WIN32_WINNT
 #  define _WIN32_WINNT VS2008_DEF_TARGET
 #  endif
@@ -389,8 +388,7 @@ Vista
 
 #ifndef UNDER_CE
 
-/* _fseeki64() requires VS2005 */
-#if (defined(_MSC_VER) && (_MSC_VER >= 1400)) || defined(__MINGW32__)
+#if defined(_MSC_VER) || defined(__MINGW32__)
 #  define USE_WIN32_LARGE_FILES
 /* Number of bits in a file offset, on hosts where this is settable. */
 #  ifdef __MINGW32__
index 521200095ef5c0ce461ef8a319f3cdb74824c808..ad9b1a2d1d32dab2fd188a7bb3e9b0883f6e7482 100644 (file)
 #endif
 #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)
+#error "Ancient versions of Visual Studio are no longer supported due to bugs."
+#endif
+
 #ifdef _MSC_VER
 /* Disable Visual Studio warnings: 4127 "conditional expression is constant" */
 #pragma warning(disable:4127)
 /*         CURLRES_* defines to use in the host*.c sources          */
 /* ---------------------------------------------------------------- */
 
-/*
- * MSVC threads support requires a multi-threaded runtime library.
- * _beginthreadex() is not available in single-threaded ones.
- * Single-threaded option was last available in VS2005: _MSC_VER <= 1400
- */
-#if defined(_MSC_VER) && !defined(_MT)  /* available in _MSC_VER <= 1400 */
-#  undef USE_THREADS_POSIX
-#  undef USE_THREADS_WIN32
-#endif
-
 /*
  * Mutually exclusive CURLRES_* definitions.
  */
index 8c8d8f6106c070ba594298777e332d0556d88433..e20598879ab4d0b0ff4738612b69fe35dfebc584 100644 (file)
@@ -8,8 +8,8 @@ SPDX-License-Identifier: curl
 \r
  This document describes how to compile, build and install curl and libcurl\r
  from sources using the Visual C++ build tool. To build with VC++, you have to\r
- first install VC++. The minimum required version of VC is 6 (part of Visual\r
- Studio 6). However using a more recent version is strongly recommended.\r
+ first install VC++. The minimum required version of VC is 9 (part of Visual\r
+ Studio 2008). However using a more recent version is strongly recommended.\r
 \r
  VC++ is also part of the Windows Platform SDK. You do not have to install the\r
  full Visual Studio or Visual C++ if all you want is to build curl.\r