DOCUMENTS = delivery1 delivery2

JAVA_PROJECTMODULES = \
 com.example.portfolio2 com.example.portfolio3 dk.biks.bachelorizer
JAVA_MODULEPATHS_portfolio2 = \
 /usr/share/openjfx/lib /usr/share/java/sqlite-jdbc.jar
JAVA_MODULES_portfolio2 = $(addprefix javafx.,base controls graphics)
JAVA_ROOT_portfolio2 = src/com.example.portfolio2
JAVA_MAINCLASSES_portfolio2 = Main
JAVA_EXTRACLASSES_portfolio2 = Controller Database GUI MyDB UI Window
JAVA_ROOT_portfolio3 = src/com.example.portfolio3
JAVA_EXTRACLASSES_portfolio3 = AbstractGraph AdjListGraph AdjMapGraph \
 Edge EdgeGraph GraphAlgorithms Graph Graphs MatrixGraph Vertex
JAVA_MODULEPATHS_bachelorizer = /usr/share/openjfx/lib
JAVA_ROOT_bachelorizer = src/dk.biks.bachelorizer
JAVA_MAINCLASSES_bachelorizer = Main Graph Window
JAVA_EXTRACLASSES_bachelorizer = Control GUI Person
JAVA_MODULES_bachelorizer = $(addprefix javafx.,base controls graphics)

ZIPNAME = bachelorizer
ZIPFILES += $(STEMS:=.java)

include _make/*.mk

# silence security restriction warning
JAVAFLAGS += --enable-native-access=javafx.graphics
JAVAFLAGS_portfolio2 += --enable-native-access=javafx.graphics \
 --enable-native-access=sqlite.jdbc

# silence unsafe memory-access methods warning on recent JDKs
# @see <https://stackoverflow.com/a/79526038/18619283>
ifeq ($(shell expr $(JAVA_MAJOR_VERSION) \>= 23), 1)
JAVAFLAGS += --sun-misc-unsafe-memory-access=allow
endif

# loading as modules works with JDK 22+, and is required with JDK 23+
ifeq ($(shell expr $(JAVA_MAJOR_VERSION) \>= 22), 1)
JAVA_MODULEPATHS_bachelorizer += mods/com.example.portfolio3
else
JAVA_CLASSPATHS_bachelorizer += mods/com.example.portfolio3
endif

# TODO: fix properly declare and resolve local interdependencies
runsrc-dk.biks.bachelorizer build-dk.biks.bachelorizer: \
 build-com.example.portfolio3