• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1dnl***************************************************************************
2dnl Copyright 2018-2023,2024 Thomas E. Dickey                                *
3dnl Copyright 2003-2017,2018 Free Software Foundation, Inc.                  *
4dnl                                                                          *
5dnl Permission is hereby granted, free of charge, to any person obtaining a  *
6dnl copy of this software and associated documentation files (the            *
7dnl "Software"), to deal in the Software without restriction, including      *
8dnl without limitation the rights to use, copy, modify, merge, publish,      *
9dnl distribute, distribute with modifications, sublicense, and/or sell       *
10dnl copies of the Software, and to permit persons to whom the Software is    *
11dnl furnished to do so, subject to the following conditions:                 *
12dnl                                                                          *
13dnl The above copyright notice and this permission notice shall be included  *
14dnl in all copies or substantial portions of the Software.                   *
15dnl                                                                          *
16dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23dnl                                                                          *
24dnl Except as contained in this notice, the name(s) of the above copyright   *
25dnl holders shall not be used in advertising or otherwise to promote the     *
26dnl sale, use or other dealings in this Software without prior written       *
27dnl authorization.                                                           *
28dnl***************************************************************************
29dnl
30dnl $Id: aclocal.m4,v 1.221 2024/01/19 18:27:20 tom Exp $
31dnl
32dnl Author: Thomas E. Dickey
33dnl
34dnl Macros used in NCURSES test programs auto-configuration script.
35dnl
36dnl These macros are maintained separately from NCURSES.  The copyright on
37dnl this file applies to the aggregation of macros and does not affect use of
38dnl these macros in other applications.
39dnl
40dnl See these pages for additional information:
41dnl		https://invisible-island.net/autoconf/
42dnl		https://invisible-island.net/autoconf/my-autoconf.html
43dnl
44dnl ---------------------------------------------------------------------------
45dnl ---------------------------------------------------------------------------
46dnl AM_LANGINFO_CODESET version: 7 updated: 2023/01/11 04:05:23
47dnl -------------------
48dnl Inserted as requested by gettext 0.10.40
49dnl File from /usr/share/aclocal
50dnl codeset.m4
51dnl ====================
52dnl serial AM1
53dnl
54dnl From Bruno Haible.
55AC_DEFUN([AM_LANGINFO_CODESET],
56[
57AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
58	[AC_TRY_LINK([
59$ac_includes_default
60#include <langinfo.h>],
61	[char* cs = nl_langinfo(CODESET); (void)cs],
62	am_cv_langinfo_codeset=yes,
63	am_cv_langinfo_codeset=no)
64	])
65	if test "$am_cv_langinfo_codeset" = yes; then
66		AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
67		[Define if you have <langinfo.h> and nl_langinfo(CODESET).])
68	fi
69])dnl
70dnl ---------------------------------------------------------------------------
71dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
72dnl ------------------
73dnl Conditionally generate script according to whether we're using a given autoconf.
74dnl
75dnl $1 = version to compare against
76dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
77dnl $3 = code to use if AC_ACVERSION is older than $1.
78define([CF_ACVERSION_CHECK],
79[
80ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
81ifdef([m4_version_compare],
82[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
83[CF_ACVERSION_COMPARE(
84AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
85AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
86dnl ---------------------------------------------------------------------------
87dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
88dnl --------------------
89dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
90dnl                      MAJOR2, MINOR2, TERNARY2,
91dnl                      PRINTABLE2, not FOUND, FOUND)
92define([CF_ACVERSION_COMPARE],
93[ifelse(builtin([eval], [$2 < $5]), 1,
94[ifelse([$8], , ,[$8])],
95[ifelse([$9], , ,[$9])])])dnl
96dnl ---------------------------------------------------------------------------
97dnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15
98dnl -------------
99dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
100dnl $1 = flags to add
101dnl $2 = if given makes this macro verbose.
102dnl
103dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
104dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
105dnl confused by the quotes (which require backslashes to keep them usable).
106AC_DEFUN([CF_ADD_CFLAGS],
107[
108cf_fix_cppflags=no
109cf_new_cflags=
110cf_new_cppflags=
111cf_new_extra_cppflags=
112
113for cf_add_cflags in $1
114do
115case "$cf_fix_cppflags" in
116(no)
117	case "$cf_add_cflags" in
118	(-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
119		case "$cf_add_cflags" in
120		(-D*)
121			cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
122
123			test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
124				&& test -z "${cf_tst_cflags}" \
125				&& cf_fix_cppflags=yes
126
127			if test "$cf_fix_cppflags" = yes ; then
128				CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
129				continue
130			elif test "${cf_tst_cflags}" = "\"'" ; then
131				CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
132				continue
133			fi
134			;;
135		esac
136		case "$CPPFLAGS" in
137		(*$cf_add_cflags)
138			;;
139		(*)
140			case "$cf_add_cflags" in
141			(-D*)
142				cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
143				CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
144				;;
145			esac
146			CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags)
147			;;
148		esac
149		;;
150	(*)
151		CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags)
152		;;
153	esac
154	;;
155(yes)
156	CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
157
158	cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'`
159
160	test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
161		&& test -z "${cf_tst_cflags}" \
162		&& cf_fix_cppflags=no
163	;;
164esac
165done
166
167if test -n "$cf_new_cflags" ; then
168	ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
169	CF_APPEND_TEXT(CFLAGS,$cf_new_cflags)
170fi
171
172if test -n "$cf_new_cppflags" ; then
173	ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
174	CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags)
175fi
176
177if test -n "$cf_new_extra_cppflags" ; then
178	ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
179	CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags)
180fi
181
182AC_SUBST(EXTRA_CPPFLAGS)
183
184])dnl
185dnl ---------------------------------------------------------------------------
186dnl CF_ADD_INCDIR version: 17 updated: 2021/09/04 06:35:04
187dnl -------------
188dnl Add an include-directory to $CPPFLAGS.  Don't add /usr/include, since it is
189dnl redundant.  We don't normally need to add -I/usr/local/include for gcc,
190dnl but old versions (and some misinstalled ones) need that.  To make things
191dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to
192dnl the include-path).
193AC_DEFUN([CF_ADD_INCDIR],
194[
195if test -n "$1" ; then
196  for cf_add_incdir in $1
197  do
198	while test "$cf_add_incdir" != /usr/include
199	do
200	  if test -d "$cf_add_incdir"
201	  then
202		cf_have_incdir=no
203		if test -n "$CFLAGS$CPPFLAGS" ; then
204		  # a loop is needed to ensure we can add subdirs of existing dirs
205		  for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
206			if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
207			  cf_have_incdir=yes; break
208			fi
209		  done
210		fi
211
212		if test "$cf_have_incdir" = no ; then
213		  if test "$cf_add_incdir" = /usr/local/include ; then
214			if test "$GCC" = yes
215			then
216			  cf_save_CPPFLAGS=$CPPFLAGS
217			  CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir)
218			  AC_TRY_COMPILE([#include <stdio.h>],
219				  [printf("Hello")],
220				  [],
221				  [cf_have_incdir=yes])
222			  CPPFLAGS=$cf_save_CPPFLAGS
223			fi
224		  fi
225		fi
226
227		if test "$cf_have_incdir" = no ; then
228		  CF_VERBOSE(adding $cf_add_incdir to include-path)
229		  ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir"
230
231		  cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'`
232		  test "$cf_top_incdir" = "$cf_add_incdir" && break
233		  cf_add_incdir="$cf_top_incdir"
234		else
235		  break
236		fi
237	  else
238		break
239	  fi
240	done
241  done
242fi
243])dnl
244dnl ---------------------------------------------------------------------------
245dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05
246dnl ----------
247dnl Add a library, used to enforce consistency.
248dnl
249dnl $1 = library to add, without the "-l"
250dnl $2 = variable to update (default $LIBS)
251AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl
252dnl ---------------------------------------------------------------------------
253dnl CF_ADD_LIBDIR version: 11 updated: 2020/12/31 20:19:42
254dnl -------------
255dnl	Adds to the library-path
256dnl
257dnl	Some machines have trouble with multiple -L options.
258dnl
259dnl $1 is the (list of) directory(s) to add
260dnl $2 is the optional name of the variable to update (default LDFLAGS)
261dnl
262AC_DEFUN([CF_ADD_LIBDIR],
263[
264if test -n "$1" ; then
265	for cf_add_libdir in $1
266	do
267		if test "$cf_add_libdir" = /usr/lib ; then
268			:
269		elif test -d "$cf_add_libdir"
270		then
271			cf_have_libdir=no
272			if test -n "$LDFLAGS$LIBS" ; then
273				# a loop is needed to ensure we can add subdirs of existing dirs
274				for cf_test_libdir in $LDFLAGS $LIBS ; do
275					if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
276						cf_have_libdir=yes; break
277					fi
278				done
279			fi
280			if test "$cf_have_libdir" = no ; then
281				CF_VERBOSE(adding $cf_add_libdir to library-path)
282				ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
283			fi
284		fi
285	done
286fi
287])dnl
288dnl ---------------------------------------------------------------------------
289dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33
290dnl -----------
291dnl Add one or more libraries, used to enforce consistency.  Libraries are
292dnl prepended to an existing list, since their dependencies are assumed to
293dnl already exist in the list.
294dnl
295dnl $1 = libraries to add, with the "-l", etc.
296dnl $2 = variable to update (default $LIBS)
297AC_DEFUN([CF_ADD_LIBS],[
298cf_add_libs="[$]ifelse($2,,LIBS,[$2])"
299# reverse order
300cf_add_0lib=
301for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
302# filter duplicates
303for cf_add_1lib in $cf_add_0lib; do
304	for cf_add_2lib in $cf_add_libs; do
305		if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
306			cf_add_1lib=
307			break
308		fi
309	done
310	test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
311done
312ifelse($2,,LIBS,[$2])="$cf_add_libs"
313])dnl
314dnl ---------------------------------------------------------------------------
315dnl CF_ADD_LIB_AFTER version: 3 updated: 2013/07/09 21:27:22
316dnl ----------------
317dnl Add a given library after another, e.g., following the one it satisfies a
318dnl dependency for.
319dnl
320dnl $1 = the first library
321dnl $2 = its dependency
322AC_DEFUN([CF_ADD_LIB_AFTER],[
323CF_VERBOSE(...before $LIBS)
324LIBS=`echo "$LIBS" | sed -e "s/[[ 	]][[ 	]]*/ /g" -e "s%$1 %$1 $2 %" -e 's%  % %g'`
325CF_VERBOSE(...after  $LIBS)
326])dnl
327dnl ---------------------------------------------------------------------------
328dnl CF_ADD_SUBDIR_PATH version: 5 updated: 2020/12/31 20:19:42
329dnl ------------------
330dnl Append to a search-list for a nonstandard header/lib-file
331dnl	$1 = the variable to return as result
332dnl	$2 = the package name
333dnl	$3 = the subdirectory, e.g., bin, include or lib
334dnl $4 = the directory under which we will test for subdirectories
335dnl $5 = a directory that we do not want $4 to match
336AC_DEFUN([CF_ADD_SUBDIR_PATH],
337[
338test "x$4" != "x$5" && \
339test -d "$4" && \
340ifelse([$5],NONE,,[{ test -z "$5" || test "x$5" = xNONE || test "x$4" != "x$5"; } &&]) {
341	test -n "$verbose" && echo "	... testing for $3-directories under $4"
342	test -d "$4/$3" &&          $1="[$]$1 $4/$3"
343	test -d "$4/$3/$2" &&       $1="[$]$1 $4/$3/$2"
344	test -d "$4/$3/$2/$3" &&    $1="[$]$1 $4/$3/$2/$3"
345	test -d "$4/$2/$3" &&       $1="[$]$1 $4/$2/$3"
346	test -d "$4/$2/$3/$2" &&    $1="[$]$1 $4/$2/$3/$2"
347}
348])dnl
349dnl ---------------------------------------------------------------------------
350dnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40
351dnl ----------------
352dnl Use CF_ADD_CFLAGS after first checking for potential redefinitions.
353dnl $1 = flags to add
354dnl $2 = if given makes this macro verbose.
355define([CF_APPEND_CFLAGS],
356[
357for cf_add_cflags in $1
358do
359	case "x$cf_add_cflags" in
360	(x-[[DU]]*)
361		CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2])
362		CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2])
363		;;
364	esac
365	CF_ADD_CFLAGS([$cf_add_cflags],[$2])
366done
367])dnl
368dnl ---------------------------------------------------------------------------
369dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
370dnl --------------
371dnl use this macro for appending text without introducing an extra blank at
372dnl the beginning
373define([CF_APPEND_TEXT],
374[
375	test -n "[$]$1" && $1="[$]$1 "
376	$1="[$]{$1}$2"
377])dnl
378dnl ---------------------------------------------------------------------------
379dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
380dnl --------------
381dnl Allow user to disable a normally-on option.
382AC_DEFUN([CF_ARG_DISABLE],
383[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
384dnl ---------------------------------------------------------------------------
385dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31
386dnl -------------
387dnl Allow user to enable a normally-off option.
388AC_DEFUN([CF_ARG_ENABLE],
389[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
390dnl ---------------------------------------------------------------------------
391dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14
392dnl -------------
393dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
394dnl values.
395dnl
396dnl Parameters:
397dnl $1 = option name
398dnl $2 = help-string
399dnl $3 = action to perform if option is not default
400dnl $4 = action if perform if option is default
401dnl $5 = default option value (either 'yes' or 'no')
402AC_DEFUN([CF_ARG_OPTION],
403[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
404	if test "$enableval" != "$5" ; then
405ifelse([$3],,[    :]dnl
406,[    $3]) ifelse([$4],,,[
407	else
408		$4])
409	fi],[enableval=$5 ifelse([$4],,,[
410	$4
411])dnl
412])])dnl
413dnl ---------------------------------------------------------------------------
414dnl CF_C11_NORETURN version: 4 updated: 2023/02/18 17:41:25
415dnl ---------------
416AC_DEFUN([CF_C11_NORETURN],
417[
418AC_MSG_CHECKING(if you want to use C11 _Noreturn feature)
419CF_ARG_ENABLE(stdnoreturn,
420	[  --enable-stdnoreturn    enable C11 _Noreturn feature for diagnostics],
421	[enable_stdnoreturn=yes],
422	[enable_stdnoreturn=no])
423AC_MSG_RESULT($enable_stdnoreturn)
424
425if test $enable_stdnoreturn = yes; then
426AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
427	[AC_TRY_COMPILE([
428$ac_includes_default
429#include <stdnoreturn.h>
430static _Noreturn void giveup(void) { exit(0); }
431	],
432	[if (feof(stdin)) giveup()],
433	cf_cv_c11_noreturn=yes,
434	cf_cv_c11_noreturn=no)
435	])
436else
437	cf_cv_c11_noreturn=no,
438fi
439
440if test "$cf_cv_c11_noreturn" = yes; then
441	AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working])
442	AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported])
443	HAVE_STDNORETURN_H=1
444else
445	HAVE_STDNORETURN_H=0
446fi
447
448AC_SUBST(HAVE_STDNORETURN_H)
449AC_SUBST(STDC_NORETURN)
450])dnl
451dnl ---------------------------------------------------------------------------
452dnl CF_CC_ENV_FLAGS version: 11 updated: 2023/02/20 11:15:46
453dnl ---------------
454dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
455dnl into CC.  This will not help with broken scripts that wrap the compiler
456dnl with options, but eliminates a more common category of user confusion.
457dnl
458dnl In particular, it addresses the problem of being able to run the C
459dnl preprocessor in a consistent manner.
460dnl
461dnl Caveat: this also disallows blanks in the pathname for the compiler, but
462dnl the nuisance of having inconsistent settings for compiler and preprocessor
463dnl outweighs that limitation.
464AC_DEFUN([CF_CC_ENV_FLAGS],
465[
466# This should have been defined by AC_PROG_CC
467: "${CC:=cc}"
468
469AC_MSG_CHECKING(\$CFLAGS variable)
470case "x$CFLAGS" in
471(*-[[IUD]]*)
472	AC_MSG_RESULT(broken)
473	AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
474	cf_flags="$CFLAGS"
475	CFLAGS=
476	for cf_arg in $cf_flags
477	do
478		CF_ADD_CFLAGS($cf_arg)
479	done
480	;;
481(*)
482	AC_MSG_RESULT(ok)
483	;;
484esac
485
486AC_MSG_CHECKING(\$CC variable)
487case "$CC" in
488(*[[\ \	]]-*)
489	AC_MSG_RESULT(broken)
490	AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
491	# humor him...
492	cf_prog=`echo "$CC" | sed -e 's/	/ /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
493	cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
494	CC="$cf_prog"
495	for cf_arg in $cf_flags
496	do
497		case "x$cf_arg" in
498		(x-[[IUDfgOW]]*)
499			CF_ADD_CFLAGS($cf_arg)
500			;;
501		(*)
502			CC="$CC $cf_arg"
503			;;
504		esac
505	done
506	CF_VERBOSE(resulting CC: '$CC')
507	CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
508	CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
509	;;
510(*)
511	AC_MSG_RESULT(ok)
512	;;
513esac
514])dnl
515dnl ---------------------------------------------------------------------------
516dnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15
517dnl --------------
518dnl Check if we're accidentally using a cache from a different machine.
519dnl Derive the system name, as a check for reusing the autoconf cache.
520dnl
521dnl If we've packaged config.guess and config.sub, run that (since it does a
522dnl better job than uname).  Normally we'll use AC_CANONICAL_HOST, but allow
523dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
524dnl which is useful in cross-compiles.
525dnl
526dnl Note: we would use $ac_config_sub, but that is one of the places where
527dnl autoconf 2.5x broke compatibility with autoconf 2.13
528AC_DEFUN([CF_CHECK_CACHE],
529[
530if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then
531	ifelse([$1],,[AC_CANONICAL_HOST],[$1])
532	system_name="$host_os"
533else
534	system_name="`(uname -s -r) 2>/dev/null`"
535	if test -z "$system_name" ; then
536		system_name="`(hostname) 2>/dev/null`"
537	fi
538fi
539test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
540AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
541
542test -z "$system_name" && system_name="$cf_cv_system_name"
543test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
544
545if test ".$system_name" != ".$cf_cv_system_name" ; then
546	AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
547	AC_MSG_ERROR("Please remove config.cache and try again.")
548fi
549])dnl
550dnl ---------------------------------------------------------------------------
551dnl CF_CHECK_CFLAGS version: 4 updated: 2021/01/02 19:22:58
552dnl ---------------
553dnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from
554dnl a build-configuration such as imake.  These have the pitfall that they
555dnl often contain compiler-specific options which we cannot use, mixed with
556dnl preprocessor options that we usually can.
557AC_DEFUN([CF_CHECK_CFLAGS],
558[
559CF_VERBOSE(checking additions to CFLAGS)
560cf_check_cflags="$CFLAGS"
561cf_check_cppflags="$CPPFLAGS"
562CF_ADD_CFLAGS($1,yes)
563if test "x$cf_check_cflags" != "x$CFLAGS" ; then
564AC_TRY_LINK([#include <stdio.h>],[printf("Hello world");],,
565	[CF_VERBOSE(test-compile failed.  Undoing change to \$CFLAGS)
566	 if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then
567		 CF_VERBOSE(but keeping change to \$CPPFLAGS)
568	 fi
569	 CFLAGS="$cf_check_cflags"])
570fi
571])dnl
572dnl ---------------------------------------------------------------------------
573dnl CF_CHECK_CURSES_LIB version: 4 updated: 2021/09/05 17:25:40
574dnl -------------------
575dnl $1 = nominal library name, used also for header lookup
576dnl $2 = suffix to append to library name
577dnl $3 = function to check for using AC_CHECK_LIB
578dnl $4 = optional parameter list for $3
579AC_DEFUN([CF_CHECK_CURSES_LIB],
580[
581AC_REQUIRE([CF_PKG_CONFIG])
582
583cf_have_curses_lib=no
584
585: ${NCURSES_CONFIG_PKG:=none}
586if test "x${NCURSES_CONFIG_PKG}" = xnone; then
587	:
588elif test "x${PKG_CONFIG:=none}" != xnone; then
589	AC_MSG_CHECKING(pkg-config for $1$2)
590	if "$PKG_CONFIG" --exists "$1$2" ; then
591		AC_MSG_RESULT(yes)
592
593		AC_MSG_CHECKING(if the $1$2 package files work)
594
595		cf_save_CFLAGS="$CFLAGS"
596		cf_save_CPPFLAGS="$CPPFLAGS"
597		cf_save_LIBS="$LIBS"
598
599		CF_APPEND_CFLAGS(`$PKG_CONFIG --cflags "$1$2"`)
600		CF_ADD_LIBS(`$PKG_CONFIG --libs "$1$2"`)
601
602		AC_TRY_LINK([#include <$1.h>],
603			[(void) $3 ( ]ifelse([$4],,,[[$4]])[ );],
604			[AC_TRY_RUN([#include <$1.h>
605				int main(void)
606				{ (void) $3 ( ]ifelse([$4],,,[[$4]])[ ); return 0; }],
607				[cf_have_curses_lib=yes],
608				[cf_have_curses_lib=no],
609				[cf_have_curses_lib=maybe])],
610			[cf_have_curses_lib=no])
611		AC_MSG_RESULT($cf_have_curses_lib)
612		test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes
613		if test "$cf_have_curses_lib" = "yes"
614		then
615			CF_UPPER(cf_upper,have_lib$1)
616			AC_DEFINE_UNQUOTED($cf_upper,1)
617		else
618			CFLAGS="$cf_save_CFLAGS"
619			CPPFLAGS="$cf_save_CPPFLAGS"
620			LIBS="$cf_save_LIBS"
621		fi
622	fi
623fi
624if test "$cf_have_curses_lib" = no; then
625	AC_CHECK_LIB($1$2,$3,[
626		CF_UPPER(cf_upper,have_lib$1)
627		CF_ADD_LIBS(-l$1$2)
628		AC_DEFINE_UNQUOTED($cf_upper,1)])
629fi
630])dnl
631dnl ---------------------------------------------------------------------------
632dnl CF_CLANG_COMPILER version: 9 updated: 2023/02/18 17:41:25
633dnl -----------------
634dnl Check if the given compiler is really clang.  clang's C driver defines
635dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
636dnl not ignore some gcc options.
637dnl
638dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
639dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
640dnl the wrappers for gcc and g++ warnings.
641dnl
642dnl $1 = GCC (default) or GXX
643dnl $2 = CLANG_COMPILER (default)
644dnl $3 = CFLAGS (default) or CXXFLAGS
645AC_DEFUN([CF_CLANG_COMPILER],[
646ifelse([$2],,CLANG_COMPILER,[$2])=no
647
648if test "$ifelse([$1],,[$1],GCC)" = yes ; then
649	AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
650	cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
651	AC_TRY_COMPILE([],[
652#ifdef __clang__
653#else
654#error __clang__ is not defined
655#endif
656],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
657],[])
658	ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
659	AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
660fi
661
662CLANG_VERSION=none
663
664if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
665	case "$CC" in
666	(c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]])
667		AC_MSG_WARN(replacing broken compiler alias $CC)
668		CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
669		CC=clang
670		;;
671	esac
672
673	AC_MSG_CHECKING(version of $CC)
674	CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
675	test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
676	AC_MSG_RESULT($CLANG_VERSION)
677
678	for cf_clang_opt in \
679		-Qunused-arguments \
680		-Wno-error=implicit-function-declaration
681	do
682		AC_MSG_CHECKING(if option $cf_clang_opt works)
683		cf_save_CFLAGS="$CFLAGS"
684		CFLAGS="$CFLAGS $cf_clang_opt"
685		AC_TRY_LINK([
686			#include <stdio.h>],[
687			printf("hello!\\n");],[
688			cf_clang_optok=yes],[
689			cf_clang_optok=no])
690		AC_MSG_RESULT($cf_clang_optok)
691		CFLAGS="$cf_save_CFLAGS"
692		if test "$cf_clang_optok" = yes; then
693			CF_VERBOSE(adding option $cf_clang_opt)
694			CF_APPEND_TEXT(CFLAGS,$cf_clang_opt)
695		fi
696	done
697fi
698])
699dnl ---------------------------------------------------------------------------
700dnl CF_CONST_X_STRING version: 8 updated: 2023/12/01 17:22:50
701dnl -----------------
702dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
703dnl character-strings.
704dnl
705dnl It is ambiguous because the specification accommodated the pre-ANSI
706dnl compilers bundled by more than one vendor in lieu of providing a standard C
707dnl compiler other than by costly add-ons.  Because of this, the specification
708dnl did not take into account the use of const for telling the compiler that
709dnl string literals would be in readonly memory.
710dnl
711dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
712dnl let the compiler decide how to represent Xt's strings which were #define'd.
713dnl That does not solve the problem of using the block of Xt's strings which
714dnl are compiled into the library (and is less efficient than one might want).
715dnl
716dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
717dnl when compiling the library and compiling using the library, to tell the
718dnl compiler that String is const.
719AC_DEFUN([CF_CONST_X_STRING],
720[
721AC_REQUIRE([AC_PATH_XTRA])
722
723CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
724
725AC_TRY_COMPILE(
726[
727#include <stdlib.h>
728#include <X11/Intrinsic.h>
729],
730[String foo = malloc(1); free((void*)foo)],[
731
732AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
733	AC_TRY_COMPILE(
734		[
735#undef  _CONST_X_STRING
736#define _CONST_X_STRING	/* X11R7.8 (perhaps) */
737#undef  XTSTRINGDEFINES	/* X11R5 and later */
738#include <stdlib.h>
739#include <X11/Intrinsic.h>
740		],[String foo = malloc(1); *foo = 0],[
741			cf_cv_const_x_string=no
742		],[
743			cf_cv_const_x_string=yes
744		])
745])
746
747CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
748
749case "$cf_cv_const_x_string" in
750(no)
751	CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
752	;;
753(*)
754	CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
755	;;
756esac
757
758])
759])dnl
760dnl ---------------------------------------------------------------------------
761dnl CF_CURSES_ACS_MAP version: 8 updated: 2021/01/04 19:45:09
762dnl -----------------
763dnl Check for likely values of acs_map[]:
764AC_DEFUN([CF_CURSES_ACS_MAP],
765[
766AC_REQUIRE([CF_NCURSES_WRAP_PREFIX])dnl
767AC_CACHE_CHECK(for alternate character set array, cf_cv_curses_acs_map,[
768cf_cv_curses_acs_map=unknown
769for name in acs_map _acs_map __acs_map ${NCURSES_WRAP_PREFIX}acs_map
770do
771AC_TRY_LINK([
772#include <${cf_cv_ncurses_header:-curses.h}>
773],[
774${name}['k'] = ACS_PLUS
775],[cf_cv_curses_acs_map=$name; break])
776done
777])
778
779test "$cf_cv_curses_acs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_ACS_ARRAY,$cf_cv_curses_acs_map,[Define as needed to override ncurses prefix _nc_])
780])
781dnl ---------------------------------------------------------------------------
782dnl CF_CURSES_CHECK_DATA version: 10 updated: 2021/01/04 19:45:09
783dnl --------------------
784dnl Check if curses.h defines the given data/variable.
785dnl Use this after CF_NCURSES_CONFIG or CF_CURSES_CONFIG.
786dnl
787dnl $1 = data item(s) to check for
788dnl $2 = action on success, e.g., "break" to quit checking a series of choices
789AC_DEFUN([CF_CURSES_CHECK_DATA],
790[
791for cf_data in $1
792do
793AC_MSG_CHECKING(for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h})
794
795AC_TRY_COMPILE(CF__CURSES_HEAD,
796CF__CURSES_DATA(foo,$cf_data)
797,[cf_result=yes
798],[cf_result=no])
799AC_MSG_RESULT($cf_result)
800
801if test "$cf_result" = yes ; then
802	CF_UPPER(cf_result,have_curses_data_$cf_data)
803	AC_DEFINE_UNQUOTED($cf_result)
804	ifelse($2,,,[$2])
805else
806	AC_MSG_CHECKING(for data $cf_data in library)
807	# BSD linkers insist on making weak linkage, but resolve at runtime.
808	AC_TRY_RUN(CF__CURSES_HEAD
809[
810extern char $cf_data;
811int main(void)
812{
813	]CF__CURSES_DATA(foo,$cf_data)[
814	${cf_cv_main_return:-return}(foo == 0);
815}],[cf_result=yes
816],[cf_result=no],[
817	# cross-compiling
818	AC_TRY_LINK(CF__CURSES_HEAD
819[extern char $cf_data;],[
820	do {
821		]CF__CURSES_DATA(foo,$cf_data)[
822		${cf_cv_main_return:-return}(foo == 0);
823	} while (0)
824],[cf_result=yes],[cf_result=no])
825])
826	AC_MSG_RESULT($cf_result)
827	if test "$cf_result" = yes ; then
828		CF_UPPER(cf_result,decl_curses_data_$cf_data)
829		AC_DEFINE_UNQUOTED($cf_result)
830		# do not exit loop here, since we prefer system's declarations
831	fi
832fi
833done
834])dnl
835dnl ---------------------------------------------------------------------------
836dnl CF_CURSES_CHECK_TYPE version: 5 updated: 2021/01/04 19:45:09
837dnl --------------------
838dnl Check if curses.h defines the given type
839AC_DEFUN([CF_CURSES_CHECK_TYPE],
840[
841AC_MSG_CHECKING(for type $1 in ${cf_cv_ncurses_header:-curses.h})
842AC_TRY_COMPILE([
843#ifndef _XOPEN_SOURCE_EXTENDED
844#define _XOPEN_SOURCE_EXTENDED
845#endif
846#include <${cf_cv_ncurses_header:-curses.h}>],[
847$1 foo
848],cf_result=yes,cf_result=no)
849AC_MSG_RESULT($cf_result)
850if test "$cf_result" = yes ; then
851	CF_UPPER(cf_result,have_type_$1)
852	AC_DEFINE_UNQUOTED($cf_result,1,[Define to 1 if we have type $1])
853else
854	AC_DEFINE_UNQUOTED($1,$2,[Define to appropriate type if $1 is not declared])
855fi
856])dnl
857dnl ---------------------------------------------------------------------------
858dnl CF_CURSES_CONFIG version: 2 updated: 2006/10/29 11:06:27
859dnl ----------------
860dnl Tie together the configure-script macros for curses.  It may be ncurses,
861dnl but unless asked, we do not make a special search for ncurses.  However,
862dnl still check for the ncurses version number, for use in other macros.
863AC_DEFUN([CF_CURSES_CONFIG],
864[
865CF_CURSES_CPPFLAGS
866CF_NCURSES_VERSION
867CF_CURSES_LIBS
868])dnl
869dnl ---------------------------------------------------------------------------
870dnl CF_CURSES_CPPFLAGS version: 14 updated: 2021/01/02 09:31:20
871dnl ------------------
872dnl Look for the curses headers.
873AC_DEFUN([CF_CURSES_CPPFLAGS],[
874
875AC_CACHE_CHECK(for extra include directories,cf_cv_curses_incdir,[
876cf_cv_curses_incdir=no
877case "$host_os" in
878(hpux10.*)
879	if test "x$cf_cv_screen" = "xcurses_colr"
880	then
881		test -d /usr/include/curses_colr && \
882		cf_cv_curses_incdir="-I/usr/include/curses_colr"
883	fi
884	;;
885(sunos3*|sunos4*)
886	if test "x$cf_cv_screen" = "xcurses_5lib"
887	then
888		test -d /usr/5lib && \
889		test -d /usr/5include && \
890		cf_cv_curses_incdir="-I/usr/5include"
891	fi
892	;;
893esac
894])
895if test "$cf_cv_curses_incdir" != no
896then
897	CF_APPEND_TEXT(CPPFLAGS,$cf_cv_curses_incdir)
898fi
899
900CF_CURSES_HEADER
901CF_TERM_HEADER
902])dnl
903dnl ---------------------------------------------------------------------------
904dnl CF_CURSES_FUNCS version: 20 updated: 2020/12/31 20:19:42
905dnl ---------------
906dnl Curses-functions are a little complicated, since a lot of them are macros.
907AC_DEFUN([CF_CURSES_FUNCS],
908[
909AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
910AC_REQUIRE([CF_XOPEN_CURSES])
911AC_REQUIRE([CF_CURSES_TERM_H])
912AC_REQUIRE([CF_CURSES_UNCTRL_H])
913for cf_func in $1
914do
915	CF_UPPER(cf_tr_func,$cf_func)
916	AC_MSG_CHECKING(for ${cf_func})
917	CF_MSG_LOG(${cf_func})
918	AC_CACHE_VAL(cf_cv_func_$cf_func,[
919		eval cf_result='$ac_cv_func_'$cf_func
920		if test ".$cf_result" != ".no"; then
921			AC_TRY_LINK(CF__CURSES_HEAD,
922			[
923#ifndef ${cf_func}
924long foo = (long)(&${cf_func});
925fprintf(stderr, "testing linkage of $cf_func:%p\\n", (void *)foo);
926if (foo + 1234L > 5678L)
927	${cf_cv_main_return:-return}(foo != 0);
928#endif
929			],
930			[cf_result=yes],
931			[cf_result=no])
932		fi
933		eval 'cf_cv_func_'$cf_func'="$cf_result"'
934	])
935	# use the computed/retrieved cache-value:
936	eval 'cf_result=$cf_cv_func_'$cf_func
937	AC_MSG_RESULT($cf_result)
938	if test "$cf_result" != no; then
939		AC_DEFINE_UNQUOTED(HAVE_${cf_tr_func})
940	fi
941done
942])dnl
943dnl ---------------------------------------------------------------------------
944dnl CF_CURSES_HEADER version: 6 updated: 2022/12/02 20:06:52
945dnl ----------------
946dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
947dnl variations of ncurses' installs.
948dnl
949dnl $1 = ncurses when looking for ncurses, or is empty
950AC_DEFUN([CF_CURSES_HEADER],[
951AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[
952cf_cv_ncurses_header=none
953for cf_header in \
954	ncurses.h ifelse($1,,,[$1/ncurses.h]) \
955	curses.h ifelse($1,,,[$1/curses.h]) ifelse($1,,[ncurses/ncurses.h ncurses/curses.h])
956do
957AC_TRY_COMPILE([#include <${cf_header}>],
958	[initscr(); endwin()],
959	[cf_cv_ncurses_header=$cf_header; break],[])
960done
961])
962
963if test "$cf_cv_ncurses_header" = none ; then
964	AC_MSG_ERROR(No curses header-files found)
965fi
966
967# cheat, to get the right #define's for HAVE_NCURSES_H, etc.
968AC_CHECK_HEADERS($cf_cv_ncurses_header)
969])dnl
970dnl ---------------------------------------------------------------------------
971dnl CF_CURSES_LIBS version: 45 updated: 2022/12/02 20:06:52
972dnl --------------
973dnl Look for the curses libraries.  Older curses implementations may require
974dnl termcap/termlib to be linked as well.  Call CF_CURSES_CPPFLAGS first.
975AC_DEFUN([CF_CURSES_LIBS],[
976
977AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
978AC_MSG_CHECKING(if we have identified curses libraries)
979AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
980	[initscr(); endwin()],
981	cf_result=yes,
982	cf_result=no)
983AC_MSG_RESULT($cf_result)
984
985if test "$cf_result" = no ; then
986case "$host_os" in
987(freebsd*)
988	AC_CHECK_LIB(mytinfo,tgoto,[CF_ADD_LIBS(-lmytinfo)])
989	;;
990(hpux10.*)
991	# Looking at HPUX 10.20, the Hcurses library is the oldest (1997), cur_colr
992	# next (1998), and xcurses "newer" (2000).  There is no header file for
993	# Hcurses; the subdirectory curses_colr has the headers (curses.h and
994	# term.h) for cur_colr
995	if test "x$cf_cv_screen" = "xcurses_colr"
996	then
997		AC_CHECK_LIB(cur_colr,initscr,[
998			CF_ADD_LIBS(-lcur_colr)
999			ac_cv_func_initscr=yes
1000			],[
1001		AC_CHECK_LIB(Hcurses,initscr,[
1002			# HP's header uses __HP_CURSES, but user claims _HP_CURSES.
1003			CF_ADD_LIBS(-lHcurses)
1004			CF_APPEND_TEXT(CPPFLAGS,-D__HP_CURSES -D_HP_CURSES)
1005			ac_cv_func_initscr=yes
1006			])])
1007	fi
1008	;;
1009(linux*)
1010	case `arch 2>/dev/null` in
1011	(x86_64)
1012		if test -d /lib64
1013		then
1014			CF_ADD_LIBDIR(/lib64)
1015		else
1016			CF_ADD_LIBDIR(/lib)
1017		fi
1018		;;
1019	(*)
1020		CF_ADD_LIBDIR(/lib)
1021		;;
1022	esac
1023	;;
1024(sunos3*|sunos4*)
1025	if test "x$cf_cv_screen" = "xcurses_5lib"
1026	then
1027		if test -d /usr/5lib ; then
1028			CF_ADD_LIBDIR(/usr/5lib)
1029			CF_ADD_LIBS(-lcurses -ltermcap)
1030		fi
1031	fi
1032	ac_cv_func_initscr=yes
1033	;;
1034esac
1035
1036if test ".$ac_cv_func_initscr" != .yes ; then
1037	cf_save_LIBS="$LIBS"
1038
1039	if test ".${cf_cv_ncurses_version:-no}" != .no
1040	then
1041		cf_check_list="ncurses curses cursesX"
1042	else
1043		cf_check_list="cursesX curses ncurses"
1044	fi
1045
1046	# Check for library containing tgoto.  Do this before curses library
1047	# because it may be needed to link the test-case for initscr.
1048	if test "x$cf_term_lib" = x
1049	then
1050		AC_CHECK_FUNC(tgoto,[cf_term_lib=predefined],[
1051			for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown
1052			do
1053				AC_CHECK_LIB($cf_term_lib,tgoto,[
1054					: "${cf_nculib_root:=$cf_term_lib}"
1055					break
1056				])
1057			done
1058		])
1059	fi
1060
1061	# Check for library containing initscr
1062	test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS"
1063	if test "x$cf_curs_lib" = x
1064	then
1065		for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown
1066		do
1067			LIBS="-l$cf_curs_lib $cf_save_LIBS"
1068			if test "$cf_term_lib" = unknown || test "$cf_term_lib" = "$cf_curs_lib" ; then
1069				AC_MSG_CHECKING(if we can link with $cf_curs_lib library)
1070				AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
1071					[initscr()],
1072					[cf_result=yes],
1073					[cf_result=no])
1074				AC_MSG_RESULT($cf_result)
1075				test "$cf_result" = yes && break
1076			elif test "$cf_curs_lib" = "$cf_term_lib" ; then
1077				cf_result=no
1078			elif test "$cf_term_lib" != predefined ; then
1079				AC_MSG_CHECKING(if we need both $cf_curs_lib and $cf_term_lib libraries)
1080				AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
1081					[initscr(); endwin();],
1082					[cf_result=no],
1083					[
1084					LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
1085					AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
1086						[initscr()],
1087						[cf_result=yes],
1088						[cf_result=error])
1089					])
1090				AC_MSG_RESULT($cf_result)
1091				test "$cf_result" != error && break
1092			fi
1093		done
1094	fi
1095	test "$cf_curs_lib" = unknown && AC_MSG_ERROR(no curses library found)
1096fi
1097fi
1098
1099])dnl
1100dnl ---------------------------------------------------------------------------
1101dnl CF_CURSES_TERM_H version: 16 updated: 2024/01/07 06:34:16
1102dnl ----------------
1103dnl SVr4 curses should have term.h as well (where it puts the definitions of
1104dnl the low-level interface).  This may not be true in old/broken implementations,
1105dnl as well as in misconfigured systems (e.g., gcc configured for Solaris 2.4
1106dnl running with Solaris 2.5.1).
1107AC_DEFUN([CF_CURSES_TERM_H],
1108[
1109AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
1110
1111AC_CACHE_CHECK(for term.h, cf_cv_term_header,[
1112
1113# If we found <ncurses/curses.h>, look for <ncurses/term.h>, but always look
1114# for <term.h> if we do not find the variant.
1115
1116cf_header_list="term.h ncurses/term.h ncursesw/term.h"
1117
1118case "${cf_cv_ncurses_header:-curses.h}" in
1119(*/*)
1120	cf_header_item=`echo "${cf_cv_ncurses_header:-curses.h}" | sed -e 's%\..*%%' -e 's%/.*%/%'`term.h
1121	cf_header_list="$cf_header_item $cf_header_list"
1122	;;
1123esac
1124
1125for cf_header in $cf_header_list
1126do
1127	AC_TRY_COMPILE([
1128#include <${cf_cv_ncurses_header:-curses.h}>
1129#include <${cf_header}>],
1130	[WINDOW *x; (void)x],
1131	[cf_cv_term_header=$cf_header
1132	 break],
1133	[cf_cv_term_header=no])
1134done
1135
1136case "$cf_cv_term_header" in
1137(no)
1138	# If curses is ncurses, some packagers still mess it up by trying to make
1139	# us use GNU termcap.  This handles the most common case.
1140	for cf_header in ncurses/term.h ncursesw/term.h
1141	do
1142		AC_TRY_COMPILE([
1143#include <${cf_cv_ncurses_header:-curses.h}>
1144#ifdef NCURSES_VERSION
1145#include <${cf_header}>
1146#else
1147#error expected NCURSES_VERSION to be defined
1148#endif],
1149			[WINDOW *x; (void)x],
1150			[cf_cv_term_header=$cf_header
1151			 break],
1152			[cf_cv_term_header=no])
1153	done
1154	;;
1155esac
1156])
1157
1158case "$cf_cv_term_header" in
1159(term.h)
1160	AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
1161	;;
1162(ncurses/term.h)
1163	AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
1164	;;
1165(ncursesw/term.h)
1166	AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
1167	;;
1168esac
1169])dnl
1170dnl ---------------------------------------------------------------------------
1171dnl CF_CURSES_UNCTRL_H version: 8 updated: 2021/01/02 09:31:20
1172dnl ------------------
1173dnl Any X/Open curses implementation must have unctrl.h, but ncurses packages
1174dnl may put it in a subdirectory (along with ncurses' other headers, of
1175dnl course).  Packages which put the headers in inconsistent locations are
1176dnl broken).
1177AC_DEFUN([CF_CURSES_UNCTRL_H],
1178[
1179AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
1180
1181AC_CACHE_CHECK(for unctrl.h, cf_cv_unctrl_header,[
1182
1183# If we found <ncurses/curses.h>, look for <ncurses/unctrl.h>, but always look
1184# for <unctrl.h> if we do not find the variant.
1185
1186cf_header_list="unctrl.h ncurses/unctrl.h ncursesw/unctrl.h"
1187
1188case "${cf_cv_ncurses_header:-curses.h}" in
1189(*/*)
1190	cf_header_item=`echo "${cf_cv_ncurses_header:-curses.h}" | sed -e 's%\..*%%' -e 's%/.*%/%'`unctrl.h
1191	cf_header_list="$cf_header_item $cf_header_list"
1192	;;
1193esac
1194
1195for cf_header in $cf_header_list
1196do
1197	AC_TRY_COMPILE([
1198#include <${cf_cv_ncurses_header:-curses.h}>
1199#include <${cf_header}>],
1200	[WINDOW *x; (void)x],
1201	[cf_cv_unctrl_header=$cf_header
1202	 break],
1203	[cf_cv_unctrl_header=no])
1204done
1205])
1206
1207case "$cf_cv_unctrl_header" in
1208(no)
1209	AC_MSG_WARN(unctrl.h header not found)
1210	;;
1211esac
1212
1213case "$cf_cv_unctrl_header" in
1214(unctrl.h)
1215	AC_DEFINE(HAVE_UNCTRL_H,1,[Define to 1 if we have unctrl.h])
1216	;;
1217(ncurses/unctrl.h)
1218	AC_DEFINE(HAVE_NCURSES_UNCTRL_H,1,[Define to 1 if we have ncurses/unctrl.h])
1219	;;
1220(ncursesw/unctrl.h)
1221	AC_DEFINE(HAVE_NCURSESW_UNCTRL_H,1,[Define to 1 if we have ncursesw/unctrl.h])
1222	;;
1223esac
1224])dnl
1225dnl ---------------------------------------------------------------------------
1226dnl CF_CURSES_WACS_MAP version: 8 updated: 2021/01/04 19:45:09
1227dnl ------------------
1228dnl Check for likely values of wacs_map[].
1229AC_DEFUN([CF_CURSES_WACS_MAP],
1230[
1231AC_CACHE_CHECK(for wide alternate character set array, cf_cv_curses_wacs_map,[
1232	cf_cv_curses_wacs_map=unknown
1233	for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char
1234	do
1235	AC_TRY_LINK([
1236#ifndef _XOPEN_SOURCE_EXTENDED
1237#define _XOPEN_SOURCE_EXTENDED
1238#endif
1239#include <${cf_cv_ncurses_header:-curses.h}>],
1240	[void *foo = &(${name}['k']); (void)foo],
1241	[cf_cv_curses_wacs_map=$name
1242	 break])
1243	done])
1244
1245test "$cf_cv_curses_wacs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_WACS_ARRAY,$cf_cv_curses_wacs_map,[Define to name of (n)curses wide-character array])
1246])dnl
1247dnl ---------------------------------------------------------------------------
1248dnl CF_CURSES_WACS_SYMBOLS version: 4 updated: 2021/01/04 19:45:09
1249dnl ----------------------
1250dnl Do a check to see if the WACS_xxx constants are defined compatibly with
1251dnl X/Open Curses.  In particular, NetBSD's implementation of the WACS_xxx
1252dnl constants is broken since those constants do not point to cchar_t's.
1253AC_DEFUN([CF_CURSES_WACS_SYMBOLS],
1254[
1255AC_REQUIRE([CF_CURSES_WACS_MAP])
1256
1257AC_CACHE_CHECK(for wide alternate character constants, cf_cv_curses_wacs_symbols,[
1258cf_cv_curses_wacs_symbols=no
1259if test "$cf_cv_curses_wacs_map" != unknown
1260then
1261	AC_TRY_LINK([
1262#ifndef _XOPEN_SOURCE_EXTENDED
1263#define _XOPEN_SOURCE_EXTENDED
1264#endif
1265#include <${cf_cv_ncurses_header:-curses.h}>],
1266	[cchar_t *foo = WACS_PLUS;
1267	 ${cf_cv_curses_wacs_map}['k'] = *WACS_PLUS; (void)foo],
1268	[cf_cv_curses_wacs_symbols=yes])
1269else
1270	AC_TRY_LINK([
1271#ifndef _XOPEN_SOURCE_EXTENDED
1272#define _XOPEN_SOURCE_EXTENDED
1273#endif
1274#include <${cf_cv_ncurses_header:-curses.h}>],
1275	[cchar_t *foo = WACS_PLUS; (void)foo],
1276	[cf_cv_curses_wacs_symbols=yes])
1277fi
1278])
1279
1280test "$cf_cv_curses_wacs_symbols" != no && AC_DEFINE(CURSES_WACS_SYMBOLS,1,[Define to 1 if (n)curses supports wide-character WACS_ symbols])
1281])dnl
1282dnl ---------------------------------------------------------------------------
1283dnl CF_DIRNAME version: 5 updated: 2020/12/31 20:19:42
1284dnl ----------
1285dnl "dirname" is not portable, so we fake it with a shell script.
1286AC_DEFUN([CF_DIRNAME],[$1=`echo "$2" | sed -e 's%/[[^/]]*$%%'`])dnl
1287dnl ---------------------------------------------------------------------------
1288dnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04
1289dnl ---------------
1290dnl You can always use "make -n" to see the actual options, but it is hard to
1291dnl pick out/analyze warning messages when the compile-line is long.
1292dnl
1293dnl Sets:
1294dnl	ECHO_LT - symbol to control if libtool is verbose
1295dnl	ECHO_LD - symbol to prefix "cc -o" lines
1296dnl	RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
1297dnl	SHOW_CC - symbol to put before explicit "cc -c" lines
1298dnl	ECHO_CC - symbol to put before any "cc" line
1299dnl
1300AC_DEFUN([CF_DISABLE_ECHO],[
1301AC_MSG_CHECKING(if you want to see long compiling messages)
1302CF_ARG_DISABLE(echo,
1303	[  --disable-echo          do not display "compiling" commands],
1304	[
1305	ECHO_LT='--silent'
1306	ECHO_LD='@echo linking [$]@;'
1307	RULE_CC='@echo compiling [$]<'
1308	SHOW_CC='@echo compiling [$]@'
1309	ECHO_CC='@'
1310],[
1311	ECHO_LT=''
1312	ECHO_LD=''
1313	RULE_CC=''
1314	SHOW_CC=''
1315	ECHO_CC=''
1316])
1317AC_MSG_RESULT($enableval)
1318AC_SUBST(ECHO_LT)
1319AC_SUBST(ECHO_LD)
1320AC_SUBST(RULE_CC)
1321AC_SUBST(SHOW_CC)
1322AC_SUBST(ECHO_CC)
1323])dnl
1324dnl ---------------------------------------------------------------------------
1325dnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50
1326dnl ----------------
1327dnl Combine no-leak checks with the libraries or tools that are used for the
1328dnl checks.
1329AC_DEFUN([CF_DISABLE_LEAKS],[
1330
1331AC_REQUIRE([CF_WITH_DMALLOC])
1332AC_REQUIRE([CF_WITH_DBMALLOC])
1333AC_REQUIRE([CF_WITH_VALGRIND])
1334
1335AC_MSG_CHECKING(if you want to perform memory-leak testing)
1336AC_ARG_ENABLE(leaks,
1337	[  --disable-leaks         test: free permanent memory, analyze leaks],
1338	[enable_leaks=$enableval],
1339	[enable_leaks=yes])
1340dnl with_no_leaks is more readable...
1341if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi
1342AC_MSG_RESULT($with_no_leaks)
1343
1344if test "$enable_leaks" = no ; then
1345	AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1346	AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1347fi
1348])dnl
1349dnl ---------------------------------------------------------------------------
1350dnl CF_DISABLE_RPATH_HACK version: 3 updated: 2021/01/05 20:14:44
1351dnl ---------------------
1352dnl The rpath-hack makes it simpler to build programs, particularly with the
1353dnl *BSD ports which may have essential libraries in unusual places.  But it
1354dnl can interfere with building an executable for the base system.  Use this
1355dnl option in that case.
1356AC_DEFUN([CF_DISABLE_RPATH_HACK],
1357[
1358AC_MSG_CHECKING(if rpath-hack should be disabled)
1359CF_ARG_DISABLE(rpath-hack,
1360	[  --disable-rpath-hack    don't add rpath options for additional libraries],
1361	[enable_rpath_hack=no],
1362	[enable_rpath_hack=yes])
1363dnl TODO - drop cf_disable_rpath_hack
1364if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi
1365AC_MSG_RESULT($cf_disable_rpath_hack)
1366
1367if test "$enable_rpath_hack" = yes ; then
1368	CF_RPATH_HACK
1369fi
1370])
1371dnl ---------------------------------------------------------------------------
1372dnl CF_ENABLE_STRING_HACKS version: 6 updated: 2021/01/05 19:23:48
1373dnl ----------------------
1374dnl On a few platforms, the compiler and/or loader nags with untruthful
1375dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
1376dnl and implying that most uses of the recommended alternatives are correct.
1377dnl
1378dnl Factually speaking, no one has actually counted the number of uses of these
1379dnl functions versus the total of incorrect uses.  Samples of a few thousand
1380dnl instances are meaningless compared to the hundreds of millions of lines of
1381dnl existing C code.
1382dnl
1383dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some
1384dnl platforms, in implementations of varying quality.  Likewise, snprintf is
1385dnl standard - but evolved through phases, and older implementations are likely
1386dnl to yield surprising results, as documented in manpages on various systems.
1387AC_DEFUN([CF_ENABLE_STRING_HACKS],
1388[
1389AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings)
1390AC_ARG_ENABLE(string-hacks,
1391	[  --enable-string-hacks   work around bogus compiler/loader warnings],
1392	[enable_string_hacks=$enableval],
1393	[enable_string_hacks=no])
1394AC_MSG_RESULT($enable_string_hacks)
1395
1396if test "x$enable_string_hacks" = "xyes"; then
1397 	AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings])
1398	AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
1399	AC_CHECK_FUNC(strlcat,[
1400		AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
1401		],[
1402		AC_CHECK_LIB(bsd,strlcat,[
1403			CF_ADD_LIB(bsd)
1404			AC_CHECK_HEADERS(bsd/string.h)
1405			AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
1406			])
1407		])
1408	AC_CHECK_FUNCS( strlcpy snprintf )
1409fi
1410])dnl
1411dnl ---------------------------------------------------------------------------
1412dnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50
1413dnl ------------------
1414dnl Configure-option to enable gcc warnings
1415dnl
1416dnl $1 = extra options to add, if supported
1417dnl $2 = option for checking attributes.  By default, this is done when
1418dnl      warnings are enabled.  For other values:
1419dnl      yes: always do this, e.g., to use in generated library-headers
1420dnl      no: never do this
1421AC_DEFUN([CF_ENABLE_WARNINGS],[
1422if test "$GCC" = yes || test "$GXX" = yes
1423then
1424CF_FIX_WARNINGS(CFLAGS)
1425CF_FIX_WARNINGS(CPPFLAGS)
1426CF_FIX_WARNINGS(LDFLAGS)
1427AC_MSG_CHECKING(if you want to turn on gcc warnings)
1428CF_ARG_ENABLE(warnings,
1429	[  --enable-warnings       test: turn on gcc compiler warnings],
1430	[enable_warnings=yes],
1431	[enable_warnings=no])
1432AC_MSG_RESULT($enable_warnings)
1433if test "$enable_warnings" = "yes"
1434then
1435	ifelse($2,,[CF_GCC_ATTRIBUTES])
1436	CF_GCC_WARNINGS($1)
1437fi
1438ifelse($2,yes,[CF_GCC_ATTRIBUTES])
1439fi
1440])dnl
1441dnl ---------------------------------------------------------------------------
1442dnl CF_FIND_LIBRARY version: 11 updated: 2021/01/02 09:31:20
1443dnl ---------------
1444dnl Look for a non-standard library, given parameters for AC_TRY_LINK.  We
1445dnl prefer a standard location, and use -L options only if we do not find the
1446dnl library in the standard library location(s).
1447dnl	$1 = library name
1448dnl	$2 = library class, usually the same as library name
1449dnl	$3 = includes
1450dnl	$4 = code fragment to compile/link
1451dnl	$5 = corresponding function-name
1452dnl	$6 = flag, nonnull if failure should not cause an error-exit
1453dnl
1454dnl Sets the variable "$cf_libdir" as a side-effect, so we can see if we had
1455dnl to use a -L option.
1456AC_DEFUN([CF_FIND_LIBRARY],
1457[
1458	eval 'cf_cv_have_lib_'"$1"'=no'
1459	cf_libdir=""
1460	AC_CHECK_FUNC($5,
1461		eval 'cf_cv_have_lib_'"$1"'=yes',[
1462		cf_save_LIBS="$LIBS"
1463		AC_MSG_CHECKING(for $5 in -l$1)
1464		LIBS="-l$1 $LIBS"
1465		AC_TRY_LINK([$3],[$4],
1466			[AC_MSG_RESULT(yes)
1467			 eval 'cf_cv_have_lib_'"$1"'=yes'
1468			],
1469			[AC_MSG_RESULT(no)
1470			CF_LIBRARY_PATH(cf_search,$2)
1471			for cf_libdir in $cf_search
1472			do
1473				AC_MSG_CHECKING(for -l$1 in $cf_libdir)
1474				LIBS="-L$cf_libdir -l$1 $cf_save_LIBS"
1475				AC_TRY_LINK([$3],[$4],
1476					[AC_MSG_RESULT(yes)
1477			 		 eval 'cf_cv_have_lib_'"$1"'=yes'
1478					 break],
1479					[AC_MSG_RESULT(no)
1480					 LIBS="$cf_save_LIBS"])
1481			done
1482			])
1483		])
1484eval 'cf_found_library="[$]cf_cv_have_lib_'"$1"\"
1485ifelse($6,,[
1486if test "$cf_found_library" = no ; then
1487	AC_MSG_ERROR(Cannot link $1 library)
1488fi
1489])
1490])dnl
1491dnl ---------------------------------------------------------------------------
1492dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42
1493dnl ---------------
1494dnl Find a library (specifically the linkage used in the code fragment),
1495dnl searching for it if it is not already in the library path.
1496dnl See also CF_ADD_SEARCHPATH.
1497dnl
1498dnl Parameters (4-on are optional):
1499dnl     $1 = headers for library entrypoint
1500dnl     $2 = code fragment for library entrypoint
1501dnl     $3 = the library name without the "-l" option or ".so" suffix.
1502dnl     $4 = action to perform if successful (default: update CPPFLAGS, etc)
1503dnl     $5 = action to perform if not successful
1504dnl     $6 = module name, if not the same as the library name
1505dnl     $7 = extra libraries
1506dnl
1507dnl Sets these variables:
1508dnl     $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found
1509dnl     $cf_cv_header_path_$3 - include-directory if needed
1510dnl     $cf_cv_library_path_$3 - library-directory if needed
1511dnl     $cf_cv_library_file_$3 - library-file if needed, e.g., -l$3
1512AC_DEFUN([CF_FIND_LINKAGE],[
1513
1514# If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these
1515# will be set on completion of the AC_TRY_LINK below.
1516cf_cv_header_path_$3=
1517cf_cv_library_path_$3=
1518
1519CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)])
1520
1521cf_save_LIBS="$LIBS"
1522
1523AC_TRY_LINK([$1],[$2],[
1524	cf_cv_find_linkage_$3=yes
1525	cf_cv_header_path_$3=/usr/include
1526	cf_cv_library_path_$3=/usr/lib
1527],[
1528
1529LIBS="-l$3 $7 $cf_save_LIBS"
1530
1531AC_TRY_LINK([$1],[$2],[
1532	cf_cv_find_linkage_$3=yes
1533	cf_cv_header_path_$3=/usr/include
1534	cf_cv_library_path_$3=/usr/lib
1535	cf_cv_library_file_$3="-l$3"
1536],[
1537	cf_cv_find_linkage_$3=no
1538	LIBS="$cf_save_LIBS"
1539
1540	CF_VERBOSE(find linkage for $3 library)
1541	CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
1542
1543	cf_save_CPPFLAGS="$CPPFLAGS"
1544	cf_test_CPPFLAGS="$CPPFLAGS"
1545
1546	CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
1547	for cf_cv_header_path_$3 in $cf_search
1548	do
1549		if test -d "$cf_cv_header_path_$3" ; then
1550			CF_VERBOSE(... testing $cf_cv_header_path_$3)
1551			CPPFLAGS="$cf_save_CPPFLAGS"
1552			CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3)
1553			AC_TRY_COMPILE([$1],[$2],[
1554				CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
1555				cf_cv_find_linkage_$3=maybe
1556				cf_test_CPPFLAGS="$CPPFLAGS"
1557				break],[
1558				CPPFLAGS="$cf_save_CPPFLAGS"
1559				])
1560		fi
1561	done
1562
1563	if test "$cf_cv_find_linkage_$3" = maybe ; then
1564
1565		CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
1566
1567		cf_save_LIBS="$LIBS"
1568		cf_save_LDFLAGS="$LDFLAGS"
1569
1570		ifelse([$6],,,[
1571		CPPFLAGS="$cf_test_CPPFLAGS"
1572		LIBS="-l$3 $7 $cf_save_LIBS"
1573		AC_TRY_LINK([$1],[$2],[
1574			CF_VERBOSE(... found $3 library in system)
1575			cf_cv_find_linkage_$3=yes])
1576			CPPFLAGS="$cf_save_CPPFLAGS"
1577			LIBS="$cf_save_LIBS"
1578			])
1579
1580		if test "$cf_cv_find_linkage_$3" != yes ; then
1581			CF_LIBRARY_PATH(cf_search,$3)
1582			for cf_cv_library_path_$3 in $cf_search
1583			do
1584				if test -d "$cf_cv_library_path_$3" ; then
1585					CF_VERBOSE(... testing $cf_cv_library_path_$3)
1586					CPPFLAGS="$cf_test_CPPFLAGS"
1587					LIBS="-l$3 $7 $cf_save_LIBS"
1588					LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
1589					AC_TRY_LINK([$1],[$2],[
1590					CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
1591					cf_cv_find_linkage_$3=yes
1592					cf_cv_library_file_$3="-l$3"
1593					break],[
1594					CPPFLAGS="$cf_save_CPPFLAGS"
1595					LIBS="$cf_save_LIBS"
1596					LDFLAGS="$cf_save_LDFLAGS"
1597					])
1598				fi
1599			done
1600			CPPFLAGS="$cf_save_CPPFLAGS"
1601			LDFLAGS="$cf_save_LDFLAGS"
1602		fi
1603
1604	else
1605		cf_cv_find_linkage_$3=no
1606	fi
1607	],$7)
1608])
1609
1610LIBS="$cf_save_LIBS"
1611
1612if test "$cf_cv_find_linkage_$3" = yes ; then
1613ifelse([$4],,[
1614	CF_ADD_INCDIR($cf_cv_header_path_$3)
1615	CF_ADD_LIBDIR($cf_cv_library_path_$3)
1616	CF_ADD_LIB($3)
1617],[$4])
1618else
1619ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
1620fi
1621])dnl
1622dnl ---------------------------------------------------------------------------
1623dnl CF_FIX_WARNINGS version: 4 updated: 2021/12/16 18:22:31
1624dnl ---------------
1625dnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc.  Any of gcc's
1626dnl "-Werror" flags can interfere with configure-checks.  Those go into
1627dnl EXTRA_CFLAGS.
1628dnl
1629dnl $1 = variable name to repair
1630define([CF_FIX_WARNINGS],[
1631if test "$GCC" = yes || test "$GXX" = yes
1632then
1633	case [$]$1 in
1634	(*-Werror=*)
1635		cf_temp_flags=
1636		for cf_temp_scan in [$]$1
1637		do
1638			case "x$cf_temp_scan" in
1639			(x-Werror=format*)
1640				CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
1641				;;
1642			(x-Werror=*)
1643				CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan)
1644				;;
1645			(*)
1646				CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
1647				;;
1648			esac
1649		done
1650		if test "x[$]$1" != "x$cf_temp_flags"
1651		then
1652			CF_VERBOSE(repairing $1: [$]$1)
1653			$1="$cf_temp_flags"
1654			CF_VERBOSE(... fixed [$]$1)
1655			CF_VERBOSE(... extra $EXTRA_CFLAGS)
1656		fi
1657		;;
1658	esac
1659fi
1660AC_SUBST(EXTRA_CFLAGS)
1661])dnl
1662dnl ---------------------------------------------------------------------------
1663dnl CF_FUNC_CURSES_VERSION version: 9 updated: 2023/01/05 18:06:10
1664dnl ----------------------
1665dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS.
1666dnl It's a character string "SVR4", not documented.
1667AC_DEFUN([CF_FUNC_CURSES_VERSION],
1668[
1669AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
1670AC_TRY_RUN([
1671$ac_includes_default
1672
1673#include <${cf_cv_ncurses_header:-curses.h}>
1674
1675int main(void)
1676{
1677	char temp[1024];
1678	sprintf(temp, "%.999s\\n", curses_version());
1679	${cf_cv_main_return:-return}(0);
1680}]
1681,[cf_cv_func_curses_version=yes]
1682,[cf_cv_func_curses_version=no]
1683,[cf_cv_func_curses_version=unknown])
1684rm -f core])
1685test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 if we have curses_version function])
1686])
1687dnl ---------------------------------------------------------------------------
1688dnl CF_FUNC_GETTIME version: 2 updated: 2023/02/25 08:45:56
1689dnl ---------------
1690dnl Check for gettimeofday or clock_gettime.  In 2023, the former is still more
1691dnl widely supported, but "deprecated" (2008), so we will use the latter if it
1692dnl is available, to reduce compiler warnings.
1693AC_DEFUN([CF_FUNC_GETTIME],[
1694AC_CACHE_CHECK(for clock_gettime,cf_cv_func_clock_gettime,[
1695		AC_TRY_LINK([#include <time.h>],
1696		[struct timespec ts;
1697		int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts],
1698		[cf_cv_func_clock_gettime=yes],
1699		[cf_cv_func_clock_gettime=no])
1700])
1701
1702if test "$cf_cv_func_clock_gettime" = yes
1703then
1704	AC_DEFINE(HAVE_CLOCK_GETTIME,1,[Define to 1 if we have clock_gettime function])
1705else
1706AC_CHECK_FUNC(gettimeofday,
1707	AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[
1708
1709AC_CHECK_LIB(bsd, gettimeofday,
1710	AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function])
1711	CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday
1712fi
1713])dnl
1714dnl ---------------------------------------------------------------------------
1715dnl CF_FUNC_OPENPTY version: 7 updated: 2023/12/03 09:21:34
1716dnl ---------------
1717dnl Check for openpty() function, along with <pty.h> header.  It may need the
1718dnl "util" library as well.
1719AC_DEFUN([CF_FUNC_OPENPTY],
1720[
1721AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no)
1722AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
1723	cf_save_LIBS="$LIBS"
1724	test "$cf_cv_lib_util" = yes && { CF_ADD_LIB(util) }
1725	for cf_header in pty.h libutil.h util.h
1726	do
1727	AC_TRY_LINK([
1728#include <$cf_header>
1729],[
1730	int x = openpty((int *)0, (int *)0, (char *)0,
1731				   (struct termios *)0, (struct winsize *)0);
1732	(void)x;
1733],[
1734		cf_cv_func_openpty=$cf_header
1735		break
1736],[
1737		cf_cv_func_openpty=no
1738])
1739	done
1740	LIBS="$cf_save_LIBS"
1741])
1742])dnl
1743dnl ---------------------------------------------------------------------------
1744dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25
1745dnl -----------------
1746dnl Test for availability of useful gcc __attribute__ directives to quiet
1747dnl compiler warnings.  Though useful, not all are supported -- and contrary
1748dnl to documentation, unrecognized directives cause older compilers to barf.
1749AC_DEFUN([CF_GCC_ATTRIBUTES],
1750[AC_REQUIRE([AC_PROG_FGREP])dnl
1751AC_REQUIRE([CF_C11_NORETURN])dnl
1752
1753if test "$GCC" = yes || test "$GXX" = yes
1754then
1755cat > conftest.i <<EOF
1756#ifndef GCC_PRINTF
1757#define GCC_PRINTF 0
1758#endif
1759#ifndef GCC_SCANF
1760#define GCC_SCANF 0
1761#endif
1762#ifndef GCC_NORETURN
1763#define GCC_NORETURN /* nothing */
1764#endif
1765#ifndef GCC_UNUSED
1766#define GCC_UNUSED /* nothing */
1767#endif
1768EOF
1769if test "$GCC" = yes
1770then
1771	AC_CHECKING([for $CC __attribute__ directives])
1772cat > "conftest.$ac_ext" <<EOF
1773#line __oline__ "${as_me:-configure}"
1774#include <stdio.h>
1775#include "confdefs.h"
1776#include "conftest.h"
1777#include "conftest.i"
1778#if	GCC_PRINTF
1779#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
1780#else
1781#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
1782#endif
1783#if	GCC_SCANF
1784#define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
1785#else
1786#define GCC_SCANFLIKE(fmt,var)  /*nothing*/
1787#endif
1788extern void wow(char *,...) GCC_SCANFLIKE(1,2);
1789extern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2);
1790extern GCC_NORETURN void foo(void);
1791int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; }
1792EOF
1793	cf_printf_attribute=no
1794	cf_scanf_attribute=no
1795	for cf_attribute in scanf printf unused noreturn
1796	do
1797		CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
1798		cf_directive="__attribute__(($cf_attribute))"
1799		echo "checking for $CC $cf_directive" 1>&AC_FD_CC
1800
1801		case "$cf_attribute" in
1802		(printf)
1803			cf_printf_attribute=yes
1804			cat >conftest.h <<EOF
1805#define GCC_$cf_ATTRIBUTE 1
1806EOF
1807			;;
1808		(scanf)
1809			cf_scanf_attribute=yes
1810			cat >conftest.h <<EOF
1811#define GCC_$cf_ATTRIBUTE 1
1812EOF
1813			;;
1814		(*)
1815			cat >conftest.h <<EOF
1816#define GCC_$cf_ATTRIBUTE $cf_directive
1817EOF
1818			;;
1819		esac
1820
1821		if AC_TRY_EVAL(ac_compile); then
1822			test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
1823			cat conftest.h >>confdefs.h
1824			case "$cf_attribute" in
1825			(noreturn)
1826				AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
1827				;;
1828			(printf)
1829				cf_value='/* nothing */'
1830				if test "$cf_printf_attribute" != no ; then
1831					cf_value='__attribute__((format(printf,fmt,var)))'
1832					AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
1833				fi
1834				AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
1835				;;
1836			(scanf)
1837				cf_value='/* nothing */'
1838				if test "$cf_scanf_attribute" != no ; then
1839					cf_value='__attribute__((format(scanf,fmt,var)))'
1840					AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
1841				fi
1842				AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
1843				;;
1844			(unused)
1845				AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
1846				;;
1847			esac
1848		fi
1849	done
1850else
1851	${FGREP-fgrep} define conftest.i >>confdefs.h
1852fi
1853rm -rf ./conftest*
1854fi
1855])dnl
1856dnl ---------------------------------------------------------------------------
1857dnl CF_GCC_VERSION version: 9 updated: 2023/03/05 14:30:13
1858dnl --------------
1859dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
1860dnl compatible), attempt to determine if icc/clang is actually used.
1861AC_DEFUN([CF_GCC_VERSION],[
1862AC_REQUIRE([AC_PROG_CC])
1863GCC_VERSION=none
1864if test "$GCC" = yes ; then
1865	AC_MSG_CHECKING(version of $CC)
1866	GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
1867	test -z "$GCC_VERSION" && GCC_VERSION=unknown
1868	AC_MSG_RESULT($GCC_VERSION)
1869fi
1870CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
1871CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
1872])dnl
1873dnl ---------------------------------------------------------------------------
1874dnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59
1875dnl ---------------
1876dnl Check if the compiler supports useful warning options.  There's a few that
1877dnl we don't use, simply because they're too noisy:
1878dnl
1879dnl	-Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
1880dnl	-Winline (usually not worthwhile)
1881dnl	-Wredundant-decls (system headers make this too noisy)
1882dnl	-Wtraditional (combines too many unrelated messages, only a few useful)
1883dnl	-Wwrite-strings (too noisy, but should review occasionally).  This
1884dnl		is enabled for ncurses using "--enable-const".
1885dnl	-pedantic
1886dnl
1887dnl Parameter:
1888dnl	$1 is an optional list of gcc warning flags that a particular
1889dnl		application might want to use, e.g., "no-unused" for
1890dnl		-Wno-unused
1891dnl Special:
1892dnl	If $with_ext_const is "yes", add a check for -Wwrite-strings
1893dnl
1894AC_DEFUN([CF_GCC_WARNINGS],
1895[
1896AC_REQUIRE([CF_GCC_VERSION])
1897if test "x$have_x" = xyes; then CF_CONST_X_STRING fi
1898cat > "conftest.$ac_ext" <<EOF
1899#line __oline__ "${as_me:-configure}"
1900int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
1901EOF
1902if test "$INTEL_COMPILER" = yes
1903then
1904# The "-wdXXX" options suppress warnings:
1905# remark #1419: external declaration in primary source file
1906# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
1907# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
1908# remark #193: zero used for undefined preprocessing identifier
1909# remark #593: variable "curs_sb_left_arrow" was set but never used
1910# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
1911# remark #869: parameter "tw" was never referenced
1912# remark #981: operands are evaluated in unspecified order
1913# warning #279: controlling expression is constant
1914
1915	AC_CHECKING([for $CC warning options])
1916	cf_save_CFLAGS="$CFLAGS"
1917	EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
1918	for cf_opt in \
1919		wd1419 \
1920		wd1683 \
1921		wd1684 \
1922		wd193 \
1923		wd593 \
1924		wd279 \
1925		wd810 \
1926		wd869 \
1927		wd981
1928	do
1929		CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
1930		if AC_TRY_EVAL(ac_compile); then
1931			test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
1932			EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
1933		fi
1934	done
1935	CFLAGS="$cf_save_CFLAGS"
1936elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
1937then
1938	AC_CHECKING([for $CC warning options])
1939	cf_save_CFLAGS="$CFLAGS"
1940	cf_warn_CONST=""
1941	test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
1942	cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
1943	test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
1944	for cf_opt in W Wall \
1945		Wbad-function-cast \
1946		Wcast-align \
1947		Wcast-qual \
1948		Wdeclaration-after-statement \
1949		Wextra \
1950		Winline \
1951		Wmissing-declarations \
1952		Wmissing-prototypes \
1953		Wnested-externs \
1954		Wpointer-arith \
1955		Wshadow \
1956		Wstrict-prototypes \
1957		Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
1958	do
1959		CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
1960		if AC_TRY_EVAL(ac_compile); then
1961			test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
1962			case "$cf_opt" in
1963			(Winline)
1964				case "$GCC_VERSION" in
1965				([[34]].*)
1966					CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
1967					continue;;
1968				esac
1969				;;
1970			(Wpointer-arith)
1971				case "$GCC_VERSION" in
1972				([[12]].*)
1973					CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
1974					continue;;
1975				esac
1976				;;
1977			esac
1978			EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
1979		fi
1980	done
1981	CFLAGS="$cf_save_CFLAGS"
1982fi
1983rm -rf ./conftest*
1984
1985AC_SUBST(EXTRA_CFLAGS)
1986])dnl
1987dnl ---------------------------------------------------------------------------
1988dnl CF_GETOPT_HEADER version: 8 updated: 2021/06/19 19:16:16
1989dnl ----------------
1990dnl Check for getopt's variables which are commonly defined in stdlib.h,
1991dnl unistd.h or (nonstandard) in getopt.h
1992AC_DEFUN([CF_GETOPT_HEADER],
1993[
1994AC_HAVE_HEADERS(unistd.h getopt.h)
1995AC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[
1996cf_cv_getopt_header=none
1997for cf_header in stdio.h stdlib.h unistd.h getopt.h
1998do
1999AC_TRY_COMPILE([
2000#include <$cf_header>],
2001[int x = optind; char *y = optarg; (void)x; (void)y],
2002[cf_cv_getopt_header=$cf_header
2003 break])
2004done
2005])
2006if test "$cf_cv_getopt_header" != none ; then
2007	AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header])
2008fi
2009if test "$cf_cv_getopt_header" = getopt.h ; then
2010	AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h])
2011fi
2012])dnl
2013dnl ---------------------------------------------------------------------------
2014dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
2015dnl -------------
2016dnl Check if we must define _GNU_SOURCE to get a reasonable value for
2017dnl _XOPEN_SOURCE, upon which many POSIX definitions depend.  This is a defect
2018dnl (or misfeature) of glibc2, which breaks portability of many applications,
2019dnl since it is interwoven with GNU extensions.
2020dnl
2021dnl Well, yes we could work around it...
2022dnl
2023dnl Parameters:
2024dnl	$1 is the nominal value for _XOPEN_SOURCE
2025AC_DEFUN([CF_GNU_SOURCE],
2026[
2027cf_gnu_xopen_source=ifelse($1,,500,$1)
2028
2029AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
2030AC_TRY_COMPILE([#include <sys/types.h>],[
2031	#if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
2032		return 0;
2033	#elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
2034		return 0;
2035	#else
2036	#	error not GNU C library
2037	#endif],
2038	[cf_cv_gnu_library=yes],
2039	[cf_cv_gnu_library=no])
2040])
2041
2042if test x$cf_cv_gnu_library = xyes; then
2043
2044	# With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
2045	# was changed to help a little.  newlib incorporated the change about 4
2046	# years later.
2047	AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
2048		cf_save="$CPPFLAGS"
2049		CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
2050		AC_TRY_COMPILE([#include <sys/types.h>],[
2051			#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
2052				return 0;
2053			#elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
2054				return 0;
2055			#else
2056			#	error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
2057			#endif],
2058			[cf_cv_gnu_library_219=yes],
2059			[cf_cv_gnu_library_219=no])
2060		CPPFLAGS="$cf_save"
2061	])
2062
2063	if test "x$cf_cv_gnu_library_219" = xyes; then
2064		cf_save="$CPPFLAGS"
2065		AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
2066			CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
2067			AC_TRY_COMPILE([
2068				#include <limits.h>
2069				#include <sys/types.h>
2070				],[
2071				#if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
2072					return 0;
2073				#else
2074				#	error GNU C library is too old
2075				#endif],
2076				[cf_cv_gnu_dftsrc_219=yes],
2077				[cf_cv_gnu_dftsrc_219=no])
2078			])
2079		test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
2080	else
2081		cf_cv_gnu_dftsrc_219=maybe
2082	fi
2083
2084	if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
2085
2086		AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
2087		AC_TRY_COMPILE([#include <sys/types.h>],[
2088			#ifndef _XOPEN_SOURCE
2089			#error	expected _XOPEN_SOURCE to be defined
2090			#endif],
2091			[cf_cv_gnu_source=no],
2092			[cf_save="$CPPFLAGS"
2093			 CF_ADD_CFLAGS(-D_GNU_SOURCE)
2094			 AC_TRY_COMPILE([#include <sys/types.h>],[
2095				#ifdef _XOPEN_SOURCE
2096				#error	expected _XOPEN_SOURCE to be undefined
2097				#endif],
2098				[cf_cv_gnu_source=no],
2099				[cf_cv_gnu_source=yes])
2100			CPPFLAGS="$cf_save"
2101			])
2102		])
2103
2104		if test "$cf_cv_gnu_source" = yes
2105		then
2106		AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
2107			CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
2108			AC_TRY_COMPILE([#include <sys/types.h>],[
2109				#ifdef _DEFAULT_SOURCE
2110				#error	expected _DEFAULT_SOURCE to be undefined
2111				#endif],
2112				[cf_cv_default_source=no],
2113				[cf_cv_default_source=yes])
2114			])
2115			if test "$cf_cv_default_source" = yes
2116			then
2117				CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
2118			fi
2119		fi
2120	fi
2121
2122fi
2123])dnl
2124dnl ---------------------------------------------------------------------------
2125dnl CF_HEADER_PATH version: 15 updated: 2021/01/01 13:31:04
2126dnl --------------
2127dnl Construct a search-list of directories for a nonstandard header-file
2128dnl
2129dnl Parameters
2130dnl	$1 = the variable to return as result
2131dnl	$2 = the package name
2132AC_DEFUN([CF_HEADER_PATH],
2133[
2134$1=
2135
2136# collect the current set of include-directories from compiler flags
2137cf_header_path_list=""
2138if test -n "${CFLAGS}${CPPFLAGS}" ; then
2139	for cf_header_path in $CPPFLAGS $CFLAGS
2140	do
2141		case "$cf_header_path" in
2142		(-I*)
2143			cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
2144			CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE)
2145			cf_header_path_list="$cf_header_path_list [$]$1"
2146			;;
2147		esac
2148	done
2149fi
2150
2151# add the variations for the package we are looking for
2152CF_SUBDIR_PATH($1,$2,include)
2153
2154test "$includedir" != NONE && \
2155test "$includedir" != "/usr/include" && \
2156test -d "$includedir" && {
2157	test -d "$includedir" &&    $1="[$]$1 $includedir"
2158	test -d "$includedir/$2" && $1="[$]$1 $includedir/$2"
2159}
2160
2161test "$oldincludedir" != NONE && \
2162test "$oldincludedir" != "/usr/include" && \
2163test -d "$oldincludedir" && {
2164	test -d "$oldincludedir"    && $1="[$]$1 $oldincludedir"
2165	test -d "$oldincludedir/$2" && $1="[$]$1 $oldincludedir/$2"
2166}
2167
2168$1="[$]$1 $cf_header_path_list"
2169])dnl
2170dnl ---------------------------------------------------------------------------
2171dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54
2172dnl ---------------
2173dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
2174AC_DEFUN([CF_HELP_MESSAGE],
2175[CF_ACVERSION_CHECK(2.53,[],[
2176AC_DIVERT_HELP($1)])dnl
2177])dnl
2178dnl ---------------------------------------------------------------------------
2179dnl CF_INHERIT_SCRIPT version: 2 updated: 2003/03/01 23:50:42
2180dnl -----------------
2181dnl If we do not have a given script, look for it in the parent directory.
2182AC_DEFUN([CF_INHERIT_SCRIPT],
2183[
2184test -f $1 || ( test -f ../$1 && cp ../$1 ./ )
2185])dnl
2186dnl ---------------------------------------------------------------------------
2187dnl CF_INSTALL_OPTS version: 3 updated: 2023/06/03 15:17:30
2188dnl ---------------
2189dnl prompt for/fill-in useful install-program options
2190AC_DEFUN([CF_INSTALL_OPTS],
2191[
2192CF_INSTALL_OPT_S
2193CF_INSTALL_OPT_P
2194CF_INSTALL_OPT_O
2195CF_INSTALL_OPT_STRIP_PROG
2196])dnl
2197dnl ---------------------------------------------------------------------------
2198dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42
2199dnl ----------------
2200dnl Almost all "install" programs default to the current user's ownership.
2201dnl Almost - MINIX is an exception.
2202AC_DEFUN([CF_INSTALL_OPT_O],
2203[
2204AC_MSG_CHECKING(if install needs to be told about ownership)
2205case `$ac_config_guess` in
2206(*minix)
2207	with_install_o=yes
2208	;;
2209(*)
2210	with_install_o=no
2211	;;
2212esac
2213
2214AC_MSG_RESULT($with_install_o)
2215if test "x$with_install_o" = xyes
2216then
2217	INSTALL_OPT_O="`id root|sed -e 's/uid=[[0-9]]*(/ -o /' -e 's/gid=[[0-9]]*(/ -g /' -e 's/ [[^=[:space:]]][[^=[:space:]]]*=.*/ /' -e 's/)//g'`"
2218else
2219	INSTALL_OPT_O=
2220fi
2221
2222AC_SUBST(INSTALL_OPT_O)
2223])dnl
2224dnl ---------------------------------------------------------------------------
2225dnl CF_INSTALL_OPT_P version: 3 updated: 2021/01/01 13:31:04
2226dnl ----------------
2227dnl Some install-programs accept a "-p" option to preserve file modification
2228dnl timestamps.  That can be useful as an install option, as well as a way to
2229dnl avoid the need for ranlib after copying a static archive.
2230AC_DEFUN([CF_INSTALL_OPT_P],
2231[
2232: "${INSTALL:=install}"
2233AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[
2234	rm -rf ./conftest*
2235	date >conftest.in
2236	mkdir conftest.out
2237	sleep 3
2238	if $INSTALL -p conftest.in conftest.out 2>/dev/null
2239	then
2240		if test -f conftest.out/conftest.in
2241		then
2242			test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
2243			test conftest.out/conftest.in -nt conftest.in 2>conftest.err
2244			if test -s conftest.err
2245			then
2246				cf_cv_install_p=no
2247			else
2248				cf_cv_install_p=yes
2249			fi
2250		else
2251			cf_cv_install_p=no
2252		fi
2253	else
2254		cf_cv_install_p=no
2255	fi
2256	rm -rf ./conftest*
2257])
2258])dnl
2259dnl ---------------------------------------------------------------------------
2260dnl CF_INSTALL_OPT_S version: 3 updated: 2021/01/05 19:23:48
2261dnl ----------------
2262dnl By default, we should strip executables which are installed, but leave the
2263dnl ability to suppress that for unit-testing.
2264AC_DEFUN([CF_INSTALL_OPT_S],
2265[
2266AC_MSG_CHECKING(if you want to install stripped executables)
2267CF_ARG_DISABLE(stripping,
2268	[  --disable-stripping     do not strip (debug info) installed executables],
2269	[enable_stripping=no],
2270	[enable_stripping=yes])
2271AC_MSG_RESULT($enable_stripping)
2272
2273if test "$enable_stripping" = yes
2274then
2275	INSTALL_OPT_S="-s"
2276else
2277	INSTALL_OPT_S=
2278fi
2279AC_SUBST(INSTALL_OPT_S)
2280])dnl
2281dnl ---------------------------------------------------------------------------
2282dnl CF_INSTALL_OPT_STRIP_PROG version: 1 updated: 2023/06/03 15:17:30
2283dnl -------------------------
2284dnl Provide an option for overriding the strip program used in install "-s"
2285dnl
2286dnl coreutils install provides a --strip-program option
2287dnl FreeBSD uses STRIPBIN environment variable, while NetBSD and OpenBSD use
2288dnl STRIP environment variable.  Other versions of install do not support this.
2289AC_DEFUN([CF_INSTALL_OPT_STRIP_PROG],
2290[
2291AC_REQUIRE([CF_INSTALL_OPT_S])
2292if test -n "$INSTALL_OPT_S"
2293then
2294	AC_MSG_CHECKING(if you want to specify strip-program)
2295	AC_ARG_WITH(strip-program,
2296		[  --with-strip-program=XX specify program to use when stripping in install],
2297		[with_strip_program=$withval],
2298		[with_strip_program=no])
2299	AC_MSG_RESULT($with_strip_program)
2300	if test "$with_strip_program" != no
2301	then
2302		AC_MSG_CHECKING(if strip-program is supported with this installer)
2303		cf_install_program=`echo "$INSTALL" | sed -e 's%[[ ]]*[[ ]]-.%%'`
2304		check_install_strip=no
2305		if test -f "$cf_install_program"
2306		then
2307			check_install_version=`"$cf_install_program" --version 2>/dev/null | head -n 1 | grep coreutils`
2308			if test -n "$check_install_version"
2309			then
2310				check_install_strip="option"
2311			else
2312				for check_strip_variable in STRIPBIN STRIP
2313				do
2314					if strings "$cf_install_program" | grep "^$check_strip_variable[$]" >/dev/null
2315					then
2316						check_install_strip="environ"
2317						break
2318					fi
2319				done
2320			fi
2321		fi
2322		AC_MSG_RESULT($check_install_strip)
2323		case "$check_install_strip" in
2324		(no)
2325			AC_MSG_WARN($cf_install_program does not support strip program option)
2326			with_strip_program=no
2327			;;
2328		(environ)
2329			cat >install.tmp <<-CF_EOF
2330			#! $SHELL
2331			STRIPBIN="$with_strip_program" \\
2332			STRIP="$with_strip_program" \\
2333			$INSTALL "[$]@"
2334			CF_EOF
2335			INSTALL="`pwd`/install.tmp"
2336			chmod +x "$INSTALL"
2337			CF_VERBOSE(created $INSTALL)
2338			;;
2339		(option)
2340			INSTALL_OPT_S="$INSTALL_OPT_S --strip-program=\"$with_strip_program\""
2341			;;
2342		esac
2343	fi
2344fi
2345AC_SUBST(INSTALL_OPT_S)
2346])dnl
2347dnl ---------------------------------------------------------------------------
2348dnl CF_INTEL_COMPILER version: 9 updated: 2023/02/18 17:41:25
2349dnl -----------------
2350dnl Check if the given compiler is really the Intel compiler for Linux.  It
2351dnl tries to imitate gcc, but does not return an error when it finds a mismatch
2352dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
2353dnl
2354dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
2355dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
2356dnl the wrappers for gcc and g++ warnings.
2357dnl
2358dnl $1 = GCC (default) or GXX
2359dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
2360dnl $3 = CFLAGS (default) or CXXFLAGS
2361AC_DEFUN([CF_INTEL_COMPILER],[
2362AC_REQUIRE([AC_CANONICAL_HOST])
2363ifelse([$2],,INTEL_COMPILER,[$2])=no
2364
2365if test "$ifelse([$1],,[$1],GCC)" = yes ; then
2366	case "$host_os" in
2367	(linux*|gnu*)
2368		AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
2369		cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
2370		ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
2371		AC_TRY_COMPILE([],[
2372#ifdef __INTEL_COMPILER
2373#else
2374#error __INTEL_COMPILER is not defined
2375#endif
2376],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
2377cf_save_CFLAGS="$cf_save_CFLAGS -we147"
2378],[])
2379		ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
2380		AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
2381		;;
2382	esac
2383fi
2384])dnl
2385dnl ---------------------------------------------------------------------------
2386dnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04
2387dnl ---------------
2388dnl For the given system and compiler, find the compiler flags to pass to the
2389dnl loader to use the "rpath" feature.
2390AC_DEFUN([CF_LD_RPATH_OPT],
2391[
2392AC_REQUIRE([CF_CHECK_CACHE])
2393
2394LD_RPATH_OPT=
2395if test "x$cf_cv_enable_rpath" != xno
2396then
2397	AC_MSG_CHECKING(for an rpath option)
2398	case "$cf_cv_system_name" in
2399	(irix*)
2400		if test "$GCC" = yes; then
2401			LD_RPATH_OPT="-Wl,-rpath,"
2402		else
2403			LD_RPATH_OPT="-rpath "
2404		fi
2405		;;
2406	(linux*|gnu*|k*bsd*-gnu|freebsd*)
2407		LD_RPATH_OPT="-Wl,-rpath,"
2408		;;
2409	(openbsd[[2-9]].*|mirbsd*)
2410		LD_RPATH_OPT="-Wl,-rpath,"
2411		;;
2412	(dragonfly*)
2413		LD_RPATH_OPT="-rpath "
2414		;;
2415	(netbsd*)
2416		LD_RPATH_OPT="-Wl,-rpath,"
2417		;;
2418	(osf*|mls+*)
2419		LD_RPATH_OPT="-rpath "
2420		;;
2421	(solaris2*)
2422		LD_RPATH_OPT="-R"
2423		;;
2424	(*)
2425		;;
2426	esac
2427	AC_MSG_RESULT($LD_RPATH_OPT)
2428
2429	case "x$LD_RPATH_OPT" in
2430	(x-R*)
2431		AC_MSG_CHECKING(if we need a space after rpath option)
2432		cf_save_LIBS="$LIBS"
2433		CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
2434		AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
2435		LIBS="$cf_save_LIBS"
2436		AC_MSG_RESULT($cf_rpath_space)
2437		test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
2438		;;
2439	esac
2440fi
2441])dnl
2442dnl ---------------------------------------------------------------------------
2443dnl CF_LIBRARY_PATH version: 11 updated: 2021/01/01 13:31:04
2444dnl ---------------
2445dnl Construct a search-list of directories for a nonstandard library-file
2446dnl
2447dnl Parameters
2448dnl	$1 = the variable to return as result
2449dnl	$2 = the package name
2450AC_DEFUN([CF_LIBRARY_PATH],
2451[
2452$1=
2453cf_library_path_list=""
2454if test -n "${LDFLAGS}${LIBS}" ; then
2455	for cf_library_path in $LDFLAGS $LIBS
2456	do
2457		case "$cf_library_path" in
2458		(-L*)
2459			cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
2460			CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE)
2461			cf_library_path_list="$cf_library_path_list [$]$1"
2462			;;
2463		esac
2464	done
2465fi
2466
2467CF_SUBDIR_PATH($1,$2,lib)
2468
2469$1="$cf_library_path_list [$]$1"
2470])dnl
2471dnl ---------------------------------------------------------------------------
2472dnl CF_MAKE_PHONY version: 3 updated: 2021/01/08 16:08:21
2473dnl -------------
2474dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which
2475dnl acts as a placeholder.
2476dnl
2477dnl The ".PHONY" feature was proposed in 2011 here
2478dnl     https://www.austingroupbugs.net/view.php?id=523
2479dnl and is scheduled for release in P1003.1 Issue 8 (late 2022).
2480dnl
2481dnl This is not supported by SVr4 make (or SunOS 4, 4.3SD, etc), but works with
2482dnl a few others (i.e., GNU make and the non-POSIX "BSD" make):
2483dnl
2484dnl + This is a GNU make feature (since April 1988, but in turn from binutils,
2485dnl   date unspecified).
2486dnl
2487dnl + It was adopted in NetBSD make in June 1995.
2488dnl
2489dnl + The other BSD make programs are derived from the NetBSD make (and for
2490dnl   that reason are not actually different "implementations").
2491dnl
2492dnl + Some features of NetBSD make were actually adapted from pmake, which
2493dnl   began as a modified GNU make starting in 1993.
2494dnl
2495dnl + Version 3.8 of the dmake program in January 1992 also implemented this
2496dnl   GNU make extension, but is less well known than the BSD make.
2497AC_DEFUN([CF_MAKE_PHONY],[
2498AC_CACHE_CHECK(for \".PHONY\" make-support, cf_cv_make_PHONY,[
2499	rm -rf conftest*
2500	(
2501		mkdir conftest || exit 1
2502		cd conftest
2503		cat >makefile <<'CF_EOF'
2504.PHONY: always
2505DATA=0
2506always:	always.out
2507	@echo "** making [$]@ [$](DATA)"
2508once: once.out
2509	@echo "** making [$]@ [$](DATA)"
2510always.out:
2511	@echo "** making [$]@ [$](DATA)"
2512	echo [$](DATA) > [$]@
2513once.out:
2514	@echo "** making [$]@ [$](DATA)"
2515	echo [$](DATA) > [$]@
2516CF_EOF
2517		for cf_data in 1 2 3
2518		do
2519			${MAKE:-make} always DATA=$cf_data
2520			${MAKE:-make} once   DATA=$cf_data
2521			${MAKE:-make} -t always once
2522			if test -f always ; then
2523				echo "no (case 1)" > ../conftest.tmp
2524			elif test ! -f always.out ; then
2525				echo "no (case 2)" > ../conftest.tmp
2526			elif test ! -f once.out ; then
2527				echo "no (case 3)" > ../conftest.tmp
2528			elif ! cmp -s always.out once.out ; then
2529				echo "no (case 4)" > ../conftest.tmp
2530				diff always.out once.out
2531			else
2532				cf_check="`cat always.out`"
2533				if test "x$cf_check" != "x$cf_data" ; then
2534					echo "no (case 5)" > ../conftest.tmp
2535				else
2536					echo yes > ../conftest.tmp
2537					rm -f ./*.out
2538					continue
2539				fi
2540			fi
2541			break
2542		done
2543	) >&AC_FD_CC 2>&1
2544	cf_cv_make_PHONY="`cat conftest.tmp`"
2545	rm -rf conftest*
2546])
2547MAKE_NO_PHONY="#"
2548MAKE_PHONY="#"
2549test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY=
2550test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY=
2551AC_SUBST(MAKE_NO_PHONY)
2552AC_SUBST(MAKE_PHONY)
2553])dnl
2554dnl ---------------------------------------------------------------------------
2555dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
2556dnl ------------
2557dnl Generate tags/TAGS targets for makefiles.  Do not generate TAGS if we have
2558dnl a monocase filesystem.
2559AC_DEFUN([CF_MAKE_TAGS],[
2560AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
2561
2562AC_CHECK_PROGS(CTAGS, exctags ctags)
2563AC_CHECK_PROGS(ETAGS, exetags etags)
2564
2565AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
2566
2567if test "$cf_cv_mixedcase" = yes ; then
2568	AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
2569else
2570	MAKE_UPPER_TAGS=no
2571fi
2572
2573if test "$MAKE_UPPER_TAGS" = yes ; then
2574	MAKE_UPPER_TAGS=
2575else
2576	MAKE_UPPER_TAGS="#"
2577fi
2578
2579if test "$MAKE_LOWER_TAGS" = yes ; then
2580	MAKE_LOWER_TAGS=
2581else
2582	MAKE_LOWER_TAGS="#"
2583fi
2584
2585AC_SUBST(CTAGS)
2586AC_SUBST(ETAGS)
2587
2588AC_SUBST(MAKE_UPPER_TAGS)
2589AC_SUBST(MAKE_LOWER_TAGS)
2590])dnl
2591dnl ---------------------------------------------------------------------------
2592dnl CF_MATH_LIB version: 11 updated: 2022/07/27 19:01:48
2593dnl -----------
2594dnl Checks for libraries.  At least one UNIX system, Apple Macintosh
2595dnl Rhapsody 5.5, does not have -lm.  We cannot use the simpler
2596dnl AC_CHECK_LIB(m,sin), because that fails for C++.
2597AC_DEFUN([CF_MATH_LIB],
2598[
2599AC_CACHE_CHECK(if -lm needed for math functions,
2600	cf_cv_need_libm,[
2601	AC_TRY_LINK([
2602		#include <stdio.h>
2603		#include <stdlib.h>
2604		#include <math.h>
2605	],
2606	[double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)],
2607	[cf_cv_need_libm=no],
2608	[cf_cv_need_libm=yes])])
2609
2610if test "$cf_cv_need_libm" = yes
2611then
2612
2613	cf_save_LIBS="$LIBS"
2614	LIBS="$LIBS -lm"
2615	AC_CACHE_CHECK(if -lm is available for math functions,
2616	cf_cv_have_libm,[
2617	AC_TRY_LINK([
2618		#include <stdio.h>
2619		#include <stdlib.h>
2620		#include <math.h>
2621	],
2622	[double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)],
2623	[cf_cv_have_libm=yes],
2624	[cf_cv_have_libm=no])])
2625	LIBS="$cf_save_LIBS"
2626
2627	if test "$cf_cv_have_libm" = yes
2628	then
2629		ifelse($1,,[CF_ADD_LIB(m)],[$1=-lm])
2630	fi
2631else
2632	cf_cv_have_libm=yes
2633fi
2634
2635if test "$cf_cv_have_libm" = yes
2636then
2637	AC_DEFINE(HAVE_MATH_FUNCS,1,[Define to 1 if math functions are available])
2638fi
2639])
2640dnl ---------------------------------------------------------------------------
2641dnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59
2642dnl ----------------------
2643dnl Check if the file-system supports mixed-case filenames.  If we're able to
2644dnl create a lowercase name and see it as uppercase, it doesn't support that.
2645AC_DEFUN([CF_MIXEDCASE_FILENAMES],
2646[
2647AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
2648if test "$cross_compiling" = yes ; then
2649	case "$target_alias" in
2650	(*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*)
2651		cf_cv_mixedcase=no
2652		;;
2653	(*)
2654		cf_cv_mixedcase=yes
2655		;;
2656	esac
2657else
2658	rm -f conftest CONFTEST
2659	echo test >conftest
2660	if test -f CONFTEST ; then
2661		cf_cv_mixedcase=no
2662	else
2663		cf_cv_mixedcase=yes
2664	fi
2665	rm -f conftest CONFTEST
2666fi
2667])
2668test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
2669])dnl
2670dnl ---------------------------------------------------------------------------
2671dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
2672dnl ----------
2673dnl Write a debug message to config.log, along with the line number in the
2674dnl configure script.
2675AC_DEFUN([CF_MSG_LOG],[
2676echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
2677])dnl
2678dnl ---------------------------------------------------------------------------
2679dnl CF_NCURSES_CC_CHECK version: 6 updated: 2023/02/18 17:47:58
2680dnl -------------------
2681dnl Check if we can compile with ncurses' header file
2682dnl $1 is the cache variable to set
2683dnl $2 is the header-file to include
2684dnl $3 is the root name (ncurses or ncursesw)
2685AC_DEFUN([CF_NCURSES_CC_CHECK],[
2686	AC_TRY_COMPILE([
2687]ifelse($3,ncursesw,[
2688#define _XOPEN_SOURCE_EXTENDED
2689#undef  HAVE_LIBUTF8_H	/* in case we used CF_UTF8_LIB */
2690#define HAVE_LIBUTF8_H	/* to force ncurses' header file to use cchar_t */
2691])[
2692#include <$2>],[
2693#ifdef NCURSES_VERSION
2694]ifelse($3,ncursesw,[
2695#ifndef WACS_BSSB
2696	#error WACS_BSSB is not defined
2697#endif
2698])[
2699printf("%s\\n", NCURSES_VERSION);
2700#else
2701#ifdef __NCURSES_H
2702printf("old\\n");
2703#else
2704	#error __NCURSES_H is not defined
2705#endif
2706#endif
2707	]
2708	,[$1=$2]
2709	,[$1=no])
2710])dnl
2711dnl ---------------------------------------------------------------------------
2712dnl CF_NCURSES_CONFIG version: 28 updated: 2021/08/28 15:20:37
2713dnl -----------------
2714dnl Tie together the configure-script macros for ncurses, preferring these in
2715dnl order:
2716dnl a) ".pc" files for pkg-config, using $NCURSES_CONFIG_PKG
2717dnl b) the "-config" script from ncurses, using $NCURSES_CONFIG
2718dnl c) just plain libraries
2719dnl
2720dnl $1 is the root library name (default: "ncurses")
2721AC_DEFUN([CF_NCURSES_CONFIG],[
2722AC_REQUIRE([CF_PKG_CONFIG])
2723cf_ncuconfig_root=ifelse($1,,ncurses,$1)
2724cf_have_ncuconfig=no
2725
2726if test "x${PKG_CONFIG:=none}" != xnone; then
2727	AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root)
2728	if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
2729		AC_MSG_RESULT(yes)
2730
2731		AC_MSG_CHECKING(if the $cf_ncuconfig_root package files work)
2732		cf_have_ncuconfig=unknown
2733
2734		cf_save_CFLAGS="$CFLAGS"
2735		cf_save_CPPFLAGS="$CPPFLAGS"
2736		cf_save_LIBS="$LIBS"
2737
2738		cf_pkg_cflags="`$PKG_CONFIG --cflags $cf_ncuconfig_root`"
2739		cf_pkg_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`"
2740
2741		# while -W for passing linker flags is prevalent, it is not "standard".
2742		# At least one wrapper for c89/c99 (in Apple's xcode) has its own
2743		# incompatible _and_ non-standard -W option which gives an error.  Work
2744		# around that pitfall.
2745		case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in
2746		(x*c[[89]]9@@*-W*)
2747			CF_ADD_CFLAGS($cf_pkg_cflags)
2748			CF_ADD_LIBS($cf_pkg_libs)
2749
2750			AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
2751				[initscr(); mousemask(0,0); tigetstr((char *)0);],
2752				[AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
2753					int main(void)
2754					{ const char *xx = curses_version(); return (xx == 0); }],
2755					[cf_test_ncuconfig=yes],
2756					[cf_test_ncuconfig=no],
2757					[cf_test_ncuconfig=maybe])],
2758				[cf_test_ncuconfig=no])
2759
2760			CFLAGS="$cf_save_CFLAGS"
2761			CPPFLAGS="$cf_save_CPPFLAGS"
2762			LIBS="$cf_save_LIBS"
2763
2764			if test "x$cf_test_ncuconfig" != xyes; then
2765				cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[[^ 	]]*//g'`
2766				cf_pkg_cflags="$cf_temp"
2767				cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[[^ 	]]*//g'`
2768				cf_pkg_libs="$cf_temp"
2769			fi
2770			;;
2771		esac
2772
2773		CF_APPEND_CFLAGS($cf_pkg_cflags)
2774		CF_ADD_LIBS($cf_pkg_libs)
2775
2776		AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
2777			[initscr(); mousemask(0,0); tigetstr((char *)0);],
2778			[AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
2779				int main(void)
2780				{ const char *xx = curses_version(); return (xx == 0); }],
2781				[cf_have_ncuconfig=yes],
2782				[cf_have_ncuconfig=no],
2783				[cf_have_ncuconfig=maybe])],
2784			[cf_have_ncuconfig=no])
2785		AC_MSG_RESULT($cf_have_ncuconfig)
2786		test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
2787		if test "$cf_have_ncuconfig" != "yes"
2788		then
2789			CPPFLAGS="$cf_save_CPPFLAGS"
2790			LIBS="$cf_save_LIBS"
2791			NCURSES_CONFIG_PKG=none
2792		else
2793			AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2794			NCURSES_CONFIG_PKG=$cf_ncuconfig_root
2795			CF_TERM_HEADER
2796		fi
2797
2798	else
2799		AC_MSG_RESULT(no)
2800		NCURSES_CONFIG_PKG=none
2801	fi
2802else
2803	NCURSES_CONFIG_PKG=none
2804fi
2805
2806if test "x$cf_have_ncuconfig" = "xno"; then
2807	cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
2808
2809	CF_ACVERSION_CHECK(2.52,
2810		[AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)],
2811		[AC_PATH_PROGS(NCURSES_CONFIG,  ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)])
2812
2813	if test "$NCURSES_CONFIG" != none ; then
2814
2815		CF_APPEND_CFLAGS(`$NCURSES_CONFIG --cflags`)
2816		CF_ADD_LIBS(`$NCURSES_CONFIG --libs`)
2817
2818		# even with config script, some packages use no-override for curses.h
2819		CF_CURSES_HEADER(ifelse($1,,ncurses,$1))
2820
2821		dnl like CF_NCURSES_CPPFLAGS
2822		AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2823
2824		dnl like CF_NCURSES_LIBS
2825		CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root)
2826		AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
2827
2828		dnl like CF_NCURSES_VERSION
2829		cf_cv_ncurses_version="`$NCURSES_CONFIG --version`"
2830
2831	else
2832
2833		CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1))
2834		CF_NCURSES_LIBS(ifelse($1,,ncurses,$1))
2835
2836	fi
2837else
2838	NCURSES_CONFIG=none
2839fi
2840])dnl
2841dnl ---------------------------------------------------------------------------
2842dnl CF_NCURSES_CPPFLAGS version: 22 updated: 2021/01/02 09:31:20
2843dnl -------------------
2844dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting
2845dnl the CPPFLAGS variable so we can include its header.
2846dnl
2847dnl The header files may be installed as either curses.h, or ncurses.h (would
2848dnl be obsolete, except that some packagers prefer this name to distinguish it
2849dnl from a "native" curses implementation).  If not installed for overwrite,
2850dnl the curses.h file would be in an ncurses subdirectory (e.g.,
2851dnl /usr/include/ncurses), but someone may have installed overwriting the
2852dnl vendor's curses.  Only very old versions (pre-1.9.2d, the first autoconf'd
2853dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in
2854dnl the header.
2855dnl
2856dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header
2857dnl is already in the include-path, don't even bother with this, since we cannot
2858dnl easily determine which file it is.  In this case, it has to be <curses.h>.
2859dnl
2860dnl The optional parameter gives the root name of the library, in case it is
2861dnl not installed as the default curses library.  That is how the
2862dnl wide-character version of ncurses is installed.
2863AC_DEFUN([CF_NCURSES_CPPFLAGS],
2864[AC_REQUIRE([CF_WITH_CURSES_DIR])
2865
2866AC_PROVIDE([CF_CURSES_CPPFLAGS])dnl
2867cf_ncuhdr_root=ifelse($1,,ncurses,$1)
2868
2869test -n "$cf_cv_curses_dir" && \
2870test "$cf_cv_curses_dir" != "no" && { \
2871  CF_ADD_INCDIR($cf_cv_curses_dir/include/$cf_ncuhdr_root)
2872}
2873
2874AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[
2875	cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h"
2876	{ test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw; } && cf_header_list="$cf_header_list curses.h ncurses.h"
2877	for cf_header in $cf_header_list
2878	do
2879		CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1)
2880		test "$cf_cv_ncurses_h" != no && break
2881	done
2882])
2883
2884CF_NCURSES_HEADER
2885CF_TERM_HEADER
2886
2887# some applications need this, but should check for NCURSES_VERSION
2888AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2889
2890CF_NCURSES_VERSION
2891])dnl
2892dnl ---------------------------------------------------------------------------
2893dnl CF_NCURSES_EXT_FUNCS version: 4 updated: 2012/10/06 16:39:58
2894dnl --------------------
2895dnl Since 2007/11/17, ncurses has defined NCURSES_EXT_FUNCS; earlier versions
2896dnl may provide these functions.  Define the symbol if it is not defined, and
2897dnl if it is valid.
2898AC_DEFUN([CF_NCURSES_EXT_FUNCS],
2899[
2900AC_CACHE_CHECK(for ncurses extended functions,cf_cv_ncurses_ext_funcs,[
2901AC_TRY_COMPILE([
2902#include <${cf_cv_ncurses_header:-curses.h}>],
2903[
2904int x = NCURSES_EXT_FUNCS
2905],[cf_cv_ncurses_ext_funcs=defined],[
2906AC_TRY_LINK([
2907#include <${cf_cv_ncurses_header:-curses.h}>],
2908[
2909	(void) assume_default_colors (0, 0);
2910	(void) curses_version ();
2911	(void) define_key (0, 0);
2912	(void) is_term_resized (0, 0);
2913	(void) key_defined (0);
2914	(void) keybound (0, 0);
2915	(void) keyok (0, 0);
2916	(void) resize_term (0, 0);
2917	(void) resizeterm (0, 0);
2918	(void) use_default_colors ();
2919	(void) use_extended_names (0);
2920	(void) wresize (0, 0, 0);],
2921	[cf_cv_ncurses_ext_funcs=yes],
2922	[cf_cv_ncurses_ext_funcs=no])
2923])
2924])
2925test "$cf_cv_ncurses_ext_funcs" = yes && AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 if we have ncurses extensions])
2926])dnl
2927dnl ---------------------------------------------------------------------------
2928dnl CF_NCURSES_HEADER version: 7 updated: 2021/01/04 19:33:05
2929dnl -----------------
2930dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
2931dnl variations of ncurses' installs.
2932dnl
2933dnl See also CF_CURSES_HEADER, which sets the same cache variable.
2934AC_DEFUN([CF_NCURSES_HEADER],[
2935
2936if test "$cf_cv_ncurses_h" != no ; then
2937	cf_cv_ncurses_header=$cf_cv_ncurses_h
2938else
2939
2940AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[
2941	test -n "$verbose" && echo
2942	CF_HEADER_PATH(cf_search,$cf_ncuhdr_root)
2943	test -n "$verbose" && echo "search path $cf_search"
2944	cf_save2_CPPFLAGS="$CPPFLAGS"
2945	for cf_incdir in $cf_search
2946	do
2947		CF_ADD_INCDIR($cf_incdir)
2948		for cf_header in \
2949			ncurses.h \
2950			curses.h
2951		do
2952			CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1)
2953			if test "$cf_cv_ncurses_h2" != no ; then
2954				cf_cv_ncurses_h2=$cf_incdir/$cf_header
2955				test -n "$verbose" && echo $ECHO_N "	... found $ECHO_C" 1>&AC_FD_MSG
2956				break
2957			fi
2958			test -n "$verbose" && echo "	... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG
2959		done
2960		CPPFLAGS="$cf_save2_CPPFLAGS"
2961		test "$cf_cv_ncurses_h2" != no && break
2962	done
2963	test "$cf_cv_ncurses_h2" = no && AC_MSG_ERROR(not found)
2964	])
2965
2966	CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2)
2967	cf_cv_ncurses_header="`basename "$cf_cv_ncurses_h2"`"
2968	if test "`basename "$cf_1st_incdir"`" = "$cf_ncuhdr_root" ; then
2969		cf_cv_ncurses_header="$cf_ncuhdr_root/$cf_cv_ncurses_header"
2970	fi
2971	CF_ADD_INCDIR($cf_1st_incdir)
2972
2973fi
2974
2975# Set definitions to allow ifdef'ing for ncurses.h
2976
2977case "$cf_cv_ncurses_header" in
2978(*ncurses.h)
2979	AC_DEFINE(HAVE_NCURSES_H,1,[Define to 1 if we have ncurses.h])
2980	;;
2981esac
2982
2983case "$cf_cv_ncurses_header" in
2984(ncurses/curses.h|ncurses/ncurses.h)
2985	AC_DEFINE(HAVE_NCURSES_NCURSES_H,1,[Define to 1 if we have ncurses/ncurses.h])
2986	;;
2987(ncursesw/curses.h|ncursesw/ncurses.h)
2988	AC_DEFINE(HAVE_NCURSESW_NCURSES_H,1,[Define to 1 if we have ncursesw/ncurses.h])
2989	;;
2990esac
2991
2992])dnl
2993dnl ---------------------------------------------------------------------------
2994dnl CF_NCURSES_LIBS version: 21 updated: 2021/09/04 06:37:12
2995dnl ---------------
2996dnl Look for the ncurses library.  This is a little complicated on Linux,
2997dnl because it may be linked with the gpm (general purpose mouse) library.
2998dnl Some distributions have gpm linked with (bsd) curses, which makes it
2999dnl unusable with ncurses.  However, we don't want to link with gpm unless
3000dnl ncurses has a dependency, since gpm is normally set up as a shared library,
3001dnl and the linker will record a dependency.
3002dnl
3003dnl The optional parameter gives the root name of the library, in case it is
3004dnl not installed as the default curses library.  That is how the
3005dnl wide-character version of ncurses is installed.
3006AC_DEFUN([CF_NCURSES_LIBS],
3007[AC_REQUIRE([CF_NCURSES_CPPFLAGS])
3008
3009cf_nculib_root=ifelse($1,,ncurses,$1)
3010	# This works, except for the special case where we find gpm, but
3011	# ncurses is in a nonstandard location via $LIBS, and we really want
3012	# to link gpm.
3013cf_ncurses_LIBS=""
3014cf_ncurses_SAVE="$LIBS"
3015AC_CHECK_LIB(gpm,Gpm_Open,
3016	[AC_CHECK_LIB(gpm,initscr,
3017		[LIBS="$cf_ncurses_SAVE"],
3018		[cf_ncurses_LIBS="-lgpm"])])
3019
3020case "$host_os" in
3021(freebsd*)
3022	# This is only necessary if you are linking against an obsolete
3023	# version of ncurses (but it should do no harm, since it is static).
3024	if test "$cf_nculib_root" = ncurses ; then
3025		AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"])
3026	fi
3027	;;
3028esac
3029
3030CF_ADD_LIBS($cf_ncurses_LIBS)
3031
3032if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no"
3033then
3034	CF_ADD_LIBS(-l$cf_nculib_root)
3035else
3036	CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root,
3037		[#include <${cf_cv_ncurses_header:-curses.h}>],
3038		[initscr()],
3039		initscr)
3040fi
3041
3042if test -n "$cf_ncurses_LIBS" ; then
3043	AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS)
3044	cf_ncurses_SAVE="$LIBS"
3045	for p in $cf_ncurses_LIBS ; do
3046		q=`echo "$LIBS" | sed -e "s%$p %%" -e "s%$p$%%"`
3047		if test "$q" != "$LIBS" ; then
3048			LIBS="$q"
3049		fi
3050	done
3051	AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
3052		[initscr(); mousemask(0,0); tigetstr((char *)0);],
3053		[AC_MSG_RESULT(yes)],
3054		[AC_MSG_RESULT(no)
3055		 LIBS="$cf_ncurses_SAVE"])
3056fi
3057
3058CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root)
3059AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
3060])dnl
3061dnl ---------------------------------------------------------------------------
3062dnl CF_NCURSES_PTHREADS version: 2 updated: 2016/04/22 05:07:41
3063dnl -------------------
3064dnl Use this followup check to ensure that we link with pthreads if ncurses
3065dnl uses it.
3066AC_DEFUN([CF_NCURSES_PTHREADS],[
3067: ${cf_nculib_root:=ifelse($1,,ncurses,$1)}
3068AC_CHECK_LIB($cf_nculib_root,_nc_init_pthreads,
3069	cf_cv_ncurses_pthreads=yes,
3070	cf_cv_ncurses_pthreads=no)
3071if test "$cf_cv_ncurses_pthreads" = yes
3072then
3073	CF_ADD_LIBS(-lpthread)
3074fi
3075])dnl
3076dnl ---------------------------------------------------------------------------
3077dnl CF_NCURSES_VERSION version: 18 updated: 2024/01/07 06:34:16
3078dnl ------------------
3079dnl Check for the version of ncurses, to aid in reporting bugs, etc.
3080dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS.  We don't use
3081dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi.
3082AC_DEFUN([CF_NCURSES_VERSION],
3083[
3084AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
3085AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[
3086	cf_cv_ncurses_version=no
3087	cf_tempfile=out$$
3088	rm -f "$cf_tempfile"
3089	AC_TRY_RUN([
3090$ac_includes_default
3091
3092#include <${cf_cv_ncurses_header:-curses.h}>
3093
3094int main(void)
3095{
3096	FILE *fp = fopen("$cf_tempfile", "w");
3097#ifdef NCURSES_VERSION
3098# ifdef NCURSES_VERSION_PATCH
3099	fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH);
3100# else
3101	fprintf(fp, "%s\\n", NCURSES_VERSION);
3102# endif
3103#else
3104# ifdef __NCURSES_H
3105	fprintf(fp, "old\\n");
3106# else
3107	#error expected ncurses header to define __NCURSES_H
3108# endif
3109#endif
3110	${cf_cv_main_return:-return}(0);
3111}],[
3112	cf_cv_ncurses_version=`cat $cf_tempfile`],,[
3113
3114	# This will not work if the preprocessor splits the line after the
3115	# Autoconf token.  The 'unproto' program does that.
3116	cat > "conftest.$ac_ext" <<EOF
3117#include <${cf_cv_ncurses_header:-curses.h}>
3118#undef Autoconf
3119#ifdef NCURSES_VERSION
3120Autoconf NCURSES_VERSION
3121#else
3122#ifdef __NCURSES_H
3123Autoconf "old"
3124#endif
3125;
3126#endif
3127EOF
3128	cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out"
3129	AC_TRY_EVAL(cf_try)
3130	if test -f conftest.out ; then
3131		cf_out=`sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%' conftest.out`
3132		test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
3133		rm -f conftest.out
3134	fi
3135])
3136	rm -f "$cf_tempfile"
3137])
3138test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
3139])dnl
3140dnl ---------------------------------------------------------------------------
3141dnl CF_NCURSES_WRAP_PREFIX version: 1 updated: 2009/03/28 16:08:10
3142dnl ----------------------
3143dnl Check for ncurses "wrap-prefix" used for public variables which have been
3144dnl wrapped with a function to help with concurrency control.
3145AC_DEFUN([CF_NCURSES_WRAP_PREFIX],
3146[
3147AC_MSG_CHECKING(for ncurses wrap-prefix)
3148AC_ARG_WITH(ncurses-wrap-prefix,
3149	[  --with-ncurses-wrap-prefix naming-prefix for ncurses wrapped-variables],
3150	[NCURSES_WRAP_PREFIX=$withval],
3151	[NCURSES_WRAP_PREFIX=_nc_])
3152AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
3153
3154AC_SUBST(NCURSES_WRAP_PREFIX)
3155])
3156dnl ---------------------------------------------------------------------------
3157dnl CF_NETBSD_FORM_H version: 2 updated: 2012/10/06 16:39:58
3158dnl ----------------
3159dnl Check for NetBSD's form.h, which is incompatible with SVr4 and ncurses.
3160dnl Some workarounds are needed in client programs to allow them to compile.
3161AC_DEFUN([CF_NETBSD_FORM_H],[
3162AC_CACHE_CHECK(for NetBSD form.h,cf_cv_netbsd_form_h,[
3163AC_TRY_COMPILE([
3164#include <${cf_cv_ncurses_header:-curses.h}>
3165#include <form.h>
3166],[
3167	FORM *form;
3168	int y = current_field(form)->cursor_ypos;
3169	int x = current_field(form)->cursor_xpos;
3170],[cf_cv_netbsd_form_h=yes
3171],[cf_cv_netbsd_form_h=no])
3172])
3173
3174test "$cf_cv_netbsd_form_h" = yes && AC_DEFINE(HAVE_NETBSD_FORM_H,1,[Define to 1 if we appear to be using NetBSD form.h])
3175])dnl
3176dnl ---------------------------------------------------------------------------
3177dnl CF_NETBSD_MENU_H version: 2 updated: 2012/10/06 16:39:58
3178dnl ----------------
3179dnl Check for NetBSD's menu.h, which is incompatible with SVr4 and ncurses.
3180dnl Some workarounds are needed in client programs to allow them to compile.
3181AC_DEFUN([CF_NETBSD_MENU_H],[
3182AC_CACHE_CHECK(for NetBSD menu.h,cf_cv_netbsd_menu_h,[
3183AC_TRY_COMPILE([
3184#include <${cf_cv_ncurses_header:-curses.h}>
3185#include <menu.h>
3186],[
3187	MENU *menu;
3188	int y = menu->max_item_width;
3189],[cf_cv_netbsd_menu_h=yes
3190],[cf_cv_netbsd_menu_h=no])
3191])
3192
3193test "$cf_cv_netbsd_menu_h" = yes && AC_DEFINE(HAVE_NETBSD_MENU_H,1,[Define to 1 if we appear to be using NetBSD menu.h])
3194])dnl
3195dnl ---------------------------------------------------------------------------
3196dnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41
3197dnl ------------------
3198dnl see CF_WITH_NO_LEAKS
3199dnl
3200dnl $1 = option/name
3201dnl $2 = help-text
3202dnl $3 = symbol to define if the option is set
3203dnl $4 = additional actions to take if the option is set
3204AC_DEFUN([CF_NO_LEAKS_OPTION],[
3205AC_MSG_CHECKING(if you want to use $1 for testing)
3206AC_ARG_WITH($1,
3207	[$2],
3208	[case "x$withval" in
3209	(x|xno) ;;
3210	(*)
3211		: "${with_cflags:=-g}"
3212		: "${enable_leaks:=no}"
3213		with_$1=yes
3214		AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
3215	 $4
3216])
3217		;;
3218	esac],
3219	[with_$1=])
3220AC_MSG_RESULT(${with_$1:-no})
3221
3222case ".$with_cflags" in
3223(.*-g*)
3224	case .$CFLAGS in
3225	(.*-g*)
3226		;;
3227	(*)
3228		CF_ADD_CFLAGS([-g])
3229		;;
3230	esac
3231	;;
3232esac
3233])dnl
3234dnl ---------------------------------------------------------------------------
3235dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20
3236dnl --------------
3237dnl Check the argument to see that it looks like a pathname.  Rewrite it if it
3238dnl begins with one of the prefix/exec_prefix variables, and then again if the
3239dnl result begins with 'NONE'.  This is necessary to work around autoconf's
3240dnl delayed evaluation of those symbols.
3241AC_DEFUN([CF_PATH_SYNTAX],[
3242if test "x$prefix" != xNONE; then
3243	cf_path_syntax="$prefix"
3244else
3245	cf_path_syntax="$ac_default_prefix"
3246fi
3247
3248case ".[$]$1" in
3249(.\[$]\(*\)*|.\'*\'*)
3250	;;
3251(..|./*|.\\*)
3252	;;
3253(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
3254	;;
3255(.\[$]\{*prefix\}*|.\[$]\{*dir\}*)
3256	eval $1="[$]$1"
3257	case ".[$]$1" in
3258	(.NONE/*)
3259		$1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
3260		;;
3261	esac
3262	;;
3263(.no|.NONE/*)
3264	$1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
3265	;;
3266(*)
3267	ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
3268	;;
3269esac
3270])dnl
3271dnl ---------------------------------------------------------------------------
3272dnl CF_PDCURSES_X11 version: 15 updated: 2021/01/02 09:31:20
3273dnl ---------------
3274dnl Configure for PDCurses' X11 library
3275AC_DEFUN([CF_PDCURSES_X11],[
3276AC_REQUIRE([CF_X_ATHENA])
3277
3278CF_ACVERSION_CHECK(2.52,
3279	[AC_CHECK_TOOLS(XCURSES_CONFIG, xcurses-config, none)],
3280	[AC_PATH_PROGS(XCURSES_CONFIG, xcurses-config, none)])
3281
3282if test "$XCURSES_CONFIG" != none ; then
3283
3284CF_ADD_CFLAGS(`$XCURSES_CONFIG --cflags`)
3285CF_ADD_LIBS(`$XCURSES_CONFIG --libs`)
3286
3287cf_cv_lib_XCurses=yes
3288
3289else
3290
3291LDFLAGS="$LDFLAGS $X_LIBS"
3292CF_CHECK_CFLAGS($X_CFLAGS)
3293AC_CHECK_LIB(X11,XOpenDisplay,
3294	[CF_ADD_LIBS(-lX11)],,
3295	[$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])
3296AC_CACHE_CHECK(for XCurses library,cf_cv_lib_XCurses,[
3297CF_ADD_LIBS(-lXCurses)
3298AC_TRY_LINK([
3299#include <xcurses.h>
3300char *XCursesProgramName = "test";
3301],[XCursesExit();],
3302[cf_cv_lib_XCurses=yes],
3303[cf_cv_lib_XCurses=no])
3304])
3305
3306fi
3307
3308if test "$cf_cv_lib_XCurses" = yes ; then
3309	AC_DEFINE(UNIX,1,[Define to 1 if using PDCurses on Unix])
3310	AC_DEFINE(XCURSES,1,[Define to 1 if using PDCurses on Unix])
3311	AC_CHECK_HEADER(xcurses.h, AC_DEFINE(HAVE_XCURSES,1,[Define to 1 if using PDCurses on Unix]))
3312else
3313	AC_MSG_ERROR(Cannot link with XCurses)
3314fi
3315])dnl
3316dnl ---------------------------------------------------------------------------
3317dnl CF_PKG_CONFIG version: 13 updated: 2023/10/28 11:59:01
3318dnl -------------
3319dnl Check for the package-config program, unless disabled by command-line.
3320dnl
3321dnl Sets $PKG_CONFIG to the pathname of the pkg-config program.
3322AC_DEFUN([CF_PKG_CONFIG],
3323[
3324AC_MSG_CHECKING(if you want to use pkg-config)
3325AC_ARG_WITH(pkg-config,
3326	[[  --with-pkg-config[=CMD] enable/disable use of pkg-config and its name CMD]],
3327	[cf_pkg_config=$withval],
3328	[cf_pkg_config=yes])
3329AC_MSG_RESULT($cf_pkg_config)
3330
3331case "$cf_pkg_config" in
3332(no)
3333	PKG_CONFIG=none
3334	;;
3335(yes)
3336	CF_ACVERSION_CHECK(2.52,
3337		[AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
3338		[AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
3339	;;
3340(*)
3341	PKG_CONFIG=$withval
3342	;;
3343esac
3344
3345test -z "$PKG_CONFIG" && PKG_CONFIG=none
3346if test "$PKG_CONFIG" != none ; then
3347	CF_PATH_SYNTAX(PKG_CONFIG)
3348elif test "x$cf_pkg_config" != xno ; then
3349	AC_MSG_WARN(pkg-config is not installed)
3350fi
3351
3352AC_SUBST(PKG_CONFIG)
3353])dnl
3354dnl ---------------------------------------------------------------------------
3355dnl CF_POSIX_C_SOURCE version: 12 updated: 2023/02/18 17:41:25
3356dnl -----------------
3357dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
3358dnl
3359dnl	POSIX.1-1990				_POSIX_SOURCE
3360dnl	POSIX.1-1990 and			_POSIX_SOURCE and
3361dnl		POSIX.2-1992 C-Language			_POSIX_C_SOURCE=2
3362dnl		Bindings Option
3363dnl	POSIX.1b-1993				_POSIX_C_SOURCE=199309L
3364dnl	POSIX.1c-1996				_POSIX_C_SOURCE=199506L
3365dnl	X/Open 2000				_POSIX_C_SOURCE=200112L
3366dnl
3367dnl Parameters:
3368dnl	$1 is the nominal value for _POSIX_C_SOURCE
3369AC_DEFUN([CF_POSIX_C_SOURCE],
3370[AC_REQUIRE([CF_POSIX_VISIBLE])dnl
3371
3372if test "$cf_cv_posix_visible" = no; then
3373
3374cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
3375
3376cf_save_CFLAGS="$CFLAGS"
3377cf_save_CPPFLAGS="$CPPFLAGS"
3378
3379CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
3380CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
3381
3382AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
3383	CF_MSG_LOG(if the symbol is already defined go no further)
3384	AC_TRY_COMPILE([#include <sys/types.h>],[
3385#ifndef _POSIX_C_SOURCE
3386#error _POSIX_C_SOURCE is not defined
3387#endif],
3388	[cf_cv_posix_c_source=no],
3389	[cf_want_posix_source=no
3390	 case .$cf_POSIX_C_SOURCE in
3391	 (.[[12]]??*)
3392		cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
3393		;;
3394	 (.2)
3395		cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
3396		cf_want_posix_source=yes
3397		;;
3398	 (.*)
3399		cf_want_posix_source=yes
3400		;;
3401	 esac
3402	 if test "$cf_want_posix_source" = yes ; then
3403		AC_TRY_COMPILE([#include <sys/types.h>],[
3404#ifdef _POSIX_SOURCE
3405#error _POSIX_SOURCE is defined
3406#endif],[],
3407		cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
3408	 fi
3409	 CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
3410	 CFLAGS="$cf_trim_CFLAGS"
3411	 CPPFLAGS="$cf_trim_CPPFLAGS"
3412	 CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
3413	 CF_MSG_LOG(if the second compile does not leave our definition intact error)
3414	 AC_TRY_COMPILE([#include <sys/types.h>],[
3415#ifndef _POSIX_C_SOURCE
3416#error _POSIX_C_SOURCE is not defined
3417#endif],,
3418	 [cf_cv_posix_c_source=no])
3419	 CFLAGS="$cf_save_CFLAGS"
3420	 CPPFLAGS="$cf_save_CPPFLAGS"
3421	])
3422])
3423
3424if test "$cf_cv_posix_c_source" != no ; then
3425	CFLAGS="$cf_trim_CFLAGS"
3426	CPPFLAGS="$cf_trim_CPPFLAGS"
3427	CF_ADD_CFLAGS($cf_cv_posix_c_source)
3428fi
3429
3430fi # cf_cv_posix_visible
3431
3432])dnl
3433dnl ---------------------------------------------------------------------------
3434dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
3435dnl ----------------
3436dnl POSIX documents test-macros which an application may set before any system
3437dnl headers are included to make features available.
3438dnl
3439dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
3440dnl diverged from POSIX in 2002 by setting symbols which make all of the most
3441dnl recent features visible in the system header files unless the application
3442dnl overrides the corresponding test-macros.  Doing that introduces portability
3443dnl problems.
3444dnl
3445dnl This macro makes a special check for the symbols used for this, to avoid a
3446dnl conflicting definition.
3447AC_DEFUN([CF_POSIX_VISIBLE],
3448[
3449AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
3450AC_TRY_COMPILE([#include <stdio.h>],[
3451#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
3452	&& defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
3453	&& defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
3454	&& defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
3455#error conflicting symbols found
3456#endif
3457],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
3458])
3459])dnl
3460dnl ---------------------------------------------------------------------------
3461dnl CF_PRG_RULES version: 2 updated: 2021/01/01 13:31:04
3462dnl ------------
3463dnl Append definitions and rules for the given programs to the subdirectory
3464dnl Makefiles, and the recursion rule for the top-level Makefile.
3465dnl
3466dnl parameters
3467dnl	$1 = script to run
3468dnl	$2 = list of subdirectories
3469dnl
3470dnl variables
3471dnl	$AWK
3472AC_DEFUN([CF_PRG_RULES],
3473[
3474for cf_dir in $2
3475do
3476	if test ! -d "$srcdir/$cf_dir" ; then
3477		continue
3478	elif test -f "$srcdir/$cf_dir/programs" ; then
3479		$AWK -f $1 "$srcdir/$cf_dir/programs" >>$cf_dir/Makefile
3480	fi
3481done
3482
3483])dnl
3484dnl ---------------------------------------------------------------------------
3485dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
3486dnl ----------
3487dnl standard check for CC, plus followup sanity checks
3488dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
3489AC_DEFUN([CF_PROG_CC],[
3490CF_ACVERSION_CHECK(2.53,
3491	[AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
3492	 AC_REQUIRE([AC_PROG_CC])],
3493	[])
3494ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
3495CF_GCC_VERSION
3496CF_ACVERSION_CHECK(2.52,
3497	[AC_PROG_CC_STDC],
3498	[CF_ANSI_CC_REQD])
3499CF_CC_ENV_FLAGS
3500])dnl
3501dnl ---------------------------------------------------------------------------
3502dnl CF_PROG_INSTALL version: 10 updated: 2021/01/04 19:33:05
3503dnl ---------------
3504dnl Force $INSTALL to be an absolute-path.  Otherwise, edit_man.sh and the
3505dnl misc/tabset install won't work properly.  Usually this happens only when
3506dnl using the fallback mkinstalldirs script
3507AC_DEFUN([CF_PROG_INSTALL],
3508[AC_PROG_INSTALL
3509case $INSTALL in
3510(/*)
3511	;;
3512(*)
3513	CF_DIRNAME(cf_dir,$INSTALL)
3514	test -z "$cf_dir" && cf_dir=.
3515	INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`"
3516	;;
3517esac
3518])dnl
3519dnl ---------------------------------------------------------------------------
3520dnl CF_PROG_LINT version: 5 updated: 2022/08/20 15:44:13
3521dnl ------------
3522AC_DEFUN([CF_PROG_LINT],
3523[
3524AC_CHECK_PROGS(LINT, lint cppcheck splint)
3525case "x$LINT" in
3526(xcppcheck|x*/cppcheck)
3527	test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
3528	;;
3529esac
3530AC_SUBST(LINT_OPTS)
3531AC_SUBST(LINT_LIBS)
3532])dnl
3533dnl ---------------------------------------------------------------------------
3534dnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40
3535dnl ----------------
3536dnl Remove a given option from CFLAGS/CPPFLAGS
3537dnl $1 = option to remove
3538dnl $2 = variable to update
3539dnl $3 = nonempty to allow verbose message
3540define([CF_REMOVE_CFLAGS],
3541[
3542cf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'`
3543while true
3544do
3545	cf_old_cflag=`echo "x[$]$2" | sed -e 's/^.//' -e 's/[[ 	]][[ 	]]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[[^ 	]][[^ 	]]*\\)\?%%" -e 's/^[[ 	]]*//' -e 's%[[ ]][[ ]]*-D% -D%g' -e 's%[[ ]][[ ]]*-I% -I%g'`
3546	test "[$]$2" != "$cf_old_cflag" || break
3547	ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)])
3548	$2="$cf_old_cflag"
3549done
3550])dnl
3551dnl ---------------------------------------------------------------------------
3552dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
3553dnl ----------------
3554dnl Remove all -U and -D options that refer to the given symbol from a list
3555dnl of C compiler options.  This works around the problem that not all
3556dnl compilers process -U and -D options from left-to-right, so a -U option
3557dnl cannot be used to cancel the effect of a preceding -D option.
3558dnl
3559dnl $1 = target (which could be the same as the source variable)
3560dnl $2 = source (including '$')
3561dnl $3 = symbol to remove
3562define([CF_REMOVE_DEFINE],
3563[
3564$1=`echo "$2" | \
3565	sed	-e 's/-[[UD]]'"$3"'\(=[[^ 	]]*\)\?[[ 	]]/ /g' \
3566		-e 's/-[[UD]]'"$3"'\(=[[^ 	]]*\)\?[$]//g'`
3567])dnl
3568dnl ---------------------------------------------------------------------------
3569dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
3570dnl ---------------------
3571dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
3572dnl $1 = name of current macro
3573define([CF_RESTORE_XTRA_FLAGS],
3574[
3575LIBS="$cf_save_LIBS_$1"
3576CFLAGS="$cf_save_CFLAGS_$1"
3577CPPFLAGS="$cf_save_CPPFLAGS_$1"
3578])dnl
3579dnl ---------------------------------------------------------------------------
3580dnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50
3581dnl -------------
3582AC_DEFUN([CF_RPATH_HACK],
3583[AC_REQUIRE([AC_PROG_FGREP])dnl
3584AC_REQUIRE([CF_LD_RPATH_OPT])dnl
3585
3586AC_MSG_CHECKING(for updated LDFLAGS)
3587if test -n "$LD_RPATH_OPT" ; then
3588	AC_MSG_RESULT(maybe)
3589
3590	AC_CHECK_PROGS(cf_ldd_prog,ldd,no)
3591	cf_rpath_list="/usr/lib /lib"
3592	if test "$cf_ldd_prog" != no
3593	then
3594		cf_rpath_oops=
3595
3596AC_TRY_LINK([#include <stdio.h>],
3597		[printf("Hello");],
3598		[cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
3599		 cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[ 	]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`])
3600
3601		# If we passed the link-test, but get a "not found" on a given library,
3602		# this could be due to inept reconfiguration of gcc to make it only
3603		# partly honor /usr/local/lib (or whatever).  Sometimes this behavior
3604		# is intentional, e.g., installing gcc in /usr/bin and suppressing the
3605		# /usr/local libraries.
3606		if test -n "$cf_rpath_oops"
3607		then
3608			for cf_rpath_src in $cf_rpath_oops
3609			do
3610				for cf_rpath_dir in \
3611					/usr/local \
3612					/usr/pkg \
3613					/opt/sfw
3614				do
3615					if test -f "$cf_rpath_dir/lib/$cf_rpath_src"
3616					then
3617						CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src)
3618						LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
3619						break
3620					fi
3621				done
3622			done
3623		fi
3624	fi
3625
3626	CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS)
3627
3628	CF_RPATH_HACK_2(LDFLAGS)
3629	CF_RPATH_HACK_2(LIBS)
3630
3631	CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS)
3632else
3633	AC_MSG_RESULT(no)
3634fi
3635AC_SUBST(EXTRA_LDFLAGS)
3636])dnl
3637dnl ---------------------------------------------------------------------------
3638dnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04
3639dnl ---------------
3640dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to
3641dnl EXTRA_LDFLAGS for each -L option found.
3642dnl
3643dnl $cf_rpath_list contains a list of directories to ignore.
3644dnl
3645dnl $1 = variable name to update.  The LDFLAGS variable should be the only one,
3646dnl      but LIBS often has misplaced -L options.
3647AC_DEFUN([CF_RPATH_HACK_2],
3648[
3649CF_VERBOSE(...checking $1 [$]$1)
3650
3651cf_rpath_dst=
3652for cf_rpath_src in [$]$1
3653do
3654	case "$cf_rpath_src" in
3655	(-L*)
3656
3657		# check if this refers to a directory which we will ignore
3658		cf_rpath_skip=no
3659		if test -n "$cf_rpath_list"
3660		then
3661			for cf_rpath_item in $cf_rpath_list
3662			do
3663				if test "x$cf_rpath_src" = "x-L$cf_rpath_item"
3664				then
3665					cf_rpath_skip=yes
3666					break
3667				fi
3668			done
3669		fi
3670
3671		if test "$cf_rpath_skip" = no
3672		then
3673			# transform the option
3674			if test "$LD_RPATH_OPT" = "-R " ; then
3675				cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"`
3676			else
3677				cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"`
3678			fi
3679
3680			# if we have not already added this, add it now
3681			cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"`
3682			if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS"
3683			then
3684				CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp)
3685				EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
3686			fi
3687		fi
3688		;;
3689	esac
3690	cf_rpath_dst="$cf_rpath_dst $cf_rpath_src"
3691done
3692$1=$cf_rpath_dst
3693
3694CF_VERBOSE(...checked $1 [$]$1)
3695AC_SUBST(EXTRA_LDFLAGS)
3696])dnl
3697dnl ---------------------------------------------------------------------------
3698dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
3699dnl ------------------
3700dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
3701dnl and libraries which do not update those variables.
3702dnl
3703dnl $1 = name of current macro
3704define([CF_SAVE_XTRA_FLAGS],
3705[
3706cf_save_LIBS_$1="$LIBS"
3707cf_save_CFLAGS_$1="$CFLAGS"
3708cf_save_CPPFLAGS_$1="$CPPFLAGS"
3709LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
3710for cf_X_CFLAGS in $X_CFLAGS
3711do
3712	case "x$cf_X_CFLAGS" in
3713	x-[[IUD]]*)
3714		CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
3715		;;
3716	*)
3717		CFLAGS="$CFLAGS $cf_X_CFLAGS"
3718		;;
3719	esac
3720done
3721])dnl
3722dnl ---------------------------------------------------------------------------
3723dnl CF_SIGWINCH version: 7 updated: 2023/02/18 17:41:25
3724dnl -----------
3725dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
3726dnl programs need this test).
3727dnl
3728dnl This is really a Mac OS X 10.4.3 workaround.  Defining _POSIX_C_SOURCE
3729dnl forces SIGWINCH to be undefined (breaks xterm, ncurses).  Oddly, the struct
3730dnl winsize declaration is left alone - we may revisit this if Apple choose to
3731dnl break that part of the interface as well.
3732AC_DEFUN([CF_SIGWINCH],
3733[
3734AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[
3735	AC_TRY_COMPILE([
3736#include <sys/types.h>
3737#include <sys/signal.h>
3738],[int x = SIGWINCH; (void)x],
3739	[cf_cv_define_sigwinch=yes],
3740	[AC_TRY_COMPILE([
3741#undef _XOPEN_SOURCE
3742#undef _POSIX_SOURCE
3743#undef _POSIX_C_SOURCE
3744#include <sys/types.h>
3745#include <sys/signal.h>
3746],[int x = SIGWINCH; (void)x],
3747	[cf_cv_define_sigwinch=maybe],
3748	[cf_cv_define_sigwinch=no])
3749])
3750])
3751
3752if test "$cf_cv_define_sigwinch" = maybe ; then
3753AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[
3754cf_cv_fixup_sigwinch=unknown
3755cf_sigwinch=32
3756while test "$cf_sigwinch" != 1
3757do
3758	AC_TRY_COMPILE([
3759#undef _XOPEN_SOURCE
3760#undef _POSIX_SOURCE
3761#undef _POSIX_C_SOURCE
3762#include <sys/types.h>
3763#include <sys/signal.h>
3764],[
3765#if SIGWINCH != $cf_sigwinch
3766#error SIGWINCH is not $cf_sigwinch
3767#endif
3768int x = SIGWINCH; (void)x],
3769	[cf_cv_fixup_sigwinch=$cf_sigwinch
3770	 break])
3771
3772cf_sigwinch="`expr "$cf_sigwinch" - 1`"
3773done
3774])
3775
3776	if test "$cf_cv_fixup_sigwinch" != unknown ; then
3777		CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch"
3778	fi
3779fi
3780])dnl
3781dnl ---------------------------------------------------------------------------
3782dnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47
3783dnl ---------------
3784dnl signal handler, but there are some gcc dependencies in that recommendation.
3785dnl Try anyway.
3786AC_DEFUN([CF_SIG_ATOMIC_T],
3787[
3788AC_MSG_CHECKING(for signal global datatype)
3789AC_CACHE_VAL(cf_cv_sig_atomic_t,[
3790	for cf_type in \
3791		"volatile sig_atomic_t" \
3792		"sig_atomic_t" \
3793		"int"
3794	do
3795	AC_TRY_COMPILE([
3796#include <sys/types.h>
3797#include <signal.h>
3798#include <stdio.h>
3799
3800extern $cf_type x;
3801$cf_type x;
3802static void handler(int sig)
3803{
3804	(void)sig;
3805	x = 5;
3806}],
3807		[signal(SIGINT, handler);
3808		 x = 1],
3809		[cf_cv_sig_atomic_t=$cf_type],
3810		[cf_cv_sig_atomic_t=no])
3811		test "$cf_cv_sig_atomic_t" != no && break
3812	done
3813	])
3814AC_MSG_RESULT($cf_cv_sig_atomic_t)
3815test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
3816])dnl
3817dnl ---------------------------------------------------------------------------
3818dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
3819dnl --------------
3820dnl Construct a search-list for a nonstandard header/lib-file
3821dnl	$1 = the variable to return as result
3822dnl	$2 = the package name
3823dnl	$3 = the subdirectory, e.g., bin, include or lib
3824AC_DEFUN([CF_SUBDIR_PATH],
3825[
3826$1=
3827
3828CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
3829
3830for cf_subdir_prefix in \
3831	/usr \
3832	/usr/local \
3833	/usr/pkg \
3834	/opt \
3835	/opt/local \
3836	[$]HOME
3837do
3838	CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
3839done
3840])dnl
3841dnl ---------------------------------------------------------------------------
3842dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57
3843dnl ------------------
3844dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
3845dnl older SCO configurations.
3846AC_DEFUN([CF_SYS_TIME_SELECT],
3847[
3848AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
3849AC_CACHE_VAL(cf_cv_sys_time_select,[
3850AC_TRY_COMPILE([
3851#include <sys/types.h>
3852#ifdef HAVE_SYS_TIME_H
3853#include <sys/time.h>
3854#endif
3855#ifdef HAVE_SYS_SELECT_H
3856#include <sys/select.h>
3857#endif
3858],[],[cf_cv_sys_time_select=yes],
3859	 [cf_cv_sys_time_select=no])
3860	 ])
3861AC_MSG_RESULT($cf_cv_sys_time_select)
3862test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT,1,[Define to 1 if we can include <sys/time.h> with <sys/select.h>])
3863])dnl
3864dnl ---------------------------------------------------------------------------
3865dnl CF_TERM_HEADER version: 6 updated: 2021/01/02 09:31:20
3866dnl --------------
3867dnl Look for term.h, which is part of X/Open curses.  It defines the interface
3868dnl to terminfo database.  Usually it is in the same include-path as curses.h,
3869dnl but some packagers change this, breaking various applications.
3870AC_DEFUN([CF_TERM_HEADER],[
3871AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[
3872case "${cf_cv_ncurses_header}" in
3873(*/ncurses.h|*/ncursesw.h)
3874	cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'`
3875	;;
3876(*)
3877	cf_term_header=term.h
3878	;;
3879esac
3880
3881for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
3882do
3883AC_TRY_COMPILE([#include <stdio.h>
3884#include <${cf_cv_ncurses_header:-curses.h}>
3885#include <$cf_test>
3886],[int x = auto_left_margin; (void)x],[
3887	cf_cv_term_header="$cf_test"],[
3888	cf_cv_term_header=unknown
3889	])
3890	test "$cf_cv_term_header" != unknown && break
3891done
3892])
3893
3894# Set definitions to allow ifdef'ing to accommodate subdirectories
3895
3896case "$cf_cv_term_header" in
3897(*term.h)
3898	AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
3899	;;
3900esac
3901
3902case "$cf_cv_term_header" in
3903(ncurses/term.h)
3904	AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
3905	;;
3906(ncursesw/term.h)
3907	AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
3908	;;
3909esac
3910])dnl
3911dnl ---------------------------------------------------------------------------
3912dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32
3913dnl ---------------
3914dnl Define a top_builddir symbol, for applications that need an absolute path.
3915AC_DEFUN([CF_TOP_BUILDDIR],
3916[
3917top_builddir=ifelse($1,,`pwd`,$1)
3918AC_SUBST(top_builddir)
3919])dnl
3920dnl ---------------------------------------------------------------------------
3921dnl CF_TPUTS_PROTO version: 4 updated: 2021/01/04 19:45:09
3922dnl --------------
3923dnl Check for type of function-pointer passed to tputs.  Some old
3924dnl implementations used functions that had different prototypes, making it
3925dnl hard to compile portable programs using tputs.
3926AC_DEFUN([CF_TPUTS_PROTO],[
3927CF_CURSES_FUNCS(tputs)
3928if test "x$cf_cv_func_tputs" = xyes
3929then
3930	cf_done=no
3931	for cf_arg in int char
3932	do
3933		for cf_ret in int void
3934		do
3935			if test "$cf_ret" = void
3936			then
3937				cf_return="/* nothing */"
3938			else
3939				cf_return="return value"
3940			fi
3941			AC_TRY_COMPILE([
3942#include <${cf_cv_ncurses_header:-curses.h}>
3943#include <$cf_cv_term_header>
3944
3945static $cf_ret outc($cf_arg value) { $cf_return; }
3946],[
3947	tputs("hello", 0, outc);
3948	${cf_cv_main_return:-return}(0);
3949],[
3950		CF_VERBOSE([prototype $cf_ret func($cf_arg value)])
3951		cat >>confdefs.h <<EOF
3952#define TPUTS_ARG               $cf_arg
3953#define TPUTS_PROTO(func,value) $cf_ret func(TPUTS_ARG value)
3954#define TPUTS_RETURN(value)     $cf_return
3955EOF
3956		cf_done=yes
3957		break
3958])
3959		done
3960		test "$cf_done" = yes && break
3961	done
3962fi
3963])dnl
3964dnl ---------------------------------------------------------------------------
3965dnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00
3966dnl --------------
3967dnl Trim extra base X libraries added as a workaround for inconsistent library
3968dnl dependencies returned by "new" pkg-config files.
3969AC_DEFUN([CF_TRIM_X_LIBS],[
3970	for cf_trim_lib in Xmu Xt X11
3971	do
3972		case "$LIBS" in
3973		(*-l$cf_trim_lib\ *-l$cf_trim_lib*)
3974			LIBS=`echo "$LIBS " | sed -e 's/  / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'`
3975			CF_VERBOSE(..trimmed $LIBS)
3976			;;
3977		esac
3978	done
3979])
3980dnl ---------------------------------------------------------------------------
3981dnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15
3982dnl -----------------
3983dnl This is a simple wrapper to use for pkg-config, for libraries which may be
3984dnl available in that form.
3985dnl
3986dnl $1 = package name, which may be a shell variable
3987dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS
3988dnl $3 = logic to use if pkg-config does not have the package
3989AC_DEFUN([CF_TRY_PKG_CONFIG],[
3990AC_REQUIRE([CF_PKG_CONFIG])
3991
3992if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then
3993	CF_VERBOSE(found package $1)
3994	cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`"
3995	cf_pkgconfig_libs="`$PKG_CONFIG --libs   "$1" 2>/dev/null`"
3996	CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs)
3997	CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs)
3998	CF_ADD_CFLAGS($cf_pkgconfig_incs)
3999	CF_ADD_LIBS($cf_pkgconfig_libs)
4000	ifelse([$2],,:,[$2])
4001else
4002	cf_pkgconfig_incs=
4003	cf_pkgconfig_libs=
4004	ifelse([$3],,:,[$3])
4005fi
4006])
4007dnl ---------------------------------------------------------------------------
4008dnl CF_TRY_XOPEN_SOURCE version: 4 updated: 2022/09/10 15:16:16
4009dnl -------------------
4010dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
4011dnl can define it successfully.
4012AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
4013AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
4014	AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,
4015	[cf_cv_xopen_source=no],
4016	[cf_save="$CPPFLAGS"
4017	 CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
4018	 AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,
4019		[cf_cv_xopen_source=no],
4020		[cf_cv_xopen_source=$cf_XOPEN_SOURCE])
4021		CPPFLAGS="$cf_save"
4022	])
4023])
4024
4025if test "$cf_cv_xopen_source" != no ; then
4026	CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
4027	CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
4028	cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
4029	CF_APPEND_CFLAGS($cf_temp_xopen_source)
4030fi
4031])
4032dnl ---------------------------------------------------------------------------
4033dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
4034dnl --------
4035dnl Make an uppercase version of a variable
4036dnl $1=uppercase($2)
4037AC_DEFUN([CF_UPPER],
4038[
4039$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
4040])dnl
4041dnl ---------------------------------------------------------------------------
4042dnl CF_UTF8_LIB version: 10 updated: 2023/01/11 04:05:23
4043dnl -----------
4044dnl Check for multibyte support, and if not found, utf8 compatibility library
4045AC_DEFUN([CF_UTF8_LIB],
4046[
4047AC_HAVE_HEADERS(wchar.h)
4048AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
4049	cf_save_LIBS="$LIBS"
4050	AC_TRY_LINK([
4051$ac_includes_default
4052#ifdef HAVE_WCHAR_H
4053#include <wchar.h>
4054#endif
4055],[putwc(0,0);],
4056	[cf_cv_utf8_lib=yes],
4057	[CF_FIND_LINKAGE([
4058#include <libutf8.h>],[putwc(0,0);],utf8,
4059		[cf_cv_utf8_lib=add-on],
4060		[cf_cv_utf8_lib=no])
4061])])
4062
4063# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
4064# ncurses/ncursesw:
4065if test "$cf_cv_utf8_lib" = "add-on" ; then
4066	AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h])
4067	CF_ADD_INCDIR($cf_cv_header_path_utf8)
4068	CF_ADD_LIBDIR($cf_cv_library_path_utf8)
4069	CF_ADD_LIBS($cf_cv_library_file_utf8)
4070fi
4071])dnl
4072dnl ---------------------------------------------------------------------------
4073dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
4074dnl ----------
4075dnl Use AC_VERBOSE w/o the warnings
4076AC_DEFUN([CF_VERBOSE],
4077[test -n "$verbose" && echo "	$1" 1>&AC_FD_MSG
4078CF_MSG_LOG([$1])
4079])dnl
4080dnl ---------------------------------------------------------------------------
4081dnl CF_WCHAR_TYPE version: 5 updated: 2023/12/03 09:21:34
4082dnl -------------
4083dnl Check if type wide-character type $1 is declared, and if so, which header
4084dnl file is needed.  The second parameter is used to set a shell variable when
4085dnl the type is not found.  The first parameter sets a shell variable for the
4086dnl opposite sense.
4087AC_DEFUN([CF_WCHAR_TYPE],
4088[
4089# This is needed on Tru64 5.0 to declare $1
4090AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[
4091AC_TRY_COMPILE([
4092#include <stdlib.h>
4093#include <stdarg.h>
4094#include <stdio.h>
4095#ifdef HAVE_LIBUTF8_H
4096#include <libutf8.h>
4097#endif],
4098	[$1 state; (void)state],
4099	[cf_cv_$1=no],
4100	[AC_TRY_COMPILE([
4101#include <stdlib.h>
4102#include <stdarg.h>
4103#include <stdio.h>
4104#include <wchar.h>
4105#ifdef HAVE_LIBUTF8_H
4106#include <libutf8.h>
4107#endif],
4108	[$1 value; (void) value],
4109	[cf_cv_$1=yes],
4110	[cf_cv_$1=unknown])])])
4111
4112if test "$cf_cv_$1" = yes ; then
4113	AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h])
4114	NEED_WCHAR_H=1
4115fi
4116
4117ifelse([$2],,,[
4118# if we do not find $1 in either place, use substitution to provide a fallback.
4119if test "$cf_cv_$1" = unknown ; then
4120	$2=1
4121fi
4122])
4123ifelse($3,,,[
4124# if we find $1 in either place, use substitution to provide a fallback.
4125if test "$cf_cv_$1" != unknown ; then
4126	$3=1
4127fi
4128])
4129])dnl
4130dnl ---------------------------------------------------------------------------
4131dnl CF_WITH_CURSES_DIR version: 4 updated: 2021/01/02 19:22:58
4132dnl ------------------
4133dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses
4134dnl libraries.
4135AC_DEFUN([CF_WITH_CURSES_DIR],[
4136
4137AC_MSG_CHECKING(for specific curses-directory)
4138AC_ARG_WITH(curses-dir,
4139	[  --with-curses-dir=DIR   directory in which (n)curses is installed],
4140	[cf_cv_curses_dir=$withval],
4141	[cf_cv_curses_dir=no])
4142AC_MSG_RESULT($cf_cv_curses_dir)
4143
4144if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no"
4145then
4146	CF_PATH_SYNTAX(withval)
4147	if test -d "$cf_cv_curses_dir"
4148	then
4149		CF_ADD_INCDIR($cf_cv_curses_dir/include)
4150		CF_ADD_LIBDIR($cf_cv_curses_dir/lib)
4151	fi
4152fi
4153])dnl
4154dnl ---------------------------------------------------------------------------
4155dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
4156dnl ----------------
4157dnl Configure-option for dbmalloc.  The optional parameter is used to override
4158dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
4159AC_DEFUN([CF_WITH_DBMALLOC],[
4160CF_NO_LEAKS_OPTION(dbmalloc,
4161	[  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
4162	[USE_DBMALLOC])
4163
4164if test "$with_dbmalloc" = yes ; then
4165	AC_CHECK_HEADER(dbmalloc.h,
4166		[AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
4167fi
4168])dnl
4169dnl ---------------------------------------------------------------------------
4170dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
4171dnl ---------------
4172dnl Configure-option for dmalloc.  The optional parameter is used to override
4173dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
4174AC_DEFUN([CF_WITH_DMALLOC],[
4175CF_NO_LEAKS_OPTION(dmalloc,
4176	[  --with-dmalloc          test: use Gray Watson's dmalloc library],
4177	[USE_DMALLOC])
4178
4179if test "$with_dmalloc" = yes ; then
4180	AC_CHECK_HEADER(dmalloc.h,
4181		[AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
4182fi
4183])dnl
4184dnl ---------------------------------------------------------------------------
4185dnl CF_WITH_LIB_BASENAME version: 2 updated: 2023/11/22 20:48:30
4186dnl --------------------
4187dnl Allow for overriding the basename of a library, i.e., the part to which
4188dnl prefixes/suffixes are attached.
4189dnl
4190dnl $1 = variable to set
4191dnl $2 = option name
4192dnl $3 = default basename for library, if omitted use $2
4193AC_DEFUN([CF_WITH_LIB_BASENAME],
4194[
4195AC_MSG_CHECKING(for desired basename for $2 library)
4196AC_ARG_WITH($2-libname,
4197	[[  --with-$2-libname[=XXX] override ifelse($3,,$2,$3) basename of library]],
4198	[with_lib_basename=$withval],
4199	[with_lib_basename=ifelse($3,,$2,$3)])
4200$1="$with_lib_basename"
4201
4202case "x[$]$1" in
4203(x|xno|xnone|xyes)
4204	$1=ifelse($3,,$2,$3)
4205	;;
4206(*)
4207	;;
4208esac
4209
4210AC_MSG_RESULT([$]$1)
4211AC_SUBST($1)
4212])dnl
4213dnl ---------------------------------------------------------------------------
4214dnl CF_WITH_NCURSES_ETC version: 6 updated: 2023/01/16 10:10:06
4215dnl -------------------
4216dnl Use this macro for programs which use any variant of "curses", e.g.,
4217dnl "ncurses", and "PDCurses".  Programs that can use curses and some unrelated
4218dnl library (such as slang) should use a "--with-screen=XXX" option.
4219dnl
4220dnl This does not use AC_DEFUN, because that would tell autoconf to run each
4221dnl of the macros inside this one - before this macro.
4222define([CF_WITH_NCURSES_ETC],[
4223CF_WITH_CURSES_DIR
4224
4225cf_cv_screen=curses
4226
4227AC_MSG_CHECKING(for specified curses library type)
4228AC_ARG_WITH(screen,
4229	[  --with-screen=XXX       use specified curses-libraries],
4230	[cf_cv_screen=$withval],[
4231
4232AC_ARG_WITH(ncursesw,
4233	[  --with-ncursesw         use wide ncurses-libraries],
4234	[cf_cv_screen=ncursesw],[
4235
4236AC_ARG_WITH(ncurses,
4237	[  --with-ncurses          use ncurses-libraries],
4238	[cf_cv_screen=ncurses],[
4239
4240AC_ARG_WITH(pdcurses,
4241	[  --with-pdcurses         compile/link with pdcurses X11 library],
4242	[cf_cv_screen=pdcurses],[
4243
4244AC_ARG_WITH(curses-colr,
4245	[  --with-curses-colr      compile/link with HPUX 10.x color-curses],
4246	[cf_cv_screen=curses_colr],[
4247
4248AC_ARG_WITH(curses-5lib,
4249	[  --with-curses-5lib      compile/link with SunOS 5lib curses],
4250	[cf_cv_screen=curses_5lib])])])])])])
4251
4252AC_MSG_RESULT($cf_cv_screen)
4253
4254case $cf_cv_screen in
4255(curses|curses_*)
4256	CF_CURSES_CONFIG
4257	;;
4258(ncursesw*)
4259	CF_UTF8_LIB
4260	CF_NCURSES_CONFIG($cf_cv_screen)
4261	;;
4262(ncurses*)
4263	CF_NCURSES_CONFIG($cf_cv_screen)
4264	;;
4265(pdcurses)
4266	CF_PDCURSES_X11
4267	;;
4268(*)
4269	AC_MSG_ERROR(unexpected screen-value: $cf_cv_screen)
4270	;;
4271esac
4272
4273CF_NCURSES_PTHREADS($cf_cv_screen)
4274AC_SUBST(cf_cv_screen)
4275
4276])dnl
4277dnl ---------------------------------------------------------------------------
4278dnl CF_WITH_SCREEN_PDCURSES version: 1 updated: 2020/08/28 16:56:27
4279dnl -----------------------
4280dnl Call this macro before CF_ENABLE_WARNINGS for configure scripts which use
4281dnl the "--with-screen=pdcurses" selection.  Doing that allows the configure
4282dnl script to search for the X11/Xt header files to declare (or not) the
4283dnl symbol needed to enable "const" in those header files.  If that configure
4284dnl option is not used, then those checks are unnecessary.
4285AC_DEFUN([CF_WITH_SCREEN_PDCURSES],[
4286AC_PROVIDE([AC_PATH_XTRA])
4287AC_PROVIDE([AC_PATH_X])
4288if test -n "$with_screen" && test "x$with_screen" = "xpdcurses"
4289then
4290	AC_PATH_X
4291	AC_PATH_XTRA
4292fi
4293])dnl
4294dnl ---------------------------------------------------------------------------
4295dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
4296dnl ----------------
4297AC_DEFUN([CF_WITH_VALGRIND],[
4298CF_NO_LEAKS_OPTION(valgrind,
4299	[  --with-valgrind         test: use valgrind],
4300	[USE_VALGRIND])
4301])dnl
4302dnl ---------------------------------------------------------------------------
4303dnl CF_WITH_X11_RGB version: 3 updated: 2023/10/28 11:59:01
4304dnl ---------------
4305dnl Handle configure option "--with-x11-rgb", setting these shell
4306dnl variables:
4307dnl
4308dnl $RGB_PATH is the option value, used for finding the X11 rgb file.
4309dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given.
4310dnl
4311dnl Most Linux's use this:
4312dnl 	/usr/share/X11/rgb.txt
4313dnl Debian uses this:
4314dnl 	/etc/X11/rgb.txt
4315dnl DragonFlyBSD ports uses this:
4316dnl 	/usr/pkg/lib/X11/rgb.txt
4317dnl FreeBSD ports use these:
4318dnl 	/usr/local/lib/X11/rgb.txt
4319dnl 	/usr/local/share/X11/rgb.txt
4320dnl Mandriva has these:
4321dnl 	/usr/lib/X11/rgb.txt
4322dnl 	/usr/lib64/X11/rgb.txt
4323dnl NetBSD has these
4324dnl 	/usr/X11R7/lib/X11/rgb.txt
4325dnl OpenSolaris uses
4326dnl 	32-bit:
4327dnl 	/usr/X11/etc/X11/rgb.txt
4328dnl 	/usr/X11/share/X11/rgb.txt
4329dnl 	/usr/X11/lib/X11/rgb.txt
4330dnl OSX uses
4331dnl		/opt/local/share/X11/rgb.txt (MacPorts)
4332dnl		/opt/X11/share/X11/rgb.txt (non-ports)
4333dnl	64-bit:
4334dnl 	/usr/X11/etc/X11/rgb.txt
4335dnl 	/usr/X11/share/X11/rgb.txt (perhaps)
4336dnl 	/usr/X11/lib/amd64/X11/rgb.txt
4337dnl Solaris10 uses (in this order):
4338dnl 	/usr/openwin/lib/X11/rgb.txt
4339dnl 	/usr/X11/lib/X11/rgb.txt
4340AC_DEFUN([CF_WITH_X11_RGB],[
4341AC_MSG_CHECKING(for X11 rgb file)
4342AC_ARG_WITH(x11-rgb,
4343	[  --with-x11-rgb=FILE     obtain X11 color definitions from FILE (default: EPREFIX/lib/X11/rgb.txt)],
4344	[RGB_PATH=$withval],
4345	[RGB_PATH=auto])
4346
4347if test "x[$]RGB_PATH" = xauto
4348then
4349	RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
4350	for cf_path in \
4351		/opt/local/share/X11/rgb.txt \
4352		/opt/X11/share/X11/rgb.txt \
4353		/usr/share/X11/rgb.txt \
4354		/usr/X11/share/X11/rgb.txt \
4355		/usr/X11/lib/X11/rgb.txt \
4356		/usr/lib/X11/rgb.txt \
4357		/etc/X11/rgb.txt \
4358		/usr/pkg/lib/X11/rgb.txt \
4359		/usr/X11R7/lib/X11/rgb.txt \
4360		/usr/X11R6/lib/X11/rgb.txt \
4361		/usr/X11R5/lib/X11/rgb.txt \
4362		/usr/X11R4/lib/X11/rgb.txt \
4363		/usr/local/lib/X11/rgb.txt \
4364		/usr/local/share/X11/rgb.txt \
4365		/usr/lib64/X11/rgb.txt
4366	do
4367		if test -f "$cf_path" ; then
4368			RGB_PATH="$cf_path"
4369			break
4370		fi
4371	done
4372else
4373	cf_path=$RGB_PATH
4374	CF_PATH_SYNTAX(cf_path)
4375fi
4376
4377AC_MSG_RESULT($RGB_PATH)
4378AC_SUBST(RGB_PATH)
4379AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt])
4380
4381no_x11_rgb=
4382if test "$RGB_PATH" = no
4383then
4384	no_x11_rgb="#"
4385fi
4386AC_SUBST(no_x11_rgb)
4387])dnl
4388dnl ---------------------------------------------------------------------------
4389dnl CF_XOPEN_CURSES version: 20 updated: 2024/01/07 06:54:12
4390dnl ---------------
4391dnl Test if we should define X/Open source for curses, needed on Digital Unix
4392dnl 4.x, to see the extended functions, but breaks on IRIX 6.x.
4393dnl
4394dnl The getbegyx() check is needed for HPUX, which omits legacy macros such
4395dnl as getbegy().  The latter is better design, but the former is standard.
4396AC_DEFUN([CF_XOPEN_CURSES],
4397[
4398AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
4399AC_CACHE_CHECK(definition to turn on extended curses functions,cf_cv_need_xopen_extension,[
4400cf_cv_need_xopen_extension=unknown
4401AC_TRY_LINK([
4402$ac_includes_default
4403#include <${cf_cv_ncurses_header:-curses.h}>],[
4404#if defined(NCURSES_VERSION_PATCH)
4405#if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403)
4406	#error disallow ncurses versions between 2020/04/03 and 2010/05/01
4407#endif
4408#endif
4409#ifdef NCURSES_WIDECHAR
4410#error prefer to fall-through on the second checks
4411#endif
4412	static char dummy[10];
4413	cchar_t check;
4414	int check2 = curs_set((int)sizeof(check));
4415	long x = winnstr(stdscr, dummy, 5);
4416	int x1, y1;
4417	(void)check2;
4418	getbegyx(stdscr, y1, x1);
4419	(void)x;
4420	(void)y1;
4421	(void)x1;
4422	],
4423	[cf_cv_need_xopen_extension=none],
4424	[
4425	for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR
4426	do
4427		AC_TRY_LINK([
4428#define $cf_try_xopen_extension 1
4429$ac_includes_default
4430#include <${cf_cv_ncurses_header:-curses.h}>],[
4431		static char dummy[10];
4432		cchar_t check;
4433		int check2 = curs_set((int)sizeof(check));
4434		long x = winnstr(stdscr, dummy, 5);
4435		int x1, y1;
4436		getbegyx(stdscr, y1, x1);
4437		(void)check2;
4438		(void)x;
4439		(void)y1;
4440		(void)x1;
4441		],
4442		[cf_cv_need_xopen_extension=$cf_try_xopen_extension; break])
4443	done
4444	])
4445])
4446
4447case "$cf_cv_need_xopen_extension" in
4448(*_*)
4449	CF_APPEND_TEXT(CPPFLAGS,-D$cf_cv_need_xopen_extension)
4450	;;
4451esac
4452
4453])dnl
4454dnl ---------------------------------------------------------------------------
4455dnl CF_XOPEN_SOURCE version: 67 updated: 2023/09/06 18:55:27
4456dnl ---------------
4457dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
4458dnl or adapt to the vendor's definitions to get equivalent functionality,
4459dnl without losing the common non-POSIX features.
4460dnl
4461dnl Parameters:
4462dnl	$1 is the nominal value for _XOPEN_SOURCE
4463dnl	$2 is the nominal value for _POSIX_C_SOURCE
4464dnl
4465dnl The default case prefers _XOPEN_SOURCE over _POSIX_C_SOURCE if the
4466dnl implementation predefines it, because X/Open and most implementations agree
4467dnl that the latter is a legacy or "aligned" value.
4468dnl
4469dnl Because _XOPEN_SOURCE is preferred, if defining _POSIX_C_SOURCE turns
4470dnl that off, then refrain from setting _POSIX_C_SOURCE explicitly.
4471dnl
4472dnl References:
4473dnl https://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html
4474dnl https://docs.oracle.com/cd/E19253-01/816-5175/standards-5/index.html
4475dnl https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
4476AC_DEFUN([CF_XOPEN_SOURCE],[
4477AC_REQUIRE([AC_CANONICAL_HOST])
4478AC_REQUIRE([CF_POSIX_VISIBLE])
4479
4480if test "$cf_cv_posix_visible" = no; then
4481
4482cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
4483cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
4484cf_xopen_source=
4485
4486case "$host_os" in
4487(aix[[4-7]]*)
4488	cf_xopen_source="-D_ALL_SOURCE"
4489	;;
4490(darwin[[0-8]].*)
4491	cf_xopen_source="-D_APPLE_C_SOURCE"
4492	;;
4493(darwin*)
4494	cf_xopen_source="-D_DARWIN_C_SOURCE"
4495	cf_XOPEN_SOURCE=
4496	;;
4497(freebsd*|dragonfly*|midnightbsd*)
4498	# 5.x headers associate
4499	#	_XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
4500	#	_XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
4501	cf_POSIX_C_SOURCE=200112L
4502	cf_XOPEN_SOURCE=600
4503	cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
4504	;;
4505(hpux11*)
4506	cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
4507	;;
4508(hpux*)
4509	cf_xopen_source="-D_HPUX_SOURCE"
4510	;;
4511(irix[[56]].*)
4512	cf_xopen_source="-D_SGI_SOURCE"
4513	cf_XOPEN_SOURCE=
4514	;;
4515(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
4516	CF_GNU_SOURCE($cf_XOPEN_SOURCE)
4517	;;
4518(minix*)
4519	cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
4520	;;
4521(mirbsd*)
4522	# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
4523	cf_XOPEN_SOURCE=
4524	CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
4525	;;
4526(netbsd*)
4527	cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
4528	;;
4529(openbsd[[6-9]]*)
4530	# OpenBSD 6.x has broken locale support, both compile-time and runtime.
4531	# see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
4532	# Abusing the conformance level is a workaround.
4533	AC_MSG_WARN(this system does not provide usable locale support)
4534	cf_xopen_source="-D_BSD_SOURCE"
4535	cf_XOPEN_SOURCE=700
4536	;;
4537(openbsd[[4-5]]*)
4538	# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
4539	cf_xopen_source="-D_BSD_SOURCE"
4540	cf_XOPEN_SOURCE=600
4541	;;
4542(openbsd*)
4543	# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
4544	;;
4545(osf[[45]]*)
4546	cf_xopen_source="-D_OSF_SOURCE"
4547	;;
4548(nto-qnx*)
4549	cf_xopen_source="-D_QNX_SOURCE"
4550	;;
4551(sco*)
4552	# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
4553	;;
4554(solaris2.*)
4555	cf_xopen_source="-D__EXTENSIONS__"
4556	cf_cv_xopen_source=broken
4557	;;
4558(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
4559	cf_XOPEN_SOURCE=
4560	cf_POSIX_C_SOURCE=
4561	;;
4562(*)
4563	CF_TRY_XOPEN_SOURCE
4564	cf_save_xopen_cppflags="$CPPFLAGS"
4565	CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
4566	# Some of these niche implementations use copy/paste, double-check...
4567	if test "$cf_cv_xopen_source" = no ; then
4568		CF_VERBOSE(checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE)
4569		AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[
4570			AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable)
4571			CPPFLAGS="$cf_save_xopen_cppflags"])
4572	fi
4573	;;
4574esac
4575
4576if test -n "$cf_xopen_source" ; then
4577	CF_APPEND_CFLAGS($cf_xopen_source,true)
4578fi
4579
4580dnl In anything but the default case, we may have system-specific setting
4581dnl which is still not guaranteed to provide all of the entrypoints that
4582dnl _XOPEN_SOURCE would yield.
4583if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
4584	AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
4585	AC_TRY_COMPILE([#include <stdlib.h>],[
4586#ifndef _XOPEN_SOURCE
4587#error _XOPEN_SOURCE is not defined
4588#endif],
4589	[cf_XOPEN_SOURCE_set=yes],
4590	[cf_XOPEN_SOURCE_set=no])
4591	AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
4592	if test "$cf_XOPEN_SOURCE_set" = yes
4593	then
4594		AC_TRY_COMPILE([#include <stdlib.h>],[
4595#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
4596#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
4597#endif],
4598		[cf_XOPEN_SOURCE_set_ok=yes],
4599		[cf_XOPEN_SOURCE_set_ok=no])
4600		if test "$cf_XOPEN_SOURCE_set_ok" = no
4601		then
4602			AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
4603		fi
4604	else
4605		CF_TRY_XOPEN_SOURCE
4606	fi
4607fi
4608fi # cf_cv_posix_visible
4609])
4610dnl ---------------------------------------------------------------------------
4611dnl CF_X_ATHENA version: 25 updated: 2023/01/11 04:05:23
4612dnl -----------
4613dnl Check for Xaw (Athena) libraries
4614dnl
4615dnl Sets $cf_x_athena according to the flavor of Xaw which is used.
4616AC_DEFUN([CF_X_ATHENA],
4617[
4618cf_x_athena=${cf_x_athena:-Xaw}
4619
4620AC_MSG_CHECKING(if you want to link with Xaw 3d library)
4621withval=
4622AC_ARG_WITH(Xaw3d,
4623	[  --with-Xaw3d            link with Xaw 3d library])
4624if test "$withval" = yes ; then
4625	cf_x_athena=Xaw3d
4626	AC_MSG_RESULT(yes)
4627else
4628	AC_MSG_RESULT(no)
4629fi
4630
4631AC_MSG_CHECKING(if you want to link with Xaw 3d xft library)
4632withval=
4633AC_ARG_WITH(Xaw3dxft,
4634	[  --with-Xaw3dxft         link with Xaw 3d xft library])
4635if test "$withval" = yes ; then
4636	cf_x_athena=Xaw3dxft
4637	AC_MSG_RESULT(yes)
4638else
4639	AC_MSG_RESULT(no)
4640fi
4641
4642AC_MSG_CHECKING(if you want to link with neXT Athena library)
4643withval=
4644AC_ARG_WITH(neXtaw,
4645	[  --with-neXtaw           link with neXT Athena library])
4646if test "$withval" = yes ; then
4647	cf_x_athena=neXtaw
4648	AC_MSG_RESULT(yes)
4649else
4650	AC_MSG_RESULT(no)
4651fi
4652
4653AC_MSG_CHECKING(if you want to link with Athena-Plus library)
4654withval=
4655AC_ARG_WITH(XawPlus,
4656	[  --with-XawPlus          link with Athena-Plus library])
4657if test "$withval" = yes ; then
4658	cf_x_athena=XawPlus
4659	AC_MSG_RESULT(yes)
4660else
4661	AC_MSG_RESULT(no)
4662fi
4663
4664cf_x_athena_lib=""
4665
4666if test "$PKG_CONFIG" != none ; then
4667	cf_athena_list=
4668	test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6"
4669	for cf_athena_pkg in \
4670		$cf_athena_list \
4671		${cf_x_athena} \
4672		${cf_x_athena}-devel \
4673		lib${cf_x_athena} \
4674		lib${cf_x_athena}-devel
4675	do
4676		CF_TRY_PKG_CONFIG($cf_athena_pkg,[
4677			cf_x_athena_lib="$cf_pkgconfig_libs"
4678			CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
4679			AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
4680
4681			CF_TRIM_X_LIBS
4682
4683AC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[
4684AC_TRY_LINK([
4685$ac_includes_default
4686#include <X11/Xmu/CharSet.h>
4687],[
4688int check = XmuCompareISOLatin1("big", "small");
4689(void)check;
4690],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])])
4691
4692			if test "$cf_cv_xaw_compat" = no
4693			then
4694				# workaround for broken ".pc" files...
4695				case "$cf_x_athena_lib" in
4696				(*-lXmu*)
4697					;;
4698				(*)
4699					CF_VERBOSE(work around broken package)
4700					cf_save_xmu="$LIBS"
4701					cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'`
4702					CF_TRY_PKG_CONFIG(xmu,[
4703							LIBS="$cf_save_xmu"
4704							CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs)
4705						],[
4706							CF_ADD_LIB_AFTER($cf_first_lib,-lXmu)
4707						])
4708					CF_TRIM_X_LIBS
4709					;;
4710				esac
4711			fi
4712
4713			break])
4714	done
4715fi
4716
4717if test -z "$cf_x_athena_lib" ; then
4718	CF_X_EXT
4719	CF_X_TOOLKIT
4720	CF_X_ATHENA_CPPFLAGS($cf_x_athena)
4721	CF_X_ATHENA_LIBS($cf_x_athena)
4722fi
4723])dnl
4724dnl ---------------------------------------------------------------------------
4725dnl CF_X_ATHENA_CPPFLAGS version: 9 updated: 2020/12/31 10:54:15
4726dnl --------------------
4727dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
4728dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
4729AC_DEFUN([CF_X_ATHENA_CPPFLAGS],
4730[
4731AC_REQUIRE([AC_PATH_XTRA])
4732cf_x_athena_root=ifelse([$1],,Xaw,[$1])
4733cf_x_athena_inc=""
4734
4735for cf_path in default \
4736	/usr/contrib/X11R6 \
4737	/usr/contrib/X11R5 \
4738	/usr/lib/X11R5 \
4739	/usr/local
4740do
4741	if test -z "$cf_x_athena_inc" ; then
4742		CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS])
4743		cf_test=X11/$cf_x_athena_root/SimpleMenu.h
4744		if test "$cf_path" != default ; then
4745			CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include)
4746			AC_MSG_CHECKING(for $cf_test in $cf_path)
4747		else
4748			AC_MSG_CHECKING(for $cf_test)
4749		fi
4750		AC_TRY_COMPILE([
4751#include <X11/Intrinsic.h>
4752#include <$cf_test>],[],
4753			[cf_result=yes],
4754			[cf_result=no])
4755		AC_MSG_RESULT($cf_result)
4756		CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS])
4757		if test "$cf_result" = yes ; then
4758			test "$cf_path"  = default && cf_x_athena_inc=default
4759			test "$cf_path" != default && cf_x_athena_inc="$cf_path/include"
4760			break
4761		fi
4762	fi
4763done
4764
4765if test -z "$cf_x_athena_inc" ; then
4766	AC_MSG_WARN([Unable to find Athena header files])
4767elif test "$cf_x_athena_inc" != default ; then
4768	CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc)
4769fi
4770])
4771dnl ---------------------------------------------------------------------------
4772dnl CF_X_ATHENA_LIBS version: 14 updated: 2023/01/11 04:05:23
4773dnl ----------------
4774dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
4775dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
4776AC_DEFUN([CF_X_ATHENA_LIBS],
4777[AC_REQUIRE([CF_X_TOOLKIT])
4778cf_x_athena_root=ifelse([$1],,Xaw,[$1])
4779cf_x_athena_lib=""
4780
4781for cf_path in default \
4782	/usr/contrib/X11R6 \
4783	/usr/contrib/X11R5 \
4784	/usr/lib/X11R5 \
4785	/usr/local
4786do
4787	for cf_lib in \
4788		${cf_x_athena_root} \
4789		${cf_x_athena_root}7 \
4790		${cf_x_athena_root}6
4791	do
4792	for cf_libs in \
4793		"-l$cf_lib -lXmu" \
4794		"-l$cf_lib -lXpm -lXmu" \
4795		"-l${cf_lib}_s -lXmu_s"
4796	do
4797		test -n "$cf_x_athena_lib" && break
4798
4799		CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_LIBS])
4800		cf_test=XawSimpleMenuAddGlobalActions
4801		test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs"
4802		CF_ADD_LIBS($cf_libs)
4803		AC_MSG_CHECKING(for $cf_test in $cf_libs)
4804		AC_TRY_LINK([
4805$ac_includes_default
4806#include <X11/Intrinsic.h>
4807#include <X11/$cf_x_athena_root/SimpleMenu.h>
4808],[
4809$cf_test((XtAppContext) 0)],
4810			[cf_result=yes],
4811			[cf_result=no])
4812		AC_MSG_RESULT($cf_result)
4813		CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_LIBS])
4814
4815		if test "$cf_result" = yes ; then
4816			cf_x_athena_lib="$cf_libs"
4817			break
4818		fi
4819	done # cf_libs
4820		test -n "$cf_x_athena_lib" && break
4821	done # cf_lib
4822done
4823
4824if test -z "$cf_x_athena_lib" ; then
4825	AC_MSG_ERROR(
4826[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program])
4827fi
4828
4829CF_ADD_LIBS($cf_x_athena_lib)
4830CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
4831AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
4832])
4833dnl ---------------------------------------------------------------------------
4834dnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05
4835dnl --------
4836AC_DEFUN([CF_X_EXT],[
4837CF_TRY_PKG_CONFIG(Xext,,[
4838	AC_CHECK_LIB(Xext,XextCreateExtension,
4839		[CF_ADD_LIB(Xext)])])
4840])dnl
4841dnl ---------------------------------------------------------------------------
4842dnl CF_X_TOOLKIT version: 27 updated: 2023/01/11 04:05:23
4843dnl ------------
4844dnl Check for X Toolkit libraries
4845AC_DEFUN([CF_X_TOOLKIT],
4846[
4847AC_REQUIRE([AC_PATH_XTRA])
4848AC_REQUIRE([CF_CHECK_CACHE])
4849
4850# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and
4851# in some cases has installed dummy files in the former, other cases replaced
4852# it with a link to the new location).  This complicates the configure script.
4853# Check for that pitfall, and recover using pkg-config
4854#
4855# If none of these are set, the configuration is almost certainly broken.
4856if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}"
4857then
4858	CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)])
4859	CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)])
4860	CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)])
4861	CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)])
4862else
4863	LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS"
4864fi
4865
4866cf_have_X_LIBS=no
4867
4868CF_TRY_PKG_CONFIG(xt,[
4869
4870	case "x$LIBS" in
4871	(*-lX11*)
4872		;;
4873	(*)
4874# we have an "xt" package, but it may omit Xt's dependency on X11
4875AC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[
4876AC_TRY_LINK([
4877$ac_includes_default
4878#include <X11/Xlib.h>
4879],[
4880	int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0);
4881	int rc2 = XClearWindow((Display*) 0, (Window) 0);
4882	int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0);
4883	int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0);
4884],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])])
4885		if test "$cf_cv_xt_x11_compat" = no
4886		then
4887			CF_VERBOSE(work around broken X11 dependency)
4888			# 2010/11/19 - good enough until a working Xt on Xcb is delivered.
4889			CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)])
4890		fi
4891		;;
4892	esac
4893
4894AC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[
4895AC_TRY_LINK([
4896$ac_includes_default
4897#include <X11/Shell.h>
4898],[int num = IceConnectionNumber(0); (void) num
4899],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])])
4900
4901	if test "$cf_cv_xt_ice_compat" = no
4902	then
4903		# workaround for broken ".pc" files used for X Toolkit.
4904		case "x$X_PRE_LIBS" in
4905		(*-lICE*)
4906			case "x$LIBS" in
4907			(*-lICE*)
4908				;;
4909			(*)
4910				CF_VERBOSE(work around broken ICE dependency)
4911				CF_TRY_PKG_CONFIG(ice,
4912					[CF_TRY_PKG_CONFIG(sm)],
4913					[CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)])
4914				;;
4915			esac
4916			;;
4917		esac
4918	fi
4919
4920	cf_have_X_LIBS=yes
4921],[
4922
4923	LDFLAGS="$X_LIBS $LDFLAGS"
4924	CF_CHECK_CFLAGS($X_CFLAGS)
4925
4926	AC_CHECK_FUNC(XOpenDisplay,,[
4927	AC_CHECK_LIB(X11,XOpenDisplay,
4928		[CF_ADD_LIB(X11)])])
4929
4930	AC_CHECK_FUNC(XtAppInitialize,,[
4931	AC_CHECK_LIB(Xt, XtAppInitialize,
4932		[AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library])
4933		 cf_have_X_LIBS=Xt
4934		 LIBS="-lXt $LIBS"])])
4935])
4936
4937if test "$cf_have_X_LIBS" = no ; then
4938	AC_MSG_WARN(
4939[Unable to successfully link X Toolkit library (-lXt) with
4940test program.  You will have to check and add the proper libraries by hand
4941to makefile.])
4942fi
4943])dnl
4944dnl ---------------------------------------------------------------------------
4945dnl CF__CURSES_DATA version: 3 updated: 2021/01/04 19:45:09
4946dnl ---------------
4947dnl Attempt to make a copy of a curses data item.  This is needed in the
4948dnl check-data configure tests when using ncurses, because the symbol may be
4949dnl actually a function return-value.  That could happen if the linker is
4950dnl broken (does not resolve data-only references), or if ncurses is configured
4951dnl to support re-entrant code.
4952dnl $1 = target
4953dnl $2 = source
4954define([CF__CURSES_DATA],[
4955#if defined($2) && ((defined(NCURSES_WRAPPED_VAR) && (NCURSES_VERSION_PATCH < 20200208)) || defined(NCURSES_BROKEN_LINKER) || defined(NCURSES_REENTRANT))
4956	const void *$1 = (const void *)($2);
4957#else
4958	const void *$1 = &($2);
4959#endif
4960	fprintf(stderr, "testing linkage of $2:%p\\n", (const void *)$1);
4961])dnl
4962dnl ---------------------------------------------------------------------------
4963dnl CF__CURSES_HEAD version: 2 updated: 2010/10/23 15:54:49
4964dnl ---------------
4965dnl Define a reusable chunk which includes <curses.h> and <term.h> when they
4966dnl are both available.
4967define([CF__CURSES_HEAD],[
4968#ifdef HAVE_XCURSES
4969#include <xcurses.h>
4970char * XCursesProgramName = "test";
4971#else
4972#include <${cf_cv_ncurses_header:-curses.h}>
4973#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
4974#include <ncursesw/term.h>
4975#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
4976#include <ncurses/term.h>
4977#elif defined(HAVE_TERM_H)
4978#include <term.h>
4979#endif
4980#endif
4981])
4982dnl ---------------------------------------------------------------------------
4983dnl CF__XOPEN_SOURCE_BODY version: 2 updated: 2023/02/18 17:41:25
4984dnl ---------------------
4985dnl body of test when test-compiling for _XOPEN_SOURCE check
4986define([CF__XOPEN_SOURCE_BODY],
4987[
4988#ifndef _XOPEN_SOURCE
4989#error _XOPEN_SOURCE is not defined
4990#endif
4991])
4992dnl ---------------------------------------------------------------------------
4993dnl CF__XOPEN_SOURCE_HEAD version: 2 updated: 2023/02/18 17:41:25
4994dnl ---------------------
4995dnl headers to include when test-compiling for _XOPEN_SOURCE check
4996define([CF__XOPEN_SOURCE_HEAD],
4997[
4998$ac_includes_default
4999])
5000