dnl CF_CURSES_CHECK_DATA version: 9 updated: 2020/02/08 21:00:26
dnl --------------------
dnl Check if curses.h defines the given data/variable.
dnl Use this after CF_NCURSES_CONFIG or CF_CURSES_CONFIG.
dnl
dnl $1 = data item(s) to check for
dnl $2 = action on success, e.g., "break" to quit checking a series of choices
AC_DEFUN([CF_CURSES_CHECK_DATA],
[
for cf_data in $1
do
AC_MSG_CHECKING(for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h})

AC_TRY_COMPILE(CF__CURSES_HEAD,
CF__CURSES_DATA(foo,$cf_data)
,[cf_result=yes
],[cf_result=no])
AC_MSG_RESULT($cf_result)

if test $cf_result = yes ; then
	CF_UPPER(cf_result,have_curses_data_$cf_data)
	AC_DEFINE_UNQUOTED($cf_result)
	ifelse($2,,,[$2])
else
	AC_MSG_CHECKING(for data $cf_data in library)
	# BSD linkers insist on making weak linkage, but resolve at runtime.
	AC_TRY_RUN(CF__CURSES_HEAD
[
extern char $cf_data;
int main(void)
{
	]CF__CURSES_DATA(foo,$cf_data)[
	${cf_cv_main_return:-return}(foo == 0);
}],[cf_result=yes
],[cf_result=no],[
	# cross-compiling
	AC_TRY_LINK(CF__CURSES_HEAD
[extern char $cf_data;],[
	do {
		]CF__CURSES_DATA(foo,$cf_data)[
		${cf_cv_main_return:-return}(foo == 0);
	} while (0)
],[cf_result=yes],[cf_result=no])
])
	AC_MSG_RESULT($cf_result)
	if test $cf_result = yes ; then
		CF_UPPER(cf_result,decl_curses_data_$cf_data)
		AC_DEFINE_UNQUOTED($cf_result)
		# do not exit loop here, since we prefer system's declarations
	fi
fi
done
])dnl
