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.
This commit is contained in:
1 parent
5152e6e0a6
commit
2d6b2a3cd1
37 files changed
+1284
-451
No files matched your search
@@ -0,0 +1,49 @@
|
||||
# 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
|
||||
|
||||
```powershell
|
||||
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
|
||||
|
||||
```powershell
|
||||
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.
|
||||
Reference in new issue
Block a user