<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/9ac1b7356b3ab0d4db3d11eef3e03deb33d5c717">https://github.com/macports/macports-ports/commit/9ac1b7356b3ab0d4db3d11eef3e03deb33d5c717</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 9ac1b7356b3 godot: use external libs
</span>9ac1b7356b3 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 9ac1b7356b3ab0d4db3d11eef3e03deb33d5c717
</span>Author: Jason Liu <jasonliu--@users.noreply.github.com>
AuthorDate: Sat Jan 29 21:40:13 2022 -0500

<span style='display:block; white-space:pre;color:#404040;'>    godot: use external libs
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This commit adds support for compiling Godot using external dependencies. It is nearly identical to the patch that has been implemented by one of the maintainers of the Godot package for Homebrew, as discussed here:
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    https://github.com/godotengine/godot-proposals/issues/1796
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    I will also be submitting an upstream PR to get this feature incorporated into the Godot code base.
</span>---
 games/godot/Portfile                             |  54 ++++++++++-
 games/godot/files/add-external_libs-support.diff | 111 +++++++++++++++++++++++
 2 files changed, 162 insertions(+), 3 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/games/godot/Portfile b/games/godot/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 7f181e06c1c..a8bb0ab1b08 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/games/godot/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/games/godot/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -27,6 +27,7 @@ if {$subport eq ${name}} {
</span> 
     github.setup    ${name}engine ${name} 3.4 "" -stable
     version         3.4.0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        1
</span> 
     checksums       rmd160  b06648c75e9c4c08a0f7163efb575f270cab71d7 \
                     sha256  c5abd7fd9e603a4fae55e34f950f0568064a7ec406a12af6c01c218cddb46908 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -76,13 +77,38 @@ if {${os.platform} eq "darwin" && ${os.major} <= 11} {
</span>     }
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_build       port:scons \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:yasm
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append    port:scons \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:yasm \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append      port:freetype \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libpng \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:zlib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:zstd \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libtheora \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libogg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libvorbis \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:libopus \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:opusfile \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:miniupnpc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:pcre2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Some dependencies that are available in MacPorts can't be used. See
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# the "Important note" in the build.args-append section below.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                       port:bullet \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                       port:assimp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                       port:libenet \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                       port:squish \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                       port:libvpx \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                       port:webp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                       port:mbedtls \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                       port:minizip \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                       port:embree
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append       add-external_libs-support.diff
</span> 
 if {$subport eq "${name}-3.2" && \
     ${os.platform} eq "darwin" && ${os.major} <= 15} \
 {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles      legacy-osx-defines.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append legacy-osx-defines.diff
</span> }
 
 if {$subport eq ${name} && ${os.platform} eq "darwin"} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -196,6 +222,28 @@ build.cmd           ${prefix}/bin/scons
</span> build.env-append    BUILD_NAME=macports_build
 build.target        platform=osx arch=${build_arch} \
                     target=release_debug verbose=yes warnings=extra
<span style='display:block; white-space:pre;background:#e0ffe0;'>+build.args-append   builtin_freetype=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    builtin_libpng=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    builtin_zlib=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    builtin_zstd=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    builtin_libtheora=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    builtin_libogg=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    builtin_libvorbis=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    builtin_opus=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    builtin_miniupnpc=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    builtin_pcre2=no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Important note: I am only turning off built-in for libraries that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# don't have any references to "godot" in them (i.e.,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# 'grep -Ri godot ${worksrcpath}/thirdparty' doesn't return anything).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# The other libraries have some sort of modification that has been made
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# by the Godot devs.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                   builtin_assimp=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                   builtin_enet=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                   builtin_squish=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                   builtin_libvpx=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                   builtin_libwebp=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                   builtin_mbedtls=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#                   builtin_embree=no
</span> 
 destroot {
     if {$subport eq "${name}-3.2"} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/games/godot/files/add-external_libs-support.diff b/games/godot/files/add-external_libs-support.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f3051320981
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/games/godot/files/add-external_libs-support.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,111 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- platform/osx/detect.py.orig    2021-11-04 20:06:19.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ platform/osx/detect.py 2021-12-22 20:42:13.000000000 -0500
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -146,10 +146,107 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ## Dependencies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if env["builtin_libtheora"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # freetype depends on libpng and zlib, so bundling one of them while keeping others
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # as shared libraries leads to weird issues
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env["builtin_freetype"] or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env["builtin_libpng"] or
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env["builtin_zlib"]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    ):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env["builtin_freetype"] = True
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env["builtin_libpng"] = True
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env["builtin_zlib"] = True
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_freetype"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config freetype2 --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_libpng"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config libpng16 --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_zlib"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config zlib --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_bullet"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # We need at least version 2.90
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        min_bullet_version = "2.90"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        import subprocess
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        bullet_version = subprocess.check_output(["pkg-config", "bullet", "--modversion"]).strip()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if str(bullet_version) < min_bullet_version:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            # Abort as system bullet was requested but too old
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            print(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                "Bullet: System version {0} does not match minimal requirements ({1}). Aborting.".format(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                    bullet_version, min_bullet_version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            sys.exit(255)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config bullet --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if False:  # not env['builtin_assimp']:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # FIXME: Add min version check
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config assimp --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_enet"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config libenet --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_squish"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # No pkgconfig file so far, hardcode expected lib name.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.Append(LIBS=["squish"])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        #env.ParseConfig("pkg-config libsquish --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_zstd"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config libzstd --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # Sound and video libraries
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # Keep the order as it triggers chained dependencies (ogg needed by others, etc.)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_libtheora"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env["builtin_libogg"] = False  # Needed to link against system libtheora
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env["builtin_libvorbis"] = False  # Needed to link against system libtheora
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config theora theoradec --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if env["arch"] != "arm64":
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             env["x86_libtheora_opt_gcc"] = True
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_libvpx"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config vpx --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_libvorbis"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env["builtin_libogg"] = False  # Needed to link against system libvorbis
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config vorbis vorbisfile --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_opus"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env["builtin_libogg"] = False  # Needed to link against system opus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config opus opusfile --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_libogg"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config ogg --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_libwebp"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config libwebp --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_mbedtls"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # mbedTLS does not provide a pkgconfig config yet. See https://github.com/ARMmbed/mbedtls/issues/228
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.Append(LIBS=["mbedtls", "mbedcrypto", "mbedx509"])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_wslay"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config libwslay --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_miniupnpc"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config miniupnpc --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # On Linux wchar_t should be 32-bits
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # 16-bit library shouldn't be required due to compiler optimisations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if not env["builtin_pcre2"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.ParseConfig("pkg-config libpcre2-32 --cflags --libs")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    # Embree is only used in tools build on x86_64 and aarch64.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if env["tools"] and not env["builtin_embree"]:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        # No pkgconfig file so far, hardcode expected lib name.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        env.Append(LIBS=["embree3"])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ## Flags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     env.Prepend(CPPPATH=["#platform/osx"])
</span></pre><pre style='margin:0'>

</pre>