93 lines
3.2 KiB
Makefile
93 lines
3.2 KiB
Makefile
.PHONY: help build-thesis build-expose clean clean-paper check-variables set-shell set-directory
|
|
.DEFAULT_GOAL := help
|
|
|
|
# --- Load .env if it exists (no error if missing) ---
|
|
-include .env
|
|
|
|
# --- Set default directory if not defined ---
|
|
DIRECTORY ?= $(shell pwd)
|
|
|
|
|
|
# Variables
|
|
LATEX_DIR = paper
|
|
LATEX_CONTAINER = texlive/texlive:TL2024-historic
|
|
|
|
THESIS_SRC = dokumentation.tex
|
|
EXPOSE_SRC = expose.tex
|
|
|
|
# Colors
|
|
GREEN := \033[1;32m
|
|
WHITE := \033[0;37m
|
|
GRAY := \033[0;37m
|
|
RESET := \033[0m
|
|
|
|
help: ## Show this help message
|
|
@echo "Available commands:"
|
|
@grep -E "^[a-zA-Z_-]+:.*?## .*$$" "$(firstword $(MAKEFILE_LIST))" \
|
|
| sort \
|
|
| awk -v GREEN="$(GREEN)" -v RESET="$(RESET)" -v GRAY="$(GRAY)" 'BEGIN {FS=":.*?## "} {printf " %smake %-15s%s %s%s\n", GREEN, $$1, RESET, GRAY, $$2}'
|
|
|
|
clean: clean-paper ## Remove all auxiliary files (calls clean-paper)
|
|
|
|
clean-paper: ## Remove LaTeX auxiliary files from the 'paper' directory
|
|
@rm -f $(LATEX_DIR)/*.aux \
|
|
$(LATEX_DIR)/*.log \
|
|
$(LATEX_DIR)/*.out \
|
|
$(LATEX_DIR)/*.toc \
|
|
$(LATEX_DIR)/*.bbl \
|
|
$(LATEX_DIR)/*.blg \
|
|
$(LATEX_DIR)/*.fls \
|
|
$(LATEX_DIR)/*.fdb_latexmk \
|
|
$(LATEX_DIR)/*.bcf \
|
|
$(LATEX_DIR)/*.run.xml
|
|
|
|
build-thesis: clean-paper ## Build the main thesis PDF (dokumentation.tex) using DockerJa, and latexmk
|
|
@docker run --rm -v "$(DIRECTORY)/$(LATEX_DIR):/data" -w //data $(LATEX_CONTAINER) latexmk -pdf $(THESIS_SRC)
|
|
|
|
build-expose: clean-paper ## Build the expose PDF (expose.tex) using Docker and latexmk
|
|
@docker run --rm -v "$(DIRECTORY)/$(LATEX_DIR):/data" -w //data $(LATEX_CONTAINER) latexmk -pdf $(EXPOSE_SRC)
|
|
|
|
set-shell: ## Set the shell Make should use
|
|
ifeq ($(LOCAL_SHELL),)
|
|
@echo "Usage: make set-shell LOCAL_SHELL=<path to shell> [LOCAL_SHELLFLAGS='<flags>']"
|
|
@echo "Example: make set-shell LOCAL_SHELL=\"C:/Progra~1/Git/usr/bin/bash.exe\" LOCAL_SHELLFLAGS=\"--login -i -c\""
|
|
else
|
|
@echo "LOCAL_SHELL parameter detected, updating .env..."
|
|
@if grep -q '^SHELL=' .env 2>/dev/null; then \
|
|
sed -i 's|^SHELL=.*|SHELL=$(LOCAL_SHELL)|' .env; \
|
|
echo "Updated SHELL in .env"; \
|
|
else \
|
|
echo "SHELL=$(LOCAL_SHELL)" >> .env; \
|
|
echo "Added SHELL to .env"; \
|
|
fi
|
|
ifneq ($(LOCAL_SHELLFLAGS),)
|
|
@echo "LOCAL_SHELLFLAGS parameter detected, updating .env..."
|
|
@if grep -q '^SHELLFLAGS=' .env 2>/dev/null; then \
|
|
sed -i 's|^SHELLFLAGS=.*|SHELLFLAGS=$(LOCAL_SHELLFLAGS)|' .env; \
|
|
echo "Updated SHELLFLAGS in .env"; \
|
|
else \
|
|
echo "SHELLFLAGS=$(LOCAL_SHELLFLAGS)" >> .env; \
|
|
echo "Added SHELLFLAGS to .env"; \
|
|
fi
|
|
endif
|
|
endif
|
|
|
|
set-directory: ## Set the project directory Make should use
|
|
ifeq ($(LOCAL_DIRECTORY),)
|
|
@echo "Usage: make set-directory LOCAL_DIRECTORY=<path to project>"
|
|
else
|
|
@echo "LOCAL_DIRECTORY parameter detected, updating .env..."
|
|
@if grep -q '^DIRECTORY=' .env 2>/dev/null; then \
|
|
sed -i 's|^DIRECTORY=.*|DIRECTORY=$(LOCAL_DIRECTORY)|' .env; \
|
|
echo "Updated DIRECTORY in .env"; \
|
|
else \
|
|
echo "DIRECTORY=$(LOCAL_DIRECTORY)" >> .env; \
|
|
echo "Added DIRECTORY to .env"; \
|
|
fi
|
|
endif
|
|
|
|
check-variables: ## Checks which variables Make is using (SHELL, SHELLFLAGS, DIRECTORY)
|
|
@echo "---- Makefile Variables Check ----"
|
|
@echo "SHELL = $(SHELL)"
|
|
@echo "SHELLFLAGS = $(SHELLFLAGS)"
|
|
@echo "DIRECTORY = $(DIRECTORY)"
|