Skip to content

Transition to SDL3#962

Draft
portaloffreedom wants to merge 7 commits intomasterfrom
SDL3
Draft

Transition to SDL3#962
portaloffreedom wants to merge 7 commits intomasterfrom
SDL3

Conversation

@portaloffreedom
Copy link
Collaborator

@portaloffreedom portaloffreedom commented Oct 11, 2024

SDL3 is not release yet, but has hit ABI freeze. Until it's officially released this PR should not be merged.

@portaloffreedom portaloffreedom marked this pull request as draft October 11, 2024 22:25
@portaloffreedom
Copy link
Collaborator Author

portaloffreedom commented Oct 12, 2024

Currently SDL3 is being installed the hard way (git clone; make; sudo make install), we need to come up with a plan for this to change. Possible alternatives:

  • vendor sdl inside the project statically
  • vendor sdl inside the project, giving a dynamic library
  • wait for sdl to be available in the next ubuntu LTS, which seems to be the most common denominator for old distros. (probably going to take 2 years or more)
  • vendor SDL3 statically only for CI builds, but demand that developers that compile the code handle the problem of providing SDL3 themselves.

@metaleap
Copy link
Contributor

metaleap commented Jan 11, 2025

wait for sdl to be available in the next ubuntu LTS, which seems to be the most common denominator for old distros. (probably going to take 2 years or more)

Another option is to "wait until SDL's Wikipedia page lists a 3.x as 'Stable Release' instead of the current 2.x" 😁 even libsdl.org lists 2.x as stable and 3.x as preview..

Early-adopting the bleeding edge is fine for self-contained solo indie game projects etc, but a many-users engine project like Wicked (with almost as many WIP projects) can let the-hot-new-thing settle into stabilization and even some maturation first =) when it comes to Wicked release versions, I mean — that you're already exploring SDL3 here is of course neato!

Vendoring: intuitively but without quite knowing explicitly why, I'd be wary about vendoring something like SDL the same way it's currently only done with LUA, Jolt, FAudio etc. It's such a common "system-wide dep".. and if one's Wicked Game C++ app ever imports anything else that also references SDL but the system one (or its own static or shared vendored one... 😵‍💫 ), even if only to "optionally support" it (say some immediate-mode-GUI lib or other, who knows), at best you have the whole codebase loaded twice in memory and at worst maybe people get link-time conflicts / version differences, duplicate symbols or who knows what build-time or run-time confusions?

@james2doyle
Copy link

Unvanquished just posted about their usage of SDL3 and how they are currently working with it:

Since SDL3 is a bit too new for some releases, we distribute a prebuilt SDL3 in our build dependencies for people wanting to build the game themselves (our script for rebuilding SDL3 oneself is also provided). People wanting to rely on the system SDL3 when packaging the game for a Linux distribution can use the new -DUSE_EXTERNAL_DEPS_LIBS=OFF CMake option to not use the prebuilt SDL3 we provide.

You can read more in the blog post on their site: https://unvanquished.net/unvanquished-0-55-5-polishing-it/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants