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

perf build: Make binutil libraries opt in



binutils is GPLv3 so distributions cannot ship perf linked against
libbfd and libiberty as the licenses are incompatible. Rather than
defaulting the build to opting in to libbfd and libiberty support and
opting out via NO_LIBBFD=1 and NO_DEMANGLE=1, make building against
the libraries optional and enabled with BUILD_NONDISTRO=1.

Signed-off-by: default avatarIan Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andres Freund <andres@anarazel.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Martin Liška <mliska@suse.cz>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Pavithra Gurushankar <gpavithrasha@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Quentin Monnet <quentin@isovalent.com>
Cc: Roberto Sassu <roberto.sassu@huawei.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
Cc: Tom Rix <trix@redhat.com>
Cc: Yang Jihong <yangjihong1@huawei.com>
Cc: llvm@lists.linux.dev
Link: https://lore.kernel.org/r/20230311065753.3012826-2-irogers@google.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 175f9315
Loading
Loading
Loading
Loading
+10 −15
Original line number Diff line number Diff line
@@ -890,7 +890,7 @@ ifneq ($(NO_JEVENTS),1)
  endif
endif

ifndef NO_LIBBFD
ifdef BUILD_NONDISTRO
  ifeq ($(feature-libbfd), 1)
    EXTLIBS += -lbfd -lopcodes
  else
@@ -913,6 +913,7 @@ ifndef NO_LIBBFD
    $(call feature_check,disassembler-init-styled)
  endif

  CFLAGS += -DHAVE_LIBBFD_SUPPORT
  ifeq ($(feature-libbfd-buildid), 1)
    CFLAGS += -DHAVE_LIBBFD_BUILDID_SUPPORT
  else
@@ -923,32 +924,26 @@ endif
ifdef NO_DEMANGLE
  CFLAGS += -DNO_DEMANGLE
else
  ifdef BUILD_NONDISTRO
    ifeq ($(filter -liberty,$(EXTLIBS)),)
      ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
        EXTLIBS += -liberty
      else
    ifeq ($(filter -liberty,$(EXTLIBS)),)
        $(call feature_check,cplus-demangle)

      # we dont have neither HAVE_CPLUS_DEMANGLE_SUPPORT
      # or any of 'bfd iberty z' trinity
        ifeq ($(feature-cplus-demangle), 1)
          EXTLIBS += -liberty
      else
        msg := $(warning No bfd.h/libbfd found, please install binutils-dev[el]/zlib-static/libiberty-dev to gain symbol demangling)
        CFLAGS += -DNO_DEMANGLE
        endif
      endif
    endif
  endif

  ifneq ($(filter -liberty,$(EXTLIBS)),)
    CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
  else
    CFLAGS += -DNO_DEMANGLE
  endif
endif

ifneq ($(filter -lbfd,$(EXTLIBS)),)
  CFLAGS += -DHAVE_LIBBFD_SUPPORT
endif

ifndef NO_ZLIB
  ifeq ($(feature-zlib), 1)
    CFLAGS += -DHAVE_ZLIB_SUPPORT
+2 −0
Original line number Diff line number Diff line
@@ -128,6 +128,8 @@ include ../scripts/utilities.mak
#
# Define NO_BPF_SKEL to disable BPF skeletons
#
# Define BUILD_NONDISTRO to enable building an linking against libbfd and
# libiberty distribution license incompatible libraries.

# As per kernel Makefile, avoid funny character set dependencies
unexport LC_ALL
+2 −0
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ python_perf_so := $(shell $(MAKE) python_perf_target|grep "Target is:"|awk '{pri
make_clean_all      := clean all
make_python_perf_so := $(python_perf_so)
make_debug          := DEBUG=1
make_nondistro      := BUILD_NONDISTRO=1
make_no_libperl     := NO_LIBPERL=1
make_no_libpython   := NO_LIBPYTHON=1
make_no_scripts     := NO_LIBPYTHON=1 NO_LIBPERL=1
@@ -134,6 +135,7 @@ MAKE_F := $(MAKE) -f $(MK)
endif
run += make_python_perf_so
run += make_debug
run += make_nondistro
run += make_no_libperl
run += make_no_libpython
run += make_no_scripts