Commit Graph

253 Commits

Author SHA1 Message Date
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
RedMser 5c5c3ab90e Further cleanup of VisualScript references 2022-09-19 21:37:26 +02:00
Rémi Verschelde b353336037 CI: Downgrade Emscripten to 3.1.18
Emscripten 3.1.19 and 3.1.20 have a showstopping regression that breaks
calling our main function for the editor build.
2022-09-09 14:02:16 +02:00
Gergely Kis 20bf72751c Fix UTF-8 validation in static checks
Use isutf8 instead of recode to detect invalid UTF-8 sequences.

Also add the necessary dependencies to run the static checks locally
using act (https://github.com/nektos/act) with the Medium size image.
2022-09-05 13:18:27 +02:00
Fabio Alessandrelli f958f00283 [Web] Require threads, rtti, allow optimize=speed.
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).
2022-08-30 20:01:19 +02:00
Fabio Alessandrelli d20b32186f [Web] Rename JavaScript platform to Web.
Also rename export name from "HTML5" to "Web".
2022-08-29 11:52:00 +02:00
Raul Santos ea6b8ecb6f
Add `dotnet format` to CI to check C# style 2022-08-27 10:11:35 +02:00
Rémi Verschelde cfcdd576dd CI: Remove unnecessary extra cache step for Emscripten
Co-authored-by: Fabio Alessandrelli <fabio.alessandrelli@gmail.com>
2022-08-25 14:35:43 +02:00
Rémi Verschelde ef28da8006 CI: Bump various GitHub actions to latest versions
actions/cache@v3
actions/checkout@v3
actions/upload-artifact@v3
actions/setup-dotnet@v2
actions/setup-java@v3
actions/setup-python@v4
mymindstorm/setup-emsdk@v11

Also reset cache keys as we're going to cleanup all caches.
2022-08-25 13:44:22 +02:00
Aaron Franke 27b0f18275 Unify bits, arch, and android_arch into env["arch"]
Fully removes the `bits` option and adapts the code that relied on it.

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2022-08-25 11:19:20 +02:00
Ignacio Roldán Etcheverry 20bd64db69 CI: Remove second build with mono_glue=yes
A second build is no longer needed. It was resulting in a null build
that still took more than 1 minute of CI time.

Also removed other usages of `mono_glue=no` and `mono_static=yes`,
as these options no longer exist.
2022-08-23 04:23:29 +02:00
Rémi Verschelde 0cea7e3f64
Merge pull request #62545 from yedpodtrzitko/yed/pytest-builders 2022-08-22 19:32:11 +02:00
Ignacio Roldán Etcheverry 18f805b3aa C#: Upgrade to .NET 6 (5.0 -> 6.0) 2022-08-22 03:36:51 +02:00
Ignacio Roldán Etcheverry 34db8d2c6c CI: Setup .NET Sdk to fix CI and build C# code as well 2022-08-22 03:36:51 +02:00
Jiri Suchan 388d35b74d ci: add basic test pipeline for shader builders 2022-08-19 20:32:13 +09:00
Jiri Suchan b04593c22b ci: move slowest static job to the end of pipeline 2022-08-19 20:32:13 +09:00
Rafał Mikrut 49632bf993 Check also GLES3 in CI 2022-08-06 19:12:09 +02:00
antonWetzel 87ebfff46d create vector4, vector4i and projection for csharp 2022-07-31 19:42:34 +02:00
Rémi Verschelde da14b19bbf CI: Link MoltenVK statically on macOS
Same as done for official builds.

Also make artifacts executable before zipping.
2022-07-29 14:32:57 +02:00
bruvzg 36ef8f29dc
Implement support for loading system fonts on Linux, macOS / iOS and Windows. 2022-07-26 08:38:05 +03:00
Rémi Verschelde 90019676b0 Code quality: Fix header guards consistency
Adds `header_guards.sh` bash script, used in CI to validate future
changes. Can be run locally to fix invalid header guards.
2022-07-25 11:17:40 +02:00
reduz 455c06ecd4 Implement Vector4, Vector4i, Projection
Implement built-in classes Vector4, Vector4i and Projection.

* Two versions of Vector4 (float and integer).
* A Projection class, which is a 4x4 matrix specialized in projection types.

