Skip to content

Commit

Permalink
kconfig: factor out ncurses check in a shell script
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
Sam Ravnborg committed Jan 8, 2006
1 parent d51bfb7 commit ae215b1
Show file tree
Hide file tree
Showing 2 changed files with 79 additions and 36 deletions.
48 changes: 12 additions & 36 deletions scripts/kconfig/lxdialog/Makefile
Original file line number Diff line number Diff line change
@@ -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
67 changes: 67 additions & 0 deletions scripts/kconfig/lxdialog/check-lxdialog.sh
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit ae215b1

Please sign in to comment.