# -*- 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 21 name openjdk${feature} # See https://openjdk-sources.osci.io/openjdk21/ for the version and build number that matches the latest '-ga' version version ${feature}.0.5 set build 11 revision 0 categories java devel supported_archs x86_64 arm64 license GPL-2+ maintainers {breun.nl:nils @breun} openmaintainer # Builds on macOS 10.12.0+ # Mapping to Darwin version: https://trac.macports.org/wiki/PortfileRecipes#compare-osx-darwin-version platforms { darwin >= 16 } description OpenJDK ${feature} (Long Term Support) long_description JDK ${feature} builds of OpenJDK, the Open-Source implementation \ of the Java Platform, Standard Edition, and related projects. homepage https://openjdk.org/projects/jdk/${feature}/ master_sites https://openjdk-sources.osci.io/openjdk${feature}/ distname openjdk-${version}-ga use_xz yes worksrcdir jdk-${version}+${build} checksums rmd160 3005b3b3dbd1c1fed06af9f9b60e03a53923fcaf \ sha256 8a5d8be31d83edead93b02c7495960f969ddea38b59426a8d7b45aaadd82a960 \ size 69823212 set bootjdk_port openjdk21-zulu depends_lib port:freetype \ port:libiconv depends_build port:${bootjdk_port} \ port:autoconf \ port:gmake \ port:bash # Boot JDK license/redistributability should not affect license/redistributability of this port license_noconflict ${bootjdk_port} pre-patch { reinplace "s|libffi.so.?|libffi.?.dylib|g" ${worksrcpath}/make/autoconf/lib-ffi.m4 reinplace "s|xmacosx|xwindows|g" ${worksrcpath}/make/autoconf/lib-freetype.m4 } # Temporary workaround for clang 16: https://trac.macports.org/ticket/70819 # Temporary workaround for undeclared enum in < 11.00: https://trac.macports.org/ticket/71049 patchfiles JDK-8340341-clang-16-workaround.patch \ JDK-8342071-undecl-ident-nsbun-arm64-workaround.patch set tpath ${prefix}/Library/Java use_xcode yes use_configure yes configure.cmd ${prefix}/bin/bash configure configure.pre_args --prefix=${tpath} set bug_url "https://trac.macports.org/newticket?port=${name}" # default configure args configure.args --with-debug-level=release \ --with-native-debug-symbols=none \ --with-version-string=${version}+${build} \ --with-sysroot=`xcrun --sdk macosx --show-sdk-path` \ --with-extra-cflags="${configure.cflags}" \ --with-extra-cxxflags="${configure.cxxflags}" \ --with-extra-ldflags="${configure.ldflags}" \ --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk-21-azul-zulu.jdk/Contents/Home \ --with-freetype=system \ --with-freetype-include=${prefix}/include/freetype2 \ --with-freetype-lib=${prefix}/lib \ --disable-warnings-as-errors \ --disable-precompiled-headers \ --with-vendor-name="MacPorts" \ --with-vendor-url="https://www.macports.org" \ --with-vendor-bug-url="${bug_url}" \ --with-vendor-vm-bug-url="${bug_url}" \ --with-conf-name=release if {[option configure.ccache]} { # replace MacPorts ccache integration into JDK configure.ccache no depends_build-append path:bin/ccache:ccache configure.args-append --enable-ccache \ --with-ccache-dir=${ccache_dir} } variant release \ conflicts debug optimized \ description {OpenJDK with no debug information, all optimizations and no asserts} { configure.args-append --with-debug-level=release } variant optimized \ conflicts debug release \ description {OpenJDK with no debug information, all optimizations, no asserts and HotSpot is 'optimized'} { configure.args-append --with-debug-level=optimized } variant debug \ conflicts optimized release \ description {OpenJDK with debug information, all optimizations and all asserts} { configure.args-append --with-debug-level=fastdebug configure.args-delete --with-native-debug-symbols=none } variant client \ conflicts core minimal server zero \ description {JVM with normal interpreter, C1 and no C2 compiler} { configure.args-append --with-jvm-variants=client } variant server \ conflicts client core minimal zero \ description {JVM with normal interpreter, and a tiered C1/C2 compiler} { configure.args-append --with-jvm-variants=server } variant minimal \ conflicts client core server zero \ description {JVM with reduced form of normal interpreter having C1, no C2 compiler and optional features stripped out} { configure.args-append --with-jvm-variants=minimal } variant core \ conflicts client minimal server zero \ description {JVM with normal interpreter only and no compiler} { configure.args-append --with-jvm-variants=core } variant zero \ conflicts client core minimal server \ description {JVM with C++ based interpreter only, no compiler} { configure.args-append --with-jvm-variants=zero \ --with-libffi=${prefix} \ --enable-libffi-bundling depends_lib-append port:libffi } if {![variant_isset debug] && ![variant_isset optimized] && ![variant_isset release]} { default_variants-append +release } if {![variant_isset client] && ![variant_isset core] && ![variant_isset minimal] && ![variant_isset server]} { default_variants-append +server } build.type gnu build.target images use_parallel_build no set jdkn jdk-${version}.jdk set bundle_dir build/release/images/jdk-bundle/${jdkn}/Contents test.run yes test.cmd ${bundle_dir}/Home/bin/java test.target --version set jvms /Library/Java/JavaVirtualMachines set jdk ${jvms}/jdk-${feature}-macports.jdk destroot { xinstall -m 755 -d ${destroot}${prefix}${jdk} copy ${worksrcpath}/${bundle_dir} ${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} } # macOS Java tools expect to find Java virtual machines under /Library/Java/JavaVirtualMachines, which is not under ${prefix}. destroot.violate_mtree yes post-destroot { delete ${worksrcpath} } notes " If you want to make ${name} the default JDK, add this to shell profile: export JAVA_HOME=${jdk}/Contents/Home " livecheck.type regex livecheck.url ${master_sites} livecheck.regex openjdk-(${feature}\.\[0-9.\]+)-ga