Commit ae215b14 authored by Sam Ravnborg's avatar Sam Ravnborg
Browse files

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: default avatarSam Ravnborg <sam@ravnborg.org>
parent d51bfb78
Loading
Loading
Loading
Loading
+12 −36
Original line number Diff line number Diff line
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 −0
Original line number Diff line number Diff line
#!/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