I want to speed up the build process on my Latex documents by parallelizing the building of the docs. I know that the latex compiler itself is not able to parallelize but i can at least execute the building of the separate docs in parallel. The whole thing is running on a Gitlab CICD Runner that is just executing the top level Makefile.
My Makefiles currently look like this:
Makefile 1 for top level and mid level folders:
# Makefile to go through all the subdirs and execute the makefile there.
SUBDIRS := $(dir $(wildcard */Makefile))
all: $(SUBDIRS)
$(SUBDIRS):
$(MAKE) -C $@
.PHONY: all $(SUBDIRS)
Makefile 2 for lowest level folders where documents are placed
# Makefile to build all latex docs in current folder
DOC_SRCS := $(wildcard ./*.tex)
DOC_SRCS_NAME := $(basename $(DOC_SRCS))
.PHONY: all clean $(DOC_SRCS)
all: $(DOC_SRCS)
$(DOC_SRCS):
mkdir -p build/img
latexmk -outdir=build -shell-escape -pdf $@
cp build/$(basename $@).pdf $(basename $@).pdf
clean :
rm -rf build/*
The folder structure looks something like this (I shortened it to make it less cluttered):
project
│ Makefile 1
│
└───folder
│ │ Makefile 1
│ │
│ └───subfolder
│ │ Makefile 2
│ │ file1.tex
│ │ ...
│
└───folder
| │ Makefile 1
│ │
│ └───subfolder
│ │ Makefile 2
│ │ file1.tex
│ │ ...
│ ...
My question now is, is it enough to add the -jN
flag to the make
calls or do i need to take special care of something?
Does the flag only need to be at the Makefile 1 at the $(MAKE) -C $@
call?
I couldn't really get the flag for the jobs to work properly how i intended to.