Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tools build: Add test for presence of numa_num_possible_cpus() in libnuma

The existing numa test checks only if numa.h and numa_available() are
present, but that can be satisfied with an old libnuma that is not
enough for the 'perf bench numa' entry, so add a test to check for that:

[acme@rhel5 linux]$ make NO_AUXTRACE=1 NO_LIBPERL=1 -C tools/perf O=/tmp/build/perf install-bin
make: Entering directory `/home/acme/git/linux/tools/perf'
BUILD: Doing 'make -j2' parallel build

Auto-detecting system features:
... libelf: [ on ]
... libnuma: [ on ]
... numa_num_possible_cpus: [ OFF ]
... libperl: [ on ]

<SNIP>
config/Makefile:577: Old numa library found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev >= 2.0.8
INSTALL binaries
<SNIP>

This fixes the build on old systems such as RHEL/CentOS 5.11.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: "Naveen N. Rao" <naveen.n.rao@linux.vnet.ibm.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Victor Kamensky <victor.kamensky@linaro.org>
Cc: Vinson Lee <vlee@twopensource.com>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-zqriqkezppi2de2iyjin1tnc@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

+25 -3
+2
tools/build/Makefile.feature
··· 41 41 libelf-getphdrnum \ 42 42 libelf-mmap \ 43 43 libnuma \ 44 + numa_num_possible_cpus \ 44 45 libperl \ 45 46 libpython \ 46 47 libpython-version \ ··· 62 61 libbfd \ 63 62 libelf \ 64 63 libnuma \ 64 + numa_num_possible_cpus \ 65 65 libperl \ 66 66 libpython \ 67 67 libslang \
+4
tools/build/feature/Makefile
··· 19 19 test-libelf-getphdrnum.bin \ 20 20 test-libelf-mmap.bin \ 21 21 test-libnuma.bin \ 22 + test-numa_num_possible_cpus.bin \ 22 23 test-libperl.bin \ 23 24 test-libpython.bin \ 24 25 test-libpython-version.bin \ ··· 86 85 $(BUILD) -lelf 87 86 88 87 test-libnuma.bin: 88 + $(BUILD) -lnuma 89 + 90 + test-numa_num_possible_cpus.bin: 89 91 $(BUILD) -lnuma 90 92 91 93 test-libunwind.bin:
+5
tools/build/feature/test-all.c
··· 77 77 # include "test-libnuma.c" 78 78 #undef main 79 79 80 + #define main main_test_numa_num_possible_cpus 81 + # include "test-numa_num_possible_cpus.c" 82 + #undef main 83 + 80 84 #define main main_test_timerfd 81 85 # include "test-timerfd.c" 82 86 #undef main ··· 140 136 main_test_libbfd(); 141 137 main_test_backtrace(); 142 138 main_test_libnuma(); 139 + main_test_numa_num_possible_cpus(); 143 140 main_test_timerfd(); 144 141 main_test_stackprotector_all(); 145 142 main_test_libdw_dwarf_unwind();
+6
tools/build/feature/test-numa_num_possible_cpus.c
··· 1 + #include <numa.h> 2 + 3 + int main(void) 4 + { 5 + return numa_num_possible_cpus(); 6 + }
+8 -3
tools/perf/config/Makefile
··· 573 573 msg := $(warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev); 574 574 NO_LIBNUMA := 1 575 575 else 576 - CFLAGS += -DHAVE_LIBNUMA_SUPPORT 577 - EXTLIBS += -lnuma 578 - $(call detected,CONFIG_NUMA) 576 + ifeq ($(feature-numa_num_possible_cpus), 0) 577 + msg := $(warning Old numa library found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev >= 2.0.8); 578 + NO_LIBNUMA := 1 579 + else 580 + CFLAGS += -DHAVE_LIBNUMA_SUPPORT 581 + EXTLIBS += -lnuma 582 + $(call detected,CONFIG_NUMA) 583 + endif 579 584 endif 580 585 endif 581 586