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