Commit Graph

37 Commits

Author SHA1 Message Date
Ignacio Etcheverry 77dd061345 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-03-31 09:37:16 +02:00
Rémi Verschelde cd4e46ee65 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.
2020-03-30 09:05:53 +02:00
Mateo Kuruk Miccino f387b9b4f4 Multiple changes to DisplayServerX11
- 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-26 15:49:54 +01:00
Andrii Doroshenko (Xrayez) 94b6c1363c Generate command line help text for `mono` module 2020-03-17 17:26:09 +02:00
Ignacio Etcheverry de7c2ad21b Mono/C#: WebAssembly support 2019-11-13 21:41:11 +01:00
Ignacio Etcheverry ff0c863cb1 Mono: Fix SCons options added to the wrong environment 2019-06-04 16:15:00 +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
Hendrikto 49a81308c0 Remove unused imports 2019-04-06 18:05:05 +02:00
Rémi Verschelde d52100f4ff SCons: Allow building Mono module with OSXCross
Improve the test logic to only assume that we're building for macOS
if OSXCROSS_ROOT is defined *and* we requested p=osx.

Supersedes #24480.
2018-12-22 12:36:19 +01:00
Ignacio Etcheverry 0f3fc93070 Fix assertion fail when loading assembly on project export 2018-11-08 16:47:15 +01:00
Ignacio Etcheverry d7ece43b74 Mono: Editor and export template dependencies and fixes
- 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-10-03 19:16:29 +02:00
Ignacio Etcheverry a4e4dd3966
Merge pull request #22193 from neikeq/idontlikesanditscoarseandroughandirritatinganditgetseverywhere
Mono: Build and external editor improvements for OSX
2018-09-17 20:22:05 +02:00
Ignacio Etcheverry b032738a51 Add some mono root dir hints to the build script
This enhancement is specially noticeable in OSX, since it includes Mono's install location (both official and homebrew). This makes it possible to build Godot with Mono on OSX without pkg-config (pkg-config is bundled with Mono, but it's not added to PATH, so finding it would require finding the Mono root directory first).
2018-09-17 19:34:35 +02:00
Sophie Tauchert 99cd17b102
Check for mono binary when finding version 2018-09-16 15:20:44 +02:00
Justin Abene c6a4ca5c9e Prevent "cannot use a string pattern on a bytes-like object"
Fixes #21207
2018-08-20 00:42:47 -04:00
Rémi Verschelde 695b8d254e SCons: Fix mono_root initialization
As advised by @neikeq.
2018-08-14 08:55:37 +02:00
Teashrock 51a0a38135 Fixed absent variable exception while trying to raise another exception. 2018-08-13 16:28:28 +02:00
Ignacio Etcheverry 33fd0f762d Mono: Fix build script not decoding process utf-8 output 2018-07-04 16:07:52 +02:00
Ignacio Etcheverry 4739cb8c00 Mono: Pending exceptions and cleanup 2018-07-04 03:08:29 +02:00
Ignacio Etcheverry 25275de50e
Merge pull request #19016 from neikeq/w
Mono: Module build improvements
2018-06-22 19:18:15 +02:00
Ignacio Etcheverry ec6416d2b6 Mono: Module build improvements
- 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-06-22 19:14:58 +02:00
Hein-Pieter van Braam f2d669f5d3 Fix Mono static linking on Mingw 2018-06-01 21:46:46 +02:00
Rémi Verschelde 3334209a73 SCons: Pass env to modules can_build method
This allows to disable modules based on the environment,
in particular `env[tools]` which tells us if we are
building the editor or not.
2018-05-30 19:11:36 +02:00
Ignacio Etcheverry a1aa98e05a Fix MSVC check when building with mono 2018-05-02 15:19:02 +02:00
Ignacio Etcheverry b5e6e142ef Add option to link mono statically on Windows 2018-04-25 21:15:35 +02:00
PJB3005 6a7f552c6f Fix mono build properly!
Fixes the mistake I made in #17603 to make it require Python > 3.6.
2018-03-19 16:36:03 +01:00
Pieter-Jan Briers 998f1977a8 Fix Mono builds with Python 3.
A subprocess call wasn't specifying an encoding,
so this gave a TypeError in Python 3.
2018-03-18 10:51:35 +01:00
Hein-Pieter van Braam c094e90b25 More reliably find mscorlib.dll on Linux 2018-02-27 21:52:24 +01:00
Rémi Verschelde 75c7e66c5e
Merge pull request #15641 from 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-27 11:08:17 +01:00
Benjamin Dobell 5920bc6f72 Fix pkgconfig detection of mono 2018-02-03 05:17:53 +11:00
Ignacio Etcheverry a45697d8df Mono: Buildsystem improvements
- 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.
2018-01-12 22:44:22 +01:00
Rémi Verschelde 677e95d8d1 doc: Make all module docs self-contained 2017-11-15 21:29:33 +01:00
Juan Linietsky 79f81b77e2 -Modules can now add custom version info (added it for Mono)
-Version string takes this version info
-Ability to download templates from the interweb (listing does not work yet)
2017-11-01 23:13:27 -03:00
Ignacio Etcheverry 9f469887fc Buildsystem improvements for the Mono module
- 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-29 04:26:13 +01:00
Rémi Verschelde a3a85670a3 Mono: Fix static linking on macOS
[ci skip]
2017-10-20 22:11:55 +02:00
Rémi Verschelde cd69dcafb7 mono: Request monosgen-2 explicitly via pkg-config
Prevents GC mismatch between mono binary and library, fixes #11916.
2017-10-14 23:54:26 +02:00
Ignacio Etcheverry e36fb95c50 Added mono module 2017-10-03 00:01:26 +02:00