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' \ < $< > $@