# -*- 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 11
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-11-lts&os=macos&package=jdk
supported_archs  x86_64 arm64

version      ${feature}.78.15
revision     0

set openjdk_version ${feature}.0.26

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  1a2dbe33bd5f5f43d541e6ec5aab7e86873d1c6f \
                 sha256  bb3884619c6f09ec5ca3ce43810c61ade647bb896f4120a6cf076ec993b5a1a0 \
                 size    195096639
} elseif {${configure.build_arch} eq "arm64"} {
    distname     zulu${version}-ca-jdk${openjdk_version}-macosx_aarch64
    checksums    rmd160  d5317f917c80169cec233e4cc31567ccc25d0bc8 \
                 sha256  3708badcc0c79fc1791e74b62478188a1f43c4f9a1e7d3e1bd4173da995479a3 \
                 size    193064136
}

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
"