summaryrefslogtreecommitdiff
path: root/modules/mono/SCsub
AgeCommit message (Collapse)Author
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-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-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.
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-11-22Mono/C#: Prevent SCons from building API solutions in parallelIgnacio Etcheverry
2019-08-26Fix 'android_mono_config.gen.cpp' not compiled first time it's generatedIgnacio 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-06-04Mono: Fix SCons options added to the wrong environmentIgnacio Etcheverry
2019-04-07Mono: Add compiler flags to env_mono instead of envIgnacio Etcheverry
This way we avoid possible conflicts with other modules. Specially with include paths.
2019-04-07Mono: Reorganize build scriptsIgnacio Etcheverry
All build scripts, other than config.py and SCSub, are now located in the build_scripts subdirectory.
2019-04-06Remove unused importsHendrikto
2019-01-22Mono: Fix hot reload build errors and cleanupIgnacio Etcheverry
2018-11-30C#: Improve tool script support and fix reloading issuesIgnacio Etcheverry
2018-10-25Fix msvc warnings in mono moduleIgnacio Etcheverry
- `modules\mono\csharp_script.cpp(576): warning C4099: 'CSharpScriptDepSort': type name first seen using 'class' now seen using 'struct'` - `modules\mono\signal_awaiter_utils.cpp(144): warning C4003: not enough actual parameters for macro 'ERR_FAIL_V'` - `modules\mono\editor\net_solution.cpp(101): warning C4129: '%': unrecognized character escape sequence` - (several) `modules\mono\glue\cs_compressed.gen.h(222): warning C4129: 'E': unrecognized character escape sequence`
2018-10-25Support globs in csproj includesIgnacio Etcheverry
2018-10-17C#: Optimize struct marshallingIgnacio Etcheverry
- We no longer box struct to return them from internal calls. - Use reinterpret_cast if the managed struct layout is the same as the native struct.
2018-10-03Mono: Editor and export template dependencies and fixesIgnacio Etcheverry
- Bundle editor dependencies: - 'GodotSharp': Root data directory for the editor - 'Tools': Editor dependencies. Only GodotSharp.dll for now. - 'Api': Prebuilt GodotSharp and GodotSharpEditor API assemblies. - 'Mono': Mono files to bundle with the editor. - 'bin': (Optional, not used for now) Mono bin directory. - 'etc': Mono configuration files. - 'lib': Mono dependency shared libraries. - 'lib/mono/4.5': Framework assemblies. - Added build option to copy the required files from the mono installation to 'GodotSharp/Mono'. Enable with 'copy_mono_root=yes'. Disabled by default. - Export template dependencies: - 'data_AppName'/'data_Godot': - 'Mono': Mono files to bundle with the game. - 'etc': Mono configuration files. - 'lib': Mono dependency shared libraries. - The data directory is generated when compiling and must be bundled with the export templates. In the case of OSX, the data directory must be placed inside the 'osx.zip' export template. - In OSX, alternative location for directories (needed for app bundles) are: - 'data_AppName/Mono/etc' --> '../Resources/GodotSharp/Mono/etc' - 'data_AppName/Mono/lib' --> '../Frameworks/GodotSharp/Mono/lib' - The editor can bundle prebuilt API assemblies. - Generate them with a tools build by running: `--generate-cs-core-api <GodotSharp_OutputDir> --generate-cs-editor-api <GodotSharpEditor_OutputDir> <GodotSharp_OutputDir>/bin/Release/GodotSharp.dll` (This command will be simplified in the future and both projects will be in the same solution) - Build the solutions and copy the output files to '#bin/GodotSharp/Api'. - Fixed API assembly being added twice during the export process.
2018-09-17Fix missing mono internal callIgnacio Etcheverry
- Also fixed uninitalized variable in buildscript
2018-09-12Move modules/mono/glue/cs_files to modules/mono/glue/Managed/FilesIgnacio Etcheverry
Added dummy MSBuild project and solution to get tooling help when editing these files.
2018-09-12Make core/ includes absolute, remove subfolders from include pathRémi Verschelde
This allows more consistency in the manner we include core headers, where previously there would be a mix of absolute, relative and include path-dependent includes.
2018-09-12C#: Fix cs_files glue mismatch bugIgnacio Etcheverry
2018-09-12Allow special characters in C# glue filesIgnacio Etcheverry
Fixes #21139 - Surround the generated file modules/mono/glue/cs_compressed.gen.h with ifdef TOOLS_ENABLED
2018-09-12Cleanup of c# api files and bindings generatorIgnacio Etcheverry
- We no longer generate RID and NodePath C# classes. Both will be maintained manually. - We no longer generate C# declarations and runtime registration of internal calls for the following classes: RID, NodePath, String, GD, SignalAwaiter and Godot.Object (partial base). - We no longer auto-generate the base members of Godot.Object. They will be maintained manually as a partial class. This makes it easier to maintain these C# classes and their internal calls, as well as the bindings generator which no longer generates C# classes that don't derive from Godot Object, and it no longer generates the Godot.Object base members (which where unreadable in the bindings generator code). - Added missing 'RID(Object from)' constructor to the RID C# class. - Replaced MONO_GLUE_DISABLED constant macro with MONO_GLUE_ENABLED. - Add sources in module/mono/glue even if glue is disabled, but surround glue files with ifdef MONO_GLUE_ENABLED.
2018-08-17Mono: Improve C# core files (glue/cs_files) buildsystemIgnacio Etcheverry
- Search C# files recursively in 'glue/cs_files'. - Determine a version for the C# core files automatically. The latest modified time will do for now.
2018-07-27Running builder (content generator) functions in subprocesses on WindowsViktor Ferenczi
- Refactored all builder (make_*) functions into separate Python modules along to the build tree - Introduced utility function to wrap all invocations on Windows, but does not change it elsewhere - Introduced stub to use the builders module as a stand alone script and invoke a selected function There is a problem with file handles related to writing generated content (*.gen.h and *.gen.cpp) on Windows, which randomly causes a SHARING VIOLATION error to the compiler resulting in flaky builds. Running all such content generators in a new subprocess instead of directly inside the build script works around the issue. Yes, I tried the multiprocessing module. It did not work due to conflict with SCons on cPickle. Suggested workaround did not fully work either. Using the run_in_subprocess wrapper on osx and x11 platforms as well for consistency. In case of running a cross-compilation on Windows they would still be used, but likely it will not happen in practice. What counts is that the build itself is running on which platform, not the target platform. Some generated files are written directly in an SConstruct or SCsub file, before the parallel build starts. They don't need to be written in a subprocess, apparently, so I left them as is.
2018-07-10Added path for Mono installed through HomebrewMads Ynddal
On macOS, it is common to install packages like Mono through the third-party package-manager Homebrew. This commit simply adds an additional path to where Homebrew installs the Mono framework.
2018-07-04Mono: Pending exceptions and cleanupIgnacio Etcheverry
2018-06-22Mono: Module build improvementsIgnacio Etcheverry
- Add (Csc/Vbc/Fsc)ToolExe environment variables when running Mono's MSBuild. - Fix directory for the 'mono_assemblies_output_dir' argument being created with the '#' top level directory token as part of its name. - Allow to build with 'mono_static=yes' on Unix without specifying a mono prefix. The build script will try to find the mono prefix using the output from pkg-config.
2018-02-27Merge pull request #15641 from ↵Rémi Verschelde
neikeq/mono-is-picky-regarding-corlib-so-we-must-make-sure-to-ship-the-right-version-otherwise-something-bad-may-happen Mono: Buildsystem improvements
2018-02-25Mono: Better versioning and gracefully unloading of Godot API assembliesIgnacio Etcheverry
2018-02-10Add and use mono build variables with cloned environment.Jonathan Tinkham
2018-01-12Mono: Buildsystem improvementsIgnacio Etcheverry
- Bundle with mscorlib.dll to avoid compatibilities issues - Add build option 'mono_assemblies_output_dir' to specify the output directory where the assemblies will be copied to. '#bin' by default.
2017-12-12Mono: Build in cloned env.Andreas Haas
Use a cloned env, so that toggling glue_enabled doesn't force a full rebuild as mentioned in #14584.
2017-11-04Added for fallback msbuild.exe.BrainBlasted
Fixes #12613
2017-10-29Merge pull request #12491 from neikeq/waitasecond···Ignacio Etcheverry
Fix FrameworkPathOverride and assemblies path loop
2017-10-29Fix FrameworkPathOverride and assemblies path loopIgnacio Etcheverry
2017-10-29Mono: Fix Windows buildRémi Verschelde
2017-10-29Buildsystem improvements for the Mono moduleIgnacio Etcheverry
- Make sure to search the mono installation directory for the right architecture in the windows registry. - Do not build GodotSharpTools directly to #bin dir. Instead build to the default output path and copy it. This way we avoid MSBuild adding files we don't want to #bin. - Add hint path for MSBuild in OSX. - Copy shared library on Unix if not statically linking. - Use vswhere to search MSBuild and search for 14.0 tools version in the registry instead of 4.0. - SCons will only fallback xbuild when msbuild is not found if 'xbuild_fallback=yes' is passed to the command. - Use mono's assembly path as FrameworkPathOverride if using with system's MSBuild (not mono's fork). - Cleanup.
2017-10-07Fix Python 3 incompatibility in Mono buildMatthias Hoelzl
2017-10-03Added mono moduleIgnacio Etcheverry