blob: ffbd2e033c009f8a58f5e5a590a66bb0bedb453e (
plain) (
tree)
|
|
set(_WARNS_ENABLED
4018 # 'expression' : signed/unsigned mismatch
4265 # 'class' : class has virtual functions, but destructor is not virtual
4296 # 'operator' : expression is always false
4431 # missing type specifier - int assumed
)
set(_WARNS_AS_ERROR
4013 # 'function' undefined; assuming extern returning int
)
set(_WARNS_DISABLED
# While this warning corresponds to enabled-by-default -Wmacro-redefinition,
# it floods clog with abundant amount of log lines,
# as yvals_core.h from Windows SDK redefines certain
# which macros logically belong to libcxx
4005 # '__cpp_lib_*': macro redefinition.
# Ne need to recheck this, but it looks like _CRT_USE_BUILTIN_OFFSETOF still makes sense
4117 # macro name '_CRT_USE_BUILTIN_OFFSETOF' is reserved, '#define' ignored
4127 # conditional expression is constant
4200 # nonstandard extension used : zero-sized array in struct/union
4201 # nonstandard extension used : nameless struct/union
4351 # elements of array will be default initialized
4355 # 'this' : used in base member initializer list
4503 # decorated name length exceeded, name was truncated
4510 # default constructor could not be generated
4511 # copy constructor could not be generated
4512 # assignment operator could not be generated
4554 # check operator precedence for possible error; use parentheses to clarify precedence
4610 # 'object' can never be instantiated - user defined constructor required
4706 # assignment within conditional expression
4800 # forcing value to bool 'true' or 'false' (performance warning)
4996 # The POSIX name for this item is deprecated
4714 # function marked as __forceinline not inlined
4197 # 'TAtomic' : top-level volatile in cast is ignored
4245 # 'initializing' : conversion from 'int' to 'ui32', signed/unsigned mismatch
4324 # 'ystd::function<void (uint8_t *)>': structure was padded due to alignment specifier
5033 # 'register' is no longer a supported storage class
)
set (_MSVC_COMMON_C_CXX_FLAGS " \
/DWIN32 \
/D_WIN32 \
/D_WINDOWS \
/D_CRT_SECURE_NO_WARNINGS \
/D_CRT_NONSTDC_NO_WARNINGS \
/D_USE_MATH_DEFINES \
/D__STDC_CONSTANT_MACROS \
/D__STDC_FORMAT_MACROS \
/D_USING_V110_SDK71_ \
/DWIN32_LEAN_AND_MEAN \
/DNOMINMAX \
/nologo \
/Zm500 \
/GR \
/bigobj \
/FC \
/EHs \
/errorReport:prompt \
/Zc:inline \
/utf-8 \
/permissive- \
/D_WIN32_WINNT=0x0601 \
/D_MBCS \
/MP \
")
if (CMAKE_GENERATOR MATCHES "Visual.Studio.*")
string(APPEND _MSVC_COMMON_C_CXX_FLAGS "\
/DY_UCRT_INCLUDE=\"$(UniversalCRT_IncludePath.Split(';')[0].Replace('\\','/'))\" \
/DY_MSVC_INCLUDE=\"$(VC_VC_IncludePath.Split(';')[0].Replace('\\','/'))\" \
")
else()
set(UCRT_INCLUDE_FOUND false)
foreach(INCLUDE_PATH $ENV{INCLUDE})
if (INCLUDE_PATH MATCHES ".*\\\\Windows Kits\\\\[0-9]+\\\\include\\\\[0-9\\.]+\\\\ucrt$")
message(VERBOSE "Found Y_UCRT_INCLUDE path \"${INCLUDE_PATH}\"")
string(REPLACE "\\" "/" SAFE_INCLUDE_PATH "${INCLUDE_PATH}")
string(APPEND _MSVC_COMMON_C_CXX_FLAGS " /DY_UCRT_INCLUDE=\"${SAFE_INCLUDE_PATH}\"")
set(UCRT_INCLUDE_FOUND true)
break()
endif()
endforeach()
if (NOT UCRT_INCLUDE_FOUND)
message(FATAL_ERROR "UniversalCRT include path not found, please add it to the standard INCLUDE environment variable (most likely by calling vcvars64.bat)")
endif()
set(MSVC_INCLUDE_FOUND false)
foreach(INCLUDE_PATH $ENV{INCLUDE})
if (INCLUDE_PATH MATCHES ".*VC\\\\Tools\\\\MSVC\\\\[0-9\\.]+\\\\include$")
message(VERBOSE "Found Y_MSVC_INCLUDE path \"${INCLUDE_PATH}\"")
string(REPLACE "\\" "/" SAFE_INCLUDE_PATH "${INCLUDE_PATH}")
string(APPEND _MSVC_COMMON_C_CXX_FLAGS " /DY_MSVC_INCLUDE=\"${SAFE_INCLUDE_PATH}\"")
set(MSVC_INCLUDE_FOUND true)
break()
endif()
endforeach()
if (NOT MSVC_INCLUDE_FOUND)
message(FATAL_ERROR "MSVC include path not found, please add it to the standard INCLUDE environment variable (most likely by calling vcvars64.bat)")
endif()
endif()
foreach(WARN ${_WARNS_AS_ERROR})
string(APPEND _MSVC_COMMON_C_CXX_FLAGS " /we${WARN}")
endforeach()
foreach(WARN ${_WARNS_ENABLED})
string(APPEND _MSVC_COMMON_C_CXX_FLAGS " /w1${WARN}")
endforeach()
foreach(WARN ${_WARNS_DISABLED})
string(APPEND _MSVC_COMMON_C_CXX_FLAGS " /wd${WARN}")
endforeach()
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|AMD64)$")
string(APPEND _MSVC_COMMON_C_CXX_FLAGS " \
/D_WIN64 \
/DWIN64 \
/D__SSE2__ \
/D__SSE3__ \
/D__SSSE3__ \
/D__SSE4_1__ \
/D__SSE4_2__ \
/D__POPCNT__ \
")
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_MSVC_COMMON_C_CXX_FLAGS} \
")
# TODO - '/D_CRT_USE_BUILTIN_OFFSETOF'
# TODO - -DUSE_STL_SYSTEM
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_MSVC_COMMON_C_CXX_FLAGS} \
/std:c++latest \
/Zc:__cplusplus \
")
set(CMAKE_CXX_FLAGS_DEBUG "/Z7 /Ob0 /Od /D_DEBUG")
set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /DNDEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "/Ox /Ob2 /Oi /DNDEBUG")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/Z7 /Ox /Ob1 /DNDEBUG")
|