

# TOOLS
PYTHON = python

SRC =
SRC += controller.cpp
SRC += record.cpp

INC =
INC += controller.h
INC += record.h

TEX =
TEX += template.tex
TEX += audiocontroller.tex
TEX += metadata.tex


INFO =
INFO += config/records.json
INFO += py/record.py
INFO += py/verify_records.py


OBJDIR = obj
SRCDIR = src
DOCDIR = doc
COGDIR = cog
INCDIR = include

SRCFILES = $(SRC:%.cpp=$(SRCDIR)/%.cpp)
INCFILES = $(INC:%.h=$(INCDIR)/%.h)
TEXFILES = $(TEX:%.tex=$(DOCDIR)/%.tex)


DIRS = $(OBJDIR) $(SRCDIR) $(DOCDIR) $(COGDIR) $(INCDIR) $(COGDIR)/$(SRCDIR) $(COGDIR)/$(INCDIR) $(COGDIR)/$(DOCDIR)

OBJFILES     = $(SRC:%.cpp=$(OBJDIR)/%.o)
COGFILES     = $(SRCFILES:%.cpp=$(COGDIR)/%.cpp) $(INCFILES:%.h=$(COGDIR)/%.h) $(TEXFILES:%.tex=$(COGDIR)/%.tex)

COMPILE_FLAGS = -g -Icog/include
LINK_FLAGS =

all: $(DIRS) verify $(COGFILES) audiocontroller doc/documentation.pdf Makefile

verify:
	$(PYTHON) py/verify_records.py

$(DIRS):
	-mkdir $(DIRS)

$(COGDIR)/$(SRCDIR)/%.cpp: $(SRCDIR)/%.cpp $(INFO)
	@ cp $< $@
	@ $(PYTHON) -m cogapp -r $@

$(COGDIR)/$(INCDIR)/%.h: $(INCDIR)/%.h $(INFO)
	@ cp $< $@
	@ $(PYTHON) -m cogapp -r $@

$(COGDIR)/$(DOCDIR)/%.tex: $(DOCDIR)/%.tex $(INFO)
#cog/doc/audiocontroller.tex: doc/audiocontroller.tex
	@ cp $< $@
	@ $(PYTHON) -m cogapp -r $@

$(OBJDIR)/%.o: $(COGDIR)/$(SRCDIR)/%.cpp
	@ echo -n "Compiling C++-File $<: "
	@ g++ -c $(COMPILE_FLAGS) $< -o $@
	@ echo "DONE"

audiocontroller: $(INFO) $(OBJFILES)
	@ echo -n "Linking Object-Files: "
	@ g++ $(LINK_FLAGS) -Wl,--start-group $(OBJFILES) -Wl,--end-group -o $(OBJDIR)/$@ -o audiocontroller
	@ echo "DONE"

clean:
	rm -rf audiocontroller
	rm -rf obj/**/*
	rm -rf cog
	rm -rf **/*.out
	rm -rf **/*.log
	rm -rf **/*.aux
	rm -rf doc.txt
	rm -rf doc/documentation.pdf

doc: $(DIRS) $(COGDIR)/$(DOCDIR)/documentation.pdf

$(COGDIR)/$(DOCDIR)/documentation.pdf: $(TEXFILES:%.tex=$(COGDIR)/%.tex)
		@ echo -n "Building Documentation: "
		cd $(COGDIR)/$(DOCDIR); pdflatex template.tex; rm -rf *.out; rm -rf *.log; rm -rf *.aux; mv template.pdf documentation.pdf
		cp $(COGDIR)/$(DOCDIR)/documentation.pdf $(DOCDIR)/documentation.pdf
		@ echo "DONE"
