parent
691d4e3835
commit
61426464ea
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include "godotsharp_builds.h"
|
#include "godotsharp_builds.h"
|
||||||
|
|
||||||
|
#include "core/vector.h"
|
||||||
#include "main/main.h"
|
#include "main/main.h"
|
||||||
|
|
||||||
#include "../godotsharp_dirs.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);
|
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
|
#ifdef UNIX_ENABLED
|
||||||
String _find_build_engine_on_unix(const String &p_name) {
|
String _find_build_engine_on_unix(const String &p_name) {
|
||||||
String ret = path_which(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())
|
if (ret_fallback.length())
|
||||||
return ret_fallback;
|
return ret_fallback;
|
||||||
|
|
||||||
const char *locations[] = {
|
static Vector<const char *> locations = _get_msbuild_hint_dirs();
|
||||||
#ifdef OSX_ENABLED
|
|
||||||
"/Library/Frameworks/Mono.framework/Versions/Current/bin/",
|
|
||||||
"/usr/local/var/homebrew/linked/mono/bin/",
|
|
||||||
#endif
|
|
||||||
"/opt/novell/mono/bin/"
|
|
||||||
};
|
|
||||||
|
|
||||||
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;
|
String hint_path = locations[i] + p_name;
|
||||||
|
|
||||||
if (FileAccess::exists(hint_path)) {
|
if (FileAccess::exists(hint_path)) {
|
||||||
|
|
|
@ -177,6 +177,30 @@ void GDMono::initialize() {
|
||||||
|
|
||||||
mono_set_dirs(assembly_dir.length() ? assembly_dir.get_data() : NULL,
|
mono_set_dirs(assembly_dir.length() ? assembly_dir.get_data() : NULL,
|
||||||
config_dir.length() ? config_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
|
#else
|
||||||
mono_set_dirs(NULL, NULL);
|
mono_set_dirs(NULL, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue