mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2024-12-29 17:23:36 +00:00
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>
This commit is contained in:
parent
d51bfb7852
commit
ae215b14bd
@ -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
scripts/kconfig/lxdialog/check-lxdialog.sh
Normal file
67
scripts/kconfig/lxdialog/check-lxdialog.sh
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user