if(MSVC)
set(HAVE_UNISTD_H 0)
set(HAVE_STDDEF_H 1) # detected by CMake internally in check_type_size()
- if(MSVC_VERSION GREATER_EQUAL 1600)
- set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size()
- else()
- set(HAVE_STDINT_H 0) # detected by CMake internally in check_type_size()
- endif()
+ set(HAVE_STDINT_H 1) # detected by CMake internally in check_type_size()
if(MSVC_VERSION GREATER_EQUAL 1800)
set(HAVE_STDBOOL_H 1)
else()
as soon as possible and explain to us why this is a problem for you and
how your use case cannot be satisfied properly using a workaround.
-## VS2008
-
-curl drops support for getting built with Microsoft Visual Studio 2008 in
-November 2025.
-
-The only reason we kept support for this version is for Windows CE - and we
-intend to remove support for that Operating System in this time frame as well.
-Bumping the minimum to VS2010. VS2008 is a pain to support.
-
-Previous discussion and details: https://github.com/curl/curl/discussions/15972
-
## Windows XP
In January 2026, curl drops support for Windows XP and Server 2003. Their
- msh3 (removed in 8.16.0)
- winbuild build system (removed in 8.17.0)
- Windows CE (removed in 8.18.0)
+ - Support for Visual Studio 2008 (removed in 8.18.0)
You can build curl with:
-- Microsoft Visual Studio 2008 v9.0 or later (`_MSC_VER >= 1500`)
+- Microsoft Visual Studio 2010 v10.0 or later (`_MSC_VER >= 1600`)
- MinGW-w64 3.0 or later (`__MINGW64_VERSION_MAJOR >= 3`)
## Building Windows DLLs and C runtime (CRT) linkage issues
# error VS2012 does not support build targets prior to Windows Vista
# endif
# endif
- /* Default target settings and minimum build target check for
- VS2008 and VS2010 */
+ /* VS2010 default target settings and minimum build target check. */
# else
-# define VS2008_MIN_TARGET 0x0501 /* XP */
- /* VS2008 default build target is Windows Vista (0x0600).
+ /* VS2010 default build target is Windows 7 (0x0601).
We override default target to be Windows XP. */
-# define VS2008_DEF_TARGET 0x0501 /* XP */
+# define VS2010_MIN_TARGET 0x0501 /* XP */
+# define VS2010_DEF_TARGET 0x0501 /* XP */
# ifndef _WIN32_WINNT
-# define _WIN32_WINNT VS2008_DEF_TARGET
+# define _WIN32_WINNT VS2010_DEF_TARGET
# endif
# ifndef WINVER
-# define WINVER VS2008_DEF_TARGET
+# define WINVER VS2010_DEF_TARGET
# endif
-# if (_WIN32_WINNT < VS2008_MIN_TARGET) || (WINVER < VS2008_MIN_TARGET)
-# error VS2008 does not support build targets prior to Windows XP
+# if (_WIN32_WINNT < VS2010_MIN_TARGET) || (WINVER < VS2010_MIN_TARGET)
+# error VS2010 does not support build targets prior to Windows XP
# endif
# endif
#endif /* _MSC_VER */
#endif
/* Define to 1 if you have the <stdint.h> header file. */
-#if (defined(_MSC_VER) && (_MSC_VER >= 1600)) || defined(__MINGW32__)
+#if defined(_MSC_VER) || defined(__MINGW32__)
#define HAVE_STDINT_H 1
#endif
#error "Building curl requires mingw-w64 3.0 or later"
#endif
-/* Visual Studio 2008 is the minimum Visual Studio version we support.
+/* Visual Studio 2010 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)
+#if defined(_MSC_VER) && (_MSC_VER < 1600)
#error "Ancient versions of Visual Studio are no longer supported due to bugs."
#endif
Use it for APIs that do not or cannot support the const qualifier. */
#ifdef HAVE_STDINT_H
# define CURL_UNCONST(p) ((void *)(uintptr_t)(const void *)(p))
-#elif defined(_WIN32) /* for VS2008 */
-# define CURL_UNCONST(p) ((void *)(ULONG_PTR)(const void *)(p))
#else
# define CURL_UNCONST(p) ((void *)(p)) /* Fall back to simple cast */
#endif
# include <bcrypt.h>
# ifdef _MSC_VER
# pragma comment(lib, "bcrypt.lib")
-# endif
- /* Offered by mingw-w64 v3+. MS SDK v7.0A+. */
-# ifndef BCRYPT_USE_SYSTEM_PREFERRED_RNG
-# define BCRYPT_USE_SYSTEM_PREFERRED_RNG 0x00000002
# endif
# ifndef STATUS_SUCCESS
# define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
#include "vtls.h"
#include "../curl_sha256.h"
-#if defined(_MSC_VER) && (_MSC_VER <= 1600)
+#if defined(_MSC_VER) && (_MSC_VER < 1700)
/* Workaround for warning:
'type cast' : conversion from 'int' to 'LPCSTR' of greater size */
#undef CERT_STORE_PROV_MEMORY
#include "../curl_memory.h"
#include "../memdebug.h"
-#ifdef _MSC_VER
-#if _MSC_VER >= 1600
-#include <stdint.h>
-#else
-typedef unsigned char uint8_t;
-typedef unsigned __int16 uint16_t;
-typedef unsigned __int32 uint32_t;
-typedef unsigned __int64 uint64_t;
-#endif
-#endif /* _MSC_VER */
-
#ifndef UINT16_MAX
#define UINT16_MAX 0xffff
#endif