From b61d231f0824ddb7974d04bcb6fb2db3e48dfdcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 29 Apr 2015 01:13:26 +0200 Subject: [PATCH] GCC 4.5 compatibility: constexpr-related issues. --- src/Magnum/MultisampleTexture.h | 5 +++-- src/Magnum/Texture.h | 7 ++++--- src/Magnum/TextureArray.h | 5 +++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Magnum/MultisampleTexture.h b/src/Magnum/MultisampleTexture.h index 64b57a7aa..35f132213 100644 --- a/src/Magnum/MultisampleTexture.h +++ b/src/Magnum/MultisampleTexture.h @@ -40,9 +40,10 @@ namespace Magnum { namespace Implementation { template constexpr GLenum multisampleTextureTarget(); - template<> constexpr GLenum multisampleTextureTarget<2>() { return GL_TEXTURE_2D_MULTISAMPLE; } + /* GCC 4.5 doesn't have constexpr, so it needs inline */ + template<> constexpr inline GLenum multisampleTextureTarget<2>() { return GL_TEXTURE_2D_MULTISAMPLE; } #ifndef MAGNUM_TARGET_GLES - template<> constexpr GLenum multisampleTextureTarget<3>() { return GL_TEXTURE_2D_MULTISAMPLE_ARRAY; } + template<> constexpr inline GLenum multisampleTextureTarget<3>() { return GL_TEXTURE_2D_MULTISAMPLE_ARRAY; } #endif template typename DimensionTraits::VectorType maxMultisampleTextureSize(); diff --git a/src/Magnum/Texture.h b/src/Magnum/Texture.h index 3bfc75139..d1d1b8af9 100644 --- a/src/Magnum/Texture.h +++ b/src/Magnum/Texture.h @@ -40,11 +40,12 @@ namespace Magnum { namespace Implementation { template constexpr GLenum textureTarget(); + /* GCC 4.5 doesn't have constexpr, so it needs inline */ #ifndef MAGNUM_TARGET_GLES - template<> constexpr GLenum textureTarget<1>() { return GL_TEXTURE_1D; } + template<> constexpr inline GLenum textureTarget<1>() { return GL_TEXTURE_1D; } #endif - template<> constexpr GLenum textureTarget<2>() { return GL_TEXTURE_2D; } - template<> constexpr GLenum textureTarget<3>() { + template<> constexpr inline GLenum textureTarget<2>() { return GL_TEXTURE_2D; } + template<> constexpr inline GLenum textureTarget<3>() { #ifndef MAGNUM_TARGET_GLES2 return GL_TEXTURE_3D; #else diff --git a/src/Magnum/TextureArray.h b/src/Magnum/TextureArray.h index c6568a1f3..fd4a81892 100644 --- a/src/Magnum/TextureArray.h +++ b/src/Magnum/TextureArray.h @@ -41,10 +41,11 @@ namespace Magnum { namespace Implementation { template constexpr GLenum textureArrayTarget(); + /* GCC 4.5 doesn't have constexpr, so it needs inline */ #ifndef MAGNUM_TARGET_GLES - template<> constexpr GLenum textureArrayTarget<1>() { return GL_TEXTURE_1D_ARRAY; } + template<> constexpr inline GLenum textureArrayTarget<1>() { return GL_TEXTURE_1D_ARRAY; } #endif - template<> constexpr GLenum textureArrayTarget<2>() { return GL_TEXTURE_2D_ARRAY; } + template<> constexpr inline GLenum textureArrayTarget<2>() { return GL_TEXTURE_2D_ARRAY; } } /**