meson/MSVC builds: Use -utf-8 where available
authorChun-wei Fan <fanchunwei@src.gnome.org>
Wed, 15 Jan 2020 07:27:59 +0000 (15:27 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Mon, 3 Feb 2020 09:55:09 +0000 (17:55 +0800)
This avoids the build from erroring out on C4819 (Unicode handling issue in
Visual Studio compiler), notably when running on Chinese, Japanese and
Korean locales.

Also apply -D_USE_MATH_DEFINES, -FImsvc_recommended_pragmas.h and -utf-8 to
the C++ compiler options as well.

meson.build

index 1c3b93aab92a8f6d70baa6e91ef1e9c6bebf6a0d..6c265dd41fa1e34c0ec59426781a7fea363addf8 100644 (file)
@@ -223,9 +223,17 @@ endif
 if cc.get_id() == 'msvc'
   # Compiler options taken from msvc_recommended_pragmas.h
   # in GLib, based on _Win32_Programming_ by Rector and Newcomer
-  test_cflags = []
-  add_project_arguments('-FImsvc_recommended_pragmas.h', language: 'c')
-  add_project_arguments('-D_USE_MATH_DEFINES', language: 'c')
+  test_cflags = [
+    '-FImsvc_recommended_pragmas.h',
+       '-D_USE_MATH_DEFINES',
+       '-utf-8',
+  ]
+  add_project_arguments(cc.get_supported_arguments(test_cflags), language: 'c')
+
+  cxx = meson.get_compiler('cpp')
+  if cxx.get_id() == 'msvc'
+    add_project_arguments(cxx.get_supported_arguments(test_cflags), language: 'cpp')
+  endif
 elif cc.get_id() == 'gcc' or cc.get_id() == 'clang'
   test_cflags = [
     '-fno-strict-aliasing',