1#!/bin/sh 2# SPDX-License-Identifier: GPL-2.0 3# Check ncurses compatibility 4 5# What library to link 6ldflags() 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? 23ccflags() 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 44tmp=.lxdialog.tmp 45trap "rm -f $tmp" 0 1 2 3 15 46 47# Check if we can link to ncurses 48check() { 49 $cc -x c - -o $tmp 2>/dev/null <<'EOF' 50#include CURSES_LOC 51main() {} 52EOF 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) and try again." 1>&2 59 echo " *** " 1>&2 60 exit 1 61 fi 62} 63 64usage() { 65 printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n" 66} 67 68if [ $# -eq 0 ]; then 69 usage 70 exit 1 71fi 72 73cc="" 74case "$1" in 75 "-check") 76 shift 77 cc="$@" 78 check 79 ;; 80 "-ccflags") 81 ccflags 82 ;; 83 "-ldflags") 84 shift 85 cc="$@" 86 ldflags 87 ;; 88 "*") 89 usage 90 exit 1 91 ;; 92esac 93