[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20161206071356.5312-2-wangnan0@huawei.com>
Date: Tue, 6 Dec 2016 07:13:39 +0000
From: Wang Nan <wangnan0@...wei.com>
To: <acme@...nel.org>
CC: <linux-kernel@...r.kernel.org>, <joe@....org>,
Wang Nan <wangnan0@...wei.com>,
Alexei Starovoitov <ast@...com>,
"Arnaldo Carvalho de Melo" <acme@...hat.com>,
He Kuang <hekuang@...wei.com>, Jiri Olsa <jolsa@...nel.org>,
Zefan Li <lizefan@...wei.com>, <pi3orama@....com>
Subject: [PATCH v4 01/18] 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.
Signed-off-by: Wang Nan <wangnan0@...wei.com>
Cc: Alexei Starovoitov <ast@...com>
Cc: Arnaldo Carvalho de Melo <acme@...hat.com>
Cc: He Kuang <hekuang@...wei.com>
Cc: Jiri Olsa <jolsa@...nel.org>
Cc: Joe Stringer <joe@....org>
Cc: Zefan Li <lizefan@...wei.com>
Cc: pi3orama@....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
Powered by blists - more mailing lists