perf build: Install libsymbol locally when building

The perf build currently has a '-Itools/lib' on the CC command
line. This causes issues as the libapi, libsubcmd, libtraceevent,
libbpf and libsymbol headers are all found via this path, making it
impossible to override include behavior.

Change the libsymbol build mirroring the libbpf, libsubcmd, libapi,
libperf and libtraceevent build, so that it is installed in a directory
along with its headers.

A later change will modify the include behavior.  Don't build kallsyms.o
as part of util as this will lead to duplicate definitions. Add
kallsym's directory to the MANIFEST rather than individual files, so
that the Build and Makefile are added to a source tar ball.

Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: bpf@vger.kernel.org
Link: http://lore.kernel.org/lkml/20221109184914.1357295-11-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
Ian Rogers 2022-11-09 10:49:10 -08:00 committed by Arnaldo Carvalho de Melo
parent 160be157ea
commit 84bec6f0b3
4 changed files with 24 additions and 10 deletions

View File

@ -43,6 +43,7 @@ libapi/
libbpf/ libbpf/
libperf/ libperf/
libsubcmd/ libsubcmd/
libsymbol/
libtraceevent/ libtraceevent/
libtraceevent_plugins/ libtraceevent_plugins/
fixdep fixdep

View File

@ -13,8 +13,7 @@ tools/lib/ctype.c
tools/lib/hweight.c tools/lib/hweight.c
tools/lib/rbtree.c tools/lib/rbtree.c
tools/lib/string.c tools/lib/string.c
tools/lib/symbol/kallsyms.c tools/lib/symbol
tools/lib/symbol/kallsyms.h
tools/lib/find_bit.c tools/lib/find_bit.c
tools/lib/bitmap.c tools/lib/bitmap.c
tools/lib/list_sort.c tools/lib/list_sort.c

View File

