aboutsummaryrefslogtreecommitdiff
path: root/_make/java.mk
diff options
context:
space:
mode:
Diffstat (limited to '_make/java.mk')
-rw-r--r--_make/java.mk34
1 files changed, 34 insertions, 0 deletions
diff --git a/_make/java.mk b/_make/java.mk
new file mode 100644
index 0000000..8a476b7
--- /dev/null
+++ b/_make/java.mk
@@ -0,0 +1,34 @@
+# GNUMake snippet for java compilation and execution
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+# SPDX-FileCopyrightText: 2024 Jonas Smedegaard <dr@jones.dk>
+
+STEMS = $(PROJECT) $(foreach f,$(PROJECT_FLAVORS),$(PROJECT)$f) $(EXTRASTEMS)
+CLASSES = $(foreach s,$(STEMS),$(addsuffix .class,$s))
+
+# account for one annoyingly popular class of non-POSIX system
+PATH_SEPARATOR := $(if $(filter Windows%,$($(shell uname))),;,:)
+
+CLASSPATH_FLAGS = --class-path $(subst $() ,$(PATH_SEPARATOR),$(CLASSPATHS))
+
+# defaults overridable at make invocation
+JAVAC ?= javac
+JAVA ?= java
+JAVACFLAGS ?= $(CLASSPATH_FLAGS) -g -Xlint -Xdoclint
+JAVAFLAGS ?= $(CLASSPATH_FLAGS)
+
+all:: run-$(PROJECT)
+
+clean::
+ rm -f $(CLASSES)
+
+$(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))
+
+%.class: %.java
+ $(JAVAC) $(JAVACFLAGS) $<
+
+.PHONY: all clean $(STEMS:%=run-%)