aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
authorWang Nan <wangnan0@huawei.com>2016-12-06 02:22:30 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-12-06 11:21:55 -0500
commita940cad331e79cc03d9ae74f56a2c7cb810bdce9 (patch)
treee39fb10e416d06eaf3b0f674690b58ff1263cb28 /tools/perf
parent34c4a42791bbc455e65a15d12dcd0b6b3c52ad13 (diff)
perf build: Check LLVM version in feature check
Cancel builtin llvm and clang support when LLVM version is less than 3.9.0: following commits uses newer API. Since Clang/LLVM's API is not guaranteed to be stable, add a test-llvm-version.cpp feature checker, issue warning if LLVM found in compiling environment is not tested yet. Committer Notes: Testing it: Environment: $ cat /etc/fedora-release Fedora release 25 (Twenty Five) $ rpm -q llvm-devel clang-devel llvm-devel-3.8.0-1.fc25.x86_64 clang-devel-3.8.0-2.fc25.x86_64 $ Before: $ make -k LIBCLANGLLVM=1 O=/tmp/build/perf -C tools/perf install-bin make: Entering directory '/home/acme/git/linux/tools/perf' BUILD: Doing 'make -j4' parallel build Warning: tools/include/uapi/linux/bpf.h differs from kernel Warning: tools/arch/arm/include/uapi/asm/kvm.h differs from kernel INSTALL GTK UI LINK /tmp/build/perf/perf /tmp/build/perf/libperf.a(libperf-in.o): In function `perf::createCompilerInvocation(llvm::SmallVector<char const*, 16u>, llvm::StringRef&, clang::DiagnosticsEngine&)': /home/acme/git/linux/tools/perf/util/c++/clang.cpp:56: undefined reference to `clang::tooling::newInvocation(clang::DiagnosticsEngine*, llvm::SmallVector<char const*, 16u> const&)' /tmp/build/perf/libperf.a(libperf-in.o): In function `perf::getModuleFromSource(llvm::SmallVector<char const*, 16u>, llvm::StringRef, llvm::IntrusiveRefCntPtr<clang::vfs::FileSystem>)': /home/acme/git/linux/tools/perf/util/c++/clang.cpp:68: undefined reference to `clang::CompilerInstance::CompilerInstance(std::shared_ptr<clang::PCHContainerOperations>, bool)' /home/acme/git/linux/tools/perf/util/c++/clang.cpp:69: undefined reference to `clang::CompilerInstance::createDiagnostics(clang::DiagnosticConsumer*, bool)' <SNIP> After: Makefile.config:807: No suitable libLLVM found, disabling builtin clang and llvm support. Please install llvm-dev(el) (>= 3.9.0) Updating the environment to a locally built LLVM 4.0 + clang 3.9 (forgot to git pull, duh) combo, all works as expected, it is properly detected and built into the resulting perf binary. Signed-off-by: Wang Nan <wangnan0@huawei.com> Reported-and-Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexei Starovoitov <ast@fb.com> Cc: He Kuang <hekuang@huawei.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Joe Stringer <joe@ovn.org> Cc: Zefan Li <lizefan@huawei.com> Cc: pi3orama@163.com Link: http://lkml.kernel.org/r/20161206072230.7651-1-wangnan0@huawei.com [ Change the warning message a bit (add 'suitable' and 'builtin'), clarifying it, see committer notes above ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/Makefile.config8
1 files changed, 6 insertions, 2 deletions
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 09c2a9874f2f..76c84f0eec52 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -802,12 +802,13 @@ ifdef LIBCLANGLLVM
802 msg := $(warning No g++ found, disable clang and llvm support. Please install g++) 802 msg := $(warning No g++ found, disable clang and llvm support. Please install g++)
803 else 803 else
804 $(call feature_check,llvm) 804 $(call feature_check,llvm)
805 $(call feature_check,llvm-version)
805 ifneq ($(feature-llvm), 1) 806 ifneq ($(feature-llvm), 1)
806 msg := $(warning No libLLVM found, disable clang and llvm support. Please install llvm-dev) 807 msg := $(warning No suitable libLLVM found, disabling builtin clang and LLVM support. Please install llvm-dev(el) (>= 3.9.0))
807 else 808 else
808 $(call feature_check,clang) 809 $(call feature_check,clang)
809 ifneq ($(feature-clang), 1) 810 ifneq ($(feature-clang), 1)
810 msg := $(warning No libclang found, disable clang and llvm support. Please install libclang-dev) 811 msg := $(warning No suitable libclang found, disabling builtin clang and LLVM support. Please install libclang-dev(el) (>= 3.9.0))
811 else 812 else
812 CFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT 813 CFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT
813 CXXFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT -I$(shell $(LLVM_CONFIG) --includedir) 814 CXXFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT -I$(shell $(LLVM_CONFIG) --includedir)
@@ -816,6 +817,9 @@ ifdef LIBCLANGLLVM
816 USE_CXX = 1 817 USE_CXX = 1
817 USE_LLVM = 1 818 USE_LLVM = 1
818 USE_CLANG = 1 819 USE_CLANG = 1
820 ifneq ($(feature-llvm-version),1)
821 msg := $(warning This version of LLVM is not tested. May cause build errors)
822 endif
819 endif 823 endif
820 endif 824 endif
821 endif 825 endif