Commit Graph

373 Commits

Author SHA1 Message Date
Rémi Verschelde
f94df6fa2b
SCons: Make compilation database generation optional
Saves around 3 s on incremental rebuilds to have it disabled by default.
Can be enabled with `compiledb=yes`.
2022-02-09 09:20:53 +01:00
Rémi Verschelde
d4553c5126
SCons: Add fast_unsafe option for faster rebuilds
This reverts #53828 which had caused a significant drop in incremental
rebuild time for debug builds (from 10s to 23s on my laptop).

The "faster but unsafe" options are re-added, as well as adding
`max_drift=60` which we didn't use previously.

These options speed up SCons' own processing of the codebase to decide
what to build/rebuild (i.e. the first step before actually calling the
compiler). This will therefore not make much difference for scratch
builds, and is mostly useful for incremental rebuilds (including "null"
rebuilds with no change).

These options are enabled automatically for `debug` builds, unless
`fast_unsafe=no` is passed.
They are disabled by default for `release` and `release_debug` builds,
unless `fast_unsafe=yes` is passed.
2022-02-08 15:45:22 +01:00
Emmanuel Leblond
9b781d24c0
Improve python helper modules declaration in SConstruct for compatibility with Python 3.6 and import against helper modules's parent path 2022-01-13 21:54:04 +01:00
Emmanuel Leblond
ad2b0ac8bd Explicitly declare python helper modules in SConstruct to avoid unexpected shadowing 2022-01-12 15:09:46 +01:00
Rémi Verschelde
d98d327868
Merge pull request #56308 from Calinou/scons-tweak-target-release-error-message 2022-01-12 12:24:34 +01:00
Rémi Verschelde
6bb6d36816
Revert "Print a warning with unknown SCons variables to ease troubleshooting" 2022-01-06 12:23:14 +01:00
Hugo Locurcio
44b68bd3b6
Improve error when attempting to build with tools=yes target=release 2021-12-29 01:46:36 +01:00
Rémi Verschelde
7ac9ea75cc
Rename VideoPlayer to VideoStreamPlayer for consistency
It's a player for `VideoStream` resources, just like `AudioStreamPlayer` is a
player for `AudioStream` resources.

Closes https://github.com/godotengine/godot-proposals/issues/3624.
2021-12-06 19:01:28 +01:00
Rémi Verschelde
c283fce698
Remove editor splash screen with sponsors logo
The Godot Project Leadership Committe has decided to update the sponsoring
tiers so that the Platinum Sponsorship no longer includes a logo on the
editor splash screen.

This lets us reclaim the editor splash screen space for community-related
content instead of sponsors (e.g. a different community-designed splash
screen for each stable branch?).

Also removes two Platinum Sponsors whose sponsorship has expired earlier this
year.
2021-11-30 12:47:25 +01:00
Hugo Locurcio
69b2d3f791
Print a warning with unknown SCons variables to ease troubleshooting
When disabling specific modules, misspellings can occur. Additionally,
when switching between the `3.x` and `master` branches frequently,
it's possible to forget about renamed modules such as `lightmapper_cpu`
versus `lightmapper_rd`.
2021-11-21 17:32:15 +01:00
Fabio Alessandrelli
46fdba5f8b [HTML5] Add WebGL2 (GLES3) support using the OpenGL renderer.
Note, the editor build requires the mbedtls module to be manually
enabled, as it is currently needed as a ResourceUID dependency.

This will need to be addressed in a separate PR.
2021-11-19 16:59:27 +01:00
bruvzg
1ad14eb14b [macOS] Add support for OpenGLES3 video driver. 2021-11-02 13:11:55 +02:00
Clay John
8a10bb7d0d
Use OpenGL 3.3 core profile instead of compatibility profile
- Rename OpenGL to GLES3 in the source code per community feedback.
  - The renderer is still exposed as "OpenGL 3" to the user.
- Hide renderer selection dropdown until OpenGL support is more mature.
  - The renderer can still be changed in the Project Settings or using
    the `--rendering-driver opengl` command line argument.
- Remove commented out exporter code.
- Remove some OpenGL/DisplayServer-related debugging prints.
2021-10-31 15:56:45 +01:00
Hugo Locurcio
ce97ddbcb1
Rename GLES2 driver to OpenGL to prepare for the upgrade to GLES3
- Use lowercase driver names for the `--rendering-driver`
  command line argument.
2021-10-30 02:05:49 +02:00
lawnjelly
e3491a3744
Add GLES2 2D renderer + Linux display manager
First implementation with Linux display manager.

- Add single-threaded mode for EditorResourcePreview (needed for OpenGL).

Co-authored-by: clayjohn <claynjohn@gmail.com>
Co-authored-by: Fabio Alessandrelli <fabio.alessandrelli@gmail.com>
2021-10-30 02:05:48 +02:00
Rémi Verschelde
1efe7093be
Merge pull request #53833 from akien-mga/remove-webm-support 2021-10-15 17:33:06 +02:00
Rémi Verschelde
ae74e78909
Remove WebM support (and deps libvpx and opus)
We've had many issues with WebM support and specifically the libvpx library
over the years, mostly due to its poor integration in Godot's buildsystem,
but without anyone really interested in improving this state.

With the new GDExtensions in Godot 4.0, we intend to move video decoding to
first-party extensions, and this would likely be done using something like
libvlc to expose more codecs.

Removing the `webm` module means we can remove libsimplewebm, libvpx and
opus, which we were only used for that purpose. Both libvpx and opus were
fairly complex pieces of the buildsystem, so this is a nice cleanup.

This also removes the compile-time dependency on `yasm`.

Fixes lots of compilation or non-working WebM issues which will be linked
in the PR.
2021-10-15 12:09:11 +02:00
Rémi Verschelde
cd21cc683a
SCons: Set DEBUG_ENABLED and DEV_ENABLED in SConstruct
They're the same for all platforms so they don't need to be repeated in all
platform definitions.
2021-10-15 10:26:58 +02:00
Rémi Verschelde
e2bfb27efb
Merge pull request #53829 from akien-mga/scons-py3.6 2021-10-15 10:24:41 +02:00
Rémi Verschelde
f374edbeee
SCons: Increase min Python version to 3.6
Current SCons 4.2.0 still supports Python 3.5 but deprecated it, and support
will be removed in the next release.

It's also become needlessly restrictive to prevent ourselves from using Python
3.6 f-Strings, so it's time to up the requirement.
2021-10-15 09:55:57 +02:00
Rémi Verschelde
0433d0f54d
SCons: Remove MD5-timestamp and implicit cache optimizations
They haven't really helped save much time on incremental rebuilds, and they do
cause potential issues with build correctness (and possibly even one of the cause
for overly eager incremental rebuilds).
2021-10-15 09:43:23 +02:00
jfons
b197fc2079 Force optimized builds for thirdparty Embree files 2021-09-28 14:35:21 +02:00
Aaron Franke
4fc639916c
Allow disabling the RegEx module in the editor 2021-09-15 12:08:53 -05:00
bruvzg
4c3f7d1290 Makes FontData importable resource.
Adds multi-channel SDF font texture generation and rendering support.
Adds per-font oversampling support.
Adds FontData import plugins (for dynamic fonts, BMFonts and monospaced image fonts), font texture cache pre-generation and loading.
Adds BMFont binary format and outline support.
2021-08-27 15:43:18 +03:00
Aaron Franke
ae1702bee5
Replace HTTP links with HTTPS for sites with HTTPS versions 2021-08-22 20:13:11 -05:00
bruvzg
d7957a2a20 Use "volk" instead of statically linked Vulkan loader. 2021-08-12 14:25:15 +03:00
Aaron Franke
430ad75963
Some work on double support 2021-08-09 17:43:48 -05:00
Rémi Verschelde
25fd4edd29
Merge pull request #51427 from omar-polo/platform-detect-openbsd
automatically detect openbsd as platform=linuxbsd
2021-08-09 15:35:36 +02:00
Omar Polo
78cd0ffdba automatically detect BSDs as platform=linuxbsd 2021-08-09 13:11:53 +00:00
Rémi Verschelde
34421683eb
SCons: Add method to detect Emscripten and use it for warnings config
Emscripten is LLVM-based so we want to follow the same logic. But we can't just
put it as a match in `methods.using_clang()` as that would mess with the
compiler version detection logic used to restrict old GCC and Clang releases.
2021-08-06 12:12:37 +02:00
Rémi Verschelde
802810c371
SCons: Disable Clang -Wordered-compare-function-pointers warning
It's raised for us on many comparators implemented to be able to store a struct
in `Set` or `Map` (who rely on `operator<` internally). In the cases I reviewed
we don't actually care about the ordering and we use the struct's function
pointers as that's the only distinctive data available.
2021-08-06 12:12:33 +02:00
Rémi Verschelde
d1b39f0a14
SCons: Avoid using Python f-string to preserve Python 3.5 compat
Fixes #50629.
2021-07-20 10:12:46 +02:00
reduz
5ad4f26659 Implement the ability to disable classes
* This PR adds the ability to disable classes when building.
* For now it's only possible to do this via command like:
  `scons disable_classes=RayCast2D,Area3D`
* Eventually, a proper UI will be implemented to create a build config file to do this at large scale, as well as detect what is used in the project.
2021-07-13 09:25:14 -03:00
Hendrik Brucker
d070159094 Add elapsed time print statement to build system 2021-07-08 13:52:39 +02:00
Hugo Locurcio
89b5a569fb
Print a notice when compiling with target=debug
Debug builds are considerably slower than release builds or even
release_debug builds. `target=debug` is still the default SCons
target option, so unsuspecting users may be compiling unoptimized
debug builds for their personal use.
2021-06-21 16:55:43 +02:00
Fabio Alessandrelli
8594613f94 LinuxBSD now compiles without vulkan/x11. 2021-06-01 16:27:54 +02:00
Fabio Alessandrelli
ae04dac2db Remove server platform 2021-06-01 16:27:54 +02:00
MmAaXx500
c759b7b235 Improve compiler version extraction 2021-05-31 20:31:12 +02:00
jfons
575543ce53 Port changes to the "raycast" module build files from 3.x 2021-05-04 17:21:41 +02:00
totlmstr
634ed3e128 Add option modules_enabled_by_default 2021-04-10 14:17:20 -07:00
Rémi Verschelde
eeba8d63f8
Merge pull request #44398 from RevoluPowered/unit-tests-for-export-templates
Add unit tests for export templates
2021-03-23 00:42:29 +01:00
Gordon MacPherson
6b4ff3b44b Add unit tests for export templates 2021-03-22 18:57:08 +00:00
Rémi Verschelde
fcddd8c53a
Merge pull request #46966 from qarmin/faster_release
Allow to not optimize release build
2021-03-20 22:44:47 +01:00
Rafał Mikrut
0b298d201e Allow to not optimize release build 2021-03-14 15:51:05 +01:00
Rémi Verschelde
dc038bd7c3
Merge pull request #46799 from goostengine/module-includes
Provide missing include path for custom modules
2021-03-14 01:16:11 +01:00
Anshul7sp1
91181c2086 Fixes small typos and grammar correction 2021-03-12 19:05:16 +05:30
Rémi Verschelde
b7ebd22314 SCons: Use default env["ENV"] and prepend PATH to it
See discussion in #46814. Now going with the safe option again (like in 3.2)
as it turns out that we can't rely on user environments on Windows, since each
shell has a different set of env variables (especially the ones necessary to
use MSVC).

SCons does its own magic when we don't pass it an `ENV` dictionary, so we
should preserve it and only add things in a second step.

Fixes this warning when compiling with MSVC using git-bash.exe:
```
Missing environment variable: WindowsSdkDir
```

Possibly fixes build issues when having both MinGW and MSVC installed and an
older SCons version.
2021-03-10 11:07:34 +01:00
Rémi Verschelde
20b171cc5a SCons: Propagate the user's OS environment in env["ENV"]
This fixes a regression from #46774 where `env["ENV"]` would miss some
important env variables on Windows, such as `SystemRoot`, `PATHEXT`, etc.

To have those, we can either use the default `ENV` created by SCons, or
propagate the whole external environment.

Fixes #46790.
2021-03-09 09:21:40 +01:00
Andrii Doroshenko (Xrayez)
f712d68ceb Provide additional include paths for custom modules
Allows to use a module as a library, where an include path may start
with module's name itself.
2021-03-08 19:36:26 +02:00
Rémi Verschelde
5d217a9441 SCons: Fix parsing PATH when constructing base environment
We constructed the SCons environment without taking any (shell) environment
variables into account, and then appended a few, but too late. This would
cause variables like `env[CXX]` not to be properly expanded to respect a
non-standard `PATH`.

With this fix, setting:
```
PATH=$GODOT_SDK/bin:$PATH
```
will now properly use `$GODOT_SDK/bin/gcc` if available over `/usr/bin/gcc`.
2021-03-07 22:28:46 +01:00