diff --git a/reactos/cmake/config.cmake b/reactos/cmake/config.cmake index 80fffb58ff1..d8ef1f652de 100644 --- a/reactos/cmake/config.cmake +++ b/reactos/cmake/config.cmake @@ -69,6 +69,10 @@ set(GENERATE_DEPENDENCY_GRAPH FALSE CACHE BOOL "Whether to create a graphml dependency of dlls.") if(MSVC) + set(_PREFAST_ FALSE CACHE BOOL "Whether to enable PREFAST while compiling.") +set(_VS_ANALYZE_ FALSE CACHE BOOL +"Whether to enable static analysis while compiling.") + endif() diff --git a/reactos/cmake/msvc.cmake b/reactos/cmake/msvc.cmake index 230c7a836a2..10de5908544 100644 --- a/reactos/cmake/msvc.cmake +++ b/reactos/cmake/msvc.cmake @@ -26,7 +26,7 @@ add_compile_flags("/we4700") # Debugging if(${CMAKE_BUILD_TYPE} MATCHES Debug) - if(NOT _PREFAST_) + if(NOT (_PREFAST_ OR _VS_ANALYZE_)) add_compile_flags("/Zi") endif() add_compile_flags("/Ob0 /Od") @@ -56,21 +56,19 @@ else() " /nologo /Cp /Fo /c /Ta .tmp") endif() -if(_PREFAST_) - if(MSVC_VERSION EQUAL 1600 OR MSVC_VERSION GREATER 1600) - add_compile_flags("/analyze") - else() - message("PREFAST enabled!") - set(CMAKE_C_COMPILE_OBJECT "prefast cl ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /Fo -c ${CMAKE_END_TEMP_FILE}" +if(_VS_ANALYZE_) + message("VS static analysis enabled!") + add_compile_flags("/analyze") +elseif(_PREFAST_) + message("PREFAST enabled!") + set(CMAKE_C_COMPILE_OBJECT "prefast cl ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /Fo -c ${CMAKE_END_TEMP_FILE}" "prefast LIST") - set(CMAKE_CXX_COMPILE_OBJECT "prefast cl ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /TP /Fo -c ${CMAKE_END_TEMP_FILE}" + set(CMAKE_CXX_COMPILE_OBJECT "prefast cl ${CMAKE_START_TEMP_FILE} ${CMAKE_CL_NOLOGO} /TP /Fo -c ${CMAKE_END_TEMP_FILE}" "prefast LIST") - set(CMAKE_C_LINK_EXECUTABLE + set(CMAKE_C_LINK_EXECUTABLE "cl ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link /implib: /version:. ${CMAKE_END_TEMP_FILE}") - set(CMAKE_CXX_LINK_EXECUTABLE + set(CMAKE_CXX_LINK_EXECUTABLE "cl ${CMAKE_CL_NOLOGO} ${CMAKE_START_TEMP_FILE} /Fe -link /implib: /version:. ${CMAKE_END_TEMP_FILE}") - endif() - endif() set(CMAKE_RC_CREATE_SHARED_LIBRARY ${CMAKE_C_CREATE_SHARED_LIBRARY})