diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 470a7277..40920bbf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -167,7 +167,7 @@ jobs: - name: 'Build Jextract' shell: sh run: | - sh ./gradlew -Pjdk22_home=${{ matrix.DEPS_ROOT }}/jdk-toolchain -Pllvm_home=${{ matrix.DEPS_ROOT }}/llvm/image clean verify + sh ./gradlew -Pjdk_home=${{ matrix.DEPS_ROOT }}/jdk-toolchain -Pllvm_home=${{ matrix.DEPS_ROOT }}/llvm/image clean verify - name: 'Get cached JTReg' uses: actions/cache@v4 @@ -180,4 +180,4 @@ jobs: - name: 'Run tests' shell: sh run: | - sh ./gradlew -Pjdk22_home=${{ matrix.DEPS_ROOT }}/jdk-toolchain -Pllvm_home=${{ matrix.DEPS_ROOT }}/llvm/image -Pjtreg_home=./deps/jtreg/build/images/jtreg jtreg + sh ./gradlew -Pjdk_home=${{ matrix.DEPS_ROOT }}/jdk-toolchain -Pllvm_home=${{ matrix.DEPS_ROOT }}/llvm/image -Pjtreg_home=./deps/jtreg/build/images/jtreg jtreg diff --git a/README.md b/README.md index f092a66c..47fbfaee 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Alternatively, to build jextract from the latest sources (which include all the ### Building -`jextract` depends on the [C libclang API](https://clang.llvm.org/doxygen/group__CINDEX.html). To build the jextract sources, the easiest option is to download LLVM binaries for your platform, which can be found [here](https://releases.llvm.org/download.html) (version 13.0.0 is recommended). Both the `jextract` tool and the bindings it generates depend heavily on the [Foreign Function & Memory API](https://openjdk.java.net/jeps/454), so a suitable [jdk 22 distribution](https://jdk.java.net/22/) is also required. +`jextract` depends on the [C libclang API](https://clang.llvm.org/doxygen/group__CINDEX.html). To build the jextract sources, the easiest option is to download LLVM binaries for your platform, which can be found [here](https://releases.llvm.org/download.html) (version 13.0.0 is recommended). Both the `jextract` tool and the bindings it generates depend heavily on the [Foreign Function & Memory API](https://openjdk.java.net/jeps/454). A suitable [JDK 23 or higher distribution](https://jdk.java.net/23/) is also required. > <details><summary><strong>Building older jextract versions</strong></summary> > @@ -33,7 +33,7 @@ We currently use gradle version 7.3.3 which is fetched automatically by the grad ```sh -$ sh ./gradlew -Pjdk22_home=<jdk22_home_dir> -Pllvm_home=<libclang_dir> clean verify +$ sh ./gradlew -Pjdk_home=<jdk_home_dir> -Pllvm_home=<libclang_dir> clean verify ``` @@ -63,7 +63,7 @@ Expected a header file The repository also contains a comprehensive set of tests, written using the [jtreg](https://openjdk.java.net/jtreg/) test framework, which can be run as follows (again, on Windows, `gradlew.bat` should be used instead): ```sh -$ sh ./gradlew -Pjdk22_home=<jdk22_home_dir> -Pllvm_home=<libclang_dir> -Pjtreg_home=<jtreg_home> jtreg +$ sh ./gradlew -Pjdk_home=<jdk_home_dir> -Pllvm_home=<libclang_dir> -Pjtreg_home=<jtreg_home> jtreg ``` Note: running `jtreg` task requires `cmake` to be available on the `PATH`. diff --git a/build.gradle b/build.gradle index 04abe575..9ce544a2 100644 --- a/build.gradle +++ b/build.gradle @@ -29,6 +29,7 @@ def static checkPath(String p) { } def llvm_home = project.property("llvm_home") +def jdk_home = project.property("jdk_home") checkPath(llvm_home) checkPath("${llvm_home}/lib/clang") def clang_versions = new File("${llvm_home}/lib/clang/").list(); @@ -39,7 +40,7 @@ if (clang_versions.length == 0) { def clang_version = clang_versions[0] def buildDir = layout.buildDirectory.get() -def jextract_version = "22" +def jextract_version = "23" def jmods_dir = "$buildDir/jmods" def jextract_jmod_file = "$jmods_dir/org.openjdk.jextract.jmod" def jextract_jmod_inputs = "$buildDir/jmod_inputs" @@ -59,9 +60,9 @@ repositories { } compileJava { - options.release = 22 + options.release = 23 options.fork = true - options.forkOptions.executable = "${jdk22_home}/bin/javac${os_exe_suffix}" + options.forkOptions.executable = "${jdk_home}/bin/javac${os_exe_suffix}" } jar { @@ -104,7 +105,7 @@ task createJextractJmod(type: Exec) { delete(jextract_jmod_file) } - executable = "${jdk22_home}/bin/jmod" + executable = "${jdk_home}/bin/jmod" args = [ "create", "--module-version=$jextract_version", @@ -131,7 +132,7 @@ task createJextractImage(type: Exec) { project.mkdir "${jextract_bin_dir}" } - executable = "${jdk22_home}/bin/jlink" + executable = "${jdk_home}/bin/jlink" args = [ "--module-path=$jmods_dir", "--add-modules=org.openjdk.jextract", @@ -183,9 +184,9 @@ task createRuntimeImageForTest(type: Exec) { delete(out_dir) } - executable = "${jdk22_home}/bin/jlink" + executable = "${jdk_home}/bin/jlink" args = [ - "--module-path=$jmods_dir" + File.pathSeparator + "$jdk22_home/jmods", + "--module-path=$jmods_dir" + File.pathSeparator + "$jdk_home/jmods", "--add-modules=ALL-MODULE-PATH", "--output=$out_dir", ] diff --git a/samples/python3/compilesource.sh b/samples/python3/compilesource.sh index f11a2b7c..78f5b539 100644 --- a/samples/python3/compilesource.sh +++ b/samples/python3/compilesource.sh @@ -3,6 +3,7 @@ if [[ -z "${ANACONDA3_HOME}" ]]; then fi jextract --output src \ + -D_Float16=short \ -l :${ANACONDA3_HOME}/lib/libpython3.11.dylib \ -I ${ANACONDA3_HOME}/include/python3.11 \ -t org.python \