Project

General

Profile

Actions

Emulator Issues #3529

closed

Connot link with wxGTK 2.9.1 - undefined references

Added by nitro322 over 13 years ago.

Status:
Duplicate
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

What's the problem?
Dolphin does not appear to correctly support wxGTK 2.9.1 on Linux. I can build just fine with 2.8.10, but after upgrading to 2.9.1 the build fails when trying to link the main dolphin-emu binary with multiple undefined reference errors.

Dolphin version with the problem (as it appears in the title bar, Ex.: "R
4779" or "R 6403M"):
r6441

(optional) Dolphin version that does not have the problem:
N/A

Operating system and version:
32-bit or 64-bit:
Gentoo amd64

Build command-line (not on Windows):
cmake -C /tmp/portage/games-emulation/dolphin-emu-9999_p6441/temp/gentoo_common_config.cmake -DCMAKE_INSTALL_PREFIX=/usr -DDOLPHIN_WC_REVISION=6441 -DCMAKE_INSTALL_PREFIX=/usr/games -Dprefix=/usr/games -Ddatadir=/usr/share/games/dolphin-emu -Dplugindir=/usr/games/lib64/dolphin-emu -DDISABLE_WX=OFF -DENCODE_FRAMEDUMPS=ON -DCMAKE_BUILD_TYPE=Gentoo -DCMAKE_INSTALL_DO_STRIP=OFF -DCMAKE_USER_MAKE_RULES_OVERRIDE=/tmp/portage/games-emulation/dolphin-emu-9999_p6441/temp/gentoo_rules.cmake /tmp/portage/games-emulation/dolphin-emu-9999_p6441/work/dolphin-emu-9999_p6441

Please provide any additional information below.

As noted above, same ebuild and dolphin revision works fine with 2.8.10. I've confirmed that my environment was properly updated for 2.9.1 before rebuilding, and another Gentoo user running 2.9.1 has the same problem (actually, he notified of an issue with my new cmake ebuild, and I tracked it down to the wxGTK version).

Here's a snippet of the relevant output:

Linking CXX executable ../../../Binaries/dolphin-emu
CMakeFiles/dolphin-emu.dir/Src/Frame.cpp.o: In function CFrame::OnClose(wxCloseEvent&)':
Frame.cpp:(.text+0x5d8): undefined reference to
wxAuiManager::UnInit()'
CMakeFiles/dolphin-emu.dir/Src/Frame.cpp.o: In function T.3548':
Frame.cpp:(.text+0xd24): undefined reference to
wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN'
Frame.cpp:(.text+0xdc6): undefined reference to wxEVT_COMMAND_AUITOOLBAR_TOOL_DROPDOWN'
Frame.cpp:(.text+0x18c0): undefined reference to
wxEVT_AUI_PANE_CLOSE'
Frame.cpp:(.text+0x191a): undefined reference to wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE'
Frame.cpp:(.text+0x1974): undefined reference to
wxEVT_COMMAND_AUINOTEBOOK_ALLOW_DND'

I can attach a full build log if desired. For reference, these errors affect Frame.cpp, FrameAui.cpp, FrameTools.cpp, LogWindow.cpp, and CodeWindow.cpp.


Related issues 1 (0 open1 closed)

Is duplicate of Emulator - Emulator Issues #4535: wxWidgets 2.9 from Externals does not build on Linux x86_32Fixed

Actions
Actions #1

Updated by glennricster over 13 years ago

  • Status changed from New to Invalid

We do not support wx 2.9.1 at this point. 2.9.1 is not a stable release so I don't think we should support it either. This is therefore being marked as an invalid issue.

Actions #2

Updated by nitro322 over 13 years ago

Fair enough. I didn't realize it was considered unstable.

Thanks for the clarification.

Actions #3

Updated by nitro322 over 13 years ago

Although... wouldn't it make more sense to consider this a low priority issue rather than closing it as invalid? Officially not supporting a dev branch is fine and makes perfect sense, but changes to this branch will be included in the next stable branch, which means Dolphin will fail to build with that as well. Seems like a better approach would be to keep track of known issues like this rather than ignoring them.

I run 2.8.10 myself, so honestly I'm not all that concerned right now if you rather leave this marked invalid, but after giving this a little more thought it didn't quite sit right with me. Just wanted to share my thoughts.

Actions #4

Updated by nakeee over 13 years ago

  • Status changed from Invalid to Accepted

Glen: it seems while 2.9 is not an official stable release it is still being picked up
by some distros, I found this on their site:

2.9 series bring many improvements compared to 2.8 series and, in spite of being called a development release, we believe that 2.9.1 can be used in production environment, especially for the new projects for which (small) changes in behaviour since 2.8 are not a problem. Give it a try and let us know what do you think!

Since we already support 2.9 for OSX I think it shouldn't be too hard to add an extra linkage flag.
Nitro: Can you check which flag is missing? I don't have 2.9.1 installed.

Actions #5

Updated by nitro322 over 13 years ago

I'd love to help any way I can, but I'm not sure what you're asking for. Can you elaborate any? Sorry if this is something basic, I just don't deal with stuff on this level very often.

Thanks.

Actions #6

Updated by nitro322 over 13 years ago

One of the ebuild contributers found that this works with wxgtk-2.9:
LDFLAGS="-lwx_gtk2u_aui-2.9 -lwx_gtk2u_adv-2.9 -lwx_gtk2u_core-2.9 -lwx_baseu-2.9" emerge -av dolphin-emu

I upgraded to 2.9 again to test myself and can confirm it will build/link properly. I've not done an exhaustive test, but dolphin seems to load and play games just fine with this option.

Are those LDFLAGS what you were referring to?

Actions #7

Updated by nakeee over 13 years ago

Are all of them needed?
isn't it enough to add the -lwx_gtk2u_aui-2.9 -lwx_baseu-2.9 ?

Actions #8

Updated by nakeee over 13 years ago

it seems that the new wx-config --libs got a bit different input
in 2.8 aui is included by default and in 2.9 only if you add wx-config --libs aui
it seems to add the aui libs.
Can someone confirm if that a feature or a gentoo bug?

Actions #9

Updated by nitro322 over 13 years ago

I rebuilt using LDFLAGS="-lwx_gtk2u_aui-2.9 -lwx_baseu-2.9" as suggested and that does work fine. I tried again with just LDFLAGS="-lwx_gtk2u_aui-2.9" and that also works, so as you suggested in your last comment, the missing aui seems to be the problem.

On Gentoo I see the behavior you describe regarding --libs and aui. The only other system I have available with semi-easy access to wxGTK 2.9 is an Arch system. I'm currently building wxGTK on it and will let you know what it reports for --libs to compare against Gentoo.

Actions #10

Updated by nitro322 over 13 years ago

Whew, that took its sweet time. :-) I see the same behavior regarding aui on both Gentoo and Arch. For reference, here's what I see on both systems:

