I've managed to get most of it's dependencies compiled and installed (I think!) and tweak the compile script so it almost finishes compiling, but right at the very end at the "Linking CXX executable PPSSPPSDL" step it throws a lot of errors like this:
Code: Select all
Linking CXX executable PPSSPPSDL
lib/libCore.a(GLES_GPU.cpp.o): In function `GLES_GPU::GetCurrentTexture(GPUDebugBuffer&, int) [clone .part.31]':
GLES_GPU.cpp:(.text+0x1674): undefined reference to `glGetTexLevelParameteriv'
GLES_GPU.cpp:(.text+0x1688): undefined reference to `glGetTexLevelParameteriv'
GLES_GPU.cpp:(.text+0x1730): undefined reference to `glGetTexImage'
GLES_GPU.cpp:(.text+0x178c): undefined reference to `glGetTexLevelParameteriv'
GLES_GPU.cpp:(.text+0x17a0): undefined reference to `glGetTexLevelParameteriv'
lib/libCore.a(Framebuffer.cpp.o): In function `FramebufferManager::ClearDepthBuffer()':
Framebuffer.cpp:(.text+0x13e4): undefined reference to `glClearDepth'
lib/libCore.a(Framebuffer.cpp.o): In function `FramebufferManager::ClearBuffer()':
Framebuffer.cpp:(.text+0x1670): undefined reference to `glClearDepth'
lib/libCore.a(Framebuffer.cpp.o): In function `FramebufferManager::GetCurrentFramebuffer(GPUDebugBuffer&)':
Framebuffer.cpp:(.text+0x37e4): undefined reference to `glReadBuffer'
lib/libCore.a(Framebuffer.cpp.o): In function `FramebufferManager::GetCurrentDepthbuffer(GPUDebugBuffer&)':
Framebuffer.cpp:(.text+0x3a5c): undefined reference to `glReadBuffer'
lib/libCore.a(Framebuffer.cpp.o): In function `FramebufferManager::GetCurrentStencilbuffer(GPUDebugBuffer&)':
Framebuffer.cpp:(.text+0x3bd8): undefined reference to `glReadBuffer'
lib/libCore.a(TransformPipeline.cpp.o): In function `TransformDrawEngine::DoFlush()':
TransformPipeline.cpp:(.text+0x296c): undefined reference to `glClearDepth'
lib/libCore.a(StateMapping.cpp.o): In function `TransformDrawEngine::ApplyDrawState(int)':
StateMapping.cpp:(.text+0x1b00): undefined reference to `glDepthRange'
StateMapping.cpp:(.text+0x1f04): undefined reference to `glDepthRange'
lib/libnative.a(PCMain.cpp.o): In function `EGL_Open()':
PCMain.cpp:(.text+0x324): undefined reference to `XOpenDisplay'
lib/libnative.a(PCMain.cpp.o): In function `EGL_Close()':
PCMain.cpp:(.text+0x914): undefined reference to `XCloseDisplay'
lib/libnative.a(gl_state.cpp.o): In function `OpenGLState::Restore()':
gl_state.cpp:(.text+0xd4): undefined reference to `glDepthRange'
lib/libnative.a(thin3d_gl.cpp.o): In function `Thin3DGLContext::Clear(int, unsigned int, float, int)':
thin3d_gl.cpp:(.text+0x458): undefined reference to `glClearDepth'
lib/libnative.a(thin3d_gl.cpp.o): In function `Thin3DGLContext::SetViewports(int, T3DViewport*)':
thin3d_gl.cpp:(.text._ZN15Thin3DGLContext12SetViewportsEiP11T3DViewport[_ZN15Thin3DGLContext12SetViewportsEiP11T3DViewport]+0xb4): undefined reference to `glDepthRange'
lib/libglew.a(glew.c.o): In function `_glewInit_GL_VERSION_1_3':
glew.c:(.text+0x184): undefined reference to `glXGetProcAddressARB'
glew.c:(.text+0x19c): undefined reference to `glXGetProcAddressARB'
glew.c:(.text+0x1b4): undefined reference to `glXGetProcAddressARB'
glew.c:(.text+0x1cc): undefined reference to `glXGetProcAddressARB'
glew.c:(.text+0x1e4): undefined reference to `glXGetProcAddressARB'
lib/libglew.a(glew.c.o):glew.c:(.text+0x1fc): more undefined references to `glXGetProcAddressARB' follow
lib/libglew.a(glew.c.o): In function `glxewGetExtension':
glew.c:(.text+0x12558): undefined reference to `glXGetClientString'
lib/libglew.a(glew.c.o): In function `glxewContextInit':
glew.c:(.text+0x125b8): undefined reference to `glXGetProcAddressARB'
glew.c:(.text+0x125f0): undefined reference to `glXQueryVersion'
glew.c:(.text+0x12614): undefined reference to `glXGetClientString'
glew.c:(.text+0x126c8): undefined reference to `glXGetProcAddressARB'
glew.c:(.text+0x12d98): undefined reference to `glXGetProcAddressARB'
glew.c:(.text+0x12db0): undefined reference to `glXGetProcAddressARB'
glew.c:(.text+0x12e14): undefined reference to `glXGetProcAddressARB'
glew.c:(.text+0x12e2c): undefined reference to `glXGetProcAddressARB'
lib/libglew.a(glew.c.o):glew.c:(.text+0x12e44): more undefined references to `glXGetProcAddressARB' follow
collect2: error: ld returned 1 exit status
CMakeFiles/PPSSPPSDL.dir/build.make:660: recipe for target 'PPSSPPSDL' failed
make[2]: *** [PPSSPPSDL] Error 1
CMakeFiles/Makefile2:208: recipe for target 'CMakeFiles/PPSSPPSDL.dir/all' failed
make[1]: *** [CMakeFiles/PPSSPPSDL.dir/all] Error 2
Makefile:72: recipe for target 'all' failed
make: *** [all] Error 2
The generated link.txt for the CMake run for the PPSSPPSDL executable is listing:
Code: Select all
/usr/bin/arm-linux-gnueabihf-g++-4.8 -I/opt/vc/include/ -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux -L/opt/vc/lib -std=c++11 -march=armv7-a -mfpu=neon -mcpu=cortex-a9 -O3 -D_NDEBUG CMakeFiles/PPSSPPSDL.dir/android/jni/TestRunner.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/NativeApp.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/BackgroundAudio.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/DevScreens.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/EmuScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/GameInfoCache.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/MainScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/MiscScreens.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/PauseScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/GameScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/GameSettingsScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/TiltAnalogSettingsScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/TiltEventProcessor.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/TouchControlLayoutScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/TouchControlVisibilityScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/GamepadEmu.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/OnScreenDisplay.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/ControlMappingScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/ReportScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/Store.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/CwCheatScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/InstallZipScreen.cpp.o CMakeFiles/PPSSPPSDL.dir/UI/ui_atlas.cpp.o -o PPSSPPSDL -rdynamic -L/opt/vc/lib lib/libCore.a -lpthread /usr/local/lib/libSDL2main.a /usr/local/lib/libSDL2.so -lpthread -lpthread -lEGL lib/libCommon.a ../ffmpeg/libavformat/libavformat.a ../ffmpeg/libavcodec/libavcodec.a ../ffmpeg/libavutil/libavutil.a ../ffmpeg/libswresample/libswresample.a ../ffmpeg/libswscale/libswscale.a lib/libnative.a lib/liblibzip.a -lz lib/libpng17.a lib/librg_etc1.a lib/libvjson.a lib/libstb_vorbis.a lib/libsnappy.a lib/libudis86.a -lrt lib/libkirk.a lib/libcityhash.a lib/libxbrz.a lib/libxxhash.a lib/libglew.a -lGLESv2 -lbcm_host -lglib-2.0 -ldl /usr/local/lib/libSDL2main.a /usr/local/lib/libSDL2.so -lpthread -lEGL -Wl,-rpath,/opt/vc/lib:/usr/local/lib
Update: I managed to get it to compile ok passing through -lGL and -lX11 to the linker.
It compiles without errors now for both the EGL and FBDEV config routes, but neither executable runs. The FBDEV path giving an error of "SDL_CreateWindow failed: Couldn't find matching GLX visual" and the EGL one "EGL ERROR: Unable to create EGL display."
I'm not really sure what's causing the issue but I think it may have something to do with the configure options I used when I compiled SDL2.