Curses detection in adk/config/Makefile is a mess - pkg-config was
designed to avoid exactly that, so make it a required tool on all host
OSs and use it to define the required curses LIBS and CFLAGS from
prereq.sh.
Since pkg-config output also contains the right arguments for libtinfo
(which depends on the chosen curses variant), no mismatches between the
two may happen anymore.
---
adk/config/Makefile | 51 ++-------------------------------------------
scripts/prereq.sh | 35 +++++++++++++++++++++----------
2 files changed, 26 insertions(+), 60 deletions(-)
diff --git a/adk/config/Makefile b/adk/config/Makefile
index 480c314474036..a328fbf59a5d9 100644
--- a/adk/config/Makefile
+++ b/adk/config/Makefile
@@ -8,58 +8,11 @@ include ${ADK_TOPDIR}/rules.mk
endif
CP=cp -fpR
-HOST_CFLAGS+=-DKBUILD_NO_NLS -w
+HOST_CFLAGS+= -DKBUILD_NO_NLS -w ${CURSES_CFLAGS}
+LIBS= ${CURSES_LIBS}
all: ncurses conf mconf
-LIBS=
-ifeq (/usr/lib/libtinfo.so, $(wildcard /usr/lib/libtinfo.so))
-LIBS= -ltinfo
-endif
-
-ifeq (/usr/include/ncursesw/curses.h, $(wildcard /usr/include/ncursesw/curses.h))
-HOST_CFLAGS+= -I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"
-LIBS+= -lncursesw
-else
-ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h))
-HOST_CFLAGS+= -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"
-LIBS+= -lncurses
-else
-ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h))
-HOST_CFLAGS+= -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
-LIBS+= -lncurses
-else
-ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h))
-HOST_CFLAGS+= -DCURSES_LOC="<ncurses.h>"
-LIBS+= -lncurses
-else
-ifeq (/usr/local/include/ncurses/ncurses.h, $(wildcard /usr/local/include/ncurses/ncurses.h))
-HOST_CFLAGS+= -I/usr/local/include/ncurses -DCURSES_LOC="<ncurses.h>"
-LIBS+= -lncurses
-else
-ifeq (/usr/local/include/ncurses/curses.h, $(wildcard /usr/local/include/ncurses/curses.h))
-HOST_CFLAGS+= -I/usr/local/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"
-LIBS+= -lncurses
-else
-ifeq (/usr/local/opt/ncurses/include/ncursesw/ncurses.h, $(wildcard /usr/local/opt/ncurses/include/ncursesw/ncurses.h))
-HOST_CFLAGS+= -I/usr/local/opt/ncurses/include -DCURSES_LOC="<ncursesw/ncurses.h>"
-LIBS+= -L/usr/local/opt/ncurses/lib -Wl,-rpath -Wl,/usr/local/opt/ncurses/lib -lncursesw
-else
-ifeq (/usr/pkg/include/ncurses.h, $(wildcard /usr/pkg/include/ncurses.h))
-HOST_CFLAGS+= -I/usr/pkg/include -DCURSES_LOC="<ncurses.h>"
-LIBS+= -L/usr/pkg/lib -Wl,-rpath -Wl,/usr/pkg/lib -lncurses
-else
-HOST_CFLAGS+= -DCURSES_LOC="<curses.h>"
-LIBS= -lcurses
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-endif
-
CONF_SRC =conf.c
MCONF_SRC =mconf.c $(wildcard lxdialog/*.c)
SHARED_SRC=zconf.tab.c
diff --git a/scripts/prereq.sh b/scripts/prereq.sh
index b71adaac19e9e..356ad65ecbfa4 100755
--- a/scripts/prereq.sh
+++ b/scripts/prereq.sh
@@ -304,6 +304,28 @@ if ! which git >/dev/null 2>&1; then
fi
printf "found\n"
+printf " ---> checking if pkg-config is installed.. "
+if ! which pkg-config >/dev/null 2>&1; then
+ printf "not found\n"
+ out=1
+else
+ printf "found\n"
+fi
+
+printf " ---> checking if ncurses is installed.. "
+curses=""
+for curse in ncursesw ncurses curses; do
+ pkg-config --exists $curse || continue
+ curses=$curse
+ printf "found $curse\n"
+ CURSES_LIBS=$(pkg-config --libs $curse)
+ CURSES_CFLAGS=$(pkg-config --cflags $curse)
+ break
+done
+if [ -z "$curses" ]; then
+ printf "not found\n"
+ out=1
+fi
# creating prereq.mk
echo "ADK_TOPDIR:=$(readlink -nf . 2>/dev/null || pwd -P)" > $topdir/prereq.mk
@@ -327,6 +349,8 @@ echo "ARCH_FOR_BUILD:=$(${CC} -dumpmachine | sed \
-e 's/mipsel-.*/mipsel/' \
-e 's/i[3-9]86/x86/' \
)" >>prereq.mk
+echo "CURSES_LIBS:=${CURSES_LIBS}" >> $topdir/prereq.mk
+echo "CURSES_CFLAGS:=${CURSES_CFLAGS}" >> $topdir/prereq.mk
if [ "$CC" = "clang" ]; then
echo "HOST_CC:=${CC} -fbracket-depth=1024" >> $topdir/prereq.mk
@@ -423,17 +447,6 @@ fi
rm test.c test 2>/dev/null
rm Makefile.tmp 2>/dev/null
-# for make kernelconfig pkg-config is required to find ncurses
-if [ $os = "Darwin" ]; then
- printf " ---> checking if pkg-config is installed.. "
- if ! which pkg-config >/dev/null 2>&1; then
- printf "not found\n"
- out=1
- else
- printf "found\n"
- fi
-fi
-
# error out on any required prerequisite
if [ $out -ne 0 ]; then
exit
--
2.30.0