42 lines
1.3 KiB
Makefile
42 lines
1.3 KiB
Makefile
dirs:= BeginnerCourse BoosterMusic
|
|
output:= PianoBoosterMusic
|
|
ABCs:=$(foreach dir, $(dirs), $(wildcard $(dir)/*.abc))
|
|
MMAs:=$(filter-out $(foreach dir, $(dirs), $(wildcard $(dir)/*Lib.mma)),$(foreach dir, $(dirs), $(wildcard $(dir)/*.mma)))
|
|
MIDs:=$(foreach mma, $(MMAs:.mma=.mid), $(output)/$(mma))
|
|
SOLs:=$(foreach abc, $(ABCs:.abc=.solo.mid), $(abc))
|
|
SVGs:=$(foreach abc, $(ABCs:.abc=001.svg), $(output)/$(abc))
|
|
MDs=:$(ABCs:.abc=_en.md)
|
|
|
|
all: $(output)/README.html
|
|
|
|
%.html: %.md
|
|
markdown $< > $@
|
|
|
|
$(output)/README.md: $(SVGs) $(MIDs)
|
|
cat music.md.start > $@
|
|
sh -c '$(foreach mma, $(MMAs), \
|
|
echo "## $(basename $(notdir $(mma)))"; \
|
|
echo "![score]($(basename $(mma))001.svg)"; \
|
|
echo ""; \
|
|
[ -f "$(basename $(mma))_en.md" ] && cat "$(basename $(mma))_en.md" || true ; \
|
|
echo "[midi file]($(basename $(mma)).mid)" ; \
|
|
)' >> "$@"
|
|
cat music.md.end >> $@
|
|
|
|
$(output)/%001.svg: %.abc
|
|
$(foreach dir, $(dirs), mkdir -p $(output)/$(dir))
|
|
abcm2ps -g -s 0.9 -c "$<" -O "$(output)/$(basename $<).svg"
|
|
|
|
%.solo.mid: %.abc
|
|
abc2midi "$<" -o "$@" -RS
|
|
|
|
$(output)/%.mid: %.mma $(SOLs)
|
|
$(foreach dir, $(dirs), mkdir -p $(output)/$(dir))
|
|
sh -c 'cd $(dir $<); mma "$(notdir $<)" -o -f "../$@"'
|
|
|
|
clean:
|
|
rm -f $(SOLs) $(wildcard $(output)/*/*.svg)
|
|
|
|
cleanall: clean
|
|
rm -fr $(output)
|