[OpenWrt-Devel] [PATCH v2] build: fix make kernel_menuconfig

Petr Štetiar ynezz at true.cz
Mon Sep 23 03:39:37 EDT 2019

On a recent Gentoo Linux installation, invoking `make kernel_menuconfig`
in the build system fails, whereas `make menuconfig` in the kernel tree
alone works as expected.

This is happening because STAGING_PREFIX is not defined when kernel's
menuconfig target calls pkg-config from the toolchain/host and thus
pkg-config returns an empty value, and the fallback values in the kernel
config script are applied but those are off and the linking fails.

Solution is to use system's pkg-config for kernel_menuconfig target in
order to provide proper compiler/linker flags.

Ref: FS#2423
Cc: Thomas Albers <thomas.gameiro at gmail.com>
Signed-off-by: Petr Štetiar <ynezz at true.cz>

changes in v2:

 * fixed kernel_nconfig path

 Makefile                | 1 +
 include/toplevel.mk     | 8 +++++++-
 scripts/config/Makefile | 2 --
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index ab97eacc9d2b..65ee10a84b8d 100644
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,7 @@ $(if $(findstring $(space),$(TOPDIR)),$(error ERROR: The path to the OpenWrt dir
+DISTRO_PKG_CONFIG:=$(shell which -a pkg-config | grep -E '\/usr' | head -n 1)
 export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH)
 ifneq ($(OPENWRT_BUILD),1)
diff --git a/include/toplevel.mk b/include/toplevel.mk
index 133da9d830b5..12586e87c09a 100644
--- a/include/toplevel.mk
+++ b/include/toplevel.mk
@@ -105,7 +105,9 @@ scripts/config/mconf:
 $(eval $(call rdep,scripts/config,scripts/config/mconf))
-	@$(_SINGLE)$(SUBMAKE) -s -C scripts/config qconf CC="$(HOSTCC_WRAPPER)"
+	@$(_SINGLE)$(SUBMAKE) -s -C scripts/config qconf \
 	@$(_SINGLE)$(SUBMAKE) -s -C scripts/config conf CC="$(HOSTCC_WRAPPER)"
@@ -157,6 +159,10 @@ endif
 kernel_oldconfig: prepare_kernel_conf
 	$(_SINGLE)$(NO_TRACE_MAKE) -C target/linux oldconfig
+ifneq ($(DISTRO_PKG_CONFIG),)
+kernel_menuconfig: export PATH:=$(dir $(DISTRO_PKG_CONFIG)):$(PATH)
+kernel_nconfig: export PATH:=$(dir $(DISTRO_PKG_CONFIG)):$(PATH)
 kernel_menuconfig: prepare_kernel_conf
 	$(_SINGLE)$(NO_TRACE_MAKE) -C target/linux menuconfig
diff --git a/scripts/config/Makefile b/scripts/config/Makefile
index 8bb62d233c86..8b78d5a68247 100644
--- a/scripts/config/Makefile
+++ b/scripts/config/Makefile
@@ -20,8 +20,6 @@ check_lxdialog = $(shell $(SHELL) $(CURDIR)/lxdialog/check-lxdialog.sh -$(1))
 export CFLAGS += -DKBUILD_NO_NLS -I. $(call check_lxdialog,ccflags)
-DISTRO-PKG-CONFIG := $(shell which -a pkg-config | grep -E '\/usr' | head -n 1)
 conf-objs	:= conf.o zconf.tab.o
 mconf-objs	:= mconf.o zconf.tab.o
 qconf-cxxobjs	:= qconf.o

openwrt-devel mailing list
openwrt-devel at lists.openwrt.org

More information about the openwrt-devel mailing list