提交 ae215b14 编写于 作者: S Sam Ravnborg

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: NSam Ravnborg <sam@ravnborg.org>
上级 d51bfb78
HOST_EXTRACFLAGS := -DLOCALE # Makefile to build lxdialog package
ifeq ($(shell uname),SunOS) #
HOST_LOADLIBES := -lcurses
else
HOST_LOADLIBES := -lncurses
endif
ifeq (/usr/include/ncurses/ncurses.h, $(wildcard /usr/include/ncurses/ncurses.h)) check-lxdialog := $(srctree)/$(src)/check-lxdialog.sh
HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>" HOST_EXTRACFLAGS := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags)
else HOST_LOADLIBES := $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags)
ifeq (/usr/include/ncurses/curses.h, $(wildcard /usr/include/ncurses/curses.h))
HOST_EXTRACFLAGS += -I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>" HOST_EXTRACFLAGS += -DLOCALE
else
ifeq (/usr/include/ncurses.h, $(wildcard /usr/include/ncurses.h)) .PHONY: dochecklxdialog
HOST_EXTRACFLAGS += -DCURSES_LOC="<ncurses.h>" $(obj)/dochecklxdialog:
else $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_LOADLIBES)
HOST_EXTRACFLAGS += -DCURSES_LOC="<curses.h>"
endif
endif
endif
hostprogs-y := lxdialog hostprogs-y := lxdialog
always := ncurses $(hostprogs-y) always := $(hostprogs-y) dochecklxdialog
lxdialog-objs := checklist.o menubox.o textbox.o yesno.o inputbox.o \ lxdialog-objs := checklist.o menubox.o textbox.o yesno.o inputbox.o \
util.o lxdialog.o msgbox.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
#!/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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册