diff --git a/Makefile b/Makefile index 501ff9b..9916b06 100644 --- a/Makefile +++ b/Makefile @@ -1,25 +1,30 @@ -build_dir = build -config_dir = config -docker = podman -library_dir = library -propers_dir = propers -template_dir = templates -tex_deps = $(template_dir)/*.tt $(library_dir)/*/*/*.tt $(propers_dir)/*.tt $(config_dir)/song_choices.csv $(config_dir)/qr_codes.csv $(config_dir)/variables.tt -.PHONY: all +TOPDIR :::= $(PWD) +build_dir ::= $(TOPDIR)/build +config_dir ::= $(TOPDIR)/config +docker ::= podman +library_dir ::= $(TOPDIR)/library +propers_dir ::= $(TOPDIR)/propers +template_dir ::= $(TOPDIR)/templates +song_choices ::= $(config_dir)/song_choices.csv +user_variables ::= $(config_dir)/variables.tt +export +.PHONY: clean all +*: $(build_dir)/dynamic_deps.mk +$(build_dir)/dynamic_deps.mk: build_dir $(template_dir)/dynamic_deps.mk.tt $(song_choices) $(user_variables) + $(MAKE) -C $(template_dir) $@ +include $(build_dir)/dynamic_deps.mk +clean: + $(RM) -r build all: leadsheet_collection.pdf choir_scores.pdf print_a3.pdf clean_intermediate #print_a4.pdf %.pdf: build $(MAKE) -C $(build_dir) $@ -songsheet.tex: $(template_dir)/songsheet.tt $(tex_deps) $(template_dir)/header.tt $(template_dir)/head.tt $(template_dir)/footer.tt -%.tex: build - $(MAKE) -C $(template_dir) $@ clean_intermediate: $(MAKE) -C $(build_dir) clean_intermediate -build: build-Makefile - mkdir -p $(build_dir) && \ +build_dir: + mkdir -p $(build_dir) +build: build_dir build-Makefile cp build-Makefile $(build_dir)/Makefile && \ cp -r library/gregorio_scores $(build_dir) -clean: - $(RM) -r build init: git submodule update --init --recursive build_docker_image: @@ -27,5 +32,8 @@ build_docker_image: pull_docker: $(docker) pull gitea.leopold.fajtak.at/leopold/songsheet_generator:latest build_in_docker: - $(docker) run -v `pwd`:/data songsheet_generator make - + $(docker) run -v `pwd`:/data songsheet_generator make -j all +tex_deps ::= $(template_dir)/variables.tt $(config_dir)/qr_codes.csv $(config_dir)/variables.tt $(dynamic_deps) +songsheet.tex: $(template_dir)/songsheet.tt $(tex_deps) $(template_dir)/header.tt $(template_dir)/head.tt $(template_dir)/footer.tt +%.tex: build $(tex_deps) + $(MAKE) -C $(template_dir) $@ diff --git a/build-Makefile b/build-Makefile index 3831ff1..e0eccdc 100644 --- a/build-Makefile +++ b/build-Makefile @@ -18,6 +18,6 @@ songsheet_a4part.pdf: songsheet_a5.pdf songsheet_a5.pdf: songsheet.pdf pdfjam -o $@ --nup 2x1 --paper a5paper --landscape $< %.tex: - $(MAKE) -C .. $@ + $(MAKE) -C $(TOPDIR) $@ clean_intermediate: $(RM) songsheet_a3part.pdf songsheet_a4part.pdf songsheet_a5.pdf diff --git a/config/song_choices.csv b/config/song_choices.csv index 14b7539..5176628 100644 --- a/config/song_choices.csv +++ b/config/song_choices.csv @@ -1,5 +1,5 @@ purpose | content | template | variables -| | | +| | | freie_lieder/adeste_fideles introitus | | | #confiteor | \input{library/gebete/confiteor/confiteor_de.tex} | | kyrie | | | diff --git a/templates/Makefile b/templates/Makefile index 3534c9a..25365ae 100644 --- a/templates/Makefile +++ b/templates/Makefile @@ -1,13 +1,13 @@ -build_dir = ../build -library_dir = ../library -propers_dir = ../propers -config_dir = ../config -tex_deps = *.tt $(library_dir)/*/*/*.tt $(propers_dir)/*.tt $(config_dir)/song_choices.csv $(config_dir)/variables.tt +tpage_defs = --define config_dir=$(config_dir) --define library_dir=$(library_dir) --define propers_dir=$(propers_dir) +tpage = tpage $(tpage_defs) +tex_deps = *.tt $(config_dir)/variables.tt $(dynamic_deps) songsheet.tex: songsheet.tt $(tex_deps) header.tt head.tt footer.tt - tpage $< > $(build_dir)/$@ + $(tpage) $< > $(build_dir)/$@ musician_scores.tex: musician_scores.tt $(tex_deps) - tpage $< > $(build_dir)/$@ + $(tpage) $< > $(build_dir)/$@ leadsheet_collection.tex: musician_scores.tt $(tex_deps) - tpage --define parts=band $< > $(build_dir)/$@ + $(tpage) --define parts=band $< > $(build_dir)/$@ choir_scores.tex: musician_scores.tt $(tex_deps) - tpage --define parts=SATB $< > $(build_dir)/$@ + $(tpage) --define parts=SATB $< > $(build_dir)/$@ +$(build_dir)/dynamic_deps.mk: dynamic_deps.mk.tt $(song_choices) $(user_variables) + $(tpage) $< > $@ diff --git a/templates/dynamic_deps.mk.tt b/templates/dynamic_deps.mk.tt new file mode 100644 index 0000000..4df24ba --- /dev/null +++ b/templates/dynamic_deps.mk.tt @@ -0,0 +1,11 @@ +dynamic_deps = [% PROCESS variables.tt; +USE song_choices = datafile("${config_dir}/song_choices.csv", delim= '|'); +FOREACH song = song_choices; + IF song.variables != ''; + GET "${library_dir}/${song.variables}/* "; + END; +END; +IF proper != ''; + GET "${propers_dir}/${proper}.tt"; +END; +-%] diff --git a/templates/songsheet.tt b/templates/songsheet.tt index ad239a2..604f26c 100644 --- a/templates/songsheet.tt +++ b/templates/songsheet.tt @@ -1,4 +1,8 @@ -[% PROCESS variables.tt -%] +[% PROCESS variables.tt; + IF proper != ''; + PROCESS "${propers_dir}/${proper}.tt"; + END; +-%] [% parts = 0 -%] [% INCLUDE header.tt -%] \begin{document} diff --git a/templates/variables.tt b/templates/variables.tt index 691112c..1301de3 100644 --- a/templates/variables.tt +++ b/templates/variables.tt @@ -8,12 +8,5 @@ small_footer = 0 lent = 0 meditations = 0 - config_dir = '../config' - library_dir = '../library' - propers_dir = '../propers/' --%] -[% PROCESS "${config_dir}/variables.tt"; - IF proper != ''; - PROCESS "${propers_dir}/${proper}.tt"; - END; -%] +[% PROCESS "${config_dir}/variables.tt" -%]