Hi,

This is a bigger diff that (finally) enables the mono module for Godot
and allows running Godot projects with C# instead of Godot's own
GDScript language in the editor. As this has been a bigger endeavor,
I'm structuring this email a little more.

Background
----------

Upstream has a convoluted process for building Godot with mono [1],
basically in order to generate the C# glue. This process never
worked in ports tree, in part because a full godot binary needs to be
built first, then invoked with --generate-mono-glue which seems to
require openting an X11 window as part of the process.

Methods
-------

I managed to build godot with mono module enabled by using pre-generated
mono glue code (see distfiles) that is plugged in. The reason why
upstream doesn't provide the generated code is likely that they want to
allow for systems with different mono and/or dotnet versions which
might generate different results.

This also needs devel/msbuild, and a number of patches to teach Godot
where to find the files that it expects to be relative to its binary
which might be in any user directory.

Results
-------

The port becomes a bit more complex. If built with mono, both bin/godot
and bin/godot-tools need to find the C# assemblies (mostly in the
GodotSharp directory) in order to launch. Therefore, I split the
assemblies out into a third package godot-sharp, meant to supply those
dependencies to -main and -tools.

Non-C# projects including commercially distributed games based on
GDScript should continue to run as before (tested by me with Brotato).
I haven't found an example of a commercial game using C# with Godot to
test this with.

The editor invokes msbuild for C# projects before running them. I
tested this with 2 of the demo projects for Godot 3.5 from [2],
"Dodge the Creeps with C#" and "2.5D Demo with C#". They work, but a
1-line modification of a file in the user's nuget directory is needed
which I added to README-tools. This is likely because
TargetFrameworkFallbackSearchPaths isn't supported by our mono or
msbuild at this point. With this small modification, I can build and
run the Godot C# demo projects as expected.

The addition of the library suffix for libmonosgen-2.0 in
mono_configure.py is a bit fragile, as it may need manual updating
should there be a bump in the mono library. I haven't figured out a
better approach so far.

Summary
-------

This adds C#/mono support, but this will likely some more refinement.

This effort deals with some weirdnesses that arise from how Godot games
are generally distributed, which is similar to other portable game
development and distribution frameworks/engines, like FNA, MonoGame,
Unity, LibGDX etc. The core game logic and the assets exist in platform
independent code. The developer ships the game with that plus all the
platform-specific native binaries and libraries together. It seems that
all the officially supported operating systems (Windows, Mac, Linux)
adhere to being able to run such binaries and libraries even if they
were compiled 10 years ago.

As we don't do that on OpenBSD, things like file locations need to be
adjusted for a system install, as opposed to the locally contained
approach. For an eventual godot4 port, it looks like mono won't do
anymore and an eventual port of dotnet would be needed.

In the future, we might be able with some more refinement to get rid of
at least some of the files in pkg/PLIST-sharp by pointing godot to the
correct location of the mono and msbuild files.

The best way forward is probably to try to work with upstream on a new
install and runtime approach that uses binary and libraries installed in
conventional system directories. I have plans to propose such an scons
modality upstream after familiarizing myself with where Godot4 is at now.

comments and ok's are welcome; given the complexity there might still
be benefit in adding this early to the port and working out some
refinements in-tree, with also more opportunity to hear of
unanticipated bugs.

[1] 
https://docs.godotengine.org/en/3.5/development/compiling/compiling_with_mono.html
[2] https://github.com/godotengine/godot-demo-projects

Index: Makefile
===================================================================
RCS file: /cvs/ports/games/godot/Makefile,v
retrieving revision 1.49
diff -u -p -r1.49 Makefile
--- Makefile    14 Aug 2023 12:40:50 -0000      1.49
+++ Makefile    25 Aug 2023 02:44:30 -0000
@@ -2,12 +2,19 @@ BROKEN-powerpc =      fails at runtime, the U
 
 COMMENT-main = 2D and 3D game engine
 COMMENT-tools= 2D and 3D game engine (with tools)
+COMMENT-sharp= glue for mono/C# module of Godot
+
+ONLY_FOR_ARCHS =       ${MONO_ARCHS}
+
+# WXNEEDED and NOBTCFI needed for module_mono_enabled=yes
+USE_WXNEEDED = Yes
+USE_NOBTCFI =  Yes
 
 V =            3.5.2
 GODOTSTEAM_V = v3.20
 DISTNAME =     godot-${V}-stable
 PKGNAME =      godot-${V}
-REVISION =     5
+REVISION =     6
 
 CATEGORIES =   games
 
@@ -18,7 +25,7 @@ MAINTAINER =  Omar Polo <[email protected]>
 # MIT
 PERMIT_PACKAGE =       Yes
 
-MULTI_PACKAGES =       -main -tools
+MULTI_PACKAGES =       -main -tools -sharp
 
 WANTLIB += ${COMPILER_LIBCXX} BulletCollision BulletDynamics BulletSoftBody
 WANTLIB += GL LinearMath X11 X11-xcb Xau Xcursor Xdmcp Xext Xfixes
@@ -28,23 +35,30 @@ WANTLIB += opusfile pcre2-32 sharpyuv sn
 WANTLIB += usbhid vorbis vorbisfile vpx webp xcb xcb-dri2 xcb-glx
 WANTLIB += zstd
 
