Skip to content

Commit

Permalink
Merge pull request #12491 from neikeq/waitasecond···
Browse files Browse the repository at this point in the history
Fix FrameworkPathOverride and assemblies path loop
  • Loading branch information
neikeq authored Oct 29, 2017
2 parents df0610e + aa5a0b5 commit 619e4eb
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 24 deletions.
38 changes: 20 additions & 18 deletions modules/mono/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -97,29 +97,31 @@ def find_msbuild_unix(filename):
def find_msbuild_windows():
import mono_reg_utils as monoreg

msbuild_tools_path = monoreg.find_msbuild_tools_path_reg()
bits = env['bits']

if msbuild_tools_path:
return (os.path.join(msbuild_tools_path, 'MSBuild.exe'), '')
if bits == '32':
if os.getenv('MONO32_PREFIX'):
mono_root = os.getenv('MONO32_PREFIX')
else:
mono_root = monoreg.find_mono_root_dir(bits)
else:
bits = env['bits']

if bits == '32':
if os.getenv('MONO32_PREFIX'):
mono_root = os.getenv('MONO32_PREFIX')
else:
mono_root = monoreg.find_mono_root_dir(bits)
if os.getenv('MONO64_PREFIX'):
mono_root = os.getenv('MONO64_PREFIX')
else:
if os.getenv('MONO64_PREFIX'):
mono_root = os.getenv('MONO64_PREFIX')
else:
mono_root = monoreg.find_mono_root_dir(bits)
mono_root = monoreg.find_mono_root_dir(bits)

if mono_root:
msbuild_mono = os.path.join(mono_root, 'bin', 'msbuild.bat')
if not mono_root:
raise RuntimeError('Cannot find mono root directory')

msbuild_tools_path = monoreg.find_msbuild_tools_path_reg()

if msbuild_tools_path:
return (os.path.join(msbuild_tools_path, 'MSBuild.exe'), os.path.join(mono_root, 'lib', 'mono', '4.5'))
else:
msbuild_mono = os.path.join(mono_root, 'bin', 'msbuild.bat')

if os.path.isfile(msbuild_mono):
return (msbuild_mono, os.path.join(mono_root, 'lib', 'mono', '4.5'))
if os.path.isfile(msbuild_mono):
return (msbuild_mono, '')

return None

Expand Down
14 changes: 11 additions & 3 deletions modules/mono/editor/godotsharp_builds.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
#include "main/main.h"

#include "../godotsharp_dirs.h"
#include "../mono_gd/gd_mono.h"
#include "../mono_gd/gd_mono_class.h"
#include "../mono_gd/gd_mono_marshal.h"
#include "../utils/path_utils.h"
Expand Down Expand Up @@ -84,10 +85,16 @@ void godot_icall_BuildInstance_get_MSBuildInfo(MonoString **r_msbuild_path, Mono
if (!msbuild_tools_path.ends_with("\\"))
msbuild_tools_path += "\\";

*r_msbuild_path = GDMonoMarshal::mono_string_from_godot(msbuild_tools_path + "MSBuild.exe");

// FrameworkPathOverride
*r_framework_path = GDMonoMarshal::mono_string_from_godot(GDMono::get_singleton()->get_mono_reg_info().assembly_dir);
const MonoRegInfo &mono_reg_info = GDMono::get_singleton()->get_mono_reg_info();
if (mono_reg_info.assembly_dir.length()) {
*r_msbuild_path = GDMonoMarshal::mono_string_from_godot(msbuild_tools_path + "MSBuild.exe");

String framework_path = path_join(mono_reg_info.assembly_dir, "mono", "4.5");
*r_framework_path = GDMonoMarshal::mono_string_from_godot(framework_path);
} else {
ERR_PRINT("Cannot find Mono's assemblies directory in the registry");
}

return;
}
Expand Down Expand Up @@ -130,6 +137,7 @@ void godot_icall_BuildInstance_get_MSBuildInfo(MonoString **r_msbuild_path, Mono

return;
#else
ERR_PRINT("Not implemented on this platform");
return;
#endif
}
Expand Down
7 changes: 4 additions & 3 deletions modules/mono/mono_gd/gd_mono_assembly.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,11 @@ MonoAssembly *GDMonoAssembly::_preload_hook(MonoAssemblyName *aname, char **asse
search_dirs.push_back(String(rootdir).plus_file("mono").plus_file("4.5"));
}

while (assemblies_path) {
if (*assemblies_path)
if (assemblies_path) {
while (*assemblies_path) {
search_dirs.push_back(*assemblies_path);
++assemblies_path;
++assemblies_path;
}
}
}

Expand Down

0 comments on commit 619e4eb

Please sign in to comment.