Cleanup/MSVC: Enable C++ conformance mode on compiler versions that support it.
MSVC has a conformance mode (/permissive-) where the C++ standard is more strictly enforced. This mode is available on MSVC 15.5+ [1] This patch enables this mode on compilers that support it and cleans up the few violations it threw up in the process. - Mantaflow was using M_PI without requesting them using the _USE_MATH_DEFINES define to opt in to non default behaviour. - Collada did not include the right header for std::cerr, this seemingly was fixed for other platforms already but put inside a platform guard. - Ghost had some scoping issues regarding uninitialized variables and goto behaviour Second landing of this patch, earlier commit was reverted due to some compiler configurations having slipped though testing [1] https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance Differential Revision: https://developer.blender.org/D6824 Reviewed By: brecht
This commit is contained in:
@@ -144,6 +144,14 @@ else()
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd /MP /bigobj")
|
||||
endif()
|
||||
|
||||
# C++ standards conformace (/permissive-) is available on msvc 15.5 (1912) and up
|
||||
if(MSVC_VERSION GREATER 1911 AND NOT MSVC_CLANG)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /permissive-")
|
||||
# Two-phase name lookup does not place nicely with OpenMP yet, so disable for now
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:twoPhase-")
|
||||
endif()
|
||||
|
||||
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd /ZI")
|
||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MDd /ZI")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
|
||||
|
||||
4
extern/mantaflow/CMakeLists.txt
vendored
4
extern/mantaflow/CMakeLists.txt
vendored
@@ -54,6 +54,10 @@ if(WITH_OPENVDB)
|
||||
add_definitions(-DOPENVDB_STATICLIB)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
add_definitions(-D_USE_MATH_DEFINES)
|
||||
endif()
|
||||
|
||||
set(INC
|
||||
${MANTA_PP}
|
||||
${MANTA_PP}/fileio
|
||||
|
||||
@@ -647,9 +647,11 @@ GHOST_TSuccess GHOST_ContextWGL::initializeDrawingContext()
|
||||
|
||||
/* Silence warnings interpreted as errors by users when trying to get
|
||||
* a context with version higher than 3.3 Core. */
|
||||
const bool silent = m_contextMajorVersion > 3;
|
||||
if (!WIN32_CHK_SILENT(m_hGLRC != NULL, silent)) {
|
||||
goto error;
|
||||
{
|
||||
const bool silent = m_contextMajorVersion > 3;
|
||||
if (!WIN32_CHK_SILENT(m_hGLRC != NULL, silent)) {
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
s_sharedCount++;
|
||||
@@ -680,15 +682,17 @@ GHOST_TSuccess GHOST_ContextWGL::initializeDrawingContext()
|
||||
::SwapBuffers(m_hDC);
|
||||
|
||||
#ifndef NDEBUG
|
||||
const char *vendor = reinterpret_cast<const char *>(glGetString(GL_VENDOR));
|
||||
const char *renderer = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
|
||||
const char *version = reinterpret_cast<const char *>(glGetString(GL_VERSION));
|
||||
{
|
||||
const char *vendor = reinterpret_cast<const char *>(glGetString(GL_VENDOR));
|
||||
const char *renderer = reinterpret_cast<const char *>(glGetString(GL_RENDERER));
|
||||
const char *version = reinterpret_cast<const char *>(glGetString(GL_VERSION));
|
||||
|
||||
reportContextString("Vendor", m_dummyVendor, vendor);
|
||||
reportContextString("Renderer", m_dummyRenderer, renderer);
|
||||
reportContextString("Version", m_dummyVersion, version);
|
||||
reportContextString("Vendor", m_dummyVendor, vendor);
|
||||
reportContextString("Renderer", m_dummyRenderer, renderer);
|
||||
reportContextString("Version", m_dummyVersion, version);
|
||||
|
||||
fprintf(stderr, "Context Version: %d.%d\n", m_contextMajorVersion, m_contextMinorVersion);
|
||||
fprintf(stderr, "Context Version: %d.%d\n", m_contextMajorVersion, m_contextMinorVersion);
|
||||
}
|
||||
#endif
|
||||
|
||||
return GHOST_kSuccess;
|
||||
|
||||
@@ -30,6 +30,11 @@ if(WITH_OPENVDB)
|
||||
add_definitions(-DOPENVDB_STATICLIB)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
add_definitions(-D_USE_MATH_DEFINES)
|
||||
endif()
|
||||
|
||||
|
||||
set(INC
|
||||
extern
|
||||
intern/strings
|
||||
|
||||
@@ -19,10 +19,7 @@
|
||||
*/
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#if !defined(WIN32)
|
||||
# include <iostream>
|
||||
#endif
|
||||
#include <iostream>
|
||||
|
||||
/* COLLADABU_ASSERT, may be able to remove later */
|
||||
#include "COLLADABUPlatform.h"
|
||||
|
||||
Reference in New Issue
Block a user