perf-check(1)
===============

NAME
----
perf-check - check if features are present in perf

SYNOPSIS
--------
[verse]
'perf check' [<options>]
'perf check' {feature <feature_list>} [<options>]

DESCRIPTION
-----------
With no subcommands given, 'perf check' command just prints the command
usage on the standard output.

If the subcommand 'feature' is used, then status of feature is printed
on the standard output (unless '-q' is also passed), ie. whether it is
compiled-in/built-in or not.
Also, 'perf check feature' returns with exit status 0 if the feature
is built-in, otherwise returns with exit status 1.

SUBCOMMANDS
-----------

feature::

        Print whether feature(s) is compiled-in or not, and also returns with an
        exit status of 0, if passed feature(s) are compiled-in, else 1.

        It expects a feature list as an argument. There can be a single feature
        name/macro, or multiple features can also be passed as a comma-separated
        list, in which case the exit status will be 0 only if all of the passed
        features are compiled-in.

        The feature names/macros are case-insensitive.

        Example Usage:
                perf check feature libtraceevent
                perf check feature HAVE_LIBTRACEEVENT
                perf check feature libtraceevent,bpf

        Supported feature names/macro:
                aio                     /  HAVE_AIO_SUPPORT
                bpf                     /  HAVE_LIBBPF_SUPPORT
                bpf_skeletons           /  HAVE_BPF_SKEL
                debuginfod              /  HAVE_DEBUGINFOD_SUPPORT
                dwarf                   /  HAVE_DWARF_SUPPORT
                dwarf_getlocations      /  HAVE_DWARF_GETLOCATIONS_SUPPORT
                dwarf-unwind            /  HAVE_DWARF_UNWIND_SUPPORT
                auxtrace                /  HAVE_AUXTRACE_SUPPORT
                libaudit                /  HAVE_LIBAUDIT_SUPPORT
                libbfd                  /  HAVE_LIBBFD_SUPPORT
                libcapstone             /  HAVE_LIBCAPSTONE_SUPPORT
                libcrypto               /  HAVE_LIBCRYPTO_SUPPORT
                libdw-dwarf-unwind      /  HAVE_DWARF_SUPPORT
                libelf                  /  HAVE_LIBELF_SUPPORT
                libnuma                 /  HAVE_LIBNUMA_SUPPORT
                libopencsd              /  HAVE_CSTRACE_SUPPORT
                libperl                 /  HAVE_LIBPERL_SUPPORT
                libpfm4                 /  HAVE_LIBPFM
                libpython               /  HAVE_LIBPYTHON_SUPPORT
                libslang                /  HAVE_SLANG_SUPPORT
                libtraceevent           /  HAVE_LIBTRACEEVENT
                libunwind               /  HAVE_LIBUNWIND_SUPPORT
                lzma                    /  HAVE_LZMA_SUPPORT
                numa_num_possible_cpus  /  HAVE_LIBNUMA_SUPPORT
                syscall_table           /  HAVE_SYSCALL_TABLE_SUPPORT
                zlib                    /  HAVE_ZLIB_SUPPORT
                zstd                    /  HAVE_ZSTD_SUPPORT

OPTIONS
-------
-q::
--quiet::
        Do not print any messages or warnings

        This can be used along with subcommands such as 'perf check feature'
        to hide unnecessary output in test scripts, eg.
        'perf check feature --quiet libtraceevent'
