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:
15
SConstruct
15
SConstruct
@ -264,6 +264,14 @@ opts.Add(
|
||||
True,
|
||||
)
|
||||
)
|
||||
opts.Add(
|
||||
EnumVariable(
|
||||
"library_type",
|
||||
"Build library type",
|
||||
"executable",
|
||||
("executable", "static_library", "shared_library"),
|
||||
)
|
||||
)
|
||||
|
||||
# Thirdparty libraries
|
||||
opts.Add(BoolVariable("builtin_brotli", "Use the built-in Brotli library", True))
|
||||
@ -556,6 +564,13 @@ if not env["deprecated"]:
|
||||
if env["precision"] == "double":
|
||||
env.Append(CPPDEFINES=["REAL_T_IS_DOUBLE"])
|
||||
|
||||
# Library Support
|
||||
if env["library_type"] != "executable":
|
||||
if "library" not in env.get("supported", []):
|
||||
print_error(f"Library builds unsupported for {env['platform']}")
|
||||
Exit(255)
|
||||
env.Append(CPPDEFINES=["LIBGODOT_ENABLED"])
|
||||
|
||||
# Default num_jobs to local cpu count if not user specified.
|
||||
# SCons has a peculiarity where user-specified options won't be overridden
|
||||
# by SetOption, so we can rely on this to know if we should use our default.
|
||||
|
||||
Reference in New Issue
Block a user