perf: build: Setup PKG_CONFIG_LIBDIR for cross compilation
commit 440cf77625
upstream.
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>
Tested-by: Ian Rogers <irogers@google.com>
Cc: amadio@gentoo.org
Cc: Thomas Richter <tmricht@linux.ibm.com>
Link: https://lore.kernel.org/r/20240717082211.524826-2-leo.yan@arm.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexis Lothoré <alexis.lothore@bootlin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit eb952372bf481d52eeeb7ac719f350b38d5d1c31)
This commit is contained in:
parent
25afeeeecd
commit
4613dc7311
|
@ -81,7 +81,30 @@ 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, alongside PKG_CONFIG_SYSROOT_DIR
|
||||
# for modified system root, are required for the cross compilation.
|
||||
# If these PKG_CONFIG environment variables are not set, Multiarch library
|
||||
# paths are used instead.
|
||||
ifdef CROSS_COMPILE
|
||||
ifeq ($(PKG_CONFIG_LIBDIR)$(PKG_CONFIG_PATH)$(PKG_CONFIG_SYSROOT_DIR),)
|
||||
CROSS_ARCH = $(shell $(CC) -dumpmachine)
|
||||
PKG_CONFIG_LIBDIR := /usr/local/$(CROSS_ARCH)/lib/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/local/share/pkgconfig/
|
||||
PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/share/pkgconfig/
|
||||
export PKG_CONFIG_LIBDIR
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
all: $(FILES)
|
||||
|
||||
|
|
|
@ -188,7 +188,32 @@ 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, alongside PKG_CONFIG_SYSROOT_DIR
|
||||
# for modified system root, is required for the cross compilation.
|
||||
# If these PKG_CONFIG environment variables are not set, Multiarch library
|
||||
# paths are used instead.
|
||||
ifdef CROSS_COMPILE
|
||||
ifeq ($(PKG_CONFIG_LIBDIR)$(PKG_CONFIG_PATH)$(PKG_CONFIG_SYSROOT_DIR),)
|
||||
CROSS_ARCH = $(shell $(CC) -dumpmachine)
|
||||
PKG_CONFIG_LIBDIR := /usr/local/$(CROSS_ARCH)/lib/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/local/share/pkgconfig/
|
||||
PKG_CONFIG_LIBDIR := $(PKG_CONFIG_LIBDIR):/usr/share/pkgconfig/
|
||||
export PKG_CONFIG_LIBDIR
|
||||
$(warning Missing PKG_CONFIG_LIBDIR, PKG_CONFIG_PATH and PKG_CONFIG_SYSROOT_DIR for cross compilation,)
|
||||
$(warning set PKG_CONFIG_LIBDIR for using Multiarch libs.)
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
RM = rm -f
|
||||
LN = ln -f
|
||||
|
|
Loading…
Reference in New Issue