5 JAVA_HOME=/opt/jdk-foreign/jvm/openjdk-19-internal
6 JAVAC=$(JAVA_HOME)/bin/javac
7 JAVA=$(JAVA_HOME)/bin/java
9 JAVACFLAGS=--add-modules jdk.incubator.foreign
11 api_SOURCES := $(wildcard ../src/api/*.java)
12 ffmpeg_SOURCES := $(wildcard src/proto/ffmpeg/*.java)
13 ffmpeg_demo_SOURCES := $(wildcard src/ffmpeg/test/*.java)
20 bin/ffmpeg.built: bin/ffmpeg.gen $(ffmpeg_SOURCES)
21 $(JAVAC) $(JAVACFLAGS) -cp bin/classes -d bin/classes \
22 $(shell find bin/java -name '*.java') \
26 bin/ffmpeg.gen: bin/ffmpeg.pm bin/ffmpeg-defines.pm ../src/generate-native $(api_SOURCES)
27 ../src/generate-native -d bin/java -t proto.ffmpeg -a ./bin/ffmpeg.pm -a ./bin/ffmpeg-defines.pm ffmpeg.api
30 bin/ffmpeg-defines.pm: ffmpeg.h ../src/export-defines ffmpeg.api
31 ../src/export-defines -d bin/ffmpeg-defines.c ffmpeg.api
32 $(HOST_CC) -o bin/ffmpeg-defines -I. bin/ffmpeg-defines.c
33 bin/ffmpeg-defines $@~
36 bin/ffmpeg.pm: ffmpeg.h ../src/export.so
37 gcc -fplugin=../src/export.so -fplugin-arg-export-output=$@~ ./$< -o /dev/null
40 bin/demo.built: $(ffmpeg_demo_SOURCES) bin/ffmpeg.built
41 $(JAVAC) $(JAVACFLAGS) -cp bin/classes -d bin/classes $(ffmpeg_demo_SOURCES)
45 $(JAVA) --enable-native-access=ALL-UNNAMED --add-modules jdk.incubator.foreign \
47 ffmpeg.test.TestFFMPEG
50 rm -rf bin 000[0-9].pnm
52 .PHONY: demo clean all