aboutsummaryrefslogtreecommitdiffstats
path: root/manual/build.mk
blob: b07bf830bda18f2c9a4fc94693cde4cabfb1ac17 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
DOC_OUT := manual/$(OUTPUT_DIR)
S_HTML_OUT := $(DOC_OUT)/singlehtml
S_HTML_TARGET := $(S_HTML_OUT)/index.html
HTML_OUT := $(DOC_OUT)/html
HTML_TARGET := $(HTML_OUT)/index.html
PDF_OUT := $(DOC_OUT)/latex
PDF_TARGET := $(PDF_OUT)/qpdf.pdf

TARGETS_manual := doc/qpdf.1 doc/fix-qdf.1 doc/zlib-flate.1
ifeq ($(BUILD_HTML),1)
TARGETS_manual += $(HTML_TARGET) $(S_HTML_TARGET)
endif
ifeq ($(BUILD_PDF),1)
TARGETS_manual += $(PDF_TARGET)
endif

MANUAL_DEPS = $(wildcard manual/*.rst) manual/conf.py

# Prevent targets that run $(SPHINX) from running in parallel by using
# order-only dependencies (the dependencies listed after the |) to
# avoid clashes in temporary files that cause the build to fail with
# the error "_pickle.UnpicklingError: pickle data was truncated"
$(HTML_TARGET): $(MANUAL_DEPS)
	$(SPHINX) -M html manual $(DOC_OUT) -W
	mkdir -p doc
	rm -rf doc/html
	cp -r $(DOC_OUT)/html doc

$(S_HTML_TARGET): $(MANUAL_DEPS) | $(HTML_TARGET)
	$(SPHINX) -M singlehtml manual $(DOC_OUT) -W
	mkdir -p doc
	rm -rf doc/singlehtml
	cp -r $(DOC_OUT)/singlehtml doc

$(PDF_TARGET): $(MANUAL_DEPS) | $(S_HTML_TARGET) $(HTML_TARGET)
	$(SPHINX) -M latexpdf manual $(DOC_OUT) -W
	mkdir -p doc
	cp $(PDF_TARGET) doc/qpdf-manual.pdf

doc/%.1: manual/%.1.in
	mkdir -p doc
	sed -e 's:@PACKAGE_VERSION@:$(PACKAGE_VERSION):g' \
	    -e 's:@docdir@:$(docdir):g' \
	    < $< > $@