summaryrefslogtreecommitdiffstats
path: root/core/SCsub
Commit message (Collapse)AuthorAgeFilesLines
* Make sure huf_decompress is only applied to 64-bit x86.MBCX2024-09-171-1/+1
| | | | (cherry picked from commit 6b13236956bcf38fdeff460fc8e49acdd7af3d6e)
* SCons: Fix `mono` dependencyThaddeus Crews2024-06-011-1/+1
|
* Update pre-commit hooks configuration to use `ruff` instead of `black`Jakub Marcowski2024-05-211-7/+5
|
* SCons: Fix generation of `disabled_classes.gen.h` after #91624scgm02024-05-131-1/+1
|
* SCons: Generate all scripts nativelyThaddeus Crews2024-05-071-38/+91
|
* SCons: Colorize warnings/errors during generationThaddeus Crews2024-04-281-2/+2
|
* Replace Clipper1 library by Clipper2 libraryRicardo Buring2024-04-201-1/+0
|
* SCons: unify code generations routine and minimize timestamp changesRiteo2024-03-151-3/+6
| | | | | | | | | Previously, all of the code generation routines would just needlessly write the same files over and over, even when not needed. This became a problem with the advent of the experimental ninja backend for SCons, which can be trivially enabled with a few lines of code and relies on timestamp changes, making it thus impractical.
* Enforce `\n` eol for Python writesThaddeus Crews2024-03-091-1/+1
| | | | • Ensure utf-8 encoding if previously unspecified
* Add two new COMSTR environment variablesThaddeus Crews2024-03-011-8/+4
|
* Add 2D navigation mesh bakingsmix82023-09-251-0/+18
| | | | Adds 2D navigation mesh baking.
* FreeType: Update to version 2.13.1bruvzg2023-07-101-1/+0
|
* Linux: Allow unbundling brotli to use system libraryRémi Verschelde2023-07-061-1/+1
|
* Expose brotli decompression to the scripting API.bruvzg2023-03-291-0/+25
|
* SCons: Unify tools/target build type configurationRémi Verschelde2022-09-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* [Net] Modularize multiplayer, expose MultiplayerAPI to extensions.Fabio Alessandrelli2022-07-261-1/+0
| | | | | | | | | - RPC configurations are now dictionaries. - Script.get_rpc_methods renamed to Script.get_rpc_config. - Node.rpc[_id] and Callable.rpc now return an Error. - Refactor MultiplayerAPI to allow extension. - New MultiplayerAPI.rpc method with Array argument (for scripts). - Move the default MultiplayerAPI implementation to a module.
* Rename OSX to macOS and iPhoneOS to iOS.bruvzg2022-07-211-1/+1
|
* Add arch flag to assembler to fix build on ARM64 macOS / iOS.bruvzg2022-07-011-2/+1
|
* zstd: Update to upstream version 1.5.2Rémi Verschelde2022-06-281-0/+4
| | | | | | Release notes: - https://github.com/facebook/zstd/releases/tag/v1.5.1 - https://github.com/facebook/zstd/releases/tag/v1.5.2
* Core: Move generated `VERSION_HASH` to a `.cpp` fileRémi Verschelde2022-02-091-0/+1
| | | | | This lets us have its definition in `core/version.h` and avoid rebuilding a handful of files every time the commit hash changes.
* SCons: List `.gen.cpp` sources explicitly to avoid globbing errorsRémi Verschelde2021-10-151-0/+1
| | | | | | | | | | | | Whenever we change the name (or remove) generated cpp files with the `.gen.cpp` extension, users run into build issues when switching between branches (i.e. switching before and after the name change/removal). This is because we glob `*.cpp` so if a now-obsolete file from a previous build is present, we'll include it too, potentially leading to bugs or compilation failure (due to missing headers or invalid code). So globbing patterns in `add_source_files` will now skip files ending with `.gen.cpp`, which should instead be passed explicitly where they're used.
* [Net] Move multiplayer to core subdir, split RPCManager.Fabio Alessandrelli2021-09-071-0/+1
| | | | | | | | | | | Move multiplayer classes to "core/multiplayer" subdir. Move the RPCConfig and enums (TransferMode, RPCMode) to a separate file (multiplayer.h), and bind them to the global namespace. Move the RPC handling code to its own class (RPCManager). Renames "get_rpc_sender_id" to "get_remote_sender_id".
* Implement native extension systemreduz2021-06-251-0/+1
| | | | | | * Deprecates GDNative in favor of a simpler, lower level interface. * New extension system allows registering core engine classes. * Simple header interface in gdnative_interace.h
* Implement shader cachingreduz2021-05-311-0/+1
| | | | | | | | | | | | * Shader compilation is now cached. Subsequent loads take less than a millisecond. * Improved game, editor and project manager startup time. * Editor uses .godot/shader_cache to store shaders. * Game uses user://shader_cache * Project manager uses $config_dir/shader_cache * Options to tweak shader caching in project settings. * Editor path configuration moved from EditorSettings to new class, EditorPaths, so it can be available early on (before shaders are compiled). * Reworked ShaderCompilerRD to ensure deterministic shader code creation (else shader may change and cache will be invalidated). * Added shader compression with SMOLV: https://github.com/aras-p/smol-v
* Fixed build with SCRIPT_AES256_ENCRYPTION_KEY setMarcus Brummer2021-05-141-1/+1
|
* SCons: Abort if SCRIPT_AES256_ENCRYPTION_KEY is invalidRémi Verschelde2021-05-141-7/+10
| | | | | Helps users figure out that something is wrong if they did define this environment variable and it turns out being ignored.
* Update PolyPartition / Triangulator libraryAaron Franke2021-01-121-1/+1
|
* SCons: Add explicit dependencies on thirdparty code in cloned envRémi Verschelde2020-12-181-5/+15
| | | | | | | | | | | | | | Since we clone the environments to build thirdparty code, we don't get an explicit dependency on the build objects produced by that environment. So when we update thirdparty code, Godot code using it is not necessarily rebuilt (I think it is for changed headers, but not for changed .c/.cpp files), which can lead to an invalid compilation output (linking old Godot .o files with a newer, potentially ABI breaking version of thirdparty code). This was only seen as really problematic with bullet updates (leading to crashes when rebuilding Godot after a bullet update without cleaning .o files), but it's safer to fix it everywhere, even if it's a LOT of hacky boilerplate.
* Don't handle BaseException in build scriptsMarcel Admiraal2020-12-121-1/+1
|
* Reorganized core/ directory, it was too fatty alreadyreduz2020-11-071-2/+7
| | | | | | -Removed FuncRef, since Callable makes it obsolete -Removed int_types.h as its obsolete in c++11+ -Changed color names code
* Refactor MethodBind to use variadic templatesreduz2020-10-181-19/+3
| | | | Removed make_binders and the old style generated binders.
* zstd: Update to upstream version 1.4.5Rémi Verschelde2020-09-181-0/+1
|
* Remove unused Python imports.Marcel Admiraal2020-09-101-1/+0
|
* Fix new black style check failures in various files.Marcel Admiraal2020-08-211-2/+6
|
* SCons: Refactor running commands through buildersAndrii Doroshenko (Xrayez)2020-07-281-5/+11
| | | | | | | | | | | | A new `env.Run` method is added which allows to control the verbosity of builders output automatically depending on whether the "verbose" option is set. It also allows to optionally run any SCons commands in a subprocess using the existing `run_in_subprocess` method, unifying the interface. `Action` objects wrap all builder functions to include a short build message associated with any action. Notably, this removes quite verbose output generated by `make_doc_header` and `make_editor_icons_action` builders.
* Remove HQ2X and the `Image.expand_2x_hq2x()` methodHugo Locurcio2020-05-161-1/+0
| | | | | | | | | | | | | | As of Godot 3.0, HQ2X is no longer used to upscale the editor theme and icons on hiDPI displays, which limited its effective uses. HQ2X was also used to upscale the project theme when the "Use Hidpi" project setting was enabled, but results were often less than ideal. The new StyleBoxFlat and SVG support also make HQ2X less important to have as a core feature. This decreases binary sizes slightly (-150 KB on most platforms, -212 KB on WebAssembly release). This partially addresses #12419.
* thirdparty: Cleanup after #38386, document provenance and copyrightRémi Verschelde2020-05-111-0/+1
| | | | Also renamed `delaunay.h` to `delaunay_2d.h` to match the class name.
* SCons: Format buildsystem files with psf/blackRémi Verschelde2020-03-301-49/+62
| | | | | | | | | | | | | | | | | | | | | Configured for a max line length of 120 characters. psf/black is very opinionated and purposely doesn't leave much room for configuration. The output is mostly OK so that should be fine for us, but some things worth noting: - Manually wrapped strings will be reflowed, so by using a line length of 120 for the sake of preserving readability for our long command calls, it also means that some manually wrapped strings are back on the same line and should be manually merged again. - Code generators using string concatenation extensively look awful, since black puts each operand on a single line. We need to refactor these generators to use more pythonic string formatting, for which many options are available (`%`, `format` or f-strings). - CI checks and a pre-commit hook will be added to ensure that future buildsystem changes are well-formatted.
* Refactored Input, create DisplayServer and DisplayServerX11Juan Linietsky2020-03-261-0/+1
|
* Refactor ScriptDebugger.Fabio Alessandrelli2020-03-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | EngineDebugger is the new interface to access the debugger. It tries to be as agnostic as possible on the data that various subsystems can expose. It allows 2 types of interactions: - Profilers: A subsystem can register a profiler, assigning it a unique name. That name can be used to activate the profiler or add data to it. The registered profiler can be composed of up to 3 functions: - Toggle: called when the profiler is activated/deactivated. - Add: called whenever data is added to the debugger (via `EngineDebugger::profiler_add_frame_data`) - Tick: called every frame (during idle), receives frame times. - Captures: (Only relevant in remote debugger for now) A subsystem can register a capture, assigning it a unique name. When receiving a message, the remote debugger will check if it starts with `[prefix]:` and call the associated capture with name `prefix`. Port MultiplayerAPI, Servers, Scripts, Visual, Performance to the new profiler system. Port SceneDebugger and RemoteDebugger to the new capture system. The LocalDebugger also uses the new profiler system for scripts profiling.
* Update zstd to 1.4.3unknown2019-11-031-0/+2
|
* Fix missing `z_verbose` and `z_error` symbols in debug iOS build.bruvzg2019-10-251-0/+2
|
* Move CryptoCore to it's own folder.Fabio Alessandrelli2019-08-191-0/+1
| | | | Crypto classes will be placed in core/crypto.
* Merge pull request #30188 from Andrettin/Method-Binding-Free-Function-SupportRémi Verschelde2019-07-091-1/+1
|\ | | | | Method Binding Free Function Support
| * Added support for passing functions pointers (with a class instance as the ↵Andrettin2019-07-091-1/+1
| | | | | | | | first parameter) to method bindings
* | SCons: Use CPPDEFINES instead of CPPFLAGS for pre-processor definesRémi Verschelde2019-07-031-2/+2
| | | | | | | | | | | | | | | | It's the recommended way to set those, and is more portable (automatically prepends -D for GCC/Clang and /D for MSVC). We still use CPPFLAGS for some pre-processor flags which are not defines.
* | CryptoCore class to access to base crypto utils.Fabio Alessandrelli2019-07-021-4/+0
|/ | | | | | | | | | | | | | | | | | Godot core needs MD5/SHA256/AES/Base64 which used to be provided by separate libraries. Since we bundle mbedtls in most cases, and we can easily only include the needed sources if we so desire, let's use it. To simplify library changes in the future, and better isolate header dependencies all functions have been wrapped around inside a class in `core/math/crypto_base.h`. If the mbedtls module is disabled, we only bundle the needed source files independently of the `builtin_mbedtls` option. If the module is enabled, the `builtin_mbedtls` option works as usual. Also remove some unused headers from StreamPeerMbedTLS which were causing build issues.
* Build Clipper with `tools=no` and patch it to auto-disable exceptionsAndrii Doroshenko (Xrayez)2019-05-221-0/+1
| | | | | | | | | | | | | | | | | | | | | Reverts "Build polygon clipper only in tools builds" (see #17319) which allows to build Clipper with tools disabled (release) and because of that, Clipper has to be patched to optionally disable exceptions in order to be built on some platforms. Patched Clipper 6.4.2 to be compiled with exceptions enabled/disabled. and ensure that Clipper-specific exception macros are defined: don't use exceptions by default unless exception handling is detected. Compilation with exceptions will be determined by various C++ exceptions defines: * ` __cpp_exceptions` is part of C++ feature testing macros (since C++98); * `__EXCEPTIONS` is used by some GNU compilers; * `_CPPUNWIND` is used by MSVC. The user can override specific exceptions behavior via corresponding `*_USER` macros (i.e. compiling for embedded systems).
* SCons: Always use env.Prepend for CPPPATHRémi Verschelde2019-04-301-4/+4
| | | | | | Include paths are processed from left to right, so we use Prepend to ensure that paths to bundled thirdparty files will have precedence over system paths (e.g. `/usr/include` should have lowest priority).
* SCons: Review uses of CCFLAGS, CXXFLAGS and CPPFLAGSRémi Verschelde2019-04-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | Many contributors (me included) did not fully understand what CCFLAGS, CXXFLAGS and CPPFLAGS refer to exactly, and were thus not using them in the way they are intended to be. As per the SCons manual: https://www.scons.org/doc/HTML/scons-user/apa.html - CCFLAGS: General options that are passed to the C and C++ compilers. - CFLAGS: General options that are passed to the C compiler (C only; not C++). - CXXFLAGS: General options that are passed to the C++ compiler. By default, this includes the value of $CCFLAGS, so that setting $CCFLAGS affects both C and C++ compilation. - CPPFLAGS: User-specified C preprocessor options. These will be included in any command that uses the C preprocessor, including not just compilation of C and C++ source files [...], but also [...] Fortran [...] and [...] assembly language source file[s]. TL;DR: Compiler options go to CCFLAGS, unless they must be restricted to either C (CFLAGS) or C++ (CXXFLAGS). Preprocessor defines go to CPPFLAGS.