Mono/C#: Prevent SCons from building API solutions in parallel
This commit is contained in:
parent
95f1f4e82a
commit
ebdd2bc474
3 changed files with 15 additions and 9 deletions
|
@ -42,14 +42,14 @@ mono_configure.configure(env, env_mono)
|
|||
|
||||
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)
|
||||
api_sln_cmd = 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)
|
||||
godot_tools_build.build(env_mono, api_sln_cmd)
|
||||
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
|
||||
|
|
|
@ -55,12 +55,22 @@ def build(env_mono):
|
|||
'GodotSharpEditor.dll', 'GodotSharpEditor.pdb', 'GodotSharpEditor.xml'
|
||||
]
|
||||
|
||||
depend_cmd = []
|
||||
|
||||
for build_config in ['Debug', 'Release']:
|
||||
output_dir = Dir('#bin').abspath
|
||||
editor_api_dir = os.path.join(output_dir, 'GodotSharp', 'Api', build_config)
|
||||
|
||||
targets = [os.path.join(editor_api_dir, filename) for filename in target_filenames]
|
||||
|
||||
cmd = env_mono.CommandNoCache(targets, [], build_api_solution,
|
||||
cmd = env_mono.CommandNoCache(targets, depend_cmd, build_api_solution,
|
||||
module_dir=os.getcwd(), solution_build_config=build_config)
|
||||
env_mono.AlwaysBuild(cmd)
|
||||
|
||||
# Make the Release build of the API solution depend on the Debug build.
|
||||
# We do this in order to prevent SCons from building them in parallel,
|
||||
# which can freak out MSBuild. In many cases, one of the builds would
|
||||
# hang indefinitely requiring a key to be pressed for it to continue.
|
||||
depend_cmd = cmd
|
||||
|
||||
return depend_cmd
|
||||
|
|
|
@ -74,15 +74,11 @@ def build_godot_tools_project_editor(source, target, env):
|
|||
copy_target(str(scons_target))
|
||||
|
||||
|
||||
def build(env_mono):
|
||||
def build(env_mono, api_sln_cmd):
|
||||
assert env_mono['tools']
|
||||
|
||||
output_dir = Dir('#bin').abspath
|
||||
editor_tools_dir = os.path.join(output_dir, 'GodotSharp', 'Tools')
|
||||
editor_api_dir = os.path.join(output_dir, 'GodotSharp', 'Api', 'Debug')
|
||||
|
||||
source_filenames = ['GodotSharp.dll', 'GodotSharpEditor.dll']
|
||||
sources = [os.path.join(editor_api_dir, filename) for filename in source_filenames]
|
||||
|
||||
target_filenames = [
|
||||
'GodotTools.dll', 'GodotTools.IdeConnection.dll', 'GodotTools.BuildLogger.dll',
|
||||
|
@ -97,7 +93,7 @@ def build(env_mono):
|
|||
|
||||
targets = [os.path.join(editor_tools_dir, filename) for filename in target_filenames]
|
||||
|
||||
cmd = env_mono.CommandNoCache(targets, sources, build_godot_tools, module_dir=os.getcwd())
|
||||
cmd = env_mono.CommandNoCache(targets, api_sln_cmd, build_godot_tools, module_dir=os.getcwd())
|
||||
env_mono.AlwaysBuild(cmd)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue