build: fix host menu config targets using ncurses
authorPetr Štetiar <ynezz@true.cz>
Fri, 20 Sep 2019 12:54:56 +0000 (14:54 +0200)
committerRISCi_ATOM <bob@bobcall.me>
Thu, 10 Oct 2019 15:55:43 +0000 (11:55 -0400)
On a recent Gentoo Linux installation, invoking `make menuconfig`, `make
kernel_menuconfig` or `make kernel_nconfig` in the build system fails,
whereas for example `make menuconfig` in the kernel tree alone works as
expected.

This is happening because STAGING_PREFIX is not defined when kernel's
{menu,n}config 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 all ncurses based menu config
targets in order to provide proper compiler/linker flags.

Ref: FS#2423
Cc: Thomas Albers <thomas.gameiro@gmail.com>
Tested-by: Stijn Tintel <stijn@linux-ipv6.be>
Tested-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
Signed-off-by: Petr Štetiar <ynezz@true.cz>
(cherry picked from commit 965f341aa9fdb6e07d509d02a6ca188af050292a)

Makefile
include/toplevel.mk
scripts/config/Makefile

index 71e70d734b7d0c65eb483e920819f94a60607959..f9b2bb563ee86b18a77d906906392b393c020d3e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,7 @@ $(if $(findstring $(space),$(TOPDIR)),$(error ERROR: The path to the libreCMC di
 
 world:
 
+DISTRO_PKG_CONFIG:=$(shell which -a pkg-config | grep -E '\/usr' | head -n 1)
 export PATH:=$(TOPDIR)/staging_dir/host/bin:$(PATH)
 
 ifneq ($(LIBRECMC_BUILD),1)
index 05413126e3faa774d99c5d20279664f696d03306..11c0cd11d247899dacb2424552b1c34c23299fc2 100644 (file)
@@ -99,13 +99,18 @@ prepare-tmpinfo: FORCE
                $(_SINGLE)$(NO_TRACE_MAKE) menuconfig $(PREP_MK); \
        fi
 
+ifneq ($(DISTRO_PKG_CONFIG),)
+scripts/config/mconf: export PATH:=$(dir $(DISTRO_PKG_CONFIG)):$(PATH)
+endif
 scripts/config/mconf:
        @$(_SINGLE)$(SUBMAKE) -s -C scripts/config all CC="$(HOSTCC_WRAPPER)"
 
 $(eval $(call rdep,scripts/config,scripts/config/mconf))
 
 scripts/config/qconf:
-       @$(_SINGLE)$(SUBMAKE) -s -C scripts/config qconf CC="$(HOSTCC_WRAPPER)"
+       @$(_SINGLE)$(SUBMAKE) -s -C scripts/config qconf \
+               CC="$(HOSTCC_WRAPPER)" \
+               DISTRO-PKG-CONFIG="$(DISTRO_PKG_CONFIG)"
 
 scripts/config/conf:
        @$(_SINGLE)$(SUBMAKE) -s -C scripts/config conf CC="$(HOSTCC_WRAPPER)"
@@ -157,6 +162,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)
+endif
 kernel_menuconfig: prepare_kernel_conf
        $(_SINGLE)$(NO_TRACE_MAKE) -C target/linux menuconfig
 
index beeeb6c2e09f71ea8e8ee650a6554f1e10452e6e..92c924376f1564d4ad2f85beb683e9077fd790d5 100644 (file)
@@ -20,8 +20,6 @@ check_lxdialog = $(shell $(SHELL) $(CURDIR)/lxdialog/check-lxdialog.sh -$(1))
 export CFLAGS += -DKBUILD_NO_NLS -I. $(call check_lxdialog,ccflags)
 export CXXFLAGS += -DKBUILD_NO_NLS
 
-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