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