mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
WORKING_DIR := $(patsubst %/,%,$(dir $(mkfile_path)))
BOOKNAME=singalongs
SRC_DIR=src
BUILD_DIR=build
SONG_DIR=${SRC_DIR}/songs
BUILD_SONG_DIR=${BUILD_DIR}/songs
BUILD_BOOK_DIR=${BUILD_DIR}/book

BOOK_FULL=$(BUILD_BOOK_DIR)/full.pdf
BOOKLET=$(BUILD_BOOK_DIR)/booklet.pdf
GENERATED_SONGS=$(BUILD_DIR)/songs.typ
TYP_FILES=$(wildcard ${SONG_DIR}/*.typ)
LY_FILES=$(wildcard ${SONG_DIR}/*.ly)
LY_PDFS=$(patsubst %.ly,${BUILD_SONG_DIR}/%.pdf,$(notdir ${LY_FILES}))
LY_SVGS=$(patsubst %.ly,${BUILD_SONG_DIR}/%.svg,$(notdir ${LY_FILES}))

.PHONY: clean directories all
.DEFAULT_GOAL := all

directories: $(BUILD_DIR) $(BUILD_SONG_DIR) $(BUILD_BOOK_DIR)

$(BUILD_DIR):
	mkdir -p $(BUILD_DIR)

$(BUILD_SONG_DIR):
	mkdir -p $(BUILD_SONG_DIR)

$(BUILD_BOOK_DIR):
	mkdir -p $(BUILD_BOOK_DIR)

$(GENERATED_SONGS): $(LY_FILES) $(TYP_FILES)
	bin/generate

$(BUILD_SONG_DIR)/%.pdf: $(SONG_DIR)/%.ly $(SRC_DIR)/setup.ly
	lilypond --pdf -o  $(basename $@) $<
	pdfcrop $@ $@

$(BUILD_SONG_DIR)/%.svg: $(BUILD_SONG_DIR)/%.pdf
	pdftocairo -svg $< $@

$(BOOK_FULL): $(TYP_FILES) $(LY_SVGS) $(GENERATED_SONGS) $(SRC_DIR)/singalongs.typ $(SRC_DIR)/song.typ
	typst compile --root $(WORKING_DIR) $(SRC_DIR)/singalongs.typ $@

$(BOOKLET): $(BOOK_FULL)
	pdfbook2 --short-edge $<

all: directories $(BOOK_FULL) $(BOOKLET) $(LY_SVGS) $(GENERATED_SONGS)

clean:
	rm -rf $(BUILD_DIR)