# General purpose Makefile for generating several output types from MuseScore file # # Type 'make help' for a list of targets # # eg. 'make pdf' will generate PDFs of all .mscz files in the directory # # Makefile version 0.1 - 2012-07-06 - Steve Merrony # # Changes: # # 0.2 - 2012-08-03 - Steve Merrony # Performance: add quiet flags (c.20% faster on test machine) # New Feature: 'backup' target # New Feature: 'book' target # New Feature: LilyPond, PostScript & SVG generation # New Feature: look for style (.mss) file and apply it to LilyPondPDF/PS/XML generation # Improvement: better help (make help) SHELL = /bin/sh VERSION := 0.2 # tools MSCORE := mscore # MSCORE := /home/steve/SOFTWARE/MuseScore/MuseScore/build.release/mscore/mscore BACKUP_CMD := tar czvf BOOK_CMD := pdftk # Flags/Options # No need to connect to audio devices for batch ops Q_FLAGS := -s -m BOOK_PDF := Book.pdf BOOK_OPTS := *.pdf cat output $(BOOK_PDF) # files MS_FILES := $(wildcard *.mscz) ABC_FILES := $(patsubst %.mscz, %.abc, $(MS_FILES)) FLAC_FILES := $(patsubst %.mscz, %.flac, $(MS_FILES)) LY_FILES := $(patsubst %.mscz, %.ly, $(MS_FILES)) MID_FILES := $(patsubst %.mscz, %.mid, $(MS_FILES)) MXL_FILES := $(patsubst %.mscz, %.mxl, $(MS_FILES)) OGG_FILES := $(patsubst %.mscz, %.ogg, $(MS_FILES)) PDF_FILES := $(patsubst %.mscz, %.pdf, $(MS_FILES)) PS_FILES := $(patsubst %.mscz, %.ps, $(MS_FILES)) SVG_FILES := $(patsubst %.mscz, %.svg, $(MS_FILES)) WAV_FILES := $(patsubst %.mscz, %.wav, $(MS_FILES)) # WAV_FILES := $(patsubst %, WAV/%, $(WAV_FILES)) # put in a subdir XML_FILES := $(patsubst %.mscz, %.xml, $(MS_FILES)) # style file? STYLE_FILES := $(wildcard *.mss) ifeq ($(STYLE_FILES),) S_FLAGS := else S_FLAGS := -S $(STYLE_FILES) endif DATESTAMP := `date +"%Y%m%d"` # housekeeping targets help: @echo Makefile version $(VERSION) @egrep "^# make" [Mm]akefile # make list - list all MuseScore sources list: @echo $(MS_FILES) # @echo "Style file: " $(STYLE_FILES) # make backup - archive all MuseScore files in a .tgz file backup: $(BACKUP_CMD) mscz-backup-$(DATESTAMP).tgz $(MS_FILES) $(STYLE_FILES) # make clean - remove all non-MuseScore files (PDFs, XMLs, etc.) .PHONY: clean clean: rm -f $(ABC_FILES) \ $(FLAC_FILES) \ $(LY_FILES) \ $(OGG_FILES) \ $(MID_FILES) \ $(MXL_FILES) \ $(PDF_FILES) \ $(PS_FILES) \ $(SVG_FILES) \ $(WAV_FILES) \ $(XML_FILES) # make book - catenate all PDF files in dir into a single PDF (requires pdftk) book: $(PDF_FILES) $(BOOK_CMD) $(BOOK_OPTS) # make all - generate all targets below all: flac ly mid mxl ogg pdf ps svg wav xml # # make abc - generate ABC score files from MuseScore source abc: $(XML_FILES) $(ABC_FILES) # make flac - generate FLAC audio files from MuseScore sources flac: $(FLAC_FILES) # make ly - generate LilyPond score files from MuseScore sources ly: $(LY_FILES) # make mid - generate standard MIDI files from MuseScore sources mid: $(MID_FILES) # make mxl - generate compressed MusicXML files from MuseScore sources mxl: $(MXL_FILES) # make ogg - generate OGG audio files from MuseScore sources ogg: $(OGG_FILES) # make pdf - generate PDF documents from MuseScore sources pdf: $(PDF_FILES) # make ps - generate PostScript documents from MuseScore sources ps: $(PS_FILES) # make svg - generate SVG images from MuseScore sources svg: $(SVG_FILES) # make wav - generate WAV audio files from MuseScore sources wav: $(WAV_FILES) # make xml - generate MusicXML files from MuseScore sources (uncompressed) xml: $(XML_FILES) # rules .SUFFIXES: .mscz .mss .abc .flac .ly .mid .mxl .ogg .pdf .ps .svg .wav .xml $(FLAC_FILES): %.flac: %.mscz $(MSCORE) $(Q_FLAGS) -o $@ $< $(LY_FILES): %.ly: %.mscz $(MSCORE) $(Q_FLAGS) $(S_FLAGS) -o $@ $< $(MID_FILES): %.mid: %.mscz @$(MSCORE) $(Q_FLAGS) -o $@ $< $(MXL_FILES): %.mxl: %.mscz $(MSCORE) $(Q_FLAGS) $(S_FLAGS) -o $@ $< $(PDF_FILES): %.pdf: %.mscz $(MSCORE) $(Q_FLAGS) $(S_FLAGS) -o $@ $< $(PS_FILES): %.ps: %.mscz $(MSCORE) $(Q_FLAGS) $(S_FLAGS) -o $@ $< $(OGG_FILES): %.ogg: %.mscz $(MSCORE) $(Q_FLAGS) -o $@ $< $(SVG_FILES): %.svg: %.mscz $(MSCORE) $(Q_FLAGS) $(S_FLAGS) -o $@ $< $(WAV_FILES): %.wav: %.mscz $(MSCORE) $(Q_FLAGS) -o $@ $< $(XML_FILES): %.xml: %.mscz $(MSCORE) $(Q_FLAGS) $(S_FLAGS) -o $@ $<