update to new lyluatex version

This commit is contained in:
Sebastian Hugentobler 2020-07-16 14:31:51 +02:00
parent 730d9fb22d
commit 2771f1c76f
62 changed files with 1704 additions and 771 deletions

152
Makefile
View file

@ -1,101 +1,101 @@
SHELL = /bin/sh
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
WORKING_DIR := $(patsubst %/,%,$(dir $(mkfile_path)))
BOOKNAME=singalongs
SRC_DIR=src
BUILD_DIR=build
TMP_DIR=tmp
SONG_DIR=${SRC_DIR}/songs
BUILD_BOOK_DIR=${BUILD_DIR}/books
TMP_BOOK_DIR=${TMP_DIR}/books
BUILD_SONG_DIR=${BUILD_DIR}/songs
TMP_SONG_DIR=${TMP_DIR}/songs
BUILD_MIDI_DIR=${BUILD_DIR}/midi
TMP_MIDI_DIR=${TMP_DIR}/midi
BUILD_OPUS_DIR=${BUILD_DIR}/opus
# a list of all used commands (they have to be in your PATH)
LILYPOND = lilypond
LUALATEX = lualatex
MAKEINDEX = makeindex
TIMIDITY = timidity
OPUSENC = opusenc
PDF2PS = pdf2ps
PSBOOK = psbook
PSTOPS = pstops
PSNUP = psnup
PS2PDF = ps2pdf
SED = sed # do not use in-place editing for compatibility between different sed versions
RM = rm
MKDIR = mkdir
CD = cd
CP = cp
LY_FILES=$(wildcard ${SONG_DIR}/*.ly)
LY_PDFS=$(patsubst %.ly,${BUILD_SONG_DIR}/%.pdf,$(notdir ${LY_FILES}))
LY_TMP_PDFS=$(patsubst %.ly,${TMP_SONG_DIR}/%.pdf,$(notdir ${LY_FILES}))
LY_MIDIS=$(patsubst %.ly,${BUILD_MIDI_DIR}/%.midi,$(notdir ${LY_FILES}))
LY_TMP_MIDIS=$(patsubst %.ly,${TMP_MIDI_DIR}/%.midi,$(notdir ${LY_FILES}))
LY_OPUS=$(patsubst %.ly,${BUILD_OPUS_DIR}/%.opus,$(notdir ${LY_FILES}))
SRCDIR = src
OUTDIR = out
PDFDIR = pdf
MIDIDIR = midi
OPUSDIR = music
SCORESDIR = $(SRCDIR)/scores
LYRICSDIR = $(SRCDIR)/lyrics
.PHONY: book songs midi opus clean directories all
.DEFAULT_GOAL := all
OUTPUTFILE = $(OUTDIR)/singalongs.tex
TEXFILES = $(wildcard $(SRCDIR)/*.tex)
SCORES = $(wildcard $(SCORESDIR)/*.ly)
LYRICS = $(wildcard $(LYRICSDIR)/*.tex)
PDFS = $(patsubst %.ly,$(PDFDIR)/%.pdf,$(notdir $(SCORES)))
MIDIS = $(patsubst %.ly,$(MIDIDIR)/%.midi,$(notdir $(SCORES)))
OPUSFILES = $(patsubst %.ly,$(OPUSDIR)/%.opus,$(notdir $(SCORES)))
directories: ${BUILD_DIR} ${BUILD_BOOK_DIR} ${TMP_BOOK_DIR} ${BUILD_SONG_DIR} ${BUILD_MIDI_DIR} ${TMP_DIR} ${TMP_SONG_DIR} ${TMP_MIDI_DIR} ${BUILD_OPUS_DIR}
LILYPONDSUBST = $(foreach score,$(SCORES), \\\\chapter {$(shell grep title "$(score)" | awk -F '"|"' '{print $$2}')} \\\\includely[staffsize=18]{$(abspath $(score))} ~\\\\\\\\ ~\\\\\\\\ \\\\input{$(abspath $(LYRICSDIR)/$(notdir $(basename $(score)))).tex})
${BUILD_DIR}:
mkdir -p ${BUILD_DIR}
BOOKPDF = $(PDFDIR)/book.pdf
BOOKLETPDF = $(PDFDIR)/booklet.pdf
${BUILD_BOOK_DIR}:
mkdir -p ${BUILD_BOOK_DIR}
MIDITEMPO = 120
${BUILD_SONG_DIR}:
mkdir -p ${BUILD_SONG_DIR}
all: pdfs midis opus book booklet
${BUILD_MIDI_DIR}:
mkdir -p ${BUILD_MIDI_DIR}
pdfs: $(PDFS)
${TMP_DIR}:
mkdir -p ${TMP_DIR}
midis: pdfs $(MIDIS)
${TMP_BOOK_DIR}:
mkdir -p ${TMP_BOOK_DIR}
opus: midis $(OPUSFILES)
${TMP_SONG_DIR}:
mkdir -p ${TMP_SONG_DIR}
book: $(BOOKPDF)
${TMP_MIDI_DIR}:
mkdir -p ${TMP_MIDI_DIR}
booklet: $(BOOKLETPDF)
${BUILD_OPUS_DIR}:
mkdir -p ${BUILD_OPUS_DIR}
$(BOOKPDF): $(TEXFILES) $(SCORES) $(LYRICS) | $(PDFDIR) $(OUTDIR)
@$(CP) $(TEXFILES) $(OUTDIR)/
@$(CP) -r lib/* $(OUTDIR)/
@$(CP) -r $(SRCDIR)/images $(OUTDIR)/images
${TMP_SONG_DIR}/%.pdf: ${SONG_DIR}/%.ly ${SONG_DIR}/%.tex
cd ${SRC_DIR} && lualatex --jobname='$(notdir $(basename $@))' --output-directory=${WORKING_DIR}/${TMP_SONG_DIR} --shell-escape ${WORKING_DIR}/${SRC_DIR}/song.tex ${WORKING_DIR}/${SONG_DIR}/$(notdir $(basename $@)).ly ${WORKING_DIR}/${SONG_DIR}/$(notdir $(basename $@)).tex
rm -r ${SRC_DIR}/tmp-ly
@$(SED) "s;\musicbooklet;$(LILYPONDSUBST);g" $(SRCDIR)/singalongs.tex > $(OUTPUTFILE).00
@$(SED) 's/REVISION/$(shell git log -1 --format="%h")/g' $(OUTPUTFILE).00 > $(OUTPUTFILE)
${BUILD_MIDI_DIR}/%.midi: ${TMP_MIDI_DIR}/%-1.midi
cp $< $@
@$(CD) $(OUTDIR); \
$(LUALATEX) -shell-escape singalongs.tex; \
$(MAKEINDEX) singalongs.tex; \
$(LUALATEX) -shell-escape singalongs.tex
${TMP_MIDI_DIR}/%-1.midi: ${SONG_DIR}/%.ly
lilypond --output=${TMP_MIDI_DIR} ${WORKING_DIR}/$<
@$(CP) $(OUTDIR)/singalongs.pdf $(PDFDIR)/$(@F)
${BUILD_OPUS_DIR}/%.opus: ${BUILD_MIDI_DIR}/%.midi
timidity $< -Ow -o - | opusenc - $@
$(BOOKLETPDF): $(BOOKPDF)
$(PDF2PS) $(BOOKPDF) - | $(PSBOOK) | $(PSTOPS) -pa4 '1:0@1.0(-1.25cm,0cm)' | $(PSNUP) -2 | $(PS2PDF) - $(PDFDIR)/$(@F)
${TMP_BOOK_DIR}/%.pdf: ${SRC_DIR}/%.tex ${SRC_DIR}/images/title.png
latexmk -cd -lualatex -e '$$lualatex=q/lualatex %O -shell-escape %S/' -output-directory=${WORKING_DIR}/${TMP_BOOK_DIR} $<
rm -r ${SRC_DIR}/tmp-ly
$(PDFDIR)/%.pdf: $(SCORESDIR)/%.ly | $(PDFDIR) $(OUTDIR)
@$(SED) 's/%title/title/g' $< > $(OUTDIR)/$(notdir $<).00
@$(SED) 's/\header {/\paper{indent=0\\mm} \\header { tagline=""/g' $(OUTDIR)/$(notdir $<).00 > $(OUTDIR)/$(notdir $<)
@$(LILYPOND) --output=$(PDFDIR)/$(basename $(@F)) $(OUTDIR)/$(notdir $<)
${TMP_BOOK_DIR}/%-folio.pdf: ${TMP_BOOK_DIR}/%.pdf
cd ${TMP_BOOK_DIR} && \
../../bin/makebook -v -t folio -i $(notdir $<) -o $(notdir $@)
$(MIDIDIR)/%.midi: $(SCORESDIR)/%.ly | $(MIDIDIR) $(OUTDIR)
@$(SED) 's/\layout { }/\midi{ \\tempo 4 = $(MIDITEMPO) }/g' $< > $(OUTDIR)/$(notdir $<).00
@$(SED) 's/\header/\include "articulate.ly" \\header/g' $(OUTDIR)/$(notdir $<).00 > $(OUTDIR)/$(notdir $<).01
@$(SED) 's/<</\\articulate \\unfoldRepeats <</g' $(OUTDIR)/$(notdir $<).01 > $(OUTDIR)/$(notdir $<)
@$(LILYPOND) --output=$(MIDIDIR)/$(basename $(@F)) $(OUTDIR)/$(notdir $<)
#long edge binding
${TMP_BOOK_DIR}/%-quarto.pdf: ${TMP_BOOK_DIR}/%.pdf
cd ${TMP_BOOK_DIR} && \
../../bin/makebook -v -t quarto -i $(notdir $<) -o $(notdir $@)
$(OPUSDIR)/%.opus: $(MIDIDIR)/%.midi | $(OPUSDIR)
@$(TIMIDITY) $< -Ow -o - | $(OPUSENC) - $(OPUSDIR)/$(@F)
${TMP_BOOK_DIR}/%-sexto.pdf: ${TMP_BOOK_DIR}/%.pdf
cd ${TMP_BOOK_DIR} && \
../../bin/makebook -v -t sexto -i $(notdir $<) -o $(notdir $@)
$(PDFDIR):
@$(MKDIR) -p $(PDFDIR)
#short edge binding
${TMP_BOOK_DIR}/%-octavo.pdf: ${TMP_BOOK_DIR}/%.pdf
cd ${TMP_BOOK_DIR} && \
../../bin/makebook -v -t octavo -i $(notdir $<) -o $(notdir $@)
$(MIDIDIR):
@$(MKDIR) -p $(MIDIDIR)
${BUILD_DIR}/%.pdf: ${TMP_DIR}/%.pdf
cp $< $@
$(OPUSDIR):
@$(MKDIR) -p $(OPUSDIR)
book: directories ${BUILD_BOOK_DIR}/${BOOKNAME}.pdf ${BUILD_BOOK_DIR}/${BOOKNAME}-folio.pdf ${BUILD_BOOK_DIR}/${BOOKNAME}-quarto.pdf ${BUILD_BOOK_DIR}/${BOOKNAME}-sexto.pdf ${BUILD_BOOK_DIR}/${BOOKNAME}-octavo.pdf ${LY_FILES}
songs: directories ${LY_PDFS}
midi: directories ${LY_MIDIS}
opus: directories ${LY_OPUS}
all: book songs midi opus
$(OUTDIR):
@$(MKDIR) -p $(OUTDIR)
.PHONY: clean
clean:
@$(RM) -rf $(PDFDIR) $(MIDIDIR) $(OPUSDIR) $(OUTDIR)
rm -rf ${BUILD_DIR}
rm -rf ${TMP_DIR}