forked from Minki/linux
ffef80ecf8
The asciidoc package seems behind the recent big wave of python3 conversion, and we were advised to switch to asciidoctor instead. It's almost compatible but some extensions used for perf documentation don't work with it. Here is the patch to cover them, and add the proper support for asciidoctor. Pass USE_ASCIIDOCTOR=yes to make for using asciidoctor instead of asciidoc. The man source and manual attributes are passed via command options. The support for these attributes have been fixed in the latest asciidoctor code. Since asciidoctor can covert to a man page and an HTML directly, we can omit the dependency on xmlto when USE_ASCIIDOCTOR is set. Signed-off-by: Takashi Iwai <tiwai@suse.de> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/20180424150456.17353-1-tiwai@suse.de Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
363 lines
10 KiB
Makefile
363 lines
10 KiB
Makefile
include ../../scripts/Makefile.include
|
|
include ../../scripts/utilities.mak
|
|
|
|
MAN1_TXT= \
|
|
$(filter-out $(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
|
|
$(wildcard perf-*.txt)) \
|
|
perf.txt
|
|
MAN5_TXT=
|
|
MAN7_TXT=
|
|
|
|
MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)
|
|
_MAN_XML=$(patsubst %.txt,%.xml,$(MAN_TXT))
|
|
_MAN_HTML=$(patsubst %.txt,%.html,$(MAN_TXT))
|
|
|
|
MAN_XML=$(addprefix $(OUTPUT),$(_MAN_XML))
|
|
MAN_HTML=$(addprefix $(OUTPUT),$(_MAN_HTML))
|
|
|
|
ARTICLES =
|
|
# with their own formatting rules.
|
|
SP_ARTICLES =
|
|
API_DOCS = $(patsubst %.txt,%,$(filter-out technical/api-index-skel.txt technical/api-index.txt, $(wildcard technical/api-*.txt)))
|
|
SP_ARTICLES += $(API_DOCS)
|
|
SP_ARTICLES += technical/api-index
|
|
|
|
_DOC_HTML = $(_MAN_HTML)
|
|
_DOC_HTML+=$(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
|
|
DOC_HTML=$(addprefix $(OUTPUT),$(_DOC_HTML))
|
|
|
|
_DOC_MAN1=$(patsubst %.txt,%.1,$(MAN1_TXT))
|
|
_DOC_MAN5=$(patsubst %.txt,%.5,$(MAN5_TXT))
|
|
_DOC_MAN7=$(patsubst %.txt,%.7,$(MAN7_TXT))
|
|
|
|
DOC_MAN1=$(addprefix $(OUTPUT),$(_DOC_MAN1))
|
|
DOC_MAN5=$(addprefix $(OUTPUT),$(_DOC_MAN5))
|
|
DOC_MAN7=$(addprefix $(OUTPUT),$(_DOC_MAN7))
|
|
|
|
# Make the path relative to DESTDIR, not prefix
|
|
ifndef DESTDIR
|
|
prefix?=$(HOME)
|
|
endif
|
|
bindir?=$(prefix)/bin
|
|
htmldir?=$(prefix)/share/doc/perf-doc
|
|
pdfdir?=$(prefix)/share/doc/perf-doc
|
|
mandir?=$(prefix)/share/man
|
|
man1dir=$(mandir)/man1
|
|
man5dir=$(mandir)/man5
|
|
man7dir=$(mandir)/man7
|
|
|
|
ASCIIDOC=asciidoc
|
|
ASCIIDOC_EXTRA = --unsafe -f asciidoc.conf
|
|
ASCIIDOC_HTML = xhtml11
|
|
MANPAGE_XSL = manpage-normal.xsl
|
|
XMLTO_EXTRA =
|
|
INSTALL?=install
|
|
RM ?= rm -f
|
|
DOC_REF = origin/man
|
|
HTML_REF = origin/html
|
|
|
|
ifdef USE_ASCIIDOCTOR
|
|
ASCIIDOC = asciidoctor
|
|
ASCIIDOC_EXTRA = -a compat-mode
|
|
ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
|
|
ASCIIDOC_EXTRA += -a mansource="perf" -a manmanual="perf Manual"
|
|
ASCIIDOC_HTML = xhtml5
|
|
endif
|
|
|
|
infodir?=$(prefix)/share/info
|
|
MAKEINFO=makeinfo
|
|
INSTALL_INFO=install-info
|
|
DOCBOOK2X_TEXI=docbook2x-texi
|
|
DBLATEX=dblatex
|
|
XMLTO=xmlto
|
|
ifndef PERL_PATH
|
|
PERL_PATH = /usr/bin/perl
|
|
endif
|
|
|
|
-include ../config.mak.autogen
|
|
-include ../config.mak
|
|
|
|
_tmp_tool_path := $(call get-executable,$(ASCIIDOC))
|
|
ifeq ($(_tmp_tool_path),)
|
|
missing_tools = $(ASCIIDOC)
|
|
endif
|
|
|
|
ifndef USE_ASCIIDOCTOR
|
|
_tmp_tool_path := $(call get-executable,$(XMLTO))
|
|
ifeq ($(_tmp_tool_path),)
|
|
missing_tools += $(XMLTO)
|
|
endif
|
|
endif
|
|
|
|
#
|
|
# For asciidoc ...
|
|
# -7.1.2, no extra settings are needed.
|
|
# 8.0-, set ASCIIDOC8.
|
|
#
|
|
|
|
#
|
|
# For docbook-xsl ...
|
|
# -1.68.1, set ASCIIDOC_NO_ROFF? (based on changelog from 1.73.0)
|
|
# 1.69.0, no extra settings are needed?
|
|
# 1.69.1-1.71.0, set DOCBOOK_SUPPRESS_SP?
|
|
# 1.71.1, no extra settings are needed?
|
|
# 1.72.0, set DOCBOOK_XSL_172.
|
|
# 1.73.0-, set ASCIIDOC_NO_ROFF
|
|
#
|
|
|
|
#
|
|
# If you had been using DOCBOOK_XSL_172 in an attempt to get rid
|
|
# of 'the ".ft C" problem' in your generated manpages, and you
|
|
# instead ended up with weird characters around callouts, try
|
|
# using ASCIIDOC_NO_ROFF instead (it works fine with ASCIIDOC8).
|
|
#
|
|
|
|
ifdef ASCIIDOC8
|
|
ASCIIDOC_EXTRA += -a asciidoc7compatible
|
|
endif
|
|
ifdef DOCBOOK_XSL_172
|
|
ASCIIDOC_EXTRA += -a perf-asciidoc-no-roff
|
|
MANPAGE_XSL = manpage-1.72.xsl
|
|
else
|
|
ifdef ASCIIDOC_NO_ROFF
|
|
# docbook-xsl after 1.72 needs the regular XSL, but will not
|
|
# pass-thru raw roff codes from asciidoc.conf, so turn them off.
|
|
ASCIIDOC_EXTRA += -a perf-asciidoc-no-roff
|
|
endif
|
|
endif
|
|
ifdef MAN_BOLD_LITERAL
|
|
XMLTO_EXTRA += -m manpage-bold-literal.xsl
|
|
endif
|
|
ifdef DOCBOOK_SUPPRESS_SP
|
|
XMLTO_EXTRA += -m manpage-suppress-sp.xsl
|
|
endif
|
|
|
|
SHELL_PATH ?= $(SHELL)
|
|
# Shell quote;
|
|
SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
|
|
|
|
#
|
|
# Please note that there is a minor bug in asciidoc.
|
|
# The version after 6.0.3 _will_ include the patch found here:
|
|
# http://marc.theaimsgroup.com/?l=perf&m=111558757202243&w=2
|
|
#
|
|
# Until that version is released you may have to apply the patch
|
|
# yourself - yes, all 6 characters of it!
|
|
#
|
|
|
|
QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
|
|
QUIET_SUBDIR1 =
|
|
|
|
ifneq ($(findstring $(MAKEFLAGS),w),w)
|
|
PRINT_DIR = --no-print-directory
|
|
else # "make -w"
|
|
NO_SUBDIR = :
|
|
endif
|
|
|
|
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
|
ifneq ($(V),1)
|
|
QUIET_ASCIIDOC = @echo ' ASCIIDOC '$@;
|
|
QUIET_XMLTO = @echo ' XMLTO '$@;
|
|
QUIET_DB2TEXI = @echo ' DB2TEXI '$@;
|
|
QUIET_MAKEINFO = @echo ' MAKEINFO '$@;
|
|
QUIET_DBLATEX = @echo ' DBLATEX '$@;
|
|
QUIET_XSLTPROC = @echo ' XSLTPROC '$@;
|
|
QUIET_GEN = @echo ' GEN '$@;
|
|
QUIET_STDERR = 2> /dev/null
|
|
QUIET_SUBDIR0 = +@subdir=
|
|
QUIET_SUBDIR1 = ;$(NO_SUBDIR) \
|
|
echo ' SUBDIR ' $$subdir; \
|
|
$(MAKE) $(PRINT_DIR) -C $$subdir
|
|
export V
|
|
endif
|
|
endif
|
|
|
|
all: html man
|
|
|
|
html: $(DOC_HTML)
|
|
|
|
$(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7): asciidoc.conf
|
|
|
|
man: man1 man5 man7
|
|
man1: $(DOC_MAN1)
|
|
man5: $(DOC_MAN5)
|
|
man7: $(DOC_MAN7)
|
|
|
|
info: $(OUTPUT)perf.info $(OUTPUT)perfman.info
|
|
|
|
pdf: $(OUTPUT)user-manual.pdf
|
|
|
|
install: install-man
|
|
|
|
check-man-tools:
|
|
ifdef missing_tools
|
|
$(error "You need to install $(missing_tools) for man pages")
|
|
endif
|
|
|
|
do-install-man: man
|
|
$(call QUIET_INSTALL, Documentation-man) \
|
|
$(INSTALL) -d -m 755 $(DESTDIR)$(man1dir); \
|
|
# $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir); \
|
|
# $(INSTALL) -d -m 755 $(DESTDIR)$(man7dir); \
|
|
$(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir); \
|
|
# $(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir); \
|
|
# $(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir)
|
|
|
|
install-man: check-man-tools man do-install-man
|
|
|
|
ifdef missing_tools
|
|
DO_INSTALL_MAN = $(warning Please install $(missing_tools) to have the man pages installed)
|
|
else
|
|
DO_INSTALL_MAN = do-install-man
|
|
endif
|
|
|
|
try-install-man: $(DO_INSTALL_MAN)
|
|
|
|
install-info: info
|
|
$(call QUIET_INSTALL, Documentation-info) \
|
|
$(INSTALL) -d -m 755 $(DESTDIR)$(infodir); \
|
|
$(INSTALL) -m 644 $(OUTPUT)perf.info $(OUTPUT)perfman.info $(DESTDIR)$(infodir); \
|
|
if test -r $(DESTDIR)$(infodir)/dir; then \
|
|
$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) perf.info ;\
|
|
$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) perfman.info ;\
|
|
else \
|
|
echo "No directory found in $(DESTDIR)$(infodir)" >&2 ; \
|
|
fi
|
|
|
|
install-pdf: pdf
|
|
$(call QUIET_INSTALL, Documentation-pdf) \
|
|
$(INSTALL) -d -m 755 $(DESTDIR)$(pdfdir); \
|
|
$(INSTALL) -m 644 $(OUTPUT)user-manual.pdf $(DESTDIR)$(pdfdir)
|
|
|
|
#install-html: html
|
|
# '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir)
|
|
|
|
|
|
#
|
|
# Determine "include::" file references in asciidoc files.
|
|
#
|
|
$(OUTPUT)doc.dep : $(wildcard *.txt) build-docdep.perl
|
|
$(QUIET_GEN)$(RM) $@+ $@ && \
|
|
$(PERL_PATH) ./build-docdep.perl >$@+ $(QUIET_STDERR) && \
|
|
mv $@+ $@
|
|
|
|
-include $(OUPTUT)doc.dep
|
|
|
|
_cmds_txt = cmds-ancillaryinterrogators.txt \
|
|
cmds-ancillarymanipulators.txt \
|
|
cmds-mainporcelain.txt \
|
|
cmds-plumbinginterrogators.txt \
|
|
cmds-plumbingmanipulators.txt \
|
|
cmds-synchingrepositories.txt \
|
|
cmds-synchelpers.txt \
|
|
cmds-purehelpers.txt \
|
|
cmds-foreignscminterface.txt
|
|
cmds_txt=$(addprefix $(OUTPUT),$(_cmds_txt))
|
|
|
|
$(cmds_txt): $(OUTPUT)cmd-list.made
|
|
|
|
$(OUTPUT)cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT)
|
|
$(QUIET_GEN)$(RM) $@ && \
|
|
$(PERL_PATH) ./cmd-list.perl ../command-list.txt $(QUIET_STDERR) && \
|
|
date >$@
|
|
|
|
CLEAN_FILES = \
|
|
$(MAN_XML) $(addsuffix +,$(MAN_XML)) \
|
|
$(MAN_HTML) $(addsuffix +,$(MAN_HTML)) \
|
|
$(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7) \
|
|
$(OUTPUT)*.texi $(OUTPUT)*.texi+ $(OUTPUT)*.texi++ \
|
|
$(OUTPUT)perf.info $(OUTPUT)perfman.info \
|
|
$(OUTPUT)howto-index.txt $(OUTPUT)howto/*.html $(OUTPUT)doc.dep \
|
|
$(OUTPUT)technical/api-*.html $(OUTPUT)technical/api-index.txt \
|
|
$(cmds_txt) $(OUTPUT)*.made
|
|
clean:
|
|
$(call QUIET_CLEAN, Documentation) $(RM) $(CLEAN_FILES)
|
|
|
|
$(MAN_HTML): $(OUTPUT)%.html : %.txt
|
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
|
$(ASCIIDOC) -b $(ASCIIDOC_HTML) -d manpage \
|
|
$(ASCIIDOC_EXTRA) -aperf_version=$(PERF_VERSION) -o $@+ $< && \
|
|
mv $@+ $@
|
|
|
|
ifdef USE_ASCIIDOCTOR
|
|
$(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.txt
|
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
|
$(ASCIIDOC) -b manpage -d manpage \
|
|
$(ASCIIDOC_EXTRA) -aperf_version=$(PERF_VERSION) -o $@+ $< && \
|
|
mv $@+ $@
|
|
endif
|
|
|
|
$(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.xml
|
|
$(QUIET_XMLTO)$(RM) $@ && \
|
|
$(XMLTO) -o $(OUTPUT). -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
|
|
|
|
$(OUTPUT)%.xml : %.txt
|
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
|
$(ASCIIDOC) -b docbook -d manpage \
|
|
$(ASCIIDOC_EXTRA) -aperf_version=$(PERF_VERSION) -o $@+ $< && \
|
|
mv $@+ $@
|
|
|
|
XSLT = docbook.xsl
|
|
XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css
|
|
|
|
$(OUTPUT)user-manual.html: $(OUTPUT)user-manual.xml
|
|
$(QUIET_XSLTPROC)xsltproc $(XSLTOPTS) -o $@ $(XSLT) $<
|
|
|
|
$(OUTPUT)perf.info: $(OUTPUT)user-manual.texi
|
|
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ $(OUTPUT)user-manual.texi
|
|
|
|
$(OUTPUT)user-manual.texi: $(OUTPUT)user-manual.xml
|
|
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
|
$(DOCBOOK2X_TEXI) $(OUTPUT)user-manual.xml --encoding=UTF-8 --to-stdout >$@++ && \
|
|
$(PERL_PATH) fix-texi.perl <$@++ >$@+ && \
|
|
rm $@++ && \
|
|
mv $@+ $@
|
|
|
|
$(OUTPUT)user-manual.pdf: $(OUTPUT)user-manual.xml
|
|
$(QUIET_DBLATEX)$(RM) $@+ $@ && \
|
|
$(DBLATEX) -o $@+ -p /etc/asciidoc/dblatex/asciidoc-dblatex.xsl -s /etc/asciidoc/dblatex/asciidoc-dblatex.sty $< && \
|
|
mv $@+ $@
|
|
|
|
$(OUTPUT)perfman.texi: $(MAN_XML) cat-texi.perl
|
|
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
|
($(foreach xml,$(MAN_XML),$(DOCBOOK2X_TEXI) --encoding=UTF-8 \
|
|
--to-stdout $(xml) &&) true) > $@++ && \
|
|
$(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \
|
|
rm $@++ && \
|
|
mv $@+ $@
|
|
|
|
$(OUTPUT)perfman.info: $(OUTPUT)perfman.texi
|
|
$(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate $*.texi
|
|
|
|
$(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
|
|
$(QUIET_DB2TEXI)$(RM) $@+ $@ && \
|
|
$(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@+ && \
|
|
mv $@+ $@
|
|
|
|
howto-index.txt: howto-index.sh $(wildcard howto/*.txt)
|
|
$(QUIET_GEN)$(RM) $@+ $@ && \
|
|
'$(SHELL_PATH_SQ)' ./howto-index.sh $(wildcard howto/*.txt) >$@+ && \
|
|
mv $@+ $@
|
|
|
|
$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
|
|
$(QUIET_ASCIIDOC)$(ASCIIDOC) -b $(ASCIIDOC_HTML) $*.txt
|
|
|
|
WEBDOC_DEST = /pub/software/tools/perf/docs
|
|
|
|
$(patsubst %.txt,%.html,$(wildcard howto/*.txt)): %.html : %.txt
|
|
$(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
|
|
sed -e '1,/^$$/d' $< | $(ASCIIDOC) -b $(ASCIIDOC_HTML) - >$@+ && \
|
|
mv $@+ $@
|
|
|
|
# UNIMPLEMENTED
|
|
#install-webdoc : html
|
|
# '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)
|
|
|
|
# quick-install: quick-install-man
|
|
|
|
# quick-install-man:
|
|
# '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(DOC_REF) $(DESTDIR)$(mandir)
|
|
|
|
#quick-install-html:
|
|
# '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REF) $(DESTDIR)$(htmldir)
|