Updated for openjdk-19-internal
[panamaz] / test-api / Makefile
index ba83192..a458279 100644 (file)
@@ -1,22 +1,36 @@
 
 CFLAGS=-g -fPIC
 
-JAVA_HOME ?= /home/notzed/src/openjdk-panama-14
+JAVA_HOME?=/opt/jdk-foreign/jvm/openjdk-19-internal
 JAVAC=$(JAVA_HOME)/bin/javac
 JAVA=$(JAVA_HOME)/bin/java
 
-all: bin/libapi.so bin/api.classes bin/classes/api/test/TestAPI.class
+JAVACFLAGS=--add-modules jdk.incubator.foreign
 
-bin/classes/api/test/TestAPI.class: api/test/TestAPI.java bin/api.classes
-       $(JAVAC) -cp bin/classes -d bin/classes $<
+api_SOURCES := $(wildcard ../src/api/*.java)
+api_demo_SOURCES := $(wildcard src/api/test/*.java)
 
-bin/api.classes: bin/api.pm
-       ../src/generate -d bin/java -t api -c APILib -lapi -s api ./bin/api.pm
-       $(JAVAC) -d bin/classes bin/java/api/*.java
+all::
+       mkdir -p bin
+
+all:: bin/demo.built
+
+bin/api.built: bin/api.gen
+       $(JAVAC) $(JAVACFLAGS) -cp bin/classes -d bin/classes \
+               $(shell find bin/java -name '*.java')
+       touch $@
+
+bin/api.gen: bin/api.pm ../src/generate-native $(api_SOURCES)
+       ../src/generate-native -d bin/java -t proto.api ./bin/api.pm
        touch $@
 
-bin/api.pm: api.h
-       gcc -fplugin=../src/export.so -fplugin-arg-export-output=$@ ./$< -o /dev/null
+bin/api.pm: api.h ../src/export.so
+       gcc -fplugin=../src/export.so -fplugin-arg-export-output=$@~ ./$< -o /dev/null
+       mv $@~ $@
+
+bin/demo.built: $(api_demo_SOURCES) bin/api.built
+       $(JAVAC) $(JAVACFLAGS) -cp bin/classes -d bin/classes $(api_demo_SOURCES)
+       touch $@
 
 bin/api.o: api.c api.h
        $(CC) $(CFLAGS) -c -o $@ $<
@@ -24,12 +38,12 @@ bin/api.o: api.c api.h
 bin/libapi.so: bin/api.o
        $(CC) -o $@ -shared $^
 
-check: all
-       $(JAVA) -Djava.library.path=bin -cp bin/classes api.test.TestAPI
+demo: bin/demo.built bin/libapi.so
+       $(JAVA) --enable-native-access=ALL-UNNAMED --add-modules jdk.incubator.foreign \
+               -Djava.library.path=bin -cp bin/classes \
+               api.test.TestAPI
 
 clean:
        rm -rf bin
 
-.PHONY: check clean
-
-$(if $(filter clean,$(MAKECMDGOALS)),,$(shell mkdir -p bin))
+.PHONY: demo clean all