Open main menu

Compiling ScummVM/C++11 Readiness

< Compiling ScummVM
Revision as of 13:01, 30 August 2020 by Sev (talk | contribs) (describe the option effect)

How to test

Run ./configure --enable-c++11 --enable-test-c++11.

This option enables the inclusion of file base/test_new_standards.cpp where we have tests for the desired important C++11 standard features (thanks to ZvikaZ).

Results

Platform Class Enum Final Class Final Function Variadic Type Aliases Init Lists1 Init Lists 2 Auto type Ranged loops Lambdas Variadic Templates Space in nested templates Type aliases Alt functions syntax Non Static Init Explicit Conversion Move Semantics Deleted Functions
3DS gcc 10.1.0 (arm) [1] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
AmigaOS gcc 8.3.0 [2] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Android NDK 21.0.6113669 (clang 9.0.8) all platforms Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Debian Buster gcc 8.3.0 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Dreamcast gcc 4.6.3 Yes No No Yes No Yes Yes Yes No Yes Yes Yes Yes Yes No Yes Yes Yes
Dreamcast gcc 4.9.4 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
DS gcc 10.1.0 (arm) [1] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
iOS3 clang 3.7.1 Yes Yes Yes Yes Yes Yes[3] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
iOS7 clang 9.0 (iOS 8.0) Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
macOS gcc 4.0.1 (PPC, 10.4) No No No No No No No No No No No No No No No No No No
macOS clang 6.0 (i386, 10.6) Yes Yes Yes Yes Yes Yes[3] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
macOS clang 9.0 (x86_64, 10.7) Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
macOS clang 11.0 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Mingw-w64 gcc 10.1.0 (x86_64) Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Mingw-w64 clang 10.0.0 (x86_64) Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
PS2 gcc 3.2.3 No No No No No No No No No No No No No No No No No No
PS3 gcc 7.2.0 [1] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
PSP gcc 9.3.0 (mips) [1] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Switch gcc 10.1.0 (arm_64) [4] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Vita (psp2) gcc 9.1.0 (arm_32) Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Visual Studio 2015 v140 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Visual Studio 2017 v141 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Visual Studio 2019 v142 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Wii/GameCube gcc 8.3.0 (PPC) [1] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Wii/GameCube gcc 10.1.0 (PPC) [1][5] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes

Notes

  1. 1.0 1.1 1.2 1.3 1.4 1.5 tested using latest toolchain and using dockerized-bb. Buildbot still uses an old toolchain, which was not tested.
  2. --enable-c++11 breaks compilation in base/commandLine.cpp
  3. 3.0 3.1 It only works with the std::initializer_list replacement.
  4. 10.1.0 was tested locally using latest toolchain. Buildbot still uses 8.6.0-based toolchain, which was not tested.
  5. 10.1.0 is currently broken due to __dso_handle being not available. Bug is being processed