Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Makefile 2.77 KiB
# Generate PDFs from the Markdown source files
#
# In order to use this makefile, you need some tools:
# - GNU make
# - Pandoc
# - LuaLaTeX
# - DejaVu Sans fonts

# Directory containing source (Markdown) files
source := engineering

# Directory containing pdf files
output := review-docs

# All markdown files in src/ are considered sources
sources := $(wildcard $(source)/**/**/*.md)

# Convert the list of source files (Markdown files in directory src/)
# into a list of output files (PDFs in directory print/).
objects := $(patsubst %.md,%.pdf,$(subst $(source),$(output),$(sources)))

all: build $(objects) post-build

.PHONY: build

build :
	mkdir -p $(output)
	mkdir -p $(output)/electronics
	mkdir -p $(output)/powertrain
	mkdir -p $(output)/electronics/drivers_input_and_information
	mkdir -p $(output)/electronics/data_aquisition_treatment
	mkdir -p $(output)/electronics/harnessing
	mkdir -p $(output)/electronics/off_board_electronics
	mkdir -p $(output)/electronics/on_board_eletronics
	mkdir -p $(output)/electronics/power_distribution
	mkdir -p $(output)/electronics/telemetry
	mkdir -p $(output)/powertrain/accumulator
	mkdir -p $(output)/powertrain/inverters

# Recipe for converting a Markdown file into PDF using Pandoc
$(output)/%.pdf: $(source)/%.md
	# resources in each file are referenced based on file directory. Pandoc
	# compiles in the working directory. So we get the dirname for each input
	# file so we can feed it to the --resource-path flag of pandoc
	$(eval DIR= $(shell  dirname -- "$<"))

	pandoc \
		--variable mainfont="Fira Mono" \
		--variable monofont="Fira Code" \
		--variable fontsize=11pt \
		--variable geometry:"top=1.5cm, bottom=2.5cm, left=3cm, right=3cm" \
		--variable geometry:a4paper \
		--table-of-contents \
		--number-sections \
		--resource-path=$(DIR) \
		-f markdown  $< \
		-o $@

post-build:
	cp -r $(source)/electronics/drivers_input_and_information/files $(output)/electronics/driver_input_and_information
	cp -r $(source)/electronics/data_aquisition_treatment/files 	$(output)/electronics/data_aquisition_treatment
	cp -r $(source)/electronics/harnessing/files 					$(output)/electronics/harnessing 
	cp -r $(source)/electronics/off_board_electronics/files 		$(output)/electronics/off_board_electronics
	cp -r $(source)/electronics/on_board_eletronics/files 			$(output)/electronics/on_board_eletronics
	cp -r $(source)/electronics/power_distribution/files 			$(output)/electronics/power_distribution
	cp -r $(source)/electronics/telemetry/files 					$(output)/electronics/telemetry
	cp -r $(source)/powertrain/accumulator/files 					$(output)/powertrain/accumulator
	cp -r $(source)/powertrain/inverters/files 						$(output)/powertrain/inverters

.PHONY: send
send:
	zip $(output).zip $(wildcard $(output)/**/**/*)

.PHONY: clean

clean:
	rm -rf $(output) $(output).zip