# GNUMake snippet for java compilation and execution # # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2024-2025 Jonas Smedegaard 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))),;,:) 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-%)