mirror of
https://github.com/godotengine/godot.git
synced 2024-12-15 10:12:40 +08:00
86274b9fc9
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.
55 lines
1.7 KiB
Python
55 lines
1.7 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()
|
|
|
|
if env_mono['tools']:
|
|
# NOTE: It is safe to generate this file here, since this is still executed serially
|
|
import build_scripts.gen_cs_glue_version as gen_cs_glue_version
|
|
gen_cs_glue_version.generate_header('glue/GodotSharp', '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)
|
|
|
|
if env_mono['tools'] and env_mono['mono_glue']:
|
|
# Build Godot API solution
|
|
import build_scripts.api_solution_build as api_solution_build
|
|
api_sln_cmd = api_solution_build.build(env_mono)
|
|
|
|
# Build GodotTools
|
|
import build_scripts.godot_tools_build as godot_tools_build
|
|
godot_tools_build.build(env_mono, api_sln_cmd)
|
|
|
|
# Add sources
|
|
|
|
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')
|