Browse Source

Dropped GCC 4.7 support.

Interesting that many of the annoyances still apply to 4.8.
simd
Vladimír Vondruš 8 years ago
parent
commit
00b0a814e0
  1. 4
      doc/building.dox
  2. 5
      doc/changelog.dox
  3. 74
      package/archlinux/PKGBUILD-gcc47
  4. 6
      src/Magnum/DebugTools/CompareImage.cpp
  5. 2
      src/Magnum/GL/Context.cpp
  6. 4
      src/Magnum/GL/Test/AbstractShaderProgramTest.cpp
  7. 16
      src/Magnum/Image.h
  8. 2
      src/Magnum/Math/Frustum.h
  9. 3
      src/Magnum/Platform/gl-info.cpp
  10. 5
      src/Magnum/SceneGraph/TranslationRotationScalingTransformation2D.h
  11. 5
      src/Magnum/SceneGraph/TranslationRotationScalingTransformation3D.h
  12. 2
      src/Magnum/Text/Test/AbstractFontConverterTest.cpp
  13. 16
      src/Magnum/Trade/AnimationData.h
  14. 16
      src/Magnum/Trade/ImageData.h
  15. 4
      src/Magnum/Trade/MeshData2D.h
  16. 4
      src/Magnum/Trade/MeshData3D.h
  17. 4
      src/Magnum/Trade/MeshObjectData2D.h
  18. 4
      src/Magnum/Trade/MeshObjectData3D.h
  19. 4
      src/Magnum/Trade/ObjectData2D.h
  20. 4
      src/Magnum/Trade/ObjectData3D.h
  21. 4
      src/Magnum/Trade/SceneData.h
  22. 2
      src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp

4
doc/building.dox

@ -268,8 +268,8 @@ There are also Homebrew packages for @ref building-plugins-packages-brew "Magnum
Minimal set of tools and libraries required for building is:
- C++ compiler with good C++11 support. Compilers which are tested to have
everything needed are **GCC** >= 4.7, **Clang** >= 3.1 and **MSVC** >= 2015.
On Windows you can also use **MinGW-w64**.
everything needed are **GCC** >= 4.8.1, **Clang** >= 3.1 and **MSVC**
>= 2015. On Windows you can also use **MinGW-w64**.
- **CMake** >= 2.8.12
- **Corrade** --- Plugin management and utility library. See
@ref building-corrade "Corrade download and installation guide" for more

5
doc/changelog.dox

@ -38,6 +38,11 @@ See also:
@section changelog-latest Changes since 2018.10
@subsection changelog-latest-dependencies Dependency changes
- Minimal supported GCC version is now 4.8.1, GCC 4.7 is not supported
anymore.
@subsection changelog-latest-new New features
@subsubsection changelog-latest-new-animation Animation library

74
package/archlinux/PKGBUILD-gcc47

