• Login
  • Register
  • Dolphin Forums
  • Home
  • FAQ
  • Download
  • Wiki
  • Code


Dolphin, the GameCube and Wii emulator - Forums › Dolphin Emulator Discussion and Support › Development Discussion v
« Previous 1 ... 16 17 18 19 20 ... 115 Next »

Build Error on Linux Mint 18.3
View New Posts | View Today's Posts

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Thread Modes
Build Error on Linux Mint 18.3
04-02-2018, 12:05 PM (This post was last modified: 04-04-2018, 02:09 PM by AutoFire.)
#1
AutoFire Offline
Member
***
Posts: 83
Threads: 11
Joined: Nov 2011
I just tried to compile the latest Dolphin source on Linux Mint 18.3, and the build failed at 48%:

Code:
[ 48%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/UPnP.cpp.o
[ 48%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/Version.cpp.o
[ 48%] Building CXX object Source/Core/Common/CMakeFiles/common.dir/x64ABI.cpp.o
In file included from /home/alec/Sources/dolphin-emu/Source/Core/Common/x64ABI.cpp:7:0:
/home/alec/Sources/dolphin-emu/Source/Core/Common/x64Emitter.h: In member function ‘constexpr bool Gen::OpArg::operator==(const Gen::OpArg&) const’:
/home/alec/Sources/dolphin-emu/Source/Core/Common/x64Emitter.h:125:3: error: call to non-constexpr function ‘std::tuple<_Elements& ...> std::tie(_Elements& ...) [with _Elements = {const unsigned char, const short unsigned int, const short unsigned int, const long unsigned int, const short unsigned int}]’
  }
  ^
Source/Core/Common/CMakeFiles/common.dir/build.make:1046: recipe for target 'Source/Core/Common/CMakeFiles/common.dir/x64ABI.cpp.o' failed
make[2]: *** [Source/Core/Common/CMakeFiles/common.dir/x64ABI.cpp.o] Error 1
CMakeFiles/Makefile2:1010: recipe for target 'Source/Core/Common/CMakeFiles/common.dir/all' failed
make[1]: *** [Source/Core/Common/CMakeFiles/common.dir/all] Error 2
Makefile:149: recipe for target 'all' failed
make: *** [all] Error 2

EDIT: Fixed; didn't realize GCC 5.4 was no longer sufficient. Installed and used GCC 7; this fixed the build.
Computer specs in profile
Find
Reply
04-15-2018, 04:11 AM
#2
seebs Offline
Junior Member
**
Posts: 11
Threads: 2
Joined: Apr 2018
So, it looks like commit 964201f2d3f67d389faa06556322bc04a554be3e introduced this specific change.

Is there a specific branch or tag I should be on if I want to be able to compile with older compilers? Nothing I have uses gcc7 yet, and my otherwise-perfectly-functional 16.04-LTS desktop seems to work for other things.

(It doesn't seem obvious that the shift to std::tie is going to change things significantly from an optimization standpoint, but possibly it will?)
Find
Reply
04-15-2018, 05:32 PM
#3
JosJuice Offline
Developer
**********
Developers (Some Administrators and Super Moderators)
Posts: 8,645
Threads: 7
Joined: Oct 2014
Thanks for bisecting it. 5.0-7004 should make it possible for you to build Dolphin again.
Find
Reply
04-16-2018, 06:23 AM
#4
seebs Offline
Junior Member
**
Posts: 11
Threads: 2
Joined: Apr 2018
So I did complete a build. I ran into two other issues on this version of Ubuntu. One was in Core/PowerPC/BreakPoints.cpp:

@@ -215,8 +215,8 @@ bool MemChecks::OverlapsMemcheck(u32 address, u32 length)
if (!HasAny())
return false;

- const u32 page_end_suffix = length - 1;
- const u32 page_end_address = address | page_end_suffix;
+ u32 page_end_suffix = length - 1;
+ u32 page_end_address = address | page_end_suffix;

This triggers an internal compiler error. Removing the const qualifiers avoids the error. (I think the compiler was trying to optimize the values away entirely, and this broke it, but I didn't explore further because I doubt anyone cares about an ICE from gcc 5.4.)

The second was, spread throughout a fair bit of Core/IOS, namespace declarations using "namespace A:B:C", which gcc couldn't handle. Breaking them out into separate/nested entries fixed that:

-namespace IOS::HLE::FS
+namespace IOS
+{
+namespace HLE
+{
+namespace FS

I also had a number of issues which weren't Dolphin's fault at all, having to do with Debian's llvm packaging being wrong, generally solved with things roughly like "ln -s llvm-3.8 llvm" and similar things in /usr/include and in a couple of other paths. With all of that done, I can in fact build the whole thing. (I haven't actually tried the resulting emulator, mind, but at least it built.)
Find
Reply
« Next Oldest | Next Newest »


  • View a Printable Version
  • Subscribe to this thread
Forum Jump:


Users browsing this thread: 1 Guest(s)



Powered By MyBB | Theme by Fragma

Linear Mode
Threaded Mode