@ -246,6 +246,7 @@ LIBTRACEEVENT_DIR = $(srctree)/tools/lib/traceevent/
LIBTRACEEVENT_PLUGINS_DIR = $(LIBTRACEEVENT_DIR)/plugins LIBTRACEEVENT_PLUGINS_DIR = $(LIBTRACEEVENT_DIR)/plugins
LIBBPF_DIR = $(srctree)/tools/lib/bpf/ LIBBPF_DIR = $(srctree)/tools/lib/bpf/
LIBSUBCMD_DIR = $(srctree)/tools/lib/subcmd/ LIBSUBCMD_DIR = $(srctree)/tools/lib/subcmd/
LIBSYMBOL_DIR = $(srctree)/tools/lib/symbol/
LIBPERF_DIR = $(srctree)/tools/lib/perf/ LIBPERF_DIR = $(srctree)/tools/lib/perf/
DOC_DIR = $(srctree)/tools/perf/Documentation/ DOC_DIR = $(srctree)/tools/perf/Documentation/
@ -340,6 +341,15 @@ LIBSUBCMD_DESTDIR = $(LIBSUBCMD_OUTPUT)
LIBSUBCMD_INCLUDE = $(LIBSUBCMD_DESTDIR)/include LIBSUBCMD_INCLUDE = $(LIBSUBCMD_DESTDIR)/include
LIBSUBCMD = $(LIBSUBCMD_OUTPUT)/libsubcmd.a LIBSUBCMD = $(LIBSUBCMD_OUTPUT)/libsubcmd.a
ifneq ($(OUTPUT),)
LIBSYMBOL_OUTPUT = $(abspath $(OUTPUT))/libsymbol
else
LIBSYMBOL_OUTPUT = $(CURDIR)/libsymbol
endif
LIBSYMBOL_DESTDIR = $(LIBSYMBOL_OUTPUT)
LIBSYMBOL_INCLUDE = $(LIBSYMBOL_DESTDIR)/include
LIBSYMBOL = $(LIBSYMBOL_OUTPUT)/libsymbol.a
ifneq ($(OUTPUT),) ifneq ($(OUTPUT),)
LIBPERF_OUTPUT = $(abspath $(OUTPUT))/libperf LIBPERF_OUTPUT = $(abspath $(OUTPUT))/libperf
else else
@ -398,7 +408,7 @@ endif
export PERL_PATH export PERL_PATH
PERFLIBS = $(LIBAPI) $(LIBSUBCMD) $(LIBPERF) PERFLIBS = $(LIBAPI) $(LIBPERF) $(LIBSUBCMD) $(LIBSYMBOL)
ifndef NO_LIBBPF ifndef NO_LIBBPF
ifndef LIBBPF_DYNAMIC ifndef LIBBPF_DYNAMIC
PERFLIBS += $(LIBBPF) PERFLIBS += $(LIBBPF)
@ -887,6 +897,15 @@ $(LIBSUBCMD)-clean:
$(call QUIET_CLEAN, libsubcmd) $(call QUIET_CLEAN, libsubcmd)
$(Q)$(RM) -r -- $(LIBSUBCMD_OUTPUT) $(Q)$(RM) -r -- $(LIBSUBCMD_OUTPUT)
$(LIBSYMBOL): FORCE | $(LIBSYMBOL_OUTPUT)
$(Q)$(MAKE) -C $(LIBSYMBOL_DIR) O=$(LIBSYMBOL_OUTPUT) \
DESTDIR=$(LIBSYMBOL_DESTDIR) prefix= \
$@ install_headers
$(LIBSYMBOL)-clean:
$(call QUIET_CLEAN, libsymbol)
$(Q)$(RM) -r -- $(LIBSYMBOL_OUTPUT)
help: help:
@echo 'Perf make targets:' @echo 'Perf make targets:'
@echo ' doc - make *all* documentation (see below)' @echo ' doc - make *all* documentation (see below)'
@ -1071,7 +1090,7 @@ SKELETONS += $(SKEL_OUT)/bperf_cgroup.skel.h $(SKEL_OUT)/func_latency.skel.h
SKELETONS += $(SKEL_OUT)/off_cpu.skel.h $(SKEL_OUT)/lock_contention.skel.h SKELETONS += $(SKEL_OUT)/off_cpu.skel.h $(SKEL_OUT)/lock_contention.skel.h
SKELETONS += $(SKEL_OUT)/kwork_trace.skel.h SKELETONS += $(SKEL_OUT)/kwork_trace.skel.h
$(SKEL_TMP_OUT) $(LIBAPI_OUTPUT) $(LIBBPF_OUTPUT) $(LIBPERF_OUTPUT) $(LIBSUBCMD_OUTPUT): $(SKEL_TMP_OUT) $(LIBAPI_OUTPUT) $(LIBBPF_OUTPUT) $(LIBPERF_OUTPUT) $(LIBSUBCMD_OUTPUT) $(LIBSYMBOL_OUTPUT):
$(Q)$(MKDIR) -p $@ $(Q)$(MKDIR) -p $@
ifndef LIBTRACEEVENT_DYNAMIC ifndef LIBTRACEEVENT_DYNAMIC
@ -1121,7 +1140,7 @@ endif # BUILD_BPF_SKEL
bpf-skel-clean: bpf-skel-clean:
$(call QUIET_CLEAN, bpf-skel) $(RM) -r $(SKEL_TMP_OUT) $(SKELETONS) $(call QUIET_CLEAN, bpf-skel) $(RM) -r $(SKEL_TMP_OUT) $(SKELETONS)
clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean $(LIBPERF)-clean fixdep-clean python-clean bpf-skel-clean tests-coresight-targets-clean libtraceevent_plugins-clean clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean $(LIBSYMBOL)-clean $(LIBPERF)-clean fixdep-clean python-clean bpf-skel-clean tests-coresight-targets-clean libtraceevent_plugins-clean
$(call QUIET_CLEAN, core-objs) $(RM) $(LIBPERF_A) $(OUTPUT)perf-archive $(OUTPUT)perf-iostat $(LANG_BINDINGS) $(call QUIET_CLEAN, core-objs) $(RM) $(LIBPERF_A) $(OUTPUT)perf-archive $(OUTPUT)perf-iostat $(LANG_BINDINGS)
$(Q)find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete $(Q)find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
$(Q)$(RM) $(OUTPUT).config-detected $(Q)$(RM) $(OUTPUT).config-detected

View File

@ -19,7 +19,6 @@ perf-y += perf_event_attr_fprintf.o
perf-y += evswitch.o perf-y += evswitch.o
perf-y += find_bit.o perf-y += find_bit.o
perf-y += get_current_dir_name.o perf-y += get_current_dir_name.o
perf-y += kallsyms.o
perf-y += levenshtein.o perf-y += levenshtein.o
perf-y += llvm-utils.o perf-y += llvm-utils.o
perf-y += mmap.o perf-y += mmap.o
@ -294,10 +293,6 @@ CFLAGS_expr.o += -Wno-redundant-decls
CFLAGS_header.o += -include $(OUTPUT)PERF-VERSION-FILE CFLAGS_header.o += -include $(OUTPUT)PERF-VERSION-FILE
CFLAGS_arm-spe.o += -I$(srctree)/tools/arch/arm64/include/ CFLAGS_arm-spe.o += -I$(srctree)/tools/arch/arm64/include/
$(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c FORCE
$(call rule_mkdir)
$(call if_changed_dep,cc_o_c)
$(OUTPUT)util/argv_split.o: ../lib/argv_split.c FORCE $(OUTPUT)util/argv_split.o: ../lib/argv_split.c FORCE
$(call rule_mkdir) $(call rule_mkdir)
$(call if_changed_dep,cc_o_c) $(call if_changed_dep,cc_o_c)