Fix[JNA]: use agent to replace class at runtime

Fixes duplicate module package on recent Forge versions.
This commit is contained in:
khanhduytran0 committed 2025-01-25 11:47:27 +07:00
1 parent 4a789ab98c
commit 6eb7ecdde3
5 files changed
+47 -2

No files matched your search

+12 -2
View File
@@ -1,13 +1,17 @@
# Prerequisite variables
SOURCEDIR := src
OUTPUTDIR := build
SOURCES := $(shell find $(SOURCEDIR) -type f -name '*.java')
CLASSES := $(SOURCES:$(SOURCEDIR)/%.java=$(OUTPUTDIR)/%.class)
TARGETS := $(shell find $(SOURCEDIR) -mindepth 1 -maxdepth 1 -type d)
TARGETS := $(TARGETS:$(SOURCEDIR)/%=$(OUTPUTDIR)/%.jar)
# Add all jars to classpath and allow compiling with private API
JCFLAGS := -cp "$(subst $() $(),:,$(wildcard $(SOURCEDIR)/*/):$(wildcard libs/*/*.jar))" -XDignore.symbol.file
all: $(OUTPUTDIR)/launcher.jar $(OUTPUTDIR)/lwjgl.jar
all: $(TARGETS)
# Rules for building java class
$(CLASSES): $(OUTPUTDIR)/%.class: $(SOURCEDIR)/%.java
@@ -22,7 +26,7 @@ $(CLASSES): $(OUTPUTDIR)/%.class: $(SOURCEDIR)/%.java
$(OUTPUTDIR)/launcher.jar: $(CLASSES)
@set -e
@echo "Creating $@"
$(BOOTJDK)/jar -cf $@ -C $(basename $@) .
@$(BOOTJDK)/jar -cf $@ -C $(basename $@) .
$(OUTPUTDIR)/lwjgl.jar: $(CLASSES)
@set -e
@@ -32,6 +36,12 @@ $(OUTPUTDIR)/lwjgl.jar: $(CLASSES)
@cp -R $(OUTPUTDIR)/lwjgl/* $(OUTPUTDIR)/lwjgl_lib/
@$(BOOTJDK)/jar -cf $@ -C $(OUTPUTDIR)/lwjgl_lib .
$(OUTPUTDIR)/patchjna_agent.jar: $(CLASSES)
@set -e
@mv $(basename $@)/com/sun/jna/Platform.class $(basename $@)/com/sun/jna/Platform.class.patch
@echo "Creating $@"
@$(BOOTJDK)/jar -cfm $@ $(SOURCEDIR)/patchjna_agent.txt -C $(basename $@) .
clean:
rm -rf $(OUTPUTDIR)