Project

General

Profile

Actions

Emulator Issues #7845

closed

Build fails on fedora 21

Added by sheepdestroyer about 10 years ago.

Status:
Fixed
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Bug
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:

Description

trying my new Fedora 21 64bit with gcc 4.9.2 ; used to be able to build on fedora 20

build fails with following errors :

In file included from /usr/include/c++/4.9.2/type_traits:35:0,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/strvararg.h:25,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/string.h:46,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/memory.h:15,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/object.h:19,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/event.h:16,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/window.h:18,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/control.h:22,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/statline.h:23,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/src/aui/auibar.cpp:29:
/usr/include/c++/4.9.2/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support for the
^
In file included from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/string.h:46:0,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/memory.h:15,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/object.h:19,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/event.h:16,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/window.h:18,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/control.h:22,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/statline.h:23,
from /home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/src/aui/auibar.cpp:29:
/home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/strvararg.h:345:18: error: ‘is_enum’ in namespace ‘std’ does not name a template type
typedef std::is_enum<T> is_enum;
^
/home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/strvararg.h:349:54: error: ‘is_enum’ was not declared in this scope
enum { value = wxFormatStringSpecifierNonPodType<is_enum::value>::value };
^
/home/sheepdestroyer/Downloads/dolphin-master/Externals/wxWidgets3/include/wx/strvararg.h:349:68: error: template argument 1 is invalid
enum { value = wxFormatStringSpecifierNonPodType<is_enum::value>::value };
^
Externals/wxWidgets3/CMakeFiles/wx.dir/build.make:54: recipe for target 'Externals/wxWidgets3/CMakeFiles/wx.dir/src/aui/auibar.cpp.o' failed
make[2]: *** [Externals/wxWidgets3/CMakeFiles/wx.dir/src/aui/auibar.cpp.o] Error 1
CMakeFiles/Makefile2:482: recipe for target 'Externals/wxWidgets3/CMakeFiles/wx.dir/all' failed
make[1]: *** [Externals/wxWidgets3/CMakeFiles/wx.dir/all] Error 2

Actions #1

Updated by matthewharveys about 10 years ago

Seeing exactly the same issue on Debian Jessie with gcc 4.9.1.

I am unable to bisect this issue (go back to when it used to build and it doesn't), indicating to me that it's actually a change in the environment (maybe in the way that gcc does stuff).

Actions #2

Updated by sheepdestroyer about 10 years ago

I was building fine a few weeks ago with gcc 4.9.1 on fedora 20 ;

Anyway as it seems it is not a Fedora only problem, should the title of the bug report be changed (is it possible?) to "Build fails"?

Actions #3

Updated by matthewharveys about 10 years ago

With a little bit of experimenting, you can do the following as a workaround:
Open CMakeCache.txt (or use ccmake for configuring)
Change the following option:
DISABLE_WX:BOOL=ON
This will build a no-gui version (the build issue is in wxwidgets)
Optionally you can change the following option as well:
ENABLE_QT:BOOL=ON
to turn on the qt version, but I tried it and it is still rather incomplete. Still if you're command line phobic it might help.

These are, of course, ultimately workarounds, but I thought I'd post them in case someone wanted to get quickly to playing.

Actions #4

Updated by Sonicadvance1 about 10 years ago

Or you can just pass those options to cmake.
cmake -DDISABLE_WX=True -DENABLE_QT=True ..

Actions #5

Updated by matthewharveys about 10 years ago

Yes. That's probably simpler.

I can get the wx version to build as well now. With this:

diff --git a/Externals/wxWidgets3/CMakeLists.txt b/Externals/wxWidgets3/CMakeLists.txt
index c72a0dd..2e42a77 100644
--- a/Externals/wxWidgets3/CMakeLists.txt
+++ b/Externals/wxWidgets3/CMakeLists.txt
@@ -904,7 +904,7 @@ endif()
add_definitions(-DWXBUILDING)

wxWidgets warnings are not our problem.

add_definitions(-w)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++98")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")

I don't know enough about how dolphin-emu pulls in its external dependencies to know whether this is a bug in dolphin-emu or in the upstream wx repo, but it seems as though wxWidgets has started using C++11 features and in some way the build system is not prepared to deal with it.
Hopefully this investigation helps at all.

Actions #6

Updated by sheepdestroyer about 10 years ago

this patch works, thanks

Actions #7

Updated by Lioncash about 10 years ago

Now fixed in master.

Actions #8

Updated by Lioncash about 10 years ago

  • Status changed from New to Fixed
Actions #9

Updated by matthewharveys about 10 years ago

The committed patch doesn't seem to cover the Linux case. There are three cases in the if statement, only one is covered. Don't we need to add something like the attached?

Actions #10

Updated by matthewharveys about 10 years ago

Just to finish off this bug, my concerns from the above comment were addressed in a subsequent commit, and it is now building fine on my machine. Thanks for the help of matthew1800.

Actions

Also available in: Atom PDF