mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-19 18:24:14 +08:00
3b1c5d9659
Implement libzstd feature check, NO_LIBZSTD and LIBZSTD_DIR defines to override Zstd library sources or disable the feature from the command line: $ make -C tools/perf LIBZSTD_DIR=/path/to/zstd/sources/ clean all $ make -C tools/perf NO_LIBZSTD=1 clean all Auto detection feature status is reported just before compilation starts. If your system has some version of the zstd library preinstalled then the build system finds and uses it during the build. If you still prefer to compile with some other version of zstd library you have capability to refer the compilation to that version using LIBZSTD_DIR define. Signed-off-by: Alexey Budankov <alexey.budankov@linux.intel.com> Reviewed-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/9b4cd8b0-10a3-1f1e-8d6b-5922a7ca216b@linux.intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
97 lines
2.3 KiB
C
97 lines
2.3 KiB
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include "builtin.h"
|
|
#include "perf.h"
|
|
#include "color.h"
|
|
#include <linux/compiler.h>
|
|
#include <tools/config.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <subcmd/parse-options.h>
|
|
|
|
int version_verbose;
|
|
|
|
struct version {
|
|
bool build_options;
|
|
};
|
|
|
|
static struct version version;
|
|
|
|
static struct option version_options[] = {
|
|
OPT_BOOLEAN(0, "build-options", &version.build_options,
|
|
"display the build options"),
|
|
};
|
|
|
|
static const char * const version_usage[] = {
|
|
"perf version [<options>]",
|
|
NULL
|
|
};
|
|
|
|
static void on_off_print(const char *status)
|
|
{
|
|
printf("[ ");
|
|
|
|
if (!strcmp(status, "OFF"))
|
|
color_fprintf(stdout, PERF_COLOR_RED, "%-3s", status);
|
|
else
|
|
color_fprintf(stdout, PERF_COLOR_GREEN, "%-3s", status);
|
|
|
|
printf(" ]");
|
|
}
|
|
|
|
static void status_print(const char *name, const char *macro,
|
|
const char *status)
|
|
{
|
|
printf("%22s: ", name);
|
|
on_off_print(status);
|
|
printf(" # %s\n", macro);
|
|
}
|
|
|
|
#define STATUS(__d, __m) \
|
|
do { \
|
|
if (IS_BUILTIN(__d)) \
|
|
status_print(#__m, #__d, "on"); \
|
|
else \
|
|
status_print(#__m, #__d, "OFF"); \
|
|
} while (0)
|
|
|
|
static void library_status(void)
|
|
{
|
|
STATUS(HAVE_DWARF_SUPPORT, dwarf);
|
|
STATUS(HAVE_DWARF_GETLOCATIONS_SUPPORT, dwarf_getlocations);
|
|
STATUS(HAVE_GLIBC_SUPPORT, glibc);
|
|
STATUS(HAVE_GTK2_SUPPORT, gtk2);
|
|
#ifndef HAVE_SYSCALL_TABLE_SUPPORT
|
|
STATUS(HAVE_LIBAUDIT_SUPPORT, libaudit);
|
|
#endif
|
|
STATUS(HAVE_SYSCALL_TABLE_SUPPORT, syscall_table);
|
|
STATUS(HAVE_LIBBFD_SUPPORT, libbfd);
|
|
STATUS(HAVE_LIBELF_SUPPORT, libelf);
|
|
STATUS(HAVE_LIBNUMA_SUPPORT, libnuma);
|
|
STATUS(HAVE_LIBNUMA_SUPPORT, numa_num_possible_cpus);
|
|
STATUS(HAVE_LIBPERL_SUPPORT, libperl);
|
|
STATUS(HAVE_LIBPYTHON_SUPPORT, libpython);
|
|
STATUS(HAVE_SLANG_SUPPORT, libslang);
|
|
STATUS(HAVE_LIBCRYPTO_SUPPORT, libcrypto);
|
|
STATUS(HAVE_LIBUNWIND_SUPPORT, libunwind);
|
|
STATUS(HAVE_DWARF_SUPPORT, libdw-dwarf-unwind);
|
|
STATUS(HAVE_ZLIB_SUPPORT, zlib);
|
|
STATUS(HAVE_LZMA_SUPPORT, lzma);
|
|
STATUS(HAVE_AUXTRACE_SUPPORT, get_cpuid);
|
|
STATUS(HAVE_LIBBPF_SUPPORT, bpf);
|
|
STATUS(HAVE_AIO_SUPPORT, aio);
|
|
STATUS(HAVE_ZSTD_SUPPORT, zstd);
|
|
}
|
|
|
|
int cmd_version(int argc, const char **argv)
|
|
{
|
|
argc = parse_options(argc, argv, version_options, version_usage,
|
|
PARSE_OPT_STOP_AT_NON_OPTION);
|
|
|
|
printf("perf version %s\n", perf_version_string);
|
|
|
|
if (version.build_options || version_verbose == 1)
|
|
library_status();
|
|
|
|
return 0;
|
|
}
|