diff --git a/java/Makefile b/java/Makefile index da8b8482dcfa..c906f0188037 100644 --- a/java/Makefile +++ b/java/Makefile @@ -1,98 +1,99 @@ COMMENT = Java language support SUBDIR += apache-bcel SUBDIR += apache-commons-beanutils SUBDIR += apache-commons-cli SUBDIR += apache-commons-codec SUBDIR += apache-commons-collections SUBDIR += apache-commons-collections4 SUBDIR += apache-commons-dbcp SUBDIR += apache-commons-httpclient SUBDIR += apache-commons-lang SUBDIR += apache-commons-lang3 SUBDIR += apache-commons-logging SUBDIR += apache-commons-pool SUBDIR += avis SUBDIR += berkeley-db SUBDIR += bluej SUBDIR += bootstrap-openjdk11 SUBDIR += bootstrap-openjdk17 SUBDIR += bootstrap-openjdk8 SUBDIR += bouncycastle SUBDIR += dbvis SUBDIR += eclipse SUBDIR += eclipse-EPIC SUBDIR += eclipse-cdt SUBDIR += eclipse-drjava SUBDIR += eclipse-ecj SUBDIR += eclipse-findbugs SUBDIR += eclipse-pydev SUBDIR += eclipse-shelled SUBDIR += eclipse-yaml-editor SUBDIR += hamcrest SUBDIR += icedtea-web SUBDIR += intellij SUBDIR += intellij-fsnotifier SUBDIR += intellij-pty4j SUBDIR += intellij-ultimate SUBDIR += jai SUBDIR += jakarta-oro SUBDIR += jasmin SUBDIR += jattach SUBDIR += java-cup SUBDIR += java-getopt SUBDIR += java-subversion SUBDIR += java-zoneinfo SUBDIR += java3d SUBDIR += javacpp SUBDIR += javahelp SUBDIR += javamail SUBDIR += javavmwrapper SUBDIR += jcalendar SUBDIR += jcckit SUBDIR += jcommon SUBDIR += jd-gui-duo SUBDIR += jdk11-doc SUBDIR += jdk8-doc + SUBDIR += jextract SUBDIR += jflex SUBDIR += jfreechart SUBDIR += jgraph SUBDIR += jgraphx SUBDIR += jikes SUBDIR += jlex SUBDIR += jlint SUBDIR += jmf SUBDIR += jode SUBDIR += jrosetta SUBDIR += jtiger SUBDIR += jump SUBDIR += junit SUBDIR += jxgrabkey SUBDIR += lightweight-java-profiler SUBDIR += linux-oracle-jdk18 SUBDIR += linux-oracle-jre18 SUBDIR += linux-oracle-serverjre10 SUBDIR += mmake SUBDIR += netbeans SUBDIR += netrexx SUBDIR += netty SUBDIR += openjdk11 SUBDIR += openjdk11-jre SUBDIR += openjdk17 SUBDIR += openjdk17-jre SUBDIR += openjdk21 SUBDIR += openjdk21-jre SUBDIR += openjdk25 SUBDIR += openjdk26 SUBDIR += openjdk8 SUBDIR += openjdk8-jre SUBDIR += openjfx14 SUBDIR += phpeclipse SUBDIR += proguard SUBDIR += sigar SUBDIR += trove4j SUBDIR += veditor SUBDIR += visualvm SUBDIR += wildfly .include diff --git a/java/jextract/Makefile b/java/jextract/Makefile new file mode 100644 index 000000000000..5159f7942f47 --- /dev/null +++ b/java/jextract/Makefile @@ -0,0 +1,43 @@ +PORTNAME= jextract +DISTVERSION= g20260826 +CATEGORIES= java devel + +MAINTAINER= igor@kolesnik.es +COMMENT= Generate Java bindings from native library headers +WWW= https://openjdk.org/projects/code-tools/ + +LICENSE= GPLv2 + +BUILD_DEPENDS= gradle:devel/gradle + +USES= java llvm:build,run + +USE_GITHUB= yes +GH_ACCOUNT= openjdk +GH_TAGNAME= 2aaa694aa6d241f4704f5ac69c1f8d898e7cfcc8 +JAVA_VERSION= 25+ + +NO_ARCH= yes +SUB_FILES= jextract +SUB_LIST= JAVA=${JAVA} LLVM_PREFIX=${LLVM_PREFIX} JAVAJARDIR=${JAVAJARDIR} + +_GRADLE_ENV= GRADLE_USER_HOME=${WRKDIR}/gradle-home \ + JAVA_VERSION=${JAVA_VERSION} +# JPMS module versions must start with a digit; strip the leading "g". +MODULE_VERSION= ${DISTVERSION:C/^g//} + +do-build: + cd ${WRKSRC} && \ + ${SETENV} ${_GRADLE_ENV} gradle --no-daemon \ + -Pjdk_home=${JAVA_HOME} \ + -Pllvm_home=${LLVM_PREFIX} \ + -Pversion=${MODULE_VERSION} \ + clean jar + +do-install: + ${MKDIR} ${STAGEDIR}${JAVAJARDIR} + ${INSTALL_SCRIPT} ${WRKDIR}/jextract ${STAGEDIR}${PREFIX}/bin + ${INSTALL_DATA} ${WRKSRC}/build/libs/org.openjdk.jextract-${MODULE_VERSION}.jar \ + ${STAGEDIR}${JAVAJARDIR}/org.openjdk.jextract.jar + +.include diff --git a/java/jextract/distinfo b/java/jextract/distinfo new file mode 100644 index 000000000000..816c07dd7ae0 --- /dev/null +++ b/java/jextract/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1788986768 +SHA256 (openjdk-jextract-g20260826-2aaa694aa6d241f4704f5ac69c1f8d898e7cfcc8_GH0.tar.gz) = 13a539e7b557a3615786be1ec357adfb35f53e60857fe51e0401b139026b2de9 +SIZE (openjdk-jextract-g20260826-2aaa694aa6d241f4704f5ac69c1f8d898e7cfcc8_GH0.tar.gz) = 299287 diff --git a/java/jextract/files/jextract.in b/java/jextract/files/jextract.in new file mode 100644 index 000000000000..4631d80eea6b --- /dev/null +++ b/java/jextract/files/jextract.in @@ -0,0 +1,6 @@ +#!/bin/sh +%%JAVA%% $JEXTRACT_JAVA_OPTIONS \ + -Djava.library.path=%%LLVM_PREFIX%%/lib \ + --module-path %%JAVAJARDIR%%/org.openjdk.jextract.jar \ + --enable-native-access=org.openjdk.jextract \ + -m org.openjdk.jextract/org.openjdk.jextract.JextractTool "$@" diff --git a/java/jextract/files/patch-build.gradle b/java/jextract/files/patch-build.gradle new file mode 100644 index 000000000000..76c31c360554 --- /dev/null +++ b/java/jextract/files/patch-build.gradle @@ -0,0 +1,10 @@ +--- build.gradle.orig 2026-09-09 20:52:51 UTC ++++ build.gradle +@@ -63,6 +63,7 @@ compileJava { + options.release = 23 + options.fork = true + options.forkOptions.executable = "${jdk_home}/bin/javac${os_exe_suffix}" ++ options.javaModuleVersion = project.version + } + + jar { diff --git a/java/jextract/pkg-descr b/java/jextract/pkg-descr new file mode 100644 index 000000000000..342fe337959f --- /dev/null +++ b/java/jextract/pkg-descr @@ -0,0 +1,4 @@ +jextract is a tool which mechanically generates Java bindings from +native library headers. This tools leverages the clang C API in order +to parse the headers associated with a given native library, and the +generated Java bindings build upon the Foreign Function & Memory API. diff --git a/java/jextract/pkg-plist b/java/jextract/pkg-plist new file mode 100644 index 000000000000..bab8f62904a3 --- /dev/null +++ b/java/jextract/pkg-plist @@ -0,0 +1,2 @@ +bin/jextract +%%JAVAJARDIR%%/org.openjdk.jextract.jar