mupen64plus / mupen64plus-video-rice

Video plugin for the Mupen64Plus v2.0 project, using OpenGL. This plugin is based on the RiceVideoLinux plugin from earlier versions of Mupen64Plus.
31 stars 40 forks source link

Trouble building on Gentoo #98

Open metafarion opened 3 years ago

metafarion commented 3 years ago

I'm currently getting stuck on the following when doing make all, and I'm not sure where to investigate. Are there build dependencies I should know about? Using GCC 9.3.0, glibc 2.32, and kernel 5.9.11

CXX _obj/Blender.o In file included from ../../src/RenderBase.h:26, from ../../src/Render.h:30, from ../../src/Blender.cpp:23: ../../src/Video.h:168:8: error: ‘ptr_ConfigSetParameterHelp’ does not name a type; did you mean ‘ptr_ConfigGetParameterHelp’? 168 | extern ptr_ConfigSetParameterHelp ConfigSetParameterHelp; | ^~~~~~ | ptr_ConfigGetParameterHelp ../../src/Video.h:192:8: error: ‘ptr_VidExt_ResizeWindow’ does not name a type 192 | extern ptr_VidExt_ResizeWindow CoreVideo_ResizeWindow; | ^~~~~~~ make: [Makefile:417: _obj/Blender.o] Error 1 CXX _obj/Blender.o In file included from ../../src/RenderBase.h:26, from ../../src/Render.h:30, from ../../src/Blender.cpp:23: ../../src/Video.h:168:8: error: ‘ptr_ConfigSetParameterHelp’ does not name a type; did you mean ‘ptr_ConfigGetParameterHelp’? 168 | extern ptr_ConfigSetParameterHelp ConfigSetParameterHelp; | ^~~~~~ | ptr_ConfigGetParameterHelp ../../src/Video.h:192:8: error: ‘ptr_VidExt_ResizeWindow’ does not name a type 192 | extern ptr_VidExt_ResizeWindow CoreVideo_ResizeWindow; | ^~~~~~~ make: [Makefile:417: _obj/Blender.o] Error 1

richard42 commented 3 years ago

it looks like you're trying to build a newer plugin against an older core or something like that. it's complaining about not finding a function pointer which should be there. can you run the m64p_update.sh script to update all of the modules?

metafarion commented 3 years ago

Perhaps this betrays my lack of understanding of how this package is built in the first place. I've just downloaded the latest release source from https://github.com/mupen64plus/mupen64plus-video-rice/releases/download/2.5.9/mupen64plus-video-rice-src-2.5.9.tar.gz. Is there more that I need? The INSTALL doc indicates the possibility of installing as part of the "Mupen64Plus source code bundle" or via a "standalone source code release".

richard42 commented 3 years ago

Since you're building it from source, you might as well just build the newest code. Version 2.5.9 is a couple of years old now. Here is a wiki page which describes how to do that:

https://mupen64plus.org/wiki/index.php?title=CompilingFromGit

Richard

On 2/18/21 9:04 PM, Metafarion wrote:

Perhaps this betrays my lack of understanding of how this package is built in the first place. I've just downloaded the latest release source from https://github.com/mupen64plus/mupen64plus-video-rice/releases/download/2.5.9/mupen64plus-video-rice-src-2.5.9.tar.gz https://github.com/mupen64plus/mupen64plus-video-rice/releases/download/2.5.9/mupen64plus-video-rice-src-2.5.9.tar.gz. Is there more that I need? The INSTALL doc indicates the possibility of installing as part of the "Mupen64Plus source code bundle" or via a "standalone source code release".

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/mupen64plus/mupen64plus-video-rice/issues/98#issuecomment-781823337, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABPQSHZYLA2Q2WZLZUMQKCDS7XWNTANCNFSM4X3OXM5A.

metafarion commented 3 years ago

Well, I was able to build the latest sources without issue using the scripts m64p scripts, but does that mean the various components can't be built independently? I ask because it'd be nice to be able to integrate them with the package manager. This requires an fixed release rather than a clone of "the newest code". What exactly is needed to build, for example, mupen64plus-video-rice on its own? Does it depend on code from the core package, or something else?

richard42 commented 3 years ago

They can be built independently, but the plugins rely on API headers from the core module. Gentoo previously had an ebuild for mupen64plus; I would assume that it's still available. I think that ebuild just builds all of the modules together so it avoids that issue. You can look at the makefile in the projects/unix folder of the plugin to see how it searches for the core api header files. It looks in several different places. In general, the version numbers don't have to match perfectly and you can build a plugin against headers for a slightly newer or older version of the core, but I imagine if they are wildly different then there will be problems.

metafarion commented 3 years ago

Ok, that's a good place to start. There are Gentoo ebuilds available but when I've tried to emerge them recently, they show many of the same compile errors I saw when trying to build by hand, so I thought I'd investigate. Maybe the individual package ebuilds aren't correctly pulling in the headers from the core.