Hi, This is an update to Godot version 3.6. No major changes, just some of the usual churn... Some input from op@ on an earlier version that was missing sndio support.
Release notes: https://godotengine.org/article/godot-3-6-finally-released/ ok?
Index: Makefile =================================================================== RCS file: /cvs/ports/games/godot/Makefile,v diff -u -p -r1.55 Makefile --- Makefile 26 Sep 2023 20:44:06 -0000 1.55 +++ Makefile 2 Oct 2024 13:32:58 -0000 @@ -4,7 +4,7 @@ COMMENT-main = 2D and 3D game engine COMMENT-tools= 2D and 3D game engine (with tools) COMMENT-sharp= .NET libs for mono/C# module of Godot -V = 3.5.3 +V = 3.6 SHARPFILES_V = 3.5.2 DISTNAME = godot-${V}-stable PKGNAME = godot-${V} Index: distinfo =================================================================== RCS file: /cvs/ports/games/godot/distinfo,v diff -u -p -r1.23 distinfo --- distinfo 26 Sep 2023 20:44:06 -0000 1.23 +++ distinfo 2 Oct 2024 13:32:58 -0000 @@ -1,8 +1,8 @@ SHA256 (CoaguCo-Industries-GodotSteam-v3.20.tar.gz) = FoAl3iZ+1CWwIPXwJZ9S7q3QMn//RslYT06tXkc38QU= SHA256 (godot-3.5.2-mono-glue.tar.gz) = ezUneQt2JzlsQPF4FvSCcNtJiYbdb3NEY4Lvjj/gz64= SHA256 (godot-3.5.2-nuget-packages.tar.xz) = RXlTjB1IgjZEP2ZJY05xoGQv8XTRKHxwPaMmiNdduQE= -SHA256 (godot-3.5.3-stable.tar.xz) = PLSBJrdoWPQM9UvTRbuE3B9J2eb4pKdCWthugF05cB0= +SHA256 (godot-3.6-stable.tar.xz) = W+0gpwVtTMPMo0ABdSEJgJrXriAFSOmMe7xq+60Y7ac= SIZE (CoaguCo-Industries-GodotSteam-v3.20.tar.gz) = 253832 SIZE (godot-3.5.2-mono-glue.tar.gz) = 1094618 SIZE (godot-3.5.2-nuget-packages.tar.xz) = 55742184 -SIZE (godot-3.5.3-stable.tar.xz) = 24072964 +SIZE (godot-3.6-stable.tar.xz) = 24345708 Index: patches/patch-core_object_cpp =================================================================== RCS file: /cvs/ports/games/godot/patches/patch-core_object_cpp,v diff -u -p -r1.1 patch-core_object_cpp --- patches/patch-core_object_cpp 14 Aug 2023 12:40:50 -0000 1.1 +++ patches/patch-core_object_cpp 2 Oct 2024 13:32:58 -0000 @@ -3,7 +3,7 @@ when building without tools, don't warn Index: core/object.cpp --- core/object.cpp.orig +++ core/object.cpp -@@ -2067,8 +2067,13 @@ RWLock ObjectDB::rw_lock; +@@ -2071,8 +2071,13 @@ RWLock ObjectDB::rw_lock; void ObjectDB::cleanup() { rw_lock.write_lock(); if (instances.size()) { Index: patches/patch-drivers_unix_os_unix_cpp =================================================================== RCS file: /cvs/ports/games/godot/patches/patch-drivers_unix_os_unix_cpp,v diff -u -p -r1.12 patch-drivers_unix_os_unix_cpp --- patches/patch-drivers_unix_os_unix_cpp 10 Oct 2022 18:39:05 -0000 1.12 +++ patches/patch-drivers_unix_os_unix_cpp 2 Oct 2024 13:32:59 -0000 @@ -4,7 +4,7 @@ https://github.com/godotengine/godot/pul Index: drivers/unix/os_unix.cpp --- drivers/unix/os_unix.cpp.orig +++ drivers/unix/os_unix.cpp -@@ -497,12 +497,6 @@ String OS_Unix::get_executable_path() const { +@@ -484,12 +484,6 @@ String OS_Unix::get_executable_path() const { return OS::get_executable_path(); } return b; @@ -17,7 +17,7 @@ Index: drivers/unix/os_unix.cpp #elif defined(__FreeBSD__) int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 }; char buf[MAXPATHLEN]; -@@ -529,7 +523,6 @@ String OS_Unix::get_executable_path() const { +@@ -516,7 +510,6 @@ String OS_Unix::get_executable_path() const { return path; #else Index: patches/patch-modules_mono_csharp_script_cpp =================================================================== RCS file: /cvs/ports/games/godot/patches/patch-modules_mono_csharp_script_cpp,v diff -u -p -r1.1 patch-modules_mono_csharp_script_cpp --- patches/patch-modules_mono_csharp_script_cpp 24 Sep 2023 19:08:52 -0000 1.1 +++ patches/patch-modules_mono_csharp_script_cpp 2 Oct 2024 13:32:59 -0000 @@ -4,7 +4,7 @@ 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 +@@ -2302,7 +2302,7 @@ bool CSharpScript::_update_exports(PlaceHolderScriptIn GDMonoMethod *ctor = script_class->get_method(CACHED_STRING_NAME(dotctor), 0); @@ -13,7 +13,7 @@ Index: modules/mono/csharp_script.cpp "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 { +@@ -2885,10 +2885,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 Index: patches/patch-modules_mono_godotsharp_dirs_cpp =================================================================== RCS file: /cvs/ports/games/godot/patches/patch-modules_mono_godotsharp_dirs_cpp,v diff -u -p -r1.1 patch-modules_mono_godotsharp_dirs_cpp --- patches/patch-modules_mono_godotsharp_dirs_cpp 24 Sep 2023 19:08:52 -0000 1.1 +++ patches/patch-modules_mono_godotsharp_dirs_cpp 2 Oct 2024 13:32:59 -0000 @@ -4,7 +4,7 @@ make data_editor_prebuilt_api_dir() avai Index: modules/mono/godotsharp_dirs.cpp --- modules/mono/godotsharp_dirs.cpp.orig +++ modules/mono/godotsharp_dirs.cpp -@@ -97,6 +97,8 @@ class _GodotSharpDirs { (public) +@@ -98,6 +98,8 @@ class _GodotSharpDirs { (public) String res_temp_assemblies_dir; String mono_user_dir; String mono_logs_dir; @@ -13,7 +13,7 @@ Index: modules/mono/godotsharp_dirs.cpp #ifdef TOOLS_ENABLED String mono_solutions_dir; -@@ -106,8 +108,6 @@ class _GodotSharpDirs { (public) +@@ -107,8 +109,6 @@ class _GodotSharpDirs { (public) String sln_filepath; String csproj_filepath; @@ -22,7 +22,7 @@ Index: modules/mono/godotsharp_dirs.cpp #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) +@@ -172,20 +172,20 @@ class _GodotSharpDirs { (public) #endif String exe_dir = OS::get_singleton()->get_executable_path().get_base_dir(); @@ -48,7 +48,7 @@ Index: modules/mono/godotsharp_dirs.cpp #endif #ifdef WINDOWS_ENABLED -@@ -214,6 +214,7 @@ class _GodotSharpDirs { (public) +@@ -209,6 +209,7 @@ class _GodotSharpDirs { (public) #else @@ -56,7 +56,7 @@ Index: modules/mono/godotsharp_dirs.cpp 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) +@@ -218,11 +219,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"); @@ -70,7 +70,7 @@ Index: modules/mono/godotsharp_dirs.cpp data_game_assemblies_dir = data_dir_root.plus_file("Assemblies"); #endif -@@ -299,6 +301,10 @@ String get_mono_logs_dir() { +@@ -294,6 +296,10 @@ String get_mono_logs_dir() { return _GodotSharpDirs::get_singleton().mono_logs_dir; } @@ -81,7 +81,7 @@ Index: modules/mono/godotsharp_dirs.cpp #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() { +@@ -319,9 +325,6 @@ String get_data_editor_tools_dir() { return _GodotSharpDirs::get_singleton().data_editor_tools_dir; } Index: patches/patch-platform_x11_detect_py =================================================================== RCS file: patches/patch-platform_x11_detect_py diff -N patches/patch-platform_x11_detect_py --- patches/patch-platform_x11_detect_py 10 Oct 2022 18:39:05 -0000 1.13 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,71 +0,0 @@ -- remove hardcoded -O2, found by bcallah@ -- add sndio -- enable joydev -- disable template binaries (requires GNU ld but is broken on GCC-arches) - -Index: platform/x11/detect.py ---- platform/x11/detect.py.orig -+++ platform/x11/detect.py -@@ -90,29 +90,6 @@ def get_flags(): - def configure(env): - ## Build type - -- if env["target"] == "release": -- if env["optimize"] == "speed": # optimize for speed (default) -- env.Prepend(CCFLAGS=["-O3"]) -- elif env["optimize"] == "size": # optimize for size -- env.Prepend(CCFLAGS=["-Os"]) -- -- if env["debug_symbols"]: -- env.Prepend(CCFLAGS=["-g2"]) -- -- elif env["target"] == "release_debug": -- if env["optimize"] == "speed": # optimize for speed (default) -- env.Prepend(CCFLAGS=["-O2"]) -- elif env["optimize"] == "size": # optimize for size -- env.Prepend(CCFLAGS=["-Os"]) -- -- if env["debug_symbols"]: -- env.Prepend(CCFLAGS=["-g2"]) -- -- elif env["target"] == "debug": -- env.Prepend(CCFLAGS=["-ggdb"]) -- env.Prepend(CCFLAGS=["-g3"]) -- env.Append(LINKFLAGS=["-rdynamic"]) -- - ## Architecture - - is64 = sys.maxsize > 2**32 -@@ -363,6 +340,10 @@ def configure(env): - else: - print("Warning: ALSA libraries not found. Disabling the ALSA audio driver.") - -+ print("Enabling sndio") -+ env.Append(CPPDEFINES=["SNDIO_ENABLED"]) -+ env.Append(LINKFLAGS=["-lsndio"]) -+ - if env["pulseaudio"]: - if os.system("pkg-config --exists libpulse") == 0: # 0 means found - env.Append(CPPDEFINES=["PULSEAUDIO_ENABLED"]) -@@ -381,6 +362,9 @@ def configure(env): - else: - env["udev"] = False # Linux specific - -+ if platform.system() == "OpenBSD": -+ env.Append(CPPDEFINES=["JOYDEV_ENABLED"]) -+ - # Linkflags below this line should typically stay the last ones - if not env["builtin_zlib"]: - env.ParseConfig("pkg-config zlib --cflags --libs") -@@ -413,11 +397,6 @@ def configure(env): - print( - "Warning: Creating template binaries enabled for PCK embedding is currently only supported with GNU ld, not gold or LLD." - ) -- else: -- if float(gnu_ld_version.group(1)) >= 2.30: -- env.Append(LINKFLAGS=["-T", "platform/x11/pck_embed.ld"]) -- else: -- env.Append(LINKFLAGS=["-T", "platform/x11/pck_embed.legacy.ld"]) - - ## Cross-compilation - Index: patches/patch-platform_x11_os_x11_cpp =================================================================== RCS file: /cvs/ports/games/godot/patches/patch-platform_x11_os_x11_cpp,v diff -u -p -r1.13 patch-platform_x11_os_x11_cpp --- patches/patch-platform_x11_os_x11_cpp 2 Aug 2023 22:01:51 -0000 1.13 +++ patches/patch-platform_x11_os_x11_cpp 2 Oct 2024 13:32:59 -0000 @@ -16,7 +16,7 @@ Index: platform/x11/os_x11.cpp // ICCCM #define WM_NormalState 1L // window normal state #define WM_IconicState 3L // window minimized -@@ -173,7 +177,7 @@ Error OS_X11::initialize(const VideoMode &p_desired, i +@@ -219,7 +223,7 @@ Error OS_X11::initialize(const VideoMode &p_desired, i int xrandr_minor = 0; int event_base, error_base; xrandr_ext_ok = XRRQueryExtension(x11_display, &event_base, &error_base); @@ -25,7 +25,7 @@ Index: platform/x11/os_x11.cpp if (!xrandr_handle) { err = dlerror(); // For some arcane reason, NetBSD now ships libXrandr.so.3 while the rest of the world has libXrandr.so.2... -@@ -610,9 +614,13 @@ Error OS_X11::initialize(const VideoMode &p_desired, i +@@ -664,9 +668,13 @@ Error OS_X11::initialize(const VideoMode &p_desired, i window_has_focus = true; // Set focus to true at init #ifdef JOYDEV_ENABLED @@ -40,7 +40,7 @@ Index: platform/x11/os_x11.cpp power_manager = memnew(PowerX11); if (p_desired.layered) { -@@ -4414,6 +4422,11 @@ void OS_X11::update_real_mouse_position() { +@@ -4474,6 +4482,11 @@ void OS_X11::update_real_mouse_position() { } OS_X11::OS_X11() { Index: patches/patch-platform_x11_os_x11_h =================================================================== RCS file: /cvs/ports/games/godot/patches/patch-platform_x11_os_x11_h,v diff -u -p -r1.6 patch-platform_x11_os_x11_h --- patches/patch-platform_x11_os_x11_h 11 Aug 2022 19:40:59 -0000 1.6 +++ patches/patch-platform_x11_os_x11_h 2 Oct 2024 13:32:59 -0000 @@ -16,7 +16,7 @@ Index: platform/x11/os_x11.h #include "main/input_default.h" #include "power_x11.h" #include "servers/audio_server.h" -@@ -199,7 +200,7 @@ class OS_X11 : public OS_Unix { +@@ -203,7 +204,7 @@ class OS_X11 : public OS_Unix { InputDefault *input; #ifdef JOYDEV_ENABLED @@ -25,7 +25,7 @@ Index: platform/x11/os_x11.h #endif #ifdef ALSA_ENABLED -@@ -208,6 +209,10 @@ class OS_X11 : public OS_Unix { +@@ -212,6 +213,10 @@ class OS_X11 : public OS_Unix { #ifdef ALSAMIDI_ENABLED MIDIDriverALSAMidi driver_alsamidi; Index: patches/patch-servers_visual_shader_language_cpp =================================================================== RCS file: /cvs/ports/games/godot/patches/patch-servers_visual_shader_language_cpp,v diff -u -p -r1.3 patch-servers_visual_shader_language_cpp --- patches/patch-servers_visual_shader_language_cpp 13 Aug 2023 12:34:23 -0000 1.3 +++ patches/patch-servers_visual_shader_language_cpp 2 Oct 2024 13:32:59 -0000 @@ -4,7 +4,7 @@ instead Index: servers/visual/shader_language.cpp --- servers/visual/shader_language.cpp.orig +++ servers/visual/shader_language.cpp -@@ -596,6 +596,7 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { +@@ -598,6 +598,7 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { } } @@ -12,7 +12,7 @@ Index: servers/visual/shader_language.cp if (error) { if (hexa_found) { return _make_token(TK_ERROR, "Invalid (hexadecimal) numeric constant"); -@@ -608,6 +609,9 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { +@@ -610,6 +611,9 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { } return _make_token(TK_ERROR, "Invalid (integer) numeric constant"); } @@ -22,7 +22,7 @@ Index: servers/visual/shader_language.cp str += symbol; i++; } -@@ -622,24 +626,40 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { +@@ -624,24 +628,40 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { } else if (period_found || exponent_found || float_suffix_found) { //floats if (exponent_found && (!_is_number(last_char) && last_char != 'f')) { // checks for eg: "2E", "2E-", "2E+" @@ -63,7 +63,7 @@ Index: servers/visual/shader_language.cp } } -@@ -651,7 +671,11 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { +@@ -653,7 +673,11 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { } if (!str.is_valid_float()) { @@ -75,7 +75,7 @@ Index: servers/visual/shader_language.cp } } else { //integers -@@ -661,6 +685,7 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { +@@ -663,6 +687,7 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { // Compensate reading cursor position. char_idx += 1; } @@ -83,7 +83,7 @@ Index: servers/visual/shader_language.cp if (!str.is_valid_integer()) { if (uint_suffix_found) { return _make_token(TK_ERROR, "Invalid (unsigned integer) numeric constant"); -@@ -668,6 +693,9 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { +@@ -670,6 +695,9 @@ ShaderLanguage::Token ShaderLanguage::_get_token() { return _make_token(TK_ERROR, "Invalid (integer) numeric constant"); } } Index: patches/patch-thirdparty_embree_common_math_math_h =================================================================== RCS file: /cvs/ports/games/godot/patches/patch-thirdparty_embree_common_math_math_h,v diff -u -p -r1.4 patch-thirdparty_embree_common_math_math_h --- patches/patch-thirdparty_embree_common_math_math_h 5 Aug 2022 14:19:42 -0000 1.4 +++ patches/patch-thirdparty_embree_common_math_math_h 2 Oct 2024 13:32:59 -0000 @@ -5,7 +5,7 @@ call. Backport of https://github.com/em Index: thirdparty/embree/common/math/math.h --- thirdparty/embree/common/math/math.h.orig +++ thirdparty/embree/common/math/math.h -@@ -168,6 +168,7 @@ namespace embree +@@ -239,6 +239,7 @@ namespace embree __forceinline T twice(const T& a) { return a+a; } __forceinline int min(int a, int b) { return a<b ? a:b; } @@ -13,7 +13,7 @@ Index: thirdparty/embree/common/math/mat __forceinline unsigned min(unsigned a, unsigned b) { return a<b ? a:b; } __forceinline int64_t min(int64_t a, int64_t b) { return a<b ? a:b; } __forceinline float min(float a, float b) { return a<b ? a:b; } -@@ -185,6 +186,7 @@ namespace embree +@@ -259,6 +260,7 @@ namespace embree template<typename T> __forceinline T mini(const T& a, const T& b, const T& c, const T& d, const T& e) { return mini(mini(mini(a,b),mini(c,d)),e); } __forceinline int max(int a, int b) { return a<b ? b:a; } Index: patches/patch-thirdparty_embree_common_sys_sysinfo_cpp =================================================================== RCS file: /cvs/ports/games/godot/patches/patch-thirdparty_embree_common_sys_sysinfo_cpp,v diff -u -p -r1.4 patch-thirdparty_embree_common_sys_sysinfo_cpp --- patches/patch-thirdparty_embree_common_sys_sysinfo_cpp 5 Aug 2022 14:19:42 -0000 1.4 +++ patches/patch-thirdparty_embree_common_sys_sysinfo_cpp 2 Oct 2024 13:32:59 -0000 @@ -7,7 +7,7 @@ Backport of https://github.com/embree/em Index: thirdparty/embree/common/sys/sysinfo.cpp --- thirdparty/embree/common/sys/sysinfo.cpp.orig +++ thirdparty/embree/common/sys/sysinfo.cpp -@@ -572,6 +572,26 @@ namespace embree +@@ -597,6 +597,26 @@ namespace embree #endif @@ -34,12 +34,12 @@ Index: thirdparty/embree/common/sys/sysi //////////////////////////////////////////////////////////////////////////////// /// Mac OS X Platform //////////////////////////////////////////////////////////////////////////////// -@@ -622,7 +642,7 @@ namespace embree +@@ -649,7 +669,7 @@ namespace embree + static int nThreads = -1; + if (nThreads != -1) return nThreads; - // -- GODOT start -- - // #if defined(__MACOSX__) -#if defined(__MACOSX__) || defined(__ANDROID__) +#if defined(__MACOSX__) || defined(__ANDROID__) || defined(__OpenBSD__) - // -- GODOT end -- nThreads = sysconf(_SC_NPROCESSORS_ONLN); // does not work in Linux LXC container assert(nThreads); + #elif defined(__EMSCRIPTEN__)