aboutsummaryrefslogtreecommitdiffstats
path: root/manual/build.mk
blob: 89285b9407d20be109af208f3199d3eab0d4aa66 (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
45
46
47
48
49
50
51
52
53
54
55
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 += doc/qpdf-manual.html $(HTML_TARGET)
endif
ifeq ($(BUILD_PDF),1)
TARGETS_manual += doc/qpdf-manual.pdf
endif

# 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/index.rst
	$(SPHINX) -M html manual $(DOC_OUT) -W

$(S_HTML_TARGET): manual/index.rst | $(HTML_TARGET)
	$(SPHINX) -M singlehtml manual $(DOC_OUT) -W

$(PDF_TARGET): manual/index.rst | $(S_HTML_TARGET) $(HTML_TARGET)
	$(SPHINX) -M latexpdf manual $(DOC_OUT) -W

# This depends on sphinx-build's singlehtml target creating index.html
# and a _static directory. If that changes, this code has to be
# adjusted. It will also be necessary to adjust the install target in
# make/libtool.mk.
doc/qpdf-manual.html: $(S_HTML_TARGET)
	mkdir -p doc
	@if [ "$(shell find $(S_HTML_OUT)/ -mindepth 1 -type d -print)" != \
             "$(S_HTML_OUT)/_static" ]; then \
	    echo "***"; \
	    echo Expected only directory in $(S_HTML_OUT) to be _static; \
	    echo "***"; \
	    false; \
	fi
	cp $< $@
	mkdir -p doc/_static
	cp -p $(S_HTML_OUT)/_static/* doc/_static

doc/qpdf-manual.pdf: $(PDF_TARGET)
	mkdir -p doc
	cp $< $@

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