parent
691d4e3835
commit
61426464ea
|
@ -30,6 +30,7 @@
|
|||
|
||||
#include "godotsharp_builds.h"
|
||||
|
||||
#include "core/vector.h"
|
||||
#include "main/main.h"
|
||||
|
||||
#include "../godotsharp_dirs.h"
|
||||
|
@ -50,6 +51,16 @@ void godot_icall_BuildInstance_ExitCallback(MonoString *p_solution, MonoString *
|
|||
GodotSharpBuilds::get_singleton()->build_exit_callback(MonoBuildInfo(solution, config), p_exit_code);
|
||||
}
|
||||
|
||||
static Vector<const char *> _get_msbuild_hint_dirs() {
|
||||
Vector<const char *> ret;
|
||||
#ifdef OSX_ENABLED
|
||||
ret.push_back("/Library/Frameworks/Mono.framework/Versions/Current/bin/");
|
||||
ret.push_back("/usr/local/var/homebrew/linked/mono/bin/");
|
||||
#endif
|
||||
ret.push_back("/opt/novell/mono/bin/");
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifdef UNIX_ENABLED
|
||||
String _find_build_engine_on_unix(const String &p_name) {
|
||||
String ret = path_which(p_name);
|
||||
|
@ -61,15 +72,9 @@ String _find_build_engine_on_unix(const String &p_name) {
|
|||
if (ret_fallback.length())
|
||||
return ret_fallback;
|
||||
|
||||
const char *locations[] = {
|
||||
#ifdef OSX_ENABLED
|
||||
"/Library/Frameworks/Mono.framework/Versions/Current/bin/",
|
||||
"/usr/local/var/homebrew/linked/mono/bin/",
|
||||
#endif
|
||||
"/opt/novell/mono/bin/"
|
||||
};
|
||||
static Vector<const char *> locations = _get_msbuild_hint_dirs();
|
||||
|
||||
for (int i = 0; i < sizeof(locations) / sizeof(const char *); i++) {
|
||||
for (int i = 0; i < locations.size(); i++) {
|
||||
String hint_path = locations[i] + p_name;
|
||||
|
||||
if (FileAccess::exists(hint_path)) {
|
||||
|
|
|
@ -177,6 +177,30 @@ void GDMono::initialize() {
|
|||
|
||||
mono_set_dirs(assembly_dir.length() ? assembly_dir.get_data() : NULL,
|
||||
config_dir.length() ? config_dir.get_data() : NULL);
|
||||
#elif OSX_ENABLED
|
||||
mono_set_dirs(NULL, NULL);
|
||||
|
||||
{
|
||||
const char *assembly_rootdir = mono_assembly_getrootdir();
|
||||
const char *config_dir = mono_get_config_dir();
|
||||
|
||||
if (!assembly_rootdir || !config_dir || !DirAccess::exists(assembly_rootdir) || !DirAccess::exists(config_dir)) {
|
||||
Vector<const char *> locations;
|
||||
locations.push_back("/Library/Frameworks/Mono.framework/Versions/Current/");
|
||||
locations.push_back("/usr/local/var/homebrew/linked/mono/");
|
||||
|
||||
for (int i = 0; i < locations.size(); i++) {
|
||||
String hint_assembly_rootdir = path_join(locations[i], "lib");
|
||||
String hint_mscorlib_path = path_join(hint_assembly_rootdir, "mono", "4.5", "mscorlib.dll");
|
||||
String hint_config_dir = path_join(locations[i], "etc");
|
||||
|
||||
if (FileAccess::exists(hint_mscorlib_path) && DirAccess::exists(hint_config_dir)) {
|
||||
mono_set_dirs(hint_assembly_rootdir.utf8().get_data(), hint_config_dir.utf8().get_data());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
mono_set_dirs(NULL, NULL);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue