Home | History | Annotate | Download | only in lxdialog
      1 #!/bin/sh
      2 # SPDX-License-Identifier: GPL-2.0
      3 # Check ncurses compatibility
      4 
      5 # What library to link
      6 ldflags()
      7 {
      8 	pkg-config --libs ncursesw 2>/dev/null && exit
      9 	pkg-config --libs ncurses 2>/dev/null && exit
     10 	for ext in so a dll.a dylib ; do
     11 		for lib in ncursesw ncurses curses ; do
     12 			$cc -print-file-name=lib${lib}.${ext} | grep -q /
     13 			if [ $? -eq 0 ]; then
     14 				echo "-l${lib}"
     15 				exit
     16 			fi
     17 		done
     18 	done
     19 	exit 1
     20 }
     21 
     22 # Where is ncurses.h?
     23 ccflags()
     24 {
     25 	if pkg-config --cflags ncursesw 2>/dev/null; then
     26 		echo '-DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1'
     27 	elif pkg-config --cflags ncurses 2>/dev/null; then
     28 		echo '-DCURSES_LOC="<ncurses.h>"'
     29 	elif [ -f /usr/include/ncursesw/curses.h ]; then
     30 		echo '-I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"'
     31 		echo ' -DNCURSES_WIDECHAR=1'
     32 	elif [ -f /usr/include/ncurses/ncurses.h ]; then
     33 		echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"'
     34 	elif [ -f /usr/include/ncurses/curses.h ]; then
     35 		echo '-I/usr/include/ncurses -DCURSES_LOC="<curses.h>"'
     36 	elif [ -f /usr/include/ncurses.h ]; then
     37 		echo '-DCURSES_LOC="<ncurses.h>"'
     38 	else
     39 		echo '-DCURSES_LOC="<curses.h>"'
     40 	fi
     41 }
     42 
     43 # Temp file, try to clean up after us
     44 tmp=.lxdialog.tmp
     45 trap "rm -f $tmp" 0 1 2 3 15
     46 
     47 # Check if we can link to ncurses
     48 check() {
     49         $cc -x c - -o $tmp 2>/dev/null <<'EOF'
     50 #include CURSES_LOC
     51 main() {}
     52 EOF
     53 	if [ $? != 0 ]; then
     54 	    echo " *** Unable to find the ncurses libraries or the"       1>&2
     55 	    echo " *** required header files."                            1>&2
     56 	    echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2
     57 	    echo " *** "                                                  1>&2
     58 	    echo " *** Install ncurses (ncurses-devel or libncurses-dev " 1>&2
     59 	    echo " *** depending on your distribution) and try again."    1>&2
     60 	    echo " *** "                                                  1>&2
     61 	    exit 1
     62 	fi
     63 }
     64 
     65 usage() {
     66 	printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n"
     67 }
     68 
     69 if [ $# -eq 0 ]; then
     70 	usage
     71 	exit 1
     72 fi
     73 
     74 cc=""
     75 case "$1" in
     76 	"-check")
     77 		shift
     78 		cc="$@"
     79 		check
     80 		;;
     81 	"-ccflags")
     82 		ccflags
     83 		;;
     84 	"-ldflags")
     85 		shift
     86 		cc="$@"
     87 		ldflags
     88 		;;
     89 	"*")
     90 		usage
     91 		exit 1
     92 		;;
     93 esac
     94