summaryrefslogtreecommitdiff
path: root/modules/mono/build_scripts
AgeCommit message (Collapse)Author
2021-07-01Remove unused code related to Travis CIHugo Locurcio
2021-03-06Add C# source generator for a new ScriptPath attributeIgnacio Etcheverry
This source generator adds a newly introduced attribute, `ScriptPath` to all classes that: - Are top-level classes (not inner/nested). - Have the `partial` modifier. - Inherit `Godot.Object`. - The class name matches the file name. A build error is thrown if the generator finds a class that meets these conditions but is not declared `partial`, unless the class is annotated with the `DisableGodotGenerators` attribute. We also generate an `AssemblyHasScripts` assembly attribute which Godot uses to get all the script classes in the assembly, eliminating the need for Godot to search them. We can also avoid searching in assemblies that don't have this attribute. This will be good for performance in the future once we support multiple assemblies with Godot script classes. This is an example of what the generated code looks like: ``` using Godot; namespace Foo { [ScriptPathAttribute("res://Player.cs")] // Multiple partial declarations are allowed [ScriptPathAttribute("res://Foo/Player.cs")] partial class Player {} } [assembly:AssemblyHasScripts(new System.Type[] { typeof(Foo.Player) })] ``` The new attributes replace script metadata which we were generating by determining the namespace of script classes with a very simple parser. This fixes several issues with the old approach related to parser errors and conditional compilation. It also makes the task part of the MSBuild project build, rather than a separate step executed by the Godot editor.
2020-12-17Merge pull request #44105 from neikeq/mono-wasm-m2n-hookRémi Verschelde
Mono: Make Godot provide its own WASM m2n trampolines
2020-12-14Mono: Don't use -rdynamic when compiling for WASMIgnacio Etcheverry
`-rdynamic` was causing the emsdk linker to silently fail to generate the output `.wasm` file (even though exit code was 0).
2020-12-06Mono: Add mono_bcl SCons option for a custom BCL locationIgnacio Etcheverry
Makes it let's bothersome to work with builds from our godotengine/godot-mono-builds scripts, as they write the BCL into an output directory separate from the runtime (which is good as two runtimes may share the same BCL).
2020-12-03Mono: Fix Android build after #36311Rémi Verschelde
2020-11-16Remove empty lines around braces with the formatting scriptAaron Franke
2020-10-23C#: Make editor create NuGet fallback folder for Godot packagesIgnacio Etcheverry
Main benefits: - Projects can be built offline. Previously you needed internet access the first time building to download the packages. - Changes to packages like Godot.NET.Sdk can be easily tested before publishing. This was already possible but required too many manual steps. - First time builds are a bit faster, as the Sdk package doesn't need to be downloaded. In practice, the package is very small so it makes little difference. Bumped Godot.NET.Sdk to 4.0.0-dev3 in order to enable the recent changes regarding '.mono/' -> '.godot/mono/'.
2020-09-25Enable the `copy_mono_root` SCons option by defaultHugo Locurcio
This closes #41652.
2020-09-11Remove unused Python local variables.Marcel Admiraal
2020-09-10Remove unused Python imports.Marcel Admiraal
2020-09-02Merge python EnvironmentError, IOError and WindowsError into OSError.Marcel Admiraal
2020-07-26CI: Install master version of psf/blackRémi Verschelde
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-06-25Mono/C#: Use /restore instead of /t:restore when buildingIgnacio Etcheverry
Documentation recommends not to use /t:restore together with other targets (like /t:build), as it messes with the environment.
2020-06-15Fix dynamic linking of MSVC Mono with MinGW GodotIgnacio Etcheverry
2020-06-15C#: Add VisualStudio supportIgnacio Etcheverry
2020-05-11C#: Support for building with the dotnet CLIIgnacio Etcheverry
By adding a reference to the 'Microsoft.NETFramework.ReferenceAssemblies' nuget package, we can build projects targeting .NET Framework with the dotnet CLI. By referencing this package we also don't need to install Mono on Linux/macOS or .NET Framework on Windows, as the assemblies are taken from the package.
2020-05-09Mono: Use msbuild instead of nuget.exe for restoringIgnacio Etcheverry
- Make GodotTools output directly to the SCons output directory. - Removed xbuild_fallback from the build system.
2020-03-31Mono/C#: Add iOS supportIgnacio Etcheverry
Right now, games only work on devices when exported with FullAOT+Interpreter. There are some issues left that need to addressed for FullAOT alone. Right now, it's giving issues with the Godot.NativeCalls static constructor.
2020-03-31Mono/C#: Fix MinGW build not supporting `.lib` librariesIgnacio Etcheverry
MinGW should support both its own format `.a` and MSVC's format `.lib`, but Mono's module was only using the former. With this change it's now possible to build with MinGW and link the official Mono for Windows which is built with MSVC.
2020-03-30SCons: Format buildsystem files with psf/blackRémi Verschelde
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.
2020-03-26Multiple changes to DisplayServerX11Mateo Kuruk Miccino
- Travis: Change x11 to linuxbsd - SCons: Change x11 plataform to linuxbsd - Plugins: Remove ; to avoid fallthrough warning - DisplayServerX11: Implement set_icon - DisplayServerX11: Fix X11 bug when a window was erased from windows map, all the changes from that erased windows are sending to the main window - DisplayServerX11: Reorder create_window commands - DisplayServerX11: Change every Size2 to Size2i and Rect2 to Rect2i where it belongs + More X11 fixes which have been integrated directly back into reduz's original commits while rebasing the branch.
2020-03-25SCons: Drop support for Python 2Rémi Verschelde
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).
2020-03-17Fix C# bindings after recent breaking changesIgnacio Etcheverry
Implementation for new Variant types Callable, Signal, StringName. Added support for PackedInt64Array and PackedFloat64Array. Add generation of signal members as events, as well as support for user created signals as events. NOTE: As of now, raising such events will not emit the signal. As such, one must use `EmitSignal` instead of raising the event directly. Removed old ThreadLocal fallback class. It's safe to use thread_local now since it's supported on all minimum versions of compilers we support.
2020-03-05Mono: Fix detection of Apple platforms in build scriptRémi Verschelde
2020-02-18PoolVector is gone, replaced by VectorJuan Linietsky
Typed `PoolTypeArray` types are now renamed `PackedTypeArray` and are sugar for `Vector<Type>`.
2019-12-29Fix msbuild target argumentDan Kramer
2019-12-28Mono/C#: Re-structure API solution and GodotTools post-build targetIgnacio Etcheverry
Previously we had a placeholder solution called 'Managed' to benefit from tooling while editing the a part of the C# API. Later the bindings generator would create the final 'GodotSharp' solution including these C# files as well as the auto-generated C# API. Now we replaced the 'Managed' solution with the final 'GodotSharp' solution which is no longer auto-generated, and the bindings generator only takes care of the auto-generated C# API. This has the following benefits: - It's less confusing as there will no longer be two versions of the same file (the original and a generated copy of it). Now there's only one. - We no longer need placeholder for auto-generated API classes, like Node or Resource. We used them for benefiting from tooling. Now we can just use the auto-generated API itself. - Simplifies the build system and bindings generator. Removed lot of code that is not needed anymore. Also added a post-build target to the GodotTools project to copy the output to the data dir. This makes it easy to iterate when doing changes to GodotTools, as SCons doesn't have to be executed anymore just to copy these new files.
2019-12-18Mono: Copy native and btls libs on macOSRémi Verschelde
2019-12-11Support Rider as External EditorIvan Shakhov
2019-12-04Mono/C#: Several android fixesIgnacio Etcheverry
- Added correct config file for android dllmaps. - Fix __Internal DllImports with a dlopen fallback. - Add missing P/Invoke functions and internal calls expected by the monodroid BCL and our custom version of the 'Android.Runtime.AndroidEnvironment' class (this last one can be found in the godot-mono-builds repo). - Make sure to set 'btls' instead of 'legacy' as the default TLS provider on Android.
2019-11-29Mono/C#: Add option to export assemblies outside of PCKIgnacio Etcheverry
When using this options, assemblies will be saved in the Assemblies folder of the data directory: 'data_AppName/Assemblies/'.
2019-11-23Merge pull request #33828 from neikeq/貴様Rémi Verschelde
Mono/C#: Prevent SCons from building API solutions in parallel
2019-11-22Mono/C#: Prevent SCons from building API solutions in parallelIgnacio Etcheverry
2019-11-19Mono/C#: Bundle libmono-btls-shared.dll on Windows if it existsIgnacio Etcheverry
2019-11-13Mono/C#: WebAssembly supportIgnacio Etcheverry
2019-10-21Added the server platform checks to template dir and shared lib copyJoshLee0915
2019-09-04Split the Android platform java logic into an Android library module (`lib`) ↵fhuya
and an application module (`app`). The application module `app` serves double duties of providing the prebuilt Godot binaries ('android_debug.apk', 'android_release.apk') and the Godot custom build template ('android_source.zip').
2019-08-26Fix 'android_mono_config.gen.cpp' not compiled first time it's generatedIgnacio Etcheverry
2019-08-14Merge pull request #31347 from neikeq/monodevelop-addinRémi Verschelde
C#: Add Ide Connection library and server for the editor
2019-08-12Always use lists for `LIBS` in SConsHugo Locurcio
This closes #31288.
2019-08-04C#: Add Ide Connection library and server for the editorIgnacio Etcheverry
This will be used for communicating between the Godot editor and external IDEs/editors, for things like opening files, triggering hot-reload and running the game with a debugger attached.
2019-07-11Some small fixes to warnings in python scriptsunknown
2019-07-10Merge pull request #30489 from neikeq/fix-nullexc-on-gengameprojIgnacio Roldán Etcheverry
Mono: Fix null exception in GenerateGameProject
2019-07-10Mono: Fix null exception in GenerateGameProjectIgnacio Etcheverry
Also fix pdb files for GodotTools.*.dll assemblies not being copied to the output directory.
2019-07-10SCons no longer passes FrameworkPathOverride to MSBuildIgnacio Etcheverry
2019-07-09Make SCons check for System MSBuild before Mono'sIgnacio Etcheverry
2019-07-05Re-write mono module editor code in C#Ignacio Etcheverry
Make the build system automatically build the C# Api assemblies to be shipped with the editor. Make the editor, editor player and debug export templates use Api assemblies built with debug symbols. Always run MSBuild to build the editor tools and Api assemblies when building Godot. Several bugs fixed related to assembly hot reloading and restoring state. Fix StringExtensions internal calls not being registered correctly, resulting in MissingMethodException.
2019-07-03Merge pull request #30292 from neikeq/android_fixesRémi Verschelde
Mono: Android build and shared libraries fixes
2019-07-03Mono: Android build and shared libraries fixesIgnacio Etcheverry
Fix location of Mono's shared libraries. Fix build failing if the directory 'platform/android/java/libs/{target}/{abi}' doesn't exist.