kconfig: factor out ncurses check in a shell script

Cleaning up the lxdialog Makefile by factoring out the
ncurses compatibility checks.
This made the checks much more obvious and easier to extend.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

+79 -36
+12 -36
scripts/kconfig/lxdialog/Makefile
··· 1 - HOST_EXTRACFLAGS := -DLOCALE 2 - ifeq ($(shell uname),SunOS) 3 - HOST_LOADLIBES := -lcurses 4 - else 5 - HOST_LOADLIBES := -lncurses 6 - endif 1 + # Makefile to build lxdialog package 2 + # 7 3 8 - ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h)) 9 - HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>" 10 - else 11 - ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h)) 12 - HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>" 13 - else 14 - ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h)) 15 - HOST_EXTRACFLAGS += -DCURSES_LOC="<ncurses.h>" 16 - else 17 - HOST_EXTRACFLAGS += -DCURSES_LOC="<curses.h>" 18 - endif 19 - endif 20 - endif 4 + check-lxdialog := $(srctree)/$(src)/check-lxdialog.sh 5 + HOST_EXTRACFLAGS := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) 6 + HOST_LOADLIBES := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags) 7 + 8 + HOST_EXTRACFLAGS += -DLOCALE 9 + 10 + .PHONY: dochecklxdialog 11 + $(obj)/dochecklxdialog: 12 + $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_LOADLIBES) 21 13 22 14 hostprogs-y := lxdialog 23 - always := ncurses $(hostprogs-y) 15 + always := $(hostprogs-y) dochecklxdialog 24 16 25 17 lxdialog-objs := checklist.o menubox.o textbox.o yesno.o inputbox.o \ 26 18 util.o lxdialog.o msgbox.o 27 - 28 - .PHONY: $(obj)/ncurses 29 - $(obj)/ncurses: 30 - @echo "main() {}" > lxtemp.c 31 - @if $(HOSTCC) lxtemp.c $(HOST_LOADLIBES); then \ 32 - rm -f lxtemp.c a.out; \ 33 - else \ 34 - rm -f lxtemp.c; \ 35 - echo -e "\007" ;\ 36 - echo ">> Unable to find the Ncurses libraries." ;\ 37 - echo ">>" ;\ 38 - echo ">> You must install ncurses-devel in order" ;\ 39 - echo ">> to use 'make menuconfig'" ;\ 40 - echo ;\ 41 - exit 1 ;\ 42 - fi
+67
scripts/kconfig/lxdialog/check-lxdialog.sh
··· 1 + #!/bin/sh 2 + # Check ncurses compatibility 3 + 4 + # What library to link 5 + ldflags() 6 + { 7 + if [ `uname` == SunOS ]; then 8 + echo '-lcurses' 9 + else 10 + echo '-lncurses' 11 + fi 12 + } 13 + 14 + # Where is ncurses.h? 15 + ccflags() 16 + { 17 + if [ -f /usr/include/ncurses/ncurses.h ]; then 18 + echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"' 19 + elif [ -f /usr/include/ncurses/curses.h ]; then 20 + echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"' 21 + elif [ -f /usr/include/ncurses.h ]; then 22 + echo '-DCURSES_LOC="<ncurses.h>"' 23 + else 24 + echo '-DCURSES_LOC="<curses.h>"' 25 + fi 26 + } 27 + 28 + compiler="" 29 + # Check if we can link to ncurses 30 + check() { 31 + echo "main() {}" | $compiler -xc - 32 + if [ $? != 0 ]; then 33 + echo " *** Unable to find the ncurses libraries." 1>&2 34 + echo " *** make menuconfig require the ncurses libraries" 1>&2 35 + echo " *** " 1>&2 36 + echo " *** Install ncurses (ncurses-devel) and try again" 1>&2 37 + echo " *** " 1>&2 38 + exit 1 39 + fi 40 + } 41 + 42 + usage() { 43 + printf "Usage: $0 [-check compiler options|-header|-library]\n" 44 + } 45 + 46 + if [ $# == 0 ]; then 47 + usage 48 + exit 1 49 + fi 50 + 51 + case "$1" in 52 + "-check") 53 + shift 54 + compiler="$@" 55 + check 56 + ;; 57 + "-ccflags") 58 + ccflags 59 + ;; 60 + "-ldflags") 61 + ldflags 62 + ;; 63 + "*") 64 + usage 65 + exit 1 66 + ;; 67 + esac