diff options
author | Wang Nan <wangnan0@huawei.com> | 2016-09-26 03:26:56 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-10-05 18:59:35 -0400 |
commit | 87095f7ddeff3038a0cf8e6574922f9c11688619 (patch) | |
tree | 73eb2890678d20f32da70d5f373612e03bd6e509 /tools | |
parent | f61bdc3304281e9ff9eec4f1ed9fb15bcf4d8a5e (diff) |
tools build: Add feature detection for g++
Check if g++ is available. The result will be used by builtin clang and
LLVM support. Since LLVM requires C++11, this feature detector checks
std::move().
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Cc: Alexei Starovoitov <ast@fb.com>
Cc: He Kuang <hekuang@huawei.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Zefan Li <lizefan@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1474874832-134786-3-git-send-email-wangnan0@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/build/Makefile.feature | 2 | ||||
-rw-r--r-- | tools/build/feature/Makefile | 10 | ||||
-rw-r--r-- | tools/build/feature/test-cxx.cpp | 15 |
3 files changed, 25 insertions, 2 deletions
diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature index a120c6b755a9..ae52e029dd22 100644 --- a/tools/build/Makefile.feature +++ b/tools/build/Makefile.feature | |||
@@ -7,7 +7,7 @@ endif | |||
7 | 7 | ||
8 | feature_check = $(eval $(feature_check_code)) | 8 | feature_check = $(eval $(feature_check_code)) |
9 | define feature_check_code | 9 | define feature_check_code |
10 | feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) | 10 | feature-$(1) := $(shell $(MAKE) OUTPUT=$(OUTPUT_FEATURES) CFLAGS="$(EXTRA_CFLAGS) $(FEATURE_CHECK_CFLAGS-$(1))" CXXFLAGS="$(EXTRA_CXXFLAGS) $(FEATURE_CHECK_CXXFLAGS-$(1))" LDFLAGS="$(LDFLAGS) $(FEATURE_CHECK_LDFLAGS-$(1))" -C $(feature_dir) $(OUTPUT_FEATURES)test-$1.bin >/dev/null 2>/dev/null && echo 1 || echo 0) |
11 | endef | 11 | endef |
12 | 12 | ||
13 | feature_set = $(eval $(feature_set_code)) | 13 | feature_set = $(eval $(feature_set_code)) |
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile index a0b29a311816..ac9c477a2a48 100644 --- a/tools/build/feature/Makefile +++ b/tools/build/feature/Makefile | |||
@@ -46,11 +46,13 @@ FILES= \ | |||
46 | test-lzma.bin \ | 46 | test-lzma.bin \ |
47 | test-bpf.bin \ | 47 | test-bpf.bin \ |
48 | test-get_cpuid.bin \ | 48 | test-get_cpuid.bin \ |
49 | test-sdt.bin | 49 | test-sdt.bin \ |
50 | test-cxx.bin | ||
50 | 51 | ||
51 | FILES := $(addprefix $(OUTPUT),$(FILES)) | 52 | FILES := $(addprefix $(OUTPUT),$(FILES)) |
52 | 53 | ||
53 | CC := $(CROSS_COMPILE)gcc -MD | 54 | CC := $(CROSS_COMPILE)gcc -MD |
55 | CXX := $(CROSS_COMPILE)g++ -MD | ||
54 | PKG_CONFIG := $(CROSS_COMPILE)pkg-config | 56 | PKG_CONFIG := $(CROSS_COMPILE)pkg-config |
55 | 57 | ||
56 | all: $(FILES) | 58 | all: $(FILES) |
@@ -58,6 +60,9 @@ all: $(FILES) | |||
58 | __BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS) | 60 | __BUILD = $(CC) $(CFLAGS) -Wall -Werror -o $@ $(patsubst %.bin,%.c,$(@F)) $(LDFLAGS) |
59 | BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1 | 61 | BUILD = $(__BUILD) > $(@:.bin=.make.output) 2>&1 |
60 | 62 | ||
63 | __BUILDXX = $(CXX) $(CXXFLAGS) -Wall -Werror -o $@ $(patsubst %.bin,%.cpp,$(@F)) $(LDFLAGS) | ||
64 | BUILDXX = $(__BUILDXX) > $(@:.bin=.make.output) 2>&1 | ||
65 | |||
61 | ############################### | 66 | ############################### |
62 | 67 | ||
63 | $(OUTPUT)test-all.bin: | 68 | $(OUTPUT)test-all.bin: |
@@ -217,6 +222,9 @@ $(OUTPUT)test-bpf.bin: | |||
217 | $(OUTPUT)test-sdt.bin: | 222 | $(OUTPUT)test-sdt.bin: |
218 | $(BUILD) | 223 | $(BUILD) |
219 | 224 | ||
225 | $(OUTPUT)test-cxx.bin: | ||
226 | $(BUILDXX) -std=gnu++11 | ||
227 | |||
220 | -include $(OUTPUT)*.d | 228 | -include $(OUTPUT)*.d |
221 | 229 | ||
222 | ############################### | 230 | ############################### |
diff --git a/tools/build/feature/test-cxx.cpp b/tools/build/feature/test-cxx.cpp new file mode 100644 index 000000000000..b1dee9a31d6c --- /dev/null +++ b/tools/build/feature/test-cxx.cpp | |||
@@ -0,0 +1,15 @@ | |||
1 | #include <iostream> | ||
2 | #include <memory> | ||
3 | |||
4 | static void print_str(std::string s) | ||
5 | { | ||
6 | std::cout << s << std::endl; | ||
7 | } | ||
8 | |||
9 | int main() | ||
10 | { | ||
11 | std::string s("Hello World!"); | ||
12 | print_str(std::move(s)); | ||
13 | std::cout << "|" << s << "|" << std::endl; | ||
14 | return 0; | ||
15 | } | ||