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 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 65usage() { 66 printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n" 67} 68 69if [ $# -eq 0 ]; then 70 usage 71 exit 1 72fi 73 74cc="" 75case "$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 ;; 93esac 94