[Scummvm-git-logs] scummvm master -> 5bf1a12082d0f900b7a17c9876daed6b5af3f332
bluegr
noreply at scummvm.org
Sat Jul 26 05:24:37 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
5bf1a12082 BUILD: Effectively drop support for MSVC < 2015
Commit: 5bf1a12082d0f900b7a17c9876daed6b5af3f332
https://github.com/scummvm/scummvm/commit/5bf1a12082d0f900b7a17c9876daed6b5af3f332
Author: Donovan Watteau (contrib at dwatteau.fr)
Date: 2025-07-26T08:24:33+03:00
Commit Message:
BUILD: Effectively drop support for MSVC < 2015
It's been documented on the wiki for nearly 3 years that MSVC 2015 is
the oldest MSVC release being supported.
AFAICS no-one is actively using any older version nowadays, and C++11
support in MSVC 2013 is incomplete anyway:
https://learn.microsoft.com/en-us/previous-versions/hh567368(v=vs.140)
This means that some old MSVC hacks can be dropped now (not touching
any vendored or generated code having such hacks, though).
Changed paths:
R backends/audiocd/win32/msvc/ntddcdrm.h
backends/audiocd/win32/win32-audiocd.cpp
common/scummsys.h
common/str.cpp
devtools/create_project/create_project.cpp
devtools/create_project/create_project.h
diff --git a/backends/audiocd/win32/msvc/ntddcdrm.h b/backends/audiocd/win32/msvc/ntddcdrm.h
deleted file mode 100644
index 02ff609259f..00000000000
--- a/backends/audiocd/win32/msvc/ntddcdrm.h
+++ /dev/null
@@ -1,362 +0,0 @@
-/**
- * @file ntddcdrm.h
- * Copyright 2012, 2013 MinGW.org project
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-/* Created by Casper S. Hornstrup <chorns at users.sourceforge.net> */
-#ifndef __NTDDCDRM_H
-#define __NTDDCDRM_H
-#if 0 // Added to make MSVC happy.
-#pragma GCC system_header
-#include <_mingw.h>
-#endif
-
-/*
- * CDROM IOCTL interface.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#if 0 // Added to make MSVC happy.
-#include "ntddk.h"
-#include "ntddstor.h"
-#endif
-
-#define IOCTL_CDROM_BASE FILE_DEVICE_CD_ROM
-
-#define IOCTL_CDROM_CHECK_VERIFY \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_FIND_NEW_DEVICES \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_GET_CONTROL \
- CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_GET_DRIVE_GEOMETRY \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_GET_LAST_SESSION \
- CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_GET_VOLUME \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_PAUSE_AUDIO \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_PLAY_AUDIO_MSF \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_RAW_READ \
- CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_READ_Q_CHANNEL \
- CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_READ_TOC \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_READ_TOC_EX \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_RESUME_AUDIO \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_SEEK_AUDIO_MSF \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_SET_VOLUME \
- CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_SIMBAD \
- CTL_CODE(IOCTL_CDROM_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-#define IOCTL_CDROM_STOP_AUDIO \
- CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
-
-
-#define MAXIMUM_NUMBER_TRACKS 100
-#define MAXIMUM_CDROM_SIZE 804
-#define MINIMUM_CDROM_READ_TOC_EX_SIZE 2
-
-typedef struct _TRACK_DATA {
- UCHAR Reserved;
- UCHAR Control : 4;
- UCHAR Adr : 4;
- UCHAR TrackNumber;
- UCHAR Reserved1;
- UCHAR Address[4];
-} TRACK_DATA, *PTRACK_DATA;
-
-/* CDROM_DISK_DATA.DiskData flags */
-#define CDROM_DISK_AUDIO_TRACK 0x00000001
-#define CDROM_DISK_DATA_TRACK 0x00000002
-
-typedef struct _CDROM_DISK_DATA {
- ULONG DiskData;
-} CDROM_DISK_DATA, *PCDROM_DISK_DATA;
-
-typedef struct _CDROM_PLAY_AUDIO_MSF {
- UCHAR StartingM;
- UCHAR StartingS;
- UCHAR StartingF;
- UCHAR EndingM;
- UCHAR EndingS;
- UCHAR EndingF;
-} CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF;
-
-/* CDROM_READ_TOC_EX.Format constants */
-#define CDROM_READ_TOC_EX_FORMAT_TOC 0x00
-#define CDROM_READ_TOC_EX_FORMAT_SESSION 0x01
-#define CDROM_READ_TOC_EX_FORMAT_FULL_TOC 0x02
-#define CDROM_READ_TOC_EX_FORMAT_PMA 0x03
-#define CDROM_READ_TOC_EX_FORMAT_ATIP 0x04
-#define CDROM_READ_TOC_EX_FORMAT_CDTEXT 0x05
-
-typedef struct _CDROM_READ_TOC_EX {
- UCHAR Format : 4;
- UCHAR Reserved1 : 3;
- UCHAR Msf : 1;
- UCHAR SessionTrack;
- UCHAR Reserved2;
- UCHAR Reserved3;
-} CDROM_READ_TOC_EX, *PCDROM_READ_TOC_EX;
-
-typedef struct _CDROM_SEEK_AUDIO_MSF {
- UCHAR M;
- UCHAR S;
- UCHAR F;
-} CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF;
-
-/* CDROM_SUB_Q_DATA_FORMAT.Format constants */
-#define IOCTL_CDROM_SUB_Q_CHANNEL 0x00
-#define IOCTL_CDROM_CURRENT_POSITION 0x01
-#define IOCTL_CDROM_MEDIA_CATALOG 0x02
-#define IOCTL_CDROM_TRACK_ISRC 0x03
-
-typedef struct _CDROM_SUB_Q_DATA_FORMAT {
- UCHAR Format;
- UCHAR Track;
-} CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT;
-
-typedef struct _CDROM_TOC {
- UCHAR Length[2];
- UCHAR FirstTrack;
- UCHAR LastTrack;
- TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS];
-} CDROM_TOC, *PCDROM_TOC;
-
-#define CDROM_TOC_SIZE sizeof(CDROM_TOC)
-
-typedef struct _CDROM_TOC_ATIP_DATA_BLOCK {
- UCHAR CdrwReferenceSpeed : 3;
- UCHAR Reserved3 : 1;
- UCHAR WritePower : 3;
- UCHAR True1 : 1;
- UCHAR Reserved4 : 6;
- UCHAR UnrestrictedUse : 1;
- UCHAR Reserved5 : 1;
- UCHAR A3Valid : 1;
- UCHAR A2Valid : 1;
- UCHAR A1Valid : 1;
- UCHAR Reserved6 : 3;
- UCHAR IsCdrw : 1;
- UCHAR True2 : 1;
- UCHAR Reserved7;
- UCHAR LeadInMsf[3];
- UCHAR Reserved8;
- UCHAR LeadOutMsf[3];
- UCHAR Reserved9;
- UCHAR A1Values[3];
- UCHAR Reserved10;
- UCHAR A2Values[3];
- UCHAR Reserved11;
- UCHAR A3Values[3];
- UCHAR Reserved12;
-} CDROM_TOC_ATIP_DATA_BLOCK, *PCDROM_TOC_ATIP_DATA_BLOCK;
-
-#if 0 // Added to make MSVC happy.
-typedef struct _CDROM_TOC_ATIP_DATA {
- UCHAR Length[2];
- UCHAR Reserved1;
- UCHAR Reserved2;
- CDROM_TOC_ATIP_DATA_BLOCK Descriptors[0];
- CDROM_TOC_ATIP_DATA_BLOCK Descriptors[1];
-} CDROM_TOC_ATIP_DATA, *PCDROM_TOC_ATIP_DATA;
-#endif
-
-/* CDROM_TOC_CD_TEXT_DATA_BLOCK.PackType constants */
-#define CDROM_CD_TEXT_PACK_ALBUM_NAME 0x80
-#define CDROM_CD_TEXT_PACK_PERFORMER 0x81
-#define CDROM_CD_TEXT_PACK_SONGWRITER 0x82
-#define CDROM_CD_TEXT_PACK_COMPOSER 0x83
-#define CDROM_CD_TEXT_PACK_ARRANGER 0x84
-#define CDROM_CD_TEXT_PACK_MESSAGES 0x85
-#define CDROM_CD_TEXT_PACK_DISC_ID 0x86
-#define CDROM_CD_TEXT_PACK_GENRE 0x87
-#define CDROM_CD_TEXT_PACK_TOC_INFO 0x88
-#define CDROM_CD_TEXT_PACK_TOC_INFO2 0x89
-#define CDROM_CD_TEXT_PACK_UPC_EAN 0x8e
-#define CDROM_CD_TEXT_PACK_SIZE_INFO 0x8f
-
-#if 0 // Added to make MSVC happy.
-typedef struct _CDROM_TOC_CD_TEXT_DATA_BLOCK {
- UCHAR PackType;
- UCHAR TrackNumber : 7;
- UCHAR ExtensionFlag : 1;
- UCHAR SequenceNumber;
- UCHAR CharacterPosition : 4;
- UCHAR BlockNumber : 3;
- UCHAR Unicode : 1;
- _ANONYMOUS_UNION union {
- UCHAR Text[12];
- WCHAR WText[6];
- } DUMMYUNIONNAME;
- UCHAR CRC[2];
-} CDROM_TOC_CD_TEXT_DATA_BLOCK, *PCDROM_TOC_CD_TEXT_DATA_BLOCK;
-
-typedef struct _CDROM_TOC_CD_TEXT_DATA {
- UCHAR Length[2];
- UCHAR Reserved1;
- UCHAR Reserved2;
- CDROM_TOC_CD_TEXT_DATA_BLOCK Descriptors[0];
-} CDROM_TOC_CD_TEXT_DATA, *PCDROM_TOC_CD_TEXT_DATA;
-#endif
-
-/* CDROM_TOC_FULL_TOC_DATA_BLOCK.Adr constants */
-#define ADR_NO_MODE_INFORMATION 0x0
-#define ADR_ENCODES_CURRENT_POSITION 0x1
-#define ADR_ENCODES_MEDIA_CATALOG 0x2
-#define ADR_ENCODES_ISRC 0x3
-
-typedef struct _CDROM_TOC_FULL_TOC_DATA_BLOCK {
- UCHAR SessionNumber;
- UCHAR Control : 4;
- UCHAR Adr : 4;
- UCHAR Reserved1;
- UCHAR Point;
- UCHAR MsfExtra[3];
- UCHAR Zero;
- UCHAR Msf[3];
-} CDROM_TOC_FULL_TOC_DATA_BLOCK, *PCDROM_TOC_FULL_TOC_DATA_BLOCK;
-
-#if 0 // Added to make MSVC happy.
-typedef struct _CDROM_TOC_FULL_TOC_DATA {
- UCHAR Length[2];
- UCHAR FirstCompleteSession;
- UCHAR LastCompleteSession;
- CDROM_TOC_FULL_TOC_DATA_BLOCK Descriptors[0];
-} CDROM_TOC_FULL_TOC_DATA, *PCDROM_TOC_FULL_TOC_DATA;
-
-typedef struct _CDROM_TOC_PMA_DATA {
- UCHAR Length[2];
- UCHAR Reserved1;
- UCHAR Reserved2;
- CDROM_TOC_FULL_TOC_DATA_BLOCK Descriptors[0];
-} CDROM_TOC_PMA_DATA, *PCDROM_TOC_PMA_DATA;
-#endif
-
-/* SUB_Q_HEADER.AudioStatus constants */
-#define AUDIO_STATUS_NOT_SUPPORTED 0x00
-#define AUDIO_STATUS_IN_PROGRESS 0x11
-#define AUDIO_STATUS_PAUSED 0x12
-#define AUDIO_STATUS_PLAY_COMPLETE 0x13
-#define AUDIO_STATUS_PLAY_ERROR 0x14
-#define AUDIO_STATUS_NO_STATUS 0x15
-
-typedef struct _SUB_Q_HEADER {
- UCHAR Reserved;
- UCHAR AudioStatus;
- UCHAR DataLength[2];
-} SUB_Q_HEADER, *PSUB_Q_HEADER;
-
-typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER {
- SUB_Q_HEADER Header;
- UCHAR FormatCode;
- UCHAR Reserved[3];
- UCHAR Reserved1 : 7;
- UCHAR Mcval :1;
- UCHAR MediaCatalog[15];
-} SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER;
-
-typedef struct _SUB_Q_TRACK_ISRC {
- SUB_Q_HEADER Header;
- UCHAR FormatCode;
- UCHAR Reserved0;
- UCHAR Track;
- UCHAR Reserved1;
- UCHAR Reserved2 : 7;
- UCHAR Tcval : 1;
- UCHAR TrackIsrc[15];
-} SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC;
-
-typedef struct _SUB_Q_CURRENT_POSITION {
- SUB_Q_HEADER Header;
- UCHAR FormatCode;
- UCHAR Control : 4;
- UCHAR ADR : 4;
- UCHAR TrackNumber;
- UCHAR IndexNumber;
- UCHAR AbsoluteAddress[4];
- UCHAR TrackRelativeAddress[4];
-} SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION;
-
-typedef union _SUB_Q_CHANNEL_DATA {
- SUB_Q_CURRENT_POSITION CurrentPosition;
- SUB_Q_MEDIA_CATALOG_NUMBER MediaCatalog;
- SUB_Q_TRACK_ISRC TrackIsrc;
-} SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA;
-
-/* CDROM_AUDIO_CONTROL.LbaFormat constants */
-#define AUDIO_WITH_PREEMPHASIS 0x1
-#define DIGITAL_COPY_PERMITTED 0x2
-#define AUDIO_DATA_TRACK 0x4
-#define TWO_FOUR_CHANNEL_AUDIO 0x8
-
-typedef struct _CDROM_AUDIO_CONTROL {
- UCHAR LbaFormat;
- USHORT LogicalBlocksPerSecond;
-} CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL;
-
-typedef struct _VOLUME_CONTROL {
- UCHAR PortVolume[4];
-} VOLUME_CONTROL, *PVOLUME_CONTROL;
-
-typedef enum _TRACK_MODE_TYPE {
- YellowMode2,
- XAForm2,
- CDDA
-} TRACK_MODE_TYPE, *PTRACK_MODE_TYPE;
-
-typedef struct __RAW_READ_INFO {
- LARGE_INTEGER DiskOffset;
- ULONG SectorCount;
- TRACK_MODE_TYPE TrackMode;
-} RAW_READ_INFO, *PRAW_READ_INFO;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __NTDDCDRM_H */
diff --git a/backends/audiocd/win32/win32-audiocd.cpp b/backends/audiocd/win32/win32-audiocd.cpp
index da03391b1b9..ff11d5985e2 100644
--- a/backends/audiocd/win32/win32-audiocd.cpp
+++ b/backends/audiocd/win32/win32-audiocd.cpp
@@ -61,13 +61,7 @@
#include "common/timer.h"
#include <winioctl.h>
-#if _MSC_VER < 1900
-// WORKAROUND: Older versions of MSVC might not supply DDK headers by default.
-// Visual Studio 2015 contains the required headers. We use a compatibility
-// header from MinGW's w32api for all older versions.
-// TODO: Limit this to the Visual Studio versions which actually require this.
-#include "msvc/ntddcdrm.h"
-#elif defined(__MINGW32__) && !defined(__MINGW64__)
+#if defined(__MINGW32__) && !defined(__MINGW64__)
// Classic MinGW uses non standard paths for DDK headers.
#include <ddk/ntddcdrm.h>
#else
diff --git a/common/scummsys.h b/common/scummsys.h
index 8d15622313e..cf6b5e3e1b4 100644
--- a/common/scummsys.h
+++ b/common/scummsys.h
@@ -35,6 +35,10 @@
#define GCC_ATLEAST(major, minor) 0
#endif
+#if defined(_MSC_VER) && _MSC_VER < 1900
+ #error MSVC support requires MSVC 2015 or newer
+#endif
+
#if defined(NONSTANDARD_PORT)
// Ports which need to perform #includes and #defines visible in
@@ -46,45 +50,6 @@
#if defined(WIN32)
- #if defined(_MSC_VER) && _MSC_VER <= 1800
-
- // FIXME: The placement of the workaround functions for MSVC below
- // require us to include stdio.h and stdarg.h for MSVC here. This
- // is not exactly nice...
- // We should think of a better way of doing this.
- #include <stdio.h>
- #include <stdarg.h>
-
- // MSVC's vsnprintf is either non-existent (2003) or bugged since it
- // does not always include a terminating NULL (2005+). To work around
- // that we fix up the _vsnprintf included. Note that the return value
- // will still not match C99's specs!
- inline int vsnprintf_msvc(char *str, size_t size, const char *format, va_list args) {
- // We do not pass size - 1 here, to ensure we would get the same
- // return value as when we would use _vsnprintf directly, since
- // for example Common::String::format relies on this.
- int retValue = _vsnprintf(str, size, format, args);
- str[size - 1] = 0;
- return retValue;
- }
-
- #define vsnprintf vsnprintf_msvc
-
- // Visual Studio does not include snprintf in its standard C library.
- // Instead it includes a function called _snprintf with somewhat
- // similar semantics. The minor difference is that the return value in
- // case the formatted string exceeds the buffer size is different.
- // A much more dangerous one is that _snprintf does not always include
- // a terminating null (Whoops!). Instead we map to our fixed vsnprintf.
- inline int snprintf(char *str, size_t size, const char *format, ...) {
- va_list args;
- va_start(args, format);
- int len = vsnprintf(str, size, format, args);
- va_end(args);
- return len;
- }
- #endif
-
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#define NOGDICAPMASKS
#define OEMRESOURCE
@@ -166,7 +131,7 @@
#endif
#ifndef STATIC_ASSERT
-#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER > 1600)
+#if __cplusplus >= 201103L || defined(_MSC_VER)
/**
* Generates a compile-time assertion.
*
@@ -378,7 +343,7 @@
#endif
#ifndef MSVC_PRINTF
- #if defined(_MSC_VER) && _MSC_VER > 1400
+ #if defined(_MSC_VER)
#define MSVC_PRINTF _Printf_format_string_
#else
#define MSVC_PRINTF
diff --git a/common/str.cpp b/common/str.cpp
index efccba51634..da1b44a9d9e 100644
--- a/common/str.cpp
+++ b/common/str.cpp
@@ -668,11 +668,7 @@ int vsprintf_s(char *dst, size_t size, const char *format, va_list ap) {
int ret = vsnprintf(dst, size, format, ap);
- if ((size_t)ret < size
-#if defined(_MSC_VER) && _MSC_VER <= 1800
- && ret != -1
-#endif
- ) {
+ if ((size_t)ret < size) {
// Nominal case: no truncation
return ret;
}
diff --git a/devtools/create_project/create_project.cpp b/devtools/create_project/create_project.cpp
index 7d2c5b86372..e44de09948a 100644
--- a/devtools/create_project/create_project.cpp
+++ b/devtools/create_project/create_project.cpp
@@ -1218,9 +1218,6 @@ const Tool s_tools[] = {
const MSVCVersion s_msvc[] = {
// Ver Name Solution Project Toolset LLVM
- { 10, "Visual Studio 2010", "11.00", "2010", "4.0", "v100", "LLVM-vs2010" },
- { 11, "Visual Studio 2012", "11.00", "2012", "4.0", "v110", "LLVM-vs2012" },
- { 12, "Visual Studio 2013", "12.00", "2013", "12.0", "v120", "LLVM-vs2013" },
{ 14, "Visual Studio 2015", "12.00", "14", "14.0", "v140", "LLVM-vs2014" },
{ 15, "Visual Studio 2017", "12.00", "15", "15.0", "v141", "llvm" },
{ 16, "Visual Studio 2019", "12.00", "Version 16", "16.0", "v142", "llvm" },
diff --git a/devtools/create_project/create_project.h b/devtools/create_project/create_project.h
index d11f8f85b1a..b64c8e2b728 100644
--- a/devtools/create_project/create_project.h
+++ b/devtools/create_project/create_project.h
@@ -26,8 +26,8 @@
#define __has_feature(x) 0 // Compatibility with non-clang compilers.
#endif
-#if __cplusplus < 201103L && (!defined(_MSC_VER) || _MSC_VER < 1700)
-#define override // Compatibility with non-C++11 compilers.
+#if defined(_MSC_VER) && _MSC_VER < 1900
+#error MSVC support requires MSVC 2015 or newer
#endif
#include <list>
More information about the Scummvm-git-logs
mailing list