aboutsummaryrefslogtreecommitdiff
path: root/_make
diff options
context:
space:
mode:
authorJonas Smedegaard <dr@jones.dk>2025-03-27 20:36:20 +0100
committerJonas Smedegaard <dr@jones.dk>2025-03-28 14:03:49 +0100
commit31babe2ed0754b656b57a1a1d9976936eae1a1dd (patch)
treecadaec92b33c006163655d17c601b40e249e1a68 /_make
parent63f48fb09435b3dcb0c313a5adc8d559232a3dd5 (diff)
improve make
Diffstat (limited to '_make')
-rw-r--r--_make/java.mk34
-rw-r--r--_make/puml.mk10
-rw-r--r--_make/quarto.mk44
-rw-r--r--_make/roadmap.mk10
4 files changed, 98 insertions, 0 deletions
diff --git a/_make/java.mk b/_make/java.mk
new file mode 100644
index 0000000..8a476b7
--- /dev/null
+++ b/_make/java.mk
@@ -0,0 +1,34 @@
+# 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-%)
diff --git a/_make/puml.mk b/_make/puml.mk
new file mode 100644
index 0000000..9e8006c
--- /dev/null
+++ b/_make/puml.mk
@@ -0,0 +1,10 @@
+# GNUMake snippet for processing PlantUML diagrams
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+# SPDX-FileCopyrightText: 2025 Jonas Smedegaard <dr@jones.dk>
+
+# defaults overridable at make invocation
+PLANTUML ?= plantuml
+
+%.svg: %.puml
+ $(PLANTUML) $(PLANTUMLFLAGS) -tsvg $<
diff --git a/_make/quarto.mk b/_make/quarto.mk
new file mode 100644
index 0000000..d52d813
--- /dev/null
+++ b/_make/quarto.mk
@@ -0,0 +1,44 @@
+# Make snippet for exchanging data with a HedgeDoc pad
+#
+# Copyright 2024, Jonas Smedegaard <dr@jones.dk>
+# SPDX-License-Identifier: GPL-3+
+#
+# Setup:
+# In main Makefile...
+# * set variable DOCUMENTS
+# * set variable DOCUMENT_APPENDIX_REGEX if needed
+# * include this make snippet
+#
+# Dependencies:
+# * quarto <https://quarto.org/>
+# * bat <https://github.com/sharkdp/bat>, with executable named "batcat"
+# * perl v5.10.1 or newer
+
+# list of relative paths to directories,
+# each containing an index.qmd file.
+#DOCUMENTS = \
+# main_paper \
+# promo_article \
+# research/deep/superconductors
+# research/deep/fringe
+
+# regular expression anchored at the beginning of a single line,
+# to match the beginning of content in document to omit from counting
+DOCUMENT_APPENDIX_REGEX ?= Appendix\\b
+
+$(DOCUMENTS:%=doc-render-%): doc-render-%: %.qmd
+ quarto render $<
+
+$(DOCUMENTS:%=doc-screening-of-%): doc-screening-of-%: %.qmd
+ QUARTO_LOG_LEVEL=quiet \
+ quarto render $< --to markdown --output - | batcat --file-name index.qmd --language markdown
+
+# count all characters except horisontal rulers,
+# until appendices
+$(DOCUMENTS:%=doc-charcount-of-%): doc-charcount-of-%: %.qmd
+ QUARTO_LOG_LEVEL=quiet \
+ quarto render $< --to plain --columns=9999 --output - \
+ | perl -nsE 'next if /^-*$$/; $$done += /^$$re/; $$chars += length unless $$done; END { say $$chars }' \
+ -- -re="$(DOCUMENT_APPENDIX_REGEX)"
+
+.PHONY: $(DOCUMENTS:%=doc-render-%) $(DOCUMENTS:%=doc-screening-of-%) $(DOCUMENTS:%=doc-charcount-of-%)
diff --git a/_make/roadmap.mk b/_make/roadmap.mk
new file mode 100644
index 0000000..6d1b4ff
--- /dev/null
+++ b/_make/roadmap.mk
@@ -0,0 +1,10 @@
+# GNUMake snippet for processing Roadmap diagrams
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+# SPDX-FileCopyrightText: 2025 Jonas Smedegaard <dr@jones.dk>
+
+# defaults overridable at make invocation
+ROADMAP ?= roadmap
+
+%.svg: _%.yml
+ $(ROADMAP) $(ROADMAPFLAGS) $<