Files
OpenPrestige/scripts/imgui-core/README.md
T
bbldrizzy 2d6b2a3cd1 Build offline OpenPrestige release bundles
Rename the injector and package it with an embedded payload for Windows, Linux, and macOS x64/ARM64. Add a core-only ImGui native build, multi-platform CI and release packaging, and shared per-user storage with legacy config migration.
2026-11-03 18:45:13 +00:00

2.7 KiB

Core ImGui JNI build

OpenPrestige uses core ImGui with its Java OpenGL backend. This build keeps all core and internal JNI methods from imgui-java 1.92.7.1, and removes the native extension implementations for ImPlot, ImNodes, ImGuizmo, imgui-node-editor, text editor, file dialog, knobs, and memory editor. Demo windows are disabled. Core callbacks, font rendering, tables, docking, and draw lists remain available.

The source revisions and generator dependencies are pinned in ../build_imgui_core.py. The build consumes upstream generated Java without modifying it. A portability step replaces GNU variable-length arrays in the generated C++ with standard C++ vectors for MSVC.

Windows x64

Set JAVA_HOME to JDK 21 and install Visual Studio C++ tools and CMake. From the repository root run

python scripts/build_imgui_core.py --output build/core-natives/windows-x86_64 --architecture x64

The output contains imgui-java64.dll and the upstream licenses. Gradle picks up build/core-natives, embeds it under prestige-natives, and omits the corresponding upstream native. The Java extension wrappers are omitted from the shaded payload.

Use a distinct --build-dir for each target. ARM64 cross builds use the toolchain files in toolchains, which require LLVM-MinGW on Windows targets and an aarch64 Linux cross compiler on Linux targets. The macOS toolchain produces a universal library. CI builds all five variants.

Full release build on Windows

build-release.bat calls python scripts/build_release_imgui.py before Gradle builds the JAR. The helper fetches the pinned sources and generator dependencies, installs CMake, Ninja and Zig when needed, and builds Windows and Linux x64/ARM64 plus both macOS slices. It combines the macOS slices into a universal library. Downloads are cached in build/imgui-core-cache, and compilation is incremental under build/imgui-core-release.

The complete release still requires JDK 21, Rust, and the MSVC x64/ARM64 build tools used by the Rust Windows targets. Python's package installer needs network access on the first run.

To diagnose one cross build, use python scripts/build_release_imgui.py --platform windows-aarch64. Running the helper without arguments builds the entire ImGui release set.

JNI verification

java -Dimgui.library.path=build/core-natives/windows-x86_64 -cp build/imgui-core/deps/imgui-java-binding-1.92.7.1.jar scripts/imgui-core/SmokeTest.java src/main/resources/prestige_ui/fonts/DMSans-Regular.ttf

This initializes JNI, builds the real UI font atlas, and generates geometry from widgets and draw lists. A Minecraft smoke test should additionally exercise the ClickGUI and OpenGL backend.