71 lines
2.5 KiB
Makefile
71 lines
2.5 KiB
Makefile
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
|
|
WORKING_DIR := $(patsubst %/,%,$(dir $(mkfile_path)))
|
|
|
|
BOOKNAME=kommersbuch
|
|
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
|
|
|
|
BOOK_TYPES=folio quarto sexto octavo
|
|
|
|
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)))
|
|
|
|
.PHONY: book songs midi opus clean all
|
|
.DEFAULT_GOAL := all
|
|
|
|
define BUILDER
|
|
$(TMP_BOOK_DIR)/%-$(TYPE).pdf: $(TMP_BOOK_DIR)/%.pdf
|
|
cd $(TMP_BOOK_DIR) && \
|
|
../../bin/makebook -v -t $(TYPE) -i $$(notdir $$<) -o $$(notdir $$@)
|
|
endef
|
|
$(foreach TYPE,$(BOOK_TYPES),$(eval $(BUILDER)))
|
|
|
|
%.dir:
|
|
mkdir -p $*
|
|
|
|
$(TMP_SONG_DIR)/%.pdf: $(SONG_DIR)/%.ly $(SONG_DIR)/%.tex | $(TMP_SONG_DIR).dir
|
|
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
|
|
|
|
$(BUILD_MIDI_DIR)/%.midi: $(TMP_MIDI_DIR)/%-1.midi | $(BUILD_MIDI_DIR).dir
|
|
cp $< $@
|
|
|
|
$(TMP_MIDI_DIR)/%-1.midi: $(SONG_DIR)/%.ly | $(TMP_MIDI_DIR).dir
|
|
lilypond --output=$(TMP_MIDI_DIR) $(WORKING_DIR)/$<
|
|
|
|
$(BUILD_OPUS_DIR)/%.opus: $(BUILD_MIDI_DIR)/%.midi | $(BUILD_OPUS_DIR).dir
|
|
timidity $< -Ow -o - | opusenc - $@
|
|
|
|
$(TMP_BOOK_DIR)/%.pdf: $(SRC_DIR)/%.tex $(SRC_DIR)/images/title.png | $(TMP_BOOK_DIR).dir
|
|
latexmk -cd -lualatex -e '$$lualatex=q/lualatex %O -shell-escape %S/' -output-directory=$(WORKING_DIR)/$(TMP_BOOK_DIR) $<
|
|
rm -r $(SRC_DIR)/tmp-ly
|
|
|
|
$(BUILD_DIR)/%.pdf: $(TMP_DIR)/%.pdf | $(BUILD_BOOK_DIR).dir $(BUILD_SONG_DIR).dir
|
|
cp $< $@
|
|
|
|
book: $(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: $(LY_PDFS)
|
|
midi: $(LY_MIDIS)
|
|
opus: $(LY_OPUS)
|
|
all: book songs midi opus
|
|
|
|
clean:
|
|
rm -rf $(BUILD_DIR)
|
|
rm -rf $(TMP_DIR)
|
|
rm -rf $(SRC_DIR)/tmp-ly
|