lvc / abi-compliance-checker

A tool for checking backward API/ABI compatibility of a C/C++ library
https://lvc.github.io/abi-compliance-checker/
GNU Lesser General Public License v2.1
621 stars 76 forks source link

hardcoded `-D_MSC_VER=1500 ` #102

Closed zhuda closed 4 years ago

zhuda commented 4 years ago

Hi, We use this library on VS2017 and VS2019 with mingGW and got following errors:

  gcc -fdump-translation-unit -fkeep-inline-functions -c -x c++ -DDECLSPEC_DEPRECATED=" " -DSECURITY_WIN32 -DSHSTDAPI_(x)=x -DSORTPP_PASS -D_AMD64_=300 -D_MSC_EXTENSIONS -**D_MSC_VER=1500** -D_M_AMD64=300 -D_M_X64=300 -D_STDCALL_SUPPORTED -D_USE_DECLSPECS_FOR_SAL -D_WIN32 -D__assume=" " -D__builtin_alignof(x)=__alignof__(x) -D__cdecl=__attribute__((__cdecl__)) -D__declspec(x)=__attribute__((x)) -D__except(x)= -D__fastcall=__attribute__((__fastcall__)) -D__forceinline=__inline -D__forceinline=inline -D__inline=inline -D__int16=short -D__int32=int -D__int64="long long" -D__int8=char -D__noop=" " -D__nullnullterminated=" " -D__nullptr="nullptr" -D__nullterminated=" " -D__possibly_notnullterminated=" " -D__pragma(x)= -D__ptr32=" " -D__ptr64=" " -D__stdcall=__attribute__((__stdcall__)) -D__thiscall=__attribute__((__thiscall__)) -D__try= -D__unaligned=" " -D__uuidof(x)=IID() -D__w64=" " -D_cdecl=__attribute__((__cdecl__)) -D_fastcall=__attribute__((__fastcall__)) -D_inline=inline -D_stdcall=__attribute__((__stdcall__)) -D_thiscall=__attribute__((__thiscall__)) -fpermissive -w -nostdinc -nostdinc++ -std=c++11 "C:\Users\SVC_Q_~1\AppData\Local\Temp\AEydmDfFdy/dump2.h"  -I"c:/program files (x86)/windows kits/10/include/10.0.16299.0/ucrt" -I"c:/program files (x86)/windows kits/10/include/10.0.16299.0/ucrt/sys" -I"c:/program files (x86)/windows kits/10/include" -I"c:/program files (x86)/microsoft visual studio/2017/professional/vc/tools/msvc" -I"c:/program files (x86)/windows kits/10/include/10.0.16299.0/ucrt" -I"c:/program files (x86)/windows kits/10/include/10.0.16299.0/ucrt/sys" -I"c:/program files (x86)/windows kits/10/include" -I"c:/program files (x86)/microsoft visual studio/2017/professional/vc/tools/msvc" -I"c:/program files (x86)/windows kits/10/include/10.0.17763.0/ucrt" -I"c:/program files (x86)/windows kits/10/include/10.0.17763.0/shared" -I"e:/atf_support/testdev/tool/bc/packages/comp/8.13.0-alpha-50b247e/include" -I"c:/program files (x86)/microsoft visual studio/2017/professional/vc/tools/msvc/14.16.27023/include"

In file included from c:/program files (x86)/microsoft visual studio/2017/professional/vc/tools/msvc/14.16.27023/include/xtr1common:6:0,
                 from c:/program files (x86)/microsoft visual studio/2017/professional/vc/tools/msvc/14.16.27023/include/cstddef:8,
                 from e:/atf_support/testdev/tool/bc/packages/comp/8.13.0-alpha-50b247e/include/nx_producer/sdk/atf_nx_producer_options.h:13,
                 from e:/atf_support/testdev/tool/bc/packages/comp/8.13.0-alpha-50b247e/include/nx_producer/sdk/atf_nx_producer.h:21,
                 from C:\Users\SVC_Q_~1\AppData\Local\Temp\AEydmDfFdy/dump2.h:339:
c:/program files (x86)/microsoft visual studio/2017/professional/vc/tools/msvc/14.16.27023/include/yvals_core.h:298:5: error: #error STL1001: Unexpected compiler version, expected MSVC 19.15 or newer.
    #error STL1001: Unexpected compiler version, expected MSVC 19.15 or newer.

The error is saying that the input _MSC_VER version is too low so current VS can't find minimum supported compiler: https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=vs-2019 image

Further check I found this information is hardcoded: https://github.com/lvc/abi-compliance-checker/blob/master/modules/Internals/Utils.pm#L315

Is it possible to change this to support higher version visual studio?

lvc commented 4 years ago

Merged https://github.com/lvc/abi-compliance-checker/pull/103