aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2025-03-30 13:11:28 +0200
committerJonas Smedegaard <dr@jones.dk>2025-03-30 13:11:28 +0200
commit9f837762cadbe763ea74d6c3690f99d02f55d923 (patch)
tree2aa2e3ae37385ef224648fb5aaa15b91f0fafe04
parentc7826b5b60be9ae6236c41b9ca5b028f2c343603 (diff)
extend to support MODULEPATHS and JAVAMODULES
-rw-r--r--_make/java.mk22
1 files changed, 17 insertions, 5 deletions
diff --git a/_make/java.mk b/_make/java.mk
index bd3ae04..9d80e01 100644
--- a/_make/java.mk
+++ b/_make/java.mk
@@ -2,20 +2,32 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2024-2025 Jonas Smedegaard <dr@jones.dk>
+#
+# Setup:
+# In main Makefile...
+# * set variable PROJECT
+# * set variables PROJECT_FLAVORS CLASSPATHS MODULEPATHS JAVAMODULES
+# if needed
+# * include this make snippet
STEMS = $(PROJECT) $(PROJECT_FLAVORS:%=$(PROJECT)%) $(EXTRASTEMS)
CLASSES = $(STEMS:=.class)
# account for one annoyingly popular class of non-POSIX system
-PATH_SEPARATOR := $(if $(filter Windows%,$($(shell uname))),;,:)
+_java_path_separator := $(if $(filter Windows%,$($(shell uname))),;,:)
+_java_module_separator = ,
-CLASSPATH_FLAGS = --class-path $(subst $() ,$(PATH_SEPARATOR),$(CLASSPATHS))
+_java_flag = $(if $2,--$1 $(subst $() ,$3,$(strip $2)))
+_java_common_flags = $(strip \
+ $(call _java_flag,class-path,$(CLASSPATHS),$(_java_path_separator)) \
+ $(call _java_flag,module-path,$(MODULEPATHS),$(_java_path_separator)) \
+ $(call _java_flag,add-modules,$(JAVAMODULES),$(_java_module_separator)))
# defaults overridable at make invocation
JAVAC ?= javac
JAVA ?= java
-JAVACFLAGS ?= $(CLASSPATH_FLAGS) -g -Xlint -Xdoclint
-JAVAFLAGS ?= $(CLASSPATH_FLAGS)
+JAVACFLAGS ?= $(strip $(_java_common_flags) -Xlint -Xdoclint)
+JAVAFLAGS ?= $(strip $(_java_common_flags))
all:: run-$(PROJECT)
@@ -26,7 +38,7 @@ $(STEMS:%=check-%): check-%:
checkstyle -c ./_checkstyle/checks.xml $*.java
$(STEMS:%=run-%): run-%: %.class
- $(or $(RUNTIME_ENV_$*),$(RUNTIME_ENV)) $(JAVA) $(JAVAFLAGS) $* $(or $(RUNTIME_ARGS_$*),$(RUNTIME_ARGS))
+ $(or $(RUNTIME_ENV_$*),$(RUNTIME_ENV)) $(JAVA) $(JAVAFLAGS) $*.java $(or $(RUNTIME_ARGS_$*),$(RUNTIME_ARGS))
%.class: %.java
$(JAVAC) $(JAVACFLAGS) $<