Skip to content

Dropping GCC 4.7 and CMake 2.8.12 support #274

@mosra

Description

@mosra

Even the old and venerable Ubuntu 14.04 (that's currently probably used only on Travis CI) has 4.8 as a default, so I think it's time to drop GCC 4.7. Moreover, Travis has 16.04 now, so it's time to drop CMake 2.8.12 as well.

Things to do:

  • check what version of GCC 4.8 has rvalue overloads for this (it was not 4.8.0, probably 4.8.1 ?)
    • check if we can use 4.9 or 5 (no we can't, CentOS is on 4.8.5)
    • make that version as minimal (update docs in all repos)
  • remove CORRADE_GCC47_COMPATIBILITY from everywhere and all related workarounds
  • update Travis configs to use 4.8 instead of 4.7 (i think they now default to some 5.3, newer than the one that's stock in Ubuntu 14.04)
  • verify we can drop CMake 2.8.12 (yes, 14.04 is too old to bother with)
    • check if we can use something newer than 3.0 (no, Debian 8 (Jessie) has 3.0.2) 3.1, 3.0 has a bug
    • make that version as minimal, suggest using prebuilt versions on ancient distros
  • remove CMake 2.8.12-specific workarounds in all repos
  • remove all CMake policies that get activated in 3.0 3.1 from everywhere (CMP0050 and below) (all of them)
  • 3.0 supports message(DEPRECATED), any use for that (except all the deprecated things from 2016 I'm now removing)? nope
  • there is a nasty regression in 3.0 breaking the build because Corrade::PluginManager dependency is not propagated upwards, probably need to bump to 3.1 because of that (and make Debian 8 unsupported) ... or is a workaround possible? maybe reverting https://cmake.org/cmake/help/v3.12/policy/CMP0028.html ? nope
    • 3.1 has 64bit prebuilt binaries, so I can clean up travis.yml
    • 3.1 has the CMP0054 property implicit (last one we actually use)
    • I could jump all the way to 3.5, since the next oldest supported version is 3.5.1 in 16.04 (Jessie backports have 3.6) nope, play it safe
      • 3.3 has CROSSCOMPILING_EMULATOR, could be used to avoid dependency on native Corrade for Emscripten (at least) ... which we could support right away because Emscripten needs 3.7 anyway completely orthogonal to this
      • 3.3 has also COMPILE_LANGUAGE generator expression, which could help with making CORRADE_PEDANTIC_FLAGS work correctly for C sources not important, also could have that version-specific
      • 3.5 has imported targets in FindPNG who cares
      • 3.5 shows deprecation warnings by default i don't have any
  • be happy because another annoyance got removed 🥃 ✨ 🍻 🎉
  • update bootstrap repos as well

This is postponed to after 2018.08 2018.10 to avoid breaking stuff too early. If anyone still needs 4.7, please let me know.

Metadata

Metadata

Assignees

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions