summaryrefslogtreecommitdiffstats
path: root/platform/web/detect.py
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #81716 from akien-mga/web-disable-raycast-embreeRémi Verschelde2023-09-221-0/+2
|\ | | | | | | Web: Disable raycast module by default (no occlusion culling)
| * Web: Disable raycast module by default (no occlusion culling)Rémi Verschelde2023-09-161-0/+2
| | | | | | | | | | | | | | | | | | | | | | This means no CPU occlusion culling (and not compiling Embree), unless you compile custom export templates with `module_raycast_enabled=yes`. This reduces the memory footprint significantly, and binary size. Fixes #70621. Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
* | Web: Fix version check for missing scalbnf LTO workaroundRémi Verschelde2023-09-181-7/+9
|/ | | | | The check needs to happen after we set `env["CXX"]`. Follow-up to #81340.
* Web: Workaround Emscripten 3.1.42+ LTO regressionRémi Verschelde2023-09-051-0/+5
| | | | Fixes #80010.
* Merge pull request #79578 from Faless/web/4.x_dlink_visibilityRémi Verschelde2023-08-171-0/+2
|\ | | | | | | [Web] Use `fvisibility=hidden` for side module when dlink_enabled.
| * [Web] Use fvisibility=hidden for side module when dlink_enabled.Fabio Alessandrelli2023-07-171-0/+2
| | | | | | | | | | | | | | | | | | | | This hugely reduces the number of exports, making it acceptable for browsers. Note that dlink + threads is still not working due to upstream issues with the pthread emulation library. Should hopefully be solved once emscripten move to native WASM threads.
* | SCons: Disable C++ exception handlingRémi Verschelde2023-08-161-6/+3
|/ | | | | | | | | | | | | | | | | | | | Upon investigating the extremely slow MSVC build times in #80513, I noticed that while Godot policy is to never use exceptions, we weren't enforcing it with compiler flags, and thus still included exception handling code and stack unwinding. This is wasteful on multiple aspects: - Binary size: Around 20% binary size reduction with exceptions disabled for both MSVC and GCC binaries. - Compile time: * More than 50% build time reduction with MSVC. * 10% to 25% build time reduction with GCC + LTO. - Performance: Possibly, needs to be benchmarked. Since users may want to re-enable exceptions in their own thirdparty code or the libraries they compile with Godot, this behavior can be toggled with the `disable_exceptions` SCons option, which defaults to true.
* SCons: Move platform logo/run icon to `export` folderRémi Verschelde2023-06-201-4/+0
| | | | | | | | | | | | Follow-up to #75932. Since these icons are only used by the export plugin, it makes sense to move them and generate the headers there. The whole `detect.is_active()` logic seems to be a leftover from before times, as far back as 1.0-stable it already wasn't used for anything. So I'm removing it and moving the export icon generation to `platform_methods`, where it makes more sense.
* [Export docs] Move docs to platform folders.bruvzg2023-04-201-0/+10
|
* ci: add Python static analysis check via mypyJiri Suchan2022-09-301-1/+5
|
* SCons: Unify tools/target build type configurationRémi Verschelde2022-09-261-16/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implements https://github.com/godotengine/godot-proposals/issues/3371. New `target` presets ==================== The `tools` option is removed and `target` changes to use three new presets, which match the builds users are familiar with. These targets control the default optimization level and enable editor-specific and debugging code: - `editor`: Replaces `tools=yes target=release_debug`. * Defines: `TOOLS_ENABLED`, `DEBUG_ENABLED`, `-O2`/`/O2` - `template_debug`: Replaces `tools=no target=release_debug`. * Defines: `DEBUG_ENABLED`, `-O2`/`/O2` - `template_release`: Replaces `tools=no target=release`. * Defines: `-O3`/`/O2` New `dev_build` option ====================== The previous `target=debug` is now replaced by a separate `dev_build=yes` option, which can be used in combination with either of the three targets, and changes the following: - `dev_build`: Defines `DEV_ENABLED`, disables optimization (`-O0`/`/0d`), enables generating debug symbols, does not define `NDEBUG` so `assert()` works in thirdparty libraries, adds a `.dev` suffix to the binary name. Note: Unlike previously, `dev_build` defaults to off so that users who compile Godot from source get an optimized and small build by default. Engine contributors should now set `dev_build=yes` in their build scripts or IDE configuration manually. Changed binary names ==================== The name of generated binaries and object files are changed too, to follow this format: `godot.<platform>.<target>[.dev][.double].<arch>[.<extra_suffix>][.<ext>]` For example: - `godot.linuxbsd.editor.dev.arm64` - `godot.windows.template_release.double.x86_64.mono.exe` Be sure to update your links/scripts/IDE config accordingly. More flexible `optimize` and `debug_symbols` options ==================================================== The optimization level and whether to generate debug symbols can be further specified with the `optimize` and `debug_symbols` options. So the default values listed above for the various `target` and `dev_build` combinations are indicative and can be replaced when compiling, e.g.: `scons p=linuxbsd target=template_debug dev_build=yes optimize=debug` will make a "debug" export template with dev-only code enabled, `-Og` optimization level for GCC/Clang, and debug symbols. Perfect for debugging complex crashes at runtime in an exported project.
* SCons: Refactor handling of `production` flag and per-platform LTO defaultsRémi Verschelde2022-09-191-0/+4
| | | | | | | Fixup to #63288. See #65583 for the bug report. Co-authored-by: Cyberrebell <chainsaw75@web.de>
* [Web] Small fixes and enhancements.Fabio Alessandrelli2022-09-111-0/+4
| | | | | | | | | | - "Definitive" fix for ENOENT randomly disappearing from emscripten. - Proper shutdown when setup fails. - Re-enable WebGL explicit buffer swap. - Re-enable optional per-pixel transparency. - Add type cast to make closure compiler happy. - Remove emscripten Safari WebGL workaround. - Improve AudioWorklet cleanup.
* SCons: Refactor LTO options with `lto=<none|thin|full>`Rémi Verschelde2022-09-081-7/+7
| | | | | | | | | | | | | Adds support for LTO on macOS and Android. We don't have much experience with LTO on these platforms so for now we keep it disabled by default even when `production=yes` is set. Similarly for iOS where we ship object files for the user to link in Xcode so LTO makes builds extremely slow to link. `production=yes` defaults to full LTO. ThinLTO is much faster for LLVM-based compilers but seems to produce bigger binaries (at least for the Web platform).
* [Web] Require threads, rtti, allow optimize=speed.Fabio Alessandrelli2022-08-301-42/+28
| | | | | | | Update export names (web[_dlink]_[release|debug].zip). The Build with dynamic linking is broken due to high number of imports in output wasm (likely emscripten regression issue 15487).
* [Web] Rename JavaScript platform to Web.Fabio Alessandrelli2022-08-291-0/+243
Also rename export name from "HTML5" to "Web".