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

From ScummVM :: Wiki
Jump to navigation Jump to search
(→‎Results: Remove Init List1 test for AmigaOS (I very much doubt it was tested))
(Use references for all the notes)
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
|-
|-
|AmigaOS gcc 8.3.0 (1)||{{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}}
|-
|-
|iOS3 clang 3.7.1 (6)||{{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>It only works with the std::initializer_list replacement.</ref> ||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}
|-
|-
|macOS gcc 4.0.1 (PPC)||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}|| {{no}} ||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}
|macOS gcc 4.0.1 (PPC)||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}|| {{no}} ||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}||{{no}}
Line 24: Line 24:
|Mingw-w64 clang 10.0.0 (x86_64)||{{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}}
|-
|-
|PSP gcc 4.9.3 (mips) (2)||?||?||?||?||?||?||?||?||?||?||?||?||?||?||?
|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>||?||?||?||?||?||?||?||?||?||?||?||?||?||?||?
|-
|-
|Switch gcc 10.1.0 (arm_64) (3)(4)||{{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><ref>--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.</ref>||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| - ||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}
|-
|-
|Vita (psp2) gcc 9.1.0 (arm_32) (5)||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| - ||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}
|Vita (psp2) gcc 9.1.0 (arm_32) <ref>--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.</ref>||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| - ||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}
|-
|-
|Visual Studio 2019||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| - ||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}
|Visual Studio 2019||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}|| - ||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}||{{yes}}
Line 35: Line 35:
==Notes==
==Notes==
<references />
<references />
(1) --enable-c++11 breaks compilation in base/commandLine.cpp
(2) --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.
(3) 10.1.0 was tested locally using latest toolchain. Buildbot still uses 8.6.0-based toolchain, which was not tested.
(4) --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.
(5) --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.
(6) Missing <initializer_list>, seems to work with the replacement

Revision as of 19:05, 29 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
AmigaOS gcc 8.3.0 [1] 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[2] Yes Yes Yes Yes Yes Yes Yes Yes Yes
macOS gcc 4.0.1 (PPC) No No No No No No No No No No No No No No No
macOS clang 6.0 (i386) Yes Yes Yes Yes Yes Yes[3] Yes Yes Yes Yes Yes Yes Yes Yes Yes
macOS clang 9.0 (x86_64) 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
Mingw-w64 clang 10.0.0 (x86_64) Yes Yes Yes Yes Yes - Yes Yes Yes Yes Yes Yes Yes Yes Yes
PSP gcc 4.9.3 (mips) [4] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Switch gcc 10.1.0 (arm_64) [5][6] Yes Yes Yes Yes Yes - Yes Yes Yes Yes Yes Yes Yes Yes Yes
Vita (psp2) gcc 9.1.0 (arm_32) [7] Yes Yes Yes Yes Yes - Yes Yes Yes Yes Yes Yes Yes Yes Yes
Visual Studio 2019 Yes Yes Yes Yes Yes - Yes Yes Yes Yes Yes Yes Yes Yes Yes

Notes

  1. --enable-c++11 breaks compilation in base/commandLine.cpp
  2. It only works with the std::initializer_list replacement.
  3. It only works with the std::initializer_list replacement.
  4. --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.
  5. 10.1.0 was tested locally using latest toolchain. Buildbot still uses 8.6.0-based toolchain, which was not tested.
  6. --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.
  7. --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.