Commit 91009a3a authored by Ian Rogers's avatar Ian Rogers Committed by Arnaldo Carvalho de Melo
Browse files

perf build: Install libperf 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 headers are all found via this path, making it impossible to
override include behavior.

Change the libperf build mirroring the libbpf, libsubcmd and libapi
build, so that it is installed in a directory along with its headers. A
later change will modify the include behavior.

Signed-off-by: default avatarIan Rogers <irogers@google.com>
Acked-by: default avatarNamhyung 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-6-irogers@google.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 00314c9b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ pmu-events/jevents
feature/
libapi/
libbpf/
libperf/
libsubcmd/
fixdep
libtraceevent-dynamic-list
+14 −7
Original line number Diff line number Diff line
@@ -294,11 +294,9 @@ strip-libs = $(filter-out -l%,$(1))
ifneq ($(OUTPUT),)
  TE_PATH=$(OUTPUT)
  PLUGINS_PATH=$(OUTPUT)
  LIBPERF_PATH=$(OUTPUT)
else
  TE_PATH=$(TRACE_EVENT_DIR)
  PLUGINS_PATH=$(TRACE_EVENT_DIR)plugins/
  LIBPERF_PATH=$(LIBPERF_DIR)
endif

LIBTRACEEVENT = $(TE_PATH)libtraceevent.a
@@ -340,7 +338,14 @@ LIBSUBCMD_DESTDIR = $(LIBSUBCMD_OUTPUT)
LIBSUBCMD_INCLUDE = $(LIBSUBCMD_DESTDIR)/include
LIBSUBCMD = $(LIBSUBCMD_OUTPUT)/libsubcmd.a

LIBPERF = $(LIBPERF_PATH)libperf.a
ifneq ($(OUTPUT),)
  LIBPERF_OUTPUT = $(abspath $(OUTPUT))/libperf
else
  LIBPERF_OUTPUT = $(CURDIR)/libperf
endif
LIBPERF_DESTDIR = $(LIBPERF_OUTPUT)
LIBPERF_INCLUDE = $(LIBPERF_DESTDIR)/include
LIBPERF = $(LIBPERF_OUTPUT)/libperf.a
export LIBPERF

# python extension build directories
@@ -850,12 +855,14 @@ $(LIBBPF)-clean:
	$(call QUIET_CLEAN, libbpf)
	$(Q)$(RM) -r -- $(LIBBPF_OUTPUT)

$(LIBPERF): FORCE
	$(Q)$(MAKE) -C $(LIBPERF_DIR) EXTRA_CFLAGS="$(LIBPERF_CFLAGS)" O=$(OUTPUT) $(OUTPUT)libperf.a
$(LIBPERF): FORCE | $(LIBPERF_OUTPUT)
	$(Q)$(MAKE) -C $(LIBPERF_DIR) O=$(LIBPERF_OUTPUT) \
		DESTDIR=$(LIBPERF_DESTDIR) prefix= \
		$@ install_headers

$(LIBPERF)-clean:
	$(call QUIET_CLEAN, libperf)
	$(Q)$(MAKE) -C $(LIBPERF_DIR) O=$(OUTPUT) clean >/dev/null
	$(Q)$(RM) -r -- $(LIBPERF_OUTPUT)

$(LIBSUBCMD): FORCE | $(LIBSUBCMD_OUTPUT)
	$(Q)$(MAKE) -C $(LIBSUBCMD_DIR) O=$(LIBSUBCMD_OUTPUT) \
@@ -1050,7 +1057,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)/kwork_trace.skel.h

$(SKEL_TMP_OUT) $(LIBAPI_OUTPUT) $(LIBBPF_OUTPUT) $(LIBSUBCMD_OUTPUT):
$(SKEL_TMP_OUT) $(LIBAPI_OUTPUT) $(LIBBPF_OUTPUT) $(LIBPERF_OUTPUT) $(LIBSUBCMD_OUTPUT):
	$(Q)$(MKDIR) -p $@

ifdef BUILD_BPF_SKEL