blob: 8a476b75170b661bc2c36f8a9801e9af3c1c8c9e (
plain)
- # 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-%)
|