feat: Add experimental Linux build support#25
Open
killerdevildog wants to merge 1 commit intoGloriousPtr:mainfrom
Open
feat: Add experimental Linux build support#25killerdevildog wants to merge 1 commit intoGloriousPtr:mainfrom
killerdevildog wants to merge 1 commit intoGloriousPtr:mainfrom
Conversation
Add Linux build support for ArcGameEngine, enabling compilation and execution on Linux systems without modifying any third-party vendor source code. Build Fixes: - Add #include <cstdint> to arcpch.h to provide fixed-width integer types (uint32_t, uint64_t, etc.) before vendor headers are included - Add forceincludes for <cstdint> in JoltPhysics premake5.lua on Linux, since JoltPhysics compiles as a separate static library and does not use Arc's precompiled header - Add build-time patch in GenerateMake.sh that inserts a NULL stub for the missing setWindowTitleBar function pointer in GLFW's x11_init.c platform struct. This is an upstream bug in MohitSethi99/glfw where the X11 platform struct initializer is missing the setWindowTitleBar entry that exists in win32_init.c and null_init.c, causing every function pointer after it to be assigned to the wrong slot Documentation: - Add Linux build section to README with dependency installation and build instructions for Ubuntu/Debian - Update platform badge to reflect Windows (Primary) | Linux (Experimental) Tested on Ubuntu/Debian with Clang 18.1.3. The full project (all vendor libraries, Arc core, and Arc-Editor) builds and runs successfully.
This was referenced Feb 21, 2026
dfcf976 to
f7a5add
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add experimental Linux build support for ArcGameEngine. The project now compiles and runs on Linux without modifying any third-party vendor source code.
What Works
Changes
Arc/src/arcpch.h#include <cstdint>to the precompiled header, ensuring fixed-width integer types (uint32_t,uint64_t, etc.) are available before any vendor headers are included.Arc/vendor/JoltPhysics/premake5.luaforceincludes { "cstdint" }under the Linux filter. JoltPhysics compiles as a separate static library with its own translation units, so it does not use Arc's precompiled header. This ensures<cstdint>is implicitly included before each JoltPhysics source file on Linux.scripts/GenerateMake.shAdd a build-time patch that inserts a
NULLstub for the missingsetWindowTitleBarfunction pointer in GLFW'sx11_init.c. The patch is idempotent (only applies if not already present) and includes a guard to prevent double-application.Background: The upstream GLFW fork (
MohitSethi99/glfw) has a bug where the X11 platform struct initializer is missing thesetWindowTitleBarentry that exists in bothwin32_init.candnull_init.c. This causes every function pointer after that slot to be assigned to the wrong position, resulting in type mismatch compilation errors. The Wayland init (wl_init.c) has the same issue.README.mdKnown Limitations / Future Work
These should be addressed in separate PRs:
GLFW upstream fix needed — The
setWindowTitleBarfunction pointer is missing from bothx11_init.candwl_init.cin MohitSethi99/glfw. A PR should be submitted to that repo to add the proper function entries. Once merged, the build-time patch inGenerateMake.shcan be removed.Wayland support — The build currently targets X11 only. Wayland has the same missing function pointer issue and is not yet tested.
Shader warnings — The editor runs but produces
m_Params used uninitializedshader warnings at startup. These are pre-existing and not related to this PR.CI/CD — No Linux CI pipeline exists yet. A GitHub Actions workflow for Linux builds would help catch regressions.
Testing
build-essential,clang,libc++-dev,libstdc++-14-dev