Skip to content

Commit 45bf102

Browse files
committed
chore: jextract support
1 parent 1a38e28 commit 45bf102

File tree

8 files changed

+313
-0
lines changed

8 files changed

+313
-0
lines changed

.github/workflows/jextract.yml

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
name: jextract
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ main ]
8+
workflow_dispatch:
9+
10+
defaults:
11+
run:
12+
shell: bash
13+
14+
jobs:
15+
jextract:
16+
name: OpenJDK (${{ matrix.os }})
17+
runs-on: ${{ matrix.os }}
18+
strategy:
19+
matrix:
20+
os: [ macos-latest, windows-latest, ubuntu-latest, macos-13 ]
21+
include:
22+
- os: ubuntu-latest
23+
script: linux.sh
24+
- os: macos-latest
25+
script: macos.sh
26+
- os: macos-13
27+
script: macos.sh
28+
- os: windows-latest
29+
script: windows.sh
30+
31+
steps:
32+
- name: 🛎️ Check out the source code
33+
uses: actions/checkout@v4
34+
35+
- name: ⚙ Set OS, Arch and Package
36+
run: jextract/gen/script/set-package.sh
37+
38+
- name: ☕ Install jextract latest build
39+
id: setup-jextract
40+
uses: oracle-actions/setup-java@main
41+
with:
42+
website: jdk.java.net
43+
release: 'jextract'
44+
version: latest
45+
install: true
46+
47+
- name: ☕ Install OpenJDK EA latest build
48+
id: setup-java
49+
uses: oracle-actions/setup-java@main
50+
with:
51+
website: jdk.java.net
52+
release: 'ea'
53+
version: latest
54+
install: true
55+
56+
57+
- name: 🏃Run jextract on ${{ matrix.os }}
58+
run: |
59+
java -version
60+
jextract --version
61+
jextract/gen/script/${{ matrix.script }}
62+
63+
- name: 📤 Uploading generated sources
64+
uses: actions/upload-artifact@v4
65+
with:
66+
name: jextract-${{ matrix.os }}
67+
path: jextract/src
68+
69+
merge:
70+
name: 🔀 Merge branches
71+
runs-on: ubuntu-latest
72+
needs: jextract
73+
steps:
74+
- name: 🛎️ Check out the source code
75+
uses: actions/checkout@v4
76+
77+
- name: 🧹 Clean up jextract src
78+
run: rm -rf jextract/src || true
79+
80+
- name: 📥 Download source artifacts
81+
uses: actions/download-artifact@v4
82+
with:
83+
path: jextract/src
84+
85+
- name: 📋 Copy the generated source
86+
run: |
87+
find jextract/src -mindepth 1 -maxdepth 1 -type d -exec sh -c 'cp -R "$0"/* jextract/src && rm -rf "$0"' {} \;
88+
find jextract -type f
89+
90+
- name: 📌 Checkin the generated source
91+
uses: stefanzweifel/git-auto-commit-action@v5
92+
with:
93+
commit_message: "Generated source using jextract"

meta/scripts/jextract/c/ioctl.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#include <sys/ioctl.h>
2+
#include <stdio.h>
3+
#include <unistd.h>
4+
#include <errno.h>
5+
#include <termios.h>

meta/scripts/jextract/c/windows.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include <windows.h>

meta/scripts/jextract/gen/linux.sh

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
jextract \
2+
--output jextract/src/main/java \
3+
--target-package "${PACKAGE_NAME}" \
4+
--include-struct termios \
5+
--include-function ioctl \
6+
--include-function tcgetattr \
7+
--include-function tcsetattr \
8+
--include-constant EBADF \
9+
--include-constant EFAULT \
10+
--include-constant EINVAL \
11+
--include-constant ENOTTY \
12+
--include-constant VINTR \
13+
--include-constant VQUIT \
14+
--include-constant VERASE \
15+
--include-constant VEOF \
16+
--include-constant VEOL \
17+
--include-constant VEOL2 \
18+
--include-constant VSTART \
19+
--include-constant VSTOP \
20+
--include-constant VSUSP \
21+
--include-constant VWERASE \
22+
--include-constant VREPRINT \
23+
--include-constant VLNEXT \
24+
--include-constant VDISCARD \
25+
--include-constant IGNPAR \
26+
--include-constant PARMRK \
27+
--include-constant INPCK \
28+
--include-constant ISTRIP \
29+
--include-constant INLCR \
30+
--include-constant IGNCR \
31+
--include-constant ICRNL \
32+
--include-constant IXON \
33+
--include-constant IXANY \
34+
--include-constant IXOFF \
35+
--include-constant IMAXBEL \
36+
--include-constant OPOST \
37+
--include-constant ONLCR \
38+
--include-constant OCRNL \
39+
--include-constant ONOCR \
40+
--include-constant ONLRET \
41+
--include-constant CS7 \
42+
--include-constant CS8 \
43+
--include-constant PARENB \
44+
--include-constant PARODD \
45+
--include-constant ISIG \
46+
--include-constant ICANON \
47+
--include-constant ECHO \
48+
--include-constant ECHOE \
49+
--include-constant ECHOK \
50+
--include-constant ECHONL \
51+
--include-constant NOFLSH \
52+
--include-constant TOSTOP \
53+
--include-constant IEXTEN \
54+
--include-constant ECHOCTL \
55+
--include-constant ECHOKE \
56+
--include-constant PENDIN \
57+
--include-constant TCGETS \
58+
--include-constant TCSETS \
59+
--include-constant IGNBRK \
60+
--include-constant BRKINT \
61+
--include-constant PARMRK \
62+
--include-constant ISTRIP \
63+
--include-constant INLCR \
64+
--include-constant IGNCR \
65+
--include-constant ICRNL \
66+
--include-constant IXON \
67+
--include-constant OPOST \
68+
--include-constant ECHO \
69+
--include-constant ECHONL \
70+
--include-constant ICANON \
71+
--include-constant ISIG \
72+
--include-constant IEXTEN \
73+
--include-constant CSIZE \
74+
--include-constant PARENB \
75+
--include-constant CS8 \
76+
--include-constant VMIN \
77+
--include-constant VTIME \
78+
--include-constant TCGETS \
79+
--include-constant TCSETS \
80+
jextract/gen/c/ioctl.h