@ -1,74 +0,0 @@
# Author: mosra <mosra@centrum.cz>
pkgname=magnum
pkgver=dev.gcc47
pkgrel=1
pkgdesc="C++11/C++14 graphics middleware for games and data visualization (built with GCC 4.7)"
arch=('i686' 'x86_64')
url="https://magnum.graphics"
license=('MIT')
depends=('corrade' 'openal' 'freeglut' 'sdl2' 'glfw')
makedepends=('cmake' 'ninja' 'gcc47')
options=('!strip')
provides=('magnum-git')
_rootdir=$startdir/../../
build() {
# Disable flags unknown to GCC 4.7
newcxxflags=$(echo $CXXFLAGS | sed s/-fstack-protector-strong.//g)
export CXXFLAGS="$newcxxflags"
if [ ! -d "$_rootdir/build-gcc47" ] ; then
mkdir "$_rootdir/build-gcc47"
cd "$_rootdir/build-gcc47"
cmake .. \
-DCMAKE_CXX_COMPILER=g++-4.7 \
-G Ninja
fi
cd "$_rootdir/build-gcc47"
cmake .. \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=/usr \
-DWITH_AUDIO=ON \
-DWITH_SHAPES=ON \
-DWITH_GLFWAPPLICATION=ON \
-DWITH_GLUTAPPLICATION=ON \
-DWITH_GLXAPPLICATION=ON \
-DWITH_SDL2APPLICATION=ON \
-DWITH_XEGLAPPLICATION=ON \
-DWITH_WINDOWLESSGLXAPPLICATION=ON \
-DWITH_EGLCONTEXT=ON \
-DWITH_GLXCONTEXT=ON \
-DWITH_OPENGLTESTER=ON \
-DWITH_ANYAUDIOIMPORTER=ON \
-DWITH_ANYIMAGECONVERTER=ON \
-DWITH_ANYIMAGEIMPORTER=ON \
-DWITH_ANYSCENEIMPORTER=ON \
-DWITH_MAGNUMFONT=ON \
-DWITH_MAGNUMFONTCONVERTER=ON \
-DWITH_OBJIMPORTER=ON \
-DWITH_TGAIMAGECONVERTER=ON \
-DWITH_TGAIMPORTER=ON \
-DWITH_WAVAUDIOIMPORTER=ON \
-DWITH_DISTANCEFIELDCONVERTER=ON \
-DWITH_FONTCONVERTER=ON \
-DWITH_IMAGECONVERTER=ON \
-DWITH_GL_INFO=ON \
-DWITH_AL_INFO=ON \
-DBUILD_TESTS=ON \
-DBUILD_GL_TESTS=ON
ninja
}
check() {
cd "$_rootdir/build-gcc47"
CORRADE_TEST_COLOR=ON ctest --output-on-failure -j5
}
package() {
cd "$_rootdir/build-gcc47"
DESTDIR="$pkgdir/" ninja install
}

6
src/Magnum/DebugTools/CompareImage.cpp

@ -375,10 +375,8 @@ void printPixelDeltas(Debug& out, const std::vector<Float>& delta, const ImageVi
/* Find first maxCount values above mean threshold and put them into a
sorted map */
std::multimap<Float, std::size_t> large;
for(std::size_t i = 0; i != delta.size(); ++i) {
/* GCC 4.7 std::multimap doesn't have emplace() */
if(delta[i] > meanThreshold) large.insert({delta[i], i});
}
for(std::size_t i = 0; i != delta.size(); ++i)
if(delta[i] > meanThreshold) large.emplace(delta[i], i);
CORRADE_INTERNAL_ASSERT(!large.empty());

2
src/Magnum/GL/Context.cpp

@ -433,7 +433,7 @@ const std::vector<Extension>& Extension::extensions(Version version) {
namespace {
#ifdef MAGNUM_BUILD_MULTITHREADED
#if !defined(CORRADE_GCC47_COMPATIBILITY) && !defined(CORRADE_TARGET_APPLE)
#ifndef CORRADE_TARGET_APPLE
thread_local
#else
__thread

4
src/Magnum/GL/Test/AbstractShaderProgramTest.cpp

@ -44,11 +44,7 @@ AbstractShaderProgramTest::AbstractShaderProgramTest() {
void AbstractShaderProgramTest::constructNoCreate() {
{
struct Shader: AbstractShaderProgram {
#ifndef CORRADE_GCC47_COMPATIBILITY
using AbstractShaderProgram::AbstractShaderProgram;
#else
explicit Shader(NoCreateT) noexcept: AbstractShaderProgram{NoCreate} {}
#endif
} shader{NoCreate};
CORRADE_COMPARE(shader.id(), 0);

16
src/Magnum/Image.h

@ -334,24 +334,12 @@ template<UnsignedInt dimensions> class Image {
*
* @see @ref release()
*/
Containers::ArrayView<char> data()
#ifndef CORRADE_GCC47_COMPATIBILITY
&
#endif
{ return _data; }
#ifndef CORRADE_GCC47_COMPATIBILITY
Containers::ArrayView<char> data() & { return _data; }
Containers::ArrayView<char> data() && = delete; /**< @overload */
#endif
/** @overload */
Containers::ArrayView<const char> data() const
#ifndef CORRADE_GCC47_COMPATIBILITY
&
#endif
{ return _data; }
#ifndef CORRADE_GCC47_COMPATIBILITY
Containers::ArrayView<const char> data() const & { return _data; }
Containers::ArrayView<const char> data() const && = delete; /**< @overload */
#endif
/** @overload */
template<class T = char> T* data() {

2
src/Magnum/Math/Frustum.h

@ -116,7 +116,7 @@ template<class T> class Frustum {
/** @brief Frustum planes */
constexpr Corrade::Containers::StaticArrayView<6, const Vector4<T>> planes() const {
/* GCC 4.7 needs explicit construction */
/* GCC 4.8 needs explicit construction */
return Corrade::Containers::StaticArrayView<6, const Vector4<T>>{_data};
}

3
src/Magnum/Platform/gl-info.cpp

@ -231,9 +231,6 @@ MagnumInfo::MagnumInfo(const Arguments& arguments): Platform::WindowlessApplicat
#error no windowless application available on this platform
#endif
Debug() << "Compilation flags:";
#ifdef CORRADE_GCC47_COMPATIBILITY
Debug() << " CORRADE_GCC47_COMPATIBILITY";
#endif
#ifdef CORRADE_BUILD_DEPRECATED
Debug() << " CORRADE_BUILD_DEPRECATED";
#endif

5
src/Magnum/SceneGraph/TranslationRotationScalingTransformation2D.h

@ -224,8 +224,9 @@ template<class T> class BasicTranslationRotationScalingTransformation2D: public
Math::Vector2<T> _translation;
Math::Complex<T> _rotation;
/* Can't {} on GCC 4.7, _scaling(T(1)) fails on the most vexing parse
(what the ... eh???) */
/* Can't {} on GCC 4.8 because it complains about the constructor being
explicit, _scaling(T(1)) fails on the most vexing parse (what the
... eh???) */
Math::Vector2<T> _scaling = Math::Vector2<T>(T(1));
};

5
src/Magnum/SceneGraph/TranslationRotationScalingTransformation3D.h

@ -314,8 +314,9 @@ template<class T> class BasicTranslationRotationScalingTransformation3D: public
Math::Vector3<T> _translation;
Math::Quaternion<T> _rotation;
/* Can't {} on GCC 4.7, _scaling(T(1)) fails on the most vexing parse
(what the ... eh???) */
/* Can't {} on GCC 4.8 because it complains about the constructor being
explicit, _scaling(T(1)) fails on the most vexing parse (what the
... eh???) */
Math::Vector3<T> _scaling = Math::Vector3<T>(T(1));
};

2
src/Magnum/Text/Test/AbstractFontConverterTest.cpp

@ -77,7 +77,7 @@ namespace {
void AbstractFontConverterTest::convertGlyphs() {
class GlyphExporter: public AbstractFontConverter {
public:
/* GCC 4.7 apparently can't handle {} here */
/* GCC 4.8 apparently can't handle {} here */
GlyphExporter(std::u32string& characters): _characters(characters) {}
private:

16
src/Magnum/Trade/AnimationData.h

@ -328,24 +328,12 @@ class MAGNUM_TRADE_EXPORT AnimationData {
* Contains data for all tracks contained in this clip.
* @see @ref release()
*/
Containers::ArrayView<char> data()
#ifndef CORRADE_GCC47_COMPATIBILITY
&
#endif
{ return _data; }
#ifndef CORRADE_GCC47_COMPATIBILITY
Containers::ArrayView<char> data() & { return _data; }
Containers::ArrayView<char> data() && = delete; /**< @overload */
#endif
/** @overload */
Containers::ArrayView<const char> data() const
#ifndef CORRADE_GCC47_COMPATIBILITY
&
#endif
{ return _data; }
#ifndef CORRADE_GCC47_COMPATIBILITY
Containers::ArrayView<const char> data() const & { return _data; }
Containers::ArrayView<const char> data() const && = delete; /**< @overload */
#endif
/** @brief Duration */
Range1D duration() const { return _duration; }

16
src/Magnum/Trade/ImageData.h

@ -357,24 +357,12 @@ template<UnsignedInt dimensions> class ImageData {
*
* @see @ref release()
*/
Containers::ArrayView<char> data()
#ifndef CORRADE_GCC47_COMPATIBILITY
&
#endif
{ return _data; }
#ifndef CORRADE_GCC47_COMPATIBILITY
Containers::ArrayView<char> data() & { return _data; }
Containers::ArrayView<char> data() && = delete; /**< @overload */
#endif
/** @overload */
Containers::ArrayView<const char> data() const
#ifndef CORRADE_GCC47_COMPATIBILITY
&
#endif
{ return _data; }
#ifndef CORRADE_GCC47_COMPATIBILITY
Containers::ArrayView<const char> data() const & { return _data; }
Containers::ArrayView<const char> data() const && = delete; /**< @overload */
#endif
/** @overload */
template<class T> T* data() {

4
src/Magnum/Trade/MeshData2D.h

@ -81,7 +81,7 @@ class MAGNUM_TRADE_EXPORT MeshData2D {
/** @brief Move constructor */
MeshData2D(MeshData2D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept
@ -96,7 +96,7 @@ class MAGNUM_TRADE_EXPORT MeshData2D {
/** @brief Move assignment */
MeshData2D& operator=(MeshData2D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept

4
src/Magnum/Trade/MeshData3D.h

@ -82,7 +82,7 @@ class MAGNUM_TRADE_EXPORT MeshData3D {
/** @brief Move constructor */
MeshData3D(MeshData3D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept
@ -97,7 +97,7 @@ class MAGNUM_TRADE_EXPORT MeshData3D {
/** @brief Move assignment */
MeshData3D& operator=(MeshData3D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept

4
src/Magnum/Trade/MeshObjectData2D.h

@ -73,7 +73,7 @@ class MAGNUM_TRADE_EXPORT MeshObjectData2D: public ObjectData2D {
/** @brief Move constructor */
MeshObjectData2D(MeshObjectData2D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept
@ -86,7 +86,7 @@ class MAGNUM_TRADE_EXPORT MeshObjectData2D: public ObjectData2D {
/** @brief Move assignment */
MeshObjectData2D& operator=(MeshObjectData2D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept

4
src/Magnum/Trade/MeshObjectData3D.h

@ -73,7 +73,7 @@ class MAGNUM_TRADE_EXPORT MeshObjectData3D: public ObjectData3D {
/** @brief Move constructor */
MeshObjectData3D(MeshObjectData3D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept
@ -86,7 +86,7 @@ class MAGNUM_TRADE_EXPORT MeshObjectData3D: public ObjectData3D {
/** @brief Move assignment */
MeshObjectData3D& operator=(MeshObjectData3D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept

4
src/Magnum/Trade/ObjectData2D.h

@ -135,7 +135,7 @@ class MAGNUM_TRADE_EXPORT ObjectData2D {
/** @brief Move constructor */
ObjectData2D(ObjectData2D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept
@ -151,7 +151,7 @@ class MAGNUM_TRADE_EXPORT ObjectData2D {
/** @brief Move assignment */
ObjectData2D& operator=(ObjectData2D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept

4
src/Magnum/Trade/ObjectData3D.h

@ -136,7 +136,7 @@ class MAGNUM_TRADE_EXPORT ObjectData3D {
/** @brief Move constructor */
ObjectData3D(ObjectData3D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept
@ -152,7 +152,7 @@ class MAGNUM_TRADE_EXPORT ObjectData3D {
/** @brief Move assignment */
ObjectData3D& operator=(ObjectData3D&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept

4
src/Magnum/Trade/SceneData.h

@ -58,7 +58,7 @@ class MAGNUM_TRADE_EXPORT SceneData {
/** @brief Move constructor */
SceneData(SceneData&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept
@ -71,7 +71,7 @@ class MAGNUM_TRADE_EXPORT SceneData {
/** @brief Move assignment */
SceneData& operator=(SceneData&&)
/* GCC 4.9.0 (the one from Android NDK) thinks this does not match
the implicit signature so it can't be defaulted. Works on 4.7,
the implicit signature so it can't be defaulted. Works on 4.8,
5.0 and everywhere else, so I don't bother. */
#if !defined(__GNUC__) || __GNUC__*100 + __GNUC_MINOR__ != 409
noexcept

2
src/MagnumPlugins/AnyImageImporter/Test/AnyImageImporterTest.cpp

@ -150,7 +150,7 @@ void AnyImageImporterTest::detect() {
std::ostringstream out;
Error redirectError{&out};
CORRADE_VERIFY(!importer->openFile(Utility::Directory::join(TEST_FILE_DIR, data.filename)));
/* Can't use raw string literals in macros on GCC 4.7 */
/* Can't use raw string literals in macros on GCC 4.8 */
#ifndef CORRADE_PLUGINMANAGER_NO_DYNAMIC_PLUGIN_SUPPORT
CORRADE_COMPARE(out.str(), Utility::formatString(
"PluginManager::Manager::load(): plugin {0} is not static and was not found in nonexistent\nTrade::AnyImageImporter::{1}(): cannot load {0} plugin\n", data.plugin, data.callback ? "openData" : "openFile"));

Loading…
Cancel
Save