Commit | Line | Data |
---|---|---|
ec8f24b7 | 1 | # SPDX-License-Identifier: GPL-2.0-only |
761a0f39 | 2 | include ../../scripts/Makefile.include |
ca70c24f | 3 | include ../../scripts/utilities.mak |
af3df2cf | 4 | |
c44fc5af IR |
5 | ARTICLES = |
6 | # with their own formatting rules. | |
7 | SP_ARTICLES = | |
8 | ||
c1c2365a IM |
9 | MAN1_TXT= \ |
10 | $(filter-out $(addsuffix .txt, $(ARTICLES) $(SP_ARTICLES)), \ | |
11 | $(wildcard perf-*.txt)) \ | |
12 | perf.txt | |
13 | MAN5_TXT= | |
14 | MAN7_TXT= | |
15 | ||
16 | MAN_TXT = $(MAN1_TXT) $(MAN5_TXT) $(MAN7_TXT) | |
762b2935 FBH |
17 | _MAN_XML=$(patsubst %.txt,%.xml,$(MAN_TXT)) |
18 | _MAN_HTML=$(patsubst %.txt,%.html,$(MAN_TXT)) | |
c1c2365a | 19 | |
762b2935 FBH |
20 | MAN_XML=$(addprefix $(OUTPUT),$(_MAN_XML)) |
21 | MAN_HTML=$(addprefix $(OUTPUT),$(_MAN_HTML)) | |
c1c2365a | 22 | |
762b2935 FBH |
23 | _DOC_HTML = $(_MAN_HTML) |
24 | _DOC_HTML+=$(patsubst %,%.html,$(ARTICLES) $(SP_ARTICLES)) | |
25 | DOC_HTML=$(addprefix $(OUTPUT),$(_DOC_HTML)) | |
c1c2365a | 26 | |
762b2935 FBH |
27 | _DOC_MAN1=$(patsubst %.txt,%.1,$(MAN1_TXT)) |
28 | _DOC_MAN5=$(patsubst %.txt,%.5,$(MAN5_TXT)) | |
29 | _DOC_MAN7=$(patsubst %.txt,%.7,$(MAN7_TXT)) | |
30 | ||
31 | DOC_MAN1=$(addprefix $(OUTPUT),$(_DOC_MAN1)) | |
32 | DOC_MAN5=$(addprefix $(OUTPUT),$(_DOC_MAN5)) | |
33 | DOC_MAN7=$(addprefix $(OUTPUT),$(_DOC_MAN7)) | |
c1c2365a | 34 | |
7ae5f213 JK |
35 | # Make the path relative to DESTDIR, not prefix |
36 | ifndef DESTDIR | |
c1c2365a | 37 | prefix?=$(HOME) |
7ae5f213 | 38 | endif |
c1c2365a IM |
39 | bindir?=$(prefix)/bin |
40 | htmldir?=$(prefix)/share/doc/perf-doc | |
41 | pdfdir?=$(prefix)/share/doc/perf-doc | |
42 | mandir?=$(prefix)/share/man | |
43 | man1dir=$(mandir)/man1 | |
44 | man5dir=$(mandir)/man5 | |
45 | man7dir=$(mandir)/man7 | |
c1c2365a IM |
46 | |
47 | ASCIIDOC=asciidoc | |
e9cfa47e | 48 | ASCIIDOC_EXTRA += --unsafe -f asciidoc.conf |
ffef80ec | 49 | ASCIIDOC_HTML = xhtml11 |
c1c2365a IM |
50 | MANPAGE_XSL = manpage-normal.xsl |
51 | XMLTO_EXTRA = | |
52 | INSTALL?=install | |
53 | RM ?= rm -f | |
54 | DOC_REF = origin/man | |
55 | HTML_REF = origin/html | |
56 | ||
ffef80ec TI |
57 | ifdef USE_ASCIIDOCTOR |
58 | ASCIIDOC = asciidoctor | |
e9cfa47e | 59 | ASCIIDOC_EXTRA += -a compat-mode |
ffef80ec TI |
60 | ASCIIDOC_EXTRA += -I. -rasciidoctor-extensions |
61 | ASCIIDOC_EXTRA += -a mansource="perf" -a manmanual="perf Manual" | |
62 | ASCIIDOC_HTML = xhtml5 | |
63 | endif | |
64 | ||
c1c2365a IM |
65 | infodir?=$(prefix)/share/info |
66 | MAKEINFO=makeinfo | |
67 | INSTALL_INFO=install-info | |
68 | DOCBOOK2X_TEXI=docbook2x-texi | |
69 | DBLATEX=dblatex | |
af3df2cf | 70 | XMLTO=xmlto |
c1c2365a IM |
71 | ifndef PERL_PATH |
72 | PERL_PATH = /usr/bin/perl | |
73 | endif | |
74 | ||
75 | -include ../config.mak.autogen | |
76 | -include ../config.mak | |
77 | ||
af3df2cf BP |
78 | _tmp_tool_path := $(call get-executable,$(ASCIIDOC)) |
79 | ifeq ($(_tmp_tool_path),) | |
80 | missing_tools = $(ASCIIDOC) | |
81 | endif | |
82 | ||
ffef80ec | 83 | ifndef USE_ASCIIDOCTOR |
af3df2cf BP |
84 | _tmp_tool_path := $(call get-executable,$(XMLTO)) |
85 | ifeq ($(_tmp_tool_path),) | |
86 | missing_tools += $(XMLTO) | |
87 | endif | |
ffef80ec | 88 | endif |
af3df2cf | 89 | |
c1c2365a IM |
90 | # |
91 | # For asciidoc ... | |
92 | # -7.1.2, no extra settings are needed. | |
93 | # 8.0-, set ASCIIDOC8. | |
94 | # | |
95 | ||
96 | # | |
97 | # For docbook-xsl ... | |
98 | # -1.68.1, set ASCIIDOC_NO_ROFF? (based on changelog from 1.73.0) | |
99 | # 1.69.0, no extra settings are needed? | |
100 | # 1.69.1-1.71.0, set DOCBOOK_SUPPRESS_SP? | |
101 | # 1.71.1, no extra settings are needed? | |
102 | # 1.72.0, set DOCBOOK_XSL_172. | |
103 | # 1.73.0-, set ASCIIDOC_NO_ROFF | |
104 | # | |
105 | ||
106 | # | |
107 | # If you had been using DOCBOOK_XSL_172 in an attempt to get rid | |
108 | # of 'the ".ft C" problem' in your generated manpages, and you | |
109 | # instead ended up with weird characters around callouts, try | |
110 | # using ASCIIDOC_NO_ROFF instead (it works fine with ASCIIDOC8). | |
111 | # | |
112 | ||
113 | ifdef ASCIIDOC8 | |
114 | ASCIIDOC_EXTRA += -a asciidoc7compatible | |
115 | endif | |
116 | ifdef DOCBOOK_XSL_172 | |
117 | ASCIIDOC_EXTRA += -a perf-asciidoc-no-roff | |
118 | MANPAGE_XSL = manpage-1.72.xsl | |
119 | else | |
120 | ifdef ASCIIDOC_NO_ROFF | |
121 | # docbook-xsl after 1.72 needs the regular XSL, but will not | |
122 | # pass-thru raw roff codes from asciidoc.conf, so turn them off. | |
123 | ASCIIDOC_EXTRA += -a perf-asciidoc-no-roff | |
124 | endif | |
125 | endif | |
126 | ifdef MAN_BOLD_LITERAL | |
127 | XMLTO_EXTRA += -m manpage-bold-literal.xsl | |
128 | endif | |
129 | ifdef DOCBOOK_SUPPRESS_SP | |
130 | XMLTO_EXTRA += -m manpage-suppress-sp.xsl | |
131 | endif | |
132 | ||
133 | SHELL_PATH ?= $(SHELL) | |
134 | # Shell quote; | |
135 | SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH)) | |
136 | ||
137 | # | |
138 | # Please note that there is a minor bug in asciidoc. | |
139 | # The version after 6.0.3 _will_ include the patch found here: | |
140 | # http://marc.theaimsgroup.com/?l=perf&m=111558757202243&w=2 | |
141 | # | |
142 | # Until that version is released you may have to apply the patch | |
143 | # yourself - yes, all 6 characters of it! | |
144 | # | |
145 | ||
146 | QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir | |
147 | QUIET_SUBDIR1 = | |
148 | ||
149 | ifneq ($(findstring $(MAKEFLAGS),w),w) | |
150 | PRINT_DIR = --no-print-directory | |
151 | else # "make -w" | |
152 | NO_SUBDIR = : | |
153 | endif | |
154 | ||
155 | ifneq ($(findstring $(MAKEFLAGS),s),s) | |
5125bc22 | 156 | ifneq ($(V),1) |
65fb0992 IM |
157 | QUIET_ASCIIDOC = @echo ' ASCIIDOC '$@; |
158 | QUIET_XMLTO = @echo ' XMLTO '$@; | |
159 | QUIET_DB2TEXI = @echo ' DB2TEXI '$@; | |
160 | QUIET_MAKEINFO = @echo ' MAKEINFO '$@; | |
161 | QUIET_DBLATEX = @echo ' DBLATEX '$@; | |
162 | QUIET_XSLTPROC = @echo ' XSLTPROC '$@; | |
163 | QUIET_GEN = @echo ' GEN '$@; | |
c1c2365a IM |
164 | QUIET_STDERR = 2> /dev/null |
165 | QUIET_SUBDIR0 = +@subdir= | |
65fb0992 IM |
166 | QUIET_SUBDIR1 = ;$(NO_SUBDIR) \ |
167 | echo ' SUBDIR ' $$subdir; \ | |
c1c2365a IM |
168 | $(MAKE) $(PRINT_DIR) -C $$subdir |
169 | export V | |
170 | endif | |
171 | endif | |
172 | ||
361ac7b4 | 173 | all: html man info |
c1c2365a IM |
174 | |
175 | html: $(DOC_HTML) | |
176 | ||
177 | $(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7): asciidoc.conf | |
178 | ||
179 | man: man1 man5 man7 | |
180 | man1: $(DOC_MAN1) | |
181 | man5: $(DOC_MAN5) | |
182 | man7: $(DOC_MAN7) | |
183 | ||
762b2935 | 184 | info: $(OUTPUT)perf.info $(OUTPUT)perfman.info |
c1c2365a | 185 | |
c1c2365a IM |
186 | install: install-man |
187 | ||
af3df2cf BP |
188 | check-man-tools: |
189 | ifdef missing_tools | |
190 | $(error "You need to install $(missing_tools) for man pages") | |
191 | endif | |
192 | ||
193 | do-install-man: man | |
8a5411e9 IM |
194 | $(call QUIET_INSTALL, Documentation-man) \ |
195 | $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir); \ | |
196 | # $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir); \ | |
197 | # $(INSTALL) -d -m 755 $(DESTDIR)$(man7dir); \ | |
198 | $(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(man1dir); \ | |
199 | # $(INSTALL) -m 644 $(DOC_MAN5) $(DESTDIR)$(man5dir); \ | |
200 | # $(INSTALL) -m 644 $(DOC_MAN7) $(DESTDIR)$(man7dir) | |
c1c2365a | 201 | |
2826478a | 202 | install-man: check-man-tools man do-install-man |
af3df2cf | 203 | |
af3df2cf | 204 | ifdef missing_tools |
31f6be65 | 205 | DO_INSTALL_MAN = $(warning Please install $(missing_tools) to have the man pages installed) |
af3df2cf | 206 | else |
31f6be65 | 207 | DO_INSTALL_MAN = do-install-man |
af3df2cf BP |
208 | endif |
209 | ||
31f6be65 IM |
210 | try-install-man: $(DO_INSTALL_MAN) |
211 | ||
c1c2365a | 212 | install-info: info |
8a5411e9 IM |
213 | $(call QUIET_INSTALL, Documentation-info) \ |
214 | $(INSTALL) -d -m 755 $(DESTDIR)$(infodir); \ | |
215 | $(INSTALL) -m 644 $(OUTPUT)perf.info $(OUTPUT)perfman.info $(DESTDIR)$(infodir); \ | |
c1c2365a | 216 | if test -r $(DESTDIR)$(infodir)/dir; then \ |
8a5411e9 IM |
217 | $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) perf.info ;\ |
218 | $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) perfman.info ;\ | |
c1c2365a IM |
219 | else \ |
220 | echo "No directory found in $(DESTDIR)$(infodir)" >&2 ; \ | |
221 | fi | |
222 | ||
4187e262 JB |
223 | #install-html: html |
224 | # '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir) | |
c1c2365a | 225 | |
c1c2365a IM |
226 | |
227 | # | |
228 | # Determine "include::" file references in asciidoc files. | |
229 | # | |
762b2935 | 230 | $(OUTPUT)doc.dep : $(wildcard *.txt) build-docdep.perl |
c1c2365a IM |
231 | $(QUIET_GEN)$(RM) $@+ $@ && \ |
232 | $(PERL_PATH) ./build-docdep.perl >$@+ $(QUIET_STDERR) && \ | |
233 | mv $@+ $@ | |
234 | ||
89b66500 | 235 | -include $(OUTPUT)doc.dep |
c1c2365a | 236 | |
8ec19c0e IM |
237 | CLEAN_FILES = \ |
238 | $(MAN_XML) $(addsuffix +,$(MAN_XML)) \ | |
239 | $(MAN_HTML) $(addsuffix +,$(MAN_HTML)) \ | |
240 | $(DOC_HTML) $(DOC_MAN1) $(DOC_MAN5) $(DOC_MAN7) \ | |
241 | $(OUTPUT)*.texi $(OUTPUT)*.texi+ $(OUTPUT)*.texi++ \ | |
17ef1f14 | 242 | $(OUTPUT)perf.info $(OUTPUT)perfman.info $(OUTPUT)doc.dep \ |
e30b992f | 243 | $(OUTPUT)technical/api-*.html $(OUTPUT)technical/api-index.txt |
c1c2365a | 244 | clean: |
8ec19c0e | 245 | $(call QUIET_CLEAN, Documentation) $(RM) $(CLEAN_FILES) |
762b2935 FBH |
246 | |
247 | $(MAN_HTML): $(OUTPUT)%.html : %.txt | |
c1c2365a | 248 | $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ |
ffef80ec TI |
249 | $(ASCIIDOC) -b $(ASCIIDOC_HTML) -d manpage \ |
250 | $(ASCIIDOC_EXTRA) -aperf_version=$(PERF_VERSION) -o $@+ $< && \ | |
251 | mv $@+ $@ | |
252 | ||
61b3d210 BH |
253 | # Generate date from either KBUILD_BUILD_TIMESTAMP or git log of |
254 | # the doc input file | |
255 | PERF_DATE = $(strip \ | |
256 | $(if $(KBUILD_BUILD_TIMESTAMP), \ | |
257 | $(shell date -u -d '$(KBUILD_BUILD_TIMESTAMP)' +%Y-%m-%d), \ | |
258 | $(shell git log -1 --pretty="format:%cd" \ | |
259 | --date=short --no-show-signature $<))) | |
21a16513 | 260 | |
ffef80ec | 261 | ifdef USE_ASCIIDOCTOR |
169e366c | 262 | $(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : %.txt |
ffef80ec TI |
263 | $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ |
264 | $(ASCIIDOC) -b manpage -d manpage \ | |
21a16513 BH |
265 | $(ASCIIDOC_EXTRA) -aperf_version=$(PERF_VERSION) \ |
266 | -adocdate=$(PERF_DATE) -o $@+ $< && \ | |
c1c2365a | 267 | mv $@+ $@ |
ffef80ec | 268 | endif |
c1c2365a | 269 | |
762b2935 | 270 | $(OUTPUT)%.1 $(OUTPUT)%.5 $(OUTPUT)%.7 : $(OUTPUT)%.xml |
c1c2365a | 271 | $(QUIET_XMLTO)$(RM) $@ && \ |
761a0f39 | 272 | $(XMLTO) -o $(OUTPUT). -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $< |
c1c2365a | 273 | |
762b2935 | 274 | $(OUTPUT)%.xml : %.txt |
c1c2365a | 275 | $(QUIET_ASCIIDOC)$(RM) $@+ $@ && \ |
ffef80ec | 276 | $(ASCIIDOC) -b docbook -d manpage \ |
0c2d0412 | 277 | $(ASCIIDOC_EXTRA) -aperf_version=$(PERF_VERSION) \ |
21a16513 | 278 | -aperf_date=$(PERF_DATE) -o $@+ $< && \ |
c1c2365a IM |
279 | mv $@+ $@ |
280 | ||
281 | XSLT = docbook.xsl | |
282 | XSLTOPTS = --xinclude --stringparam html.stylesheet docbook-xsl.css | |
283 | ||
762b2935 | 284 | $(OUTPUT)perfman.texi: $(MAN_XML) cat-texi.perl |
c1c2365a IM |
285 | $(QUIET_DB2TEXI)$(RM) $@+ $@ && \ |
286 | ($(foreach xml,$(MAN_XML),$(DOCBOOK2X_TEXI) --encoding=UTF-8 \ | |
287 | --to-stdout $(xml) &&) true) > $@++ && \ | |
288 | $(PERL_PATH) cat-texi.perl $@ <$@++ >$@+ && \ | |
289 | rm $@++ && \ | |
290 | mv $@+ $@ | |
291 | ||
762b2935 | 292 | $(OUTPUT)perfman.info: $(OUTPUT)perfman.texi |
6f6e7f06 | 293 | $(QUIET_MAKEINFO)$(MAKEINFO) --no-split --no-validate -o $@ $*.texi |
c1c2365a IM |
294 | |
295 | $(patsubst %.txt,%.texi,$(MAN_TXT)): %.texi : %.xml | |
296 | $(QUIET_DB2TEXI)$(RM) $@+ $@ && \ | |
297 | $(DOCBOOK2X_TEXI) --to-stdout $*.xml >$@+ && \ | |
298 | mv $@+ $@ | |
299 | ||
c1c2365a | 300 | $(patsubst %,%.html,$(ARTICLES)) : %.html : %.txt |
ffef80ec | 301 | $(QUIET_ASCIIDOC)$(ASCIIDOC) -b $(ASCIIDOC_HTML) $*.txt |
c1c2365a IM |
302 | |
303 | WEBDOC_DEST = /pub/software/tools/perf/docs | |
304 | ||
4187e262 JB |
305 | # UNIMPLEMENTED |
306 | #install-webdoc : html | |
307 | # '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(WEBDOC_DEST) | |
c1c2365a | 308 | |
4187e262 | 309 | # quick-install: quick-install-man |
c1c2365a | 310 | |
4187e262 JB |
311 | # quick-install-man: |
312 | # '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(DOC_REF) $(DESTDIR)$(mandir) | |
c1c2365a | 313 | |
4187e262 JB |
314 | #quick-install-html: |
315 | # '$(SHELL_PATH_SQ)' ./install-doc-quick.sh $(HTML_REF) $(DESTDIR)$(htmldir) |