diff --git a/CMakeLists.txt b/CMakeLists.txt index f82cb981..756673a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -58,6 +58,12 @@ endif() option(GLM_TEST_ENABLE_LANG_EXTENSIONS "Enable language extensions" OFF) +option(GLM_DISABLE_AUTO_DETECTION "Enable language extensions" OFF) + +if(GLM_DISABLE_AUTO_DETECTION) + add_definitions(-DGLM_FORCE_PLATFORM_UNKNOWN -DGLM_FORCE_COMPILER_UNKNOWN -DGLM_FORCE_ARCH_UNKNOWN -DGLM_FORCE_CXX_UNKNOWN) +endif() + if(GLM_TEST_ENABLE_LANG_EXTENSIONS) set(CMAKE_CXX_EXTENSIONS ON) if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES "GNU")) diff --git a/glm/detail/setup.hpp b/glm/detail/setup.hpp index 5ab422ee..c6c37779 100644 --- a/glm/detail/setup.hpp +++ b/glm/detail/setup.hpp @@ -80,7 +80,9 @@ # define GLM_LANG_EXT 0 #endif -#if defined(GLM_FORCE_CXX2A) +#if (defined(GLM_FORCE_CXX_UNKNOWN)) +# define GLM_LANG 0 +#elif defined(GLM_FORCE_CXX2A) # define GLM_LANG (GLM_LANG_CXX2A | GLM_LANG_EXT) # define GLM_LANG_STL11_FORCED #elif defined(GLM_FORCE_CXX17) diff --git a/glm/simd/platform.h b/glm/simd/platform.h index 30e54f33..717e9aab 100644 --- a/glm/simd/platform.h +++ b/glm/simd/platform.h @@ -251,7 +251,9 @@ #define GLM_ARCH_MIPS (GLM_ARCH_MIPS_BIT) #define GLM_ARCH_PPC (GLM_ARCH_PPC_BIT) -#if defined(GLM_FORCE_PURE) || defined(GLM_FORCE_XYZW_ONLY) +#ifdef GLM_FORCE_ARCH_UNKNOWN +# define GLM_ARCH GLM_ARCH_UNKNOWN +#elif defined(GLM_FORCE_PURE) || defined(GLM_FORCE_XYZW_ONLY) # if defined(__x86_64__) || defined(_M_X64) || defined(_M_IX86) || defined(__i386__) # define GLM_ARCH (GLM_ARCH_X86) # elif defined(__arm__ ) || defined(_M_ARM) diff --git a/manual.md b/manual.md index 2de6e7a9..281b6858 100644 --- a/manual.md +++ b/manual.md @@ -293,6 +293,18 @@ The following subsections describe each configurations and defines. TODO +### 2.3. GLM\_FORCE\_COMPILER\_UNKNOWN: Force GLM to no detect the build compiler + +TODO + +### 2.4. GLM\_FORCE\_ARCH\_UNKNOWN: Force GLM to no detect the build architecture + +TODO + +### 2.5. GLM\_FORCE\_CXX\_UNKNOWN: Force GLM to no detect the C++ standard + +TODO + ### 2.3. GLM\_FORCE\_CXX**: C++ language detection GLM will automatically take advantage of compilers’ language extensions when enabled. To increase cross platform compatibility and to avoid compiler extensions, a programmer can define GLM\_FORCE\_CXX98 before diff --git a/test/core/core_setup_platform_unknown.cpp b/test/core/core_setup_platform_unknown.cpp index f010669d..9feaee39 100644 --- a/test/core/core_setup_platform_unknown.cpp +++ b/test/core/core_setup_platform_unknown.cpp @@ -1,4 +1,15 @@ -#define GLM_FORCE_PLATFORM_UNKNOWN +#ifndef GLM_FORCE_PLATFORM_UNKNOWN +# define GLM_FORCE_PLATFORM_UNKNOWN +#endif +#ifndef GLM_FORCE_COMPILER_UNKNOWN +# define GLM_FORCE_COMPILER_UNKNOWN +#endif +#ifndef GLM_FORCE_ARCH_UNKNOWN +# define GLM_FORCE_ARCH_UNKNOWN +#endif +#ifndef GLM_FORCE_CXX_UNKNOWN +# define GLM_FORCE_CXX_UNKNOWN +#endif #include #include