X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=doc%2Fman%2FMakefile.am;h=fed0e344b16b7b1453392b786c4d550201720658;hb=fb24f1b61740fd3e8b1d87e2d89451ee404f32a5;hp=7e18b8e89ae7c76d61fc927d0a798e56b11b6eff;hpb=cf1da69dd47917f75147ab38f6041ad0fe66d952;p=lttng-ust.git diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am index 7e18b8e8..fed0e344 100644 --- a/doc/man/Makefile.am +++ b/doc/man/Makefile.am @@ -1,2 +1,168 @@ -EXTRA_DIST = ustctl.1 ustd.1 usttrace.1 -man_MANS = ustctl.1 ustd.1 usttrace.1 +# SPDX-License-Identifier: LGPL-2.1-only + +# Man pages are only built if they are enabled at configure time. +# +# They should always be built before creating a distribution tarball. + +# Function which adds the source directory prefix and adds a given suffix: +manaddsuffix = $(addsuffix $(1),$(addprefix $(srcdir)/,$(2))) + +# List only the names without the .*.txt extension here: +MAN1_NAMES = \ + lttng-gen-tp +MAN3_NAMES = \ + lttng-ust \ + lttng-ust-dl \ + lttng-ust-cyg-profile \ + lttng_ust_tracef \ + lttng_ust_tracelog \ + tracef \ + tracelog + +# Man page aliases (generated from other sources): +MAN3_ALIASES = lttng_ust_vtracef.3 lttng_ust_vtracelog.3 vtracef.3 vtracelog.3 + +# troff man pages: +MAN3_TROFF = \ + do_tracepoint.3 \ + lttng_ust_do_tracepoint.3 \ + lttng_ust_tracepoint.3 \ + lttng_ust_tracepoint_enabled.3 \ + tracepoint.3 \ + tracepoint_enabled.3 + +# AsciiDoc sources and outputs: +MAN1_TXT = $(call manaddsuffix,.1.txt,$(MAN1_NAMES)) +MAN3_TXT = $(call manaddsuffix,.3.txt,$(MAN3_NAMES)) +MAN_TXT = $(MAN1_TXT) $(MAN3_TXT) $(MAN8_TXT) +MAN_XML = $(patsubst $(srcdir)/%.txt,%.xml,$(MAN_TXT)) + +# Common AsciiDoc source files: +COMMON_TXT = \ + $(srcdir)/common-footer.txt \ + $(srcdir)/common-authors.txt \ + $(srcdir)/common-copyrights.txt \ + $(srcdir)/log-levels.txt \ + $(srcdir)/tracef-tracelog-limitations.txt + +# AsciiDoc configuration and XSL files: +ASCIIDOC_CONF = $(srcdir)/asciidoc.conf +XSL_FILE = $(srcdir)/manpage.xsl + +# Common dependencies: +COMMON_DEPS = $(ASCIIDOC_CONF) $(COMMON_TXT) + +# Man pages destinations: +MAN1 = $(addsuffix .1,$(MAN1_NAMES)) +MAN3 = $(addsuffix .3,$(MAN3_NAMES)) $(MAN3_ALIASES) +MAN = $(MAN1) $(MAN3) + +if ENABLE_MAN_PAGES +# At this point, we know the user asked to build the man pages. +if HAVE_ASCIIDOC_XMLTO + +asciidoc_verbose = $(asciidoc_verbose_@AM_V@) +asciidoc_verbose_ = $(asciidoc_verbose_@AM_DEFAULT_V@) +asciidoc_verbose_0 = @echo " ASCIIDOC " $@; + +xmlto_verbose = $(xmlto_verbose_@AM_V@) +xmlto_verbose_ = $(xmlto_verbose_@AM_DEFAULT_V@) +xmlto_verbose_0 = @echo " XMLTO " $@; + +xmlto_verbose_out = $(xmlto_verbose_out_@AM_V@) +xmlto_verbose_out_ = $(xmlto_verbose_out_@AM_DEFAULT_V@) +xmlto_verbose_out_0 = 2>/dev/null + +# Tools to execute: +ADOC = $(asciidoc_verbose)$(ASCIIDOC) -f $(ASCIIDOC_CONF) -d manpage \ + -a mansource="LTTng" \ + -a manmanual="LTTng Manual" \ + -a manversion="$(PACKAGE_VERSION)" + +ADOC_DOCBOOK = $(ADOC) -b docbook +XTO = $(xmlto_verbose)$(XMLTO) -m $(XSL_FILE) man + +# Recipes: +%.1.xml: $(srcdir)/%.1.txt $(COMMON_DEPS) + $(ADOC_DOCBOOK) -o $@ $< + +%.1: %.1.xml $(XSL_FILE) + $(XTO) $< $(xmlto_verbose_out) + +%.3.xml: $(srcdir)/%.3.txt $(COMMON_DEPS) + $(ADOC_DOCBOOK) -o $@ $< + +# These pair of files are generated by a single invocation of xmlto, use an +# empty rule that depends on a fake intermediate file to track the dependencies +# without resorting to Group Targets which were only introduced in GNU Make 4.3. +tracef.3 vtracef.3: tracef.3.alias + @# Empty recipe to mark tracef.3 and vtracef.3 as rebuilt + +tracelog.3 vtracelog.3: tracelog.3.alias + @# Empty recipe to mark tracelog.3 and vtracelog.3 as rebuilt + +lttng_ust_tracef.3 lttng_ust_vtracef.3: lttng_ust_tracef.3.alias + @# Empty recipe to mark lttng_ust_tracef.3 and lttng_ust_vtracef.3 as rebuilt + +lttng_ust_tracelog.3 lttng_ust_vtracelog.3: lttng_ust_tracelog.3.alias + @# Empty recipe to mark lttng_ust_tracelog.3 and lttng_ust_vtracelog.3 as rebuilt + + +.INTERMEDIATE: tracef.3.alias tracelog.3.alias lttng_ust_tracef.3.alias lttng_ust_tracelog.3.alias + +tracef.3.alias: tracef.3.xml $(XSL_FILE) + $(XTO) $< $(xmlto_verbose_out) + +tracelog.3.alias: tracelog.3.xml $(XSL_FILE) + $(XTO) $< $(xmlto_verbose_out) + +lttng_ust_tracef.3.alias: lttng_ust_tracef.3.xml $(XSL_FILE) + $(XTO) $< $(xmlto_verbose_out) + +lttng_ust_tracelog.3.alias: lttng_ust_tracelog.3.xml $(XSL_FILE) + $(XTO) $< $(xmlto_verbose_out) + +%.3: %.3.xml $(XSL_FILE) + $(XTO) $< $(xmlto_verbose_out) + +# Only clean the generated files if we have the tools to generate them again. +CLEANFILES = $(MAN_XML) $(MAN) +else # HAVE_ASCIIDOC_XMLTO +# Create man page targets used to stop the build if we want to +# build the man pages, but we don't have the necessary tools to do so. +ERR_MSG = "Error: Cannot build target because asciidoc or xmlto tool is missing." +ERR_MSG += "Make sure both tools are installed and run the configure script again." + +%.1: $(srcdir)/%.1.txt $(COMMON_DEPS) + @echo $(ERR_MSG) + @false + +%.3: $(srcdir)/%.3.txt $(COMMON_DEPS) + @echo $(ERR_MSG) + @false +endif # HAVE_ASCIIDOC_XMLTO +endif # ENABLE_MAN_PAGES + +# Start with empty distributed/installed man pages: +dist_man1_MANS = +dist_man3_MANS = +EXTRA_DIST = + +if ENABLE_MAN_PAGES +# Building man pages: we can install and distribute them. +dist_man1_MANS += $(MAN1) +dist_man3_MANS += $(MAN3) $(MAN3_TROFF) +else # ENABLE_MAN_PAGES +# Those are not known by automake yet because dist_man3_MANS is empty +# at this point, so make sure they are distributed. +EXTRA_DIST += $(MAN3_TROFF) +endif # ENABLE_MAN_PAGES + +if !ENABLE_MAN_PAGES +dist-hook: + @echo "Error: Please enable the man pages before creating a distribution tarball." + @false +endif # !ENABLE_MAN_PAGES + +# Always distribute the source files. +EXTRA_DIST += $(MAN_TXT) $(COMMON_TXT) $(XSL_FILE) $(ASCIIDOC_CONF) README.md