0001
0002 include ../../scripts/Makefile.include
0003 include ../../scripts/utilities.mak
0004
0005 ARTICLES =
0006
0007 SP_ARTICLES =
0008
0009 MAN1_TXT= \
0010 $(filter-out $(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \
0011 $(wildcard perf-*.txt)) \
0012 perf.txt
0013 MAN5_TXT=
0014 MAN7_TXT=
0015
0016 MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT)
0017 _MAN_XML=$(patsubst %.txt,%.xml,$(MAN_TXT))
0018 _MAN_HTML=$(patsubst %.txt,%.html,$(MAN_TXT))
0019
0020 MAN_XML=$(addprefix $(OUTPUT),$(_MAN_XML))
0021 MAN_HTML=$(addprefix $(OUTPUT),$(_MAN_HTML))
0022
0023 _DOC_HTML = $(_MAN_HTML)
0024 _DOC_HTML+=$(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES))
0025 DOC_HTML=$(addprefix $(OUTPUT),$(_DOC_HTML))
0026
0027 _DOC_MAN1=$(patsubst %.txt,%.1,$(MAN1_TXT))
0028 _DOC_MAN5=$(patsubst %.txt,%.5,$(MAN5_TXT))
0029 _DOC_MAN7=$(patsubst %.txt,%.7,$(MAN7_TXT))
0030
0031 DOC_MAN1=$(addprefix $(OUTPUT),$(_DOC_MAN1))
0032 DOC_MAN5=$(addprefix $(OUTPUT),$(_DOC_MAN5))
0033 DOC_MAN7=$(addprefix $(OUTPUT),$(_DOC_MAN7))
0034
0035
0036 ifndef DESTDIR
0037 prefix?=$(HOME)
0038 endif
0039 bindir?=$(prefix)/bin
0040 htmldir?=$(prefix)/share/doc/perf-doc
0041 pdfdir?=$(prefix)/share/doc/perf-doc
0042 mandir?=$(prefix)/share/man
0043 man1dir=$(mandir)/man1
0044 man5dir=$(mandir)/man5
0045 man7dir=$(mandir)/man7
0046
0047 ASCIIDOC=asciidoc
0048 ASCIIDOC_EXTRA += --unsafe -f asciidoc.conf
0049 ASCIIDOC_HTML = xhtml11
0050 MANPAGE_XSL = manpage-normal.xsl
0051 XMLTO_EXTRA =
0052 INSTALL?=install
0053 RM ?= rm -f
0054 DOC_REF = origin/man
0055 HTML_REF = origin/html
0056
0057 ifdef USE_ASCIIDOCTOR
0058 ASCIIDOC = asciidoctor
0059 ASCIIDOC_EXTRA += -a compat-mode
0060 ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions
0061 ASCIIDOC_EXTRA += -a mansource="perf" -a manmanual="perf Manual"
0062 ASCIIDOC_HTML = xhtml5
0063 endif
0064
0065 infodir?=$(prefix)/share/info
0066 MAKEINFO=makeinfo
0067 INSTALL_INFO=install-info
0068 DOCBOOK2X_TEXI=docbook2x-texi
0069 DBLATEX=dblatex
0070 XMLTO=xmlto
0071 ifndef PERL_PATH
0072 PERL_PATH = /usr/bin/perl
0073 endif
0074
0075 -include ../config.mak.autogen
0076 -include ../config.mak
0077
0078 _tmp_tool_path := $(call get-executable,$(ASCIIDOC))
0079 ifeq ($(_tmp_tool_path),)
0080 missing_tools = $(ASCIIDOC)
0081 endif
0082
0083 ifndef USE_ASCIIDOCTOR
0084 _tmp_tool_path := $(call get-executable,$(XMLTO))
0085 ifeq ($(_tmp_tool_path),)
0086 missing_tools += $(XMLTO)
0087 endif
0088 endif
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105
0106
0107
0108
0109
0110
0111
0112
0113 ifdef ASCIIDOC8
0114 ASCIIDOC_EXTRA += -a asciidoc7compatible
0115 endif
0116 ifdef DOCBOOK_XSL_172
0117 ASCIIDOC_EXTRA += -a perf-asciidoc-no-roff
0118 MANPAGE_XSL = manpage-1.72.xsl
0119 else
0120 ifdef ASCIIDOC_NO_ROFF
0121
0122
0123 ASCIIDOC_EXTRA += -a perf-asciidoc-no-roff
0124 endif
0125 endif
0126 ifdef MAN_BOLD_LITERAL
0127 XMLTO_EXTRA += -m manpage-bold-literal.xsl
0128 endif
0129 ifdef DOCBOOK_SUPPRESS_SP
0130 XMLTO_EXTRA += -m manpage-suppress-sp.xsl
0131 endif
0132
0133 SHELL_PATH ?= $(SHELL)
0134
0135 SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146 QUIET_SUBDIR0 = +$(MAKE) -C
0147 QUIET_SUBDIR1 =
0148
0149 ifneq ($(findstring $(MAKEFLAGS),w),w)
0150 PRINT_DIR = --no-print-directory
0151 else
0152 NO_SUBDIR = :
0153 endif
0154
0155 ifneq ($(findstring $(MAKEFLAGS),s),s)
0156 ifneq ($(V),1)
0157 QUIET_ASCIIDOC = @echo ' ASCIIDOC '$@;
0158 QUIET_XMLTO = @echo ' XMLTO '$@;
0159 QUIET_DB2TEXI = @echo ' DB2TEXI '$@;
0160 QUIET_MAKEINFO = @echo ' MAKEINFO '$@;
0161 QUIET_DBLATEX = @echo ' DBLATEX '$@;
0162 QUIET_XSLTPROC = @echo ' XSLTPROC '$@;
0163 QUIET_GEN = @echo ' GEN '$@;
0164 QUIET_STDERR = 2> /dev/null
0165 QUIET_SUBDIR0 = +@subdir=
0166 QUIET_SUBDIR1 = ;$(NO_SUBDIR) \
0167 echo ' SUBDIR ' $$subdir; \
0168 $(MAKE) $(PRINT_DIR) -C $$subdir
0169 export V
0170 endif
0171 endif
0172
0173 all: html man info
0174
0175 html: $(DOC_HTML)
0176
0177 $(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7): asciidoc.conf
0178
0179 man: man1 man5 man7
0180 man1: $(DOC_MAN1)
0181 man5: $(DOC_MAN5)
0182 man7: $(DOC_MAN7)
0183
0184 info: $(OUTPUT)perf.info $(OUTPUT)perfman.info
0185
0186 install: install-man
0187
0188 check-man-tools:
0189 ifdef missing_tools
0190 $(error "You need to install $(missing_tools) for man pages")
0191 endif
0192
0193 do-install-man: man
0194 $(call QUIET_INSTALL, Documentation-man) \
0195 $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir); \
0196
0197
0198 $(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir); \
0199
0200
0201
0202 install-man: check-man-tools man do-install-man
0203
0204 ifdef missing_tools
0205 DO_INSTALL_MAN = $(warning Please install $(missing_tools) to have the man pages installed)
0206 else
0207 DO_INSTALL_MAN = do-install-man
0208 endif
0209
0210 try-install-man: $(DO_INSTALL_MAN)
0211
0212 install-info: info
0213 $(call QUIET_INSTALL, Documentation-info) \
0214 $(INSTALL) -d -m 755 $(DESTDIR)$(infodir); \
0215 $(INSTALL) -m 644 $(OUTPUT)perf.info $(OUTPUT)perfman.info $(DESTDIR)$(infodir); \
0216 if test -r $(DESTDIR)$(infodir)/dir; then \
0217 $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) perf.info ;\
0218 $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) perfman.info ;\
0219 else \
0220 echo "No directory found in $(DESTDIR)$(infodir)" >&2 ; \
0221 fi
0222
0223
0224
0225
0226
0227
0228
0229
0230 $(OUTPUT)doc.dep : $(wildcard *.txt) build-docdep.perl
0231 $(QUIET_GEN)$(RM) $@+ $@ && \
0232 $(PERL_PATH) ./build-docdep.perl >$@+ $(QUIET_STDERR) && \
0233 mv $@+ $@
0234
0235 -include $(OUTPUT)doc.dep
0236
0237 CLEAN_FILES = \
0238 $(MAN_XML) $(addsuffix +,$(MAN_XML)) \
0239 $(MAN_HTML) $(addsuffix +,$(MAN_HTML)) \
0240 $(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7) \
0241 $(OUTPUT)*.texi $(OUTPUT)*.texi+ $(OUTPUT)*.texi++ \
0242 $(OUTPUT)perf.info $(OUTPUT)perfman.info $(OUTPUT)doc.dep \
0243 $(OUTPUT)technical/api-*.html $(OUTPUT)technical/api-index.txt
0244 clean:
0245 $(call QUIET_CLEAN, Documentation) $(RM) $(CLEAN_FILES)
0246
0247 $(MAN_HTML): $(OUTPUT)%.html : %.txt
0248 $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
0249 $(ASCIIDOC) -b $(ASCIIDOC_HTML) -d manpage \
0250 $(ASCIIDOC_EXTRA) -aperf_version=$(PERF_VERSION) -o $@+ $< && \
0251 mv $@+ $@
0252
0253 ifdef USE_ASCIIDOCTOR
0254 $(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : %.txt
0255 $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
0256 $(ASCIIDOC) -b manpage -d manpage \
0257 $(ASCIIDOC_EXTRA) -aperf_version=$(PERF_VERSION) -o $@+ $< && \
0258 mv $@+ $@
0259 endif
0260
0261 $(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.xml
0262 $(QUIET_XMLTO)$(RM) $@ && \
0263 $(XMLTO) -o $(OUTPUT). -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
0264
0265 $(OUTPUT)%.xml : %.txt
0266 $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \
0267 $(ASCIIDOC) -b docbook -d manpage \
0268 $(ASCIIDOC_EXTRA) -aperf_version=$(PERF_VERSION) \
0269 -aperf_date=$(shell git log -1 --pretty="format:%cd" \
0270 --date=short $<) \
0271 -o $@+ $< && \
0272 mv $@+ $@
0273
0274 XSLT = docbook.xsl
0275 XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css
0276
0277 $(OUTPUT)perfman.texi: $(MAN_XML) cat-texi.perl
0278 $(QUIET_DB2TEXI)$(RM) $@+ $@ && \
0279 ($(foreach xml,$(MAN_XML),$(DOCBOOK2X_TEXI) --encoding=UTF-8 \
0280 --to-stdout $(xml) &&) true) > $@++ && \
0281 $(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \
0282 rm $@++ && \
0283 mv $@+ $@
0284
0285 $(OUTPUT)perfman.info: $(OUTPUT)perfman.texi
0286 $(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate -o $@ $*.texi
0287
0288 $(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml
0289 $(QUIET_DB2TEXI)$(RM) $@+ $@ && \
0290 $(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@+ && \
0291 mv $@+ $@
0292
0293 $(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt
0294 $(QUIET_ASCIIDOC)$(ASCIIDOC) -b $(ASCIIDOC_HTML) $*.txt
0295
0296 WEBDOC_DEST = /pub/software/tools/perf/docs
0297
0298
0299
0300
0301
0302
0303
0304
0305
0306
0307
0308