<pre style='margin:0'>
Chris Jones (cjones051073) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/6f94e1460c20bab5a2646ecbfdf322c23d5f79b3">https://github.com/macports/macports-ports/commit/6f94e1460c20bab5a2646ecbfdf322c23d5f79b3</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 6f94e14  nanogui: new port
</span>6f94e14 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 6f94e1460c20bab5a2646ecbfdf322c23d5f79b3
</span>Author: Jason Liu <jasonliu--@users.noreply.github.com>
AuthorDate: Thu May 28 12:11:19 2020 -0400

<span style='display:block; white-space:pre;color:#404040;'>    nanogui: new port
</span>---
 graphics/nanogui/Portfile | 193 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 193 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/nanogui/Portfile b/graphics/nanogui/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..d7c725b
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/nanogui/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,193 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           cmake 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        mitsuba-renderer nanogui 21e5cbc880b2e26b28b2a35085a9e6706da1e2a8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             20200404-[string range ${github.version} 0 7]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          graphics
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             BSD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         @jasonliu-- openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         minimalistic C++/Python GUI library for OpenGL, \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    GLES2/3, Metal, and WebAssembly/WebGL
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    NanoGUI is a minimalistic cross-platform widget \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    library for OpenGL 3+, GLES 2/3, and Metal. It \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    supports automatic layout generation, stateful C++ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    lambdas callbacks, a variety of useful widget \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    types, and Retina-capable rendering on Apple \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    devices.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  192baaa0a7f0ac862b2d09021daa98733e342932 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  f105aa23476f99c2db1b28bccf4751498584e366a30e5e5078d6963a8bab6c93 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    2911997
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append  port:glfw \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:nanovg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard 2017
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cxxflags-append -std=c++17
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # By default, NanoGUI's code assumes that the source codes of its
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # dependencies have been copied into NanoGUI's source tree. The
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # following replacements allow NanoGUI to compile against MacPorts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # packages.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set regexes [list \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "/NOT IS_DIRECTORY.*glfw/,/endif/s/^/#/g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|\(NANOGUI_PYBIND11_DIR.*\)tools|\\1share/cmake/pybind11|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|\(NANOGUI_EXTRA_DEFS -DNANOGUI_USE_METAL\)|\\1 -DTARGET_OS_OSX|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|\".*CMAKE_CURRENT_SOURCE_DIR.*glfw/include|\"${prefix}/include/GLFW|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|\".*CMAKE_CURRENT_SOURCE_DIR.*nanovg/src|\"${prefix}/include/nanovg|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|ext/\(nanovg\)/\(src\)/\(.*\.c\)|${prefix}/\\2/\\1/\\3|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|ext/\(nanovg\)/src/\(.*\.h\)|${prefix}/include/\\1/\\2|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|ext/\(nanovg\)/\(src\)|${prefix}/include/\\1|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|ext/\(nanovg_metal\)/\(src\)/\(.*\.m\)|${prefix}/\\2/\\1/\\3|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|ext/\(nanovg_metal\)/src/\(.*\.h\)|${prefix}/include/\\1/\\2|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|ext/\(nanovg_metal\)/\(src\)|${prefix}/include/\\1|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|\(example\[0-9\].*nanogui\)|\\1 \${NANOGUI_EXTRA_LIBS}|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "s|\(COPY resources.*DESTINATION \).*|\\1 share/nanogui/examples)|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    ]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach re $regexes {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace -E $re ${worksrcpath}/CMakeLists.txt
</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;'>+    # Add MacPorts paths
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "/^if.*CMAKE_SYSTEM_NAME.*MATCHES.*BSD/i\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if (APPLE)\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\\  include_directories(${prefix}/include)\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\\  link_directories(${prefix}/lib)\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endif()\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${worksrcpath}/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Make it so that CMake will be able to link to GL libraries,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # even though we are running on "APPLE" and not "Linux".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "/elseif .CMAKE_SYSTEM MATCHES.*Linux.*OR CMAKE_SYSTEM_NAME.*BSD/a\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+endif()\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if (APPLE)\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${worksrcpath}/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "/NANOGUI_EXTRA_LIBS GL)/s/^/#/" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${worksrcpath}/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "/Xrandr Xinerama/s/^/#/" ${worksrcpath}/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace -E "s|NOT \(CMAKE_SYSTEM_NAME MATCHES.*OpenBSD\)|\\1|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${worksrcpath}/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Make it so that CMake can find MacPorts' glfw
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "/include_directories.*glfw/a\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+else()\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\\  include_directories(${prefix}/include/GLFW)\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${worksrcpath}/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "/TARGET_OBJECTS:glfw_objects/a\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+else()\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\\  list(APPEND NANOGUI_EXTRA_LIBS glfw)\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${worksrcpath}/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # For some reason, NanoGUI's source code compiles the examples,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # but then never actually installs them anywhere and simply
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # leaves them in the build directory.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "/COPY resources/a\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\\  install(DIRECTORY src/ DESTINATION share/nanogui/examples\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\\          FILES_MATCHING PATTERN \"example*\")\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\\  install(TARGETS example1 example2 example3 example4 example_icons\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\\          RUNTIME DESTINATION share/nanogui/examples)\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${worksrcpath}/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "s|file.COPY resources|install(DIRECTORY resources|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${worksrcpath}/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Fix typo in reference to GLES3 header file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "s|GLES3/gl2ext|GLES3/gl3ext|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${worksrcpath}/include/nanogui/opengl.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {${os.major} < 16} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Reference: https://github.com/catchorg/Catch2/issues/1218#issuecomment-372105189
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace "s|std::uncaught_exceptions() > 0|std::uncaught_exception()|" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${worksrcpath}/src/widget.cpp
</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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append   -DNANOGUI_BUILD_GLFW=NO \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        -DNANOGUI_BUILD_PYTHON=NO
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant opengl conflicts gles2 gles3 metal \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description {Build NanoGUI using OpenGL backend} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   -DNANOGUI_BACKEND="OpenGL"
</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;'>+variant gles2 conflicts opengl gles3 metal \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description {Build NanoGUI using GLES 2 backend} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append      lib:libGLESv2:mesa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   -DNANOGUI_BACKEND="GLES 2"
</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;'>+variant gles3 conflicts opengl gles2 metal \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description {Build NanoGUI using GLES 3 backend} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append      lib:libGLESv3:mesa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   -DNANOGUI_BACKEND="GLES 3"
</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;'>+# NanoGUI's Metal-related code requires at least Metal 2, which is
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# only available starting in macOS 10.13 High Sierra and above.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${os.major} >= 17} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant metal conflicts opengl gles2 gles3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        description {Build NanoGUI using Metal backend} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            depends_lib-append      port:metalnanovg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            configure.args-append   -DNANOGUI_BACKEND="Metal"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            use_xcode               yes
</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;'>+    default_variants +metal
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+} else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    default_variants +opengl
</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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+### The following code was adapted from the portfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+### of ports such as openvdb and openimageio
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set pythons_suffixes    {34 35 36 37 38}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set pythons_ports       {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+foreach s ${pythons_suffixes} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    lappend pythons_ports python${s}
</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;'>+foreach s ${pythons_suffixes} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set p python${s}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set v [string index ${s} 0].[string index ${s} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set i [lsearch -exact ${pythons_ports} ${p}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set c [lreplace ${pythons_ports} ${i} ${i}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant ${p} conflicts {*}${c} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        description "Build the Python ${v} plugin" {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[variant_isset ${p}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Note: We basically need to import the value of ${v}, otherwise
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # all foreach iterations will end up with the same value of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # ${v}! This appears to be related to how Tcl does scoping.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set selected_v          ${v}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append      port:${p} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:pybind11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-replace  -DNANOGUI_BUILD_PYTHON=NO \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                -DNANOGUI_BUILD_PYTHON=YES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DNANOGUI_PYBIND11_DIR=${prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            reinplace "/find_package.PythonLibsNew/i\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+\\  set(PythonLibsNew_FIND_VERSION ${selected_v})\\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                ${worksrcpath}/CMakeLists.txt
</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;'>+}
</span></pre><pre style='margin:0'>

</pre>