Difference between revisions of "Compiling ScummVM/C++11 Readiness"
Jump to navigation
Jump to search
(→Results: Mention somewhere that the OSX PPC port is being upgraded from GCC 4.8.5 to GCC 7.5.0) |
|||
(22 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
== How to test == | == How to test == | ||
Run <code>./configure | Run <code>./configure --enable-test-c++11</code>. | ||
This option enables the inclusion of file <code>base/test_new_standards.cpp</code> where we have tests for the desired important C++11 standard features (thanks to ZvikaZ). | |||
== Results == | == Results == | ||
{| width=75% class="wikitable sortable" style="font-size: smaller;" | {| width=75% class="wikitable sortable" style="font-size: smaller;" | ||
|- | |- | ||
!Platform!!Class Enum!!Final Class!!Final Function!!Variadic!!Type Aliases!!Init Lists1!!Init Lists 2!!Ranged loops!!Lambdas!!Space in nested templates!!Alt functions syntax!!Static Init!!Explicit Conversion!!Move Semantics!!Deleted Functions | !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!!Unicode string literal | ||
|- | |||
|3DS gcc 10.1.0 (arm) <ref name=dockerized-bb>tested using latest toolchain and using [https://github.com/lephilousophe/dockerized-bb/ dockerized-bb]. Buildbot still uses an old toolchain, which was not tested.</ref>||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| - | |||
|- | |||
|AmigaOS gcc 8.3.0 <ref>--enable-c++11 breaks compilation in base/commandLine.cpp</ref>||{{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) <ref name=dockerized-bb />||{{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}}<ref name=InitListReplacement>It only works with the std::initializer_list replacement.</ref>||{{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 gcc 4.8.5 (MacPorts gcc48 4.8.5_6) (PPC, 10.4) <ref>This is the current (October 2022) default for OS X PPC, since this version is known to be very stable on that platform. GCC 7.5 is also an option if we need it (and ScummVM >= 2.9.x will likely be built with this release), but bootstrapping it is a bit less reliable.</ref>||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| {{yes}} | |||
|- | |||
|macOS gcc 7.5.0 (MacPorts gcc7 7.5.0_2) (PPC, 10.4)||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| {{yes}} | |||
|- | |||
|macOS clang 6.0 (i386, 10.6)||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}<ref name=InitListReplacement></ref>||{{yes}}||{{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}}|| {{yes}} | |||
|- | |||
|macOS clang 11.0||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| {{yes}} | |||
|- | |||
|Mingw-w64/MXE (x86_64) release toolchain||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| - | |||
|- | |||
|Mingw-w64/MXE (i686) release toolchain||{{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}}|| - | |||
|- | |- | ||
| | |Mingw Classic (i586) gcc 9.2.0||{{yes}}||{{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 <ref name=dockerized-bb />||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| - | ||
|- | |- | ||
| | |PSP gcc 9.3.0 (mips) <ref name=dockerized-bb />||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| - | ||
|- | |- | ||
| | |RISC OS gcc 4.7.4||{{yes}}||{{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) <ref>10.1.0 was tested locally using latest toolchain. Buildbot still uses 8.6.0-based toolchain, which was not tested.</ref>||{{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) <ref name=dockerized-bb />||{{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) <ref name=dockerized-bb /><ref>10.1.0 is currently broken due to __dso_handle being not available. Bug is being processed</ref>||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| - | ||
|} | |} | ||
==Notes== | ==Notes== | ||
<references /> | <references /> |
Latest revision as of 12:31, 17 June 2024
How to test
Run ./configure --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 | Unicode string literal |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 gcc 4.8.5 (MacPorts gcc48 4.8.5_6) (PPC, 10.4) [4] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
macOS gcc 7.5.0 (MacPorts gcc7 7.5.0_2) (PPC, 10.4) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
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 | 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 | Yes |
macOS clang 11.0 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Mingw-w64/MXE (x86_64) release toolchain | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - |
Mingw-w64/MXE (i686) release toolchain | 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 | - |
Mingw Classic (i586) gcc 9.2.0 | Yes | 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 | - |
RISC OS gcc 4.7.4 | Yes | 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) [5] | 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][6] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | - |
Notes
- ↑ 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.
- ↑ --enable-c++11 breaks compilation in base/commandLine.cpp
- ↑ 3.0 3.1 It only works with the std::initializer_list replacement.
- ↑ This is the current (October 2022) default for OS X PPC, since this version is known to be very stable on that platform. GCC 7.5 is also an option if we need it (and ScummVM >= 2.9.x will likely be built with this release), but bootstrapping it is a bit less reliable.
- ↑ 10.1.0 was tested locally using latest toolchain. Buildbot still uses 8.6.0-based toolchain, which was not tested.
- ↑ 10.1.0 is currently broken due to __dso_handle being not available. Bug is being processed