Browse Source

Added detection of Visual C++ 2017 toolsets

Groove 7 years ago
parent
commit
13ef0f92bc
4 changed files with 33 additions and 24 deletions
  1. 5 17
      glm/detail/setup.hpp
  2. 16 5
      glm/simd/platform.h
  3. 1 0
      readme.md
  4. 11 2
      test/core/core_setup_message.cpp

+ 5 - 17
glm/detail/setup.hpp

@@ -324,20 +324,6 @@
 		((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (GLM_COMPILER & GLM_COMPILER_CLANG)))
 #endif
 
-// N2235
-#if GLM_COMPILER & GLM_COMPILER_CLANG
-#	define GLM_HAS_CONSTEXPR __has_feature(cxx_constexpr)
-#	define GLM_HAS_CONSTEXPR_PARTIAL GLM_HAS_CONSTEXPR
-#elif GLM_LANG & GLM_LANG_CXX11_FLAG
-#	define GLM_HAS_CONSTEXPR 1
-#	define GLM_HAS_CONSTEXPR_PARTIAL GLM_HAS_CONSTEXPR
-#else
-#	define GLM_HAS_CONSTEXPR ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-		((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15)) || \
-		((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC48)))) // GCC 4.6 support constexpr but there is a compiler bug causing a crash
-#	define GLM_HAS_CONSTEXPR_PARTIAL (GLM_HAS_CONSTEXPR || ((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC14)))
-#endif
-
 // N2672
 #if GLM_COMPILER & GLM_COMPILER_CLANG
 #	define GLM_HAS_INITIALIZER_LISTS __has_feature(cxx_generalized_initializers)
@@ -447,10 +433,12 @@
 #elif GLM_LANG & GLM_LANG_CXX11_FLAG
 #	define GLM_HAS_CONSTEXPR_CXX11 1
 #else
+	// GCC 4.6 support constexpr but there is a compiler bug causing a crash
+	// Visual C++ has a bug #594 https://github.com/g-truc/glm/issues/594
 #	define GLM_HAS_CONSTEXPR_CXX11 ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
-		((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC46)) || \
+		((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC48)) || \
 		((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL14)) || \
-		((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC14) && (GLM_ARCH == GLM_ARCH_PURE)))) // Visual C++ has a bug #594 https://github.com/g-truc/glm/issues/594
+		((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC14) && (GLM_ARCH == GLM_ARCH_PURE))))
 #endif
 
 #if GLM_HAS_CONSTEXPR_CXX11
@@ -468,7 +456,7 @@
 #	define GLM_HAS_CONSTEXPR_CXX14 ((GLM_LANG & GLM_LANG_CXX0X_FLAG) && (\
 		((GLM_COMPILER & GLM_COMPILER_GCC) && (GLM_COMPILER >= GLM_COMPILER_GCC50)) || \
 		((GLM_COMPILER & GLM_COMPILER_INTEL) && (GLM_COMPILER >= GLM_COMPILER_INTEL17)) || \
-		((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC14) && (GLM_ARCH == GLM_ARCH_PURE))))
+		((GLM_COMPILER & GLM_COMPILER_VC) && (GLM_COMPILER >= GLM_COMPILER_VC15) && (GLM_ARCH == GLM_ARCH_PURE))))
 #endif
 
 #if GLM_HAS_CONSTEXPR_CXX14

+ 16 - 5
glm/simd/platform.h

@@ -84,10 +84,13 @@
 
 // Visual C++ defines
 #define GLM_COMPILER_VC				0x01000000
-#define GLM_COMPILER_VC12			0x010000B0
-#define GLM_COMPILER_VC14			0x010000C0
-#define GLM_COMPILER_VC15			0x010000D0
-#define GLM_COMPILER_VC16			0x010000E0
+#define GLM_COMPILER_VC12			0x01000001
+#define GLM_COMPILER_VC14			0x01000002
+#define GLM_COMPILER_VC15			0x01000003
+#define GLM_COMPILER_VC15_3			0x01000004
+#define GLM_COMPILER_VC15_5			0x01000005
+#define GLM_COMPILER_VC15_6			0x01000006
+#define GLM_COMPILER_VC15_7			0x01000007
 
 // GCC defines
 #define GLM_COMPILER_GCC			0x02000000
@@ -200,8 +203,16 @@
 #		define GLM_COMPILER GLM_COMPILER_VC12
 #	elif _MSC_VER == 1900
 #		define GLM_COMPILER GLM_COMPILER_VC14
-#	elif _MSC_VER >= 1910
+#	elif _MSC_VER == 1910
 #		define GLM_COMPILER GLM_COMPILER_VC15
+#	elif _MSC_VER == 1911
+#		define GLM_COMPILER GLM_COMPILER_VC15_3
+#	elif _MSC_VER == 1912
+#		define GLM_COMPILER GLM_COMPILER_VC15_5
+#	elif _MSC_VER == 1913
+#		define GLM_COMPILER GLM_COMPILER_VC15_6
+#	elif _MSC_VER >= 1914
+#		define GLM_COMPILER GLM_COMPILER_VC15_7
 #	endif//_MSC_VER
 
 // G++

+ 1 - 0
readme.md

@@ -58,6 +58,7 @@ glm::mat4 camera(float Translate, glm::vec2 const& Rotate)
 #### Improvements:
 - Added missing vec1 based constructors
 - Redesigned constexpr support which requires disable GLM SIMD on Visual C++ #783
+- Added detection of Visual C++ 2017 toolsets
 
 #### Fixes:
 - Fixed build problems due to printf and std::clock_t #778

+ 11 - 2
test/core/core_setup_message.cpp

@@ -19,8 +19,17 @@ int test_compiler()
 		case GLM_COMPILER_VC15:
 			std::printf("Visual C++ 15 - 2017\n");
 			break;
-		case GLM_COMPILER_VC16:
-			std::printf("Visual C++ 16 - 20XX\n");
+		case GLM_COMPILER_VC15_3:
+			std::printf("Visual C++ 15.3 - 2017\n");
+			break;
+		case GLM_COMPILER_VC15_5:
+			std::printf("Visual C++ 15.5 - 2017\n");
+			break;
+		case GLM_COMPILER_VC15_6:
+			std::printf("Visual C++ 15.6 - 2017\n");
+			break;
+		case GLM_COMPILER_VC15_7:
+			std::printf("Visual C++ 15.7 - 2017\n");
 			break;
 		default:
 			std::printf("Visual C++ version not detected\n");