181 lines
4.8 KiB
Makefile
181 lines
4.8 KiB
Makefile
# Makefile für Markdown-eBook Handbuch mit Pandoc
|
|
# (C) 2024-2025 - Adam Skotarczak - 30/06/2025
|
|
# ORIGIN: https://local.ionivation.com/Lorenz-Industrietechnik-GmbH/1000T-Presse-Umbau-2024-Codesys
|
|
|
|
# === load Configfile ===
|
|
include config.mk
|
|
|
|
# === Automatische Konfiguration ===
|
|
VERSION := $(shell cat VERSION)
|
|
MASCHINEVERSION := $(shell cat ../../VERSION)
|
|
MASCHINEVERSION ?= '- nicht gefunden -'
|
|
PYTHON := $(shell command -v python3 || command -v python)
|
|
|
|
# === Nur wsl oder Linux === #
|
|
ifeq ($(OS),Windows_NT)
|
|
set_codepage:
|
|
@if [ "$(OS)" = "Windows_NT" ]; then chcp 65001 >nul; fi
|
|
$(error [⚠] Windows wird nicht unterstützt. Bitte WSL oder Linux verwenden.)
|
|
exit(1)
|
|
endif
|
|
|
|
# === Quelldateien (geordnet nach Nummerierung) ===
|
|
|
|
# Standard: prod, falls nicht durch CLI überschrieben
|
|
MODE ?= prod
|
|
|
|
MD_ALL = $(wildcard $(MANUSCRIPT)/*.md)
|
|
|
|
MD_FILES_prod := $(filter-out $(EXCLUDE_prod), $(MD_ALL))
|
|
MD_FILES_dev = $(MD_ALL)
|
|
|
|
|
|
# Dynamische Auswahl je nach MODE
|
|
define set_md_files
|
|
$(eval MD_FILES := $(MD_FILES_$(MODE)))
|
|
$(eval MD_SORTED := $(sort $(MD_FILES)))
|
|
endef
|
|
|
|
|
|
# === Standardziel: Setze Codepage und führe alle Builds aus ===
|
|
.DEFAULT_GOAL := all
|
|
|
|
|
|
# === Abhängigkeiten prüfen ===
|
|
check-deps: check-python check-fonts
|
|
.PHONY: check-deps
|
|
|
|
|
|
# === Standardziel: Alles bauen ===
|
|
all: clean plain epub pdf html docx toc
|
|
|
|
|
|
# === Hier ist geplant make zu missbrauchen, die notwendigen Abhängigkeiten zu installieren ===
|
|
install:
|
|
@echo "\n⚠ - Noch nicht implementiert!\n"
|
|
|
|
|
|
# === EPUB-Ausgabe ===
|
|
epub: $(OUTPUT)
|
|
$(call set_md_files)
|
|
pandoc $(MD_SORTED) \
|
|
--metadata-file=$(METADATA) \
|
|
--resource-path=media \
|
|
--toc --toc-depth=$(TOCDEPTH) \
|
|
--css=$(CSS) \
|
|
--epub-chapter-level=1 \
|
|
--epub-cover-image=$(LOGO) \
|
|
-V toc-depth=$(TOCDEPTH) \
|
|
-o $(OUTPUT)/$(TITLE).epub
|
|
|
|
|
|
# === PDF über LaTeX (Print-Version) ===
|
|
|
|
# --highlight-style=
|
|
#| Stilname | Beschreibung / Anmutung |
|
|
#| ------------ | --------------------------------------------- |
|
|
#| `pygments` | Klassischer Stil, angelehnt an Pygments |
|
|
#| `tango` | Kontrastreich, an das Tango-Theme angelehnt |
|
|
#| `kate` | Stil des Kate-Editors (KDE) |
|
|
#| `monochrome` | Schwarzweiß, ohne Farben (druckfreundlich) |
|
|
#| `espresso` | Dunkler Hintergrund, helles Code-Highlighting |
|
|
#| `zenburn` | Weicher, augenfreundlicher Dunkelstil |
|
|
#| `haddock` | Stil von Haddock-Dokumentation |
|
|
#| `breezedark` | KDE-Breeze-Dark-inspiriert (dunkel, modern) |
|
|
|
|
# === PDF Generierung ===
|
|
pdf: $(OUTPUT)
|
|
$(call set_md_files)
|
|
@echo "Verwende MODE=$(MODE)"
|
|
@echo "Dateien: $(MD_FILES)"
|
|
pandoc $(MD_SORTED) \
|
|
--columns=1000 \
|
|
--metadata-file=$(METADATA) \
|
|
--metadata version="$(VERSION)" \
|
|
--metadata buildmode="$(MODE)" \
|
|
--metadata maschineversion="$(MASCHINEVERSION)" \
|
|
--resource-path=media \
|
|
--toc --number-sections --toc-depth=$(TOCDEPTH) \
|
|
--template=$(TEX_PRINT) \
|
|
--pdf-engine=xelatex \
|
|
--highlight-style=tango \
|
|
-V toc-depth=$(TOCDEPTH) \
|
|
-V $(GEOMETRY) \
|
|
-o $(OUTPUT)/$(TITLE).pdf
|
|
|
|
# === HTML-Vorschau oder Export ===
|
|
html: $(OUTPUT)
|
|
$(call set_md_files)
|
|
pandoc $(MD_SORTED) \
|
|
--metadata-file=$(METADATA) \
|
|
--resource-path=media \
|
|
--toc --number-sections \
|
|
--css=$(CSS) \
|
|
-o $(OUTPUT)/$(TITLE).html
|
|
|
|
|
|
# === Word-Version (Lektorat etc.) ===
|
|
docx: $(OUTPUT)
|
|
$(call set_md_files)
|
|
pandoc $(MD_SORTED) \
|
|
--metadata-file=$(METADATA) \
|
|
--resource-path=media \
|
|
--toc --number-sections \
|
|
-o $(OUTPUT)/$(TITLE).docx
|
|
|
|
|
|
plain: $(OUTPUT)
|
|
$(call set_md_files)
|
|
pandoc $(MD_SORTED) \
|
|
--metadata-file=$(METADATA) \
|
|
--resource-path=media \
|
|
--wrap=none \
|
|
-t plain \
|
|
-o $(OUTPUT)/$(TITLE)_reintext.txt
|
|
|
|
|
|
# === Vorschau im Terminal (reines Markdown) ===
|
|
preview:
|
|
cat $(MD_SORTED) | less
|
|
|
|
|
|
# === Sicherstellen, dass der Ausgabeordner existiert ===
|
|
$(OUTPUT):
|
|
@mkdir -p $(OUTPUT)
|
|
@echo "[i] Verzeichnis $(OUTPUT) erstellt!"
|
|
|
|
|
|
# === Python-Check ===
|
|
check-python:
|
|
@$(PYTHON) --version || (echo "❌ Python nicht gefunden, wsl gestartet?" && exit 1)
|
|
|
|
|
|
# === Fonts testen ===
|
|
check-fonts:
|
|
@fc-match "$(FONT)" >/dev/null || (echo "❌ Schriftart $(FONT) nicht gefunden!" && exit 1)
|
|
|
|
|
|
# === Erstellt aus einem vordefinierten Verzeichnis mit Markdown-Dateien einen Inhaltsverzeichnis ===
|
|
toc:
|
|
@echo "📚 Generiere Inhaltsverzeichnis in .\$(INDEXFILE).md ..."
|
|
@$(PYTHON) $(TOOLPATH)/tocgen.py -d $(MANUSCRIPT) -o $(INDEXFILE).md
|
|
@echo "📚 Inhaltsverzeichnis in .\$(INDEXFILE).md erstellt."
|
|
@echo "✅ Fertig."
|
|
|
|
|
|
# === Bereinigen der Ausgaben ===
|
|
clean:
|
|
@rm -rf $(OUTPUT)/*
|
|
@echo "🧹 alle Builds unter $(OUTPUT)\ gelöscht."
|
|
@rm -f $(INDEXFILE).md
|
|
@echo "🧹 $(INDEXFILE).md gelöscht."
|
|
|
|
clear: clean
|
|
|
|
# === Hilfe ===
|
|
help:
|
|
@echo "\n⚠ - Noch nicht implementiert!\n"
|
|
|
|
|
|
.PHONY: all toc epub check-python pdf html docx preview clean
|