LibGodot: Core - Build Godot Engine as a Library

* Add a new GodotInstance GDCLASS that provides startup and iteration commands to control a Godot instance.
* Adds a libgodot_create_godot_instance entry point that creates a new Godot instance and returns a GodotInstance object.
* Adds a libgodot_destroy_godot_instance entry point that destroys the Godot instance.

Sample Apps: https://github.com/migeran/libgodot_project

Developed by [Migeran](https://migeran.com)

Sponsors & Acknowledgements:

* Initial development sponsored by [Smirk Software](https://www.smirk.gg/)
* Rebasing to Godot 4.3 and further development sponsored by [Xibbon Inc.](https://xibbon.com)
* The GDExtension registration of the host process & build system changes were based
  on @Faolan-Rad's LibGodot PR: https://github.com/godotengine/godot/pull/72883
* Thanks to Ben Rog-Wilhelm (Zorbathut) for creating a smaller, minimal version for easier review.
* Thanks to Ernest Lee (iFire) for his support

Co-Authored-By: Gabor Koncz <gabor.koncz@migeran.com>
Co-Authored-By: Ben Rog-Wilhelm <zorba-github@pavlovian.net>
This commit is contained in:
Gergely Kis
2025-09-24 06:36:20 +02:00
parent c01c7b800d
commit 6c44c80c62
23 changed files with 752 additions and 16 deletions

View File

@@ -13,6 +13,11 @@ common_linuxbsd = [
"freedesktop_at_spi_monitor.cpp",
]
if env["library_type"] == "executable":
common_linuxbsd += ["godot_linuxbsd.cpp"]
else:
common_linuxbsd += ["libgodot_linuxbsd.cpp"]
if env["use_sowrap"]:
common_linuxbsd.append("xkbcommon-so_wrap.c")
@@ -35,7 +40,13 @@ if env["dbus"]:
if env["use_sowrap"]:
common_linuxbsd.append("dbus-so_wrap.c")
prog = env.add_program("#bin/godot", ["godot_linuxbsd.cpp"] + common_linuxbsd)
if env["library_type"] == "static_library":
prog = env.add_library("#bin/godot", common_linuxbsd)
elif env["library_type"] == "shared_library":
env.Append(CCFLAGS=["-fPIC"])
prog = env.add_shared_library("#bin/godot", common_linuxbsd)
else:
prog = env.add_program("#bin/godot", common_linuxbsd)
if env["debug_symbols"] and env["separate_debug_symbols"]:
env.AddPostAction(prog, env.Run(platform_linuxbsd_builders.make_debug_linuxbsd))