From: Namhyung Kim <namhyung@kernel.org>
To: Leo Yan <leo.yan@arm.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
Ian Rogers <irogers@google.com>,
James Clark <james.clark@arm.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
"Liang, Kan" <kan.liang@linux.intel.com>,
Nick Terrell <terrelln@fb.com>,
Thomas Richter <tmricht@linux.ibm.com>,
Quentin Monnet <qmo@kernel.org>,
Changbin Du <changbin.du@huawei.com>,
Fangrui Song <maskray@google.com>,
linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
Guilherme Amadio <amadio@gentoo.org>
Subject: Re: [PATCH v2 1/6] perf: build: Setup PKG_CONFIG_LIBDIR for cross compilation
Date: Fri, 21 Jun 2024 16:18:41 -0700 [thread overview]
Message-ID: <ZnYKUfr4f-0NFw6r@google.com> (raw)
In-Reply-To: <20240610095433.336295-2-leo.yan@arm.com>
Hello,
On Mon, Jun 10, 2024 at 10:54:28AM +0100, Leo Yan wrote:
> On recent Linux distros like Ubuntu Noble and Debian Bookworm, the
> 'pkg-config-aarch64-linux-gnu' package is missing. As a result, the
> aarch64-linux-gnu-pkg-config command is not available, which causes
> build failures.
>
> When a build passes the environment variables PKG_CONFIG_LIBDIR or
> PKG_CONFIG_PATH, like a user uses make command or a build system
> (like Yocto, Buildroot, etc) prepares the variables and passes to the
> Perf's Makefile, the commit keeps these variables for package
> configuration. Otherwise, this commit sets the PKG_CONFIG_LIBDIR
> variable to use the Multiarch libs for the cross compilation.
>
> Signed-off-by: Leo Yan <leo.yan@arm.com>
> ---
> tools/build/feature/Makefile | 26 +++++++++++++++++++++++++-
> tools/perf/Makefile.perf | 26 +++++++++++++++++++++++++-
> 2 files changed, 50 insertions(+), 2 deletions(-)
>
> diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
> index ed54cef450f5..084f803093c3 100644
> --- a/tools/build/feature/Makefile
> +++ b/tools/build/feature/Makefile
> @@ -82,7 +82,31 @@ FILES= \
>
> FILES := $(addprefix $(OUTPUT),$(FILES))
>
> -PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
> +# Some distros provide the command $(CROSS_COMPILE)pkg-config for
> +# searching packges installed with Multiarch. Use it for cross
> +# compilation if it is existed.
> +ifneq (, $(shell which $(CROSS_COMPILE)pkg-config))
> + PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
> +else
> + PKG_CONFIG ?= pkg-config
> +
> + # PKG_CONFIG_PATH or PKG_CONFIG_LIBDIR is required for the cross
> + # compilation. If both is not set, try to set the lib paths installed
> + # by multiarch.
> + ifdef CROSS_COMPILE
> + ifeq ($(PKG_CONFIG_LIBDIR)$(PKG_CONFIG_PATH),)
Maybe you want to check PKG_CONFIG_SYSROOT_DIR too.
> + CROSS_ARCH = $(shell $(CC) -dumpmachine)
> + PKG_CONFIG_LIBDIR := /usr/local/$(CROSS_ARCH)/lib/pkgconfig/
> + PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/share/pkgconfig/
> + PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/lib/$(CROSS_ARCH)/pkgconfig/
> + PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/lib/$(CROSS_ARCH)/pkgconfig/
> + PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/share/pkgconfig/
I'm not sure why this ordering.. don't you want to check
CROSS_ARCH directories first and then /usr/local/share and
/usr/share directory?
> + export PKG_CONFIG_LIBDIR
> + $(warning Missing PKG_CONFIG_LIBDIR and PKG_CONFIG_PATH for cross compilation,)
> + $(warning set PKG_CONFIG_LIBDIR=$(PKG_CONFIG_LIBDIR) for building with Multiarch libs.)
> + endif
> + endif
> +endif
>
> all: $(FILES)
>
> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> index 5c35c0d89306..2c9e89415e48 100644
> --- a/tools/perf/Makefile.perf
> +++ b/tools/perf/Makefile.perf
> @@ -193,7 +193,31 @@ HOSTLD ?= ld
> HOSTAR ?= ar
> CLANG ?= clang
>
> -PKG_CONFIG = $(CROSS_COMPILE)pkg-config
> +# Some distros provide the command $(CROSS_COMPILE)pkg-config for
> +# searching packges installed with Multiarch. Use it for cross
> +# compilation if it is existed.
> +ifneq (, $(shell which $(CROSS_COMPILE)pkg-config))
> + PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
> +else
> + PKG_CONFIG ?= pkg-config
> +
> + # PKG_CONFIG_PATH or PKG_CONFIG_LIBDIR is required for the cross
> + # compilation. If both is not set, try to set the lib paths installed
> + # by multiarch.
> + ifdef CROSS_COMPILE
> + ifeq ($(PKG_CONFIG_LIBDIR)$(PKG_CONFIG_PATH),)
> + CROSS_ARCH = $(shell $(CC) -dumpmachine)
> + PKG_CONFIG_LIBDIR := /usr/local/$(CROSS_ARCH)/lib/pkgconfig/
> + PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/share/pkgconfig/
> + PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/local/lib/$(CROSS_ARCH)/pkgconfig/
> + PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/lib/$(CROSS_ARCH)/pkgconfig/
> + PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/share/pkgconfig/
Ditto.
Thanks,
Namhyung
> + export PKG_CONFIG_LIBDIR
> + $(warning Missing PKG_CONFIG_LIBDIR and PKG_CONFIG_PATH for cross compilation,)
> + $(warning set PKG_CONFIG_LIBDIR to $(PKG_CONFIG_LIBDIR) for using libs with Multiarch.)
> + endif
> + endif
> +endif
>
> RM = rm -f
> LN = ln -f
> --
> 2.34.1
>
next prev parent reply other threads:[~2024-06-21 23:18 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-10 9:54 [PATCH v2 0/6] perf: build: Fix cross compilation Leo Yan
2024-06-10 9:54 ` [PATCH v2 1/6] perf: build: Setup PKG_CONFIG_LIBDIR for " Leo Yan
2024-06-21 23:18 ` Namhyung Kim [this message]
2024-06-25 17:08 ` Leo Yan
2024-06-10 9:54 ` [PATCH v2 2/6] perf: build: Set Python configuration " Leo Yan
2024-06-10 9:54 ` [PATCH v2 3/6] perf: build: Only link libebl.a for old libdw Leo Yan
2024-06-21 23:40 ` Namhyung Kim
2024-06-25 18:09 ` Leo Yan
2024-06-10 9:54 ` [PATCH v2 4/6] perf: build: Link lib 'lzma' for static build Leo Yan
2024-06-10 9:54 ` [PATCH v2 5/6] perf: build: Link lib 'zstd' " Leo Yan
2024-06-10 9:54 ` [PATCH v2 6/6] perf docs: Document cross compilation Leo Yan
[not found] ` <CAP-5=fVqJWGWbrddyqAhUp6afG3AX61ekNr3Mpe6u=wYaeeCcg@mail.gmail.com>
2024-06-25 18:16 ` Leo Yan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZnYKUfr4f-0NFw6r@google.com \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=amadio@gentoo.org \
--cc=changbin.du@huawei.com \
--cc=irogers@google.com \
--cc=james.clark@arm.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=leo.yan@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=maskray@google.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=qmo@kernel.org \
--cc=terrelln@fb.com \
--cc=tmricht@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.