Commit graph

44 commits

Author SHA1 Message Date
Ignacio Etcheverry
a624448197
Mono: Add mono_bcl SCons option for a custom BCL location
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).

(cherry picked from commit dd5ace219d)
2020-12-09 11:22:05 +01:00
Hugo Locurcio
7b3f9ebb94
Enable the copy_mono_root SCons option by default
This closes #41652.

(cherry picked from commit cfd564b385)
2020-09-29 13:57:55 +02:00
Rémi Verschelde
d6ff55f30b
Merge pull request #39784 from neikeq/3.2-visualstudio-support
[3.2] C#: Add Visual Studio support
2020-06-26 20:49:35 +02:00
Rémi Verschelde
c8586d3837
Merge pull request #39840 from neikeq/3.2-use-/restore-instead-of-/t-restore
[3.2] Mono/C#: Use /restore instead of /t:restore when building
2020-06-26 08:08:40 +02:00
Ignacio Etcheverry
abc453f9b6 [3.2] Mono/C#: Use /restore instead of /t:restore when building
Documentation recommends not to use /t:restore
together with other targets (like /t:build),
as it messes with the environment.
2020-06-25 23:57:44 +02:00
Ignacio Etcheverry
d8af79140e [3.2] C#: Add VisualStudio support 2020-06-23 21:01:54 +02:00
Rémi Verschelde
7bf9787921 SCons: Format buildsystem files with psf/black
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.

(cherry picked from commit cd4e46ee65)
2020-06-10 15:30:52 +02:00
Ignacio Etcheverry
3928fe200f [3.2] C#: Support for building with the dotnet CLI
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-11 19:48:50 +02:00
Ignacio Etcheverry
683e19306e Mono: Use msbuild instead of nuget.exe for restoring
- Make GodotTools output directly to the SCons output directory.
- Removed xbuild_fallback from the build system.

