10a9064fbSMasahiro Yamada#!/bin/sh
2*e91610daSEugeniu Rosca# SPDX-License-Identifier: GPL-2.0
30a9064fbSMasahiro Yamada# Check ncurses compatibility
40a9064fbSMasahiro Yamada
50a9064fbSMasahiro Yamada# What library to link
60a9064fbSMasahiro Yamadaldflags()
70a9064fbSMasahiro Yamada{
80a9064fbSMasahiro Yamada	pkg-config --libs ncursesw 2>/dev/null && exit
90a9064fbSMasahiro Yamada	pkg-config --libs ncurses 2>/dev/null && exit
100a9064fbSMasahiro Yamada	for ext in so a dll.a dylib ; do
110a9064fbSMasahiro Yamada		for lib in ncursesw ncurses curses ; do
120a9064fbSMasahiro Yamada			$cc -print-file-name=lib${lib}.${ext} | grep -q /
130a9064fbSMasahiro Yamada			if [ $? -eq 0 ]; then
140a9064fbSMasahiro Yamada				echo "-l${lib}"
150a9064fbSMasahiro Yamada				exit
160a9064fbSMasahiro Yamada			fi
170a9064fbSMasahiro Yamada		done
180a9064fbSMasahiro Yamada	done
190a9064fbSMasahiro Yamada	exit 1
200a9064fbSMasahiro Yamada}
210a9064fbSMasahiro Yamada
220a9064fbSMasahiro Yamada# Where is ncurses.h?
230a9064fbSMasahiro Yamadaccflags()
240a9064fbSMasahiro Yamada{
259b5f0b1dSMasahiro Yamada	if pkg-config --cflags ncursesw 2>/dev/null; then
269b5f0b1dSMasahiro Yamada		echo '-DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1'
279b5f0b1dSMasahiro Yamada	elif pkg-config --cflags ncurses 2>/dev/null; then
289b5f0b1dSMasahiro Yamada		echo '-DCURSES_LOC="<ncurses.h>"'
299b5f0b1dSMasahiro Yamada	elif [ -f /usr/include/ncursesw/curses.h ]; then
300a9064fbSMasahiro Yamada		echo '-I/usr/include/ncursesw -DCURSES_LOC="<curses.h>"'
310a9064fbSMasahiro Yamada		echo ' -DNCURSES_WIDECHAR=1'
320a9064fbSMasahiro Yamada	elif [ -f /usr/include/ncurses/ncurses.h ]; then
330a9064fbSMasahiro Yamada		echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"'
340a9064fbSMasahiro Yamada	elif [ -f /usr/include/ncurses/curses.h ]; then
350a9064fbSMasahiro Yamada		echo '-I/usr/include/ncurses -DCURSES_LOC="<curses.h>"'
360a9064fbSMasahiro Yamada	elif [ -f /usr/include/ncurses.h ]; then
370a9064fbSMasahiro Yamada		echo '-DCURSES_LOC="<ncurses.h>"'
380a9064fbSMasahiro Yamada	else
390a9064fbSMasahiro Yamada		echo '-DCURSES_LOC="<curses.h>"'
400a9064fbSMasahiro Yamada	fi
410a9064fbSMasahiro Yamada}
420a9064fbSMasahiro Yamada
430a9064fbSMasahiro Yamada# Temp file, try to clean up after us
440a9064fbSMasahiro Yamadatmp=.lxdialog.tmp
450a9064fbSMasahiro Yamadatrap "rm -f $tmp" 0 1 2 3 15
460a9064fbSMasahiro Yamada
470a9064fbSMasahiro Yamada# Check if we can link to ncurses
480a9064fbSMasahiro Yamadacheck() {
490a9064fbSMasahiro Yamada        $cc -x c - -o $tmp 2>/dev/null <<'EOF'
500a9064fbSMasahiro Yamada#include CURSES_LOC
510a9064fbSMasahiro Yamadamain() {}
520a9064fbSMasahiro YamadaEOF
530a9064fbSMasahiro Yamada	if [ $? != 0 ]; then
540a9064fbSMasahiro Yamada	    echo " *** Unable to find the ncurses libraries or the"       1>&2
550a9064fbSMasahiro Yamada	    echo " *** required header files."                            1>&2
560a9064fbSMasahiro Yamada	    echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2
570a9064fbSMasahiro Yamada	    echo " *** "                                                  1>&2
58*e91610daSEugeniu Rosca	    echo " *** Install ncurses (ncurses-devel or libncurses-dev " 1>&2
59*e91610daSEugeniu Rosca	    echo " *** depending on your distribution) and try again."    1>&2
600a9064fbSMasahiro Yamada	    echo " *** "                                                  1>&2
610a9064fbSMasahiro Yamada	    exit 1
620a9064fbSMasahiro Yamada	fi
630a9064fbSMasahiro Yamada}
640a9064fbSMasahiro Yamada
650a9064fbSMasahiro Yamadausage() {
660a9064fbSMasahiro Yamada	printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n"
670a9064fbSMasahiro Yamada}
680a9064fbSMasahiro Yamada
690a9064fbSMasahiro Yamadaif [ $# -eq 0 ]; then
700a9064fbSMasahiro Yamada	usage
710a9064fbSMasahiro Yamada	exit 1
720a9064fbSMasahiro Yamadafi
730a9064fbSMasahiro Yamada
740a9064fbSMasahiro Yamadacc=""
750a9064fbSMasahiro Yamadacase "$1" in
760a9064fbSMasahiro Yamada	"-check")
770a9064fbSMasahiro Yamada		shift
780a9064fbSMasahiro Yamada		cc="$@"
790a9064fbSMasahiro Yamada		check
800a9064fbSMasahiro Yamada		;;
810a9064fbSMasahiro Yamada	"-ccflags")
820a9064fbSMasahiro Yamada		ccflags
830a9064fbSMasahiro Yamada		;;
840a9064fbSMasahiro Yamada	"-ldflags")
850a9064fbSMasahiro Yamada		shift
860a9064fbSMasahiro Yamada		cc="$@"
870a9064fbSMasahiro Yamada		ldflags
880a9064fbSMasahiro Yamada		;;
890a9064fbSMasahiro Yamada	"*")
900a9064fbSMasahiro Yamada		usage
910a9064fbSMasahiro Yamada		exit 1
920a9064fbSMasahiro Yamada		;;
930a9064fbSMasahiro Yamadaesac
94