<pre style='margin:0'>
Landon Fuller (landonf) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/8d2f4f3046a21a548baa5ea1a9ac00e7d7489f54">https://github.com/macports/macports-ports/commit/8d2f4f3046a21a548baa5ea1a9ac00e7d7489f54</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 8d2f4f3  z3: new port
</span>8d2f4f3 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 8d2f4f3046a21a548baa5ea1a9ac00e7d7489f54
</span>Author: Landon Fuller <landonf@plausible.coop>
AuthorDate: Tue Sep 24 19:23:50 2019 -0600

<span style='display:block; white-space:pre;color:#404040;'>    z3: new port
</span>---
 math/z3/Portfile                | 293 ++++++++++++++++++++++++++++++++++++++++
 math/z3/files/java_libpath.diff |  12 ++
 math/z3/files/libz3-static.diff |  47 +++++++
 3 files changed, 352 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/z3/Portfile b/math/z3/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..708c56f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/z3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,293 @@
</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;'>+PortGroup           active_variants 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           compiler_blacklist_versions 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        Z3Prover z3 4.8.5 Z3-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          math science
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {landonf @landonf}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Z3 Theorem Prover
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    High performance SMT solver from Microsoft Research.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin freebsd
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             MIT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  cb3509b35dc3a428019950df2e2f94c555a7ee94 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  4e8e232887ddfa643adb6a30dcd3743cb2fa6591735fbd302b49f7028cdc0363 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    4177051
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          libz3-static.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+worksrcdir          ${name}-${github.tag_prefix}${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.build_type    Release
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.generator     Ninja
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Don't overide z3's default optimization flags 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.optflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.target     install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Common variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+variant debug description {Enable the debug build configuration} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    cmake.build_type    Debug
</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;'>+# Options not shared with subports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${name} eq ${subport}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append    port:python27 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:bash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    compiler.fallback       macports-clang-8.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   -DPYTHON_EXECUTABLE=${prefix}/bin/python2.7 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            -DENABLE_EXAMPLE_TARGETS=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            -DUSE_OPENMP=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Optimal (hopefully) default variants selected based on benchmark results.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Benchmark configurations:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #   ver     {4.8.5}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #   cc      {macports-clang-8.0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #   cpu     {Intel Core i7-7700K @ 4.20GHz (4 cores/8 threads)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #   os      {macOS 10.14.6 (18G95)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # freebsd {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #   ver     {4.8.5}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #   cc      {macports-clang-8.0}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #   cpu     {Dual Intel Xeon E5-2680 v4 @ 2.40GHz (2 x 14 cores/28 threads)}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    #   os      {FreeBSD 12.0-RELEASE-p9}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    default_variants        +gmp +lto +polly +polly_late +polly_vector
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant lto conflicts debug description {Enable link-time (interprocedural) optimization} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append           -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # We need cmake 3.9 behavior to be able to use CMAKE_INTERPROCEDURAL_OPTIMIZATION
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # This can be removed if/when the project switches to a cmake_minimum_required >= 3.9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append           -DCMAKE_POLICY_DEFAULT_CMP0069=NEW
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {${version} ne "4.8.5"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ui_error "Please verify that -DCMAKE_POLICY_DEFAULT_CMP0069=NEW is still required"
</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;'>+        # Untested with gcc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        compiler.blacklist-append       *gcc*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # I don't believe -flto was supported by clang until Xcode 9
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            compiler.blacklist-append   {clang < 900}
</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;'>+        # TODO: Is this still required in 13.x+?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        platform freebsd {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           compiler.blacklist-append    clang
</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;'>+    variant gmp description {Use GNU GMP library for arbitrary precision arithmetic} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append          port:gmp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append       -DUSE_LIB_GMP=ON
</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 native description {Generate code optimized for this machine's CPU. The resulting binaries may not run on other processors} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.optflags-append   -march=native
</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 openmp description {Enable Z3 OpenMP parallelization and thread-safety support} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-delete       -DUSE_OPENMP=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append       -DUSE_OPENMP=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append          port:libomp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[vercmp [macports_version] 2.5.99] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            compiler.openmp_version 3.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            compiler.whitelist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach v {4.3 4.4 4.5 4.6 4.7 4.8 5 6 7 8} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                compiler.whitelist-append macports-gcc-${v}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach v {3.9 5.0 6.0 7.0 8.0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                compiler.whitelist-append macports-clang-${v}                
</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;'>+        compiler.fallback    macports-clang-8.0
</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 polly conflicts debug description {Perform loop and data-locality optimization using LLVM's Polly optimizer} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # We need a clang+llvm pair that can be built with Polly support
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # We've only tested this with clang-8.0, so for now, require 8.0 as the minimum version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        compiler.blacklist-append   {macports-clang-[0-7].*} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                    {*gcc*}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Map the selected compiler to its corresponding LLVM port version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # TODO: Should we expose [portconfigure::compiler_port_name] as ${compiler.port} ?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![regexp {macports-clang-(.*)} ${configure.compiler} -> llvm_ver]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ui_error "Unsupported compiler: ${configure.compiler}"
</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;'>+        # LLVM must be built with Polly support
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_build-append        port:llvm-${llvm_ver}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        require_active_variants     port:llvm-${llvm_ver} polly
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.optflags-append   -O3 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                    -Xclang -load -Xclang LLVMPolly.so \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                    -mllvm -polly
</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 polly_late requires polly description {Perform LLVM Polly optimization later in the LLVM optimization pass pipline} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # See https://polly.llvm.org/docs/Architecture.html#polly-in-the-llvm-pass-pipeline
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.optflags-append   -mllvm -polly-position=before-vectorizer
</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 polly_two_level_tiling requires polly description {Enable second-level loop tiling using LLVM's Polly optimizer} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.optflags-append   -mllvm -polly-2nd-level-tiling
</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 polly_vector requires polly description {Enable automatic vector code generation using LLVM's Polly optimizer} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.optflags-append   -mllvm -polly-vectorizer=stripmine 
</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 polly_parallel requires polly description {Enable automatic generation of OpenMP code for parallel loops using LLVM's Polly optimizer} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.optflags-append   -mllvm -polly-parallel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Polly's parallel loop optimization generates OpenMP code, and
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # requires libomp/libgomp; if +openmp isn't also enabled, we'll
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # need to add the dependency and additional LDFLAGS here
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![variant_isset openmp]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            depends_lib-append          port:libomp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            configure.ldflags-append    -L${prefix}/lib/libomp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                        -lgomp
</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;'>+    pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # If we enable +lto in combination with a variant (e.g. +openmp, +polly) that
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # selects MacPorts' clang compiler, CMake fails to locate the llvm-ar and llvm-ranlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # binaries required for -flto.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # TODO: Investigate fixing this in upstream cmake, and/or in the cmake PortGroup
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[variant_isset lto] && [regexp {macports-clang-(.*)} ${configure.compiler} -> llvm_ver]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach lang {C CXX} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                foreach tool {ar ranlib} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set var     CMAKE_${lang}_COMPILER_[string toupper ${tool}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set path    ${prefix}/bin/llvm-${tool}-mp-${llvm_ver}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    configure.args-append -D${var}=${path}
</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;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    test.run    yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    test.target test-z3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    post-test {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # This actually executes the unit tests
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system -W ${test.dir} {./test-z3 /a}
</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;'>+# Create a top-level Python binding metaport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport py-${name} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    PortGroup   python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    categories-append   python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description         Python bindings for the Z3 theorem prover
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description    Python bindings for the Z3 SMT solver library from Microsoft Research.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    supported_archs     noarch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib         port:${name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        port:py${python.version}-${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    distfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patch       {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure   {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    build       {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot    {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        system "echo ${subport} is a stub port > ${destroot}${prefix}/share/doc/${subport}/README"
</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;'>+# Create Python subports for each supported Python version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+foreach v {27 37} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    subport py${v}-${name} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        PortGroup  python 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        python.version          ${v}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        categories-append       python
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        description             Python ${python.branch} bindings for the Z3 theorem prover
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        long_description        Python ${python.branch} bindings for the Z3 SMT solver library from Microsoft Research.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append      port:${name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:python${v}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        use_configure           yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DPYTHON_EXECUTABLE=${python.bin} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                -DBUILD_PYTHON_BINDINGS=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                -DINSTALL_PYTHON_BINDINGS=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Avoid rebuilding libz3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            reinplace -E {s|^[[:blank:]]*DEPENDS[[:blank:]]+libz3|DEPENDS |g} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                src/api/python/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;'>+        post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # The python module looks for libz3 in its package path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ln -sf "${prefix}/lib/libz3.dylib" "${destroot}/${python.pkgd}/z3/"
</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;'>+        build.target            src/api/python/all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        destroot.cmd            ${build.cmd}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        destroot.target         src/api/python/install
</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;'>+# Java bindings
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+subport ${name}-java {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    PortGroup  java 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    java.version            1.8+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    java.fallback           openjdk11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    categories-append       java
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    description             Java bindings for the Z3 theorem prover
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    long_description        Java bindings for the Z3 SMT solver library from Microsoft Research.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_lib-append      port:${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append       java_libpath.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-append   -DBUILD_JAVA_BINDINGS=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            -DINSTALL_JAVA_BINDINGS=ON \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            -DZ3_JAVA_JNI_LIB_INSTALLDIR=${prefix}/lib/${name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            -DZ3_JAVA_JAR_INSTALLDIR=${prefix}/share/java/${name}
</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;'>+        # Avoid rebuilding libz3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace -E {s|(^[[:blank:]]*target_link_libraries[[:blank:]]*\([[:blank:]]*z3java[[:blank:]]*PRIVATE)[[:blank:]]*libz3(.*)|\1 z3 \2|g} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            src/api/java/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Fix up path to our JNI library
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        reinplace "s|@PREFIX@|${prefix}|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            scripts/update_api.py
</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;'>+    post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ln -s "com.microsoft.z3.jar" "${destroot}${prefix}/share/java/${name}/z3.jar"
</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;'>+    build.target            src/api/java/all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot.cmd            ${build.cmd}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    destroot.target         src/api/java/install
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/z3/files/java_libpath.diff b/math/z3/files/java_libpath.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..a1728be
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/z3/files/java_libpath.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,12 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- scripts/update_api.py.orig     2019-08-20 22:29:56.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ scripts/update_api.py  2019-08-20 22:30:44.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -519,8 +519,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     java_native.write('  public static native void setInternalErrorHandler(long ctx);\n\n')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     java_native.write('  static {\n')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    java_native.write('    try { System.loadLibrary("z3java"); }\n')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    java_native.write('    catch (UnsatisfiedLinkError ex) { System.loadLibrary("libz3java"); }\n')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    java_native.write('    System.load("@PREFIX@/lib/z3/libz3java.dylib");\n')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     java_native.write('  }\n')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     java_native.write('\n')
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/math/z3/files/libz3-static.diff b/math/z3/files/libz3-static.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..504b09e
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/math/z3/files/libz3-static.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,47 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/CMakeLists.txt.orig        2019-08-20 17:53:35.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/CMakeLists.txt     2019-08-20 18:01:51.000000000 -0600
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -111,6 +111,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   set(lib_type "STATIC")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ add_library(libz3 ${lib_type} ${object_files})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++add_library(libz3-static STATIC ${object_files})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set_target_properties(libz3 PROPERTIES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   # VERSION determines the version in the filename of the shared library.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   # SOVERSION determines the value of the DT_SONAME field on ELF platforms.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -122,6 +123,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   VERSION ${Z3_VERSION}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   SOVERSION ${Z3_VERSION_MAJOR}.${Z3_VERSION_MINOR})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set_target_properties(libz3-static PROPERTIES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  VERSION ${Z3_VERSION}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  SOVERSION ${Z3_VERSION_MAJOR}.${Z3_VERSION_MINOR})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++set_target_properties(libz3-static PROPERTIES OUTPUT_NAME z3)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if (NOT MSVC)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   # On UNIX like platforms if we don't change the OUTPUT_NAME
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   # the library gets a name like ``liblibz3.so`` so we change it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -136,6 +142,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # shared library the dependent libraries are specified on the link command line
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # so that if those are also shared libraries they are referenced by `libz3.so`.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ target_link_libraries(libz3 PRIVATE ${Z3_DEPENDENT_LIBS})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++target_link_libraries(libz3-static PRIVATE ${Z3_DEPENDENT_LIBS})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # This is currently only for the OpenMP flags. It needs to be set
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # via `target_link_libraries()` rather than `z3_append_linker_flag_list_to_target()`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -143,6 +150,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # the link dependencies need to be exported too.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ foreach (flag_name ${Z3_DEPENDENT_EXTRA_CXX_LINK_FLAGS})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   target_link_libraries(libz3 PRIVATE ${flag_name})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  target_link_libraries(libz3-static PRIVATE ${flag_name})
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endforeach()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Declare which header file are the public header files of libz3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -169,7 +177,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set_property(TARGET libz3 APPEND PROPERTY
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     PUBLIC_HEADER "${CMAKE_CURRENT_BINARY_DIR}/util/z3_version.h")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-install(TARGETS libz3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++install(TARGETS libz3 libz3-static
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   EXPORT Z3_EXPORTED_TARGETS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" # On Windows this installs ``libz3.lib`` which CMake calls the "corresponding import library". Do we want this installed?
</span></pre><pre style='margin:0'>

</pre>