-
Content count
155 -
Joined
-
Last visited
-
Build fails in exactly the same way. It's not a source-level problem, it's a build script-level problem. I'll have a go at tweaking CMakeLists.txt. EDIT: OK. Got it to link and produce a working Eternity binary: diff --git a/CMakeLists.txt b/CMakeLists.txt index 86f73cfa..5050cb28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -157,6 +157,7 @@ endif() ######################### Compiler: Features ################################## if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") TRY_CXX_COMPILER_FLAG(-std=c++17 FLAG_CXX_stdcxx17) + find_library(FILESYSTEM_LIBRARY libstdc++fs.a PATHS /usr/lib/gcc/x86_64-linux-gnu/8 ) endif() diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index bd7d71ee..94c1671a 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -127,6 +127,10 @@ if(MSVC) endif() endif() +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) + target_link_libraries(eternity ${FILESYSTEM_LIBRARY}) +endif() + if(CMAKE_SYSTEM_NAME STREQUAL "Windows") target_link_libraries(eternity version) endif() When I don't have inflamed sinuses, I'll have a look at writing the find_library line properly.
-
I suspect the position is "the compiler is compliant, the standard library isn't yet".
-
Classic Doomguy can run indefinitely at over 40 mph and carries a pistol, two shotguns, a rotary machine gun, a ridiculously fast-firing rocket launcher, two directed energy weapons (one of which is called the "BFG 9000" for good reason), and a buttload of ammo for aforesaid weapons. Oh, and a chainsaw. This must be some new meaning of the words 'ordinary human' of which I was not previously aware :D
-
And we have a maintainer response: "these are features marked as experimental, and you need to link with libstdc++fs.a."
-
Bug 932546 on the BTS: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=932546
-
... Huh. Clang 7 explodes in exactly the same way on my test case. I'll raise it in the Debian BTS, since it's obvious that something is busted in buster.
-
After a bit of a poke around... whatever's blowing up is definitely a problem at my end or Debian's. I wrote a simple test case invoking std::filesystem::directory_iterator and that doesn't work either. Sorry for the noise.
-
I'll double down on that, with "System Shock 2 is overrated, too" :)
-
Eternity currently seems to not build on Debian 10 (buster - the current, and very recently released, stable). Everything compiles, but it blows up at link time: [ 20%] Linking CXX executable eternity /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `D_CheckBasePath(qstring const&)': d_files.cpp:(.text+0x12de): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: d_files.cpp:(.text+0x141e): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `D_CheckUserPath(qstring const&)': d_files.cpp:(.text+0x1a8a): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: d_files.cpp:(.text+0x1baa): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `D_GameAutoloadWads()': d_files.cpp:(.text+0x280b): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: d_files.cpp:(.text+0x2955): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `D_GameAutoloadDEH()': d_files.cpp:(.text+0x2b17): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: d_files.cpp:(.text+0x2cd1): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `D_GameAutoloadCSC()': d_files.cpp:(.text+0x2ec9): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: d_files.cpp:(.text+0x2ffe): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `std::filesystem::__cxx11::path::path(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::filesystem::__cxx11::path::format)': d_files.cpp:(.text._ZNSt10filesystem7__cxx114pathC2EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_6formatE[_ZNSt10filesystem7__cxx114pathC5EONSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS1_6formatE]+0x4f): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `std::filesystem::__cxx11::path::clear()': d_files.cpp:(.text._ZNSt10filesystem7__cxx114path5clearEv[_ZNSt10filesystem7__cxx114path5clearEv]+0x20): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `std::filesystem::__cxx11::operator==(std::filesystem::__cxx11::path const&, std::filesystem::__cxx11::path const&)': d_files.cpp:(.text._ZNSt10filesystem7__cxx11eqERKNS0_4pathES3_[_ZNSt10filesystem7__cxx11eqERKNS0_4pathES3_]+0x1f): undefined reference to `std::filesystem::__cxx11::path::compare(std::filesystem::__cxx11::path const&) const' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `std::filesystem::__cxx11::path::extension() const': d_files.cpp:(.text._ZNKSt10filesystem7__cxx114path9extensionEv[_ZNKSt10filesystem7__cxx114path9extensionEv]+0x19): undefined reference to `std::filesystem::__cxx11::path::_M_find_extension() const' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `std::filesystem::__cxx11::directory_entry::status() const': d_files.cpp:(.text._ZNKSt10filesystem7__cxx1115directory_entry6statusEv[_ZNKSt10filesystem7__cxx1115directory_entry6statusEv]+0x14): undefined reference to `std::filesystem::status(std::filesystem::__cxx11::path const&)' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `std::filesystem::__cxx11::directory_entry::symlink_status() const': d_files.cpp:(.text._ZNKSt10filesystem7__cxx1115directory_entry14symlink_statusEv[_ZNKSt10filesystem7__cxx1115directory_entry14symlink_statusEv]+0x14): undefined reference to `std::filesystem::symlink_status(std::filesystem::__cxx11::path const&)' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&)': d_files.cpp:(.text._ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathE[_ZNSt10filesystem7__cxx1118directory_iteratorC5ERKNS0_4pathE]+0x26): undefined reference to `std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&, std::filesystem::directory_options, std::error_code*)' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `std::filesystem::__cxx11::path::path<char const*, std::filesystem::__cxx11::path>(char const* const&, std::filesystem::__cxx11::path::format)': d_files.cpp:(.text._ZNSt10filesystem7__cxx114pathC2IPKcS1_EERKT_NS1_6formatE[_ZNSt10filesystem7__cxx114pathC5IPKcS1_EERKT_NS1_6formatE]+0x64): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' /usr/bin/ld: CMakeFiles/eternity.dir/d_files.cpp.o: in function `std::filesystem::__cxx11::path::path<char [5], std::filesystem::__cxx11::path>(char const (&) [5], std::filesystem::__cxx11::path::format)': d_files.cpp:(.text._ZNSt10filesystem7__cxx114pathC2IA5_cS1_EERKT_NS1_6formatE[_ZNSt10filesystem7__cxx114pathC5IA5_cS1_EERKT_NS1_6formatE]+0x5e): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' /usr/bin/ld: CMakeFiles/eternity.dir/d_findiwads.cpp.o: in function `D_addSubDirectories(Collection<qstring>&, char const*)': d_findiwads.cpp:(.text+0x272): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: d_findiwads.cpp:(.text+0x3cf): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/d_findiwads.cpp.o: in function `D_checkPathForIWADs(qstring const&)': d_findiwads.cpp:(.text+0xcca): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: d_findiwads.cpp:(.text+0xe7d): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/d_findiwads.cpp.o: in function `D_checkForNoRest()': d_findiwads.cpp:(.text+0x11b1): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: d_findiwads.cpp:(.text+0x130e): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/d_findiwads.cpp.o: in function `std::filesystem::is_directory(std::filesystem::__cxx11::path const&, std::error_code&)': d_findiwads.cpp:(.text._ZNSt10filesystem12is_directoryERKNS_7__cxx114pathERSt10error_code[_ZNSt10filesystem12is_directoryERKNS_7__cxx114pathERSt10error_code]+0x1f): undefined reference to `std::filesystem::status(std::filesystem::__cxx11::path const&, std::error_code&)' /usr/bin/ld: CMakeFiles/eternity.dir/d_findiwads.cpp.o: in function `std::filesystem::__cxx11::path::path<char*, std::filesystem::__cxx11::path>(char* const&, std::filesystem::__cxx11::path::format)': d_findiwads.cpp:(.text._ZNSt10filesystem7__cxx114pathC2IPcS1_EERKT_NS1_6formatE[_ZNSt10filesystem7__cxx114pathC5IPcS1_EERKT_NS1_6formatE]+0x64): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' /usr/bin/ld: CMakeFiles/eternity.dir/mn_files.cpp.o: in function `MN_ReadDirectory(mndir_s*, char const*, char const* const*, unsigned long, bool)': mn_files.cpp:(.text+0x615): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: mn_files.cpp:(.text+0x817): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/mn_files.cpp.o: in function `std::filesystem::__cxx11::path::operator/=(std::filesystem::__cxx11::path const&)': mn_files.cpp:(.text._ZNSt10filesystem7__cxx114pathdVERKS1_[_ZNSt10filesystem7__cxx114pathdVERKS1_]+0x3d): undefined reference to `std::filesystem::__cxx11::path::has_filename() const' /usr/bin/ld: mn_files.cpp:(.text._ZNSt10filesystem7__cxx114pathdVERKS1_[_ZNSt10filesystem7__cxx114pathdVERKS1_]+0x98): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' /usr/bin/ld: CMakeFiles/eternity.dir/mn_files.cpp.o: in function `std::filesystem::__cxx11::path::is_absolute() const': mn_files.cpp:(.text._ZNKSt10filesystem7__cxx114path11is_absoluteEv[_ZNKSt10filesystem7__cxx114path11is_absoluteEv]+0x14): undefined reference to `std::filesystem::__cxx11::path::has_root_directory() const' /usr/bin/ld: CMakeFiles/eternity.dir/mn_files.cpp.o: in function `std::filesystem::exists(std::filesystem::__cxx11::path const&)': mn_files.cpp:(.text._ZNSt10filesystem6existsERKNS_7__cxx114pathE[_ZNSt10filesystem6existsERKNS_7__cxx114pathE]+0x14): undefined reference to `std::filesystem::status(std::filesystem::__cxx11::path const&)' /usr/bin/ld: CMakeFiles/eternity.dir/mn_files.cpp.o: in function `std::filesystem::__cxx11::path::path<char [3], std::filesystem::__cxx11::path>(char const (&) [3], std::filesystem::__cxx11::path::format)': mn_files.cpp:(.text._ZNSt10filesystem7__cxx114pathC2IA3_cS1_EERKT_NS1_6formatE[_ZNSt10filesystem7__cxx114pathC5IA3_cS1_EERKT_NS1_6formatE]+0x5e): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' /usr/bin/ld: CMakeFiles/eternity.dir/w_wad.cpp.o: in function `WadDirectory::addDirectory(char const*)': w_wad.cpp:(.text+0x1512): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: w_wad.cpp:(.text+0x164d): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/w_wad.cpp.o: in function `W_recurseFiles(Collection<ArchiveDirFile>&, char const*, char const*, Collection<qstring>&, int)': w_wad.cpp:(.text+0x1cb2): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const' /usr/bin/ld: w_wad.cpp:(.text+0x1f4e): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()' /usr/bin/ld: CMakeFiles/eternity.dir/w_wad.cpp.o: in function `std::filesystem::__cxx11::directory_entry::file_size() const': w_wad.cpp:(.text._ZNKSt10filesystem7__cxx1115directory_entry9file_sizeEv[_ZNKSt10filesystem7__cxx1115directory_entry9file_sizeEv]+0x14): undefined reference to `std::filesystem::file_size(std::filesystem::__cxx11::path const&)' collect2: error: ld returned 1 exit status make[2]: *** [source/CMakeFiles/eternity.dir/build.make:3919: source/eternity] Error 1 make[1]: *** [CMakeFiles/Makefile2:366: source/CMakeFiles/eternity.dir/all] Error 2 make: *** [Makefile:152: all] Error 2
-
Making a move from GZdoom 1.6.0 to 3.1.0 and need some help
grommile replied to MajorFoley's topic in Source Ports
No, it isn't, and trying to rehash the thread Gez kindly linked to in the very first reply to this thread (where the reason why it went beyond "not stupid" into the realms of "the only sane thing to do" is explained in detail) is not going to be useful. -
A whole year of 4800 Hell Knights! This time, it'll be finished!
grommile replied to 94's the best style's topic in WAD Releases & Development
Deal me in to the resurrection :) Theme as before: Blood Processing. -
Why not just create an entirely new engine for Doom?
grommile replied to hardcore_gamer's topic in Doom Editing
It's a lot of work, and there's no readily apparent reason to do it. Especially when GZDoom already exists. -
The absolute limit for coordinates is -32768 to +32767. The practical limit, beyond which you start to get misbehaviour from the engine, is -16384 to +16383.
-
4800 Hell Knights: A Community Megawad [IN NEED OF NEW LEADERSHIP]
grommile replied to THMG's topic in WAD Releases & Development
I'm going for "there is no sky" and "the 'Blocks Sound' linedef flag exists and serves as a monster activation regulator more subtle than just slapping 'Ambush' on everything, so I should use it". -
There's no particular point in playing an old build of an advanced source ports unless you have a favourite wad that only works properly on said old build. (Or a computer that can't handle later versions, I guess.)