2019-05-19 15:07:45 +03:00
# SPDX-License-Identifier: GPL-2.0-only
2013-05-06 22:40:14 +04:00
i n c l u d e . . / . . / s c r i p t s / M a k e f i l e . i n c l u d e
2016-03-18 19:57:20 +03:00
i n c l u d e . . / . . / s c r i p t s / u t i l i t i e s . m a k
2012-09-28 21:47:07 +04:00
2021-07-15 04:33:43 +03:00
ARTICLES =
# with their own formatting rules.
SP_ARTICLES =
2009-05-30 14:38:51 +04:00
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)
2012-02-06 19:17:23 +04:00
_MAN_XML = $( patsubst %.txt,%.xml,$( MAN_TXT) )
_MAN_HTML = $( patsubst %.txt,%.html,$( MAN_TXT) )
2009-05-30 14:38:51 +04:00
2012-02-06 19:17:23 +04:00
MAN_XML = $( addprefix $( OUTPUT) ,$( _MAN_XML) )
MAN_HTML = $( addprefix $( OUTPUT) ,$( _MAN_HTML) )
2009-05-30 14:38:51 +04:00
2012-02-06 19:17:23 +04:00
_DOC_HTML = $( _MAN_HTML)
_DOC_HTML += $( patsubst %,%.html,$( ARTICLES) $( SP_ARTICLES) )
DOC_HTML = $( addprefix $( OUTPUT) ,$( _DOC_HTML) )
2009-05-30 14:38:51 +04:00
2012-02-06 19:17:23 +04:00
_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) )
2009-05-30 14:38:51 +04:00
2010-03-11 15:57:00 +03:00
# Make the path relative to DESTDIR, not prefix
i f n d e f D E S T D I R
2009-05-30 14:38:51 +04:00
prefix ?= $( HOME)
2010-03-11 15:57:00 +03:00
e n d i f
2009-05-30 14:38:51 +04:00
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
2020-04-16 19:20:55 +03:00
ASCIIDOC_EXTRA += --unsafe -f asciidoc.conf
2018-04-24 18:04:56 +03:00
ASCIIDOC_HTML = xhtml11
2009-05-30 14:38:51 +04:00
MANPAGE_XSL = manpage-normal.xsl
XMLTO_EXTRA =
INSTALL ?= install
RM ?= rm -f
DOC_REF = origin/man
HTML_REF = origin/html
2018-04-24 18:04:56 +03:00
i f d e f U S E _ A S C I I D O C T O R
ASCIIDOC = asciidoctor
2020-04-16 19:20:55 +03:00
ASCIIDOC_EXTRA += -a compat-mode
2018-04-24 18:04:56 +03:00
ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
ASCIIDOC_EXTRA += -a mansource = "perf" -a manmanual = "perf Manual"
ASCIIDOC_HTML = xhtml5
e n d i f
2009-05-30 14:38:51 +04:00
infodir ?= $( prefix) /share/info
MAKEINFO = makeinfo
INSTALL_INFO = install-info
DOCBOOK2X_TEXI = docbook2x-texi
DBLATEX = dblatex
2012-09-28 21:47:07 +04:00
XMLTO = xmlto
2009-05-30 14:38:51 +04:00
i f n d e f P E R L _ P A T H
PERL_PATH = /usr/bin/perl
e n d i f
- i n c l u d e . . / c o n f i g . m a k . a u t o g e n
- i n c l u d e . . / c o n f i g . m a k
2012-09-28 21:47:07 +04:00
_tmp_tool_path := $( call get-executable,$( ASCIIDOC) )
i f e q ( $( _tmp_tool_path ) , )
missing_tools = $( ASCIIDOC)
e n d i f
2018-04-24 18:04:56 +03:00
i f n d e f U S E _ A S C I I D O C T O R
2012-09-28 21:47:07 +04:00
_tmp_tool_path := $( call get-executable,$( XMLTO) )
i f e q ( $( _tmp_tool_path ) , )
missing_tools += $( XMLTO)
e n d i f
2018-04-24 18:04:56 +03:00
e n d i f
2012-09-28 21:47:07 +04:00
2009-05-30 14:38:51 +04:00
#
# 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).
#
i f d e f A S C I I D O C 8
ASCIIDOC_EXTRA += -a asciidoc7compatible
e n d i f
i f d e f D O C B O O K _ X S L _ 1 7 2
ASCIIDOC_EXTRA += -a perf-asciidoc-no-roff
MANPAGE_XSL = manpage-1.72.xsl
e l s e
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
e n d i f
i f d e f M A N _ B O L D _ L I T E R A L
XMLTO_EXTRA += -m manpage-bold-literal.xsl
e n d i f
i f d e f D O C B O O K _ S U P P R E S S _ S P
XMLTO_EXTRA += -m manpage-suppress-sp.xsl
e n d i f
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 =
i f n e q ( $( findstring $ ( MAKEFLAGS ) ,w ) , w )
PRINT_DIR = --no-print-directory
e l s e # "make -w"
NO_SUBDIR = :
e n d i f
i f n e q ( $( findstring $ ( MAKEFLAGS ) ,s ) , s )
2013-05-03 17:49:53 +04:00
i f n e q ( $( V ) , 1 )
2013-10-09 13:49:27 +04:00
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 ' $@ ;
2009-05-30 14:38:51 +04:00
QUIET_STDERR = 2> /dev/null
QUIET_SUBDIR0 = +@subdir=
2013-10-09 13:49:27 +04:00
QUIET_SUBDIR1 = ; $( NO_SUBDIR) \
echo ' SUBDIR ' $$ subdir; \
2009-05-30 14:38:51 +04:00
$( MAKE) $( PRINT_DIR) -C $$ subdir
export V
e n d i f
e n d i f
2021-07-15 04:33:40 +03:00
all : html man info
2009-05-30 14:38:51 +04:00
html : $( DOC_HTML )
$(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7) : asciidoc .conf
man : man 1 man 5 man 7
man1 : $( DOC_MAN 1)
man5 : $( DOC_MAN 5)
man7 : $( DOC_MAN 7)
2012-02-06 19:17:23 +04:00
info : $( OUTPUT ) perf .info $( OUTPUT ) perfman .info
2009-05-30 14:38:51 +04:00
install : install -man
2012-09-28 21:47:07 +04:00
check-man-tools :
i f d e f m i s s i n g _ t o o l s
$( error " You need to install $( missing_tools) for man pages " )
e n d i f
do-install-man : man
2013-10-09 13:49:29 +04:00
$( 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)
2009-05-30 14:38:51 +04:00
2017-08-20 14:39:13 +03:00
install-man : check -man -tools man do -install -man
2012-09-28 21:47:07 +04:00
i f d e f m i s s i n g _ t o o l s
2013-10-02 08:51:27 +04:00
DO_INSTALL_MAN = $( warning Please install $( missing_tools) to have the man pages installed)
2012-09-28 21:47:07 +04:00
e l s e
2013-10-02 08:51:27 +04:00
DO_INSTALL_MAN = do -install-man
2012-09-28 21:47:07 +04:00
e n d i f
2013-10-02 08:51:27 +04:00
try-install-man : $( DO_INSTALL_MAN )
2009-05-30 14:38:51 +04:00
install-info : info
2013-10-09 13:49:29 +04:00
$( call QUIET_INSTALL, Documentation-info) \
$( INSTALL) -d -m 755 $( DESTDIR) $( infodir) ; \
$( INSTALL) -m 644 $( OUTPUT) perf.info $( OUTPUT) perfman.info $( DESTDIR) $( infodir) ; \
2009-05-30 14:38:51 +04:00
if test -r $( DESTDIR) $( infodir) /dir; then \
2013-10-09 13:49:29 +04:00
$( INSTALL_INFO) --info-dir= $( DESTDIR) $( infodir) perf.info ; \
$( INSTALL_INFO) --info-dir= $( DESTDIR) $( infodir) perfman.info ; \
2009-05-30 14:38:51 +04:00
else \
echo " No directory found in $( DESTDIR) $( infodir) " >& 2 ; \
fi
2011-02-10 04:11:00 +03:00
#install-html: html
# '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir)
2009-05-30 14:38:51 +04:00
#
# Determine "include::" file references in asciidoc files.
#
2012-02-06 19:17:23 +04:00
$(OUTPUT)doc.dep : $( wildcard *.txt ) build -docdep .perl
2009-05-30 14:38:51 +04:00
$( QUIET_GEN) $( RM) $@ + $@ && \
$( PERL_PATH) ./build-docdep.perl >$@ + $( QUIET_STDERR) && \
mv $@ + $@
2019-08-01 06:28:12 +03:00
- i n c l u d e $( OUTPUT ) d o c . d e p
2009-05-30 14:38:51 +04:00
2013-10-09 13:49:26 +04:00
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++ \
2021-07-15 04:33:42 +03:00
$( OUTPUT) perf.info $( OUTPUT) perfman.info $( OUTPUT) doc.dep \
2021-07-15 04:33:41 +03:00
$( OUTPUT) technical/api-*.html $( OUTPUT) technical/api-index.txt
2009-05-30 14:38:51 +04:00
clean :
2013-10-09 13:49:26 +04:00
$( call QUIET_CLEAN, Documentation) $( RM) $( CLEAN_FILES)
2012-02-06 19:17:23 +04:00
$(MAN_HTML) : $( OUTPUT ) %.html : %.txt
2009-05-30 14:38:51 +04:00
$( QUIET_ASCIIDOC) $( RM) $@ + $@ && \
2018-04-24 18:04:56 +03:00
$( ASCIIDOC) -b $( ASCIIDOC_HTML) -d manpage \
$( ASCIIDOC_EXTRA) -aperf_version= $( PERF_VERSION) -o $@ + $< && \
mv $@ + $@
2023-05-13 23:37:43 +03:00
# Generate date from either KBUILD_BUILD_TIMESTAMP or git log of
# the doc input file
PERF_DATE = $( strip \
$( if $( KBUILD_BUILD_TIMESTAMP) , \
$( shell date -u -d '$(KBUILD_BUILD_TIMESTAMP)' +%Y-%m-%d) , \
$( shell git log -1 --pretty= "format:%cd" \
--date= short --no-show-signature $<) ) )
2023-05-13 23:37:24 +03:00
2018-04-24 18:04:56 +03:00
i f d e f U S E _ A S C I I D O C T O R
2018-09-16 18:17:05 +03:00
$(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : %.txt
2018-04-24 18:04:56 +03:00
$( QUIET_ASCIIDOC) $( RM) $@ + $@ && \
$( ASCIIDOC) -b manpage -d manpage \
2023-05-13 23:37:24 +03:00
$( ASCIIDOC_EXTRA) -aperf_version= $( PERF_VERSION) \
-adocdate= $( PERF_DATE) -o $@ + $< && \
2009-05-30 14:38:51 +04:00
mv $@ + $@
2018-04-24 18:04:56 +03:00
e n d i f
2009-05-30 14:38:51 +04:00
2012-02-06 19:17:23 +04:00
$(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $( OUTPUT ) %.xml
2009-05-30 14:38:51 +04:00
$( QUIET_XMLTO) $( RM) $@ && \
2013-05-06 22:40:14 +04:00
$( XMLTO) -o $( OUTPUT) . -m $( MANPAGE_XSL) $( XMLTO_EXTRA) man $<
2009-05-30 14:38:51 +04:00
2012-02-06 19:17:23 +04:00
$(OUTPUT)%.xml : %.txt
2009-05-30 14:38:51 +04:00
$( QUIET_ASCIIDOC) $( RM) $@ + $@ && \
2018-04-24 18:04:56 +03:00
$( ASCIIDOC) -b docbook -d manpage \
2020-03-11 08:21:10 +03:00
$( ASCIIDOC_EXTRA) -aperf_version= $( PERF_VERSION) \
2023-05-13 23:37:24 +03:00
-aperf_date= $( PERF_DATE) -o $@ + $< && \
2009-05-30 14:38:51 +04:00
mv $@ + $@
XSLT = docbook.xsl
XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css
2012-02-06 19:17:23 +04:00
$(OUTPUT)perfman.texi : $( MAN_XML ) cat -texi .perl
2009-05-30 14:38:51 +04:00
$( QUIET_DB2TEXI) $( RM) $@ + $@ && \
( $( foreach xml,$( MAN_XML) ,$( DOCBOOK2X_TEXI) --encoding= UTF-8 \
--to-stdout $( xml) && ) true ) > $@ ++ && \
$( PERL_PATH) cat-texi.perl $@ <$@ ++ >$@ + && \
rm $@ ++ && \
mv $@ + $@
2012-02-06 19:17:23 +04:00
$(OUTPUT)perfman.info : $( OUTPUT ) perfman .texi
2021-07-15 04:33:37 +03:00
$( QUIET_MAKEINFO) $( MAKEINFO) --no-split --no-validate -o $@ $* .texi
2009-05-30 14:38:51 +04:00
$(patsubst %.txt,%.texi,$(MAN_TXT)) : %.texi : %.xml
$( QUIET_DB2TEXI) $( RM) $@ + $@ && \
$( DOCBOOK2X_TEXI) --to-stdout $* .xml >$@ + && \
mv $@ + $@
$(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
2018-04-24 18:04:56 +03:00
$( QUIET_ASCIIDOC) $( ASCIIDOC) -b $( ASCIIDOC_HTML) $* .txt
2009-05-30 14:38:51 +04:00
WEBDOC_DEST = /pub/software/tools/perf/docs
2011-02-10 04:11:00 +03:00
# UNIMPLEMENTED
#install-webdoc : html
# '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST)
2009-05-30 14:38:51 +04:00
2011-02-10 04:11:00 +03:00
# quick-install: quick-install-man
2009-05-30 14:38:51 +04:00
2011-02-10 04:11:00 +03:00
# quick-install-man:
# '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(DOC_REF) $(DESTDIR)$(mandir)
2009-05-30 14:38:51 +04:00
2011-02-10 04:11:00 +03:00
#quick-install-html:
# '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REF) $(DESTDIR)$(htmldir)