]> ncurses.scripts.mit.edu Git - ncurses.git/blob - test/aclocal.m4
6836f43893d141f58727eb61699db413063f2094
[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.202 2021/10/11 00:18:09 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: 12 updated: 2021/10/10 20:18:09
3185 dnl -------------
3186 dnl Check for the package-config program, unless disabled by command-line.
3187 dnl
3188 dnl Sets $PKG_CONFIG to the pathname of the pkg-config program.
3189 AC_DEFUN([CF_PKG_CONFIG],
3190 [
3191 AC_MSG_CHECKING(if you want to use pkg-config)
3192 AC_ARG_WITH(pkg-config,
3193         [  --with-pkg-config{=path} enable/disable use of pkg-config],
3194         [cf_pkg_config=$withval],
3195         [cf_pkg_config=yes])
3196 AC_MSG_RESULT($cf_pkg_config)
3197
3198 case "$cf_pkg_config" in
3199 (no)
3200         PKG_CONFIG=none
3201         ;;
3202 (yes)
3203         CF_ACVERSION_CHECK(2.52,
3204                 [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
3205                 [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
3206         ;;
3207 (*)
3208         PKG_CONFIG=$withval
3209         ;;
3210 esac
3211
3212 test -z "$PKG_CONFIG" && PKG_CONFIG=none
3213 if test "$PKG_CONFIG" != none ; then
3214         CF_PATH_SYNTAX(PKG_CONFIG)
3215 elif test "x$cf_pkg_config" != xno ; then
3216         AC_MSG_WARN(pkg-config is not installed)
3217 fi
3218
3219 AC_SUBST(PKG_CONFIG)
3220 ])dnl
3221 dnl ---------------------------------------------------------------------------
3222 dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
3223 dnl -----------------
3224 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
3225 dnl
3226 dnl     POSIX.1-1990                            _POSIX_SOURCE
3227 dnl     POSIX.1-1990 and                        _POSIX_SOURCE and
3228 dnl             POSIX.2-1992 C-Language                 _POSIX_C_SOURCE=2
3229 dnl             Bindings Option
3230 dnl     POSIX.1b-1993                           _POSIX_C_SOURCE=199309L
3231 dnl     POSIX.1c-1996                           _POSIX_C_SOURCE=199506L
3232 dnl     X/Open 2000                             _POSIX_C_SOURCE=200112L
3233 dnl
3234 dnl Parameters:
3235 dnl     $1 is the nominal value for _POSIX_C_SOURCE
3236 AC_DEFUN([CF_POSIX_C_SOURCE],
3237 [AC_REQUIRE([CF_POSIX_VISIBLE])dnl
3238
3239 if test "$cf_cv_posix_visible" = no; then
3240
3241 cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
3242
3243 cf_save_CFLAGS="$CFLAGS"
3244 cf_save_CPPFLAGS="$CPPFLAGS"
3245
3246 CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
3247 CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
3248
3249 AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
3250         CF_MSG_LOG(if the symbol is already defined go no further)
3251         AC_TRY_COMPILE([#include <sys/types.h>],[
3252 #ifndef _POSIX_C_SOURCE
3253 make an error
3254 #endif],
3255         [cf_cv_posix_c_source=no],
3256         [cf_want_posix_source=no
3257          case .$cf_POSIX_C_SOURCE in
3258          (.[[12]]??*)
3259                 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
3260                 ;;
3261          (.2)
3262                 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
3263                 cf_want_posix_source=yes
3264                 ;;
3265          (.*)
3266                 cf_want_posix_source=yes
3267                 ;;
3268          esac
3269          if test "$cf_want_posix_source" = yes ; then
3270                 AC_TRY_COMPILE([#include <sys/types.h>],[
3271 #ifdef _POSIX_SOURCE
3272 make an error
3273 #endif],[],
3274                 cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
3275          fi
3276          CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
3277          CFLAGS="$cf_trim_CFLAGS"
3278          CPPFLAGS="$cf_trim_CPPFLAGS"
3279          CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
3280          CF_MSG_LOG(if the second compile does not leave our definition intact error)
3281          AC_TRY_COMPILE([#include <sys/types.h>],[
3282 #ifndef _POSIX_C_SOURCE
3283 make an error
3284 #endif],,
3285          [cf_cv_posix_c_source=no])
3286          CFLAGS="$cf_save_CFLAGS"
3287          CPPFLAGS="$cf_save_CPPFLAGS"
3288         ])
3289 ])
3290
3291 if test "$cf_cv_posix_c_source" != no ; then
3292         CFLAGS="$cf_trim_CFLAGS"
3293         CPPFLAGS="$cf_trim_CPPFLAGS"
3294         CF_ADD_CFLAGS($cf_cv_posix_c_source)
3295 fi
3296
3297 fi # cf_cv_posix_visible
3298
3299 ])dnl
3300 dnl ---------------------------------------------------------------------------
3301 dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
3302 dnl ----------------
3303 dnl POSIX documents test-macros which an application may set before any system
3304 dnl headers are included to make features available.
3305 dnl
3306 dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
3307 dnl diverged from POSIX in 2002 by setting symbols which make all of the most
3308 dnl recent features visible in the system header files unless the application
3309 dnl overrides the corresponding test-macros.  Doing that introduces portability
3310 dnl problems.
3311 dnl
3312 dnl This macro makes a special check for the symbols used for this, to avoid a
3313 dnl conflicting definition.
3314 AC_DEFUN([CF_POSIX_VISIBLE],
3315 [
3316 AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
3317 AC_TRY_COMPILE([#include <stdio.h>],[
3318 #if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
3319         && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
3320         && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
3321         && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
3322 #error conflicting symbols found
3323 #endif
3324 ],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
3325 ])
3326 ])dnl
3327 dnl ---------------------------------------------------------------------------
3328 dnl CF_PRG_RULES version: 2 updated: 2021/01/01 13:31:04
3329 dnl ------------
3330 dnl Append definitions and rules for the given programs to the subdirectory
3331 dnl Makefiles, and the recursion rule for the top-level Makefile.
3332 dnl
3333 dnl parameters
3334 dnl     $1 = script to run
3335 dnl     $2 = list of subdirectories
3336 dnl
3337 dnl variables
3338 dnl     $AWK
3339 AC_DEFUN([CF_PRG_RULES],
3340 [
3341 for cf_dir in $2
3342 do
3343         if test ! -d "$srcdir/$cf_dir" ; then
3344                 continue
3345         elif test -f "$srcdir/$cf_dir/programs" ; then
3346                 $AWK -f $1 "$srcdir/$cf_dir/programs" >>$cf_dir/Makefile
3347         fi
3348 done
3349
3350 ])dnl
3351 dnl ---------------------------------------------------------------------------
3352 dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
3353 dnl ----------
3354 dnl standard check for CC, plus followup sanity checks
3355 dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
3356 AC_DEFUN([CF_PROG_CC],[
3357 CF_ACVERSION_CHECK(2.53,
3358         [AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
3359          AC_REQUIRE([AC_PROG_CC])],
3360         [])
3361 ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
3362 CF_GCC_VERSION
3363 CF_ACVERSION_CHECK(2.52,
3364         [AC_PROG_CC_STDC],
3365         [CF_ANSI_CC_REQD])
3366 CF_CC_ENV_FLAGS
3367 ])dnl
3368 dnl ---------------------------------------------------------------------------
3369 dnl CF_PROG_INSTALL version: 10 updated: 2021/01/04 19:33:05
3370 dnl ---------------
3371 dnl Force $INSTALL to be an absolute-path.  Otherwise, edit_man.sh and the
3372 dnl misc/tabset install won't work properly.  Usually this happens only when
3373 dnl using the fallback mkinstalldirs script
3374 AC_DEFUN([CF_PROG_INSTALL],
3375 [AC_PROG_INSTALL
3376 case $INSTALL in
3377 (/*)
3378         ;;
3379 (*)
3380         CF_DIRNAME(cf_dir,$INSTALL)
3381         test -z "$cf_dir" && cf_dir=.
3382         INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`"
3383         ;;
3384 esac
3385 ])dnl
3386 dnl ---------------------------------------------------------------------------
3387 dnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37
3388 dnl ------------
3389 AC_DEFUN([CF_PROG_LINT],
3390 [
3391 AC_CHECK_PROGS(LINT, lint cppcheck splint)
3392 case "x$LINT" in
3393 (xcppcheck|x*/cppcheck)
3394         test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
3395         ;;
3396 esac
3397 AC_SUBST(LINT_OPTS)
3398 ])dnl
3399 dnl ---------------------------------------------------------------------------
3400 dnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40
3401 dnl ----------------
3402 dnl Remove a given option from CFLAGS/CPPFLAGS
3403 dnl $1 = option to remove
3404 dnl $2 = variable to update
3405 dnl $3 = nonempty to allow verbose message
3406 define([CF_REMOVE_CFLAGS],
3407 [
3408 cf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'`
3409 while true
3410 do
3411         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'`
3412         test "[$]$2" != "$cf_old_cflag" || break
3413         ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)])
3414         $2="$cf_old_cflag"
3415 done
3416 ])dnl
3417 dnl ---------------------------------------------------------------------------
3418 dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
3419 dnl ----------------
3420 dnl Remove all -U and -D options that refer to the given symbol from a list
3421 dnl of C compiler options.  This works around the problem that not all
3422 dnl compilers process -U and -D options from left-to-right, so a -U option
3423 dnl cannot be used to cancel the effect of a preceding -D option.
3424 dnl
3425 dnl $1 = target (which could be the same as the source variable)
3426 dnl $2 = source (including '$')
3427 dnl $3 = symbol to remove
3428 define([CF_REMOVE_DEFINE],
3429 [
3430 $1=`echo "$2" | \
3431         sed     -e 's/-[[UD]]'"$3"'\(=[[^       ]]*\)\?[[       ]]/ /g' \
3432                 -e 's/-[[UD]]'"$3"'\(=[[^       ]]*\)\?[$]//g'`
3433 ])dnl
3434 dnl ---------------------------------------------------------------------------
3435 dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
3436 dnl ---------------------
3437 dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
3438 dnl $1 = name of current macro
3439 define([CF_RESTORE_XTRA_FLAGS],
3440 [
3441 LIBS="$cf_save_LIBS_$1"
3442 CFLAGS="$cf_save_CFLAGS_$1"
3443 CPPFLAGS="$cf_save_CPPFLAGS_$1"
3444 ])dnl
3445 dnl ---------------------------------------------------------------------------
3446 dnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50
3447 dnl -------------
3448 AC_DEFUN([CF_RPATH_HACK],
3449 [AC_REQUIRE([AC_PROG_FGREP])dnl
3450 AC_REQUIRE([CF_LD_RPATH_OPT])dnl
3451
3452 AC_MSG_CHECKING(for updated LDFLAGS)
3453 if test -n "$LD_RPATH_OPT" ; then
3454         AC_MSG_RESULT(maybe)
3455
3456         AC_CHECK_PROGS(cf_ldd_prog,ldd,no)
3457         cf_rpath_list="/usr/lib /lib"
3458         if test "$cf_ldd_prog" != no
3459         then
3460                 cf_rpath_oops=
3461
3462 AC_TRY_LINK([#include <stdio.h>],
3463                 [printf("Hello");],
3464                 [cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
3465                  cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[        ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`])
3466
3467                 # If we passed the link-test, but get a "not found" on a given library,
3468                 # this could be due to inept reconfiguration of gcc to make it only
3469                 # partly honor /usr/local/lib (or whatever).  Sometimes this behavior
3470                 # is intentional, e.g., installing gcc in /usr/bin and suppressing the
3471                 # /usr/local libraries.
3472                 if test -n "$cf_rpath_oops"
3473                 then
3474                         for cf_rpath_src in $cf_rpath_oops
3475                         do
3476                                 for cf_rpath_dir in \
3477                                         /usr/local \
3478                                         /usr/pkg \
3479                                         /opt/sfw
3480                                 do
3481                                         if test -f "$cf_rpath_dir/lib/$cf_rpath_src"
3482                                         then
3483                                                 CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src)
3484                                                 LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
3485                                                 break
3486                                         fi
3487                                 done
3488                         done
3489                 fi
3490         fi
3491
3492         CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS)
3493
3494         CF_RPATH_HACK_2(LDFLAGS)
3495         CF_RPATH_HACK_2(LIBS)
3496
3497         CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS)
3498 else
3499         AC_MSG_RESULT(no)
3500 fi
3501 AC_SUBST(EXTRA_LDFLAGS)
3502 ])dnl
3503 dnl ---------------------------------------------------------------------------
3504 dnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04
3505 dnl ---------------
3506 dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to
3507 dnl EXTRA_LDFLAGS for each -L option found.
3508 dnl
3509 dnl $cf_rpath_list contains a list of directories to ignore.
3510 dnl
3511 dnl $1 = variable name to update.  The LDFLAGS variable should be the only one,
3512 dnl      but LIBS often has misplaced -L options.
3513 AC_DEFUN([CF_RPATH_HACK_2],
3514 [
3515 CF_VERBOSE(...checking $1 [$]$1)
3516
3517 cf_rpath_dst=
3518 for cf_rpath_src in [$]$1
3519 do
3520         case "$cf_rpath_src" in
3521         (-L*)
3522
3523                 # check if this refers to a directory which we will ignore
3524                 cf_rpath_skip=no
3525                 if test -n "$cf_rpath_list"
3526                 then
3527                         for cf_rpath_item in $cf_rpath_list
3528                         do
3529                                 if test "x$cf_rpath_src" = "x-L$cf_rpath_item"
3530                                 then
3531                                         cf_rpath_skip=yes
3532                                         break
3533                                 fi
3534                         done
3535                 fi
3536
3537                 if test "$cf_rpath_skip" = no
3538                 then
3539                         # transform the option
3540                         if test "$LD_RPATH_OPT" = "-R " ; then
3541                                 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"`
3542                         else
3543                                 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"`
3544                         fi
3545
3546                         # if we have not already added this, add it now
3547                         cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"`
3548                         if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS"
3549                         then
3550                                 CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp)
3551                                 EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
3552                         fi
3553                 fi
3554                 ;;
3555         esac
3556         cf_rpath_dst="$cf_rpath_dst $cf_rpath_src"
3557 done
3558 $1=$cf_rpath_dst
3559
3560 CF_VERBOSE(...checked $1 [$]$1)
3561 AC_SUBST(EXTRA_LDFLAGS)
3562 ])dnl
3563 dnl ---------------------------------------------------------------------------
3564 dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
3565 dnl ------------------
3566 dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
3567 dnl and libraries which do not update those variables.
3568 dnl
3569 dnl $1 = name of current macro
3570 define([CF_SAVE_XTRA_FLAGS],
3571 [
3572 cf_save_LIBS_$1="$LIBS"
3573 cf_save_CFLAGS_$1="$CFLAGS"
3574 cf_save_CPPFLAGS_$1="$CPPFLAGS"
3575 LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
3576 for cf_X_CFLAGS in $X_CFLAGS
3577 do
3578         case "x$cf_X_CFLAGS" in
3579         x-[[IUD]]*)
3580                 CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
3581                 ;;
3582         *)
3583                 CFLAGS="$CFLAGS $cf_X_CFLAGS"
3584                 ;;
3585         esac
3586 done
3587 ])dnl
3588 dnl ---------------------------------------------------------------------------
3589 dnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04
3590 dnl -----------
3591 dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
3592 dnl programs need this test).
3593 dnl
3594 dnl This is really a Mac OS X 10.4.3 workaround.  Defining _POSIX_C_SOURCE
3595 dnl forces SIGWINCH to be undefined (breaks xterm, ncurses).  Oddly, the struct
3596 dnl winsize declaration is left alone - we may revisit this if Apple choose to
3597 dnl break that part of the interface as well.
3598 AC_DEFUN([CF_SIGWINCH],
3599 [
3600 AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[
3601         AC_TRY_COMPILE([
3602 #include <sys/types.h>
3603 #include <sys/signal.h>
3604 ],[int x = SIGWINCH; (void)x],
3605         [cf_cv_define_sigwinch=yes],
3606         [AC_TRY_COMPILE([
3607 #undef _XOPEN_SOURCE
3608 #undef _POSIX_SOURCE
3609 #undef _POSIX_C_SOURCE
3610 #include <sys/types.h>
3611 #include <sys/signal.h>
3612 ],[int x = SIGWINCH; (void)x],
3613         [cf_cv_define_sigwinch=maybe],
3614         [cf_cv_define_sigwinch=no])
3615 ])
3616 ])
3617
3618 if test "$cf_cv_define_sigwinch" = maybe ; then
3619 AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[
3620 cf_cv_fixup_sigwinch=unknown
3621 cf_sigwinch=32
3622 while test "$cf_sigwinch" != 1
3623 do
3624         AC_TRY_COMPILE([
3625 #undef _XOPEN_SOURCE
3626 #undef _POSIX_SOURCE
3627 #undef _POSIX_C_SOURCE
3628 #include <sys/types.h>
3629 #include <sys/signal.h>
3630 ],[
3631 #if SIGWINCH != $cf_sigwinch
3632 make an error
3633 #endif
3634 int x = SIGWINCH; (void)x],
3635         [cf_cv_fixup_sigwinch=$cf_sigwinch
3636          break])
3637
3638 cf_sigwinch="`expr "$cf_sigwinch" - 1`"
3639 done
3640 ])
3641
3642         if test "$cf_cv_fixup_sigwinch" != unknown ; then
3643                 CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch"
3644         fi
3645 fi
3646 ])dnl
3647 dnl ---------------------------------------------------------------------------
3648 dnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47
3649 dnl ---------------
3650 dnl signal handler, but there are some gcc dependencies in that recommendation.
3651 dnl Try anyway.
3652 AC_DEFUN([CF_SIG_ATOMIC_T],
3653 [
3654 AC_MSG_CHECKING(for signal global datatype)
3655 AC_CACHE_VAL(cf_cv_sig_atomic_t,[
3656         for cf_type in \
3657                 "volatile sig_atomic_t" \
3658                 "sig_atomic_t" \
3659                 "int"
3660         do
3661         AC_TRY_COMPILE([
3662 #include <sys/types.h>
3663 #include <signal.h>
3664 #include <stdio.h>
3665
3666 extern $cf_type x;
3667 $cf_type x;
3668 static void handler(int sig)
3669 {
3670         (void)sig;
3671         x = 5;
3672 }],
3673                 [signal(SIGINT, handler);
3674                  x = 1],
3675                 [cf_cv_sig_atomic_t=$cf_type],
3676                 [cf_cv_sig_atomic_t=no])
3677                 test "$cf_cv_sig_atomic_t" != no && break
3678         done
3679         ])
3680 AC_MSG_RESULT($cf_cv_sig_atomic_t)
3681 test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
3682 ])dnl
3683 dnl ---------------------------------------------------------------------------
3684 dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
3685 dnl --------------
3686 dnl Construct a search-list for a nonstandard header/lib-file
3687 dnl     $1 = the variable to return as result
3688 dnl     $2 = the package name
3689 dnl     $3 = the subdirectory, e.g., bin, include or lib
3690 AC_DEFUN([CF_SUBDIR_PATH],
3691 [
3692 $1=
3693
3694 CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
3695
3696 for cf_subdir_prefix in \
3697         /usr \
3698         /usr/local \
3699         /usr/pkg \
3700         /opt \
3701         /opt/local \
3702         [$]HOME
3703 do
3704         CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
3705 done
3706 ])dnl
3707 dnl ---------------------------------------------------------------------------
3708 dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57
3709 dnl ------------------
3710 dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
3711 dnl older SCO configurations.
3712 AC_DEFUN([CF_SYS_TIME_SELECT],
3713 [
3714 AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
3715 AC_CACHE_VAL(cf_cv_sys_time_select,[
3716 AC_TRY_COMPILE([
3717 #include <sys/types.h>
3718 #ifdef HAVE_SYS_TIME_H
3719 #include <sys/time.h>
3720 #endif
3721 #ifdef HAVE_SYS_SELECT_H
3722 #include <sys/select.h>
3723 #endif
3724 ],[],[cf_cv_sys_time_select=yes],
3725          [cf_cv_sys_time_select=no])
3726          ])
3727 AC_MSG_RESULT($cf_cv_sys_time_select)
3728 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>])
3729 ])dnl
3730 dnl ---------------------------------------------------------------------------
3731 dnl CF_TERM_HEADER version: 6 updated: 2021/01/02 09:31:20
3732 dnl --------------
3733 dnl Look for term.h, which is part of X/Open curses.  It defines the interface
3734 dnl to terminfo database.  Usually it is in the same include-path as curses.h,
3735 dnl but some packagers change this, breaking various applications.
3736 AC_DEFUN([CF_TERM_HEADER],[
3737 AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[
3738 case "${cf_cv_ncurses_header}" in
3739 (*/ncurses.h|*/ncursesw.h)
3740         cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'`
3741         ;;
3742 (*)
3743         cf_term_header=term.h
3744         ;;
3745 esac
3746
3747 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
3748 do
3749 AC_TRY_COMPILE([#include <stdio.h>
3750 #include <${cf_cv_ncurses_header:-curses.h}>
3751 #include <$cf_test>
3752 ],[int x = auto_left_margin; (void)x],[
3753         cf_cv_term_header="$cf_test"],[
3754         cf_cv_term_header=unknown
3755         ])
3756         test "$cf_cv_term_header" != unknown && break
3757 done
3758 ])
3759
3760 # Set definitions to allow ifdef'ing to accommodate subdirectories
3761
3762 case "$cf_cv_term_header" in
3763 (*term.h)
3764         AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
3765         ;;
3766 esac
3767
3768 case "$cf_cv_term_header" in
3769 (ncurses/term.h)
3770         AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
3771         ;;
3772 (ncursesw/term.h)
3773         AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
3774         ;;
3775 esac
3776 ])dnl
3777 dnl ---------------------------------------------------------------------------
3778 dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32
3779 dnl ---------------
3780 dnl Define a top_builddir symbol, for applications that need an absolute path.
3781 AC_DEFUN([CF_TOP_BUILDDIR],
3782 [
3783 top_builddir=ifelse($1,,`pwd`,$1)
3784 AC_SUBST(top_builddir)
3785 ])dnl
3786 dnl ---------------------------------------------------------------------------
3787 dnl CF_TPUTS_PROTO version: 4 updated: 2021/01/04 19:45:09
3788 dnl --------------
3789 dnl Check for type of function-pointer passed to tputs.  Some old
3790 dnl implementations used functions that had different prototypes, making it
3791 dnl hard to compile portable programs using tputs.
3792 AC_DEFUN([CF_TPUTS_PROTO],[
3793 CF_CURSES_FUNCS(tputs)
3794 if test "x$cf_cv_func_tputs" = xyes
3795 then
3796         cf_done=no
3797         for cf_arg in int char
3798         do
3799                 for cf_ret in int void
3800                 do
3801                         if test "$cf_ret" = void
3802                         then
3803                                 cf_return="/* nothing */"
3804                         else
3805                                 cf_return="return value"
3806                         fi
3807                         AC_TRY_COMPILE([
3808 #include <${cf_cv_ncurses_header:-curses.h}>
3809 #include <$cf_cv_term_header>
3810
3811 static $cf_ret outc($cf_arg value) { $cf_return; }
3812 ],[
3813         tputs("hello", 0, outc);
3814         ${cf_cv_main_return:-return}(0);
3815 ],[
3816                 CF_VERBOSE([prototype $cf_ret func($cf_arg value)])
3817                 cat >>confdefs.h <<EOF
3818 #define TPUTS_ARG               $cf_arg
3819 #define TPUTS_PROTO(func,value) $cf_ret func(TPUTS_ARG value)
3820 #define TPUTS_RETURN(value)     $cf_return
3821 EOF
3822                 cf_done=yes
3823                 break
3824 ])
3825                 done
3826                 test "$cf_done" = yes && break
3827         done
3828 fi
3829 ])dnl
3830 dnl ---------------------------------------------------------------------------
3831 dnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00
3832 dnl --------------
3833 dnl Trim extra base X libraries added as a workaround for inconsistent library
3834 dnl dependencies returned by "new" pkg-config files.
3835 AC_DEFUN([CF_TRIM_X_LIBS],[
3836         for cf_trim_lib in Xmu Xt X11
3837         do
3838                 case "$LIBS" in
3839                 (*-l$cf_trim_lib\ *-l$cf_trim_lib*)
3840                         LIBS=`echo "$LIBS " | sed -e 's/  / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'`
3841                         CF_VERBOSE(..trimmed $LIBS)
3842                         ;;
3843                 esac
3844         done
3845 ])
3846 dnl ---------------------------------------------------------------------------
3847 dnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15
3848 dnl -----------------
3849 dnl This is a simple wrapper to use for pkg-config, for libraries which may be
3850 dnl available in that form.
3851 dnl
3852 dnl $1 = package name, which may be a shell variable
3853 dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS
3854 dnl $3 = logic to use if pkg-config does not have the package
3855 AC_DEFUN([CF_TRY_PKG_CONFIG],[
3856 AC_REQUIRE([CF_PKG_CONFIG])
3857
3858 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then
3859         CF_VERBOSE(found package $1)
3860         cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`"
3861         cf_pkgconfig_libs="`$PKG_CONFIG --libs   "$1" 2>/dev/null`"
3862         CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs)
3863         CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs)
3864         CF_ADD_CFLAGS($cf_pkgconfig_incs)
3865         CF_ADD_LIBS($cf_pkgconfig_libs)
3866         ifelse([$2],,:,[$2])
3867 else
3868         cf_pkgconfig_incs=
3869         cf_pkgconfig_libs=
3870         ifelse([$3],,:,[$3])
3871 fi
3872 ])
3873 dnl ---------------------------------------------------------------------------
3874 dnl CF_TRY_XOPEN_SOURCE version: 3 updated: 2021/08/28 15:20:37
3875 dnl -------------------
3876 dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
3877 dnl can define it successfully.
3878 AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
3879 AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
3880         AC_TRY_COMPILE([
3881 #include <stdlib.h>
3882 #include <string.h>
3883 #include <sys/types.h>
3884 ],[
3885 #ifndef _XOPEN_SOURCE
3886 make an error
3887 #endif],
3888         [cf_cv_xopen_source=no],
3889         [cf_save="$CPPFLAGS"
3890          CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
3891          AC_TRY_COMPILE([
3892 #include <stdlib.h>
3893 #include <string.h>
3894 #include <sys/types.h>
3895 ],[
3896 #ifdef _XOPEN_SOURCE
3897 make an error
3898 #endif],
3899         [cf_cv_xopen_source=no],
3900         [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
3901         CPPFLAGS="$cf_save"
3902         ])
3903 ])
3904
3905 if test "$cf_cv_xopen_source" != no ; then
3906         CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
3907         CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
3908         cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
3909         CF_APPEND_CFLAGS($cf_temp_xopen_source)
3910 fi
3911 ])
3912 dnl ---------------------------------------------------------------------------
3913 dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
3914 dnl --------
3915 dnl Make an uppercase version of a variable
3916 dnl $1=uppercase($2)
3917 AC_DEFUN([CF_UPPER],
3918 [
3919 $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
3920 ])dnl
3921 dnl ---------------------------------------------------------------------------
3922 dnl CF_UTF8_LIB version: 9 updated: 2021/05/19 19:35:25
3923 dnl -----------
3924 dnl Check for multibyte support, and if not found, utf8 compatibility library
3925 AC_DEFUN([CF_UTF8_LIB],
3926 [
3927 AC_HAVE_HEADERS(wchar.h)
3928 AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
3929         cf_save_LIBS="$LIBS"
3930         AC_TRY_LINK([
3931 #include <stdlib.h>
3932 #include <stdio.h>
3933 #ifdef HAVE_WCHAR_H
3934 #include <wchar.h>
3935 #endif
3936 ],[putwc(0,0);],
3937         [cf_cv_utf8_lib=yes],
3938         [CF_FIND_LINKAGE([
3939 #include <libutf8.h>],[putwc(0,0);],utf8,
3940                 [cf_cv_utf8_lib=add-on],
3941                 [cf_cv_utf8_lib=no])
3942 ])])
3943
3944 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
3945 # ncurses/ncursesw:
3946 if test "$cf_cv_utf8_lib" = "add-on" ; then
3947         AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h])
3948         CF_ADD_INCDIR($cf_cv_header_path_utf8)
3949         CF_ADD_LIBDIR($cf_cv_library_path_utf8)
3950         CF_ADD_LIBS($cf_cv_library_file_utf8)
3951 fi
3952 ])dnl
3953 dnl ---------------------------------------------------------------------------
3954 dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
3955 dnl ----------
3956 dnl Use AC_VERBOSE w/o the warnings
3957 AC_DEFUN([CF_VERBOSE],
3958 [test -n "$verbose" && echo "   $1" 1>&AC_FD_MSG
3959 CF_MSG_LOG([$1])
3960 ])dnl
3961 dnl ---------------------------------------------------------------------------
3962 dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
3963 dnl -------------
3964 dnl Check if type wide-character type $1 is declared, and if so, which header
3965 dnl file is needed.  The second parameter is used to set a shell variable when
3966 dnl the type is not found.  The first parameter sets a shell variable for the
3967 dnl opposite sense.
3968 AC_DEFUN([CF_WCHAR_TYPE],
3969 [
3970 # This is needed on Tru64 5.0 to declare $1
3971 AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[
3972 AC_TRY_COMPILE([
3973 #include <stdlib.h>
3974 #include <stdarg.h>
3975 #include <stdio.h>
3976 #ifdef HAVE_LIBUTF8_H
3977 #include <libutf8.h>
3978 #endif],
3979         [$1 state],
3980         [cf_cv_$1=no],
3981         [AC_TRY_COMPILE([
3982 #include <stdlib.h>
3983 #include <stdarg.h>
3984 #include <stdio.h>
3985 #include <wchar.h>
3986 #ifdef HAVE_LIBUTF8_H
3987 #include <libutf8.h>
3988 #endif],
3989         [$1 value],
3990         [cf_cv_$1=yes],
3991         [cf_cv_$1=unknown])])])
3992
3993 if test "$cf_cv_$1" = yes ; then
3994         AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h])
3995         NEED_WCHAR_H=1
3996 fi
3997
3998 ifelse([$2],,,[
3999 # if we do not find $1 in either place, use substitution to provide a fallback.
4000 if test "$cf_cv_$1" = unknown ; then
4001         $2=1
4002 fi
4003 ])
4004 ifelse($3,,,[
4005 # if we find $1 in either place, use substitution to provide a fallback.
4006 if test "$cf_cv_$1" != unknown ; then
4007         $3=1
4008 fi
4009 ])
4010 ])dnl
4011 dnl ---------------------------------------------------------------------------
4012 dnl CF_WITH_CURSES_DIR version: 4 updated: 2021/01/02 19:22:58
4013 dnl ------------------
4014 dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses
4015 dnl libraries.
4016 AC_DEFUN([CF_WITH_CURSES_DIR],[
4017
4018 AC_MSG_CHECKING(for specific curses-directory)
4019 AC_ARG_WITH(curses-dir,
4020         [  --with-curses-dir=DIR   directory in which (n)curses is installed],
4021         [cf_cv_curses_dir=$withval],
4022         [cf_cv_curses_dir=no])
4023 AC_MSG_RESULT($cf_cv_curses_dir)
4024
4025 if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no"
4026 then
4027         CF_PATH_SYNTAX(withval)
4028         if test -d "$cf_cv_curses_dir"
4029         then
4030                 CF_ADD_INCDIR($cf_cv_curses_dir/include)
4031                 CF_ADD_LIBDIR($cf_cv_curses_dir/lib)
4032         fi
4033 fi
4034 ])dnl
4035 dnl ---------------------------------------------------------------------------
4036 dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
4037 dnl ----------------
4038 dnl Configure-option for dbmalloc.  The optional parameter is used to override
4039 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
4040 AC_DEFUN([CF_WITH_DBMALLOC],[
4041 CF_NO_LEAKS_OPTION(dbmalloc,
4042         [  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
4043         [USE_DBMALLOC])
4044
4045 if test "$with_dbmalloc" = yes ; then
4046         AC_CHECK_HEADER(dbmalloc.h,
4047                 [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
4048 fi
4049 ])dnl
4050 dnl ---------------------------------------------------------------------------
4051 dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
4052 dnl ---------------
4053 dnl Configure-option for dmalloc.  The optional parameter is used to override
4054 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
4055 AC_DEFUN([CF_WITH_DMALLOC],[
4056 CF_NO_LEAKS_OPTION(dmalloc,
4057         [  --with-dmalloc          test: use Gray Watson's dmalloc library],
4058         [USE_DMALLOC])
4059
4060 if test "$with_dmalloc" = yes ; then
4061         AC_CHECK_HEADER(dmalloc.h,
4062                 [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
4063 fi
4064 ])dnl
4065 dnl ---------------------------------------------------------------------------
4066 dnl CF_WITH_LIB_BASENAME version: 1 updated: 2020/03/07 20:05:14
4067 dnl --------------------
4068 dnl Allow for overriding the basename of a library, i.e., the part to which
4069 dnl prefixes/suffixes are attached.
4070 dnl
4071 dnl $1 = variable to set
4072 dnl $2 = option name
4073 dnl $3 = default basename for library, if omitted use $2
4074 AC_DEFUN([CF_WITH_LIB_BASENAME],
4075 [
4076 AC_MSG_CHECKING(for desired basename for $2 library)
4077 AC_ARG_WITH($2-libname,
4078         [  --with-$2-libname=XXX override ifelse($3,,$2,$3) basename of library],
4079         [with_lib_basename=$withval],
4080         [with_lib_basename=ifelse($3,,$2,$3)])
4081 $1="$with_lib_basename"
4082
4083 case "x[$]$1" in
4084 (x|xno|xnone|xyes)
4085         $1=ifelse($3,,$2,$3)
4086         ;;
4087 (*)
4088         ;;
4089 esac
4090
4091 AC_MSG_RESULT([$]$1)
4092 AC_SUBST($1)
4093 ])dnl
4094 dnl ---------------------------------------------------------------------------
4095 dnl CF_WITH_NCURSES_ETC version: 5 updated: 2016/02/20 19:23:20
4096 dnl -------------------
4097 dnl Use this macro for programs which use any variant of "curses", e.g.,
4098 dnl "ncurses", and "PDCurses".  Programs that can use curses and some unrelated
4099 dnl library (such as slang) should use a "--with-screen=XXX" option.
4100 dnl
4101 dnl This does not use AC_DEFUN, because that would tell autoconf to run each
4102 dnl of the macros inside this one - before this macro.
4103 define([CF_WITH_NCURSES_ETC],[
4104 CF_WITH_CURSES_DIR
4105
4106 cf_cv_screen=curses
4107
4108 AC_MSG_CHECKING(for specified curses library type)
4109 AC_ARG_WITH(screen,
4110         [  --with-screen=XXX       use specified curses-libraries],
4111         [cf_cv_screen=$withval],[
4112
4113 AC_ARG_WITH(ncursesw,
4114         [  --with-ncursesw         use wide ncurses-libraries],
4115         [cf_cv_screen=ncursesw],[
4116
4117 AC_ARG_WITH(ncurses,
4118         [  --with-ncurses          use ncurses-libraries],
4119         [cf_cv_screen=ncurses],[
4120
4121 AC_ARG_WITH(pdcurses,
4122         [  --with-pdcurses         compile/link with pdcurses X11 library],
4123         [cf_cv_screen=pdcurses],[
4124
4125 AC_ARG_WITH(curses-colr,
4126         [  --with-curses-colr      compile/link with HPUX 10.x color-curses],
4127         [cf_cv_screen=curses_colr],[
4128
4129 AC_ARG_WITH(curses-5lib,
4130         [  --with-curses-5lib      compile/link with SunOS 5lib curses],
4131         [cf_cv_screen=curses_5lib])])])])])])
4132
4133 AC_MSG_RESULT($cf_cv_screen)
4134
4135 case $cf_cv_screen in
4136 (curses|curses_*)
4137         CF_CURSES_CONFIG
4138         ;;
4139 (ncursesw*)
4140         CF_UTF8_LIB
4141         CF_NCURSES_CONFIG($cf_cv_screen)
4142         ;;
4143 (ncurses*)
4144         CF_NCURSES_CONFIG($cf_cv_screen)
4145         ;;
4146 (pdcurses)
4147         CF_PDCURSES_X11
4148         ;;
4149 (*)
4150         AC_MSG_ERROR(unexpected screen-value: $cf_cv_screen)
4151         ;;
4152 esac
4153
4154 CF_NCURSES_PTHREADS($cf_cv_screen)
4155
4156 ])dnl
4157 dnl ---------------------------------------------------------------------------
4158 dnl CF_WITH_SCREEN_PDCURSES version: 1 updated: 2020/08/28 16:56:27
4159 dnl -----------------------
4160 dnl Call this macro before CF_ENABLE_WARNINGS for configure scripts which use
4161 dnl the "--with-screen=pdcurses" selection.  Doing that allows the configure
4162 dnl script to search for the X11/Xt header files to declare (or not) the
4163 dnl symbol needed to enable "const" in those header files.  If that configure
4164 dnl option is not used, then those checks are unnecessary.
4165 AC_DEFUN([CF_WITH_SCREEN_PDCURSES],[
4166 AC_PROVIDE([AC_PATH_XTRA])
4167 AC_PROVIDE([AC_PATH_X])
4168 if test -n "$with_screen" && test "x$with_screen" = "xpdcurses"
4169 then
4170         AC_PATH_X
4171         AC_PATH_XTRA
4172 fi
4173 ])dnl
4174 dnl ---------------------------------------------------------------------------
4175 dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
4176 dnl ----------------
4177 AC_DEFUN([CF_WITH_VALGRIND],[
4178 CF_NO_LEAKS_OPTION(valgrind,
4179         [  --with-valgrind         test: use valgrind],
4180         [USE_VALGRIND])
4181 ])dnl
4182 dnl ---------------------------------------------------------------------------
4183 dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54
4184 dnl ---------------
4185 dnl Handle configure option "--with-x11-rgb", setting these shell
4186 dnl variables:
4187 dnl
4188 dnl $RGB_PATH is the option value, used for finding the X11 rgb file.
4189 dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given.
4190 dnl
4191 dnl Most Linux's use this:
4192 dnl     /usr/share/X11/rgb.txt
4193 dnl Debian uses this:
4194 dnl     /etc/X11/rgb.txt
4195 dnl DragonFlyBSD ports uses this:
4196 dnl     /usr/pkg/lib/X11/rgb.txt
4197 dnl FreeBSD ports use these:
4198 dnl     /usr/local/lib/X11/rgb.txt
4199 dnl     /usr/local/share/X11/rgb.txt
4200 dnl Mandriva has these:
4201 dnl     /usr/lib/X11/rgb.txt
4202 dnl     /usr/lib64/X11/rgb.txt
4203 dnl NetBSD has these
4204 dnl     /usr/X11R7/lib/X11/rgb.txt
4205 dnl OpenSolaris uses
4206 dnl     32-bit:
4207 dnl     /usr/X11/etc/X11/rgb.txt
4208 dnl     /usr/X11/share/X11/rgb.txt
4209 dnl     /usr/X11/lib/X11/rgb.txt
4210 dnl OSX uses
4211 dnl             /opt/local/share/X11/rgb.txt (MacPorts)
4212 dnl             /opt/X11/share/X11/rgb.txt (non-ports)
4213 dnl     64-bit:
4214 dnl     /usr/X11/etc/X11/rgb.txt
4215 dnl     /usr/X11/share/X11/rgb.txt (perhaps)
4216 dnl     /usr/X11/lib/amd64/X11/rgb.txt
4217 dnl Solaris10 uses (in this order):
4218 dnl     /usr/openwin/lib/X11/rgb.txt
4219 dnl     /usr/X11/lib/X11/rgb.txt
4220 AC_DEFUN([CF_WITH_X11_RGB],[
4221 AC_MSG_CHECKING(for X11 rgb file)
4222 AC_ARG_WITH(x11-rgb,
4223         [  --with-x11-rgb=FILE   file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)],
4224         [RGB_PATH=$withval],
4225         [RGB_PATH=auto])
4226
4227 if test "x[$]RGB_PATH" = xauto
4228 then
4229         RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
4230         for cf_path in \
4231                 /opt/local/share/X11/rgb.txt \
4232                 /opt/X11/share/X11/rgb.txt \
4233                 /usr/share/X11/rgb.txt \
4234                 /usr/X11/share/X11/rgb.txt \
4235                 /usr/X11/lib/X11/rgb.txt \
4236                 /usr/lib/X11/rgb.txt \
4237                 /etc/X11/rgb.txt \
4238                 /usr/pkg/lib/X11/rgb.txt \
4239                 /usr/X11R7/lib/X11/rgb.txt \
4240                 /usr/X11R6/lib/X11/rgb.txt \
4241                 /usr/X11R5/lib/X11/rgb.txt \
4242                 /usr/X11R4/lib/X11/rgb.txt \
4243                 /usr/local/lib/X11/rgb.txt \
4244                 /usr/local/share/X11/rgb.txt \
4245                 /usr/lib64/X11/rgb.txt
4246         do
4247                 if test -f "$cf_path" ; then
4248                         RGB_PATH="$cf_path"
4249                         break
4250                 fi
4251         done
4252 else
4253         cf_path=$RGB_PATH
4254         CF_PATH_SYNTAX(cf_path)
4255 fi
4256
4257 AC_MSG_RESULT($RGB_PATH)
4258 AC_SUBST(RGB_PATH)
4259 AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt])
4260
4261 no_x11_rgb=
4262 if test "$RGB_PATH" = no
4263 then
4264         no_x11_rgb="#"
4265 fi
4266 AC_SUBST(no_x11_rgb)
4267 ])dnl
4268 dnl ---------------------------------------------------------------------------
4269 dnl CF_XOPEN_CURSES version: 17 updated: 2021/07/10 12:22:27
4270 dnl ---------------
4271 dnl Test if we should define X/Open source for curses, needed on Digital Unix
4272 dnl 4.x, to see the extended functions, but breaks on IRIX 6.x.
4273 dnl
4274 dnl The getbegyx() check is needed for HPUX, which omits legacy macros such
4275 dnl as getbegy().  The latter is better design, but the former is standard.
4276 AC_DEFUN([CF_XOPEN_CURSES],
4277 [
4278 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
4279 AC_CACHE_CHECK(definition to turn on extended curses functions,cf_cv_need_xopen_extension,[
4280 cf_cv_need_xopen_extension=unknown
4281 AC_TRY_LINK([
4282 #include <stdlib.h>
4283 #include <${cf_cv_ncurses_header:-curses.h}>],[
4284 #if defined(NCURSES_VERSION_PATCH)
4285 #if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403)
4286         make an error
4287 #endif
4288 #endif
4289 #ifdef NCURSES_WIDECHAR
4290 make an error   /* prefer to fall-through on the second checks */
4291 #endif
4292         cchar_t check;
4293         int check2 = curs_set((int)sizeof(check));
4294         long x = winnstr(stdscr, "", 0);
4295         int x1, y1;
4296         (void)check2;
4297         getbegyx(stdscr, y1, x1);
4298         (void)x;
4299         (void)y1;
4300         (void)x1;
4301         ],
4302         [cf_cv_need_xopen_extension=none],
4303         [
4304         for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR
4305         do
4306                 AC_TRY_LINK([
4307 #define $cf_try_xopen_extension 1
4308 #include <stdlib.h>
4309 #include <${cf_cv_ncurses_header:-curses.h}>],[
4310                 cchar_t check;
4311                 int check2 = curs_set((int)sizeof(check));
4312                 long x = winnstr(stdscr, "", 0);
4313                 int x1, y1;
4314                 getbegyx(stdscr, y1, x1);
4315                 (void)check2;
4316                 (void)x;
4317                 (void)y1;
4318                 (void)x1;
4319                 ],
4320                 [cf_cv_need_xopen_extension=$cf_try_xopen_extension; break])
4321         done
4322         ])
4323 ])
4324
4325 case "$cf_cv_need_xopen_extension" in
4326 (*_*)
4327         CF_APPEND_TEXT(CPPFLAGS,-D$cf_cv_need_xopen_extension)
4328         ;;
4329 esac
4330
4331 ])dnl
4332 dnl ---------------------------------------------------------------------------
4333 dnl CF_XOPEN_SOURCE version: 59 updated: 2021/08/28 15:20:37
4334 dnl ---------------
4335 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
4336 dnl or adapt to the vendor's definitions to get equivalent functionality,
4337 dnl without losing the common non-POSIX features.
4338 dnl
4339 dnl Parameters:
4340 dnl     $1 is the nominal value for _XOPEN_SOURCE
4341 dnl     $2 is the nominal value for _POSIX_C_SOURCE
4342 AC_DEFUN([CF_XOPEN_SOURCE],[
4343 AC_REQUIRE([AC_CANONICAL_HOST])
4344 AC_REQUIRE([CF_POSIX_VISIBLE])
4345
4346 if test "$cf_cv_posix_visible" = no; then
4347
4348 cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
4349 cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
4350 cf_xopen_source=
4351
4352 case "$host_os" in
4353 (aix[[4-7]]*)
4354         cf_xopen_source="-D_ALL_SOURCE"
4355         ;;
4356 (msys)
4357         cf_XOPEN_SOURCE=600
4358         ;;
4359 (darwin[[0-8]].*)
4360         cf_xopen_source="-D_APPLE_C_SOURCE"
4361         ;;
4362 (darwin*)
4363         cf_xopen_source="-D_DARWIN_C_SOURCE"
4364         cf_XOPEN_SOURCE=
4365         ;;
4366 (freebsd*|dragonfly*|midnightbsd*)
4367         # 5.x headers associate
4368         #       _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
4369         #       _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
4370         cf_POSIX_C_SOURCE=200112L
4371         cf_XOPEN_SOURCE=600
4372         cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
4373         ;;
4374 (hpux11*)
4375         cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
4376         ;;
4377 (hpux*)
4378         cf_xopen_source="-D_HPUX_SOURCE"
4379         ;;
4380 (irix[[56]].*)
4381         cf_xopen_source="-D_SGI_SOURCE"
4382         cf_XOPEN_SOURCE=
4383         ;;
4384 (linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
4385         CF_GNU_SOURCE($cf_XOPEN_SOURCE)
4386         ;;
4387 (minix*)
4388         cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
4389         ;;
4390 (mirbsd*)
4391         # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
4392         cf_XOPEN_SOURCE=
4393         CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
4394         ;;
4395 (netbsd*)
4396         cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
4397         ;;
4398 (openbsd[[6-9]]*)
4399         # OpenBSD 6.x has broken locale support, both compile-time and runtime.
4400         # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
4401         # Abusing the conformance level is a workaround.
4402         AC_MSG_WARN(this system does not provide usable locale support)
4403         cf_xopen_source="-D_BSD_SOURCE"
4404         cf_XOPEN_SOURCE=700
4405         ;;
4406 (openbsd[[4-5]]*)
4407         # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
4408         cf_xopen_source="-D_BSD_SOURCE"
4409         cf_XOPEN_SOURCE=600
4410         ;;
4411 (openbsd*)
4412         # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
4413         ;;
4414 (osf[[45]]*)
4415         cf_xopen_source="-D_OSF_SOURCE"
4416         ;;
4417 (nto-qnx*)
4418         cf_xopen_source="-D_QNX_SOURCE"
4419         ;;
4420 (sco*)
4421         # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
4422         ;;
4423 (solaris2.*)
4424         cf_xopen_source="-D__EXTENSIONS__"
4425         cf_cv_xopen_source=broken
4426         ;;
4427 (sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
4428         cf_XOPEN_SOURCE=
4429         cf_POSIX_C_SOURCE=
4430         ;;
4431 (*)
4432         CF_TRY_XOPEN_SOURCE
4433         CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
4434         ;;
4435 esac
4436
4437 if test -n "$cf_xopen_source" ; then
4438         CF_APPEND_CFLAGS($cf_xopen_source,true)
4439 fi
4440
4441 dnl In anything but the default case, we may have system-specific setting
4442 dnl which is still not guaranteed to provide all of the entrypoints that
4443 dnl _XOPEN_SOURCE would yield.
4444 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
4445         AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
4446         AC_TRY_COMPILE([#include <stdlib.h>],[
4447 #ifndef _XOPEN_SOURCE
4448 make an error
4449 #endif],
4450         [cf_XOPEN_SOURCE_set=yes],
4451         [cf_XOPEN_SOURCE_set=no])
4452         AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
4453         if test "$cf_XOPEN_SOURCE_set" = yes
4454         then
4455                 AC_TRY_COMPILE([#include <stdlib.h>],[
4456 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
4457 make an error
4458 #endif],
4459                 [cf_XOPEN_SOURCE_set_ok=yes],
4460                 [cf_XOPEN_SOURCE_set_ok=no])
4461                 if test "$cf_XOPEN_SOURCE_set_ok" = no
4462                 then
4463                         AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
4464                 fi
4465         else
4466                 CF_TRY_XOPEN_SOURCE
4467         fi
4468 fi
4469 fi # cf_cv_posix_visible
4470 ])
4471 dnl ---------------------------------------------------------------------------
4472 dnl CF_X_ATHENA version: 24 updated: 2020/03/10 18:53:47
4473 dnl -----------
4474 dnl Check for Xaw (Athena) libraries
4475 dnl
4476 dnl Sets $cf_x_athena according to the flavor of Xaw which is used.
4477 AC_DEFUN([CF_X_ATHENA],
4478 [
4479 cf_x_athena=${cf_x_athena:-Xaw}
4480
4481 AC_MSG_CHECKING(if you want to link with Xaw 3d library)
4482 withval=
4483 AC_ARG_WITH(Xaw3d,
4484         [  --with-Xaw3d            link with Xaw 3d library])
4485 if test "$withval" = yes ; then
4486         cf_x_athena=Xaw3d
4487         AC_MSG_RESULT(yes)
4488 else
4489         AC_MSG_RESULT(no)
4490 fi
4491
4492 AC_MSG_CHECKING(if you want to link with Xaw 3d xft library)
4493 withval=
4494 AC_ARG_WITH(Xaw3dxft,
4495         [  --with-Xaw3dxft         link with Xaw 3d xft library])
4496 if test "$withval" = yes ; then
4497         cf_x_athena=Xaw3dxft
4498         AC_MSG_RESULT(yes)
4499 else
4500         AC_MSG_RESULT(no)
4501 fi
4502
4503 AC_MSG_CHECKING(if you want to link with neXT Athena library)
4504 withval=
4505 AC_ARG_WITH(neXtaw,
4506         [  --with-neXtaw           link with neXT Athena library])
4507 if test "$withval" = yes ; then
4508         cf_x_athena=neXtaw
4509         AC_MSG_RESULT(yes)
4510 else
4511         AC_MSG_RESULT(no)
4512 fi
4513
4514 AC_MSG_CHECKING(if you want to link with Athena-Plus library)
4515 withval=
4516 AC_ARG_WITH(XawPlus,
4517         [  --with-XawPlus          link with Athena-Plus library])
4518 if test "$withval" = yes ; then
4519         cf_x_athena=XawPlus
4520         AC_MSG_RESULT(yes)
4521 else
4522         AC_MSG_RESULT(no)
4523 fi
4524
4525 cf_x_athena_lib=""
4526
4527 if test "$PKG_CONFIG" != none ; then
4528         cf_athena_list=
4529         test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6"
4530         for cf_athena_pkg in \
4531                 $cf_athena_list \
4532                 ${cf_x_athena} \
4533                 ${cf_x_athena}-devel \
4534                 lib${cf_x_athena} \
4535                 lib${cf_x_athena}-devel
4536         do
4537                 CF_TRY_PKG_CONFIG($cf_athena_pkg,[
4538                         cf_x_athena_lib="$cf_pkgconfig_libs"
4539                         CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
4540                         AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
4541
4542                         CF_TRIM_X_LIBS
4543
4544 AC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[
4545 AC_TRY_LINK([
4546 #include <X11/Xmu/CharSet.h>
4547 ],[
4548 int check = XmuCompareISOLatin1("big", "small");
4549 (void)check;
4550 ],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])])
4551
4552                         if test "$cf_cv_xaw_compat" = no
4553                         then
4554                                 # workaround for broken ".pc" files...
4555                                 case "$cf_x_athena_lib" in
4556                                 (*-lXmu*)
4557                                         ;;
4558                                 (*)
4559                                         CF_VERBOSE(work around broken package)
4560                                         cf_save_xmu="$LIBS"
4561                                         cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'`
4562                                         CF_TRY_PKG_CONFIG(xmu,[
4563                                                         LIBS="$cf_save_xmu"
4564                                                         CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs)
4565                                                 ],[
4566                                                         CF_ADD_LIB_AFTER($cf_first_lib,-lXmu)
4567                                                 ])
4568                                         CF_TRIM_X_LIBS
4569                                         ;;
4570                                 esac
4571                         fi
4572
4573                         break])
4574         done
4575 fi
4576
4577 if test -z "$cf_x_athena_lib" ; then
4578         CF_X_EXT
4579         CF_X_TOOLKIT
4580         CF_X_ATHENA_CPPFLAGS($cf_x_athena)
4581         CF_X_ATHENA_LIBS($cf_x_athena)
4582 fi
4583 ])dnl
4584 dnl ---------------------------------------------------------------------------
4585 dnl CF_X_ATHENA_CPPFLAGS version: 9 updated: 2020/12/31 10:54:15
4586 dnl --------------------
4587 dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
4588 dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
4589 AC_DEFUN([CF_X_ATHENA_CPPFLAGS],
4590 [
4591 AC_REQUIRE([AC_PATH_XTRA])
4592 cf_x_athena_root=ifelse([$1],,Xaw,[$1])
4593 cf_x_athena_inc=""
4594
4595 for cf_path in default \
4596         /usr/contrib/X11R6 \
4597         /usr/contrib/X11R5 \
4598         /usr/lib/X11R5 \
4599         /usr/local
4600 do
4601         if test -z "$cf_x_athena_inc" ; then
4602                 CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS])
4603                 cf_test=X11/$cf_x_athena_root/SimpleMenu.h
4604                 if test "$cf_path" != default ; then
4605                         CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include)
4606                         AC_MSG_CHECKING(for $cf_test in $cf_path)
4607                 else
4608                         AC_MSG_CHECKING(for $cf_test)
4609                 fi
4610                 AC_TRY_COMPILE([
4611 #include <X11/Intrinsic.h>
4612 #include <$cf_test>],[],
4613                         [cf_result=yes],
4614                         [cf_result=no])
4615                 AC_MSG_RESULT($cf_result)
4616                 CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS])
4617                 if test "$cf_result" = yes ; then
4618                         test "$cf_path"  = default && cf_x_athena_inc=default
4619                         test "$cf_path" != default && cf_x_athena_inc="$cf_path/include"
4620                         break
4621                 fi
4622         fi
4623 done
4624
4625 if test -z "$cf_x_athena_inc" ; then
4626         AC_MSG_WARN([Unable to find Athena header files])
4627 elif test "$cf_x_athena_inc" != default ; then
4628         CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc)
4629 fi
4630 ])
4631 dnl ---------------------------------------------------------------------------
4632 dnl CF_X_ATHENA_LIBS version: 13 updated: 2020/01/11 18:16:10
4633 dnl ----------------
4634 dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
4635 dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
4636 AC_DEFUN([CF_X_ATHENA_LIBS],
4637 [AC_REQUIRE([CF_X_TOOLKIT])
4638 cf_x_athena_root=ifelse([$1],,Xaw,[$1])
4639 cf_x_athena_lib=""
4640
4641 for cf_path in default \
4642         /usr/contrib/X11R6 \
4643         /usr/contrib/X11R5 \
4644         /usr/lib/X11R5 \
4645         /usr/local
4646 do
4647         for cf_lib in \
4648                 ${cf_x_athena_root} \
4649                 ${cf_x_athena_root}7 \
4650                 ${cf_x_athena_root}6
4651         do
4652         for cf_libs in \
4653                 "-l$cf_lib -lXmu" \
4654                 "-l$cf_lib -lXpm -lXmu" \
4655                 "-l${cf_lib}_s -lXmu_s"
4656         do
4657                 test -n "$cf_x_athena_lib" && break
4658
4659                 CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_LIBS])
4660                 cf_test=XawSimpleMenuAddGlobalActions
4661                 test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs"
4662                 CF_ADD_LIBS($cf_libs)
4663                 AC_MSG_CHECKING(for $cf_test in $cf_libs)
4664                 AC_TRY_LINK([
4665 #include <X11/Intrinsic.h>
4666 #include <X11/$cf_x_athena_root/SimpleMenu.h>
4667 ],[
4668 $cf_test((XtAppContext) 0)],
4669                         [cf_result=yes],
4670                         [cf_result=no])
4671                 AC_MSG_RESULT($cf_result)
4672                 CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_LIBS])
4673
4674                 if test "$cf_result" = yes ; then
4675                         cf_x_athena_lib="$cf_libs"
4676                         break
4677                 fi
4678         done # cf_libs
4679                 test -n "$cf_x_athena_lib" && break
4680         done # cf_lib
4681 done
4682
4683 if test -z "$cf_x_athena_lib" ; then
4684         AC_MSG_ERROR(
4685 [Unable to successfully link Athena library (-l$cf_x_athena_root) with test program])
4686 fi
4687
4688 CF_ADD_LIBS($cf_x_athena_lib)
4689 CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
4690 AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
4691 ])
4692 dnl ---------------------------------------------------------------------------
4693 dnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05
4694 dnl --------
4695 AC_DEFUN([CF_X_EXT],[
4696 CF_TRY_PKG_CONFIG(Xext,,[
4697         AC_CHECK_LIB(Xext,XextCreateExtension,
4698                 [CF_ADD_LIB(Xext)])])
4699 ])dnl
4700 dnl ---------------------------------------------------------------------------
4701 dnl CF_X_TOOLKIT version: 26 updated: 2021/01/02 09:31:20
4702 dnl ------------
4703 dnl Check for X Toolkit libraries
4704 AC_DEFUN([CF_X_TOOLKIT],
4705 [
4706 AC_REQUIRE([AC_PATH_XTRA])
4707 AC_REQUIRE([CF_CHECK_CACHE])
4708
4709 # OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and
4710 # in some cases has installed dummy files in the former, other cases replaced
4711 # it with a link to the new location).  This complicates the configure script.
4712 # Check for that pitfall, and recover using pkg-config
4713 #
4714 # If none of these are set, the configuration is almost certainly broken.
4715 if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}"
4716 then
4717         CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)])
4718         CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)])
4719         CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)])
4720         CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)])
4721 else
4722         LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS"
4723 fi
4724
4725 cf_have_X_LIBS=no
4726
4727 CF_TRY_PKG_CONFIG(xt,[
4728
4729         case "x$LIBS" in
4730         (*-lX11*)
4731                 ;;
4732         (*)
4733 # we have an "xt" package, but it may omit Xt's dependency on X11
4734 AC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[
4735 AC_TRY_LINK([
4736 #include <X11/Xlib.h>
4737 ],[
4738         int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0);
4739         int rc2 = XClearWindow((Display*) 0, (Window) 0);
4740         int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0);
4741         int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0);
4742 ],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])])
4743                 if test "$cf_cv_xt_x11_compat" = no
4744                 then
4745                         CF_VERBOSE(work around broken X11 dependency)
4746                         # 2010/11/19 - good enough until a working Xt on Xcb is delivered.
4747                         CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)])
4748                 fi
4749                 ;;
4750         esac
4751
4752 AC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[
4753 AC_TRY_LINK([
4754 #include <X11/Shell.h>
4755 ],[int num = IceConnectionNumber(0); (void) num
4756 ],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])])
4757
4758         if test "$cf_cv_xt_ice_compat" = no
4759         then
4760                 # workaround for broken ".pc" files used for X Toolkit.
4761                 case "x$X_PRE_LIBS" in
4762                 (*-lICE*)
4763                         case "x$LIBS" in
4764                         (*-lICE*)
4765                                 ;;
4766                         (*)
4767                                 CF_VERBOSE(work around broken ICE dependency)
4768                                 CF_TRY_PKG_CONFIG(ice,
4769                                         [CF_TRY_PKG_CONFIG(sm)],
4770                                         [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)])
4771                                 ;;
4772                         esac
4773                         ;;
4774                 esac
4775         fi
4776
4777         cf_have_X_LIBS=yes
4778 ],[
4779
4780         LDFLAGS="$X_LIBS $LDFLAGS"
4781         CF_CHECK_CFLAGS($X_CFLAGS)
4782
4783         AC_CHECK_FUNC(XOpenDisplay,,[
4784         AC_CHECK_LIB(X11,XOpenDisplay,
4785                 [CF_ADD_LIB(X11)])])
4786
4787         AC_CHECK_FUNC(XtAppInitialize,,[
4788         AC_CHECK_LIB(Xt, XtAppInitialize,
4789                 [AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library])
4790                  cf_have_X_LIBS=Xt
4791                  LIBS="-lXt $LIBS"])])
4792 ])
4793
4794 if test "$cf_have_X_LIBS" = no ; then
4795         AC_MSG_WARN(
4796 [Unable to successfully link X Toolkit library (-lXt) with
4797 test program.  You will have to check and add the proper libraries by hand
4798 to makefile.])
4799 fi
4800 ])dnl
4801 dnl ---------------------------------------------------------------------------
4802 dnl CF__CURSES_DATA version: 3 updated: 2021/01/04 19:45:09
4803 dnl ---------------
4804 dnl Attempt to make a copy of a curses data item.  This is needed in the
4805 dnl check-data configure tests when using ncurses, because the symbol may be
4806 dnl actually a function return-value.  That could happen if the linker is
4807 dnl broken (does not resolve data-only references), or if ncurses is configured
4808 dnl to support re-entrant code.
4809 dnl $1 = target
4810 dnl $2 = source
4811 define([CF__CURSES_DATA],[
4812 #if defined($2) && ((defined(NCURSES_WRAPPED_VAR) && (NCURSES_VERSION_PATCH < 20200208)) || defined(NCURSES_BROKEN_LINKER) || defined(NCURSES_REENTRANT))
4813         const void *$1 = (const void *)($2);
4814 #else
4815         const void *$1 = &($2);
4816 #endif
4817         fprintf(stderr, "testing linkage of $2:%p\\n", (const void *)$1);
4818 ])dnl
4819 dnl ---------------------------------------------------------------------------
4820 dnl CF__CURSES_HEAD version: 2 updated: 2010/10/23 15:54:49
4821 dnl ---------------
4822 dnl Define a reusable chunk which includes <curses.h> and <term.h> when they
4823 dnl are both available.
4824 define([CF__CURSES_HEAD],[
4825 #ifdef HAVE_XCURSES
4826 #include <xcurses.h>
4827 char * XCursesProgramName = "test";
4828 #else
4829 #include <${cf_cv_ncurses_header:-curses.h}>
4830 #if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
4831 #include <ncursesw/term.h>
4832 #elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
4833 #include <ncurses/term.h>
4834 #elif defined(HAVE_TERM_H)
4835 #include <term.h>
4836 #endif
4837 #endif
4838 ])