Browse Source

SceneGraph: fix compilation on MinGW-w64 GCC 4.9.1.

Previously (<= 4.9.0) it behaved similarly to MSVC 2013, but the issues
with missing inline functions of classes declared as extern template
appeared again. This way doesn't work with MSVC, so I need to maintain
two separate symbol exporting scenarios. Damn you, DLL hell.
pull/68/head
Vladimír Vondruš 12 years ago
parent
commit
0cdd722a1e
  1. 2
      src/Magnum/SceneGraph/AbstractCamera.h
  2. 2
      src/Magnum/SceneGraph/AbstractFeature.h
  3. 2
      src/Magnum/SceneGraph/AbstractObject.h
  4. 2
      src/Magnum/SceneGraph/AbstractTransformation.h
  5. 2
      src/Magnum/SceneGraph/Animable.h
  6. 2
      src/Magnum/SceneGraph/AnimableGroup.h
  7. 2
      src/Magnum/SceneGraph/Camera2D.h
  8. 2
      src/Magnum/SceneGraph/Camera3D.h
  9. 2
      src/Magnum/SceneGraph/Drawable.h
  10. 2
      src/Magnum/SceneGraph/DualComplexTransformation.h
  11. 2
      src/Magnum/SceneGraph/DualQuaternionTransformation.h
  12. 2
      src/Magnum/SceneGraph/FeatureGroup.h
  13. 2
      src/Magnum/SceneGraph/MatrixTransformation2D.h
  14. 2
      src/Magnum/SceneGraph/MatrixTransformation3D.h
  15. 2
      src/Magnum/SceneGraph/RigidMatrixTransformation2D.h
  16. 2
      src/Magnum/SceneGraph/RigidMatrixTransformation3D.h
  17. 2
      src/Magnum/SceneGraph/TranslationTransformation.h
  18. 5
      src/Magnum/SceneGraph/instantiation.cpp

2
src/Magnum/SceneGraph/AbstractCamera.h

@ -196,7 +196,7 @@ template<class T> using AbstractBasicCamera3D = AbstractCamera<3, T>;
*/
typedef AbstractBasicCamera3D<Float> AbstractCamera3D;
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractCamera<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractCamera<3, Float>;
#endif

2
src/Magnum/SceneGraph/AbstractFeature.h

@ -324,7 +324,7 @@ template<class T> using AbstractBasicFeature3D = AbstractFeature<3, T>;
*/
typedef AbstractBasicFeature3D<Float> AbstractFeature3D;
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeature<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeature<3, Float>;
#endif

2
src/Magnum/SceneGraph/AbstractObject.h

@ -303,7 +303,7 @@ typedef AbstractBasicObject3D<Float> AbstractObject3D;
typedef AbstractObject<3, Float> AbstractObject3D;
#endif
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractObject<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractObject<3, Float>;
#endif

2
src/Magnum/SceneGraph/AbstractTransformation.h

@ -130,7 +130,7 @@ template<class T> using AbstractBasicTransformation3D = AbstractTransformation<3
*/
typedef AbstractBasicTransformation3D<Float> AbstractTransformation3D;
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractTransformation<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractTransformation<3, Float>;
#endif

2
src/Magnum/SceneGraph/Animable.h

@ -368,7 +368,7 @@ template<class T> using BasicAnimable3D = Animable<3, T>;
*/
typedef BasicAnimable3D<Float> Animable3D;
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT Animable<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT Animable<3, Float>;
#endif

2
src/Magnum/SceneGraph/AnimableGroup.h

@ -104,7 +104,7 @@ template<class T> using BasicAnimableGroup3D = AnimableGroup<3, T>;
*/
typedef BasicAnimableGroup3D<Float> AnimableGroup3D;
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT AnimableGroup<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AnimableGroup<3, Float>;
#endif

2
src/Magnum/SceneGraph/Camera2D.h

