Difference between revisions of "Compiling ScummVM/C++11 Readiness"

From ScummVM :: Wiki
Jump to navigation Jump to search
(Add devkitPPC (Wii and Gamecube))
(Add PS3 and fix entry for AmigaOS)
Line 8: Line 8:
!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!!Ranged loops!!Lambdas!!Space in nested templates!!Alt functions syntax!!Static Init!!Explicit Conversion!!Move Semantics!!Deleted Functions
|-
|-
|3DS gcc 9.1.0 (arm) <ref>tested using latest toolchain and using dockerized-bb. Buildbot still uses an old toolchain, which was not tested.</ref><ref>--enable-c++11 breaks compilation in backends/midi/timidity.cpp with 'usleep' was not declared in this scope.</ref>||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}
|3DS gcc 9.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><ref>--enable-c++11 breaks compilation in backends/midi/timidity.cpp with 'usleep' was not declared in this scope.</ref>||{{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}}
|-
|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}}
|-
|-
|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}}
|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}}
Line 30: Line 31:
|-
|-
|Mingw-w64 clang 10.0.0 (x86_64)||{{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}}
|-
|PS3 gcc 7.2.0 <ref name=dockerized-bb /><ref>--enable-c++11 breaks compilation in base/commandLine.cpp and PS3 SDK</ref>||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}
|-
|-
|PSP gcc 4.9.3 (mips) <ref>--enable-c++11 breaks compilation in backends/platform/psp/default_display_client.cpp with error 'bzero' was not declared in this scope. C++11 support is not enabled by default. Compiler fails in default_display_client.cpp before reaching the c++11 test file.</ref>||?||?||?||?||?||?||?||?||?||?||?||?||?||?||?
|PSP gcc 4.9.3 (mips) <ref>--enable-c++11 breaks compilation in backends/platform/psp/default_display_client.cpp with error 'bzero' was not declared in this scope. C++11 support is not enabled by default. Compiler fails in default_display_client.cpp before reaching the c++11 test file.</ref>||?||?||?||?||?||?||?||?||?||?||?||?||?||?||?
Line 43: Line 46:
|Visual Studio 2019 v142||{{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}}
|-
|-
|Wii/GameCube gcc 8.3.0 (PPC) <ref>tested using latest toolchain and using dockerized-bb. Buildbot still uses an old toolchain, which was not tested.</ref><ref>--enable-c++11 breaks compilation in multiple places with 'usleep' was not declared in this scope.</ref>||{{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 /><ref>--enable-c++11 breaks compilation in multiple places with 'usleep' was not declared in this scope.</ref>||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}
|}
|}


==Notes==
==Notes==
<references />
<references />

Revision as of 11:41, 30 May 2020

How to test

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

Results

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
3DS gcc 9.1.0 (arm) [1][2] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
AmigaOS gcc 8.3.0 [3] 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
Debian Buster gcc 8.3.0 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[4] 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
macOS gcc 4.0.1 (PPC, 10.4) 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[4] 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
macOS clang 11.0 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
Mingw-w64 clang 10.0.0 (x86_64) Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
PS3 gcc 7.2.0 [1][5] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
PSP gcc 4.9.3 (mips) [6] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Switch gcc 10.1.0 (arm_64) [7][8] Yes Yes Yes Yes Yes - Yes Yes Yes Yes Yes Yes Yes Yes Yes
Vita (psp2) gcc 9.1.0 (arm_32) [9] 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
Visual Studio 2017 v141 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
Wii/GameCube gcc 8.3.0 (PPC) [1][10] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes

Notes

  1. 1.0 1.1 1.2 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 backends/midi/timidity.cpp with 'usleep' was not declared in this scope.
  3. --enable-c++11 breaks compilation in base/commandLine.cpp
  4. 4.0 4.1 It only works with the std::initializer_list replacement.
  5. --enable-c++11 breaks compilation in base/commandLine.cpp and PS3 SDK
  6. --enable-c++11 breaks compilation in backends/platform/psp/default_display_client.cpp with error 'bzero' was not declared in this scope. C++11 support is not enabled by default. Compiler fails in default_display_client.cpp before reaching the c++11 test file.
  7. 10.1.0 was tested locally using latest toolchain. Buildbot still uses 8.6.0-based toolchain, which was not tested.
  8. --enable-c++11 breaks compilation in backends/midi/timidity.cpp with multiple errors: 'u_char' was not declared in this scope, 'seqbuf' was not declared in this scope, 'usleep' was not declared in this scope. C++11 support is enabled by default, though, so the flag is not needed.
  9. --enable-c++11 breaks compilation in backends/fs/posix/posix-iostream.cpp with error 'fileno' was not declared in this scope. C++11 support is enabled by default, though, so the flag is not needed.
  10. --enable-c++11 breaks compilation in multiple places with 'usleep' was not declared in this scope.