meta/scripts/jextract/gen/macos.sh

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
jextract \
2+
--output jextract/src/main/java \
3+
--target-package "${PACKAGE_NAME}" \
4+
--include-struct termios \
5+
--include-function ioctl \
6+
--include-function tcgetattr \
7+
--include-function tcsetattr \
8+
--include-constant EBADF \
9+
--include-constant EFAULT \
10+
--include-constant EINVAL \
11+
--include-constant ENOTTY \
12+
--include-constant VINTR \
13+
--include-constant VQUIT \
14+
--include-constant VERASE \
15+
--include-constant VEOF \
16+
--include-constant VEOL \
17+
--include-constant VEOL2 \
18+
--include-constant VSTART \
19+
--include-constant VSTOP \
20+
--include-constant VSUSP \
21+
--include-constant VWERASE \
22+
--include-constant VREPRINT \
23+
--include-constant VLNEXT \
24+
--include-constant VDISCARD \
25+
--include-constant IGNPAR \
26+
--include-constant PARMRK \
27+
--include-constant INPCK \
28+
--include-constant ISTRIP \
29+
--include-constant INLCR \
30+
--include-constant IGNCR \
31+
--include-constant ICRNL \
32+
--include-constant IXON \
33+
--include-constant IXANY \
34+
--include-constant IXOFF \
35+
--include-constant IMAXBEL \
36+
--include-constant OPOST \
37+
--include-constant ONLCR \
38+
--include-constant OCRNL \
39+
--include-constant ONOCR \
40+
--include-constant ONLRET \
41+
--include-constant CS7 \
42+
--include-constant CS8 \
43+
--include-constant PARENB \
44+
--include-constant PARODD \
45+
--include-constant ISIG \
46+
--include-constant ICANON \
47+
--include-constant ECHO \
48+
--include-constant ECHOE \
49+
--include-constant ECHOK \
50+
--include-constant ECHONL \
51+
--include-constant NOFLSH \
52+
--include-constant TOSTOP \
53+
--include-constant IEXTEN \
54+
--include-constant ECHOCTL \
55+
--include-constant ECHOKE \
56+
--include-constant PENDIN \
57+
--include-constant TIOCGETA \
58+
--include-constant TIOCSETA \
59+
--include-constant TCGETS \
60+
--include-constant TCSETS \
61+
--include-constant IGNBRK \
62+
--include-constant BRKINT \
63+
--include-constant PARMRK \
64+
--include-constant ISTRIP \
65+
--include-constant INLCR \
66+
--include-constant IGNCR \
67+
--include-constant ICRNL \
68+
--include-constant IXON \
69+
--include-constant OPOST \
70+
--include-constant ECHO \
71+
--include-constant ECHONL \
72+
--include-constant ICANON \
73+
--include-constant ISIG \
74+
--include-constant IEXTEN \
75+
--include-constant CSIZE \
76+
--include-constant PARENB \
77+
--include-constant CS8 \
78+
--include-constant VMIN \
79+
--include-constant VTIME \
80+
jextract/gen/c/ioctl.h
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
# Find OS type
6+
case "$OSTYPE" in
7+
darwin*)
8+
os=macos
9+
;;
10+
msys*)
11+
os=windows
12+
;;
13+
linux*)
14+
os=linux
15+
;;
16+
*)
17+
echo "Unsupported OS: $OSTYPE"
18+
exit 1
19+
;;
20+
esac
21+
22+
# Find CPU architecture
23+
case "$(uname -m)" in
24+
amd64 | x86_64)
25+
arch=x64
26+
;;
27+
aarch64 | arm64)
28+
arch=aarch64
29+
;;
30+
*)
31+
echo "Unsupported arch: $(uname -m)"
32+
exit 1
33+
;;
34+
esac
35+
36+
PACKAGE_NAME="dev.suresh.${os}.${arch}"
37+
echo "PACKAGE_NAME=${PACKAGE_NAME}" >> $GITHUB_ENV
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
jextract \
2+
--output jextract/src/main/java \
3+
--target-package "${PACKAGE_NAME}" \
4+
--include-function GetConsoleMode \
5+
--include-function SetConsoleMode \
6+
--include-constant ENABLE_ECHO_INPUT \
7+
--include-constant ENABLE_PROCESSED_INPUT \
8+
--include-constant ENABLE_LINE_INPUT \
9+
--include-constant ENABLE_PROCESSED_OUTPUT \
10+
--include-typedef HANDLE \
11+
--include-function GetConsoleScreenBufferInfo \
12+
--include-function GetCurrentProcess \
13+
--include-function DuplicateHandle \
14+
--include-constant DUPLICATE_SAME_ACCESS \
15+
--include-function GetStdHandle \
16+
--include-constant STD_OUTPUT_HANDLE \
17+
jextract/gen/c/windows.h
File renamed without changes.

0 commit comments

Comments
 (0)