Commit Graph

298 Commits

Author SHA1 Message Date
6c44c80c62 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>
2025-10-07 02:15:41 +02:00
038f5934e7 [Apple embedded] Adopt SwiftUI lifecycle for Apple embedded platforms
- Introduces a SCons builder for Swift files
- Increases the minimum deployment targets to iOS 14.0, and visionOS 26.0.
- Replaces manually UIWindow management by a SwiftUI instantiated app.
2025-09-22 18:20:04 -07:00
d9a77a42ee SCons: Fix dlltool on Windows MinGW builds
- Expand `env.Run` function to accept optional command string, because we can't just call `env.Action` for some reason
2025-08-18 18:49:50 -05:00
87a7c1df93 Add module defines to the per-platform generated props file so VS knows which ones are enabled. 2025-06-19 14:42:57 +02:00
88181c86b5 Disable posix mode in shlex.split for windows 2025-06-17 05:59:21 +09:00
47971c0a27 Introduce 'visionos' platform derived from 'apple_embedded' 2025-05-19 15:47:01 -07:00
457299449d Introduce 'drivers/apple_embedded' abstract platform for code reuse 2025-05-19 15:37:13 -07:00
39b16bcc3c SCU - hide SCU folders by adding "." to foldername 2025-05-11 07:02:36 +01:00
6e7f77adc4 Fix issue where vsproj=yes vsproj_gen_only=no sometimes fails to build
Assigning `env["CCFLAGS"]` directly to a variable causes any changes to that
variable to also be done to the original env object. This means CCFLAGS would
be modified during generation of the VS project with additional flags and
other options set by platforms.

This would normally not be noticed when just generating the project, but when
generating and building at the same time with a compiler that doesn't support
VS-style flags, this flag leakage can cause unexpected build failures.
2025-04-10 15:06:38 +02:00
4362b11557 Merge pull request #103405 from van800/shakhov/macosx
Fix `.sln` project generation logic for Rider to support all OS and all C++ toolchains
2025-04-09 08:51:45 -05:00
6ff86e49cf Fix .sln project generation logic for Rider to support all OS and all C++ toolchains
Co-authored-by: Andreia Gaita <shana@spoiledcat.net>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2025-04-08 15:40:05 +02:00
01f0bd36a4 SCons: Integrate WARNLEVEL & OPTIMIZELEVEL 2025-04-03 18:10:29 -05:00
32de6285a8 SCons: Modernize shader builders 2025-03-29 11:51:54 -05:00
2b1f463de5 SCons: Refactor color.py 2025-03-25 12:27:35 -05:00
10ed66f28c SCons: Add emitter to declutter build objects 2025-03-15 12:08:24 -05:00
de33bd2b7c CI: Trim cache before saving 2025-03-14 14:05:02 -05:00
be429eb404 SCons: Make builders prettier, utilize constexpr 2025-03-11 18:31:20 -05:00
77e9f55c51 Merge pull request #102676 from adamscott/add-web-library-emitter
[Web] Add library emitter to make sources dependent of compiler version
2025-03-11 16:53:53 -05:00
4505352021 SCons: Simplify Windows/MSVC detection 2025-03-09 10:45:32 -05:00
96fdaa616b Style: Integrate #pragma once in builders/checks 2025-03-07 17:32:33 -06:00
2949ab0707 SCons: Implement minor fixes 2025-03-01 08:53:53 -06:00
02cc1ec95b [Web] Add library emitter to make sources dependent of compiler version 2025-02-10 16:18:35 -05:00
382c760ea6 SCons: Apply new ruff/mypy fixes 2025-02-03 09:55:09 -06:00
b12ca37be6 [Buildsystem] Break after purging cache 2025-01-17 12:29:24 +01:00
73278bf35d SCons: Properly NoCache all text files 2025-01-16 16:59:12 -06:00
a29294fddc SCons: Refactor color output implementation 2025-01-07 18:44:53 -06:00
b536b3e12d SCons: Don't update node count when empty 2024-12-21 11:13:27 -06:00
df6ac3973e SCons: Fix minor show_progress issues 2024-12-17 09:27:32 -06:00
182b4741ea Merge pull request #93479 from Repiteo/scons/better-colored-output
SCons: Improve colored output
2024-12-17 16:18:41 +01:00
7c4c1100e0 Improving detection of ccache on Mac
Before this commit, ccache where only used on Mac when
`OSXCROSS_ROOT` was defined. Now, it could be used even
when that envirnment variable is not defined.
2024-12-13 09:50:27 -03:00
d8761f2c79 SCons: Improve colored output 2024-12-10 11:44:48 -06:00
070aeb5688 SCons: Fix MSVC bypassing disabled warnings 2024-12-09 11:49:42 -06:00
1c522c9f0c [Buildsystem] Fix path format for SCU builds on Windows 2024-11-24 15:33:47 +01:00
b25c7e31ea Merge pull request #99501 from AThousandShips/fix_cache_time
[Buildsystem] Prevent cache check mangling access time
2024-11-21 17:56:52 -06:00
579c19a9ce Merge pull request #99274 from shana/vsproj-calculate-dependencies
Use scons to calculate all the sources needed for vsproj generation.
2024-11-21 17:56:50 -06:00
31c8aadc47 [Buildsystem] Prevent cache check mangling access time
Checking for text files using `open` changes `atime`, which breaks cache
access sorting, this ensures the cache access time is preserved.
2024-11-21 19:30:27 +01:00
84db024f6f Use scons to calculate all the sources needed for vsproj generation.
Scons knows every file - sources, headers, etc - that the binary depends on,
and trying to figure that out manually is just too prone to error.
2024-11-21 11:11:35 +01:00
c9acbf5a79 SCons: Fix up build after cache logic changes 2024-11-15 18:18:12 +01:00
6c9337de36 Merge pull request #99217 from dustdfg/refactor_compiler_min_detection
Buildsystem: Refactor compiler detection code
2024-11-15 10:42:42 -06:00
0e4a4e3c4d SCons: Improve cache purging logic
• Implement caching via SCons arguments, rather than environment variables
2024-11-15 08:29:58 -06:00
d55ed0cb15 Buildsystem: Refactor compiler detection code
* Delete old check for gcc 8 as we support 9 or higher
* Flatten branches for clang and apple clang
* Renamed is_vanilla_clang to is_apple_clang to be more clear

Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-11-15 12:59:46 +02:00
49023c0f7d Merge pull request #99138 from dustdfg/remove_old_vs_proj_code
Delete old unused code for VS project generation
2024-11-13 08:34:13 -06:00
216488ad9b Delete old unused code for VS project generation
Also ensured that sorting of files for hashing actually happens

Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-11-12 21:26:12 +02:00
66fe2c8b44 SCons: Bump minimum SCons & Python versions
SCons: 3.1.2 → 4.0
Python: 3.6 → 3.8
2024-11-12 11:30:24 -06:00
0c4575b4e5 Delete old function for parsing CG shaders
This lonely dinosaur was overlooked by a meteor. Its family was
killed but it managed to survive until today. People noticed him
but they didn't understood he should be dead... So our dino even
got medicine on a level of all other animals of our zoo. Good bye!

All the CG and HLSL functions (except this) were removed years ago
when GLSL2 shaders support was added:

Look at: eac4c984df

Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-11-08 21:47:03 +02:00
32e2b45430 Replace _find_scu_section_name function with SCons builtins
Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-11-06 11:29:08 +02:00
180f079fa7 Remove pre-Visual Studio 2017 detection code in the buildsystem
Visual Studio 2017 or later has been required to build Godot for a while now.
2024-11-05 13:54:15 +01:00
81a032337c Deleted stale check. Now SCons supports globbing with # inside path
Some parts of the buildsystem already were using it with `#` in path

Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-11-02 22:20:17 +02:00
8e75e029b3 Make module dependency check recursive
The `env.disabled_modules` and `methods.disable_module` weren't used anywhere
so the first one was repurposed and the second just deleted

Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-10-23 08:26:22 +03:00
607585e22b SCons: Fix MSVC version check for VS Preview 2024-10-02 14:08:53 +02:00