-WANTLIB-main = ${WANTLIB} Xss
-WANTLIB-tools =        ${WANTLIB}
+# mono-native is dlopened when using the mono/C#/godot-sharp parts
+WANTLIB-main = ${WANTLIB} Xss mono-native
+WANTLIB-tools =        ${WANTLIB} mono-native
+
+# needed by files in share/godot/GodotSharp/Mono/lib/
+WANTLIB-sharp = execinfo m pthread z
 
 # C++14
 COMPILER =     base-clang ports-gcc
 
 MASTER_SITES = https://downloads.tuxfamily.org/godotengine/${V}/
 MASTER_SITES0 =        
https://github.com/CoaguCo-Industries/GodotSteam/archive/refs/tags/
+MASTER_SITES1 =        https://thfr.info/distfiles/
 DISTFILES =     ${DISTNAME}${EXTRACT_SUFX} \
-               ${GODOTSTEAM_V}.tar.gz:0
+               ${GODOTSTEAM_V}.tar.gz:0 \
+               godot-${V}-mono-glue.tar.gz:1 \
+               godot-${V}-nuget-packages.tar.xz:1
 EXTRACT_SUFX = .tar.xz
 DIST_SUBDIR =   ${PKGNAME}
 
 MODULES =      devel/scons
 
-# Building with module_mono_enabled requires msbuild and to fix the
-# sharedlib_ext in modules/mono/config.py to '.so.1.0'
+MODSCONS_ENV +=                HOME=${NUGETHOME} \
+                       NUGET_PACKAGES=${NUGETHOME}/packages
 MODSCONS_FLAGS =       CC="${CC}" \
                        CXX="${CXX}" \
                        CFLAGS="${CFLAGS}" \
@@ -64,6 +78,9 @@ MODSCONS_FLAGS =      CC="${CC}" \
                        builtin_zlib=no \
                        builtin_zstd=no \
                        custom_modules=${WRKSRC}/godotsteam \
+                       module_mono_enabled=yes \
+                       mono_prefix=${LOCALBASE} \
+                       mono_static=yes \
                        progress=no \
                        pulseaudio=no \
                        verbose=yes \
@@ -80,6 +97,8 @@ MODSCONS_FLAGS += builtin_freetype=yes
 MODSCONS_FLAGS +=      module_raycast_enabled="false"
 .endif
 
+BUILD_DEPENDS =                devel/msbuild
+
 LIB_DEPENDS =          archivers/zstd \
                        audio/libvorbis \
                        audio/musepack \
@@ -89,12 +108,18 @@ LIB_DEPENDS =              archivers/zstd \
                        devel/pcre2 \
                        games/goldberg_emulator \
                        graphics/libwebp \
+                       lang/mono \
                        multimedia/libtheora \
                        multimedia/libvpx \
                        net/enet \
                        security/polarssl
+LIB_DEPENDS-sharp =
 
-RUN_DEPENDS-tools =    devel/desktop-file-utils
+RUN_DEPENDS-sharp =
+RUN_DEPENDS-main =     games/godot,-sharp
+RUN_DEPENDS-tools =    devel/desktop-file-utils \
+                       devel/msbuild \
+                       games/godot,-sharp
 
 DEBUG_PACKAGES =       ${BUILD_PACKAGES}
 NO_TEST =              Yes
@@ -116,30 +141,55 @@ WANTLIB +=     atomic
 .endif
 
 CFLAGS +=      -I${LOCALBASE}/include/goldberg_emulator
+CXXFLAGS +=    -I${LOCALBASE}/include/goldberg_emulator
+
+GLUEDIR =      ${WRKDIR}/godot-${V}-mono-glue
+NUGETHOME =    ${WRKDIR}/nugethome
+SUBST_VARS +=  NUGETHOME
 
-# copy over to allow patching GodotSteam
 post-extract:
+       @# install backends from FILESDIR
        cp -R   ${FILESDIR}/sndio ${WRKDIST}/drivers
        cp      ${FILESDIR}/ujoy/joypad_openbsd.{cpp,h} \
                ${WRKDIST}/platform/x11/
