1 #define GLM_FORCE_MESSAGES 2 #include <glm/vec3.hpp> 3 #include <cstdio> 4 test_compiler()5int test_compiler() 6 { 7 int Error(0); 8 9 if(GLM_COMPILER & GLM_COMPILER_VC) 10 { 11 switch(GLM_COMPILER) 12 { 13 case GLM_COMPILER_VC12: 14 std::printf("Visual C++ 12 - 2013\n"); 15 break; 16 case GLM_COMPILER_VC14: 17 std::printf("Visual C++ 14 - 2015\n"); 18 break; 19 case GLM_COMPILER_VC15: 20 std::printf("Visual C++ 15 - 2017\n"); 21 break; 22 case GLM_COMPILER_VC16: 23 std::printf("Visual C++ 16 - 20XX\n"); 24 break; 25 default: 26 std::printf("Visual C++ version not detected\n"); 27 Error += 1; 28 break; 29 } 30 } 31 else if(GLM_COMPILER & GLM_COMPILER_GCC) 32 { 33 switch(GLM_COMPILER) 34 { 35 case GLM_COMPILER_GCC46: 36 std::printf("GCC 4.6\n"); 37 break; 38 case GLM_COMPILER_GCC47: 39 std::printf("GCC 4.7\n"); 40 break; 41 case GLM_COMPILER_GCC48: 42 std::printf("GCC 4.8\n"); 43 break; 44 case GLM_COMPILER_GCC49: 45 std::printf("GCC 4.9\n"); 46 break; 47 case GLM_COMPILER_GCC5: 48 std::printf("GCC 5\n"); 49 break; 50 case GLM_COMPILER_GCC6: 51 std::printf("GCC 6\n"); 52 break; 53 case GLM_COMPILER_GCC7: 54 std::printf("GCC 7\n"); 55 break; 56 case GLM_COMPILER_GCC8: 57 std::printf("GCC 8\n"); 58 break; 59 default: 60 std::printf("GCC version not detected\n"); 61 Error += 1; 62 break; 63 } 64 } 65 else if(GLM_COMPILER & GLM_COMPILER_CUDA) 66 { 67 std::printf("CUDA\n"); 68 } 69 else if(GLM_COMPILER & GLM_COMPILER_CLANG) 70 { 71 switch(GLM_COMPILER) 72 { 73 case GLM_COMPILER_CLANG34: 74 std::printf("Clang 3.4\n"); 75 break; 76 case GLM_COMPILER_CLANG35: 77 std::printf("Clang 3.5\n"); 78 break; 79 case GLM_COMPILER_CLANG36: 80 std::printf("Clang 3.6\n"); 81 break; 82 case GLM_COMPILER_CLANG37: 83 std::printf("Clang 3.7\n"); 84 break; 85 case GLM_COMPILER_CLANG38: 86 std::printf("Clang 3.8\n"); 87 break; 88 case GLM_COMPILER_CLANG39: 89 std::printf("Clang 3.9\n"); 90 break; 91 case GLM_COMPILER_CLANG40: 92 std::printf("Clang 4.0\n"); 93 break; 94 case GLM_COMPILER_CLANG41: 95 std::printf("Clang 4.1\n"); 96 break; 97 case GLM_COMPILER_CLANG42: 98 std::printf("Clang 4.2\n"); 99 break; 100 default: 101 std::printf("LLVM version not detected\n"); 102 break; 103 } 104 } 105 else if(GLM_COMPILER & GLM_COMPILER_INTEL) 106 { 107 switch(GLM_COMPILER) 108 { 109 case GLM_COMPILER_INTEL14: 110 std::printf("ICC 14 - 2013 SP1\n"); 111 break; 112 case GLM_COMPILER_INTEL15: 113 std::printf("ICC 15 - 2015\n"); 114 break; 115 case GLM_COMPILER_INTEL16: 116 std::printf("ICC 16 - 2017\n"); 117 break; 118 case GLM_COMPILER_INTEL17: 119 std::printf("ICC 17 - 20XX\n"); 120 break; 121 default: 122 std::printf("Intel compiler version not detected\n"); 123 Error += 1; 124 break; 125 } 126 } 127 else 128 { 129 std::printf("Undetected compiler\n"); 130 Error += 1; 131 } 132 133 return Error; 134 } 135 test_model()136int test_model() 137 { 138 int Error = 0; 139 140 Error += ((sizeof(void*) == 4) && (GLM_MODEL == GLM_MODEL_32)) || ((sizeof(void*) == 8) && (GLM_MODEL == GLM_MODEL_64)) ? 0 : 1; 141 142 if(GLM_MODEL == GLM_MODEL_32) 143 std::printf("GLM_MODEL_32\n"); 144 else if(GLM_MODEL == GLM_MODEL_64) 145 std::printf("GLM_MODEL_64\n"); 146 147 return Error; 148 } 149 test_instruction_set()150int test_instruction_set() 151 { 152 int Error = 0; 153 154 std::printf("GLM_ARCH: "); 155 156 if(GLM_ARCH == GLM_ARCH_PURE) 157 std::printf("GLM_ARCH_PURE "); 158 if(GLM_ARCH & GLM_ARCH_ARM_BIT) 159 std::printf("ARM "); 160 if(GLM_ARCH & GLM_ARCH_NEON_BIT) 161 std::printf("NEON "); 162 if(GLM_ARCH & GLM_ARCH_AVX2) 163 std::printf("AVX2 "); 164 if(GLM_ARCH & GLM_ARCH_AVX) 165 std::printf("AVX "); 166 if(GLM_ARCH & GLM_ARCH_SSE42_BIT) 167 std::printf("SSE4.2 "); 168 if(GLM_ARCH & GLM_ARCH_SSE41_BIT) 169 std::printf("SSE4.1 "); 170 if(GLM_ARCH & GLM_ARCH_SSSE3_BIT) 171 std::printf("SSSE3 "); 172 if(GLM_ARCH & GLM_ARCH_SSE3_BIT) 173 std::printf("SSE3 "); 174 if(GLM_ARCH & GLM_ARCH_SSE2_BIT) 175 std::printf("SSE2 "); 176 177 std::printf("\n"); 178 179 return Error; 180 } 181 test_cpp_version()182int test_cpp_version() 183 { 184 std::printf("__cplusplus: %d\n", static_cast<int>(__cplusplus)); 185 186 return 0; 187 } 188 test_operators()189int test_operators() 190 { 191 glm::vec3 A(1.0f); 192 glm::vec3 B(1.0f); 193 bool R = A != B; 194 bool S = A == B; 195 196 return (S && !R) ? 0 : 1; 197 } 198 199 template<typename T> 200 struct vec 201 { 202 203 }; 204 205 template<template<typename> class C, typename T> 206 struct Class 207 { 208 209 }; 210 211 template<typename T> 212 struct Class<vec, T> 213 { 214 215 }; 216 main()217int main() 218 { 219 //Class<vec, float> C; 220 221 int Error = 0; 222 223 Error += test_cpp_version(); 224 Error += test_compiler(); 225 Error += test_model(); 226 Error += test_instruction_set(); 227 Error += test_operators(); 228 229 return Error; 230 } 231