From 461e70f76fde54965ff9f336fbd6966831a6ba46 Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Sun, 27 Apr 2025 15:16:20 +0200 Subject: extend make snippet for java to cover non-default main-function class --- _make/java.mk | 50 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 13 deletions(-) (limited to '_make') diff --git a/_make/java.mk b/_make/java.mk index 0362192..6fcd3ee 100644 --- a/_make/java.mk +++ b/_make/java.mk @@ -40,13 +40,18 @@ _java_common_flags = $(strip \ $(call _java_flag,class-path,JAVA_CLASSPATHS,path) \ $(call _java_flag,module-path,JAVA_MODULEPATHS,path) \ $(call _java_flag,add-modules,JAVA_MODULES,module)) -_java_projects_main = $(strip \ + +# projectmodules with default main function +_java_mainclassmodules = $(strip \ $(foreach p,$(JAVA_PROJECTMODULES),\ $(if $(call _java_projvar,JAVA_MAINCLASSES,$p),$p))) -_java_projects_extra = $(strip \ + +# projectmodules with non-default main function expanded, dot-appended +_java_extramainclassmodules = $(strip \ $(foreach p,$(JAVA_PROJECTMODULES),\ - $(foreach c,$($wordlist 1,9,$(call _java_projvar,JAVA_MAINCLASSES,$p),\ - $p:$c)))) + $(eval classes = $(call _java_projvar,JAVA_MAINCLASSES,$p))\ + $(foreach c,$(filter-out $(firstword $(classes)),$(classes)),\ + $p.$(subst /,.,$c)))) # TODO: formally define a builddir, and drop that on clean #clean:: @@ -78,28 +83,31 @@ $(JAVA_PROJECTMODULES:%=jar-%): jar-%: build-% $(call _java_projvar,JARFLAGS) \ -C mods/$* .) -$(addprefix runsrc-,$(_java_projects_main)): runsrc-%: +$(addprefix runsrc-,$(_java_mainclassmodules)): runsrc-%: $(strip \ $(call _java_projvar,JAVA_RUNTIME_ENV) \ $(JAVA) \ $(_java_common_flags) \ $(call _java_projvar,JAVAFLAGS) \ - $(patsubst %,$(_java_root)/$(subst .,/,$*)/%.java,\ - $(firstword $(call _java_projvar,JAVA_MAINCLASSES))) \ + $(patsubst %,$(_java_root)/%.java,\ + $(subst .,/,$(or \ + $(_java_main_class),\ + $*/$(firstword $(call _java_projvar,JAVA_MAINCLASSES))))) \ $(call _java_projvar,JAVA_RUNTIME_ARGS)) -$(addprefix runclass-,$(_java_projects_main)): runclass-%: build-% - $(eval JAVA_MODULEPATHS_$* = mods/$* $(call _java_projvar,JAVA_MODULEPATHS))\ +$(addprefix runclass-,$(_java_mainclassmodules)): runclass-%: build-% $(strip \ + $(eval JAVA_MODULEPATHS_$* = mods/$* $(call _java_projvar,JAVA_MODULEPATHS))\ $(call _java_projvar,JAVA_RUNTIME_ENV) \ $(JAVA) \ --module-path mods/$* \ $(_java_common_flags) \ $(call _java_projvar,JAVAFLAGS) \ - -m $*/$*.$(firstword $(call _java_projvar,JAVA_MAINCLASSES)) \ + -m $*/$(or $(_java_main_class),\ + $*.$(firstword $(call _java_projvar,JAVA_MAINCLASSES))) \ $(call _java_projvar,JAVA_RUNTIME_ARGS)) -$(addprefix runjar-,$(_java_projects_main)): runjar-%: jar-% +$(addprefix runjar-,$(_java_mainclassmodules)): runjar-%: jar-% $(strip \ $(call _java_projvar,JAVA_RUNTIME_ENV) \ $(JAVA) \ @@ -107,9 +115,25 @@ $(addprefix runjar-,$(_java_projects_main)): runjar-%: jar-% $(call _java_flag,module-path,JAVA_MODULEPATHS,path,\ $(or $(call _java_projvar,JAR_FILE),$*.jar)) \ $(call _java_projvar,JAVAFLAGS) \ - --module $* \ + --module $*$(_java_main_class:%=/%) \ $(call _java_projvar,JAVA_RUNTIME_ARGS)) +$(addprefix runsrc-,$(_java_extramainclassmodules)): runsrc-%: + $(strip _java_main_class=$(*) \ + $(MAKE) runsrc-$(strip $(foreach p,$(JAVA_PROJECTMODULES),\ + $(if $(filter $p%,$*),$p)))) + +$(addprefix runclass-,$(_java_extramainclassmodules)): runclass-%: + $(strip _java_main_class=$(*) \ + $(MAKE) runclass-$(strip $(foreach p,$(JAVA_PROJECTMODULES),\ + $(if $(filter $p%,$*),$p)))) + +$(addprefix runjar-,$(_java_extramainclassmodules)): runjar-%: + $(strip _java_main_class=$(*) \ + $(MAKE) runjar-$(strip $(foreach p,$(JAVA_PROJECTMODULES),\ + $(if $(filter $p%,$*),$p)))) + .PHONY: \ $(foreach p,$(JAVA_PROJECTMODULES),build-$p check-$p) \ - $(foreach p,$(_java_projects_main),runclass-$p runsrc-$p runjar-$p) + $(foreach p,$(_java_mainclassmodules) $(_java_extramainclassmodules),\ + runclass-$p runsrc-$p runjar-$p) -- cgit v1.2.3