+       @# move GodotSteam into WRKSRC to allow patching
        mv      ${WRKDIR}/GodotSteam-${GODOTSTEAM_V:S/v//} ${WRKSRC}/godotsteam
+       @# set up nuget package location
+       mkdir -p        ${NUGETHOME}
+       mv      ${WRKDIR}/godot-${V}-nuget-packages ${NUGETHOME}/packages
+       @# move pre-generated mono glue into place
+       mv      ${GLUEDIR}/mono_glue.gen.cpp ${WRKSRC}/modules/mono/glue/
+       mv      ${GLUEDIR}/GodotSharp/GodotSharp/Generated \
+               ${WRKSRC}/modules/mono/glue/GodotSharp/GodotSharp/
+       mv      ${GLUEDIR}/GodotSharp/GodotSharpEditor/Generated \
+               ${WRKSRC}/modules/mono/glue/GodotSharp/GodotSharpEditor/
 
 pre-configure:
        ${SUBST_CMD} ${WRKSRC}/misc/dist/linux/*.desktop
+       ${SUBST_CMD} ${WRKSRC}/modules/mono/build_scripts/solution_builder.py
+       ${SUBST_CMD} ${WRKSRC}/modules/mono/godotsharp_dirs.cpp
 
 do-build:
+       @# Export Template build
        @${MODSCONS_BUILD_TARGET} tools=no  target=release \
                CXXFLAGS="${CXXFLAGS} -Wno-deprecated-register 
-DSUSPEND_SCREENSAVER=1" \
                LINKFLAGS="${LDFLAGS} -lintl -lmpcdec -lusbhid -lXss"
+       @# Editor build
        @${MODSCONS_BUILD_TARGET} tools=yes target=release_debug \
                CXXFLAGS="${CXXFLAGS} -Wno-deprecated-register" \
                LINKFLAGS="${LDFLAGS} -lintl -lmpcdec -lusbhid"
 
 do-install:
-       ${INSTALL_PROGRAM} ${WRKBUILD}/bin/godot.x11.opt.${BINSUFFIX} \
+       @# Export Template files
+       @${INSTALL_PROGRAM} ${WRKBUILD}/bin/godot.x11.opt.${BINSUFFIX}.mono \
                ${PREFIX}/bin/godot
-       ${INSTALL_PROGRAM} ${WRKBUILD}/bin/godot.x11.opt.tools.${BINSUFFIX} \
+       @# Editor files
+       ${INSTALL_PROGRAM} 
${WRKBUILD}/bin/godot.x11.opt.tools.${BINSUFFIX}.mono \
                ${PREFIX}/bin/godot-tools
+       @# GodotSharp files
+       ${INSTALL_DATA_DIR} ${PREFIX}/share/godot
+       cp -R   ${WRKBUILD}/bin/GodotSharp ${PREFIX}/share/godot/
+       @# Rest: man pages, icons, desktop integration
        ${INSTALL_MAN_DIR} ${PREFIX}/man/man6
        ${INSTALL_MAN} ${WRKSRC}/misc/dist/linux/godot.6 \
                ${PREFIX}/man/man6
Index: distinfo
===================================================================
RCS file: /cvs/ports/games/godot/distinfo,v
retrieving revision 1.20
diff -u -p -r1.20 distinfo
--- distinfo    11 Aug 2023 12:36:10 -0000      1.20
+++ distinfo    25 Aug 2023 02:44:30 -0000
@@ -1,4 +1,8 @@
+SHA256 (godot-3.5.2/godot-3.5.2-mono-glue.tar.gz) = 
ezUneQt2JzlsQPF4FvSCcNtJiYbdb3NEY4Lvjj/gz64=
+SHA256 (godot-3.5.2/godot-3.5.2-nuget-packages.tar.xz) = 
RXlTjB1IgjZEP2ZJY05xoGQv8XTRKHxwPaMmiNdduQE=
 SHA256 (godot-3.5.2/godot-3.5.2-stable.tar.xz) = 
tDodaynqJby6+86/e6CEMmGqEjfic5SUU4oiANjHvmI=
 SHA256 (godot-3.5.2/v3.20.tar.gz) = 
FoAl3iZ+1CWwIPXwJZ9S7q3QMn//RslYT06tXkc38QU=
+SIZE (godot-3.5.2/godot-3.5.2-mono-glue.tar.gz) = 1094618
+SIZE (godot-3.5.2/godot-3.5.2-nuget-packages.tar.xz) = 55742184
 SIZE (godot-3.5.2/godot-3.5.2-stable.tar.xz) = 24047432
 SIZE (godot-3.5.2/v3.20.tar.gz) = 253832
Index: patches/patch-modules_mono_build_scripts_mono_configure_py
===================================================================
RCS file: patches/patch-modules_mono_build_scripts_mono_configure_py
diff -N patches/patch-modules_mono_build_scripts_mono_configure_py
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-modules_mono_build_scripts_mono_configure_py  25 Aug 2023 
02:44:30 -0000
@@ -0,0 +1,51 @@
+include a suffix argument for find_file_in_dir
+use suffix argument to look for libmonosgen-2.0.so.1.0
+disable librt/libdl
+
+Index: modules/mono/build_scripts/mono_configure.py
+--- modules/mono/build_scripts/mono_configure.py.orig
++++ modules/mono/build_scripts/mono_configure.py
+@@ -31,15 +31,16 @@ def find_name_in_dir_files(directory, names, prefixes=
+     return ""
+ 
+ 
+-def find_file_in_dir(directory, names, prefixes=[""], extensions=[""]):
+-    for extension in extensions:
+-        if extension and not extension.startswith("."):
+-            extension = "." + extension
+-        for prefix in prefixes:
+-            for curname in names:
+-                filename = prefix + curname + extension
+-                if os.path.isfile(os.path.join(directory, filename)):
+-                    return filename
++def find_file_in_dir(directory, names, prefixes=[""], extensions=[""], 
suffix=[""]):
++    for sufx in suffix:
++        for extension in extensions:
++            if extension and not extension.startswith("."):
++                extension = "." + extension
++            for prefix in prefixes:
++                for curname in names:
++                    filename = prefix + curname + extension + sufx
++                    if os.path.isfile(os.path.join(directory, filename)):
++                        return filename
+     return ""
+ 
+ 
+@@ -335,7 +336,7 @@ def configure(env, env_mono):
+             elif is_javascript:
+                 env.Append(LIBS=["m", "rt", "dl", "pthread"])
+             else:
+-                env.Append(LIBS=["m", "rt", "dl", "pthread"])
++                env.Append(LIBS=["m", "pthread"])
+ 
+             if not mono_static:
+                 mono_so_file = find_file_in_dir(
+@@ -358,7 +359,7 @@ def configure(env, env_mono):
+             tmpenv.ParseConfig("pkg-config monosgen-2 --libs-only-L")
+ 
+             for hint_dir in tmpenv["LIBPATH"]:
+-                file_found = find_file_in_dir(hint_dir, mono_lib_names, 
prefixes=["lib"], extensions=[sharedlib_ext])
++                file_found = find_file_in_dir(hint_dir, mono_lib_names, 
prefixes=["lib"], extensions=[sharedlib_ext], suffix=[".1.0"])
+                 if file_found:
+                     mono_lib_path = hint_dir
+                     mono_so_file = file_found
Index: patches/patch-modules_mono_build_scripts_solution_builder_py
===================================================================
RCS file: patches/patch-modules_mono_build_scripts_solution_builder_py
diff -N patches/patch-modules_mono_build_scripts_solution_builder_py
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-modules_mono_build_scripts_solution_builder_py        25 Aug 
2023 02:44:30 -0000
@@ -0,0 +1,28 @@
+point msbuild to the prepared nuget packages dir
+supply NUGETHOME as home dir
+
+Index: modules/mono/build_scripts/solution_builder.py
+--- modules/mono/build_scripts/solution_builder.py.orig
++++ modules/mono/build_scripts/solution_builder.py
+@@ -89,11 +89,10 @@ def run_command(command, args, env_override=None, name
+     def cmd_args_to_str(cmd_args):
+         return " ".join([arg if not " " in arg else '"%s"' % arg for arg in 
cmd_args])
+ 
+-    args = [command] + args
++    args = ["env", "HOME=${NUGETHOME}"] + [command] + args
+ 
+     if name is None:
+         name = os.path.basename(command)
+-
+     if verbose:
+         print("Running '%s': %s" % (name, cmd_args_to_str(args)))
+ 
+@@ -142,7 +141,7 @@ def build_solution(env, solution_path, build_config, e
+ 
+     # Build solution
+ 
+-    msbuild_args += [solution_path, "/restore", "/t:Build", 
"/p:Configuration=" + build_config]
++    msbuild_args += [solution_path, "/restore", 
"/p:RestorePackagesPath=${NUGETHOME}/packages", "/t:Build", "/p:Configuration=" 
+ build_config]
+     msbuild_args += extra_msbuild_args
+ 
+     run_command(msbuild_path, msbuild_args, env_override=msbuild_env, 
name="msbuild")
Index: patches/patch-modules_mono_csharp_script_cpp
===================================================================
RCS file: patches/patch-modules_mono_csharp_script_cpp
diff -N patches/patch-modules_mono_csharp_script_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-modules_mono_csharp_script_cpp        25 Aug 2023 02:44:30 
-0000
@@ -0,0 +1,28 @@
+fix error: cannot initialize return object of type 'bool' with
+an rvalue of type 'nullptr_t'
+
+Index: modules/mono/csharp_script.cpp
+--- modules/mono/csharp_script.cpp.orig
++++ modules/mono/csharp_script.cpp
+@@ -2310,7 +2310,7 @@ bool CSharpScript::_update_exports(PlaceHolderScriptIn
+ 
+                       GDMonoMethod *ctor = 
script_class->get_method(CACHED_STRING_NAME(dotctor), 0);
+ 
+-                      ERR_FAIL_NULL_V_MSG(ctor, NULL,
++                      ERR_FAIL_NULL_V_MSG(ctor, false,
+                                       "Cannot construct temporary MonoObject 
because the class does not define a parameterless constructor: '" + get_path() 
+ "'.");
+ 
+                       MonoException *ctor_exc = NULL;
+@@ -2891,10 +2891,10 @@ bool CSharpScript::can_instance() const {
+       if (extra_cond && !script_class) {
+               if (GDMono::get_singleton()->get_project_assembly() == NULL) {
+                       // The project assembly is not loaded
+-                      ERR_FAIL_V_MSG(NULL, "Cannot instance script because 
the project assembly is not loaded. Script: '" + get_path() + "'.");
++                      ERR_FAIL_V_MSG(false, "Cannot instance script because 
the project assembly is not loaded. Script: '" + get_path() + "'.");
+               } else {
+                       // The project assembly is loaded, but the class could 
not found
+-                      ERR_FAIL_V_MSG(NULL, "Cannot instance script because 
the class '" + name + "' could not be found. Script: '" + get_path() + "'.");
++                      ERR_FAIL_V_MSG(false, "Cannot instance script because 
the class '" + name + "' could not be found. Script: '" + get_path() + "'.");
+               }
+       }
+ 
Index: patches/patch-modules_mono_glue_GodotSharp_GodotSharp_GodotSharp_csproj
===================================================================
RCS file: 
patches/patch-modules_mono_glue_GodotSharp_GodotSharp_GodotSharp_csproj
diff -N patches/patch-modules_mono_glue_GodotSharp_GodotSharp_GodotSharp_csproj
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-modules_mono_glue_GodotSharp_GodotSharp_GodotSharp_csproj     
25 Aug 2023 02:44:30 -0000
@@ -0,0 +1,13 @@
+needs LangVersion 7.1 for 'default literal'; otherwise error CS8107
+
+Index: modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj
+--- modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj.orig
++++ modules/mono/glue/GodotSharp/GodotSharp/GodotSharp.csproj
+@@ -7,6 +7,7 @@
+     <TargetFramework>netstandard2.0</TargetFramework>
+     <DocumentationFile>$(OutputPath)/$(AssemblyName).xml</DocumentationFile>
+     <EnableDefaultItems>false</EnableDefaultItems>
++    <LangVersion>7.1</LangVersion>
+   </PropertyGroup>
+   <PropertyGroup>
+     <DefineConstants>$(DefineConstants);GODOT</DefineConstants>
Index: patches/patch-modules_mono_godotsharp_dirs_cpp
===================================================================
RCS file: patches/patch-modules_mono_godotsharp_dirs_cpp
diff -N patches/patch-modules_mono_godotsharp_dirs_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-modules_mono_godotsharp_dirs_cpp      25 Aug 2023 02:44:30 
-0000
@@ -0,0 +1,93 @@
+fix paths for our mono and godot install dirs
+make data_editor_prebuilt_api_dir() available also when !TOOLS_ENABLED
+
+Index: modules/mono/godotsharp_dirs.cpp
+--- modules/mono/godotsharp_dirs.cpp.orig
++++ modules/mono/godotsharp_dirs.cpp
+@@ -97,6 +97,8 @@ class _GodotSharpDirs { (public)
+       String res_temp_assemblies_dir;
+       String mono_user_dir;
+       String mono_logs_dir;
++      String data_editor_tools_dir;
++      String data_editor_prebuilt_api_dir;
+ 
+ #ifdef TOOLS_ENABLED
+       String mono_solutions_dir;
+@@ -106,8 +108,6 @@ class _GodotSharpDirs { (public)
+       String sln_filepath;
+       String csproj_filepath;
+ 
+-      String data_editor_tools_dir;
+-      String data_editor_prebuilt_api_dir;
+ #else
+       // Equivalent of res_assemblies_dir, but in the data directory rather 
than in 'res://'.
+       // Only defined on export templates. Used when exporting assemblies 
outside of PCKs.
+@@ -177,20 +177,20 @@ class _GodotSharpDirs { (public)
+ #endif
+ 
+               String exe_dir = 
OS::get_singleton()->get_executable_path().get_base_dir();
++              String share_dir = "${LOCALBASE}/share/godot";
+ 
+-#ifdef TOOLS_ENABLED
+-
+-              String data_dir_root = exe_dir.plus_file("GodotSharp");
++              String data_dir_root = share_dir.plus_file("GodotSharp");
+               data_editor_tools_dir = data_dir_root.plus_file("Tools");
+               data_editor_prebuilt_api_dir = data_dir_root.plus_file("Api");
+ 
+               String data_mono_root_dir = data_dir_root.plus_file("Mono");
+-              data_mono_etc_dir = data_mono_root_dir.plus_file("etc");
++              data_mono_etc_dir = "${SYSCONFDIR}";
++#ifdef TOOLS_ENABLED
+ 
+ #ifdef ANDROID_ENABLED
+               data_mono_lib_dir = 
gdmono::android::support::get_app_native_lib_dir();
+ #else
+-              data_mono_lib_dir = data_mono_root_dir.plus_file("lib");
++              data_mono_lib_dir = "${LOCALBASE}/lib";
+ #endif
+ 
+ #ifdef WINDOWS_ENABLED
+@@ -214,6 +214,7 @@ class _GodotSharpDirs { (public)
+ 
+ #else
+ 
++              /*
+               String appname = 
ProjectSettings::get_singleton()->get("application/config/name");
+               String appname_safe = 
OS::get_singleton()->get_safe_dir_name(appname);
+               String data_dir_root = exe_dir.plus_file("data_" + 
appname_safe);
+@@ -223,11 +224,12 @@ class _GodotSharpDirs { (public)
+ 
+               String data_mono_root_dir = data_dir_root.plus_file("Mono");
+               data_mono_etc_dir = data_mono_root_dir.plus_file("etc");
++              */
+ 
+ #ifdef ANDROID_ENABLED
+               data_mono_lib_dir = 
gdmono::android::support::get_app_native_lib_dir();
+ #else
+-              data_mono_lib_dir = data_mono_root_dir.plus_file("lib");
++              data_mono_lib_dir = "${LOCALBASE}/lib";
+               data_game_assemblies_dir = 
data_dir_root.plus_file("Assemblies");
+ #endif
+ 
+@@ -299,6 +301,10 @@ String get_mono_logs_dir() {
+       return _GodotSharpDirs::get_singleton().mono_logs_dir;
+ }
+ 
++String get_data_editor_prebuilt_api_dir() {
++      return _GodotSharpDirs::get_singleton().data_editor_prebuilt_api_dir;
++}
++
+ #ifdef TOOLS_ENABLED
+ String get_mono_solutions_dir() {
+       return _GodotSharpDirs::get_singleton().mono_solutions_dir;
+@@ -324,9 +330,6 @@ String get_data_editor_tools_dir() {
+       return _GodotSharpDirs::get_singleton().data_editor_tools_dir;
+ }
+ 
+-String get_data_editor_prebuilt_api_dir() {
+-      return _GodotSharpDirs::get_singleton().data_editor_prebuilt_api_dir;
+-}
+ #else
+ String get_data_game_assemblies_dir() {
+       return _GodotSharpDirs::get_singleton().data_game_assemblies_dir;
Index: patches/patch-modules_mono_godotsharp_dirs_h
===================================================================
RCS file: patches/patch-modules_mono_godotsharp_dirs_h
diff -N patches/patch-modules_mono_godotsharp_dirs_h
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-modules_mono_godotsharp_dirs_h        25 Aug 2023 02:44:30 
-0000
@@ -0,0 +1,23 @@
+make get_data_editor_prebuilt_api_dir() available for !TOOLS_ENABLED
+build
+
+Index: modules/mono/godotsharp_dirs.h
+--- modules/mono/godotsharp_dirs.h.orig
++++ modules/mono/godotsharp_dirs.h
+@@ -47,6 +47,8 @@ String get_res_temp_assemblies_dir();
+ String get_mono_user_dir();
+ String get_mono_logs_dir();
+ 
++String get_data_editor_prebuilt_api_dir();
++
+ #ifdef TOOLS_ENABLED
+ String get_mono_solutions_dir();
+ String get_build_logs_dir();
+@@ -56,7 +58,6 @@ String get_project_sln_path();
+ String get_project_csproj_path();
+ 
+ String get_data_editor_tools_dir();
+-String get_data_editor_prebuilt_api_dir();
+ #else
+ String get_data_game_assemblies_dir();
+ #endif
Index: patches/patch-modules_mono_mono_gd_gd_mono_cpp
===================================================================
RCS file: patches/patch-modules_mono_mono_gd_gd_mono_cpp
diff -N patches/patch-modules_mono_mono_gd_gd_mono_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-modules_mono_mono_gd_gd_mono_cpp      25 Aug 2023 02:44:30 
-0000
@@ -0,0 +1,21 @@
+for _load_core_api_assembly, use the same load_assembly_from() approach for
+TOOLS_ENABLED also if !TOOLS_ENABLED
+
+Index: modules/mono/mono_gd/gd_mono.cpp
+--- modules/mono/mono_gd/gd_mono.cpp.orig
++++ modules/mono/mono_gd/gd_mono.cpp
+@@ -830,7 +830,13 @@ bool GDMono::_load_core_api_assembly(LoadedApiAssembly
+       bool success = FileAccess::exists(assembly_path) &&
+                       load_assembly_from(CORE_API_ASSEMBLY_NAME, 
assembly_path, &r_loaded_api_assembly.assembly, p_refonly);
+ #else
+-      bool success = load_assembly(CORE_API_ASSEMBLY_NAME, 
&r_loaded_api_assembly.assembly, p_refonly);
++      // non-editor builds don't have Main namespace
++      String assembly_dir = 
GodotSharpDirs::get_data_editor_prebuilt_api_dir().plus_file(p_config);
++
++      String assembly_path = assembly_dir.plus_file(CORE_API_ASSEMBLY_NAME 
".dll");
++
++      bool success = FileAccess::exists(assembly_path) &&
++                      load_assembly_from(CORE_API_ASSEMBLY_NAME, 
assembly_path, &r_loaded_api_assembly.assembly, p_refonly);
+ #endif
+ 
+       if (success) {
Index: pkg/DESCR-sharp
===================================================================
RCS file: pkg/DESCR-sharp
diff -N pkg/DESCR-sharp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/DESCR-sharp     25 Aug 2023 02:44:30 -0000
@@ -0,0 +1 @@
+C# glue for using Godot with mono/C#
Index: pkg/PLIST-sharp
===================================================================
RCS file: pkg/PLIST-sharp
diff -N pkg/PLIST-sharp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ pkg/PLIST-sharp     25 Aug 2023 02:44:30 -0000
@@ -0,0 +1,360 @@
+share/godot/
+share/godot/GodotSharp/
+share/godot/GodotSharp/Api/
+share/godot/GodotSharp/Api/Debug/
+share/godot/GodotSharp/Api/Debug/GodotSharp.dll
+share/godot/GodotSharp/Api/Debug/GodotSharp.pdb
+share/godot/GodotSharp/Api/Debug/GodotSharp.xml
+share/godot/GodotSharp/Api/Debug/GodotSharpEditor.dll
+share/godot/GodotSharp/Api/Debug/GodotSharpEditor.pdb
+share/godot/GodotSharp/Api/Debug/GodotSharpEditor.xml
+share/godot/GodotSharp/Api/Release/
+share/godot/GodotSharp/Api/Release/GodotSharp.dll
+share/godot/GodotSharp/Api/Release/GodotSharp.pdb
+share/godot/GodotSharp/Api/Release/GodotSharp.xml
+share/godot/GodotSharp/Api/Release/GodotSharpEditor.dll
+share/godot/GodotSharp/Api/Release/GodotSharpEditor.pdb
+share/godot/GodotSharp/Api/Release/GodotSharpEditor.xml
+share/godot/GodotSharp/Mono/
+share/godot/GodotSharp/Mono/etc/
+share/godot/GodotSharp/Mono/etc/mono/
+share/godot/GodotSharp/Mono/etc/mono/2.0/
+share/godot/GodotSharp/Mono/etc/mono/2.0/Browsers/
+share/godot/GodotSharp/Mono/etc/mono/2.0/Browsers/Compat.browser
+share/godot/GodotSharp/Mono/etc/mono/2.0/DefaultWsdlHelpGenerator.aspx
+share/godot/GodotSharp/Mono/etc/mono/2.0/machine.config
+share/godot/GodotSharp/Mono/etc/mono/2.0/settings.map
+share/godot/GodotSharp/Mono/etc/mono/2.0/web.config
+share/godot/GodotSharp/Mono/etc/mono/4.0/
+share/godot/GodotSharp/Mono/etc/mono/4.0/Browsers/
+share/godot/GodotSharp/Mono/etc/mono/4.0/Browsers/Compat.browser
+share/godot/GodotSharp/Mono/etc/mono/4.0/DefaultWsdlHelpGenerator.aspx
+share/godot/GodotSharp/Mono/etc/mono/4.0/machine.config
+share/godot/GodotSharp/Mono/etc/mono/4.0/settings.map
+share/godot/GodotSharp/Mono/etc/mono/4.0/web.config
+share/godot/GodotSharp/Mono/etc/mono/4.5/
+share/godot/GodotSharp/Mono/etc/mono/4.5/Browsers/
+share/godot/GodotSharp/Mono/etc/mono/4.5/Browsers/Compat.browser
+share/godot/GodotSharp/Mono/etc/mono/4.5/DefaultWsdlHelpGenerator.aspx
+share/godot/GodotSharp/Mono/etc/mono/4.5/machine.config
+share/godot/GodotSharp/Mono/etc/mono/4.5/settings.map
+share/godot/GodotSharp/Mono/etc/mono/4.5/web.config
+share/godot/GodotSharp/Mono/etc/mono/browscap.ini
+share/godot/GodotSharp/Mono/etc/mono/config
+share/godot/GodotSharp/Mono/etc/mono/mconfig/
+share/godot/GodotSharp/Mono/etc/mono/mconfig/config.xml
+share/godot/GodotSharp/Mono/lib/
+@so share/godot/GodotSharp/Mono/lib/libMonoPosixHelper.so
+@so share/godot/GodotSharp/Mono/lib/libMonoSupportW.so
+@so share/godot/GodotSharp/Mono/lib/libmono-btls-shared.so
+share/godot/GodotSharp/Mono/lib/mono/
+share/godot/GodotSharp/Mono/lib/mono/4.5/
+share/godot/GodotSharp/Mono/lib/mono/4.5/Accessibility.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Commons.Xml.Relaxng.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/CustomMarshalers.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/Microsoft.Win32.Primitives.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/Microsoft.Win32.Registry.AccessControl.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/Microsoft.Win32.Registry.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.AppContext.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Collections.Concurrent.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Collections.NonGeneric.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Collections.Specialized.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Collections.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ComponentModel.Annotations.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ComponentModel.EventBasedAsync.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ComponentModel.Primitives.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ComponentModel.TypeConverter.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ComponentModel.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Console.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Data.Common.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Data.SqlClient.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Diagnostics.Contracts.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Diagnostics.Debug.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Diagnostics.FileVersionInfo.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Diagnostics.Process.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Diagnostics.StackTrace.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Diagnostics.TextWriterTraceListener.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Diagnostics.Tools.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Diagnostics.TraceEvent.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Diagnostics.TraceSource.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Diagnostics.Tracing.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Drawing.Primitives.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Dynamic.Runtime.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Globalization.Calendars.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Globalization.Extensions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Globalization.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.Compression.ZipFile.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.FileSystem.AccessControl.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.FileSystem.DriveInfo.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.FileSystem.Primitives.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.FileSystem.Watcher.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.FileSystem.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.IsolatedStorage.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.MemoryMappedFiles.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.Pipes.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.UnmanagedMemoryStream.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.IO.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Linq.Expressions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Linq.Parallel.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Linq.Queryable.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Linq.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.AuthenticationManager.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.Cache.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.Http.Rtc.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.HttpListener.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.Mail.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.NameResolution.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.NetworkInformation.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.Ping.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.Primitives.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.Requests.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.Security.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.ServicePoint.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.Sockets.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.Utilities.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.WebHeaderCollection.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.WebSockets.Client.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Net.WebSockets.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ObjectModel.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Reflection.Emit.ILGeneration.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Reflection.Emit.Lightweight.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Reflection.Emit.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Reflection.Extensions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Reflection.Primitives.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Reflection.TypeExtensions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Reflection.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Resources.Reader.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Resources.ReaderWriter.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Resources.ResourceManager.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Resources.Writer.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.CompilerServices.VisualC.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.Extensions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.Handles.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.InteropServices.RuntimeInformation.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.InteropServices.WindowsRuntime.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.InteropServices.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.Numerics.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.Serialization.Formatters.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.Serialization.Json.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.Serialization.Primitives.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.Serialization.Xml.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Runtime.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.AccessControl.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Claims.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Algorithms.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Csp.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.DeriveBytes.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Encoding.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Encryption.Aes.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Encryption.ECDiffieHellman.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Encryption.ECDsa.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Encryption.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Hashing.Algorithms.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Hashing.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.Primitives.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.ProtectedData.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.RSA.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.RandomNumberGenerator.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Cryptography.X509Certificates.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Principal.Windows.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.Principal.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Security.SecureString.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ServiceModel.Duplex.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ServiceModel.Http.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ServiceModel.NetTcp.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ServiceModel.Primitives.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ServiceModel.Security.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ServiceProcess.ServiceController.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Text.Encoding.CodePages.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Text.Encoding.Extensions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Text.Encoding.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Text.RegularExpressions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Threading.AccessControl.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Threading.Overlapped.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Threading.Tasks.Parallel.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Threading.Tasks.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Threading.Thread.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Threading.ThreadPool.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Threading.Timer.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Threading.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.ValueTuple.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Xml.ReaderWriter.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Xml.XDocument.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Xml.XPath.XDocument.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Xml.XPath.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Xml.XmlDocument.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Xml.XmlSerializer.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/System.Xml.Xsl.Primitives.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Facades/netstandard.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/I18N.CJK.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/I18N.MidEast.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/I18N.Other.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/I18N.Rare.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/I18N.West.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/I18N.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/IBM.Data.DB2.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/ICSharpCode.SharpZipLib.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.Build.Engine.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.Build.Framework.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.Build.Tasks.v4.0.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.Build.Utilities.v4.0.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.Build.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.CSharp.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.CodeAnalysis.CSharp.Scripting.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.CodeAnalysis.CSharp.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.CodeAnalysis.Scripting.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.CodeAnalysis.VisualBasic.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.CodeAnalysis.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.VisualC.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Microsoft.Web.Infrastructure.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Btls.Interface.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.CSharp.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Cairo.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.CodeContracts.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.CompilerServices.SymbolWriter.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Data.Sqlite.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Data.Tds.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Debugger.Soft.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Http.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Management.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Messaging.RabbitMQ.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Messaging.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Parallel.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Posix.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Profiler.Log.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Security.Win32.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Security.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Simd.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.Tasklets.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.WebBrowser.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Mono.XBuild.Tasks.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/Novell.Directory.Ldap.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/PEAPI.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/RabbitMQ.Client.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/SMDiagnostics.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Collections.Immutable.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.ComponentModel.Composition.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.ComponentModel.DataAnnotations.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Configuration.Install.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Configuration.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Core.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Data.DataSetExtensions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Data.Entity.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Data.Linq.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Data.OracleClient.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Data.Services.Client.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Data.Services.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Data.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Deployment.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Design.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.DirectoryServices.Protocols.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.DirectoryServices.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Drawing.Design.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Drawing.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Dynamic.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.EnterpriseServices.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.IO.Compression.FileSystem.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.IO.Compression.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.IdentityModel.Selectors.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.IdentityModel.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Json.Microsoft.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Json.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Management.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Memory.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Messaging.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Net.Http.Formatting.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Net.Http.WebRequest.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Net.Http.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Net.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Numerics.Vectors.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Numerics.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.Core.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.Debugger.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.Experimental.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.Interfaces.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.Linq.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.Observable.Aliases.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.PlatformServices.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.Providers.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.Runtime.Remoting.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.Windows.Forms.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reactive.Windows.Threading.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reflection.Context.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Reflection.Metadata.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Runtime.Caching.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Runtime.CompilerServices.Unsafe.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Runtime.DurableInstancing.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Runtime.Remoting.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Runtime.Serialization.Formatters.Soap.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Runtime.Serialization.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Security.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.ServiceModel.Activation.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.ServiceModel.Discovery.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.ServiceModel.Internals.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.ServiceModel.Routing.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.ServiceModel.Web.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.ServiceModel.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.ServiceProcess.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Threading.Tasks.Dataflow.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Threading.Tasks.Extensions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Transactions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Abstractions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.ApplicationServices.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.DynamicData.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Extensions.Design.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Extensions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Http.SelfHost.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Http.WebHost.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Http.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Mobile.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Mvc.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Razor.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.RegularExpressions.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Routing.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.Services.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.WebPages.Deployment.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.WebPages.Razor.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.WebPages.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Web.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Windows.Forms.DataVisualization.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Windows.Forms.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Windows.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Workflow.Activities.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Workflow.ComponentModel.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Workflow.Runtime.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Xaml.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Xml.Linq.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Xml.Serialization.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.Xml.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/System.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/WebMatrix.Data.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/WindowsBase.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/cscompmgd.dll
+share/godot/GodotSharp/Mono/lib/mono/4.5/mscorlib.dll
+share/godot/GodotSharp/Tools/
+share/godot/GodotSharp/Tools/GodotTools.BuildLogger.dll
+share/godot/GodotSharp/Tools/GodotTools.BuildLogger.pdb
+share/godot/GodotSharp/Tools/GodotTools.Core.dll
+share/godot/GodotSharp/Tools/GodotTools.Core.pdb
+share/godot/GodotSharp/Tools/GodotTools.IdeMessaging.dll
+share/godot/GodotSharp/Tools/GodotTools.ProjectEditor.dll
+share/godot/GodotSharp/Tools/GodotTools.ProjectEditor.pdb
+share/godot/GodotSharp/Tools/GodotTools.dll
+share/godot/GodotSharp/Tools/GodotTools.pdb
+share/godot/GodotSharp/Tools/MSBuild.exe
+share/godot/GodotSharp/Tools/Microsoft.Build.Framework.dll
+share/godot/GodotSharp/Tools/Microsoft.Build.dll
+share/godot/GodotSharp/Tools/Microsoft.VisualStudio.Setup.Configuration.Interop.dll
+share/godot/GodotSharp/Tools/Mono.Cecil.Mdb.dll
+share/godot/GodotSharp/Tools/Mono.Cecil.Pdb.dll
+share/godot/GodotSharp/Tools/Mono.Cecil.Rocks.dll
+share/godot/GodotSharp/Tools/Mono.Cecil.dll
+share/godot/GodotSharp/Tools/Newtonsoft.Json.dll
+share/godot/GodotSharp/Tools/Semver.dll
+share/godot/GodotSharp/Tools/System.Buffers.dll
+share/godot/GodotSharp/Tools/System.Collections.Immutable.dll
+share/godot/GodotSharp/Tools/System.Memory.dll
+share/godot/GodotSharp/Tools/System.Numerics.Vectors.dll
+share/godot/GodotSharp/Tools/System.Runtime.CompilerServices.Unsafe.dll
+share/godot/GodotSharp/Tools/System.Threading.Tasks.Dataflow.dll
Index: pkg/README-tools
===================================================================
RCS file: /cvs/ports/games/godot/pkg/README-tools,v
retrieving revision 1.1
diff -u -p -r1.1 README-tools
--- pkg/README-tools    28 Apr 2022 22:18:01 -0000      1.1
+++ pkg/README-tools    25 Aug 2023 02:44:30 -0000
@@ -2,6 +2,18 @@
 | Running ${PKGSTEM} on OpenBSD
 
+-------------------------------------------------------------------------------
 
+Using MSBuild/C#/Mono
+=====================
+
+MSBuild is used by Godot to compile the assemblies for C# projects. In order
+for it to run without error, you need to remove the following line from
+~/.nuget/packages/godot.net.sdk/3.3.0/Sdk/Sdk.targets:
+
+       
TargetFrameworkFallbackSearchPaths="$(TargetFrameworkFallbackSearchPaths)"
+
+If the file doesn't exist, it hasn't been installed yet. You may need to run a
+build with MSBuild in Godot first before the file is created.
+
 Modules
 =======
 

Reply via email to