aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_make/java.mk50
1 files changed, 37 insertions, 13 deletions
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)