270af6fa08
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.
65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
#!/usr/bin/env python
|
|
|
|
import build_scripts.tls_configure as tls_configure
|
|
import build_scripts.mono_configure as mono_configure
|
|
|
|
Import('env')
|
|
Import('env_modules')
|
|
|
|
env_mono = env_modules.Clone()
|
|
|
|
env_mono.add_source_files(env.modules_sources, '*.cpp')
|
|
env_mono.add_source_files(env.modules_sources, 'glue/*.cpp')
|
|
env_mono.add_source_files(env.modules_sources, 'mono_gd/*.cpp')
|
|
env_mono.add_source_files(env.modules_sources, 'utils/*.cpp')
|
|
|
|
if env['tools']:
|
|
env_mono.add_source_files(env.modules_sources, 'editor/*.cpp')
|
|
# NOTE: It is safe to generate this file here, since this is still executed serially
|
|
import build_scripts.make_cs_compressed_header as make_cs_compressed_header
|
|
make_cs_compressed_header.generate_header(
|
|
'glue/Managed/Files',
|
|
'glue/cs_compressed.gen.h',
|
|
'glue/cs_glue_version.gen.h'
|
|
)
|
|
|
|
# Glue sources
|
|
if env_mono['mono_glue']:
|
|
env_mono.Append(CPPDEFINES=['MONO_GLUE_ENABLED'])
|
|
|
|
import os.path
|
|
if not os.path.isfile('glue/mono_glue.gen.cpp'):
|
|
raise RuntimeError("Mono glue sources not found. Did you forget to run '--generate-mono-glue'?")
|
|
|
|
if env_mono['tools'] or env_mono['target'] != 'release':
|
|
env_mono.Append(CPPDEFINES=['GD_MONO_HOT_RELOAD'])
|
|
|
|
# Configure Thread Local Storage
|
|
|
|
conf = Configure(env_mono)
|
|
tls_configure.configure(conf)
|
|
env_mono = conf.Finish()
|
|
|
|
# Configure Mono
|
|
|
|
mono_configure.configure(env, env_mono)
|
|
|
|
# Build Godot API solution
|
|
|
|
if env_mono['tools'] and env_mono['mono_glue']:
|
|
import build_scripts.api_solution_build as api_solution_build
|
|
api_solution_build.build(env_mono)
|
|
|
|
# Build GodotTools
|
|
|
|
if env_mono['tools']:
|
|
import build_scripts.godot_tools_build as godot_tools_build
|
|
if env_mono['mono_glue']:
|
|
godot_tools_build.build(env_mono)
|
|
else:
|
|
# Building without the glue sources so the Godot API solution may be missing.
|
|
# GodotTools depends on the Godot API solution. As such, we will only build
|
|
# GodotTools.ProjectEditor which doesn't depend on the Godot API solution and
|
|
# is required by the bindings generator in order to be able to generated it.
|
|
godot_tools_build.build_project_editor_only(env_mono)
|