From aa3c71ca2b6006105e1919bcf3eaf2c12d342256 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Thu, 25 Feb 2021 00:07:42 +0100 Subject: prereq: Use check-lxdialog.sh to determine curses library 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 call check-lxdialog.sh from mconf sources which uses 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. While being at it, sync check-lxdialog.sh with current linux sources so it covers installations with widechar support as well. Signed-off-by: Phil Sutter --- adk/config/Makefile | 51 ++--------------------------------- adk/config/lxdialog/check-lxdialog.sh | 17 +++++++++--- 2 files changed, 15 insertions(+), 53 deletions(-) (limited to 'adk/config') diff --git a/adk/config/Makefile b/adk/config/Makefile index 480c31447..a328fbf59 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="" -LIBS+= -lncursesw -else -ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h)) -HOST_CFLAGS+= -I/usr/include/ncurses -DCURSES_LOC="" -LIBS+= -lncurses -else -ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h)) -HOST_CFLAGS+= -I/usr/include/ncurses -DCURSES_LOC="" -LIBS+= -lncurses -else -ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h)) -HOST_CFLAGS+= -DCURSES_LOC="" -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="" -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="" -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="" -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="" -LIBS+= -L/usr/pkg/lib -Wl,-rpath -Wl,/usr/pkg/lib -lncurses -else -HOST_CFLAGS+= -DCURSES_LOC="" -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/adk/config/lxdialog/check-lxdialog.sh b/adk/config/lxdialog/check-lxdialog.sh index fcef0f59d..5075ebf2d 100644 --- a/adk/config/lxdialog/check-lxdialog.sh +++ b/adk/config/lxdialog/check-lxdialog.sh @@ -4,7 +4,9 @@ # What library to link ldflags() { - for ext in so a dylib ; do + pkg-config --libs ncursesw 2>/dev/null && exit + pkg-config --libs ncurses 2>/dev/null && exit + for ext in so a dll.a dylib ; do for lib in ncursesw ncurses curses ; do $cc -print-file-name=lib${lib}.${ext} | grep -q / if [ $? -eq 0 ]; then @@ -19,10 +21,17 @@ ldflags() # Where is ncurses.h? ccflags() { - if [ -f /usr/include/ncurses/ncurses.h ]; then + if pkg-config --cflags ncursesw 2>/dev/null; then + echo '-DCURSES_LOC="" -DNCURSES_WIDECHAR=1' + elif pkg-config --cflags ncurses 2>/dev/null; then + echo '-DCURSES_LOC=""' + elif [ -f /usr/include/ncursesw/curses.h ]; then + echo '-I/usr/include/ncursesw -DCURSES_LOC=""' + echo ' -DNCURSES_WIDECHAR=1' + elif [ -f /usr/include/ncurses/ncurses.h ]; then echo '-I/usr/include/ncurses -DCURSES_LOC=""' elif [ -f /usr/include/ncurses/curses.h ]; then - echo '-I/usr/include/ncurses -DCURSES_LOC=""' + echo '-I/usr/include/ncurses -DCURSES_LOC=""' elif [ -f /usr/include/ncurses.h ]; then echo '-DCURSES_LOC=""' else @@ -36,7 +45,7 @@ trap "rm -f $tmp" 0 1 2 3 15 # Check if we can link to ncurses check() { - $cc -xc - -o $tmp 2>/dev/null <<'EOF' + $cc -x c - -o $tmp 2>/dev/null <<'EOF' #include CURSES_LOC main() {} EOF -- cgit v1.2.3