godot/modules/gdscript
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
..
doc_classes Spelling correction: change "no" to "not" 2022-09-17 21:02:54 +09:30
editor Fixed a case for global function highlighting 2022-08-31 23:12:23 +02:00
icons Make script type distinguishable by icon 2022-01-13 12:29:05 +01:00
language_server Fix out of sync when the script is edited externally via lsp 2022-09-25 23:30:35 +08:00
tests Improve null and object printing to avoid confusion with arrays 2022-08-31 15:31:49 +02:00
config.py [Scons] Implement module dependency sorting. 2022-08-04 20:00:19 +02:00
gdscript_analyzer.cpp Add GDScript resource export. 2022-09-17 17:10:30 -05:00
gdscript_analyzer.h Add a new HashSet template 2022-05-20 22:40:38 +02:00
gdscript_byte_codegen.cpp Merge pull request #63049 from Faless/mp/4.x_as_module 2022-07-28 20:46:31 +02:00
gdscript_byte_codegen.h [Net] Modularize multiplayer, expose MultiplayerAPI to extensions. 2022-07-26 09:31:12 +02:00
gdscript_cache.cpp Load/update GDScript from disk on load if cache mode is CACHE_MODE_IGNORE 2022-09-24 16:06:36 +08:00
gdscript_cache.h Load/update GDScript from disk on load if cache mode is CACHE_MODE_IGNORE 2022-09-24 16:06:36 +08:00
gdscript_codegen.h [Net] Modularize multiplayer, expose MultiplayerAPI to extensions. 2022-07-26 09:31:12 +02:00
gdscript_compiler.cpp Remove redundant "if" condition in GDScriptCompiler::_parse_function() 2022-09-24 12:30:43 -04:00
gdscript_compiler.h Add a new HashSet template 2022-05-20 22:40:38 +02:00
gdscript_disassembler.cpp Implement Vector4, Vector4i, Projection 2022-07-23 14:00:01 +02:00
gdscript_editor.cpp Rename or_lesser range property hint to or_less 2022-09-02 19:08:20 +02:00
gdscript_function.cpp GDScript: Fix stack overflow when using multiple await 2022-05-27 09:31:37 -03:00
gdscript_function.h [Net] Modularize multiplayer, expose MultiplayerAPI to extensions. 2022-07-26 09:31:12 +02:00
gdscript_lambda_callable.cpp Clean up Hash Functions 2022-06-20 12:54:19 +02:00
gdscript_lambda_callable.h Code quality: Fix header guards consistency 2022-07-25 11:17:40 +02:00
gdscript_parser.cpp Prevent null crash when datatype not resolved 2022-09-23 11:13:57 -04:00
gdscript_parser.h [Net] Modularize multiplayer, expose MultiplayerAPI to extensions. 2022-07-26 09:31:12 +02:00
gdscript_rpc_callable.cpp [Net] Modularize multiplayer, expose MultiplayerAPI to extensions. 2022-07-26 09:31:12 +02:00
gdscript_rpc_callable.h [Net] Modularize multiplayer, expose MultiplayerAPI to extensions. 2022-07-26 09:31:12 +02:00
gdscript_tokenizer.cpp Implement exponential operator (**) to GDScript/Expressions 2022-05-11 16:30:37 +03:00
gdscript_tokenizer.h Code quality: Fix header guards consistency 2022-07-25 11:17:40 +02:00
gdscript_utility_functions.cpp Rename str2var to str_to_var and similar 2022-08-26 14:58:22 +02:00
gdscript_utility_functions.h Replace Array return types with TypedArray 3 2022-08-24 12:53:36 +02:00
gdscript_vm.cpp Rename CONNECT_ONESHOT TO CONNECT_ONE_SHOT 2022-09-06 19:00:33 +02:00
gdscript_warning.cpp Add enum values (Ignore, Warn, Error) to GDScript warnings 2022-04-06 10:57:33 -05:00
gdscript_warning.h Code quality: Fix header guards consistency 2022-07-25 11:17:40 +02:00
gdscript.cpp Load/update GDScript from disk on load if cache mode is CACHE_MODE_IGNORE 2022-09-24 16:06:36 +08:00
gdscript.h Make property_*_revert methods multilevel and expose them for scripting 2022-08-18 00:03:53 +03:00
register_types.cpp Add support for scene/resource customization in export plugins 2022-09-01 11:16:00 +02:00
register_types.h Refactor module initialization 2022-05-04 17:34:51 +02:00
SCsub SCons: Unify tools/target build type configuration 2022-09-26 16:31:46 +02:00