summaryrefslogtreecommitdiffstats
path: root/methods.py
Commit message (Collapse)AuthorAgeFilesLines
* Core: Move generated `VERSION_HASH` to a `.cpp` fileRémi Verschelde2022-02-091-5/+3
| | | | | This lets us have its definition in `core/version.h` and avoid rebuilding a handful of files every time the commit hash changes.
* Merge pull request #55968 from Calinou/scons-tweak-build-messagesRémi Verschelde2022-01-171-29/+23
|\
| * Tweak SCons compilation messages to be more discreetHugo Locurcio2021-12-151-29/+23
| | | | | | | | | | | | | | All compilation messages are now written in blue to ensure that compiler errors and warnings stand out more. Messages were also slightly shortened to make them easier to fit on a single line on narrow terminals.
* | VS Projects: Don't include `mono_reg` without its moduleMario Liebisch2022-01-151-1/+2
|/
* Allow dehardcoding documentation branch and URL in docs linksRémi Verschelde2021-11-151-0/+2
| | | | | | | | | | | | | | This makes it possible to change the branch of the documentation that URLs are pointing to without having to modify all class reference files. In the XML class reference, the `$DOCS_URL` placeholder should be used, and will be replaced automatically in the editor and when generating the RST class reference. The documentation branch string is set in `version.py`. Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
* Fix import for collections Mapping Hristo Stamenov2021-10-251-2/+2
| | | | Mapping and other "abstract base classes" were moved after python 3.3 from collections to collections.abc Python 3.3 is long gone and a newer version of python won't support this code.
* Merge pull request #53376 from ganondev/vsproj-props-for-monoRémi Verschelde2021-10-181-49/+127
|\
| * Variants and targets are generated instead of manually defined. The specific ↵Edward Auttonberry2021-10-061-49/+127
| | | | | | | | | | | | | | | | | | | | details for each configuration are logically separated from the generators Add support for specifying defines for each configuration Add support for specifying extra cli args for each configuration Add support for specifying extra includes for each configuration
* | SCons: List `.gen.cpp` sources explicitly to avoid globbing errorsRémi Verschelde2021-10-151-5/+8
|/ | | | | | | | | | | | 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.
* Force optimized builds for thirdparty Embree filesjfons2021-09-281-0/+11
|
* Makes FontData importable resource.bruvzg2021-08-271-5/+6
| | | | | | | 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.
* SCons: Fix potential error when pruning cache on CIRémi Verschelde2021-08-181-3/+6
| | | | | | | | This could cause spurious errors on CI when trying to prune the cache, as for some reason it tries to remove files/paths which do not exist. That points at a bug in the `cache_progress` logic but at least this workaround should prevent CI failures.
* SCons: Add method to detect Emscripten and use it for warnings configRémi Verschelde2021-08-061-0/+4
| | | | | | 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.
* SCons: Fix info message when defining `GODOT_VERSION_STATUS`Rémi Verschelde2021-08-051-1/+1
|
* Allow overriding `VERSION_STATUS` with `GODOT_VERSION_STATUS` in envRémi Verschelde2021-07-291-3/+8
| | | | | | | | | | | | | `VERSION_STATUS` is part of what constitutes the reference version for a given Godot build, and is part of the version check for compatible export templates. For dev snapshots (alpha, beta, RCs), we usually set the `VERSION_STATUS` to a specific build number (e.g. `beta2`), but this change doesn't end up committed to the Git repository as we don't want to keep changing `version.py` for testing builds. So this new environment override will be what can be used in official builds and by users making custom builds for specific snapshots.
* Implement the ability to disable classesreduz2021-07-131-0/+12
| | | | | | | * 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.
* Improve compiler version extractionMmAaXx5002021-05-311-2/+11
|
* SCons: Pass tests configuration to the MSVC solutionResul Çelik2021-03-231-0/+5
| | | | Test sources and build parameter were not supplied to the visual studio project. This resulted in a build that was not able to be test using the --test command. Adding build parameter ensures we can test, and supplying the sources ensures we have all files to write new tests and edit existing ones.
* Fixes small typos and grammar correctionAnshul7sp12021-03-121-3/+3
|
* SCons: Properly handle overriding default values to bool optionsRémi Verschelde2021-02-241-1/+14
| | | | | | | | | | | | The `dev=yes` and `production=yes` options work as aliases to set a number of options, while still aiming to allow overriding specific options if the user wishes so. (E.g. `production=yes use_lto=no` should work to enable production defaults *but* disable LTO.) That wasn't working as `ARGUMENTS.get()` returns a string and not a boolean as expected by `BoolVariable`, and this wasn't flagged as a bug... So added a helper method using SCons' `BoolVariable._text2bool` to do the conversion manually.
* SCons: Fix Godot detection in custom modules logicRémi Verschelde2021-02-111-3/+1
| | | | | | | | `exec()` was not a good idea as it assumes a certain type of `version.py` file similar to Godot's own file, which is not always a reliable assumption (see https://github.com/godotengine/godot/pull/43057#issuecomment-777632900). Also restores Python 2 support for the 3.2 branch.
* Merge pull request #43057 from Xrayez/custom_modules_recursiveRémi Verschelde2021-02-081-17/+69
|\ | | | | SCons: Add an option to detect C++ modules recursively
| * SCons: Add an option to detect C++ modules recursivelyAndrii Doroshenko (Xrayez)2020-10-241-17/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds `custom_modules_recursive` which allows to detect and collect all nested C++ modules which may reside in any directory specified by `custom_modules` option. The detection logic is made to be more strict because `SCSub` may be used for organizing hierarchical builds within a module itself, so the existence of `register_types.h` and `config.py` is checked as well (these are all required for a C++ module to be compiled by Godot). For performance reasons, built-in modules are not checked recursively, and there's no benefit of doing so in the first place. It's now possible to specify a directory path pointing to a *single* module, as it may contain nested modules which are detected recursively.
* | Don't handle BaseException in build scriptsMarcel Admiraal2020-12-121-1/+1
|/
* Add all headers to VS ProjectBartłomiej T. Listwon2020-09-271-6/+41
|
* Fix custom modules in Visual StudioBartłomiej T. Listwon2020-09-181-19/+21
|
* Merge pull request #41453 from Xrayez/custom-modules-visual-studioRémi Verschelde2020-09-031-3/+4
|\ | | | | Build the engine with custom modules in Visual Studio
| * Build the engine with custom modules in Visual StudioAndrii Doroshenko (Xrayez)2020-08-221-3/+4
| | | | | | | | | | | | | | | | | | First, compile the engine normally with: ``` scons custom_modules="path/to/your/modules" vsproj=yes ``` Then run the Visual Studio project. You can now rebuild the engine if you need to make changes to custom modules directly within IDE.
* | Merge python EnvironmentError, IOError and WindowsError into OSError.Marcel Admiraal2020-09-021-2/+2
|/
* Style: Apply format changes from latest psf/black gitRémi Verschelde2020-08-211-6/+3
|
* SCons: Refactor running commands through buildersAndrii Doroshenko (Xrayez)2020-07-281-0/+13
| | | | | | | | | | | | 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.
* CI: Install master version of psf/blackRémi Verschelde2020-07-261-3/+6
| | | | | | | Until https://github.com/psf/black/pull/1328 makes it in a stable release, we have to use the latest from Git. Apply new style fixes done by latest black.
* Fix emoji branch compilation errorTomasz Chabora2020-07-231-1/+1
|
* Expand env vars for `custom_modules` build optionAndrii Doroshenko (Xrayez)2020-07-101-2/+3
| | | | | The order of conversion is also changed to ensure that the resulting path can be properly validated later on.
* Merge pull request #37248 from Xrayez/env-dumpRémi Verschelde2020-06-101-0/+11
|\ | | | | SCons: Dump construction environment to a file
| * SCons: Dump construction environment to a fileAndrii Doroshenko (Xrayez)2020-06-101-0/+11
| | | | | | | | | | | | A new `methods.dump(env)` is added to dump the construction environment used by SCons to build Godot to a `.scons_env.json`. The file can be used for debugging purposes and any external tool.
* | SCons: Validate dependencies for linked multimedia modulesRémi Verschelde2020-06-031-0/+24
| | | | | | | | | | | | | | | | This is still a bit hacky and eventually we should rework the way we handle optional dependencies (especially with regard to builtin/system libs), but it's a simple first step. Fixes #39219.
* | Merge pull request #39125 from Xrayez/py-modules-order-4.0Rémi Verschelde2020-05-281-1/+2
|\ \ | |/ |/| SCons: use `OrderedDict` to ensure insertion order of modules
| * SCons: use `OrderedDict` to ensure insertion order of modulesAndrii Doroshenko (Xrayez)2020-05-281-1/+2
| | | | | | | | | | | | | | | | | | The insertion order for dictionaries is only a language feature for Python 3.6/3.7+ implementations, and not prior to that. This ensures that the engine won't be rebuilt if the order of detected modules changes in any way, as the `OrderedDict` should guarantee inerstion order.
* | Merge pull request #37198 from Xrayez/progress-insideRémi Verschelde2020-05-271-0/+123
|\ \ | | | | | | SCons: Move build progress related logic out of main SConstruct
| * | Moved to methods.py as a `show_progress` method.Andrii Doroshenko (Xrayez)2020-03-301-0/+123
| | | | | | | | | | | | | | | | | | Some required changes are made: - locally imported SCons-specific packages within the method; - `global` variables converted to `nonlocal` (used in nested functions).
* | | Do not rely on the existence of `config.py` while detecting modulesAndrii Doroshenko (Xrayez)2020-05-261-1/+1
| |/ |/| | | | | | | | | | | The existence of `SCsub` is checked instead. This file is required for all modules, and prevents the build system to leave modules without `config.py` undetected, leading to silently ignoring the module during compilation.
* | Add `custom_modules` build option to compile external user modulesAndrii Doroshenko (Xrayez)2020-05-251-24/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds ability to include external, user-defined C++ modules to be compiled as part of Godot via `custom_modules` build option which can be passed to `scons`. ``` scons platform=x11 tools=yes custom_modules="../project/modules" ``` Features: - detects all available modules under `custom_modules` directory the same way as it does for built-in modules (not recursive); - works with both relative and absolute paths on the filesystem; - multiple search paths can be specified as a comma-separated list. Module custom documentation and editor icons collection and generation process is adapted to work with absolute paths needed by such modules. Also fixed doctool bug mixing absolute and relative paths respectively. Implementation details: - `env.module_list` is a dictionary now, which holds both module name as key and either a relative or absolute path to a module as a value. - `methods.detect_modules` is run twice: once for built-in modules, and second for external modules, all combined later. - `methods.detect_modules` was not doing what it says on the tin. It is split into `detect_modules` which collects a list of available modules and `write_modules` which generates `register_types` sources for each. - whether a module is built-in or external is distinguished by relative or absolute paths respectively. `custom_modules` scons converter ensures that the path is absolute even if relative path is supplied, including expanding user paths and symbolic links. - treats the parent directory as if it was Godot's base directory, so that there's no need to change include paths in cases where custom modules are included as dependencies in other modules.
* | SCons: Expand CXX in check for vanilla ClangRémi Verschelde2020-04-041-1/+5
|/ | | | | | I had missed it in df7ecfc4a7f8403144be2aa49bb47f9ead25926b it seems. Fixes #37575.
* SCons: Format buildsystem files with psf/blackRémi Verschelde2020-03-301-130/+191
| | | | | | | | | | | | | | | | | | | | | 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.
* SCons: Drop support for Python 2Rémi Verschelde2020-03-251-6/+5
| | | | | | We now require SCons 3.0+ (first version with Python 3 support), and we set min required Python 3 version to 3.5 (3.4 and earlier are EOL).
* Style: Harmonize header guards to style guide [Core]Rémi Verschelde2020-03-251-1/+9
|
* Remove the dead function win32_spawn from methods.py.unknown2020-03-181-19/+0
|
* SCons: Expand env variables to check compiler versionRémi Verschelde2020-03-041-2/+5
| | | | | | | | | Scons' `Environment.subst()` does that, and was already used in the other place where we query an env variable (`env["LINK"]` in x11 code). Fixes `3.2` iOS build after cherry-pick of #36559 (previously it only ran for GCC code, not iOS's Clang), and the same issue would likely affect `master` if iOS builds were enabled right now.
* SCons: Fix get_compiler_version() to return intsRémi Verschelde2020-02-261-7/+6
| | | | | | Otherwise comparisons would fail for compiler versions above 10. Also simplified code somewhat to avoid using subprocess too much needlessly.