Messages in this thread Patch in this message | | | From | Wang Nan <> | Subject | [PATCH v4 01/18] perf build: Check LLVM version in feature check | Date | Tue, 6 Dec 2016 07:13:39 +0000 |
| |
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.
Signed-off-by: Wang Nan <wangnan0@huawei.com> Cc: Alexei Starovoitov <ast@fb.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.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 --- tools/build/feature/Makefile | 8 ++++++-- tools/build/feature/test-llvm-version.cpp | 12 ++++++++++++ tools/build/feature/test-llvm.cpp | 5 +++++ tools/perf/Makefile.config | 8 ++++++-- 4 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 tools/build/feature/test-llvm-version.cpp
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile index 303196c..b564a2e 100644 --- a/tools/build/feature/Makefile +++ b/tools/build/feature/Makefile @@ -231,14 +231,18 @@ $(OUTPUT)test-jvmti.bin: $(BUILD) $(OUTPUT)test-llvm.bin: - $(BUILDXX) -std=gnu++11 \ + $(BUILDXX) -std=gnu++11 \ -I$(shell $(LLVM_CONFIG) --includedir) \ -L$(shell $(LLVM_CONFIG) --libdir) \ $(shell $(LLVM_CONFIG) --libs Core BPF) \ $(shell $(LLVM_CONFIG) --system-libs) +$(OUTPUT)test-llvm-version.bin: + $(BUILDXX) -std=gnu++11 \ + -I$(shell $(LLVM_CONFIG) --includedir) + $(OUTPUT)test-clang.bin: - $(BUILDXX) -std=gnu++11 \ + $(BUILDXX) -std=gnu++11 \ -I$(shell $(LLVM_CONFIG) --includedir) \ -L$(shell $(LLVM_CONFIG) --libdir) \ -Wl,--start-group -lclangBasic -lclangDriver \ diff --git a/tools/build/feature/test-llvm-version.cpp b/tools/build/feature/test-llvm-version.cpp new file mode 100644 index 0000000..e86b642 --- /dev/null +++ b/tools/build/feature/test-llvm-version.cpp @@ -0,0 +1,12 @@ +#include <cstdio> +#include "llvm/Config/llvm-config.h" + +#define NUM_VERSION (((LLVM_VERSION_MAJOR) << 16) + (LLVM_VERSION_MINOR << 8) + LLVM_VERSION_PATCH) +#define pass int main() {printf("%x\n", NUM_VERSION); return 0;} + +#if NUM_VERSION >= 0x030900 +pass +#else +# error This LLVM is not tested yet. +#endif + diff --git a/tools/build/feature/test-llvm.cpp b/tools/build/feature/test-llvm.cpp index d8d2cee..455a332 100644 --- a/tools/build/feature/test-llvm.cpp +++ b/tools/build/feature/test-llvm.cpp @@ -1,5 +1,10 @@ #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/raw_ostream.h" +#define NUM_VERSION (((LLVM_VERSION_MAJOR) << 16) + (LLVM_VERSION_MINOR << 8) + LLVM_VERSION_PATCH) + +#if NUM_VERSION < 0x030900 +# error "LLVM version too low" +#endif int main() { llvm::errs() << "Hello World!\n"; diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config index 09c2a98..2f4d5b0 100644 --- a/tools/perf/Makefile.config +++ b/tools/perf/Makefile.config @@ -802,12 +802,13 @@ ifdef LIBCLANGLLVM msg := $(warning No g++ found, disable clang and llvm support. Please install g++) else $(call feature_check,llvm) + $(call feature_check,llvm-version) ifneq ($(feature-llvm), 1) - msg := $(warning No libLLVM found, disable clang and llvm support. Please install llvm-dev) + msg := $(warning No libLLVM found, disable clang and llvm support. Please install llvm-dev (>= 3.9.0)) else $(call feature_check,clang) ifneq ($(feature-clang), 1) - msg := $(warning No libclang found, disable clang and llvm support. Please install libclang-dev) + msg := $(warning No libclang found, disable clang and llvm support. Please install libclang-dev (>= 3.9.0)) else CFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT CXXFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT -I$(shell $(LLVM_CONFIG) --includedir) @@ -816,6 +817,9 @@ ifdef LIBCLANGLLVM USE_CXX = 1 USE_LLVM = 1 USE_CLANG = 1 + ifneq ($(feature-llvm-version),1) + msg := $(warning This version of llvm is not tested. May cause building error) + endif endif endif endif -- 2.10.1
| |