These types have been requested for a long time, but given they were very corner case they were not added before.
Because in Godot 4, reimplementing parts of the rendering engine is now possible, access to these types (heavily used by the rendering code) becomes a necessity.

**Q**: Why Projection and not Matrix4?
**A**: Godot does not use Matrix2, Matrix3, Matrix4x3, etc. naming convention because, within the engine, these types always have a *purpose*. As such, Godot names them: Transform2D, Transform3D or Basis. In this case, this 4x4 matrix is _always_ used as a _Projection_, hence the naming.
2022-07-23 14:00:01 +02:00
Rémi Verschelde c8479c0d4d SCons: Refactor Linux linker options with `linker=<bfd|gold|lld|mold>`
The new option is `linker` and lets the user specify the argument to
the`-fuse_ld=` linker flag directly. The supported options are:

- `default`: No change, typically uses GNU ld (bfd) unless the user or
  distro picked a different default `/usr/bin/ld`.
- `bfd`: GNU ld from binutils
- `gold`: GNU gold from binutils
- `lld`: lld from LLVM
- `mold`: mold, an extremely fast modern linker, not (yet) intended for
  use in production but great for development speed. Provided by distro
  `mold` package or needs to be compiled from source and installed to
  `/usr` otherwise.

Removes the `use_lld=yes` option, and make lld actually usable with GCC
too.

Not all the above are compatible or recommend for LTO, we recommend
using GNU ld with GCC LTO, or lld with LLVM ThinLTO.
2022-07-22 01:00:35 +02:00
Rémi Verschelde a9e4eac7b9
Merge pull request #63225 from bruvzg/mac_rename 2022-07-21 10:25:26 +02:00
Rémi Verschelde 26f9e87235 CI: Use Gold (GCC) and LLD (Clang) as linker for Linux sanitizers builds
They're very memory hungry to a point where GNU ld can crash on CI.
Both Gold and LLD should be nicer to RAM and thus a safer option.
2022-07-21 08:53:11 +02:00
bruvzg 8823eae328
Rename OSX to macOS and iPhoneOS to iOS. 2022-07-21 09:37:52 +03:00
Riteo ef9039ad36 Revert "CI: Disable Linux GCC ASAN temporarily"
This reverts commit 04e955841f.

It looks like we can just remove `-pipe` for the CI to complete.
2022-07-20 19:03:38 +02:00
Rémi Verschelde 04e955841f
CI: Disable Linux GCC ASAN temporarily
Another attempt at fixing CI which seems to get a linker crash since today (likely OOM).
2022-07-20 16:35:03 +02:00
Rémi Verschelde ea21122575 SCons: Default `num_jobs` to max CPUs minus 1 if not specified
This doesn't change the behavior when `--jobs`/`-j` is specified as a
command-line argument or in `SCONSFLAGS`.

The SCons hack used to know if `num_jobs` was set by the user is derived
from the MongoDB setup.

We use `os.cpu_count()` for portability (available since Python 3.4).

With 4 CPUs or less, we use the max. With more than 4 we use max - 1 to
preserve some bandwidth for the user's other programs.
2022-07-17 12:38:41 +02:00
bruvzg b2462cfd8a
[macOS] Use statically linked MoltenVK by default, automatically detect MoltenVK SDK install (only in the default location). 2022-07-03 17:11:18 +03:00
Jan Haller d38d76d039 Fix exit code of --help and --version, and test them in CI
Corrects prior regression which caused ERROR output and exit code of 1.
2022-07-02 01:17:35 +02:00
Rémi Verschelde 56deb5889e Rewrite PR template to make it slightly less verbose 2022-06-28 16:11:54 +02:00
Rafał Mikrut 24f45bd533 Add Godot 3.x -> Godot 4.x project converter 2022-06-15 10:11:17 +02:00
Hugo Locurcio d45351f413
makerst: Print colored output for easier visual grepping
This is automatically enabled on all platforms including
Windows 10 and later, whenever a TTY environment is detected.

