Files
xen/docs/Makefile
T
Olaf Hering 057e61fba1 tools: replace private DOCDIR with automake docdir
Reuse automake variable instead of inventing a private variable.

The result of this command:
 git grep -wnl DOCDIR | xargs sed -i 's@DOCDIR@docdir@g'

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Cc: Ian Jackson <ian.jackson@eu.citrix.com>
Cc: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Cc: Ian Campbell <ian.campbell@citrix.com>
Cc: Wei Liu <wei.liu2@citrix.com>
Cc: Samuel Thibault <samuel.thibault@ens-lyon.org>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
2015-05-21 15:12:11 +01:00

201 lines
5.1 KiB
Makefile

XEN_ROOT=$(CURDIR)/..
include $(XEN_ROOT)/Config.mk
-include $(XEN_ROOT)/config/Docs.mk
VERSION := $(shell $(MAKE) -C $(XEN_ROOT)/xen --no-print-directory xenversion)
DOC_ARCHES := arm x86_32 x86_64
# Documentation sources to build
MAN1SRC-y := $(sort $(wildcard man/xl*.pod.1))
MAN1SRC-y += $(sort $(wildcard man/xenstore*.pod.1))
MAN5SRC-y := $(sort $(wildcard man/xl*.pod.5))
MARKDOWNSRC-y := $(sort $(wildcard misc/*.markdown))
TXTSRC-y := $(sort $(wildcard misc/*.txt))
PANDOCSRC-y := $(sort $(wildcard specs/*.pandoc))
# Documentation targets
DOC_MAN1 := $(patsubst man/%.pod.1,man1/%.1,$(MAN1SRC-y))
DOC_MAN5 := $(patsubst man/%.pod.5,man5/%.5,$(MAN5SRC-y))
DOC_HTML := $(patsubst %.markdown,html/%.html,$(MARKDOWNSRC-y)) \
$(patsubst %.pandoc,html/%.html,$(PANDOCSRC-y)) \
$(patsubst man/%.pod.1,html/man/%.1.html,$(MAN1SRC-y)) \
$(patsubst man/%.pod.5,html/man/%.5.html,$(MAN5SRC-y)) \
$(patsubst %.txt,html/%.txt,$(TXTSRC-y)) \
$(patsubst %,html/hypercall/%/index.html,$(DOC_ARCHES))
DOC_TXT := $(patsubst %.txt,txt/%.txt,$(TXTSRC-y)) \
$(patsubst %.markdown,txt/%.txt,$(MARKDOWNSRC-y)) \
$(patsubst %.pandoc,txt/%.txt,$(PANDOCSRC-y)) \
$(patsubst man/%.pod.1,txt/man/%.1.txt,$(MAN1SRC-y)) \
$(patsubst man/%.pod.5,txt/man/%.5.txt,$(MAN5SRC-y))
DOC_PDF := $(patsubst %.markdown,pdf/%.pdf,$(MARKDOWNSRC-y)) \
$(patsubst %.pandoc,pdf/%.pdf,$(PANDOCSRC-y))
# Top level build targets
.PHONY: all
all: build
.PHONY: build
build: html txt pdf man-pages figs
.PHONY: html
html: $(DOC_HTML) html/index.html
.PHONY: txt
txt: $(DOC_TXT)
.PHONY: figs
figs:
ifneq ($(FIG2DEV),)
set -x; $(MAKE) -C figs
else
@echo "fig2dev (transfig) not installed; skipping figs."
endif
.PHONY: man-pages
man-pages: $(DOC_MAN1) $(DOC_MAN5)
.PHONY: pdf
pdf: $(DOC_PDF)
.PHONY: clean
clean:
$(MAKE) -C figs clean
rm -rf .word_count *.aux *.dvi *.bbl *.blg *.glo *.idx *~
rm -rf *.ilg *.log *.ind *.toc *.bak *.tmp core
rm -rf html txt pdf
rm -rf man5
rm -rf man1
.PHONY: distclean
distclean: clean
rm -rf $(XEN_ROOT)/config/Docs.mk config.log config.status config.cache \
autom4te.cache
# Top level install targets
.PHONY: install-man-pages
install-man-pages: man-pages
$(INSTALL_DIR) $(DESTDIR)$(mandir)
cp -R man1 $(DESTDIR)$(mandir)
cp -R man5 $(DESTDIR)$(mandir)
.PHONY: install-html
install-html: html txt figs
$(INSTALL_DIR) $(DESTDIR)$(docdir)
[ ! -d html ] || cp -R html $(DESTDIR)$(docdir)
.PHONY: install
install: install-man-pages install-html
# Individual file build targets
man1/%.1: man/%.pod.1 Makefile
ifneq ($(POD2MAN),)
@$(INSTALL_DIR) $(@D)
$(POD2MAN) --release=$(VERSION) --name=$* -s 1 -c "Xen" $< $@
else
@echo "pod2man not installed; skipping $@"
endif
man5/%.5: man/%.pod.5 Makefile
ifneq ($(POD2MAN),)
@$(INSTALL_DIR) $(@D)
$(POD2MAN) --release=$(VERSION) --name=$* -s 5 -c "Xen" $< $@
else
@echo "pod2man not installed; skipping $@"
endif
html/index.html: $(DOC_HTML) $(CURDIR)/gen-html-index INDEX
$(PERL) -w -- $(CURDIR)/gen-html-index -i INDEX html $(DOC_HTML)
html/%.html: %.markdown
ifneq ($(MARKDOWN),)
@$(INSTALL_DIR) $(@D)
$(MARKDOWN) $< > $@
else
@echo "markdown not installed; skipping $@"
endif
html/%.txt: %.txt
@$(INSTALL_DIR) $(@D)
$(INSTALL_DATA) $< $@
html/man/%.1.html: man/%.pod.1 Makefile
ifneq ($(POD2HTML),)
@$(INSTALL_DIR) $(@D)
$(POD2HTML) --infile=$< --outfile=$@
else
@echo "pod2html not installed; skipping $@"
endif
html/man/%.5.html: man/%.pod.5 Makefile
ifneq ($(POD2HTML),)
@$(INSTALL_DIR) $(@D)
$(POD2HTML) --infile=$< --outfile=$@
else
@echo "pod2html not installed; skipping $@"
endif
# For non-x86 arches exclude the subarch whole x86 arch.
$(foreach i,$(filter-out x86_32 x86_64,$(DOC_ARCHES)),html/hypercall/$(i)/index.html): EXTRA_EXCLUDE := -X arch-x86
html/hypercall/%/index.html: $(CURDIR)/xen-headers Makefile
rm -rf $(@D)
$(INSTALL_DIR) $(@D)
$(PERL) -w $(CURDIR)/xen-headers -O $(@D) \
-T 'arch-$* - Xen public headers' \
$(patsubst %,-X arch-%,$(filter-out $*,$(DOC_ARCHES))) \
$(patsubst %,-X xen-%,$(filter-out $*,$(DOC_ARCHES))) \
$(EXTRA_EXCLUDE) \
$(XEN_ROOT)/xen include/public include/xen/errno.h
-include $(wildcard html/hypercall/*/.deps)
txt/%.txt: %.txt
@$(INSTALL_DIR) $(@D)
$(INSTALL_DATA) $< $@
txt/%.txt: %.markdown
@$(INSTALL_DIR) $(@D)
$(INSTALL_DATA) $< $@
txt/man/%.1.txt: man/%.pod.1 Makefile
ifneq ($(POD2TEXT),)
@$(INSTALL_DIR) $(@D)
$(POD2TEXT) $< $@
else
@echo "pod2text not installed; skipping $@"
endif
txt/man/%.5.txt: man/%.pod.5 Makefile
ifneq ($(POD2TEXT),)
@$(INSTALL_DIR) $(@D)
$(POD2TEXT) $< $@
else
@echo "pod2text not installed; skipping $@"
endif
pdf/%.pdf: %.markdown
ifneq ($(PANDOC),)
@$(INSTALL_DIR) $(@D)
$(PANDOC) --number-sections --toc --standalone $< --output $@
else
@echo "pandoc not installed; skipping $@"
endif
pdf/%.pdf txt/%.txt html/%.html: %.pandoc
ifneq ($(PANDOC),)
@$(INSTALL_DIR) $(@D)
$(PANDOC) --number-sections --toc --standalone $< --output $@
else
@echo "pandoc not installed; skipping $@"
endif
ifeq (,$(findstring clean,$(MAKECMDGOALS)))
$(XEN_ROOT)/config/Docs.mk:
$(error You have to run ./configure before building docs)
endif