aboutsummaryrefslogtreecommitdiff
path: root/_make/java.mk
blob: 8a476b75170b661bc2c36f8a9801e9af3c1c8c9e (plain)
  1. # GNUMake snippet for java compilation and execution
  2. #
  3. # SPDX-License-Identifier: GPL-3.0-or-later
  4. # SPDX-FileCopyrightText: 2024 Jonas Smedegaard <dr@jones.dk>
  5. STEMS = $(PROJECT) $(foreach f,$(PROJECT_FLAVORS),$(PROJECT)$f) $(EXTRASTEMS)
  6. CLASSES = $(foreach s,$(STEMS),$(addsuffix .class,$s))
  7. # account for one annoyingly popular class of non-POSIX system
  8. PATH_SEPARATOR := $(if $(filter Windows%,$($(shell uname))),;,:)
  9. CLASSPATH_FLAGS = --class-path $(subst $() ,$(PATH_SEPARATOR),$(CLASSPATHS))
  10. # defaults overridable at make invocation
  11. JAVAC ?= javac
  12. JAVA ?= java
  13. JAVACFLAGS ?= $(CLASSPATH_FLAGS) -g -Xlint -Xdoclint
  14. JAVAFLAGS ?= $(CLASSPATH_FLAGS)
  15. all:: run-$(PROJECT)
  16. clean::
  17. rm -f $(CLASSES)
  18. $(STEMS:%=check-%): check-%:
  19. checkstyle -c ./_checkstyle/checks.xml $*.java
  20. $(STEMS:%=run-%): run-%: %.class
  21. $(or $(RUNTIME_ENV_$*),$(RUNTIME_ENV)) $(JAVA) $(JAVAFLAGS) $* $(or $(RUNTIME_ARGS_$*),$(RUNTIME_ARGS))
  22. %.class: %.java
  23. $(JAVAC) $(JAVACFLAGS) $<
  24. .PHONY: all clean $(STEMS:%=run-%)