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

name             openjdk22-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

supported_archs  x86_64 arm64

# https://www.azul.com/downloads/?version=java-22-lts&os=macos&package=jdk#zulu
version      22.32.15
revision     0

set openjdk_version 22.0.2

description  Azul Zulu Community OpenJDK 22 (Short 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  68c7efcc2c22b5080f17a63d2fc06f69f3250655 \
                 sha256  56e9bbeb7a04da3af97bba43ec11c9ba26e299952021303faa04765e4c50ab1b \
                 size    206628898
} elseif {${configure.build_arch} eq "arm64"} {
    distname     zulu${version}-ca-jdk${openjdk_version}-macosx_aarch64
    checksums    rmd160  e489b37326c8a3af6d08b98a5bbdee3704d52aaf \
                 sha256  e70f161f2d649cf24cdddc448daa39f3229cb73c509d8c231defef5960177b69 \
                 size    204347346
}

worksrcdir   ${distname}/zulu-22.jdk

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

livecheck.type      regex
livecheck.url       https://cdn.azul.com/zulu/bin/
livecheck.regex     zulu(22\.\[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}/jdk-22-azul-zulu.jdk

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
"