xref: /aosp_15_r20/external/toybox/kconfig/lxdialog/check-lxdialog.sh (revision cf5a6c84e2b8763fc1a7db14496fd4742913b199)
1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/sh
2*cf5a6c84SAndroid Build Coastguard Worker# Check ncurses compatibility
3*cf5a6c84SAndroid Build Coastguard Worker
4*cf5a6c84SAndroid Build Coastguard Worker# What library to link
5*cf5a6c84SAndroid Build Coastguard Workerldflags()
6*cf5a6c84SAndroid Build Coastguard Worker{
7*cf5a6c84SAndroid Build Coastguard Worker	$cc -print-file-name=libncursesw.so | grep -q /
8*cf5a6c84SAndroid Build Coastguard Worker	if [ $? -eq 0 ]; then
9*cf5a6c84SAndroid Build Coastguard Worker		echo '-lncursesw'
10*cf5a6c84SAndroid Build Coastguard Worker		exit
11*cf5a6c84SAndroid Build Coastguard Worker	fi
12*cf5a6c84SAndroid Build Coastguard Worker	$cc -print-file-name=libncurses.so | grep -q /
13*cf5a6c84SAndroid Build Coastguard Worker	if [ $? -eq 0 ]; then
14*cf5a6c84SAndroid Build Coastguard Worker		echo '-lncurses'
15*cf5a6c84SAndroid Build Coastguard Worker		exit
16*cf5a6c84SAndroid Build Coastguard Worker	fi
17*cf5a6c84SAndroid Build Coastguard Worker	$cc -print-file-name=libcurses.so | grep -q /
18*cf5a6c84SAndroid Build Coastguard Worker	if [ $? -eq 0 ]; then
19*cf5a6c84SAndroid Build Coastguard Worker		echo '-lcurses'
20*cf5a6c84SAndroid Build Coastguard Worker		exit
21*cf5a6c84SAndroid Build Coastguard Worker	fi
22*cf5a6c84SAndroid Build Coastguard Worker	exit 1
23*cf5a6c84SAndroid Build Coastguard Worker}
24*cf5a6c84SAndroid Build Coastguard Worker
25*cf5a6c84SAndroid Build Coastguard Worker# Where is ncurses.h?
26*cf5a6c84SAndroid Build Coastguard Workerccflags()
27*cf5a6c84SAndroid Build Coastguard Worker{
28*cf5a6c84SAndroid Build Coastguard Worker	if [ -f /usr/include/ncurses/ncurses.h ]; then
29*cf5a6c84SAndroid Build Coastguard Worker		echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"'
30*cf5a6c84SAndroid Build Coastguard Worker	elif [ -f /usr/include/ncurses/curses.h ]; then
31*cf5a6c84SAndroid Build Coastguard Worker		echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"'
32*cf5a6c84SAndroid Build Coastguard Worker	elif [ -f /usr/include/ncurses.h ]; then
33*cf5a6c84SAndroid Build Coastguard Worker		echo '-DCURSES_LOC="<ncurses.h>"'
34*cf5a6c84SAndroid Build Coastguard Worker	else
35*cf5a6c84SAndroid Build Coastguard Worker		echo '-DCURSES_LOC="<curses.h>"'
36*cf5a6c84SAndroid Build Coastguard Worker	fi
37*cf5a6c84SAndroid Build Coastguard Worker}
38*cf5a6c84SAndroid Build Coastguard Worker
39*cf5a6c84SAndroid Build Coastguard Worker# Temp file, try to clean up after us
40*cf5a6c84SAndroid Build Coastguard Workertmp=.lxdialog.tmp
41*cf5a6c84SAndroid Build Coastguard Workertrap "rm -f $tmp" 0 1 2 3 15
42*cf5a6c84SAndroid Build Coastguard Worker
43*cf5a6c84SAndroid Build Coastguard Worker# Check if we can link to ncurses
44*cf5a6c84SAndroid Build Coastguard Workercheck() {
45*cf5a6c84SAndroid Build Coastguard Worker	echo "main() {}" | $cc -xc - -o $tmp 2> /dev/null
46*cf5a6c84SAndroid Build Coastguard Worker	if [ $? != 0 ]; then
47*cf5a6c84SAndroid Build Coastguard Worker		echo " *** Unable to find the ncurses libraries."          1>&2
48*cf5a6c84SAndroid Build Coastguard Worker		echo " *** make menuconfig require the ncurses libraries"  1>&2
49*cf5a6c84SAndroid Build Coastguard Worker		echo " *** "                                               1>&2
50*cf5a6c84SAndroid Build Coastguard Worker		echo " *** Install ncurses (ncurses-devel) and try again"  1>&2
51*cf5a6c84SAndroid Build Coastguard Worker		echo " *** "                                               1>&2
52*cf5a6c84SAndroid Build Coastguard Worker		exit 1
53*cf5a6c84SAndroid Build Coastguard Worker	fi
54*cf5a6c84SAndroid Build Coastguard Worker}
55*cf5a6c84SAndroid Build Coastguard Worker
56*cf5a6c84SAndroid Build Coastguard Workerusage() {
57*cf5a6c84SAndroid Build Coastguard Worker	printf "Usage: $0 [-check compiler options|-header|-library]\n"
58*cf5a6c84SAndroid Build Coastguard Worker}
59*cf5a6c84SAndroid Build Coastguard Worker
60*cf5a6c84SAndroid Build Coastguard Workerif [ $# == 0 ]; then
61*cf5a6c84SAndroid Build Coastguard Worker	usage
62*cf5a6c84SAndroid Build Coastguard Worker	exit 1
63*cf5a6c84SAndroid Build Coastguard Workerfi
64*cf5a6c84SAndroid Build Coastguard Worker
65*cf5a6c84SAndroid Build Coastguard Workercc=""
66*cf5a6c84SAndroid Build Coastguard Workercase "$1" in
67*cf5a6c84SAndroid Build Coastguard Worker	"-check")
68*cf5a6c84SAndroid Build Coastguard Worker		shift
69*cf5a6c84SAndroid Build Coastguard Worker		cc="$@"
70*cf5a6c84SAndroid Build Coastguard Worker		check
71*cf5a6c84SAndroid Build Coastguard Worker		;;
72*cf5a6c84SAndroid Build Coastguard Worker	"-ccflags")
73*cf5a6c84SAndroid Build Coastguard Worker		ccflags
74*cf5a6c84SAndroid Build Coastguard Worker		;;
75*cf5a6c84SAndroid Build Coastguard Worker	"-ldflags")
76*cf5a6c84SAndroid Build Coastguard Worker		shift
77*cf5a6c84SAndroid Build Coastguard Worker		cc="$@"
78*cf5a6c84SAndroid Build Coastguard Worker		ldflags
79*cf5a6c84SAndroid Build Coastguard Worker		;;
80*cf5a6c84SAndroid Build Coastguard Worker	"*")
81*cf5a6c84SAndroid Build Coastguard Worker		usage
82*cf5a6c84SAndroid Build Coastguard Worker		exit 1
83*cf5a6c84SAndroid Build Coastguard Worker		;;
84*cf5a6c84SAndroid Build Coastguard Workeresac
85