Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Phase out Autotools Build System #1991

Closed
MikuAuahDark opened this issue Dec 10, 2023 · 14 comments · Fixed by #2001
Closed

Phase out Autotools Build System #1991

MikuAuahDark opened this issue Dec 10, 2023 · 14 comments · Fixed by #2001
Assignees
Labels
change Change to existing functionality Linux
Milestone

Comments

@MikuAuahDark
Copy link
Contributor

MikuAuahDark commented Dec 10, 2023

During the release of 11.5, we have bit of discussion on switching the Linux build system from Autotools to CMake. This means one build system for every platform we support (except macOS families), although Linux enthusiast users may not happy with this change.

I left this open for further discussion and didn't tag it to specific milestones for same reason.

@MikuAuahDark MikuAuahDark added change Change to existing functionality Linux labels Dec 10, 2023
@MikuAuahDark MikuAuahDark changed the title PHase out Autotools Build System Phase out Autotools Build System Dec 10, 2023
@bartbes
Copy link
Member

bartbes commented Dec 29, 2023

I took a quick look the other day, and this is a (non-exhaustive) list of things I couldn't find in the CMake implementation:

  • Some magic stb_image flag here. As far as I can tell it's dead code, as I couldn't find any references to LOVE_STBI_SSE2_OVERRIDE.
  • An option to disable GME here. I'm not sure we still need it.
  • Flags to disable specific modules. Again, I'm not sure we need to reproduce it. We probably could with some relatively simple cmake scripting, but I doubt anyone seriously uses it.
  • Some OSX stuff? Given that it's called "OSX" rather than macOS, and I've never heard anyone talk about it after the initial request, maybe nobody uses it? Looks like homebrew just grab the published binaries
  • Generating files here and here
  • A bunch of stuff for make install here

I feel like if we implement the last two, we should be set. I'm sure generating files is as simple as configure_file, but I've never dealt with install targets on cmake, and the docs always confuse me.

@slime73
Copy link
Member

slime73 commented Dec 29, 2023

LOVE_STBI_SSE2_OVERRIDE

I think that was for an older version of stb_image. It shouldn't be needed anymore.

An option to disable GME

We've completely removed GME support (whereas before you could compile love with it enabled but it wasn't built like that by default, at least on Windows/macOS) so that can go too.

@MikuAuahDark
Copy link
Contributor Author

Generating files here and here

Are those Debian-specific files still needed? All of the files listed there are at least 5 years old since its last commit. I don't think recent Debian uses those anymore, but I'm not sure.

A bunch of stuff for make install here

Do they just need to be placed in their respective directories or is there an additional program that needs to be run? I think GNUInstallDirs helps here.

Flags to disable specific modules. Again, I'm not sure we need to reproduce it. We probably could with some relatively simple cmake scripting, but I doubt anyone seriously uses it.

This is doable, but I'm not sure if we really need it. I remember someone asked in Discord if it's possible to disable specific modules compile-time.

@slime73
Copy link
Member

slime73 commented Dec 30, 2023

Compile-time module disabling isn't really maintained enough to know whether it works as expected right now I think (e.g. I'm not sure which combinations actually compile successfully these days). It'd be nice to polish it up and make it easily supported on all platforms, but maybe that's a separate task with a different priority.

@bartbes
Copy link
Member

bartbes commented Dec 31, 2023

Are those Debian-specific files still needed? All of the files listed there are at least 5 years old since its last commit. I don't think recent Debian uses those anymore, but I'm not sure.

I use them for ppa builds.

@MikuAuahDark MikuAuahDark added this to the 12.0 milestone Dec 31, 2023
@bartbes
Copy link
Member

bartbes commented Jan 6, 2024

Also requires a change to the appimage repo, see the corresponding PR here: love2d/love-appimage-source#4

@bartbes bartbes linked a pull request Jan 28, 2024 that will close this issue
@MikuAuahDark
Copy link
Contributor Author

LOVE 12 is no longer using Autotools for Linux build system.

@a-detiste
Copy link

Hi, Debian used to statically link liblove inside love executable. Is it still possible with CMake ?

@slime73
Copy link
Member

slime73 commented Feb 5, 2024

What sort of situation do you want that for?

@a-detiste
Copy link

...inertia... that's how other people did setup the autoconf build before me.

dh_auto_configure -- --disable-shared --enable-static --with-lua=$(LUA_IMPL)

If you say it's not supported anymore (/ or it never made any sense) it's fine,
we'll build a real liblove0.so

@slime73
Copy link
Member

slime73 commented Feb 5, 2024

Having a separate .so also lets people load and use love's APIs from a standalone Lua interpreter if they want (although it's pretty rare to want that.)

@a-detiste
Copy link

I've browsed https://repology.org/project/love/packages and I see that many distro that upgraded to 11.5 are using platform/unix/automagic but I don't want to go that way either.

Supporting a CMake build of love with the .so built-in woudl be the best.

@slime73
Copy link
Member

slime73 commented Feb 5, 2024

Proper robust cmake support for Linux (as well as the removal of the autotools build system) is part of the upcoming love 12 release, rather than love 11.5.

@a-detiste
Copy link

Ok so I guess I'll use automagic for 11.5 & CMake for 12, thanks for the clarification

https://src.fedoraproject.org/rpms/love/raw/rawhide/f/love.spec
https://raw.githubusercontent.com/termux/termux-packages/4291a36de/x11-packages/love/build.sh
https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/development/interpreters/love/11.nix#L34
https://gitlab.com/liguros/liguros-repo/-/raw/develop/games-engines/love/love-11.5.ebuild
https://gitweb.gentoo.org/repo/gentoo.git/plain/games-engines/love/love-11.5.ebuild

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
change Change to existing functionality Linux
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants