Commit Graph

301 Commits

Author SHA1 Message Date
Pāvels Nadtočajevs 61940e40ea
Check for unprefixed compilers when building on Windows. 2025-12-09 22:26:27 +02:00
Rémi Verschelde b87fcf7e79
Windows: Make Direct3D 12 the default RD driver for new projects
For compatibility reasons, `vulkan` is kept as the technical default for the
setting, but projects created in Godot 4.6 and later will set `d3d12` as the
driver automatically.

Users upgrading to 4.6 are recommended to adopt `d3d12` as a default if it
fits their needs.

Enable `d3d12=yes` by default in SCons so that custom Windows builds include
Direct3D 12 support.
2025-11-27 10:26:25 +01:00
Pāvels Nadtočajevs 985dfa7cda
Fix EnumDevices stall using IAT hooks.
Co-authored-by: Davi <davicr38@gmail.com>
2025-11-21 11:21:46 +02:00
Thaddeus Crews d86a428994
SCons: Enable mingw big objects in more contexts 2025-10-13 11:00:03 -05:00
Thaddeus Crews 7c033002b0
Merge pull request #110863 from kisg/libgodot_migeran_core
LibGodot: Core - Build Godot Engine as a Library
2025-10-08 13:56:34 -05:00
Gergely Kis 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
Thaddeus Crews b17aa3343a
Revert "SCons: Add `CPPEXTPATH` for external includes" 2025-10-06 13:09:22 -05:00
Ruw b23b0dde9a
Update detect.py
Fix UnicodeEncodeError on cp932 environments by adding errors="replace" to log file open
2025-09-18 19:32:03 +09:00
Thaddeus Crews 4dec6af2c8
Merge pull request #108613 from Repiteo/scons/fix-defines
SCons: Ensure `CPPDEFINES` is properly utilized
2025-09-16 11:44:45 -05:00
Lukas Tenbrink 4c0026b053 Update links to the contributing section of the docs to the appropriate new sections. 2025-09-12 01:04:14 +02:00
Thaddeus Crews 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
Thaddeus Crews 61956f2e06
SCons: Ensure `CPPDEFINES` is properly utilized 2025-07-14 13:07:53 -05:00
Nintorch 0b3496fb4f
Add support for SDL3 joystick input driver
Made possible by EIREXE, xsellier and the SDL team.

This commit includes statically linked SDL3 for Windows, Linux and macOS.
The vendored copy of SDL3 was setup to only build the required subsystems
for gamepad/joystick support, with some patches to be able to make it as
minimal as possible and reduce the impact on binary size and code size.

Co-authored-by: Álex Román Núñez <eirexe123@gmail.com>
Co-authored-by: Xavier Sellier <xsellier@gmail.com>
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2025-06-25 01:28:50 +02:00
Rémi Verschelde 5904f4f2d4
SCons: Fix support for compiling .S files on Windows/MinGW 2025-06-05 15:53:10 +02:00
Pāvels Nadtočajevs 617e12a6b4
[Windows] Drop support for Windows 7/8/8.1. 2025-05-30 17:30:23 +03:00
Pedro J. Estébanez 7759296594 Direct3D 12: Let platforms report support for direct composition 2025-05-14 17:48:19 +02:00
Adam Scott 1fbc0c5631
[Buildsystem] Add `EnumVariable(ignorecase=2)` 2025-04-29 13:35:40 -04:00
Pāvels Nadtočajevs 3e8c99b346
Fix `uiautomationcore` linking in 32-bit x86 MinGW builds. 2025-04-26 23:45:07 +03:00
Pāvels Nadtočajevs 46c690e4b2
[MinGW] Explicitly link `shell32` library. 2025-04-25 21:27:15 +03:00
Pāvels Nadtočajevs 43e9b04f66
Update Mesa-NIR library detection and download script. 2025-04-25 08:11:14 +03:00
bruvzg da1fca613f
Fix crash in release build with llvm-mingw. 2025-04-15 20:18:11 +03:00
Pāvels Nadtočajevs 4310cb82b8
AccessKit integration for macOS, Linux, and Windows. 2025-04-08 20:25:47 +03:00
Thaddeus Crews f25fc34439
SCons: Add `CPPEXTPATH` for external includes 2025-04-02 07:29:08 -05:00
Thaddeus Crews 7a28334596
SCons: Ensure MinGW as fallback if missing MSVC 2025-03-29 10:14:20 -05:00
Thaddeus Crews 10ed66f28c
SCons: Add emitter to declutter build objects 2025-03-15 12:08:24 -05:00
Thaddeus Crews 4505352021
SCons: Simplify Windows/MSVC detection 2025-03-09 10:45:32 -05:00
cafebeef 5201dfb34c Windows x86_64 GCC: Disable Theora assembly optimizations
Co-authored-by: Bernat Arlandis <berarma@hotmail.com>
2025-02-22 17:20:55 -06:00
Rémi Verschelde 26fd3458f9
Windows: Configure MinGW LTO with `-fno-use-linker-plugin -fwhole-program`
- Works around and closes #102867.
- Works around and closes #102982.

Co-authored-by: Hein-Pieter van Braam-Stewart <hp@tmm.cx>
2025-02-20 17:47:26 +01:00
Rémi Verschelde 90208f7dd4 SCons: Fix handling of platform-specific tools, notably `mingw`
Add optional `detect.py` `get_tools` method to let platforms register SCons
tools they need.

