aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authorPhilipp Kerling <yol@casix.org>2024-03-25 20:08:37 +0100
committerPhilipp Kerling <yol@casix.org>2024-06-13 20:28:07 +0200
commit6094e540f79b533506195ea5affb4f2f587408f3 (patch)
treef9390f4a35b1333e42030f38b5b12e1563251618 /cmake
parentadc313ddc13e46e3eabbd963f8850c99d79e1d4e (diff)
[windows] Add /utf-8 flag for MSVC
This fixes C4566 warnings on Windows/MSVC and also corrects unit test failures that would start showing up with C++20. While the previous behavior might have worked sometimes by accident, this now sets proper encodings for source and execution character sets. Related reading: * https://pspdfkit.com/blog/2021/string-literals-character-encodings-and-multiplatform-cpp/ * https://devblogs.microsoft.com/cppblog/new-options-for-managing-character-sets-in-the-microsoft-cc-compiler/ * https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4566?view=msvc-170
Diffstat (limited to 'cmake')
-rw-r--r--cmake/scripts/windows/ArchSetup.cmake2
-rw-r--r--cmake/scripts/windows/CFlagOverrides.cmake2
-rw-r--r--cmake/scripts/windows/CXXFlagOverrides.cmake2
-rw-r--r--cmake/scripts/windowsstore/ArchSetup.cmake3
-rw-r--r--cmake/scripts/windowsstore/CFlagOverrides.cmake2
-rw-r--r--cmake/scripts/windowsstore/CXXFlagOverrides.cmake2
6 files changed, 9 insertions, 4 deletions
diff --git a/cmake/scripts/windows/ArchSetup.cmake b/cmake/scripts/windows/ArchSetup.cmake
index 1744ae30b0..4b00257f53 100644
--- a/cmake/scripts/windows/ArchSetup.cmake
+++ b/cmake/scripts/windows/ArchSetup.cmake
@@ -52,6 +52,8 @@ endif()
# -------- Compiler options ---------
+# Allow to use UTF-8 strings in the source code, disable MSVC charset conversion
+add_options(CXX ALL_BUILDS "/utf-8")
add_options(CXX ALL_BUILDS "/wd\"4996\"")
set(ARCH_DEFINES -D_WINDOWS -DTARGET_WINDOWS -DTARGET_WINDOWS_DESKTOP -D__SSE__ -D__SSE2__)
set(SYSTEM_DEFINES -DWIN32_LEAN_AND_MEAN -DNOMINMAX -DHAS_DX -D__STDC_CONSTANT_MACROS
diff --git a/cmake/scripts/windows/CFlagOverrides.cmake b/cmake/scripts/windows/CFlagOverrides.cmake
index 64dc780ff7..0c67794e06 100644
--- a/cmake/scripts/windows/CFlagOverrides.cmake
+++ b/cmake/scripts/windows/CFlagOverrides.cmake
@@ -4,7 +4,7 @@ if(MSVC)
else()
set(MP_FLAG "/MP")
endif()
- set(CMAKE_C_FLAGS "/D_UNICODE /DUNICODE /DRPC_USE_NATIVE_WCHAR ${MP_FLAG} /DWIN32 /D_WINDOWS /W3 /Zi")
+ set(CMAKE_C_FLAGS "/D_UNICODE /DUNICODE /utf-8 /DRPC_USE_NATIVE_WCHAR ${MP_FLAG} /DWIN32 /D_WINDOWS /W3 /Zi")
set(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /MDd /Ob0 /Od /RTC1 /D_ITERATOR_DEBUG_LEVEL=0")
set(CMAKE_C_FLAGS_RELEASE "/MD /Ox /Ob2 /Oi /Ot /Oy /GL /DNDEBUG")
endif()
diff --git a/cmake/scripts/windows/CXXFlagOverrides.cmake b/cmake/scripts/windows/CXXFlagOverrides.cmake
index 67ef57602b..3e9e7a1f2f 100644
--- a/cmake/scripts/windows/CXXFlagOverrides.cmake
+++ b/cmake/scripts/windows/CXXFlagOverrides.cmake
@@ -4,7 +4,7 @@ if(MSVC)
else()
set(MP_FLAG "/MP")
endif()
- set(CMAKE_CXX_FLAGS "/D_UNICODE /DUNICODE /DRPC_USE_NATIVE_WCHAR ${MP_FLAG} /DWIN32 /D_WINDOWS /W3 /GR /Zi /EHsc")
+ set(CMAKE_CXX_FLAGS "/D_UNICODE /DUNICODE /utf-8 /DRPC_USE_NATIVE_WCHAR ${MP_FLAG} /DWIN32 /D_WINDOWS /W3 /GR /Zi /EHsc")
set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /MDd /Ob0 /Od /RTC1 /D_ITERATOR_DEBUG_LEVEL=0")
set(CMAKE_CXX_FLAGS_RELEASE "/MD /Ox /Ob2 /Oi /Ot /Oy /GL /DNDEBUG")
endif()
diff --git a/cmake/scripts/windowsstore/ArchSetup.cmake b/cmake/scripts/windowsstore/ArchSetup.cmake
index ff18e4a6d4..10422968b4 100644
--- a/cmake/scripts/windowsstore/ArchSetup.cmake
+++ b/cmake/scripts/windowsstore/ArchSetup.cmake
@@ -68,6 +68,9 @@ endif()
# -------- Compiler options ---------
+# Allow to use UTF-8 strings in the source code, disable MSVC charset conversion
+add_options(CXX ALL_BUILDS "/utf-8")
+
add_options(CXX ALL_BUILDS "/wd\"4996\"")
add_options(CXX ALL_BUILDS "/wd\"4146\"")
add_options(CXX ALL_BUILDS "/wd\"4251\"")
diff --git a/cmake/scripts/windowsstore/CFlagOverrides.cmake b/cmake/scripts/windowsstore/CFlagOverrides.cmake
index ab2f59cc23..f3b1703259 100644
--- a/cmake/scripts/windowsstore/CFlagOverrides.cmake
+++ b/cmake/scripts/windowsstore/CFlagOverrides.cmake
@@ -4,7 +4,7 @@ if(DEFINED ENV{MAXTHREADS})
else()
set(MP_FLAG "/MP")
endif()
-string(APPEND CMAKE_C_FLAGS_INIT " /D_UNICODE /DUNICODE ${MP_FLAG} /DWIN32 /D_WINDOWS /W3 /Zi /DTARGET_WINDOWS")
+string(APPEND CMAKE_C_FLAGS_INIT " /D_UNICODE /DUNICODE /utf-8 ${MP_FLAG} /DWIN32 /D_WINDOWS /W3 /Zi /DTARGET_WINDOWS")
string(APPEND CMAKE_C_FLAGS_INIT " /DWINAPI_FAMILY=2 /DTARGET_WINDOWS_STORE /D_WINSOCK_DEPRECATED_NO_WARNINGS /D_CRT_NONSTDC_NO_DEPRECATE")
string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " /D_DEBUG /MDd /Ob0 /Od /RTC1 /D_ITERATOR_DEBUG_LEVEL=0")
string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " /MD /Ox /Ob2 /Oi /Ot /Oy /GL /DNDEBUG")
diff --git a/cmake/scripts/windowsstore/CXXFlagOverrides.cmake b/cmake/scripts/windowsstore/CXXFlagOverrides.cmake
index 4ae3ac3cb0..d254891d16 100644
--- a/cmake/scripts/windowsstore/CXXFlagOverrides.cmake
+++ b/cmake/scripts/windowsstore/CXXFlagOverrides.cmake
@@ -4,7 +4,7 @@ if(DEFINED ENV{MAXTHREADS})
else()
set(MP_FLAG "/MP")
endif()
-string(APPEND CMAKE_CXX_FLAGS_INIT " /D_UNICODE /DUNICODE ${MP_FLAG} /DWIN32 /D_WINDOWS /W3 /GR /Zi /EHsc /DTARGET_WINDOWS")
+string(APPEND CMAKE_CXX_FLAGS_INIT " /D_UNICODE /DUNICODE /utf-8 ${MP_FLAG} /DWIN32 /D_WINDOWS /W3 /GR /Zi /EHsc /DTARGET_WINDOWS")
string(APPEND CMAKE_CXX_FLAGS_INIT " /DWINAPI_FAMILY=2 /DTARGET_WINDOWS_STORE /D_WINSOCK_DEPRECATED_NO_WARNINGS /D_CRT_NONSTDC_NO_DEPRECATE")
string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " /D_DEBUG /MDd /Ob0 /Od /RTC1 /D_ITERATOR_DEBUG_LEVEL=0")
string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " /MD /Ox /Ob2 /Oi /Ot /Oy /GL /DNDEBUG")