# -*- 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

PortSystem       1.0

set feature 17
name             openjdk${feature}-zulu
categories       java devel
maintainers      {breun.nl:nils @breun} openmaintainer
platforms        {darwin any}
# This port uses prebuilt binaries; 'NoMirror' makes sure MacPorts doesn't mirror/distribute these third-party binaries
license          GPL-2 NoMirror
# This port uses prebuilt binaries for a particular architecture; they are not universal binaries
universal_variant no

# https://www.azul.com/downloads/?version=java-17-lts&os=macos&package=jdk
supported_archs  x86_64 arm64

version      ${feature}.56.15
revision     0

set openjdk_version ${feature}.0.14

description  Azul Zulu Community OpenJDK ${feature} (Long Term Support)
long_description AzulĀ® ZuluĀ® is a Java Development Kit (JDK), and a compliant implementation of the Java Standard Edition (SE)\
                 specification that contains all the Java components needed to build and run Java SE applications. Zulu has been\
                 verified by passing all tests of the OpenJDK Community Technology Compatibility Kit (TCK) as available for each\
                 respective Java SE version.

master_sites https://cdn.azul.com/zulu/bin/

if {${configure.build_arch} eq "x86_64"} {
    distname     zulu${version}-ca-jdk${openjdk_version}-macosx_x64
    checksums    rmd160  8b21cf7dda9d6d056f2527c5d7346d5fbab1843e \
                 sha256  ee1a55b6b63d62d1a24d420b1550ef1736fda36db0e612893d9d26eb1d7f1611 \
                 size    194233163
} elseif {${configure.build_arch} eq "arm64"} {
    distname     zulu${version}-ca-jdk${openjdk_version}-macosx_aarch64
    checksums    rmd160  89d8186b9af1df410a6eb55034403991df97aa22 \
                 sha256  c3b9bfb0a6dbe4c5d9efce6c46d3a89c92d7b07ba1bd0afc944612298ac284ec \
                 size    192183605
}

worksrcdir   ${distname}/zulu-${feature}.jdk

homepage     https://www.azul.com/downloads/

livecheck.type      regex
livecheck.url       https://cdn.azul.com/zulu/bin/
livecheck.regex     zulu(${feature}\.\[0-9\.\]+)-ca-jdk\[0-9\.\]+-macosx_.*\.tar\.gz

use_configure    no
build {}

variant Applets \
    description { Advertise the JVM capability "Applets".} {}

variant BundledApp \
    description { Advertise the JVM capability "BundledApp". This is required by some java-based app bundles to recognize and use the JVM.} {}

variant JNI \
    description { Advertise the JVM capability "JNI". This is required by some java-based app bundles to recognize and use the JVM.} {}

variant WebStart \
    description { Advertise the JVM capability "WebStart".} {}

patch {
    foreach var { Applets BundledApp JNI WebStart } {
        if {[variant_isset ${var}]} {
            reinplace -E "s|^(\[\[:space:\]\]*<string>)CommandLine(</string>)|\\1${var}\\2\\\n\\1CommandLine\\2|" ${worksrcpath}/Contents/Info.plist
        }
    }
}

test.run    yes
test.cmd    Contents/Home/bin/java
test.target
test.args   -version

# macOS Java tools expect to find Java virtual machines under /Library/Java/JavaVirtualMachines, which is not under ${prefix}.
destroot.violate_mtree yes

set jvms /Library/Java/JavaVirtualMachines
set jdk ${jvms}/${name}

destroot {
    xinstall -m 755 -d ${destroot}${prefix}${jdk}
    copy ${worksrcpath}/Contents ${destroot}${prefix}${jdk}

    # macOS Java tools expect to find Java virtual machines under /Library/Java/JavaVirtualMachines, so let's create a symlink there
    xinstall -m 755 -d ${destroot}${jvms}
    ln -s ${prefix}${jdk} ${destroot}${jdk}
}

notes "
If you have more than one JDK installed you can make ${name} the default\
by adding the following line to your shell profile:

    export JAVA_HOME=${jdk}/Contents/Home
"