In non-TTY environments such as CI, this can be forced using the
`--color` command line argument.
2022-06-11 00:19:36 +02:00
Rémi Verschelde f07021fbeb CI: Update Emscripten to 3.1.10
That's the version that we'll (tentatively) use for future 3.x and 4.0
builds.
2022-05-10 13:03:13 +02:00
bruvzg 6ab672d1ef Implement text-to-speech support on Android, iOS, HTML5, Linux, macOS and Windows.
Implement TextServer word break method.
2022-04-28 14:35:41 +03:00
bruvzg 38fcb9d112
Remove redundant `godot-cpp` build stage. 2022-04-07 19:54:09 +03:00
Rémi Verschelde 77843355a0 CI: Update black formatter and apply changes 2022-04-05 17:43:12 +02:00
bruvzg ba0317be04
Add CI build with clang sanitizers, increase stack size to 30 MB for builds with sanitizers. 2022-04-01 13:15:35 +03:00
Rémi Verschelde 05ac2a4139 CI: Re-enabled godot-cpp test
Compatibility with current master was fixed in
https://github.com/godotengine/godot-cpp/pull/734
2022-03-30 15:38:46 +02:00
Pierre-Thomas Meisels 63f7f44ccb Make vararg method bind no return and return
Type emit_signal exposed method return type

set UndoRedo add_do_method and add_undo_method exposed return void

Set TreeItem::_call_recursive_bind returns void

Set _rpc_bind and _rpc_id_bind returns void in Node

Set _call_group and _call_group_flags method returns void in SceneTree

Set godot-cpp-test CI flag to false
2022-03-30 11:43:12 +02:00
Rémi Verschelde 9522032adf CI: Reduce max cache to 7 GiB, remove Windows debug symbols
GitHub Actions runners only have 14 GiB available, so we need
to keep the cache constrained.
2022-03-30 10:16:03 +02:00
Rémi Verschelde 45ec0e31c3 Remove last editor code dependencies in template build
SConstruct change also makes it possible to outright delete the `editor`
folder in a `tools=no` build, which we use in CI to ensure no invalid
cross-dependencies are added.
2022-03-28 21:13:01 +02:00
Rémi Verschelde 3393b3c8d1 CI: Limit Windows cache size again, otherwise we run out of space
And force a full rebuild as the cache is now broken.
2022-03-28 16:09:15 +02:00
Rémi Verschelde cd2e7fbc57 CI: Update to actions/cache@v3, increase cache limit to 10 GiB
And force rebuild of Linux cache which got corrupted...
2022-03-23 08:10:43 +01:00
Raul Santos 4bbfd20aa9
Ignore PhysicsServer3DExtension class in C#
PhysicsServer3DExtension inherits from PhysicsServer3D which is a
singleton class, since singleton classes are generated as static in C#
it would generate invalid C# so for now we'll be
ignoring PhysicsServer3DExtension.
2022-03-18 17:28:48 +01:00
bruvzg 96f7a08fd6
Re-enable `godot-cpp` CI. 2022-03-17 08:18:01 +02:00
reduz 8b547331be Create GDExtension clases for PhysicsServer3D
* Allows creating a GDExtension based 3D Physics Server (for Bullet, PhysX, etc. support)
* Some changes on native struct binding for PhysicsServer

