#
#
#
# Variables
#
#
#

export MAKE_FLAGS=--no-print-directory

export OUT=$(shell pwd)/bin
export OUT_PDF=$(OUT)/pdf/
export OUT_HTML=$(OUT)/html/
export OUT_MAN=$(OUT)/man/

DOCUMENT_CLASS=article
SETTING_FONTSIZE=11pt

## Source directory
SRC_DIR=$(shell pwd)/src

## Templates
TEMPLATES=$(shell pwd)/templates

## CSS directory
CSS_DIR=$(TEMPLATES)/css
CSS_SRC=$(shell find $(CSS_DIR) -type f -name "*.css")
CSS_INCLUDES=$(foreach x, $(CSS_SRC), --variable css=$(x))

## All markdown files in the working directory
export SRC=$(shell find $(SRC_DIR) -name "*.md" | sort)

DOCUMENT_SETTINGS_PDF=                           \
	--listings                                   \
	--variable fontsize=$(SETTING_FONTSIZE)      \
	--variable papersize=a4paper                 \
	--variable classoption=cleardoublepage=empty \
	--variable classoption=index=totoc           \
	--variable classoption=openright             \
	--variable classoption=final                 \
	--variable classoption=listof=nochaptergap   \
	--variable documentclass=$(DOCUMENT_CLASS)   \
	--variable babel-lang=english                \
	--variable geometry=portrait

DOCUMENT_SETTINGS_HTML=			\
	$(CSS_INCLUDES)				\
	--variable lang=de 			\
	--variable lof=true			\
	--variable lol=true			\
	--variable lot=true			\
	--variable toc=true			\
	--table-of-contents			\
	--webtex

DOCUMENT_SETTINGS_MAN=			\
	-s					\
	--variable section=5			\

#
#
#
# Binary and argument construction
#
#
#

ECHO_CMD=$(shell which echo)
ECHO_ARG=-e
ECHO=$(ECHO_CMD) $(ECHO_ARG)
export ECHO

MKDIR_CMD=$(shell which mkdir)
MKDIR_ARG=-p
MKDIR=$(MKDIR_CMD) $(MKDIR_ARG)
export MKDIR

RM_CMD=$(shell which rm)
RM_ARG=-fr
RM=$(RM_CMD) $(RM_ARG)
export RM

PANDOC=$(shell which pandoc)

PANDOC_PARAMS=-r markdown+simple_tables+table_captions+yaml_metadata_block+definition_lists+raw_html+markdown_in_html_blocks \
			  --filter pandoc-crossref

PANDOC_CC=$(PANDOC) $(PANDOC_PARAMS)

export PANDOC_CC_PDF=$(PANDOC)        \
			  $(PANDOC_PARAMS)        \
			  --pdf-engine=pdflatex \
			  $(DOCUMENT_SETTINGS_PDF)

export PANDOC_CC_HTML=$(PANDOC) $(PANDOC_PARAMS) $(DOCUMENT_SETTINGS_HTML)

export PANDOC_CC_MAN=$(PANDOC) $(PANDOC_PARAMS) $(DOCUMENT_SETTINGS_MAN)

TARGET_PDF=$(OUT_PDF)/paper.pdf
TARGET_HTML=$(OUT_HTML)/index.html
TARGET_MAN=$(OUT_MAN)/imag.5
#
#
# Tasks
#
#

# Main task
all: $(TARGET_PDF) $(TARGET_HTML)
	@$(ECHO) "\t[ALL   ]"

# create out directory
$(OUT):
	@$(ECHO) "\t[MKDIR ] $@"
	@$(MKDIR) $(OUT)

# create html out directory
$(OUT_HTML): $(OUT)
	@$(ECHO) "\t[MKDIR ] $@"
	@$(MKDIR) $(OUT_HTML)

# create html out directory
$(OUT_PDF): $(OUT)
	@$(ECHO) "\t[MKDIR ] $@"
	@$(MKDIR) $(OUT_PDF)

# create man out directory
$(OUT_MAN): $(OUT)
	@$(ECHO) "\t[MKDIR ] $@"
	@$(MKDIR) $(OUT_MAN)

# cleanup task
clean:
	@$(ECHO) "\t[RM    ] $@"
	@$(RM) $(OUT)

pdf: $(TARGET_PDF)

$(TARGET_PDF): $(OUT_PDF)
	@$(ECHO) "\t[PANDOC] pdf"
	@$(PANDOC_CC_PDF)                         \
		--template $(TEMPLATES)/default.latex \
		$(SRC) -o $@

html: $(TARGET_HTML)

$(TARGET_HTML): $(OUT_HTML)
	@$(ECHO) "\t[PANDOC] html"
	@$(PANDOC_CC_HTML)                        \
		--template $(TEMPLATES)/default.html5 \
		$(SRC) -o $@

man: $(TARGET_MAN)

$(TARGET_MAN): $(OUT_MAN)
	@$(ECHO) "\t[PANDOC] man"
	@$(PANDOC_CC_MAN) \
		$(SRC) -o $@

.PHONY: $(TARGET_PDF) $(TARGET_HTML)