# -*- 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             openjdk23-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-23-lts&os=macos&package=jdk#zulu
version      23.32.11
revision     0

set openjdk_version 23.0.2

description  Azul Zulu Community OpenJDK 23 (Short Term Support until March 2025)
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  6c161020c6210f5b17638737b8855ca1e143b3e3 \
                 sha256  1dad9af7867e400737ebbbe81043171a8f0bc3ddaf72fbeef6295b3d1dbe728c \
                 size    215334133
} elseif {${configure.build_arch} eq "arm64"} {
    distname     zulu${version}-ca-jdk${openjdk_version}-macosx_aarch64
    checksums    rmd160  f46499a99003ef9025fe4bf0a022ee41e8fcca58 \
                 sha256  e8bcdcd5dd0bad0b2a3a71c83d500a8be8d12cff691198b273f14d247b635113 \
                 size    213014826
}

worksrcdir   ${distname}/zulu-23.jdk

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

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