mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 22:29:39 -06:00
update wil to 0b2d6c2d822bb301e7558a14ee66d567c14f5dc7
This commit is contained in:
92
Externals/WIL/cmake/common_build_flags.cmake
vendored
92
Externals/WIL/cmake/common_build_flags.cmake
vendored
@ -1,5 +1,6 @@
|
||||
|
||||
# E.g. replace_cxx_flag("/W[0-4]", "/W4")
|
||||
# This is unfortunately still needed to disable exceptions/RTTI since modern CMake still has no builtin support...
|
||||
# E.g. replace_cxx_flag("/EHsc", "/EHs-c-")
|
||||
macro(replace_cxx_flag pattern text)
|
||||
foreach (flag
|
||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||
@ -10,60 +11,61 @@ macro(replace_cxx_flag pattern text)
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
macro(append_cxx_flag text)
|
||||
foreach (flag
|
||||
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||
|
||||
string(APPEND ${flag} " ${text}")
|
||||
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
# Fixup default compiler settings
|
||||
add_compile_options(
|
||||
# Be as strict as reasonably possible, since we want to support consumers using strict warning levels
|
||||
/W4 /WX
|
||||
)
|
||||
|
||||
# Be as strict as reasonably possible, since we want to support consumers using strict warning levels
|
||||
replace_cxx_flag("/W[0-4]" "/W4")
|
||||
append_cxx_flag("/WX")
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
add_compile_options(
|
||||
# Ignore some pedantic warnings enabled by '-Wextra'
|
||||
-Wno-missing-field-initializers
|
||||
|
||||
# We want to be as conformant as possible, so tell MSVC to not be permissive (note that this has no effect on clang-cl)
|
||||
append_cxx_flag("/permissive-")
|
||||
# Ignore some pedantic warnings enabled by '-Wpedantic'
|
||||
-Wno-language-extension-token
|
||||
-Wno-c++17-attribute-extensions
|
||||
-Wno-gnu-zero-variadic-macro-arguments
|
||||
-Wno-extra-semi
|
||||
|
||||
# wistd::function has padding due to alignment. This is expected
|
||||
append_cxx_flag("/wd4324")
|
||||
# For tests, we want to be able to test self assignment, so disable this warning
|
||||
-Wno-self-assign-overloaded
|
||||
-Wno-self-move
|
||||
|
||||
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||
# Ignore a few Clang warnings. We may want to revisit in the future to see if any of these can/should be removed
|
||||
append_cxx_flag("-Wno-switch")
|
||||
append_cxx_flag("-Wno-c++17-compat-mangling")
|
||||
append_cxx_flag("-Wno-missing-field-initializers")
|
||||
# clang needs this to enable _InterlockedCompareExchange128
|
||||
-mcx16
|
||||
|
||||
# For tests, we want to be able to test self assignment, so disable this warning
|
||||
append_cxx_flag("-Wno-self-assign-overloaded")
|
||||
append_cxx_flag("-Wno-self-move")
|
||||
# We don't want legacy MSVC conformance
|
||||
-fno-delayed-template-parsing
|
||||
|
||||
# clang-cl does not understand the /permissive- flag (or at least it opts to ignore it). We can achieve similar
|
||||
# results through the following flags.
|
||||
append_cxx_flag("-fno-delayed-template-parsing")
|
||||
# NOTE: Windows headers not clean enough for us to realistically attempt to start fixing these errors yet. That
|
||||
# said, errors that originate from WIL headers may benefit
|
||||
# -fno-ms-compatibility
|
||||
# -ferror-limit=999
|
||||
# -fmacro-backtrace-limit=0
|
||||
|
||||
# NOTE: Windows headers not clean enough for us to realistically attempt to start fixing these errors yet. That
|
||||
# said, errors that originate from WIL headers may benefit
|
||||
# append_cxx_flag("-fno-ms-compatibility")
|
||||
# append_cxx_flag("-ferror-limit=999")
|
||||
# append_cxx_flag("-fmacro-backtrace-limit=0")
|
||||
# -fno-ms-compatibility turns off preprocessor compatability, which currently only works when __VA_OPT__ support is
|
||||
# available (i.e. >= C++20)
|
||||
# append_cxx_flag("-Xclang -std=c++2a")
|
||||
# -fno-ms-compatibility turns off preprocessor compatability, which currently only works when __VA_OPT__ support
|
||||
# is available (i.e. >= C++20)
|
||||
# -Xclang -std=c++2a
|
||||
)
|
||||
else()
|
||||
# Flags that are either ignored or unrecognized by clang-cl
|
||||
# TODO: https://github.com/Microsoft/wil/issues/6
|
||||
# append_cxx_flag("/experimental:preprocessor")
|
||||
add_compile_options(
|
||||
# We want to be as conformant as possible, so tell MSVC to not be permissive (note that this has no effect on clang-cl)
|
||||
/permissive-
|
||||
|
||||
# CRT headers are not yet /experimental:preprocessor clean, so work around the known issues
|
||||
# append_cxx_flag("/Wv:18")
|
||||
# wistd::function has padding due to alignment. This is expected
|
||||
/wd4324
|
||||
|
||||
append_cxx_flag("/bigobj")
|
||||
# TODO: https://github.com/Microsoft/wil/issues/6
|
||||
# /experimental:preprocessor
|
||||
|
||||
# NOTE: Temporary workaround while https://github.com/microsoft/wil/issues/102 is being investigated
|
||||
append_cxx_flag("/d2FH4-")
|
||||
# CRT headers are not yet /experimental:preprocessor clean, so work around the known issues
|
||||
# /Wv:18
|
||||
|
||||
# Some tests have a LOT of template instantiations
|
||||
/bigobj
|
||||
|
||||
# NOTE: Temporary workaround while https://github.com/microsoft/wil/issues/102 is being investigated
|
||||
/d2FH4-
|
||||
)
|
||||
endif()
|
||||
|
Reference in New Issue
Block a user