Mono/C#: Remove GodotTools dependency on the Mono.Posix assembly
MSBuild on Windows uses the system .NET Framework BCL instead of Mono's. Because of this, it may not be able to find the Mono.Posix assembly, so it's better not to depend on it. We needed Mono.Posix to call Syscall.access, so we can replace this with an internal call that does the same in C++.
This commit is contained in:
parent
45908eebf3
commit
5a3ccf4f14
3 changed files with 18 additions and 6 deletions
|
|
@ -30,6 +30,10 @@
|
|||
|
||||
#include "editor_internal_calls.h"
|
||||
|
||||
#ifdef UNIX_ENABLED
|
||||
#include <unistd.h> // access
|
||||
#endif
|
||||
|
||||
#include "core/os/os.h"
|
||||
#include "core/version.h"
|
||||
#include "editor/editor_node.h"
|
||||
|
|
@ -370,6 +374,15 @@ MonoString *godot_icall_Utils_OS_GetPlatformName() {
|
|||
return GDMonoMarshal::mono_string_from_godot(os_name);
|
||||
}
|
||||
|
||||
MonoBoolean godot_icall_Utils_OS_UnixFileHasExecutableAccess(MonoString *p_file_path) {
|
||||
#ifdef UNIX_ENABLED
|
||||
String file_path = GDMonoMarshal::mono_string_to_godot(p_file_path);
|
||||
return access(file_path.utf8().get_data(), X_OK) == 0;
|
||||
#else
|
||||
ERR_FAIL_V(false);
|
||||
#endif
|
||||
}
|
||||
|
||||
void register_editor_internal_calls() {
|
||||
|
||||
// GodotSharpDirs
|
||||
|
|
@ -442,4 +455,5 @@ void register_editor_internal_calls() {
|
|||
|
||||
// Utils.OS
|
||||
mono_add_internal_call("GodotTools.Utils.OS::GetPlatformName", (void *)godot_icall_Utils_OS_GetPlatformName);
|
||||
mono_add_internal_call("GodotTools.Utils.OS::UnixFileHasExecutableAccess", (void *)godot_icall_Utils_OS_UnixFileHasExecutableAccess);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue