Build with GCC 13 fails with `rng.h:210:1: error: ‘uint64_t’ does not name a type` and other errors.
dreirund opened this issue · 1 comments
dreirund commented
(This seems at least partly to be a similar issue as SFTtech/nyan#101, where the fix was to add #include <cstdint>
)
When I want to build the latest git checkout of openage with gcc 13.1.1, it fails with
rng.h:21:30: error: expected ‘)’ before ‘seed’
,rng.h:54:19: error: ‘uint64_t’ has not been declared
,rng.h:69:9: error: ‘uint64_t’ does not name a type
,rng.h:92:30: error: ‘class openage::rng::RNG’ has no member named ‘random’
,rng.h:92:47: error: ‘max’ is not a member of ‘openage::rng::RNG’
,rng.cpp:63:9: error: ‘state’ was not declared in this scope; did you mean ‘_xstate’?
,rng.cpp:85:10: error: no declaration matches ‘uint64_t openage::rng::RNG::random()’
,rng.cpp:146:28: error: ‘const class openage::rng::RNG’ has no member named ‘state’
,- maybe others:
[...]
[ 71%] Building CXX object libopenage/CMakeFiles/libopenage.dir/renderer/vulkan/renderer.cpp.o
[ 71%] Building CXX object libopenage/CMakeFiles/libopenage.dir/renderer/vulkan/windowvk.cpp.o
/tmp/makepkg/build/openage-git/src/openage/libopenage/renderer/vulkan/loader.cpp: In member function ‘void openage::renderer::vulkan::VlkLoader::init(VkInstance)’:
/tmp/makepkg/build/openage-git/src/openage/libopenage/renderer/vulkan/loader.cpp:15:33: warning: unused parameter ‘instance’ [-Wunused-parameter]
15 | void VlkLoader::init(VkInstance instance) {
| ~~~~~~~~~~~^~~~~~~~
[ 71%] Building CXX object libopenage/CMakeFiles/libopenage.dir/rng/rng.cpp.o
In file included from /tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:3:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:21:30: error: expected ‘)’ before ‘seed’
21 | explicit RNG(uint64_t seed);
| ~ ^~~~~
| )
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:54:19: error: ‘uint64_t’ has not been declared
54 | void seed(uint64_t val);
| ^~~~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:69:9: error: ‘uint64_t’ does not name a type
69 | uint64_t random();
| ^~~~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:6:1: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
5 | #include <iostream>
+++ |+#include <cstdint>
6 | #include <string>
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:75:16: error: ‘uint64_t’ does not name a type
75 | inline uint64_t operator ()() {
| ^~~~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:75:16: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:83:16: error: ‘uint64_t’ does not name a type
83 | inline uint64_t random_range(uint64_t lower, uint64_t upper) {
| ^~~~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:83:16: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:118:19: error: ‘uint64_t’ has not been declared
118 | void fill(uint64_t *data, size_t len);
| ^~~~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:163:26: error: ‘uint64_t’ does not name a type
163 | static constexpr uint64_t max() {
| ^~~~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:163:26: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:168:26: error: ‘uint64_t’ does not name a type
168 | static constexpr uint64_t min() {
| ^~~~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:168:26: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:177:9: error: ‘uint64_t’ does not name a type
177 | uint64_t state[2]{};
| ^~~~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:177:9: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:177:28: warning: extra ‘;’ [-Wpedantic]
177 | uint64_t state[2]{};
| ^
| -
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h: In member function ‘bool openage::rng::RNG::probability(double)’:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:92:30: error: ‘class openage::rng::RNG’ has no member named ‘random’
92 | return this->random() < (RNG::max() * prob);
| ^~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:92:47: error: ‘max’ is not a member of ‘openage::rng::RNG’
92 | return this->random() < (RNG::max() * prob);
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h: In member function ‘double openage::rng::RNG::real()’:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:100:50: error: ‘class openage::rng::RNG’ has no member named ‘random’
100 | return static_cast<double>(this->random()) / RNG::max();
| ^~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:100:67: error: ‘max’ is not a member of ‘openage::rng::RNG’
100 | return static_cast<double>(this->random()) / RNG::max();
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h: At global scope:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:203:1: error: ‘uint64_t’ does not name a type
203 | uint64_t time_seed();
| ^~~~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:203:1: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:210:1: error: ‘uint64_t’ does not name a type
210 | uint64_t random_seed();
| ^~~~~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:210:1: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:30:1: error: no declaration matches ‘openage::rng::RNG::RNG(uint64_t)’
30 | RNG::RNG(uint64_t v1) {
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:15:7: note: candidates are: ‘constexpr openage::rng::RNG::RNG(openage::rng::RNG&&)’
15 | class RNG {
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:15:7: note: ‘constexpr openage::rng::RNG::RNG(const openage::rng::RNG&)’
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:48:18: note: ‘openage::rng::RNG::RNG(std::istream&)’
48 | explicit RNG(std::istream &instream);
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:39:18: note: ‘openage::rng::RNG::RNG(const std::string&)’
39 | explicit RNG(const std::string &instr);
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:29:9: note: ‘openage::rng::RNG::RNG(const void*, size_t)’
29 | RNG(const void *data, size_t count);
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:15:7: note: ‘class openage::rng::RNG’ defined here
15 | class RNG {
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:49:6: error: no declaration matches ‘void openage::rng::RNG::seed(uint64_t)’
49 | void RNG::seed(uint64_t val) {
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:63:14: note: candidates are: ‘void openage::rng::RNG::seed(const void*, size_t)’
63 | void seed(const void *data, size_t count);
| ^~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:54:14: note: ‘void openage::rng::RNG::seed(int)’
54 | void seed(uint64_t val);
| ^~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:15:7: note: ‘class openage::rng::RNG’ defined here
15 | class RNG {
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp: In member function ‘void openage::rng::RNG::seed(const void*, size_t)’:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:63:9: error: ‘state’ was not declared in this scope; did you mean ‘_xstate’?
63 | state[0] = siphash.digest(data, count);
| ^~~~~
| _xstate
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp: At global scope:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:85:10: error: no declaration matches ‘uint64_t openage::rng::RNG::random()’
85 | uint64_t RNG::random() {
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:85:10: note: no functions named ‘uint64_t openage::rng::RNG::random()’
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:15:7: note: ‘class openage::rng::RNG’ defined here
15 | class RNG {
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:116:6: error: no declaration matches ‘void openage::rng::RNG::fill(uint64_t*, size_t)’
116 | void RNG::fill(uint64_t *dat, size_t len) {
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:118:14: note: candidate is: ‘void openage::rng::RNG::fill(int*, size_t)’
118 | void fill(uint64_t *data, size_t len);
| ^~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.h:15:7: note: ‘class openage::rng::RNG’ defined here
15 | class RNG {
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp: In member function ‘void openage::rng::RNG::discard(size_t)’:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:128:32: error: ‘class openage::rng::RNG’ has no member named ‘state’
128 | nullptr, this->state, len,
| ^~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp: In member function ‘void openage::rng::RNG::fill_real(double*, size_t)’:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:136:28: error: ‘class openage::rng::RNG’ has no member named ‘state’
136 | dat, this->state, len,
| ^~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp: In lambda function:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:138:50: error: ‘max’ is not a member of ‘openage::rng::RNG’
138 | d[i] = v / (double) RNG::max();
| ^~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp: In member function ‘std::ostream& openage::rng::RNG::to_stream(std::ostream&) const’:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:145:27: error: ‘const class openage::rng::RNG’ has no member named ‘state’
145 | if ((out << this->state[0] << " ").good() &&
| ^~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:146:28: error: ‘const class openage::rng::RNG’ has no member named ‘state’
146 | !(out << this->state[1]).fail()) {
| ^~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp: In member function ‘std::istream& openage::rng::RNG::from_stream(std::istream&)’:
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:154:26: error: ‘class openage::rng::RNG’ has no member named ‘state’
154 | if ((in >> this->state[0]).good() &&
| ^~~~~
/tmp/makepkg/build/openage-git/src/openage/libopenage/rng/rng.cpp:155:27: error: ‘class openage::rng::RNG’ has no member named ‘state’
155 | !(in >> this->state[1]).fail()) {
| ^~~~~
make[2]: *** [libopenage/CMakeFiles/libopenage.dir/build.make:4402: libopenage/CMakeFiles/libopenage.dir/rng/rng.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:3420: libopenage/CMakeFiles/libopenage.dir/all] Error 2
make: *** [Makefile:166: all] Error 2
gcc --version | head -n1
: gcc (GCC) 13.1.1 20230429
on Artix GNU/Linux (rolling release).