Trying to execute "make menuconfig" with GCC 14 fails with the following
error, despite ncurses being installed on the host:

 *** Unable to find the ncurses libraries or the
 *** required header files.
 *** 'make menuconfig' requires the ncurses libraries.
 ***
 *** Install ncurses (ncurses-devel) and try again.
 ***
 make[2]: *** [[...]/scripts/kconfig/lxdialog/Makefile:15: 
scripts/kconfig/lxdialog/dochecklxdialog] Error 1
 make[1]: *** [[...]/scripts/kconfig/Makefile:14: menuconfig] Error 2

The failure is due to a silenced error in check-lxdialog.sh during the
check step:

<stdin>:2:1: error: return type defaults to ‘int’ [-Wimplicit-int]

Fix the sample main function definition to fix menuconfig with recent
compilers

Closes: https://bugs.busybox.net/show_bug.cgi?id=16186
Signed-off-by: Alexis Lothoré <[email protected]>
---
The issue has affected some other projects like Buildroot, which has
received the same kind of fix:
https://lore.kernel.org/buildroot/20240408213807.GA44146@pevik/T/#m865c15c74597fe43fd95fd75dc9f3f26887328bf

And picking an upstream fix is not an option since the corresponding
upstream project (the linux kernel) has issued many reworks on lxdialog
and so does not use check-lxdialog.sh anymore
---
 scripts/kconfig/lxdialog/check-lxdialog.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh 
b/scripts/kconfig/lxdialog/check-lxdialog.sh
index 5075ebf2d3b9..4e138366d218 100755
--- a/scripts/kconfig/lxdialog/check-lxdialog.sh
+++ b/scripts/kconfig/lxdialog/check-lxdialog.sh
@@ -47,7 +47,7 @@ trap "rm -f $tmp" 0 1 2 3 15
 check() {
         $cc -x c - -o $tmp 2>/dev/null <<'EOF'
 #include CURSES_LOC
-main() {}
+int main() {}
 EOF
        if [ $? != 0 ]; then
            echo " *** Unable to find the ncurses libraries or the"       1>&2
-- 
2.46.2

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to