This helps move this logic out of SConstruct, keeping platforms more self
contained, and helping thirdparty platforms define their own custom tools.

This logic was also unreliable (the `use_mingw` one would only work if
passed manually on the command line, not in e.g. `get_flags`).

Co-authored-by: Thaddeus Crews <repiteo@outlook.com>
2025-01-25 13:59:30 +01:00
Rémi Verschelde 26db0bb15f SCons: Make `lto=auto` prefer ThinLTO over full LTO for LLVM targets
This speeds up build time considerably for these platforms compared to
using `lto=full`, which is sadly single-threaded with LLVM, unlike GCC.

Changes to default behavior of `lto=auto` (i.e. `production=yes`):
- Linux: Prefer ThinLTO for LLVM
- Web: Prefer ThinLTO
- Windows: Prefer ThinLTO for llvm-mingw

The following LLVM targets don't use LTO by default currently, which
needs to be assessed further (gains from LLVM LTO on performance need
to be weighed against the potential size increase from heavy inlining):
- Android
- iOS
- macOS
- Windows clang-cl
2025-01-09 13:03:58 +01:00
Thaddeus Crews a29294fddc
SCons: Refactor color output implementation 2025-01-07 18:44:53 -06:00
Thaddeus Crews 95b00295fb
Merge pull request #96447 from Repiteo/scons/clang-cl-compile_commands
SCons: Set appropriate prefix when using clang-cl
2024-12-19 19:59:45 -06:00
Pāvels Nadtočajevs a0300532b5 [Windows, LLVM] Fix `colorize` flag. 2024-12-18 21:00:32 +02:00
Rémi Verschelde f86b3696f6
SCons: Properly set SSE2 as baseline on x86_32
Setting it only for release templates on Windows and macOS was inconsistent,
and Jolt requires it as a minimum.

Drop the `-mxsave` flag from the raycast module, this doesn't seem to be
used explicitly by Embree, and unnecessarily makes our config and baseline
muddy.
2024-12-12 22:44:44 +01:00
Rémi Verschelde 6d326547da
Windows: Fix duplicate .exe extension with mingw on Linux/macOS
This old hack is no longer needed and now wrong after #98105.

Fixes #98967.
2024-11-08 16:46:35 +01:00
Thaddeus Crews fa65b70494
Merge pull request #98105 from Repiteo/scons/mingw-shenanigans
SCons: Extend `MinGW` support & checks
2024-11-07 12:36:32 -06:00
Thaddeus Crews 17f06f6dae
Merge pull request #97555 from dustdfg/platform_methods/extract_validate_arch
Build System: Extract `validate_arch` helper functions
2024-10-25 13:03:48 -05:00
Thaddeus Crews 14d201ab54
Merge pull request #97556 from dustdfg/platforms/windows_detect_extract_common_checks
Extract common check functions in windows_detect.py file
2024-10-24 13:22:40 -05:00
Thaddeus Crews 9968828913
SCons: Set appropriate prefix when using clang-cl 2024-10-24 10:22:32 -05:00
Thaddeus Crews d4dddd00cb
SCons: Extend `MinGW` support & checks 2024-10-11 14:24:00 -05:00
Thaddeus Crews a44f691fc7
CI: Add MinGW/GCC build to Windows GHA 2024-10-10 10:10:55 -05:00
Yevhen Babiichuk (DustDFG) 7aacdaa071 Build System: Extract `validate_arch` helper function
Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-10-06 07:50:49 +03:00
Yevhen Babiichuk (DustDFG) 9c50312f0d Extract common check functions in windows_detect.py file
Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-09-27 21:15:33 +03:00
Fabio Alessandrelli 395a4fc5f2 [SCons] Remove MAXLINELENGTH override for MSVC
It's not clear what is the actual max value that windows support, but
despite their claim of it being 8191 we have been seeing failure with
just 8150.
2024-09-26 12:06:16 +02:00
Rémi Verschelde 648b21b9ba
Merge pull request #96813 from Repiteo/scons/fix-clang-cl-flags
SCons: Fix `clang-cl` link/ar flags
2024-09-23 12:27:59 +02:00
Alvin Wong 454251660c Fix using Binutils AR with TEMPFILE on Windows
Set `TEMPFILEARGESCFUNC`[1] to replace backslashes with forward slashes
in paths.

[1]: https://scons.org/doc/production/HTML/scons-user/apa.html#cv-TEMPFILEARGESCFUNC
2024-09-19 22:19:15 +08:00
Rémi Verschelde 804d9775b5
Merge pull request #96407 from alvinhochun/mingw-ar-long-command-tempfile
Remove `ARFLAGS` hack for Windows, replace with `TEMPFILE`
2024-09-18 17:40:53 +02:00
Thaddeus Crews df0a88b128
SCons: Fix `clang-cl` link/ar flags 2024-09-10 13:48:53 -05:00
bruvzg b1f9271e49
[MinGW] Fix GCC ar detection. 2024-09-09 11:01:29 +03:00
Alvin Wong 28b95ff550 Remove ARFLAGS hack for Windows, replace with TEMPFILE
TEMPFILE is the built-in way of SCons to use a response file for command
lines that are too long.
2024-09-01 04:10:30 +08:00