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