Makefile 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #
  2. #
  3. #
  4. # Variables
  5. #
  6. #
  7. #
  8. export MAKE_FLAGS=--no-print-directory
  9. export OUT=$(shell pwd)/bin
  10. export OUT_PDF=$(OUT)/pdf/
  11. export OUT_HTML=$(OUT)/html/
  12. export OUT_MAN=$(OUT)/man/
  13. DOCUMENT_CLASS=article
  14. SETTING_FONTSIZE=11pt
  15. ## Source directory
  16. SRC_DIR=$(shell pwd)/src
  17. ## Templates
  18. TEMPLATES=$(shell pwd)/templates
  19. ## CSS directory
  20. CSS_DIR=$(TEMPLATES)/css
  21. CSS_SRC=$(shell find $(CSS_DIR) -type f -name "*.css")
  22. CSS_INCLUDES=$(foreach x, $(CSS_SRC), --variable css=$(x))
  23. ## All markdown files in the working directory
  24. export SRC=$(shell find $(SRC_DIR) -name "*.md" | sort)
  25. DOCUMENT_SETTINGS_PDF= \
  26. --listings \
  27. --variable fontsize=$(SETTING_FONTSIZE) \
  28. --variable papersize=a4paper \
  29. --variable classoption=cleardoublepage=empty \
  30. --variable classoption=index=totoc \
  31. --variable classoption=openright \
  32. --variable classoption=final \
  33. --variable classoption=listof=nochaptergap \
  34. --variable documentclass=$(DOCUMENT_CLASS) \
  35. --variable babel-lang=english \
  36. --variable geometry=portrait
  37. DOCUMENT_SETTINGS_HTML= \
  38. $(CSS_INCLUDES) \
  39. --variable lang=de \
  40. --variable lof=true \
  41. --variable lol=true \
  42. --variable lot=true \
  43. --variable toc=true \
  44. --table-of-contents \
  45. --webtex
  46. DOCUMENT_SETTINGS_MAN= \
  47. -s \
  48. --variable section=5 \
  49. #
  50. #
  51. #
  52. # Binary and argument construction
  53. #
  54. #
  55. #
  56. ECHO_CMD=$(shell which echo)
  57. ECHO_ARG=-e
  58. ECHO=$(ECHO_CMD) $(ECHO_ARG)
  59. export ECHO
  60. MKDIR_CMD=$(shell which mkdir)
  61. MKDIR_ARG=-p
  62. MKDIR=$(MKDIR_CMD) $(MKDIR_ARG)
  63. export MKDIR
  64. RM_CMD=$(shell which rm)
  65. RM_ARG=-fr
  66. RM=$(RM_CMD) $(RM_ARG)
  67. export RM
  68. PANDOC=$(shell which pandoc)
  69. PANDOC_PARAMS=-r markdown+simple_tables+table_captions+yaml_metadata_block+definition_lists+raw_html+markdown_in_html_blocks \
  70. --filter pandoc-crossref
  71. PANDOC_CC=$(PANDOC) $(PANDOC_PARAMS)
  72. export PANDOC_CC_PDF=$(PANDOC) \
  73. $(PANDOC_PARAMS) \
  74. --latex-engine=pdflatex \
  75. $(DOCUMENT_SETTINGS_PDF)
  76. export PANDOC_CC_HTML=$(PANDOC) $(PANDOC_PARAMS) $(DOCUMENT_SETTINGS_HTML)
  77. export PANDOC_CC_MAN=$(PANDOC) $(PANDOC_PARAMS) $(DOCUMENT_SETTINGS_MAN)
  78. TARGET_PDF=$(OUT_PDF)/paper.pdf
  79. TARGET_HTML=$(OUT_HTML)/index.html
  80. TARGET_MAN=$(OUT_MAN)/imag.5
  81. #
  82. #
  83. # Tasks
  84. #
  85. #
  86. # Main task
  87. all: $(TARGET_PDF) $(TARGET_HTML)
  88. @$(ECHO) "\t[ALL ]"
  89. # create out directory
  90. $(OUT):
  91. @$(ECHO) "\t[MKDIR ] $@"
  92. @$(MKDIR) $(OUT)
  93. # create html out directory
  94. $(OUT_HTML): $(OUT)
  95. @$(ECHO) "\t[MKDIR ] $@"
  96. @$(MKDIR) $(OUT_HTML)
  97. # create html out directory
  98. $(OUT_PDF): $(OUT)
  99. @$(ECHO) "\t[MKDIR ] $@"
  100. @$(MKDIR) $(OUT_PDF)
  101. # create man out directory
  102. $(OUT_MAN): $(OUT)
  103. @$(ECHO) "\t[MKDIR ] $@"
  104. @$(MKDIR) $(OUT_MAN)
  105. # cleanup task
  106. clean:
  107. @$(ECHO) "\t[RM ] $@"
  108. @$(RM) $(OUT)
  109. pdf: $(TARGET_PDF)
  110. $(TARGET_PDF): $(OUT_PDF)
  111. @$(ECHO) "\t[PANDOC] pdf"
  112. @$(PANDOC_CC_PDF) \
  113. --template $(TEMPLATES)/default.latex \
  114. $(SRC) -o $@
  115. html: $(TARGET_HTML)
  116. $(TARGET_HTML): $(OUT_HTML)
  117. @$(ECHO) "\t[PANDOC] html"
  118. @$(PANDOC_CC_HTML) \
  119. --template $(TEMPLATES)/default.html5 \
  120. $(SRC) -o $@
  121. man: $(TARGET_MAN)
  122. $(TARGET_MAN): $(OUT_MAN)
  123. @$(ECHO) "\t[PANDOC] man"
  124. @$(PANDOC_CC_MAN) \
  125. $(SRC) -o $@
  126. .PHONY: $(TARGET_PDF) $(TARGET_HTML)