godot/platform/web
Rémi Verschelde 39facb35a0 SCons: Unify tools/target build type configuration
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.
2022-09-26 16:31:46 +02:00
..
api Rename JavaScript singleton to JavaScriptBridge 2022-09-02 21:11:15 +08:00
export Split rendering driver project setting into renderer_name and rendering_driver. To differentiate between a driver (e.g. Vulkan or D3D12) and a renderer (e.g. clustered or mobile renderer). 2022-09-19 10:26:10 -07:00
js [Web] Add feature detection helpers to JS Engine class. 2022-09-17 11:21:17 +02:00
.eslintrc.engine.js [Web] Add feature detection helpers to JS Engine class. 2022-09-17 11:21:17 +02:00
.eslintrc.js
.eslintrc.libs.js
audio_driver_web.cpp
audio_driver_web.h
detect.py SCons: Unify tools/target build type configuration 2022-09-26 16:31:46 +02:00
display_server_web.cpp Fix some errors affecting the Web editor 2022-09-12 16:29:45 +02:00
display_server_web.h
dom_keys.inc
emscripten_helpers.py SCons: Unify tools/target build type configuration 2022-09-26 16:31:46 +02:00
godot_audio.h
godot_js.h
godot_webgl2.h
http_client_web.cpp [Net] Rename "ssl" references to "tls" in methods and members. 2022-09-08 03:24:23 +02:00
http_client_web.h [Net] Rename "ssl" references to "tls" in methods and members. 2022-09-08 03:24:23 +02:00
javascript_bridge_singleton.cpp Rename JavaScript singleton to JavaScriptBridge 2022-09-02 21:11:15 +08:00
logo.png
os_web.cpp Rename JavaScript singleton to JavaScriptBridge 2022-09-02 21:11:15 +08:00
os_web.h
package-lock.json
package.json [Web] Add feature detection helpers to JS Engine class. 2022-09-17 11:21:17 +02:00
platform_config.h
README.md
run_icon.png
SCsub [Web] Add feature detection helpers to JS Engine class. 2022-09-17 11:21:17 +02:00
serve.json
web_main.cpp [Web] Small fixes and enhancements. 2022-09-11 09:45:09 +02:00
web_runtime.cpp

Web platform port

This folder contains the C++ and JavaScript code for the Web platform port, compiled using Emscripten.

It also contains a ESLint linting setup (see package.json).

See also misc/dist/html folder for additional files used by this platform such as the html shell (web page).

Documentation

Artwork license

logo.png and run_icon.png are licensed under Creative Commons Attribution 3.0 Unported per the HTML5 logo usage guidelines.