(cherry picked from commit b61ffef0ab)
2020-05-11 11:01:13 +02:00
Ignacio Etcheverry
445f1c6e7b Mono/C#: Add iOS support
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-04-14 18:03:10 +02:00
Ignacio Etcheverry
6b38fe691a Mono/C#: Fix MinGW build not supporting .lib libraries
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-04-14 18:03:10 +02:00
Rémi Verschelde
4c325c0732 Mono: Fix detection of Apple platforms in build script
(cherry picked from commit 5b040ef2e8)
2020-03-06 23:51:26 +01:00
Dan Kramer
1b26f2c505 Fix msbuild target argument 2019-12-29 17:03:21 -05:00
Ignacio Etcheverry
86274b9fc9 Mono/C#: Re-structure API solution and GodotTools post-build target
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-28 20:48:55 +01:00
Rémi Verschelde
1c6b9bfdff Mono: Copy native and btls libs on macOS 2019-12-18 08:39:37 +01:00
Ivan Shakhov
8fbc9d33fd Support Rider as External Editor 2019-12-11 08:39:04 +01:00
Ignacio Etcheverry
066ae9d83b Mono/C#: Several android fixes
- 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-12-04 19:03:42 +01:00
Ignacio Etcheverry
66de28eda8 Mono/C#: Add option to export assemblies outside of PCK
When using this options, assemblies will be saved in the Assemblies folder of the  data directory: 'data_AppName/Assemblies/'.
2019-11-29 00:36:05 +01:00
Rémi Verschelde
636bc5c32f
Merge pull request #33828 from neikeq/貴様
Mono/C#: Prevent SCons from building API solutions in parallel
2019-11-23 11:24:48 +01:00
Ignacio Etcheverry
ebdd2bc474 Mono/C#: Prevent SCons from building API solutions in parallel 2019-11-22 23:42:24 +01:00
Ignacio Etcheverry
3f247ea507 Mono/C#: Bundle libmono-btls-shared.dll on Windows if it exists 2019-11-19 17:22:06 +01:00
Ignacio Etcheverry
de7c2ad21b Mono/C#: WebAssembly support 2019-11-13 21:41:11 +01:00
JoshLee0915
cbd98d0fcf Added the server platform checks to template dir and shared lib copy 2019-10-21 20:47:24 -06:00
fhuya
7fabfd402f Split the Android platform java logic into an Android library module (lib) 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-09-04 16:20:22 -07:00
Ignacio Etcheverry
aa805e2699 Fix 'android_mono_config.gen.cpp' not compiled first time it's generated 2019-08-26 17:46:57 +02:00
Rémi Verschelde
8995d95da0
Merge pull request #31347 from neikeq/monodevelop-addin
C#: Add Ide Connection library and server for the editor
2019-08-14 11:39:41 +02:00
Hugo Locurcio
05daf5c78b
Always use lists for LIBS in SCons
This closes #31288.
2019-08-12 22:31:55 +02:00
Ignacio Etcheverry
0b94203a79 C#: Add Ide Connection library and server for the editor
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-08-04 01:57:53 +02:00
unknown
f236b460e5 Some small fixes to warnings in python scripts 2019-07-11 22:26:04 +05:30
Ignacio Roldán Etcheverry
8b778f6234
Merge pull request #30489 from neikeq/fix-nullexc-on-gengameproj
Mono: Fix null exception in GenerateGameProject
2019-07-10 15:40:25 +02:00
Ignacio Etcheverry
caf20492cf Mono: Fix null exception in GenerateGameProject
Also fix pdb files for GodotTools.*.dll assemblies not being copied to the output directory.
2019-07-10 15:03:05 +02:00
Ignacio Etcheverry
c0a4f12fcc SCons no longer passes FrameworkPathOverride to MSBuild 2019-07-10 13:19:52 +02:00
Ignacio Etcheverry
4af03e52bd Make SCons check for System MSBuild before Mono's 2019-07-09 16:49:06 +02:00
Ignacio Etcheverry
270af6fa08 Re-write mono module editor code in C#
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-05 09:38:23 +02:00
Rémi Verschelde
e1478b7a87
Merge pull request #30292 from neikeq/android_fixes
Mono: Android build and shared libraries fixes
2019-07-03 21:26:12 +02:00
Ignacio Etcheverry
9f1a8ce6a2 Mono: Android build and shared libraries fixes
Fix location of Mono's shared libraries.
Fix build failing if the directory 'platform/android/java/libs/{target}/{abi}' doesn't exist.
2019-07-03 17:48:12 +02:00
Rémi Verschelde
b0d41847ed SCons: Use CPPDEFINES instead of CPPFLAGS for pre-processor defines
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.
2019-07-03 09:59:04 +02:00
Ignacio Roldán Etcheverry
abbbde87e2
Merge pull request #29606 from neikeq/remove-unneeded-mono-patches
Remove obsolete mono patch for pthread_mutexattr_setprotocol
2019-06-08 21:14:15 +02:00
Ignacio Etcheverry
26f9d907d4 Remove obsolete mono patch for pthread_mutexattr_setprotocol
This has already been fixed in Mono both master and 2019-06 (no other branch other than the skipped 2019-04 branch uses pthread_mutexattr_setprotocol).
2019-06-08 17:00:02 +02:00
Ignacio Etcheverry
ff0c863cb1 Mono: Fix SCons options added to the wrong environment 2019-06-04 16:15:00 +02:00
Ignacio Etcheverry
14df9e5cb2 Android build and export for the mono module 2019-06-03 17:09:24 +02:00
Rémi Verschelde
d52b70fb5e SCons: Always use env.Prepend for CPPPATH
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).
2019-04-30 13:12:06 +02:00
Ignacio Etcheverry
2873206aa6 Mono: Add compiler flags to env_mono instead of env
This way we avoid possible conflicts with other modules. Specially with include paths.
2019-04-07 19:03:13 +02:00
Ignacio Etcheverry
6bb29eb847 Mono: Reorganize build scripts
All build scripts, other than config.py and SCSub, are now located in the build_scripts subdirectory.
2019-04-07 19:03:09 +02:00