161 lines
3.3 KiB
Makefile
161 lines
3.3 KiB
Makefile
#
|
|
#
|
|
#
|
|
# 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)
|
|
|