Commit Graph

513 Commits

Author SHA1 Message Date
A Thousand Ships 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
Riteo 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
Thaddeus Crews 4c84cb6ae8
SCons: Pass `/Zc:__cplusplus` in MSVC builds 2024-09-05 11:44:57 -05:00
Alula 346cbc7f1f
Add support for compiling with VS clang-cl toolset 2024-08-28 13:30:44 -05:00
Rémi Verschelde 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
Rémi Verschelde 7ce65f54be
Merge pull request #95504 from mihe/ninja-options
Expose more Ninja-related build options
2024-08-26 23:28:55 +02:00
Pedro J. Estébanez 9cbc3f1419 Change warning muting so it affects all levels, but locally 2024-08-26 13:13:29 +02:00
Rémi Verschelde 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
Rémi Verschelde 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
Pedro J. Estébanez 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
Stuart Carnie 2d0165574d
Add Metal support for macOS (arm64) and iOS 2024-08-20 12:11:06 +02:00
Mikael Hermansson 807904d951 Enable standards conformance for MSVC 2024-08-19 14:44:09 +02:00
Mikael Hermansson a387c26770 Expose more Ninja-related build options 2024-08-13 23:54:39 +02:00
Hakim 400800a86c Make sure not to generate the compile_commands.json when not asked 2024-08-09 23:42:38 +02:00
Rémi Verschelde 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
Rémi Verschelde 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
Andreia Gaita 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
Rémi Verschelde 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
Fabio Alessandrelli 3d553eccdf [Web] Fix debug symbols in web builds 2024-07-10 14:18:57 +02:00
Rémi Verschelde 7d708626a3
SCons: Pass optimization flags to the linker too, needed by Emscripten 2024-07-09 09:34:02 +02:00
Rémi Verschelde 8897c77d50
SCons: Default `optimize` to `auto`, fixing `target`/`dev_build` inference for Web
Fixes #94087.
2024-07-09 00:21:29 +02:00
Thaddeus Crews 8a24f44fe5
SCons: Fix output with `vsproj=yes` 2024-06-29 13:11:19 -05:00
Kusok 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
Rémi Verschelde 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
bruvzg c34d64669e
Enable optional minimal SteamAPI integration for usage time tracking (editor only). 2024-05-31 11:01:02 +03:00
Rémi Verschelde 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
Thaddeus Crews 5d265e9a7e
SCons: Minor fixes/adjustments for web compilation 2024-05-24 12:30:24 -05:00
Thaddeus Crews 896b003cc8
SCons: Convert platform `get_flags` to dictionary 2024-05-22 13:53:20 -05:00
Jakub Marcowski d9f8ef68df
Update pre-commit hooks configuration to use `ruff` instead of `black` 2024-05-21 18:02:29 -05:00
Thaddeus Crews a9810cffb4
SCons: Fix potential Windows ANSI exception 2024-05-18 13:14:31 -05:00
Rémi Verschelde 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
Rémi Verschelde 856fbc68b3
SCons: Restore compatibility with SCons < 4.0.0
Fixes #91986.
2024-05-17 09:01:07 +02:00
bruvzg 2818abe9ed [SCons] Add options to override AR, AR and RC flags, 2024-05-15 13:03:17 +03:00
Rémi Verschelde 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
Rémi Verschelde 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
Programneer efaba30116 Don't define NO_EDITOR_SPLASH in export templates 2024-05-12 13:12:56 +02:00
Rémi Verschelde a04ba55790
SCons: Bump minimum supported GCC version to GCC 9
- GCC 7 supports C++17 but seems to have breaking regressions, see #79352.
- GCC 8 broke C++17 guaranteed copy elision support, fixed in 8.4, but...
- GCC 9 is old enough (2022) to use as a baseline and stop dealing with
  unmaintained and less efficient compiler versions.
2024-05-11 15:19:33 +02:00
Rémi Verschelde d4d0e34bb4
SCons: Preserve `Environment` values when updating `Variables`
Finally reading the docs for `SCons.Variables.Update` let me find this optional
parameter, which solves the hacks and pain we've dealt with for years:

> args (optional) – a dictionary of keys and values to update in env.
> If omitted, uses the variables from the commandline.

By passing the environment itself, we preserve the values we've overridden in
`SConstruct` or `detect.py`.
2024-05-10 16:57:23 +02:00
Thaddeus Crews 34fb3f7730
SCons: Generate all scripts natively 2024-05-07 15:30:45 -05:00
Thaddeus Crews e0e8ce1fc0
SCons: Colorize warnings/errors during generation 2024-04-28 16:24:48 -05:00
Thaddeus Crews fd2ab721e2
SCons: `scons_version` to environment variable 2024-04-24 09:41:12 +02:00
Thaddeus Crews e115f478ea
SCons: Only use alias if SCons v4.3 or later 2024-04-23 11:48:28 -05:00
Thaddeus Crews 5a87f0da21
SCons: Utilize native Variable alias functionality 2024-04-18 09:27:26 -05:00
Thaddeus Crews 41fee42c40
SCons: Convert `env_base` to `env` 2024-04-17 12:26:20 -05:00
Programneer 2980593995 Only define ENGINE_UPDATE_CHECK_ENABLED in editor builds 2024-04-17 10:00:48 +02:00
kobewi 49e69fabba Add automatic checking for engine updates 2024-04-15 15:08:27 +02:00
Rémi Verschelde e5c689d028
SCons: Make new debug_paths_relative option opt-in
As pointed out in https://github.com/godotengine/godot/pull/78232#issuecomment-2056467297,
it actually makes it harder to run Godot locally while keeping the relationship with the
header files it was compiled from.
2024-04-15 12:19:36 +02:00
Rémi Verschelde 74e6b5a059
SCons: Add GCC/Clang option to make debug file paths relative 2024-04-12 10:08:03 +02:00
Rémi Verschelde 7e4c150573
SCons: Fix up build with Python 3.10
It gives:

> SyntaxError: f-string expression part cannot include a backslash

Follow-up to #90214.
2024-04-05 13:14:41 +02:00
Thaddeus Crews c6995be6e4
SCons: Refactor `selected_platform` conditional 2024-04-04 12:38:58 -05:00