diff --git a/src/Magnum/Shaders/CMakeLists.txt b/src/Magnum/Shaders/CMakeLists.txt index 18a12277f..22e8e80c6 100644 --- a/src/Magnum/Shaders/CMakeLists.txt +++ b/src/Magnum/Shaders/CMakeLists.txt @@ -52,10 +52,6 @@ set(MagnumShaders_HEADERS # Header files to display in project view of IDEs only set(MagnumShaders_PRIVATE_HEADERS Implementation/CreateCompatibilityShader.h) -if(BUILD_STATIC) - set(MagnumShaders_HEADERS ${MagnumShaders_HEADERS} resourceImport.hpp) -endif() - # Shaders library add_library(MagnumShaders ${SHARED_OR_STATIC} ${MagnumShaders_SRCS} diff --git a/src/Magnum/Shaders/DistanceFieldVector.cpp b/src/Magnum/Shaders/DistanceFieldVector.cpp index 9a4ef621b..6459d5005 100644 --- a/src/Magnum/Shaders/DistanceFieldVector.cpp +++ b/src/Magnum/Shaders/DistanceFieldVector.cpp @@ -42,6 +42,11 @@ namespace { } template DistanceFieldVector::DistanceFieldVector(): transformationProjectionMatrixUniform(0), colorUniform(1), outlineColorUniform(2), outlineRangeUniform(3), smoothnessUniform(4) { + #ifdef MAGNUM_BUILD_STATIC + /* Import resources on static build, if not already */ + if(!Utility::Resource::hasGroup("MagnumShaders")) + importShaderResources(); + #endif Utility::Resource rs("MagnumShaders"); #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/Shaders/Flat.cpp b/src/Magnum/Shaders/Flat.cpp index 5f8415336..912f3780c 100644 --- a/src/Magnum/Shaders/Flat.cpp +++ b/src/Magnum/Shaders/Flat.cpp @@ -45,6 +45,11 @@ namespace { } template Flat::Flat(const Flags flags): transformationProjectionMatrixUniform(0), colorUniform(1), _flags(flags) { + #ifdef MAGNUM_BUILD_STATIC + /* Import resources on static build, if not already */ + if(!Utility::Resource::hasGroup("MagnumShaders")) + importShaderResources(); + #endif Utility::Resource rs("MagnumShaders"); #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.h b/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.h index 353358f8d..1cccfa369 100644 --- a/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.h +++ b/src/Magnum/Shaders/Implementation/CreateCompatibilityShader.h @@ -31,6 +31,12 @@ #include "Magnum/Extensions.h" #include "Magnum/Shader.h" +#ifdef MAGNUM_BUILD_STATIC +static void importShaderResources() { + CORRADE_RESOURCE_INITIALIZE(MagnumShaders_RCS) +} +#endif + namespace Magnum { namespace Shaders { namespace Implementation { inline Shader createCompatibilityShader(const Utility::Resource& rs, Version version, Shader::Type type) { diff --git a/src/Magnum/Shaders/MeshVisualizer.cpp b/src/Magnum/Shaders/MeshVisualizer.cpp index 4dd5af687..79fd6ef5a 100644 --- a/src/Magnum/Shaders/MeshVisualizer.cpp +++ b/src/Magnum/Shaders/MeshVisualizer.cpp @@ -47,6 +47,11 @@ MeshVisualizer::MeshVisualizer(const Flags flags): flags(flags), transformationP MAGNUM_ASSERT_EXTENSION_SUPPORTED(Extensions::GL::OES::standard_derivatives); #endif + #ifdef MAGNUM_BUILD_STATIC + /* Import resources on static build, if not already */ + if(!Utility::Resource::hasGroup("MagnumShaders")) + importShaderResources(); + #endif Utility::Resource rs("MagnumShaders"); #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/Shaders/Phong.cpp b/src/Magnum/Shaders/Phong.cpp index ac11e1e25..f665e93b9 100644 --- a/src/Magnum/Shaders/Phong.cpp +++ b/src/Magnum/Shaders/Phong.cpp @@ -45,6 +45,11 @@ namespace { } Phong::Phong(const Flags flags): transformationMatrixUniform(0), projectionMatrixUniform(1), normalMatrixUniform(2), lightUniform(3), diffuseColorUniform(4), ambientColorUniform(5), specularColorUniform(6), lightColorUniform(7), shininessUniform(8), _flags(flags) { + #ifdef MAGNUM_BUILD_STATIC + /* Import resources on static build, if not already */ + if(!Utility::Resource::hasGroup("MagnumShaders")) + importShaderResources(); + #endif Utility::Resource rs("MagnumShaders"); #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp index f658b4835..c208d6d6f 100644 --- a/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/DistanceFieldVectorGLTest.cpp @@ -26,10 +26,6 @@ #include "Magnum/Shaders/DistanceFieldVector.h" #include "Magnum/Test/AbstractOpenGLTester.h" -#ifdef MAGNUM_BUILD_STATIC -#include "Magnum/Shaders/resourceImport.hpp" -#endif - namespace Magnum { namespace Shaders { namespace Test { struct DistanceFieldVectorGLTest: Magnum::Test::AbstractOpenGLTester { diff --git a/src/Magnum/Shaders/Test/FlatGLTest.cpp b/src/Magnum/Shaders/Test/FlatGLTest.cpp index 6b89dfea7..7383f7e2e 100644 --- a/src/Magnum/Shaders/Test/FlatGLTest.cpp +++ b/src/Magnum/Shaders/Test/FlatGLTest.cpp @@ -26,10 +26,6 @@ #include "Magnum/Shaders/Flat.h" #include "Magnum/Test/AbstractOpenGLTester.h" -#ifdef MAGNUM_BUILD_STATIC -#include "Magnum/Shaders/resourceImport.hpp" -#endif - namespace Magnum { namespace Shaders { namespace Test { struct FlatGLTest: Magnum::Test::AbstractOpenGLTester { diff --git a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp index 0ce071067..7cd6ca48c 100644 --- a/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp +++ b/src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp @@ -28,10 +28,6 @@ #include "Magnum/Shaders/MeshVisualizer.h" #include "Magnum/Test/AbstractOpenGLTester.h" -#ifdef MAGNUM_BUILD_STATIC -#include "Magnum/Shaders/resourceImport.hpp" -#endif - namespace Magnum { namespace Shaders { namespace Test { struct MeshVisualizerGLTest: Magnum::Test::AbstractOpenGLTester { diff --git a/src/Magnum/Shaders/Test/PhongGLTest.cpp b/src/Magnum/Shaders/Test/PhongGLTest.cpp index 516c69ad7..0b52d0038 100644 --- a/src/Magnum/Shaders/Test/PhongGLTest.cpp +++ b/src/Magnum/Shaders/Test/PhongGLTest.cpp @@ -26,10 +26,6 @@ #include "Magnum/Shaders/Phong.h" #include "Magnum/Test/AbstractOpenGLTester.h" -#ifdef MAGNUM_BUILD_STATIC -#include "Magnum/Shaders/resourceImport.hpp" -#endif - namespace Magnum { namespace Shaders { namespace Test { struct PhongGLTest: Magnum::Test::AbstractOpenGLTester { diff --git a/src/Magnum/Shaders/Test/VectorGLTest.cpp b/src/Magnum/Shaders/Test/VectorGLTest.cpp index 0ca53fd77..c83c93c16 100644 --- a/src/Magnum/Shaders/Test/VectorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VectorGLTest.cpp @@ -26,10 +26,6 @@ #include "Magnum/Shaders/Vector.h" #include "Magnum/Test/AbstractOpenGLTester.h" -#ifdef MAGNUM_BUILD_STATIC -#include "Magnum/Shaders/resourceImport.hpp" -#endif - namespace Magnum { namespace Shaders { namespace Test { struct VectorGLTest: Magnum::Test::AbstractOpenGLTester { diff --git a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp index 02e0baae0..67a65d9dd 100644 --- a/src/Magnum/Shaders/Test/VertexColorGLTest.cpp +++ b/src/Magnum/Shaders/Test/VertexColorGLTest.cpp @@ -26,10 +26,6 @@ #include "Magnum/Shaders/VertexColor.h" #include "Magnum/Test/AbstractOpenGLTester.h" -#ifdef MAGNUM_BUILD_STATIC -#include "Magnum/Shaders/resourceImport.hpp" -#endif - namespace Magnum { namespace Shaders { namespace Test { struct VertexColorGLTest: Magnum::Test::AbstractOpenGLTester { diff --git a/src/Magnum/Shaders/Vector.cpp b/src/Magnum/Shaders/Vector.cpp index 290b32fbb..05e3c3d50 100644 --- a/src/Magnum/Shaders/Vector.cpp +++ b/src/Magnum/Shaders/Vector.cpp @@ -42,6 +42,11 @@ namespace { } template Vector::Vector(): transformationProjectionMatrixUniform(0), backgroundColorUniform(1), colorUniform(2) { + #ifdef MAGNUM_BUILD_STATIC + /* Import resources on static build, if not already */ + if(!Utility::Resource::hasGroup("MagnumShaders")) + importShaderResources(); + #endif Utility::Resource rs("MagnumShaders"); #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/Shaders/VertexColor.cpp b/src/Magnum/Shaders/VertexColor.cpp index 1c07939ec..9183a3db5 100644 --- a/src/Magnum/Shaders/VertexColor.cpp +++ b/src/Magnum/Shaders/VertexColor.cpp @@ -42,6 +42,11 @@ namespace { } template VertexColor::VertexColor(): transformationProjectionMatrixUniform(0) { + #ifdef MAGNUM_BUILD_STATIC + /* Import resources on static build, if not already */ + if(!Utility::Resource::hasGroup("MagnumShaders")) + importShaderResources(); + #endif Utility::Resource rs("MagnumShaders"); #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/Shaders/resourceImport.hpp b/src/Magnum/Shaders/resourceImport.hpp deleted file mode 100644 index 2962a373d..000000000 --- a/src/Magnum/Shaders/resourceImport.hpp +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef Magnum_Shaders_resourceImport_hpp -#define Magnum_Shaders_resourceImport_hpp -/* - This file is part of Magnum. - - Copyright © 2010, 2011, 2012, 2013, 2014, 2015 - Vladimír Vondruš - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. -*/ - -#include "Magnum/configure.h" - -#ifdef MAGNUM_BUILD_STATIC -#include -#include - -static int magnumShadersResourceImport() { - CORRADE_RESOURCE_INITIALIZE(MagnumShaders_RCS) - return 0; -} CORRADE_AUTOMATIC_INITIALIZER(magnumShadersResourceImport) -#else -#error this header is available only in static build -#endif - -#endif diff --git a/src/Magnum/TextureTools/CMakeLists.txt b/src/Magnum/TextureTools/CMakeLists.txt index 6530aa88e..c07ed487a 100644 --- a/src/Magnum/TextureTools/CMakeLists.txt +++ b/src/Magnum/TextureTools/CMakeLists.txt @@ -36,10 +36,6 @@ set(MagnumTextureTools_HEADERS visibility.h) -if(BUILD_STATIC) - list(APPEND MagnumTextureTools_HEADERS resourceImport.hpp) -endif() - # TextureTools library add_library(MagnumTextureTools ${SHARED_OR_STATIC} ${MagnumTextureTools_SRCS} diff --git a/src/Magnum/TextureTools/DistanceField.cpp b/src/Magnum/TextureTools/DistanceField.cpp index 44e3a26f9..d72406daa 100644 --- a/src/Magnum/TextureTools/DistanceField.cpp +++ b/src/Magnum/TextureTools/DistanceField.cpp @@ -38,6 +38,10 @@ #include "Magnum/Texture.h" #include "Magnum/Shaders/Implementation/CreateCompatibilityShader.h" +static void importTextureToolResources() { + CORRADE_RESOURCE_INITIALIZE(MagnumTextureTools_RCS) +} + namespace Magnum { namespace TextureTools { namespace { @@ -77,6 +81,11 @@ class DistanceFieldShader: public AbstractShaderProgram { }; DistanceFieldShader::DistanceFieldShader(): radiusUniform(0), scalingUniform(1) { + #ifdef MAGNUM_BUILD_STATIC + /* Import resources on static build, if not already */ + if(!Utility::Resource::hasGroup("MagnumTextureTools")) + importTextureToolResources(); + #endif Utility::Resource rs("MagnumTextureTools"); #ifndef MAGNUM_TARGET_GLES diff --git a/src/Magnum/TextureTools/resourceImport.hpp b/src/Magnum/TextureTools/resourceImport.hpp deleted file mode 100644 index 0464b6cc2..000000000 --- a/src/Magnum/TextureTools/resourceImport.hpp +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef Magnum_TextureTools_resourceImport_hpp -#define Magnum_TextureTools_resourceImport_hpp -/* - This file is part of Magnum. - - Copyright © 2010, 2011, 2012, 2013, 2014, 2015 - Vladimír Vondruš - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. -*/ - -#include "Magnum/configure.h" - -#ifdef MAGNUM_BUILD_STATIC -#include -#include - -static int magnumTextureToolsResourceImport() { - CORRADE_RESOURCE_INITIALIZE(MagnumTextureTools_RCS) - return 0; -} CORRADE_AUTOMATIC_INITIALIZER(magnumTextureToolsResourceImport) -#else -#error this header is available only in static build -#endif - -#endif