doc: xmlto output to stdout on a verbose build
[lttng-ust.git] / doc / man / Makefile.am
CommitLineData
c0c0989a
MJ
1# SPDX-License-Identifier: LGPL-2.1-only
2
4ddbd0b7
PP
3# Man pages are only built if they are enabled at configure time.
4#
5# They should always be built before creating a distribution tarball.
6
7# Function which adds the source directory prefix and adds a given suffix:
8manaddsuffix = $(addsuffix $(1),$(addprefix $(srcdir)/,$(2)))
9
10# List only the names without the .*.txt extension here:
11MAN1_NAMES = \
12 lttng-gen-tp
13MAN3_NAMES = \
14 lttng-ust \
15 tracef \
16 tracelog \
17 lttng-ust-dl \
18 lttng-ust-cyg-profile
19
8cbeea02
PP
20# Man page aliases (generated from other sources):
21MAN3_ALIASES = vtracef.3 vtracelog.3
22
4ddbd0b7
PP
23# troff man pages:
24MAN3_TROFF = do_tracepoint.3 tracepoint.3 tracepoint_enabled.3
25
26# AsciiDoc sources and outputs:
27MAN1_TXT = $(call manaddsuffix,.1.txt,$(MAN1_NAMES))
28MAN3_TXT = $(call manaddsuffix,.3.txt,$(MAN3_NAMES))
29MAN_TXT = $(MAN1_TXT) $(MAN3_TXT) $(MAN8_TXT)
30MAN_XML = $(patsubst $(srcdir)/%.txt,%.xml,$(MAN_TXT))
31
32# Common AsciiDoc source files:
33COMMON_TXT = \
34 $(srcdir)/common-footer.txt \
35 $(srcdir)/common-authors.txt \
36 $(srcdir)/common-copyrights.txt \
37 $(srcdir)/log-levels.txt \
38 $(srcdir)/tracef-tracelog-limitations.txt
39
40# AsciiDoc configuration and XSL files:
41ASCIIDOC_CONF = $(srcdir)/asciidoc.conf
6bf962a4 42XSL_FILE = $(srcdir)/manpage.xsl
4ddbd0b7
PP
43
44# Common dependencies:
45COMMON_DEPS = $(ASCIIDOC_CONF) $(COMMON_TXT)
46
47# Man pages destinations:
48MAN1 = $(addsuffix .1,$(MAN1_NAMES))
8cbeea02 49MAN3 = $(addsuffix .3,$(MAN3_NAMES)) $(MAN3_ALIASES)
4ddbd0b7
PP
50MAN = $(MAN1) $(MAN3)
51
41ad81d8 52if ENABLE_MAN_PAGES
4ddbd0b7
PP
53# At this point, we know the user asked to build the man pages.
54if HAVE_ASCIIDOC_XMLTO
e02d8dc3
MJ
55
56asciidoc_verbose = $(asciidoc_verbose_@AM_V@)
57asciidoc_verbose_ = $(asciidoc_verbose_@AM_DEFAULT_V@)
58asciidoc_verbose_0 = @echo " ASCIIDOC " $@;
59
60xmlto_verbose = $(xmlto_verbose_@AM_V@)
61xmlto_verbose_ = $(xmlto_verbose_@AM_DEFAULT_V@)
62xmlto_verbose_0 = @echo " XMLTO " $@;
63
d8e38296
MJ
64xmlto_verbose_out = $(xmlto_verbose_out_@AM_V@)
65xmlto_verbose_out_ = $(xmlto_verbose_out_@AM_DEFAULT_V@)
66xmlto_verbose_out_0 = 2>/dev/null
67
4ddbd0b7 68# Tools to execute:
e02d8dc3 69ADOC = $(asciidoc_verbose)$(ASCIIDOC) -f $(ASCIIDOC_CONF) -d manpage \
82f9bfc0
SM
70 -a mansource="LTTng" \
71 -a manmanual="LTTng Manual" \
72 -a manversion="$(PACKAGE_VERSION)"
6f97f9c2 73
4ddbd0b7 74ADOC_DOCBOOK = $(ADOC) -b docbook
e02d8dc3 75XTO = $(xmlto_verbose)$(XMLTO) -m $(XSL_FILE) man
4ddbd0b7
PP
76
77# Recipes:
78%.1.xml: $(srcdir)/%.1.txt $(COMMON_DEPS)
79 $(ADOC_DOCBOOK) -o $@ $<
80
6bf962a4 81%.1: %.1.xml $(XSL_FILE)
d8e38296 82 $(XTO) $< $(xmlto_verbose_out)
4ddbd0b7
PP
83
84%.3.xml: $(srcdir)/%.3.txt $(COMMON_DEPS)
85 $(ADOC_DOCBOOK) -o $@ $<
86
02275a1d
MJ
87# These pair of files are generated by a single invocation of xmlto, use an
88# empty rule that depends on a fake intermediate file to track the dependencies
89# without resorting to Group Targets which were only introduced in GNU Make 4.3.
90tracef.3 vtracef.3: tracef.3.alias
91 @# Empty recipe to mark tracef.3 and vtracef.3 as rebuilt
92
93tracelog.3 vtracelog.3: tracelog.3.alias
94 @# Empty recipe to mark tracelog.3 and vtracelog.3 as rebuilt
95
96.INTERMEDIATE: tracef.3.alias tracelog.3.alias
97
98tracef.3.alias: tracef.3.xml $(XSL_FILE)
d8e38296 99 $(XTO) $< $(xmlto_verbose_out)
8cbeea02 100
02275a1d 101tracelog.3.alias: tracelog.3.xml $(XSL_FILE)
d8e38296 102 $(XTO) $< $(xmlto_verbose_out)
8cbeea02 103
6bf962a4 104%.3: %.3.xml $(XSL_FILE)
d8e38296 105 $(XTO) $< $(xmlto_verbose_out)
4ddbd0b7
PP
106
107# Only clean the generated files if we have the tools to generate them again.
108CLEANFILES = $(MAN_XML) $(MAN)
109else # HAVE_ASCIIDOC_XMLTO
110# Create man page targets used to stop the build if we want to
111# build the man pages, but we don't have the necessary tools to do so.
112ERR_MSG = "Error: Cannot build target because asciidoc or xmlto tool is missing."
113ERR_MSG += "Make sure both tools are installed and run the configure script again."
114
115%.1: $(srcdir)/%.1.txt $(COMMON_DEPS)
116 @echo $(ERR_MSG)
117 @false
118
119%.3: $(srcdir)/%.3.txt $(COMMON_DEPS)
120 @echo $(ERR_MSG)
121 @false
122endif # HAVE_ASCIIDOC_XMLTO
41ad81d8 123endif # ENABLE_MAN_PAGES
4ddbd0b7
PP
124
125# Start with empty distributed/installed man pages:
126dist_man1_MANS =
127dist_man3_MANS =
128EXTRA_DIST =
129
41ad81d8 130if ENABLE_MAN_PAGES
4ddbd0b7
PP
131# Building man pages: we can install and distribute them.
132dist_man1_MANS += $(MAN1)
133dist_man3_MANS += $(MAN3) $(MAN3_TROFF)
41ad81d8 134else # ENABLE_MAN_PAGES
4ddbd0b7
PP
135# Those are not known by automake yet because dist_man3_MANS is empty
136# at this point, so make sure they are distributed.
137EXTRA_DIST += $(MAN3_TROFF)
41ad81d8 138endif # ENABLE_MAN_PAGES
4ddbd0b7 139
41ad81d8 140if !ENABLE_MAN_PAGES
4ddbd0b7
PP
141dist-hook:
142 @echo "Error: Please enable the man pages before creating a distribution tarball."
143 @false
41ad81d8 144endif # !ENABLE_MAN_PAGES
4ddbd0b7
PP
145
146# Always distribute the source files.
e6e508c9 147EXTRA_DIST += $(MAN_TXT) $(COMMON_TXT) $(XSL_FILE) $(ASCIIDOC_CONF) README.md
This page took 0.031917 seconds and 4 git commands to generate.