arch-2.9 $ wx-config-2.9 --libs
-pthread -lwx_gtk2u_xrc-2.9 -lwx_gtk2u_html-2.9 -lwx_gtk2u_qa-2.9 -lwx_gtk2u_adv-2.9 -lwx_gtk2u_core-2.9 -lwx_baseu_xml-2.9 -lwx_baseu_net-2.9 -lwx_baseu-2.9

arch-2.8 $ wx-config --libs | grep -i aui
-pthread -Wl,--hash-style=gnu -Wl,--as-needed -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8

gentoo-2.9 $ wx-config --libs
-L/usr/lib64 -pthread -lwx_gtk2u_xrc-2.9 -lwx_gtk2u_html-2.9 -lwx_gtk2u_qa-2.9 -lwx_gtk2u_adv-2.9 -lwx_gtk2u_core-2.9 -lwx_baseu_xml-2.9 -lwx_baseu_net-2.9 -lwx_baseu-2.9

gentoo-2.8 $ wx-config --libs
-L/usr/lib64 -pthread -Wl,-O1 -Wl,--as-needed -L/usr/lib64 -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8

Actions #11

Updated by nakeee over 13 years ago

I guess the wx probing in the cmake should be changed to something like
FIND_PACKAGE(wxWidgets COMPONENTS base core aui)
Glen: What do you think?

Actions #12

Updated by glennricster over 13 years ago

nakeee: Yeah, this sounds right.
nitro322: Sorry. I should have marked this as low priority as you said.

Sometime I will have to install 2.9.1 to see what I can do.

Actions #13

Updated by soren.jorvang over 13 years ago

2.9.1 works fine on OS X, though I am using the 2.9.2 trunk for some rather minor bug fixes. 2.9.0 was a bit of a disaster, but there has been much progress since then.

At some point I would like to upgrade Externals/wxWidgets so that the OS X build has no third party dependencies, but I am not sure if the right time is going to be 2.9.2 or 3.0 or what.

This won't affect Linux much, since a shared library is usually used there, but it would be useful if someone on Windows could do some testing with 2.9.[12].

Actions #14

Updated by glennricster over 13 years ago

Later revisions should link agains 2.9.1 now on linux. I get segmentation faults when trying to run it, but it compiles and links.

Actions #16

Updated by skidau about 12 years ago

  • Status changed from Accepted to Duplicate
Actions

Also available in: Atom PDF