@ -102,7 +102,7 @@ template<class T> class BasicCamera2D: public AbstractBasicCamera2D<T> {
*/
typedef BasicCamera2D<Float> Camera2D;
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT BasicCamera2D<Float>;
#endif

2
src/Magnum/SceneGraph/Camera3D.h

@ -138,7 +138,7 @@ template<class T> class BasicCamera3D: public AbstractBasicCamera3D<T> {
*/
typedef BasicCamera3D<Float> Camera3D;
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT BasicCamera3D<Float>;
#endif

2
src/Magnum/SceneGraph/Drawable.h

@ -241,7 +241,7 @@ template<class T> using BasicDrawableGroup3D = DrawableGroup<3, T>;
*/
typedef BasicDrawableGroup3D<Float> DrawableGroup3D;
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT Drawable<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT Drawable<3, Float>;
#endif

2
src/Magnum/SceneGraph/DualComplexTransformation.h

@ -185,7 +185,7 @@ template<class T> struct Transformation<BasicDualComplexTransformation<T>> {
}
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicDualComplexTransformation<Float>>;
#endif

2
src/Magnum/SceneGraph/DualQuaternionTransformation.h

@ -202,7 +202,7 @@ template<class T> struct Transformation<BasicDualQuaternionTransformation<T>> {
}
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicDualQuaternionTransformation<Float>>;
#endif

2
src/Magnum/SceneGraph/FeatureGroup.h

@ -173,7 +173,7 @@ template<UnsignedInt dimensions, class Feature, class T> FeatureGroup<dimensions
return *this;
}
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeatureGroup<2, Float>;
extern template class MAGNUM_SCENEGRAPH_EXPORT AbstractFeatureGroup<3, Float>;
#endif

2
src/Magnum/SceneGraph/MatrixTransformation2D.h

@ -170,7 +170,7 @@ template<class T> struct Transformation<BasicMatrixTransformation2D<T>> {
}
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicMatrixTransformation2D<Float>>;
#endif

2
src/Magnum/SceneGraph/MatrixTransformation3D.h

@ -217,7 +217,7 @@ template<class T> struct Transformation<BasicMatrixTransformation3D<T>> {
}
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicMatrixTransformation3D<Float>>;
#endif

2
src/Magnum/SceneGraph/RigidMatrixTransformation2D.h

@ -208,7 +208,7 @@ template<class T> struct Transformation<BasicRigidMatrixTransformation2D<T>> {
}
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicRigidMatrixTransformation2D<Float>>;
#endif

2
src/Magnum/SceneGraph/RigidMatrixTransformation3D.h

@ -261,7 +261,7 @@ template<class T> struct Transformation<BasicRigidMatrixTransformation3D<T>> {
}
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<BasicRigidMatrixTransformation3D<Float>>;
#endif

2
src/Magnum/SceneGraph/TranslationTransformation.h

@ -192,7 +192,7 @@ template<UnsignedInt dimensions, class T, class TranslationType> struct Transfor
}
#ifdef CORRADE_TARGET_WINDOWS
#if defined(CORRADE_TARGET_WINDOWS) && !defined(__MINGW32__)
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<TranslationTransformation<2, Float>>;
extern template class MAGNUM_SCENEGRAPH_EXPORT Object<TranslationTransformation<3, Float>>;
#endif

5
src/Magnum/SceneGraph/instantiation.cpp

@ -40,8 +40,9 @@
namespace Magnum { namespace SceneGraph {
/* On Windows the instantiations are already marked with extern template */
#ifndef CORRADE_TARGET_WINDOWS
/* On non-MinGW Windows the instantiations are already marked with extern
template */
#if !defined(CORRADE_TARGET_WINDOWS) || defined(__MINGW32__)
#define MAGNUM_SCENEGRAPH_EXPORT_HPP MAGNUM_SCENEGRAPH_EXPORT
#else
#define MAGNUM_SCENEGRAPH_EXPORT_HPP

Loading…
Cancel
Save