libretro / docs

This is a repo of the RetroArch official document page.
https://docs.libretro.com/
MIT License
260 stars 461 forks source link

Are the dependencies docs up-to-date? #682

Closed tannisroot closed 1 year ago

tannisroot commented 3 years ago

Hi, I want to determine the optimal dependencies list for libretro under ubuntu, and I'm a little bit confused with the dependencies that the docs suggest in this page: https://docs.libretro.com/development/retroarch/compilation/linux-and-bsd/#satisfying-dependencies-under-debianubuntu Here are my questions: 1) Is libsdl-image1.2-dev really necessary (sdl 1.2, in 2021?) or just sdl2 is enough? 2) Are nvidia-cg-toolkit nvidia-cg-dev really neccesary or just slang-devel will do? Cg shader language has been dead for quite a while.

fpscan commented 2 years ago

@hunterk hey hunter do you have any comment on this?

hizzlekizzle commented 2 years ago

Cg isn't entirely necessary, no. The PPA builds use these deps: https://git.launchpad.net/~libretro/libretro/+git/RetroArch-debian/tree/control

It might make sense to copy that list over to the docs, if we consider the PPAs to be the "correct" way to build.

fpscan commented 2 years ago

So I'm closing this issue and I'll copy that list later.

keithbowes commented 2 years ago

Technically, you don't need any of those things. You generally don't need SDL 1 or 2 (on Linux, you should use pulse for audio and udev for input; heck, even if you don't have the pulse headers, tinyalsa is perfectly capable). If you have SDL2, SDL1 will be automatically disabled unless you give --disable-sdl2 to the configure script.

glslang is only necessary for support for the Vulkan and the confusingly named OpenGL Core (it's neither merely just core OpenGL functionality nor a libretro core for OpenGL) video drivers. If you're fine with desktop OpenGL (1.x or 2.x) or OpenGLES, there's no need for it.

I personally don't get why Cg is even still shipped in Linux builds; it doesn't work in either KMS or Wayland (furthermore, it's proprietary and as you note, has been dead for a decade (even NVIDIA advises not to use it)). GLSL or glslang is definitely preferable (if you're going to use shaders at all).

The thing that really stands out to me, though, is the libxml2 optional dependency. RetroArch hasn't used it in years (it was dropped 1.7.7). Furthermore, for some of those things, builtin versions are used unless you specify --disable-builtin* options (glslang, flac, zlib).

hizzlekizzle commented 2 years ago

No, they're indeed not required, but we typically include all of the optional dependencies, as well, because they represent features that people expect to get. That is, we describe how to get the fullest experience and let people pare that down instead of the barest/incomplete experience and let them try and figure out which deps they might need to add the features they expect to be there already.