diff options
author | Sam Ravnborg <sam@mars.ravnborg.org> | 2006-01-08 18:39:44 +0100 |
---|---|---|
committer | Sam Ravnborg <sam@mars.ravnborg.org> | 2006-01-08 18:39:44 +0100 |
commit | ae215b14bdbd459afe5f371175765fae817062a8 (patch) | |
tree | 138f8f74c5d0cca6e1fcb6f88cee3009089ccc8c | |
parent | d51bfb7852d0e524074ad1cf04e4c3026d75d652 (diff) | |
download | lwn-ae215b14bdbd459afe5f371175765fae817062a8.tar.gz lwn-ae215b14bdbd459afe5f371175765fae817062a8.zip |
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>
-rw-r--r-- | scripts/kconfig/lxdialog/Makefile | 48 | ||||
-rw-r--r-- | scripts/kconfig/lxdialog/check-lxdialog.sh | 67 |
2 files changed, 79 insertions, 36 deletions
diff --git a/scripts/kconfig/lxdialog/Makefile b/scripts/kconfig/lxdialog/Makefile index a45a13fb26ed..8f41d9a57aaa 100644 --- a/scripts/kconfig/lxdialog/Makefile +++ b/scripts/kconfig/lxdialog/Makefile @@ -1,42 +1,18 @@ -HOST_EXTRACFLAGS := -DLOCALE -ifeq ($(shell uname),SunOS) -HOST_LOADLIBES := -lcurses -else -HOST_LOADLIBES := -lncurses -endif +# Makefile to build lxdialog package +# -ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h)) - HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>" -else -ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h)) - HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>" -else -ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h)) - HOST_EXTRACFLAGS += -DCURSES_LOC="<ncurses.h>" -else - HOST_EXTRACFLAGS += -DCURSES_LOC="<curses.h>" -endif -endif -endif +check-lxdialog := $(srctree)/$(src)/check-lxdialog.sh +HOST_EXTRACFLAGS := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags) +HOST_LOADLIBES := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags) + +HOST_EXTRACFLAGS += -DLOCALE + +.PHONY: dochecklxdialog +$(obj)/dochecklxdialog: + $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_LOADLIBES) hostprogs-y := lxdialog -always := ncurses $(hostprogs-y) +always := $(hostprogs-y) dochecklxdialog lxdialog-objs := checklist.o menubox.o textbox.o yesno.o inputbox.o \ util.o lxdialog.o msgbox.o - -.PHONY: $(obj)/ncurses -$(obj)/ncurses: - @echo "main() {}" > lxtemp.c - @if $(HOSTCC) lxtemp.c $(HOST_LOADLIBES); then \ - rm -f lxtemp.c a.out; \ - else \ - rm -f lxtemp.c; \ - echo -e "\007" ;\ - echo ">> Unable to find the Ncurses libraries." ;\ - echo ">>" ;\ - echo ">> You must install ncurses-devel in order" ;\ - echo ">> to use 'make menuconfig'" ;\ - echo ;\ - exit 1 ;\ - fi diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh new file mode 100644 index 000000000000..a3c141b49670 --- /dev/null +++ b/scripts/kconfig/lxdialog/check-lxdialog.sh @@ -0,0 +1,67 @@ +#!/bin/sh +# Check ncurses compatibility + +# What library to link +ldflags() +{ + if [ `uname` == SunOS ]; then + echo '-lcurses' + else + echo '-lncurses' + fi +} + +# Where is ncurses.h? +ccflags() +{ + if [ -f /usr/include/ncurses/ncurses.h ]; then + echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"' + elif [ -f /usr/include/ncurses/curses.h ]; then + echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"' + elif [ -f /usr/include/ncurses.h ]; then + echo '-DCURSES_LOC="<ncurses.h>"' + else + echo '-DCURSES_LOC="<curses.h>"' + fi +} + +compiler="" +# Check if we can link to ncurses +check() { + echo "main() {}" | $compiler -xc - + if [ $? != 0 ]; then + echo " *** Unable to find the ncurses libraries." 1>&2 + echo " *** make menuconfig require the ncurses libraries" 1>&2 + echo " *** " 1>&2 + echo " *** Install ncurses (ncurses-devel) and try again" 1>&2 + echo " *** " 1>&2 + exit 1 + fi +} + +usage() { + printf "Usage: $0 [-check compiler options|-header|-library]\n" +} + +if [ $# == 0 ]; then + usage + exit 1 +fi + +case "$1" in + "-check") + shift + compiler="$@" + check + ;; + "-ccflags") + ccflags + ;; + "-ldflags") + ldflags + ;; + "*") + usage + exit 1 + ;; +esac |