Commit Graph

577 Commits

Author SHA1 Message Date
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
1901466d0d Buildsystem: Unify compatibility aliases
Signed-off-by: Yevhen Babiichuk (DustDFG) <dfgdust@gmail.com>
2024-11-11 08:05:02 +02:00
95c6a24795 Add a utility cache line size constant 2024-11-08 08:06:01 +01:00
f41ec91c44 Merge pull request #97813 from dustdfg/module_check_dependencies_recursively
Make module dependency check recursive
2024-10-29 19:25:39 -05:00
748f4079e3 Merge pull request #96439 from darksylinc/matias-TheForge-pr03-rebased
Add Swappy & Pre-Transformed Swapchain
2024-10-29 12:34:40 -07:00
aaa0e2fddf Add Swappy & Pre-Transformed Swapchain
- Adds Swappy for Android for stable frame pacing
- Implements pre-transformed Swapchain so that Godot's compositor is in
charge of rotating the screen instead of Android's compositor
(performance optimization for phones that don't have HW rotator)

============================

The work was performed by collaboration of TheForge and Google. I am
merely splitting it up into smaller PRs and cleaning it up.

Changes from original PR:

- Removed "display/window/frame_pacing/android/target_frame_rate" option
to use Engine::get_max_fps instead.
- Target framerate can be changed at runtime using Engine::set_max_fps.
- Swappy is enabled by default.
- Added documentation.
- enable_auto_swap setting is replaced with swappy_mode.
2024-10-28 18:55:37 -03: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
705f51f97e SCons: Bump C standard: C11C17 2024-09-29 11:23:24 -05:00
422306ef87 Merge pull request #97325 from BlueCube3310/bcdec
Replace squish with bcdec for BC decompression
2024-09-29 00:47:02 +02:00
1043c00137 SCons: Detect msvc compiler version
• C standard now passed on msvc if the version is supported
2024-09-27 11:16:33 -05:00
2167157aaf Replace squish with bcdec for BC decompression 2024-09-26 14:42:54 +02:00
9f9ee0c813 SCons: Add unobtrusive type hints in SCons files 2024-09-25 09:34:35 -05:00
df29cc696f [Core] Optionally delete Ref nullptr comparisons
Adds an optional (default false) compile option to enable comparing
`Ref` to `nullptr` to ensure correct use, as well as future expandsion
for more general dev checks (enabled with `dev_mode`)
2024-09-12 11:26:49 +02:00
acffc53e01 [Buildsystem] Improve cache handling
Prevents cache issues by not purging cache before starting a build.
Splits cache purge related code from progress code and delays the purge
until after final build is done.
2024-09-09 16:36:56 +02:00
0d40efbe66 Build: make ninja output file consistent
After upgrading, I noticed that the SCons ninja output had a different
filename which messed up the "flaky file" logic.

This patch explicitly passes it to the tool and switches to
`build.ninja` (ninja's default).
2024-09-08 16:30:29 +02:00
4c84cb6ae8 SCons: Pass /Zc:__cplusplus in MSVC builds 2024-09-05 11:44:57 -05:00
346cbc7f1f Add support for compiling with VS clang-cl toolset 2024-08-28 13:30:44 -05:00
bd04f687f0 Merge pull request #87376 from shana/add-num-jobs-option
SCons: Add `num_jobs` as an explicit option so it can be set from other sources
2024-08-28 00:10:23 +02:00
7ce65f54be Merge pull request #95504 from mihe/ninja-options
Expose more Ninja-related build options
2024-08-26 23:28:55 +02:00
9cbc3f1419 Change warning muting so it affects all levels, but locally 2024-08-26 13:13:29 +02:00
0ba0be27c7 Merge pull request #94169 from RandomShaper/wtp_rl_prize
Batch of fixes for `WorkerThreadPool` and `ResourceLoader`
2024-08-26 10:51:25 +02:00
6e9bcc0f18 SCons: Better validation for platform-specific opt-in drivers
This replaces cryptic compilation errors with a clear error message
and early build termination.
2024-08-21 22:53:34 +02:00
f4d76853b9 WorkerThreadPool (plus friends): Overhaul unlock allowance zones
This fixes a rare but possible deadlock, maybe due to undefined behavior. The new implementation is safer, at the cost of some added boilerplate.
2024-08-21 12:22:52 +02:00
2d0165574d Add Metal support for macOS (arm64) and iOS 2024-08-20 12:11:06 +02:00
807904d951 Enable standards conformance for MSVC 2024-08-19 14:44:09 +02:00
a387c26770 Expose more Ninja-related build options 2024-08-13 23:54:39 +02:00
400800a86c Make sure not to generate the compile_commands.json when not asked 2024-08-09 23:42:38 +02:00
d2064fea52 SCons: Load optional ninja tool before setting its options
SCons 4.8.0 made this stricter, as we were advised in #94805.

Fixes #94805.
2024-07-31 23:03:59 +02:00
4e5ed0bbfb Merge pull request #93753 from Repiteo/scons/visual-studio-fixes
SCons: Fix output with `vsproj=yes`
2024-07-22 17:30:25 +02:00
e4b16e2d71 Add num_jobs as an explicit option so it can be set from other sources
The `-j` flag is only settable via the command line, which makes it hard
to configure when running builds from places like VS, where the flag isn't
easily exposed or configurable.

This lets users configure the number of jobs to be used by default if `-j`
isn't specified, instead of always defaulting to number of cores - 1.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2024-07-19 15:21:04 +02:00
543f694e2c Merge pull request #94109 from akien-mga/scons-linker-optflags
SCons: Pass optimization flags to the linker too, needed by Emscripten
2024-07-11 00:27:17 +02:00
3d553eccdf [Web] Fix debug symbols in web builds 2024-07-10 14:18:57 +02:00
7d708626a3 SCons: Pass optimization flags to the linker too, needed by Emscripten 2024-07-09 09:34:02 +02:00
8897c77d50 SCons: Default optimize to auto, fixing target/dev_build inference for Web
Fixes #94087.
2024-07-09 00:21:29 +02:00
8a24f44fe5 SCons: Fix output with vsproj=yes 2024-06-29 13:11:19 -05:00
0c6dbbd050 Fix not using encoding="utf-8" when writing to files or reading from them
Co-authored-by: ChristopheClaustre <christophe.claustre.31@gmail.com>
2024-06-19 23:35:03 +08:00
0d11108a01 Merge pull request #79126 from bruvzg/SteamTime
Enable optional minimal SteamAPI integration for usage time tracking (editor only).
2024-06-03 12:42:38 +02:00
c34d64669e Enable optional minimal SteamAPI integration for usage time tracking (editor only). 2024-05-31 11:01:02 +03:00
37cf266b57 SCons: Process platform-specific flags earlier
Some of the logic in SCons depends on flags that get overridden in the
platform-specific `detect.py`, so it needs to be processed first.

For example the Android/iOS/Web platforms override the default `target`
to `template_debug`, but this was processed too late so e.g. the logic
that sets `env.editor_build` would set it to true due to the default
`target` value in the environment being `editor`.
2024-05-30 16:01:43 +02:00
5d265e9a7e SCons: Minor fixes/adjustments for web compilation 2024-05-24 12:30:24 -05:00
896b003cc8 SCons: Convert platform get_flags to dictionary 2024-05-22 13:53:20 -05:00
d9f8ef68df Update pre-commit hooks configuration to use ruff instead of black 2024-05-21 18:02:29 -05:00
a9810cffb4 SCons: Fix potential Windows ANSI exception 2024-05-18 13:14:31 -05:00
a63c37dca1 SCons: Bump min version to 3.1.2, test it on CI with one Linux job
The min SCons version had to be bumped as SCons 3.0 before 3.0.3 seems
broken (see #92043), and there's little gain from supporting 3.0.3-3.0.5.

3.1.2 is also the first version to avoid ambiguities between Python 2
and Python 3 usage, so we finally use it as the minimum baseline.

Also test against Python 3.6 which is also our minimum supported version.
This should help prevent regressions whenever we modernize the build scripts.
2024-05-17 11:18:57 +02:00
856fbc68b3 SCons: Restore compatibility with SCons < 4.0.0
Fixes #91986.
2024-05-17 09:01:07 +02:00
2818abe9ed [SCons] Add options to override AR, AR and RC flags, 2024-05-15 13:03:17 +03:00
5ae85fc6ab Merge pull request #91833 from akien-mga/scons-min-gcc-version-9
SCons: Bump minimum supported GCC version to GCC 9
2024-05-14 18:09:54 +02:00
c5395d3ce2 Merge pull request #91866 from programneer/dont-splash-my-editor
Don't define `NO_EDITOR_SPLASH` in export templates
2024-05-13 12:05:56 +02:00
efaba30116 Don't define NO_EDITOR_SPLASH in export templates 2024-05-12 13:12:56 +02:00