linux-imx/Documentation/tools/rtla/Makefile
Daniel Bristot de Oliveira fe4d0d5dde rtla/Makefile: Properly handle dependencies
Linus had a problem compiling RTLA, saying:

"[...] I wish the tracing tools would do a bit more package
checking and helpful error messages too, rather than just
fail with:

    fatal error: tracefs.h: No such file or directory"

Which is indeed not a helpful message. Update the Makefile, adding
proper checks for the dependencies, with useful information about
how to resolve possible problems.

For example, the previous error is now reported as:

    $ make
    ********************************************
    ** NOTICE: libtracefs version 1.3 or higher not found
    **
    ** Consider installing the latest libtracefs from your
    ** distribution, e.g., 'dnf install libtracefs' on Fedora,
    ** or from source:
    **
    **  https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/
    **
    ********************************************

These messages are inspired by the ones used on trace-cmd, as suggested
by Stevel Rostedt.

Link: https://lore.kernel.org/r/CAHk-=whxmA86E=csNv76DuxX_wYsg8mW15oUs3XTabu2Yc80yw@mail.gmail.com/

Changes from V1:
 - Moved the rst2man check to the install phase (when it is used).
 - Removed the procps-ng lib check [1] as it is being removed.

[1] a0f9f8c1030c66305c9b921057c3d483064d5529.1651220820.git.bristot@kernel.org

Link: https://lkml.kernel.org/r/3f1fac776c37e4b67c876a94e5a0e45ed022ff3d.1651238057.git.bristot@kernel.org

Cc: Ingo Molnar <mingo@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Suggested-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
2022-05-26 15:17:48 -04:00

1.4 KiB

SPDX-License-Identifier: GPL-2.0-only

Based on bpftool's Documentation Makefile

INSTALL ?= install RM ?= rm -f RMDIR ?= rmdir --ignore-fail-on-non-empty

PREFIX ?= /usr/share MANDIR ?= $(PREFIX)/man MAN1DIR = $(MANDIR)/man1

MAN1_RST = $(wildcard rtla*.rst)

_DOC_MAN1 = $(patsubst %.rst,%.1,$(MAN1_RST)) DOC_MAN1 = $(addprefix $(OUTPUT),$(_DOC_MAN1))

RST2MAN_DEP := $(shell command -v rst2man 2>/dev/null) RST2MAN_OPTS += --verbose

TEST_RST2MAN = $(shell sh -c "rst2man --version > /dev/null 2>&1 || echo n")

$(OUTPUT)%.1: %.rst ifndef RST2MAN_DEP $(info ********************************************) $(info ** NOTICE: rst2man not found) $(info **) $(info ** Consider installing the latest rst2man from your) $(info ** distribution, e.g., 'dnf install python3-docutils' on Fedora,) $(info ** or from source:) $(info **) $(info ** https://docutils.sourceforge.io/docs/dev/repository.html ) $(info **) $(info ********************************************) $(error NOTICE: rst2man required to generate man pages) endif rst2man $(RST2MAN_OPTS) $< > $@

man1: $(DOC_MAN1) man: man1

clean: $(RM) $(DOC_MAN1)

install: man $(INSTALL) -d -m 755 $(DESTDIR)$(MAN1DIR) $(INSTALL) -m 644 $(DOC_MAN1) $(DESTDIR)$(MAN1DIR)

uninstall: $(RM) $(addprefix $(DESTDIR)$(MAN1DIR)/,$(_DOC_MAN1)) $(RMDIR) $(DESTDIR)$(MAN1DIR)

.PHONY: man man1 clean install uninstall .DEFAULT_GOAL := man