summaryrefslogtreecommitdiffstats
path: root/test/cc-msvc.c
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2017-12-05 17:49:52 (GMT)
committerBrad King <brad.king@kitware.com>2017-12-05 18:06:37 (GMT)
commitf74e7761a5281b54a517f1b975a33528eeaf056d (patch)
tree2084f2267c0078f6f148a9220f9605ef29277781 /test/cc-msvc.c
parent3a81f3cc3060be86064ba2e666d30b0c358cc847 (diff)
downloadCastXML-f74e7761a5281b54a517f1b975a33528eeaf056d.zip
CastXML-f74e7761a5281b54a517f1b975a33528eeaf056d.tar.gz
CastXML-f74e7761a5281b54a517f1b975a33528eeaf056d.tar.bz2
RunClang: Detect -std=c++17 from --castxml-cc-msvc
Updates to VS 2015 and VS 2017 added support for `-std:` flags specifying the language standard level for MSVC. The level is reported in the `_MSVC_LANG` preprocessor definition instead of `__cplusplus`. Detect MSVC standard C++ level from `_MSVC_LANG`.
Diffstat (limited to 'test/cc-msvc.c')
-rw-r--r--test/cc-msvc.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/cc-msvc.c b/test/cc-msvc.c
index 10afc63..45feff8 100644
--- a/test/cc-msvc.c
+++ b/test/cc-msvc.c
@@ -5,12 +5,15 @@ int main(int argc, const char* argv[])
{
int cpp = 0;
const char* msc_ver = "1600";
+ const char* msvc_lang = 0;
int i;
for (i = 1; i < argc; ++i) {
if (strncmp(argv[i], "--cc-define=", 12) == 0) {
fprintf(stdout, "\n#define %s 1", argv[i]+12);
} else if (strncmp(argv[i], "-msc=", 5) == 0) {
msc_ver = argv[i]+5;
+ } else if (strncmp(argv[i], "-msvc_lang=", 8) == 0) {
+ msvc_lang = argv[i]+11;
} else if (strstr(argv[i], ".cpp")) {
cpp = 1;
}
@@ -26,6 +29,11 @@ int main(int argc, const char* argv[])
fprintf(stdout,
"#define _MSC_VER %s\n", msc_ver
);
+ if(msvc_lang) {
+ fprintf(stdout,
+ "#define _MSVC_LANG %s\n", msvc_lang
+ );
+ }
fprintf(stdout,
"#define __has_include(x) x\n"
"#define __has_include_next(x) x\n"