Skip to content

Replace premake5 build system with CMake for Linux#449

Closed
paralin wants to merge 1 commit intoDetanup01:devfrom
paralin:cmake-linux-build
Closed

Replace premake5 build system with CMake for Linux#449
paralin wants to merge 1 commit intoDetanup01:devfrom
paralin:cmake-linux-build

Conversation

@paralin
Copy link

@paralin paralin commented Mar 8, 2026

Hi, this is a draft PR because it's quite a massive change, but I found the premake5 and massive binary blob vendored submodules to be a bit unweildy and went and reworked this around the standard cmake + system deps approach. Please feel free to reject this PR if you don't want this level of churn, but in the interest of making it available to you in case you find it useful, here you go:

  • Replace premake5 + vendored dependency tarballs with CMake + system packages
  • Add CMakeLists.txt with all Linux targets (steamclient, libsteam_api, libsteamnetworkingsockets, tool_generate_interfaces, tool_lobby_connect)
  • Add cmake/toolchain-x86.cmake for 32-bit cross-compilation
  • Add build_linux.sh wrapper script for x64/x32 builds
  • Add BUILDING.md with instructions for Ubuntu, Fedora, Arch, and Gentoo
  • Replace 7 self-referencing branch submodules with single libssq submodule
  • Remove premake5.lua, premake5-deps.lua, and all premake/packaging scripts

CMake build uses standard find_package and pkg_check_modules to locate system-installed dependencies, eliminating the need for vendored tarballs and the bundled 7za extractor. mbedtls detection tries both unversioned and -3 suffixed pkg-config names for compatibility across distros.

Add CMakeLists.txt and supporting build scripts for building goldberg
on Linux using CMake instead of premake5. Uses system packages for all
dependencies (protobuf, zlib, curl, mbedtls, opus, portaudio, abseil).

Includes cross-compilation toolchain for 32-bit builds and prefers
mbedtls-3 pkg-config names for Gentoo slotted installs.

Signed-off-by: Christian Stewart <christian@aperture.us>
@paralin paralin force-pushed the cmake-linux-build branch from bcc8ca7 to d779757 Compare March 8, 2026 00:44
@Detanup01
Copy link
Owner

This is nice and good but then what the fuck do i do if i build it on windows?
And what if I want to stick with a specific version since newest changes something drastically?

Bonus but that's just my opinion: replacing one build system with another... do you want to change that whenever something new goes or something gets completely reworked/deleted? I hate every single c build system because it's just not got at all

@paralin
Copy link
Author

paralin commented Mar 9, 2026

You're right about windows, cmake should work there actually, but the dependencies are another question. I'm not a windows user at all so that didn't really occur to me before. Technically we could add all the submodules for dependencies and use cmake to build them all on windows along with the emulator. This pr replaced the other make system entirely. I mean, you would be able to ping me to look at fixing things when they change if you want. But from the general tone of your message I feel like this isn't in your appetite so I'll close for now - lmk if otherwise. Thanks for this fork.

@paralin paralin closed this Mar 9, 2026
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.

2 participants