Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Molenkamp <github@lazydodo.com>2020-02-14 03:13:07 +0300
committerRay Molenkamp <github@lazydodo.com>2020-02-14 03:13:07 +0300
commit75a5ea01c19563ae1ba427e9206f2eae637d6070 (patch)
treec611b4c77aaec2414dd2ca2f42dc539f4e57916a
parent4af74f453d4e41129626f7578c55ac9927f6d02a (diff)
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
-rw-r--r--build_files/cmake/platform/platform_win32.cmake8
-rw-r--r--extern/mantaflow/CMakeLists.txt4
-rw-r--r--intern/ghost/intern/GHOST_ContextWGL.cpp24
-rw-r--r--intern/mantaflow/CMakeLists.txt5
-rw-r--r--source/blender/collada/MeshImporter.cpp5
5 files changed, 32 insertions, 14 deletions
diff --git a/build_files/cmake/platform/platform_win32.cmake b/build_files/cmake/platform/platform_win32.cmake
index 653b3a9f508..cfa4f1c9bf7 100644
--- a/build_files/cmake/platform/platform_win32.cmake
+++ b/build_files/cmake/platform/platform_win32.cmake
@@ -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")
diff --git a/extern/mantaflow/CMakeLists.txt b/extern/mantaflow/CMakeLists.txt
index d2f78f7ab6c..99d985578bd 100644
--- a/extern/mantaflow/CMakeLists.txt
+++ b/extern/mantaflow/CMakeLists.txt
@@ -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
diff --git a/intern/ghost/intern/GHOST_ContextWGL.cpp b/intern/ghost/intern/GHOST_ContextWGL.cpp
index d4851450ce8..6d5d4f75351 100644
--- a/intern/ghost/intern/GHOST_ContextWGL.cpp
+++ b/intern/ghost/intern/GHOST_ContextWGL.cpp
@@ -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;
diff --git a/intern/mantaflow/CMakeLists.txt b/intern/mantaflow/CMakeLists.txt
index 2d49f96a451..b2a0ab30a0c 100644
--- a/intern/mantaflow/CMakeLists.txt
+++ b/intern/mantaflow/CMakeLists.txt
@@ -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
diff --git a/source/blender/collada/MeshImporter.cpp b/source/blender/collada/MeshImporter.cpp
index 14c09a95d10..bc6dd4202b1 100644
--- a/source/blender/collada/MeshImporter.cpp
+++ b/source/blender/collada/MeshImporter.cpp
@@ -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"