This allows a 3D Physics server created entirely from GDExtension. Once it works, the idea is to port the 2D one to it.
2022-03-15 18:39:31 +01:00
Hugo Locurcio eae16f73a6
Make `-q` CLI argument toggle quiet stdout instead of quitting
`-q` is a common toggle in a command line applications for quiet mode
(see apt or dnf for examples). In contrast, `--quit` isn't needed
as often.
2022-03-13 23:55:01 +01:00
reduz 6f51eca1e3 Discern between virtual and abstract class bindings
* Previous "virtual" classes (which can't be instantiated) are not corretly named "abstract".
* Added a new "virtual" category for classes, they can't be instantiated from the editor, but can be inherited from script and extensions.
* Converted a large amount of classes from "abstract" to "virtual" where it makes sense.

Most classes that make sense have been converted. Missing:

* Physics servers
* VideoStream
* Script* classes.

which will go in a separate PR due to the complexity involved.
2022-03-10 12:28:11 +01:00
Rémi Verschelde ce09a47db4 CI: Use mono_static=yes for Mono builds
This removes the dependency on shared libmonosgen installed locally
and makes the artifacts usable as standalone for testing without
needing a full Mono install.
2022-02-22 13:49:37 +01:00
Hugo Locurcio b68dd2e189
Add an XML schema for documentation
This makes it easier to spot syntax errors when editing the
class reference. The schema is referenced locally so validation
can still work offline.

Each class XML's schema conformance is also checked on GitHub Actions.
2022-02-15 00:03:31 +01:00
Hugo Locurcio 74fc4410f4
Remove support for ARMv7 (32-bit) on iOS
All iOS devices since the iPhone 5S support ARMv8 (64-bit).

The last iOS version supported on ARMv7 devices is 10.x, which is
too old to run Godot 4.0 projects since the minimum supported
iOS version is 11.0.
2022-02-08 22:11:29 +01:00
Rémi Verschelde 992794e44a
CI: Force invalidate macOS cache
I *hate* having to commit this kind of noise to our
commit history. Especially on a Friday at 10 pm.
2022-02-04 22:26:16 +01:00
Rémi Verschelde 56838ca009
CI: Rename macOS cache key to force a rebuild
The cache got corrupted and until https://github.com/actions/cache/issues/2
is prioritized we're forced to fix it up with such hacks...
2022-01-11 20:59:06 +01:00
Rémi Verschelde aafac1e33a
CI: Update SwiftShader to 2021-10-02 build
No specific reason that I know of aside from it being available in our
prebuilt CI dependencies.
2022-01-06 15:17:34 +01:00
Rémi Verschelde 94232dcb48
CI: Update links to regression test project and prebuilt SwiftShader
qarmin's repository has been moved to the godotengine organization.
2022-01-06 12:10:15 +01:00
Aaron Franke 368c0bc0ac
Misc build system fixes 2021-12-10 12:14:27 -06:00
Aaron Franke e9808e3d9a
Add a double-precision editor build to CI 2021-12-09 09:52:48 -06:00
Aaron Franke ae713f8980
Add a minimal template build to CI
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2021-11-12 09:30:50 -06:00
qarmin 071829acc5 Enable mono editor build in CI 2021-11-09 11:02:04 +01:00
Rémi Verschelde 5116f32db4
CI: Update black to 21.10b0
No formatting changes on our code compared to 20.8b1.
2021-11-03 13:57:49 +01:00
Rémi Verschelde f42ef8d5f9
CI: Update to clang-format 13 using LLVM repo 2021-10-28 17:11:00 +02:00
Rémi Verschelde 2ecab0491c
Merge pull request #54179 from aaronfranke/make-rst 2021-10-26 08:43:07 +02:00
Rémi Verschelde 55d05565d0
clang-format: Enable `--Wno-error=unknown` for compat with older versions
This prevents errors when encountering options which have been defined in newer
versions of clang-format, and are invalid in the YAML for the old version.

Bump minimum supported clang-format version to 12 (where `--Wno-error=unknown`
was added).

Use clang-format 12 on CI (13 is not available yet on the Ubuntu 20.04 images).
2021-10-25 00:19:22 +02:00
Aaron Franke 8f05e26198
Rename "makerst.py" to "make_rst.py" 2021-10-24 01:58:59 -05:00
Bastiaan Olij daff03576d Add CI step for compiling and testing godot-cpp 2021-10-21 20:30:19 +11:00
Rémi Verschelde 8fa67fba47
CI: Run doctool in headless mode 2021-10-20 17:48:50 +02:00
Marcel Admiraal fe0b673bb3 Update Android CI to use JDK 11. 2021-10-09 15:27:11 +01:00
Rémi Verschelde c4fa301b6b
CI: Build test binaries with debug symbols, then strip
This allows having good stacktraces when the tests crash.
2021-09-22 09:31:44 +02:00
Fabio Alessandrelli 3dbf008411 [CI] Refactor CI actions, use sub-actions, matrices. 2021-09-14 12:46:16 +02:00
Ellen Poe f5d9c7b487 Replace stb_vorbis with libogg+libvorbis 2021-09-09 19:39:04 -07:00
Max Hilbrunner 5139a19877 Fix CI after concurrency 2021-08-25 15:04:05 +02:00
Max Hilbrunner 40bb1ded7e CI: Cancel previous builds if new commit is pushed 2021-08-25 14:54:48 +02:00
Gordon MacPherson 27da2e364e Fix github actions cache server being down failing builds 2021-08-18 21:58:54 +01:00
Fabio Alessandrelli 71fb2429a0 [CI] Upgrade Emscripten to 2.0.27.
Update Godot Javascript FS library to manually depend on ERRNO_CODES.
2021-08-18 10:30:50 +01:00
Rémi Verschelde 07c355c209
Issue template: Fix link to CONTRIBUTING.md
Fixes #51623.
2021-08-13 15:30:41 +02:00
Rémi Verschelde c44ebb020d
HTML5: Fix warnings and re-enable `werror=yes` on CI
Add a missing call to disable warnings on a forked env for freetype's
`sfnt.c`.
2021-08-06 12:12:37 +02:00
Rafał Mikrut e8877806ec Fix 'Attempted to remove invalid ID' errors 2021-07-31 15:30:31 +02:00
David Snopek 3963a11b2f Re-enable building WebXR in GitHub Actions 2021-07-17 15:37:35 -05:00
Fabio Alessandrelli 9a044d95fc Re-enable JavaScript CI (with no WebXR until fixed). 2021-07-15 15:34:13 +02:00
Yuri Sizov 0f78e36e1c Check if there are new docs missing on CI 2021-07-14 14:21:03 +03:00
Niklas Higi 0c83a23ab5
Add "Keep screen on" feature to `DisplayServerX11` 2021-06-20 21:57:33 +02:00
Rémi Verschelde affb3ce1b7
Merge pull request #49364 from Calinou/add-form-github-issue-template
Add a form GitHub issue template for bug reports
2021-06-08 16:57:41 +02:00
Hugo Locurcio 50fd981cfc
Add a form GitHub issue template for bug reports
GitHub now supports forms as issue templates (currently in private beta).
Godot has been opted into this private beta, which makes this new feature
usable on the Godot repository.

Inspired by the ImageMagick form:

https://github.com/ImageMagick/ImageMagick/blob/main/.github/ISSUE_TEMPLATE/bug-report.yml
2021-06-08 16:25:34 +02:00
Marcel Admiraal a81449be6d Don't install Android NDK in CI 2021-06-07 09:01:33 +01:00
Rémi Verschelde 4219a4cb6f
Fix typos with codespell
Using codespell 2.0.0.

Method:
```
$ cat > ../godot-word-whitelist.txt << EOF
ang
curvelinear
dof
doubleclick
fave
findn
GIRD
leapyear
lod
merchantibility
nd
numer
ois
ony
que
seeked
synching
te
uint
unselect
webp
EOF

$ codespell -w -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po"
$ git diff // undo unwanted changes
```
2021-05-20 12:38:56 +02:00
Rémi Verschelde 7eaf4d445d
CI: Install Android NDK 21.4.7075529
This is the version mandated by Godot's gradle setup anyway so it would get
installed when running gradlew. Now we pre-install the correct version.
2021-05-19 15:03:56 +02:00
Bartłomiej T. Listwon b6f16671ee pywin32 is no longer necessary for SCons install
https://github.com/SCons/scons/releases/tag/4.1.0
2021-05-19 08:49:45 +02:00
Rémi Verschelde afb65ebc2c
CI: Add `--doctool` check to find missing classref updates
This will enforce that PRs properly sync the class reference templates to match
their changes to the public API, and help notice binding bugs in the process
(e.g. missing enum bindings, unexpected API changes or missing argument names).

This should also serve as a reminder to contributors that their changes impact
the scripting API and might warrant actually filling the descriptions for the
new methods/properties/etc.
2021-05-03 20:44:49 +02:00
Rafał Mikrut 599d96163c Test Godot with Vulkan in CI 2021-04-15 16:17:28 +02:00
Fabio Alessandrelli 472482013e [HTML5] Add jsdoc2rst tool.
A template for `jsdoc` that generat the HTML5 public classref.

The script can be run via `npm run docs` to print to stdout.

You can dry run via `npm run docs -- --d dry-run` or write to file via
`npm run docs -- -d /path/to/file.rst`

Also update Makefile in `doc/` and add dry run test to CI.
2021-02-26 11:33:59 +01:00
Rémi Verschelde caea551d41 CI: Build without debug symbols to reduce cache size
We often hit "Too Many Requests" errors when uploading the cache with
`actions/cache` because there's a limit of 10 GB every 5 minutes, and we can
easily go over it when we amend or merge several PRs in a short timespan.

This will make the CI artifacts less useful for debugging crashes but there's
no real way around this.
2021-02-22 11:51:55 +01:00
Rémi Verschelde 146f016dcb
CODEOWNERS: Add some more owned files and fix team names 2021-02-16 11:35:51 +01:00
Rémi Verschelde a25bfce694
CODEOWNERS: Update with newly added teams 2021-02-15 12:53:59 +01:00
Gordon MacPherson f2feefb367 Use github actions cache not my own one. 2021-02-13 16:04:57 +00:00
Rémi Verschelde d6404fd7a0 CI: Build Linux editor without Mono, sanitizers with Mono
The Mono builds are with mono_glue=no so they're not usable,
and it would be convenient if the main tools=yes target=release_debug
artifacts could actually be used.
2021-02-05 12:07:40 +01:00
Rémi Verschelde af878716f2
CI: Update to clang-format 11 and apply ternary operator changes 2021-01-12 19:32:53 +01:00
Rémi Verschelde 06613ed9a3
CI: Pin Android NDK r21 as we don't support r22 yet 2021-01-12 18:42:59 +01:00
Rémi Verschelde 456acda57a
CI: Force building TextServer fallback
It's normally opt-in as the advanced one (CTL support) is the default,
but we need to build it to catch potential build issues.
2020-12-29 12:14:16 +01:00
bruvzg 636010e2c6
[CTL] Add myself to CODEOWNERS for the text server and font. 2020-12-28 23:36:42 +02:00
Rémi Verschelde 3e3fded479
CI: Shrink Windows cache to 3GB, we run out of disk space 2020-12-04 20:06:15 +01:00
Fabio Alessandrelli c38984d286 [HTML5] Enforce JavaScript style with eslint.
Applies to javascript files inside the platform library folder, the
exposed Engine code, and any javascript files in modules.

Files ending with ".externs.js" will be ignored, you can create a
".eslintignore" file to specify extra files to be ignored.
2020-11-23 12:15:18 +01:00
Rémi Verschelde 5af5c86ebc
CI: Build with warnings=extra to catch 'em all
... on all platforms but MSVC, as it still has a number of unsolved warnings
in its `/Wall` level. Some of it might be valid, others might be overkill,
this needs further assessment and fixes. (We could also change the `extra`
level to `/W4` on MSVC if that's more meaningful.)
2020-11-09 15:01:43 +01:00
Rémi Verschelde 5f19e1d571
CI: Refactor Android workflow, use pre-installed SDK and NDK
No need to waste time downloading all this when it's readily available :)
Also use the official action to setup Java 8.

Also build both architectures (armv7 and arm64v8) and generate the APK,
so we can upload it.

Remove now unused and outdated `misc/ci/android-tools-linux.sh`.
2020-10-22 17:21:59 +02:00
Rémi Verschelde e18a9a2224
CI: Set debug_symbols=no for template builds
This keeps their size small and allows to compare size changes on templates
in PRs, as the template size is what is most relevant to users.

For editor builds we keep debug symbols so they can be used to debug crashes.
2020-10-22 13:03:27 +02:00
Rémi Verschelde fc8ee3ca9b
CI: Don't upload linux-sanitizers artifacts
It's 1.5 GB, that's maybe a bit overkill.
2020-10-20 21:59:14 +02:00
George Marques 36828fc6a8
Remove bojidar from codeowners for GDScript
Since he won't be actively contributing for the time being.
2020-10-19 20:13:00 -03:00
Andrii Doroshenko (Xrayez) 2946535a6f CI: Refactor build workflows to use `SCONSFLAGS` 2020-10-16 14:41:30 +02:00
umarcor 935170c6d1 ci: do not use set-env 2020-10-16 05:11:28 +02:00
umarcor b8855ed732 CI: upload artifacts
Set retention-days of all artifacts to 14.
2020-10-15 20:32:16 +02:00
Rémi Verschelde 69e958b48d
CI: List contents of bin/ after build
This can be used to compare impacts on the generated files
and especially their size in PRs.
2020-10-15 19:50:49 +02:00
Rémi Verschelde 41c735fe50
Style: Fix black formatting after #42332
Somehow it did not run CI checks so we missed that one.

Also pin `black` version to latest upstream release.
2020-09-25 15:49:37 +02:00
Hugo Locurcio f516dc1198
Remove community health files from this repository
They've been moved to the @godotengine organization's .github
repository, which works as a fallback for all repositories in the
organization. This way, the Sponsor button is automatically displayed
on all repositories.

This closes #40972.
2020-08-27 15:53:59 +02:00
Hugo Locurcio 82b30f36cb
GitHub Actions: Prepend emoji to platform names for easy visual grepping 2020-08-23 15:13:36 +02:00
Rafał Mikrut 2fec1b9363 Add Linux sanitizer build to github workspace 2020-08-16 08:32:44 +02:00
Gordon MacPherson 4705ee2ccf
Rename javascript_builds.yml to javascript_builds.disabled 2020-08-13 14:33:34 +01:00
Rémi Verschelde cf2e0116d9 CI: Properly exclude Azure repositories on Ubuntu
Nuke all the pre-defined repos, we just need stock Ubuntu.
2020-08-11 17:14:47 +02:00
Rémi Verschelde bfd5226a8d CI: Pin Emscripten version for reproducible builds
Emscripten is a fast-moving target which gets tons of improvements all the time,
but it's not rare that some regressions affect us and make our CI builds fail.
(See e.g. #33728, #35237, #39168, #40563, and #40914.)

Let's pin to a stable version to avoid having external factors impact our CI,
and update this version manually regularly in a PR to ensure that the new
version works well for us.
2020-07-31 14:19:40 +02:00
Andrii Doroshenko (Xrayez) ceb338d672 CI: Show `tests=yes` for builds which run tests 2020-07-30 14:00:45 +03:00
Rémi Verschelde bd9fc75768
Merge pull request #40706 from akien-mga/style-fix-file_format-macos
Fix code format scripts compat with non-GNU Unices
2020-07-27 13:27:56 +02:00
Rémi Verschelde c71e189efd Style: Fix code format scripts compat with non-GNU Unices
It's too hard to get compatibility between GNU and BSD sed,
so let's just use perl oneliners.

And improve it to also remove trailing tabs, not just spaces.
2020-07-27 13:11:44 +02:00
Rémi Verschelde f940e5e000 CI: Install master version of psf/black
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.
2020-07-26 19:48:25 +02:00
Rémi Verschelde bf257adbf5 CI: Add iOS build on GitHub Actions 2020-07-25 21:55:49 +02:00
Andrii Doroshenko (Xrayez) f6465f46b4 SCons: Add `tests` option to enable or disable unit tests 2020-07-25 18:44:18 +03:00
RevoluPowered 579342810f t Add unit testing to Godot using DocTest and added to GitHub Actions CI
Implements exit codes into the engine so tests can return their statuses.
Ideally we don't do this, and we use FIXUP logic to 'begin' and 'end' the engine execution for tests specifically.

Since realistically we're initialising the engine here we don't want to do that, since String should not require an engine startup to test a single header.

This lowers the complexity of running the unit tests and even for
physics should be possible to implement such a fix.
2020-07-24 13:05:33 +01:00
Rémi Verschelde 2cf5ad9ea9 CI: Fix cache key and include base branch
The base branch is hardcoded as an env variable as I couldn't find a simple
way to just get either `3.2` or `master`. But it's easy to change when we
branch off from `master` to a new stable branch, which doesn't happen often.

(There's `{{github.base_ref}}` but it's probably more verbose like
`ref/heads/master`, and only valid for PRs.)
2020-07-24 08:28:43 +02:00
Gordon MacPherson afdce1e30c Improve the cache keys to prevent clashes for the wrong type of build 2020-07-24 00:15:23 +01:00
Gordon MacPherson 3c07d0ff32 Clamp scons cache to 4096 MB 2020-07-24 00:14:03 +01:00
Rémi Verschelde 0e294e6d25 CI: Add Mono support to Linux builds on GitHub Actions
Mono seems to be preinstalled in the build environment \o/
2020-07-24 00:29:11 +02:00
Rémi Verschelde cc530fdbe4 CI: Add GitHub Action build for JavaScript
Uses mymindstorm/setup-emsdk to install Emscripten and set up
caching for Emscripten's generated system libraries.
2020-07-24 00:06:34 +02:00
thebestnom 383ad22ee7 CI: Added Android GitHub Action 2020-07-23 19:36:53 +03:00
Rémi Verschelde f4c17da6f5
Merge pull request #40556 from aaronfranke/gha-sep-workflows
Split CI builds into workflows for each OS
2020-07-23 18:05:13 +02:00
Aaron Franke 78693cdc55
Add a PR template with a message about PRs needing to be for master
[ci skip]

Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
2020-07-22 13:04:58 -04:00
Aaron Franke e5df1362df
Split CI builds into workflows for each OS 2020-07-21 15:12:16 -04:00
Rémi Verschelde 431930bd09 CI: Drop AppVeyor and desktop Travis builds
These have been replaced by GitHub Actions.
The remaining Travis builds will also be ported eventually.
2020-07-20 10:35:53 +02:00
RevoluPowered d560f654ff fix CI builds on linux by using ubuntu default apt repositories 2020-07-20 09:51:12 +02:00
Gordon MacPherson 7bbae98094 added MacOS and Linux to GitHub Actions 2020-07-15 13:42:54 +01:00
Aaron Franke 61c9f11434
Globally install Python libraries in GitHub Actions
Otherwise it uses ~/.local/bin which GitHub doesn't include in PATH
2020-07-14 04:29:03 -04:00
Aaron Franke 9986439352
Commit other files changed by file_format.sh 2020-07-13 14:14:11 -04:00
Aaron Franke 79a2e4c1ab
Add static formatting checks for GitHub Actions 2020-07-13 14:06:13 -04:00
Gordon MacPherson 04592af5a4 Use GitHub Actions instead of AppVeyor for Windows platform
This was based on quarmin's initial configuration, we had compile issues with AppVeyor being super slow and GitHub actions will take less time and also manage a full rebuild in 30 minutes.

This adds cache handling and will work with MSVC and scons 4.0, it will build for every PR submitted to the Godot Engine, and also for the branches specified. I have tested the caching and it seems to be working.

I left the 'publish artefacts' disabled until we can request more storage from Microsoft, 5 GB is far to low for us and we would eat this limit very fast. (it is tested and works fine)

Co-authored-by: Rafał Mikrut <mikrutrafal54@gmail.com>
2020-07-12 19:44:49 +01:00
Aaron Franke 2a8066b8ab
Add aaronfranke to CODEOWNERS for GodotSharp
[ci skip]
2020-07-03 21:31:10 -04:00
Rémi Verschelde a7214a4b9b GitHub: Remove feature request placeholder template
We now have a proper link to godotengine/godot-proposals thanks to
#39019 and #39132, so that hacky 'Don't open issues here' template
is no longer needed.
2020-05-29 10:21:01 +02:00
Aaron Franke 389227bff1
Fix GitHub issue template config not working
It was in the wrong folder
2020-05-28 16:38:03 -04:00
Rémi Verschelde 79209a856c
Merge pull request #38262 from Xrayez/resurrect-issues
Bring back and improve comments clarifying the new bug report template
2020-05-25 11:35:07 +02:00
Hugo Locurcio f502fa207a
Add configuration for GitHub issue templates
This adds a few links on the issue creation page and disallows
creating blank issues (since all issues must follow the bug report
template).
2020-05-24 23:26:04 +02:00
Andrii Doroshenko (Xrayez) a58edb771f Bring back and improve comments clarifying the new bug report template
The comments clarifying the questions were
accidentally removed in c8e92b802c
while migrating to the bug/feature templates workflow.

[ci skip]
2020-05-07 19:48:07 +03:00
Juan Linietsky c8e92b802c
Delete ISSUE_TEMPLATE.md
Deleted old style issue template.
2019-09-04 15:29:49 -03:00
Juan Linietsky 083bb0242d Update issue templates 2019-09-04 15:29:05 -03:00