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