1 dnl***************************************************************************
2 dnl Copyright 2018-2020,2021 Thomas E. Dickey *
3 dnl Copyright 2003-2017,2018 Free Software Foundation, Inc. *
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: *
13 dnl The above copyright notice and this permission notice shall be included *
14 dnl in all copies or substantial portions of the Software. *
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. *
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 *
28 dnl***************************************************************************
30 dnl $Id: aclocal.m4,v 1.197 2021/07/10 21:40:29 tom Exp $
32 dnl Author: Thomas E. Dickey
34 dnl Macros used in NCURSES test programs auto-configuration script.
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.
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
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
51 dnl ====================
54 dnl From Bruno Haible.
55 AC_DEFUN([AM_LANGINFO_CODESET],
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)
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).])
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.
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],
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
97 dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
99 dnl $2 = if given makes this macro verbose.
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],
109 cf_new_extra_cppflags=
111 for cf_add_cflags in $1
113 case "$cf_fix_cppflags" in
115 case "$cf_add_cflags" in
116 (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
117 case "$cf_add_cflags" in
119 cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
121 test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
122 && test -z "${cf_tst_cflags}" \
123 && cf_fix_cppflags=yes
125 if test "$cf_fix_cppflags" = yes ; then
126 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
128 elif test "${cf_tst_cflags}" = "\"'" ; then
129 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
138 case "$cf_add_cflags" in
140 cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
141 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
144 CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags)
149 CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags)
154 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
156 cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'`
158 test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
159 && test -z "${cf_tst_cflags}" \
160 && cf_fix_cppflags=no
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)
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)
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)
180 AC_SUBST(EXTRA_CPPFLAGS)
183 dnl ---------------------------------------------------------------------------
184 dnl CF_ADD_INCDIR version: 16 updated: 2020/12/31 20:19:42
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],
193 if test -n "$1" ; then
194 for cf_add_incdir in $1
196 while test "$cf_add_incdir" != /usr/include
198 if test -d "$cf_add_incdir"
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
210 if test "$cf_have_incdir" = no ; then
211 if test "$cf_add_incdir" = /usr/local/include ; then
214 cf_save_CPPFLAGS=$CPPFLAGS
215 CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir)
216 AC_TRY_COMPILE([#include <stdio.h>],
219 [cf_have_incdir=yes])
220 CPPFLAGS=$cf_save_CPPFLAGS
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"
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"
242 dnl ---------------------------------------------------------------------------
243 dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05
245 dnl Add a library, used to enforce consistency.
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
253 dnl Adds to the library-path
255 dnl Some machines have trouble with multiple -L options.
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)
260 AC_DEFUN([CF_ADD_LIBDIR],
262 if test -n "$1" ; then
263 for cf_add_libdir in $1
265 if test "$cf_add_libdir" = /usr/lib ; then
267 elif test -d "$cf_add_libdir"
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
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])"
286 dnl ---------------------------------------------------------------------------
287 dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33
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.
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])"
299 for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
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
308 test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
310 ifelse($2,,LIBS,[$2])="$cf_add_libs"
312 dnl ---------------------------------------------------------------------------
313 dnl CF_ADD_LIB_AFTER version: 3 updated: 2013/07/09 21:27:22
315 dnl Add a given library after another, e.g., following the one it satisfies a
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)
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],
336 test "x$4" != "x$5" && \
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"
347 dnl ---------------------------------------------------------------------------
348 dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
350 dnl use this macro for appending text without introducing an extra blank at
352 define([CF_APPEND_TEXT],
354 test -n "[$]$1" && $1="[$]$1 "
357 dnl ---------------------------------------------------------------------------
358 dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
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
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
372 dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
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
385 ,[ $3]) ifelse([$4],,,[
388 fi],[enableval=$5 ifelse([$4],,,[
392 dnl ---------------------------------------------------------------------------
393 dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23
395 AC_DEFUN([CF_C11_NORETURN],
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)
404 if test $enable_stdnoreturn = yes; then
405 AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
409 #include <stdnoreturn.h>
410 static _Noreturn void giveup(void) { exit(0); }
412 [if (feof(stdin)) giveup()],
413 cf_cv_c11_noreturn=yes,
414 cf_cv_c11_noreturn=no)
417 cf_cv_c11_noreturn=no,
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])
428 AC_SUBST(HAVE_STDNORETURN_H)
429 AC_SUBST(STDC_NORETURN)
431 dnl ---------------------------------------------------------------------------
432 dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20
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.
438 dnl In particular, it addresses the problem of being able to run the C
439 dnl preprocessor in a consistent manner.
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],
446 # This should have been defined by AC_PROG_CC
449 AC_MSG_CHECKING(\$CFLAGS variable)
452 AC_MSG_RESULT(broken)
453 AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
456 for cf_arg in $cf_flags
458 CF_ADD_CFLAGS($cf_arg)
466 AC_MSG_CHECKING(\$CC variable)
469 AC_MSG_RESULT(broken)
470 AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
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))); }'`
475 for cf_arg in $cf_flags
479 CF_ADD_CFLAGS($cf_arg)
486 CF_VERBOSE(resulting CC: '$CC')
487 CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
488 CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
495 dnl ---------------------------------------------------------------------------
496 dnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15
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.
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.
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],
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"
514 system_name="`(uname -s -r) 2>/dev/null`"
515 if test -z "$system_name" ; then
516 system_name="`(hostname) 2>/dev/null`"
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"])
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)
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.")
530 dnl ---------------------------------------------------------------------------
531 dnl CF_CHECK_CFLAGS version: 4 updated: 2021/01/02 19:22:58
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],
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)
549 CFLAGS="$cf_check_cflags"])
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],
561 AC_REQUIRE([CF_PKG_CONFIG])
563 cf_have_curses_lib=no
565 : ${NCURSES_CONFIG_PKG:=none}
566 if test "x${NCURSES_CONFIG_PKG}" = xnone; then
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
573 AC_MSG_CHECKING(if the $1$2 package files work)
575 cf_save_CPPFLAGS="$CPPFLAGS"
578 CF_ADD_CFLAGS(`$PKG_CONFIG --cflags "$1$2"`)
579 CF_ADD_LIBS(`$PKG_CONFIG --libs "$1$2"`)
581 AC_TRY_LINK([#include <$1.h>],
582 [(void) $3 ( ]ifelse([$4],,,[[$4]])[ );],
583 [AC_TRY_RUN([#include <$1.h>
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"
594 CPPFLAGS="$cf_save_CPPFLAGS"
597 CF_UPPER(cf_upper,have_lib$1)
598 AC_DEFINE_UNQUOTED($cf_upper,1)
602 if test "$cf_have_curses_lib" = no; then
603 AC_CHECK_LIB($1$2,$3,[
604 CF_UPPER(cf_upper,have_lib$1)
606 AC_DEFINE_UNQUOTED($cf_upper,1)])
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.
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.
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
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])"
634 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
636 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
637 AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
642 if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
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%.*/%%'`"
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)
656 for cf_clang_opt in \
658 -Wno-error=implicit-function-declaration
660 AC_MSG_CHECKING(if option $cf_clang_opt works)
661 cf_save_CFLAGS="$CFLAGS"
662 CFLAGS="$CFLAGS $cf_clang_opt"
664 #include <stdio.h>],[
665 printf("hello!\\n");],[
666 cf_clang_optok=yes],[
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)
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.
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.
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).
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],
699 AC_REQUIRE([AC_PATH_XTRA])
701 CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
706 #include <X11/Intrinsic.h>
708 [String foo = malloc(1); free((void*)foo)],[
710 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
713 #define _CONST_X_STRING /* X11R7.8 (perhaps) */
714 #undef XTSTRINGDEFINES /* X11R5 and later */
716 #include <X11/Intrinsic.h>
717 ],[String foo = malloc(1); *foo = 0],[
718 cf_cv_const_x_string=no
720 cf_cv_const_x_string=yes
724 CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
726 case "$cf_cv_const_x_string" in
728 CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
731 CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
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],
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
749 #include <${cf_cv_ncurses_header:-curses.h}>
751 ${name}['k'] = ACS_PLUS
752 ],[cf_cv_curses_acs_map=$name; break])
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_])
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.
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],
770 AC_MSG_CHECKING(for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h})
772 AC_TRY_COMPILE(CF__CURSES_HEAD,
773 CF__CURSES_DATA(foo,$cf_data)
776 AC_MSG_RESULT($cf_result)
778 if test "$cf_result" = yes ; then
779 CF_UPPER(cf_result,have_curses_data_$cf_data)
780 AC_DEFINE_UNQUOTED($cf_result)
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
787 extern char $cf_data;
790 ]CF__CURSES_DATA(foo,$cf_data)[
791 ${cf_cv_main_return:-return}(foo == 0);
795 AC_TRY_LINK(CF__CURSES_HEAD
796 [extern char $cf_data;],[
798 ]CF__CURSES_DATA(foo,$cf_data)[
799 ${cf_cv_main_return:-return}(foo == 0);
801 ],[cf_result=yes],[cf_result=no])
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
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],
818 AC_MSG_CHECKING(for type $1 in ${cf_cv_ncurses_header:-curses.h})
820 #ifndef _XOPEN_SOURCE_EXTENDED
821 #define _XOPEN_SOURCE_EXTENDED
823 #include <${cf_cv_ncurses_header:-curses.h}>],[
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])
831 AC_DEFINE_UNQUOTED($1,$2,[Define to appropriate type if $1 is not declared])
834 dnl ---------------------------------------------------------------------------
835 dnl CF_CURSES_CONFIG version: 2 updated: 2006/10/29 11:06:27
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],
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],[
852 AC_CACHE_CHECK(for extra include directories,cf_cv_curses_incdir,[
853 cf_cv_curses_incdir=no
856 if test "x$cf_cv_screen" = "xcurses_colr"
858 test -d /usr/include/curses_colr && \
859 cf_cv_curses_incdir="-I/usr/include/curses_colr"
863 if test "x$cf_cv_screen" = "xcurses_5lib"
865 test -d /usr/5lib && \
866 test -d /usr/5include && \
867 cf_cv_curses_incdir="-I/usr/5include"
872 if test "$cf_cv_curses_incdir" != no
874 CF_APPEND_TEXT(CPPFLAGS,$cf_cv_curses_incdir)
880 dnl ---------------------------------------------------------------------------
881 dnl CF_CURSES_FUNCS version: 20 updated: 2020/12/31 20:19:42
883 dnl Curses-functions are a little complicated, since a lot of them are macros.
884 AC_DEFUN([CF_CURSES_FUNCS],
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])
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,
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);
910 eval 'cf_cv_func_'$cf_func'="$cf_result"'
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})
920 dnl ---------------------------------------------------------------------------
921 dnl CF_CURSES_HEADER version: 5 updated: 2015/04/23 20:35:30
923 dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
924 dnl variations of ncurses' installs.
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
931 ncurses.h ifelse($1,,,[$1/ncurses.h]) \
932 curses.h ifelse($1,,,[$1/curses.h]) ifelse($1,,[ncurses/ncurses.h ncurses/curses.h])
934 AC_TRY_COMPILE([#include <${cf_header}>],
935 [initscr(); tgoto("?", 0,0)],
936 [cf_cv_ncurses_header=$cf_header; break],[])
940 if test "$cf_cv_ncurses_header" = none ; then
941 AC_MSG_ERROR(No curses header-files found)
944 # cheat, to get the right #define's for HAVE_NCURSES_H, etc.
945 AC_CHECK_HEADERS($cf_cv_ncurses_header)
947 dnl ---------------------------------------------------------------------------
948 dnl CF_CURSES_LIBS version: 44 updated: 2021/01/02 09:31:20
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],[
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)],
960 AC_MSG_RESULT($cf_result)
962 if test "$cf_result" = no ; then
965 AC_CHECK_LIB(mytinfo,tgoto,[CF_ADD_LIBS(-lmytinfo)])
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"
974 AC_CHECK_LIB(cur_colr,initscr,[
975 CF_ADD_LIBS(-lcur_colr)
976 ac_cv_func_initscr=yes
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
987 case `arch 2>/dev/null` in
991 CF_ADD_LIBDIR(/lib64)
1002 if test "x$cf_cv_screen" = "xcurses_5lib"
1004 if test -d /usr/5lib ; then
1005 CF_ADD_LIBDIR(/usr/5lib)
1006 CF_ADD_LIBS(-lcurses -ltermcap)
1009 ac_cv_func_initscr=yes
1013 if test ".$ac_cv_func_initscr" != .yes ; then
1014 cf_save_LIBS="$LIBS"
1016 if test ".${cf_cv_ncurses_version:-no}" != .no
1018 cf_check_list="ncurses curses cursesX"
1020 cf_check_list="cursesX curses ncurses"
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
1027 AC_CHECK_FUNC(tgoto,[cf_term_lib=predefined],[
1028 for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown
1030 AC_CHECK_LIB($cf_term_lib,tgoto,[
1031 : "${cf_nculib_root:=$cf_term_lib}"
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
1042 for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown
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}>],
1051 AC_MSG_RESULT($cf_result)
1052 test "$cf_result" = yes && break
1053 elif test "$cf_curs_lib" = "$cf_term_lib" ; then
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);],
1061 LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
1062 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
1067 AC_MSG_RESULT($cf_result)
1068 test "$cf_result" != error && break
1072 test "$cf_curs_lib" = unknown && AC_MSG_ERROR(no curses library found)
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],
1086 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
1088 AC_CACHE_CHECK(for term.h, cf_cv_term_header,[
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.
1093 cf_header_list="term.h ncurses/term.h ncursesw/term.h"
1095 case "${cf_cv_ncurses_header:-curses.h}" in
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"
1102 for cf_header in $cf_header_list
1105 #include <${cf_cv_ncurses_header:-curses.h}>
1106 #include <${cf_header}>],
1107 [WINDOW *x; (void)x],
1108 [cf_cv_term_header=$cf_header
1110 [cf_cv_term_header=no])
1113 case "$cf_cv_term_header" in
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
1120 #include <${cf_cv_ncurses_header:-curses.h}>
1121 #ifdef NCURSES_VERSION
1122 #include <${cf_header}>
1126 [WINDOW *x; (void)x],
1127 [cf_cv_term_header=$cf_header
1129 [cf_cv_term_header=no])
1135 case "$cf_cv_term_header" in
1137 AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
1140 AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
1143 AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
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
1154 AC_DEFUN([CF_CURSES_UNCTRL_H],
1156 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
1158 AC_CACHE_CHECK(for unctrl.h, cf_cv_unctrl_header,[
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.
1163 cf_header_list="unctrl.h ncurses/unctrl.h ncursesw/unctrl.h"
1165 case "${cf_cv_ncurses_header:-curses.h}" in
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"
1172 for cf_header in $cf_header_list
1175 #include <${cf_cv_ncurses_header:-curses.h}>
1176 #include <${cf_header}>],
1177 [WINDOW *x; (void)x],
1178 [cf_cv_unctrl_header=$cf_header
1180 [cf_cv_unctrl_header=no])
1184 case "$cf_cv_unctrl_header" in
1186 AC_MSG_WARN(unctrl.h header not found)
1190 case "$cf_cv_unctrl_header" in
1192 AC_DEFINE(HAVE_UNCTRL_H,1,[Define to 1 if we have unctrl.h])
1195 AC_DEFINE(HAVE_NCURSES_UNCTRL_H,1,[Define to 1 if we have ncurses/unctrl.h])
1198 AC_DEFINE(HAVE_NCURSESW_UNCTRL_H,1,[Define to 1 if we have ncursesw/unctrl.h])
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],
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
1213 #ifndef _XOPEN_SOURCE_EXTENDED
1214 #define _XOPEN_SOURCE_EXTENDED
1216 #include <${cf_cv_ncurses_header:-curses.h}>],
1217 [void *foo = &(${name}['k']); (void)foo],
1218 [cf_cv_curses_wacs_map=$name
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])
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],
1232 AC_REQUIRE([CF_CURSES_WACS_MAP])
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
1239 #ifndef _XOPEN_SOURCE_EXTENDED
1240 #define _XOPEN_SOURCE_EXTENDED
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])
1248 #ifndef _XOPEN_SOURCE_EXTENDED
1249 #define _XOPEN_SOURCE_EXTENDED
1251 #include <${cf_cv_ncurses_header:-curses.h}>],
1252 [cchar_t *foo = WACS_PLUS; (void)foo],
1253 [cf_cv_curses_wacs_symbols=yes])
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])
1259 dnl ---------------------------------------------------------------------------
1260 dnl CF_DIRNAME version: 5 updated: 2020/12/31 20:19:42
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
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.
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
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],
1283 ECHO_LD='@echo linking [$]@;'
1284 RULE_CC='@echo compiling [$]<'
1285 SHOW_CC='@echo compiling [$]@'
1294 AC_MSG_RESULT($enableval)
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
1306 AC_DEFUN([CF_DISABLE_LEAKS],[
1308 AC_REQUIRE([CF_WITH_DMALLOC])
1309 AC_REQUIRE([CF_WITH_DBMALLOC])
1310 AC_REQUIRE([CF_WITH_VALGRIND])
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],
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)
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.])
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],
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)
1344 if test "$enable_rpath_hack" = yes ; then
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.
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.
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],
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)
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])
1379 AC_CHECK_LIB(bsd,strlcat,[
1381 AC_CHECK_HEADERS(bsd/string.h)
1382 AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
1385 AC_CHECK_FUNCS( strlcpy snprintf )
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
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
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"
1412 ifelse($2,,[CF_GCC_ATTRIBUTES])
1415 ifelse($2,yes,[CF_GCC_ATTRIBUTES])
1418 dnl ---------------------------------------------------------------------------
1419 dnl CF_FIND_LIBRARY version: 11 updated: 2021/01/02 09:31:20
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
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
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],
1435 eval 'cf_cv_have_lib_'"$1"'=no'
1438 eval 'cf_cv_have_lib_'"$1"'=yes',[
1439 cf_save_LIBS="$LIBS"
1440 AC_MSG_CHECKING(for $5 in -l$1)
1442 AC_TRY_LINK([$3],[$4],
1444 eval 'cf_cv_have_lib_'"$1"'=yes'
1447 CF_LIBRARY_PATH(cf_search,$2)
1448 for cf_libdir in $cf_search
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],
1454 eval 'cf_cv_have_lib_'"$1"'=yes'
1457 LIBS="$cf_save_LIBS"])
1461 eval 'cf_found_library="[$]cf_cv_have_lib_'"$1"\"
1463 if test "$cf_found_library" = no ; then
1464 AC_MSG_ERROR(Cannot link $1 library)
1468 dnl ---------------------------------------------------------------------------
1469 dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42
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.
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
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],[
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=
1496 CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)])
1498 cf_save_LIBS="$LIBS"
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
1506 LIBS="-l$3 $7 $cf_save_LIBS"
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"
1514 cf_cv_find_linkage_$3=no
1515 LIBS="$cf_save_LIBS"
1517 CF_VERBOSE(find linkage for $3 library)
1518 CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
1520 cf_save_CPPFLAGS="$CPPFLAGS"
1521 cf_test_CPPFLAGS="$CPPFLAGS"
1523 CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
1524 for cf_cv_header_path_$3 in $cf_search
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"
1535 CPPFLAGS="$cf_save_CPPFLAGS"
1540 if test "$cf_cv_find_linkage_$3" = maybe ; then
1542 CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
1544 cf_save_LIBS="$LIBS"
1545 cf_save_LDFLAGS="$LDFLAGS"
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"
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
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"
1571 CPPFLAGS="$cf_save_CPPFLAGS"
1572 LIBS="$cf_save_LIBS"
1573 LDFLAGS="$cf_save_LDFLAGS"
1577 CPPFLAGS="$cf_save_CPPFLAGS"
1578 LDFLAGS="$cf_save_LDFLAGS"
1582 cf_cv_find_linkage_$3=no
1587 LIBS="$cf_save_LIBS"
1589 if test "$cf_cv_find_linkage_$3" = yes ; then
1591 CF_ADD_INCDIR($cf_cv_header_path_$3)
1592 CF_ADD_LIBDIR($cf_cv_library_path_$3)
1596 ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
1599 dnl ---------------------------------------------------------------------------
1600 dnl CF_FIX_WARNINGS version: 3 updated: 2020/12/31 18:40:20
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
1606 dnl $1 = variable name to repair
1607 define([CF_FIX_WARNINGS],[
1608 if test "$GCC" = yes || test "$GXX" = yes
1612 CF_VERBOSE(repairing $1: [$]$1)
1614 for cf_temp_scan in [$]$1
1616 case "x$cf_temp_scan" in
1618 CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan)
1621 CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
1626 CF_VERBOSE(... fixed [$]$1)
1627 CF_VERBOSE(... extra $EXTRA_CFLAGS)
1631 AC_SUBST(EXTRA_CFLAGS)
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],
1640 AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
1642 #include <${cf_cv_ncurses_header:-curses.h}>
1646 sprintf(temp, "%s\\n", curses_version());
1647 ${cf_cv_main_return:-return}(0);
1649 ,[cf_cv_func_curses_version=yes]
1650 ,[cf_cv_func_curses_version=no]
1651 ,[cf_cv_func_curses_version=unknown])
1653 test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 if we have curses_version function])
1655 dnl ---------------------------------------------------------------------------
1656 dnl CF_FUNC_OPENPTY version: 6 updated: 2021/01/01 13:31:04
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],
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
1669 #include <$cf_header>
1671 int x = openpty((int *)0, (int *)0, (char *)0,
1672 (struct termios *)0, (struct winsize *)0);
1674 cf_cv_func_openpty=$cf_header
1677 cf_cv_func_openpty=no
1680 LIBS="$cf_save_LIBS"
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
1693 if test "$GCC" = yes || test "$GXX" = yes
1695 cat > conftest.i <<EOF
1697 #define GCC_PRINTF 0
1702 #ifndef GCC_NORETURN
1703 #define GCC_NORETURN /* nothing */
1706 #define GCC_UNUSED /* nothing */
1709 if test "$GCC" = yes
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"
1718 #define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
1720 #define GCC_PRINTFLIKE(fmt,var) /*nothing*/
1723 #define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
1725 #define GCC_SCANFLIKE(fmt,var) /*nothing*/
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; }
1732 cf_printf_attribute=no
1733 cf_scanf_attribute=no
1734 for cf_attribute in scanf printf unused noreturn
1736 CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
1737 cf_directive="__attribute__(($cf_attribute))"
1738 echo "checking for $CC $cf_directive" 1>&AC_FD_CC
1740 case "$cf_attribute" in
1742 cf_printf_attribute=yes
1743 cat >conftest.h <<EOF
1744 #define GCC_$cf_ATTRIBUTE 1
1748 cf_scanf_attribute=yes
1749 cat >conftest.h <<EOF
1750 #define GCC_$cf_ATTRIBUTE 1
1754 cat >conftest.h <<EOF
1755 #define GCC_$cf_ATTRIBUTE $cf_directive
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
1765 AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
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.])
1773 AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
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.])
1781 AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
1784 AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
1790 ${FGREP-fgrep} define conftest.i >>confdefs.h
1795 dnl ---------------------------------------------------------------------------
1796 dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
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])
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)
1809 CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
1810 CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
1812 dnl ---------------------------------------------------------------------------
1813 dnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59
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:
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".
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
1831 dnl If $with_ext_const is "yes", add a check for -Wwrite-strings
1833 AC_DEFUN([CF_GCC_WARNINGS],
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) ; }
1841 if test "$INTEL_COMPILER" = yes
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
1854 AC_CHECKING([for $CC warning options])
1855 cf_save_CFLAGS="$CFLAGS"
1856 EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
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"
1874 CFLAGS="$cf_save_CFLAGS"
1875 elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
1877 AC_CHECKING([for $CC warning options])
1878 cf_save_CFLAGS="$CFLAGS"
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 \
1887 Wdeclaration-after-statement \
1890 Wmissing-declarations \
1891 Wmissing-prototypes \
1895 Wstrict-prototypes \
1896 Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
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)
1903 case "$GCC_VERSION" in
1905 CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
1910 case "$GCC_VERSION" in
1912 CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
1917 EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
1920 CFLAGS="$cf_save_CFLAGS"
1924 AC_SUBST(EXTRA_CFLAGS)
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],
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
1939 #include <$cf_header>],
1940 [int x = optind; char *y = optarg; (void)x; (void)y],
1941 [cf_cv_getopt_header=$cf_header
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])
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])
1952 dnl ---------------------------------------------------------------------------
1953 dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
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.
1960 dnl Well, yes we could work around it...
1963 dnl $1 is the nominal value for _XOPEN_SOURCE
1964 AC_DEFUN([CF_GNU_SOURCE],
1966 cf_gnu_xopen_source=ifelse($1,,500,$1)
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
1972 #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
1975 # error not GNU C library
1977 [cf_cv_gnu_library=yes],
1978 [cf_cv_gnu_library=no])
1981 if test x$cf_cv_gnu_library = xyes; then
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
1986 AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
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)
1992 #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
1995 # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
1997 [cf_cv_gnu_library_219=yes],
1998 [cf_cv_gnu_library_219=no])
2002 if test "x$cf_cv_gnu_library_219" = xyes; then
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)
2008 #include <sys/types.h>
2010 #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
2013 # error GNU C library is too old
2015 [cf_cv_gnu_dftsrc_219=yes],
2016 [cf_cv_gnu_dftsrc_219=no])
2018 test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
2020 cf_cv_gnu_dftsrc_219=maybe
2023 if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
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
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
2037 [cf_cv_gnu_source=no],
2038 [cf_cv_gnu_source=yes])
2043 if test "$cf_cv_gnu_source" = yes
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
2051 [cf_cv_default_source=no],
2052 [cf_cv_default_source=yes])
2054 if test "$cf_cv_default_source" = yes
2056 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
2063 dnl ---------------------------------------------------------------------------
2064 dnl CF_HEADER_PATH version: 15 updated: 2021/01/01 13:31:04
2066 dnl Construct a search-list of directories for a nonstandard header-file
2069 dnl $1 = the variable to return as result
2070 dnl $2 = the package name
2071 AC_DEFUN([CF_HEADER_PATH],
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
2080 case "$cf_header_path" in
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"
2090 # add the variations for the package we are looking for
2091 CF_SUBDIR_PATH($1,$2,include)
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"
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"
2107 $1="[$]$1 $cf_header_path_list"
2109 dnl ---------------------------------------------------------------------------
2110 dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54
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
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],
2123 test -f $1 || ( test -f ../$1 && cp ../$1 ./ )
2125 dnl ---------------------------------------------------------------------------
2126 dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21
2128 dnl prompt for/fill-in useful install-program options
2129 AC_DEFUN([CF_INSTALL_OPTS],
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],
2142 AC_MSG_CHECKING(if install needs to be told about ownership)
2143 case `$ac_config_guess` in
2152 AC_MSG_RESULT($with_install_o)
2153 if test "x$with_install_o" = xyes
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'`"
2160 AC_SUBST(INSTALL_OPT_O)
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],
2170 : "${INSTALL:=install}"
2171 AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[
2176 if $INSTALL -p conftest.in conftest.out 2>/dev/null
2178 if test -f conftest.out/conftest.in
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
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],
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)
2211 if test "$enable_stripping" = yes
2217 AC_SUBST(INSTALL_OPT_S)
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.
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.
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
2237 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
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"
2244 #ifdef __INTEL_COMPILER
2248 ],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
2249 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
2251 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
2252 AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
2257 dnl ---------------------------------------------------------------------------
2258 dnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04
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],
2264 AC_REQUIRE([CF_CHECK_CACHE])
2267 if test "x$cf_cv_enable_rpath" != xno
2269 AC_MSG_CHECKING(for an rpath option)
2270 case "$cf_cv_system_name" in
2272 if test "$GCC" = yes; then
2273 LD_RPATH_OPT="-Wl,-rpath,"
2275 LD_RPATH_OPT="-rpath "
2278 (linux*|gnu*|k*bsd*-gnu|freebsd*)
2279 LD_RPATH_OPT="-Wl,-rpath,"
2281 (openbsd[[2-9]].*|mirbsd*)
2282 LD_RPATH_OPT="-Wl,-rpath,"
2285 LD_RPATH_OPT="-rpath "
2288 LD_RPATH_OPT="-Wl,-rpath,"
2291 LD_RPATH_OPT="-rpath "
2299 AC_MSG_RESULT($LD_RPATH_OPT)
2301 case "x$LD_RPATH_OPT" in
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 "
2314 dnl ---------------------------------------------------------------------------
2315 dnl CF_LIBRARY_PATH version: 11 updated: 2021/01/01 13:31:04
2317 dnl Construct a search-list of directories for a nonstandard library-file
2320 dnl $1 = the variable to return as result
2321 dnl $2 = the package name
2322 AC_DEFUN([CF_LIBRARY_PATH],
2325 cf_library_path_list=""
2326 if test -n "${LDFLAGS}${LIBS}" ; then
2327 for cf_library_path in $LDFLAGS $LIBS
2329 case "$cf_library_path" in
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"
2339 CF_SUBDIR_PATH($1,$2,lib)
2341 $1="$cf_library_path_list [$]$1"
2343 dnl ---------------------------------------------------------------------------
2344 dnl CF_MAKE_PHONY version: 3 updated: 2021/01/08 16:08:21
2346 dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which
2347 dnl acts as a placeholder.
2349 dnl The ".PHONY" feature was proposed in 2011 here
2350 dnl https://www.austingroupbugs.net/view.php?id=523
2351 dnl and is scheduled for release in P1003.1 Issue 8 (late 2022).
2353 dnl This is not supported by SVr4 make (or SunOS 4, 4.3SD, etc), but works with
2354 dnl a few others (i.e., GNU make and the non-POSIX "BSD" make):
2356 dnl + This is a GNU make feature (since April 1988, but in turn from binutils,
2357 dnl date unspecified).
2359 dnl + It was adopted in NetBSD make in June 1995.
2361 dnl + The other BSD make programs are derived from the NetBSD make (and for
2362 dnl that reason are not actually different "implementations").
2364 dnl + Some features of NetBSD make were actually adapted from pmake, which
2365 dnl began as a modified GNU make starting in 1993.
2367 dnl + Version 3.8 of the dmake program in January 1992 also implemented this
2368 dnl GNU make extension, but is less well known than the BSD make.
2369 AC_DEFUN([CF_MAKE_PHONY],[
2370 AC_CACHE_CHECK(for \".PHONY\" make-support, cf_cv_make_PHONY,[
2373 mkdir conftest || exit 1
2375 cat >makefile <<'CF_EOF'
2379 @echo "** making [$]@ [$](DATA)"
2381 @echo "** making [$]@ [$](DATA)"
2383 @echo "** making [$]@ [$](DATA)"
2384 echo [$](DATA) > [$]@
2386 @echo "** making [$]@ [$](DATA)"
2387 echo [$](DATA) > [$]@
2389 for cf_data in 1 2 3
2391 ${MAKE:-make} always DATA=$cf_data
2392 ${MAKE:-make} once DATA=$cf_data
2393 ${MAKE:-make} -t always once
2394 if test -f always ; then
2395 echo "no (case 1)" > ../conftest.tmp
2396 elif test ! -f always.out ; then
2397 echo "no (case 2)" > ../conftest.tmp
2398 elif test ! -f once.out ; then
2399 echo "no (case 3)" > ../conftest.tmp
2400 elif ! cmp -s always.out once.out ; then
2401 echo "no (case 4)" > ../conftest.tmp
2402 diff always.out once.out
2404 cf_check="`cat always.out`"
2405 if test "x$cf_check" != "x$cf_data" ; then
2406 echo "no (case 5)" > ../conftest.tmp
2408 echo yes > ../conftest.tmp
2416 cf_cv_make_PHONY="`cat conftest.tmp`"
2421 test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY=
2422 test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY=
2423 AC_SUBST(MAKE_NO_PHONY)
2424 AC_SUBST(MAKE_PHONY)
2426 dnl ---------------------------------------------------------------------------
2427 dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
2429 dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have
2430 dnl a monocase filesystem.
2431 AC_DEFUN([CF_MAKE_TAGS],[
2432 AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
2434 AC_CHECK_PROGS(CTAGS, exctags ctags)
2435 AC_CHECK_PROGS(ETAGS, exetags etags)
2437 AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
2439 if test "$cf_cv_mixedcase" = yes ; then
2440 AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
2445 if test "$MAKE_UPPER_TAGS" = yes ; then
2451 if test "$MAKE_LOWER_TAGS" = yes ; then
2460 AC_SUBST(MAKE_UPPER_TAGS)
2461 AC_SUBST(MAKE_LOWER_TAGS)
2463 dnl ---------------------------------------------------------------------------
2464 dnl CF_MATH_LIB version: 10 updated: 2020/12/31 18:40:20
2466 dnl Checks for libraries. At least one UNIX system, Apple Macintosh
2467 dnl Rhapsody 5.5, does not have -lm. We cannot use the simpler
2468 dnl AC_CHECK_LIB(m,sin), because that fails for C++.
2469 AC_DEFUN([CF_MATH_LIB],
2471 AC_CACHE_CHECK(if -lm needed for math functions,
2478 [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)],
2479 [cf_cv_need_libm=no],
2480 [cf_cv_need_libm=yes])])
2481 if test "$cf_cv_need_libm" = yes
2488 dnl ---------------------------------------------------------------------------
2489 dnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59
2490 dnl ----------------------
2491 dnl Check if the file-system supports mixed-case filenames. If we're able to
2492 dnl create a lowercase name and see it as uppercase, it doesn't support that.
2493 AC_DEFUN([CF_MIXEDCASE_FILENAMES],
2495 AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
2496 if test "$cross_compiling" = yes ; then
2497 case "$target_alias" in
2498 (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*)
2506 rm -f conftest CONFTEST
2508 if test -f CONFTEST ; then
2513 rm -f conftest CONFTEST
2516 test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
2518 dnl ---------------------------------------------------------------------------
2519 dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
2521 dnl Write a debug message to config.log, along with the line number in the
2522 dnl configure script.
2523 AC_DEFUN([CF_MSG_LOG],[
2524 echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
2526 dnl ---------------------------------------------------------------------------
2527 dnl CF_NCURSES_CC_CHECK version: 5 updated: 2020/12/31 20:19:42
2528 dnl -------------------
2529 dnl Check if we can compile with ncurses' header file
2530 dnl $1 is the cache variable to set
2531 dnl $2 is the header-file to include
2532 dnl $3 is the root name (ncurses or ncursesw)
2533 AC_DEFUN([CF_NCURSES_CC_CHECK],[
2535 ]ifelse($3,ncursesw,[
2536 #define _XOPEN_SOURCE_EXTENDED
2537 #undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */
2538 #define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */
2541 #ifdef NCURSES_VERSION
2542 ]ifelse($3,ncursesw,[
2547 printf("%s\\n", NCURSES_VERSION);
2559 dnl ---------------------------------------------------------------------------
2560 dnl CF_NCURSES_CONFIG version: 27 updated: 2021/05/19 19:35:25
2561 dnl -----------------
2562 dnl Tie together the configure-script macros for ncurses, preferring these in
2564 dnl a) ".pc" files for pkg-config, using $NCURSES_CONFIG_PKG
2565 dnl b) the "-config" script from ncurses, using $NCURSES_CONFIG
2566 dnl c) just plain libraries
2568 dnl $1 is the root library name (default: "ncurses")
2569 AC_DEFUN([CF_NCURSES_CONFIG],[
2570 AC_REQUIRE([CF_PKG_CONFIG])
2571 cf_ncuconfig_root=ifelse($1,,ncurses,$1)
2572 cf_have_ncuconfig=no
2574 if test "x${PKG_CONFIG:=none}" != xnone; then
2575 AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root)
2576 if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
2579 AC_MSG_CHECKING(if the $cf_ncuconfig_root package files work)
2580 cf_have_ncuconfig=unknown
2582 cf_save_CFLAGS="$CFLAGS"
2583 cf_save_CPPFLAGS="$CPPFLAGS"
2584 cf_save_LIBS="$LIBS"
2586 cf_pkg_cflags="`$PKG_CONFIG --cflags $cf_ncuconfig_root`"
2587 cf_pkg_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`"
2589 # while -W for passing linker flags is prevalent, it is not "standard".
2590 # At least one wrapper for c89/c99 (in Apple's xcode) has its own
2591 # incompatible _and_ non-standard -W option which gives an error. Work
2592 # around that pitfall.
2593 case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in
2595 CF_ADD_CFLAGS($cf_pkg_cflags)
2596 CF_ADD_LIBS($cf_pkg_libs)
2598 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
2599 [initscr(); mousemask(0,0); tigetstr((char *)0);],
2600 [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
2602 { const char *xx = curses_version(); return (xx == 0); }],
2603 [cf_test_ncuconfig=yes],
2604 [cf_test_ncuconfig=no],
2605 [cf_test_ncuconfig=maybe])],
2606 [cf_test_ncuconfig=no])
2608 CFLAGS="$cf_save_CFLAGS"
2609 CPPFLAGS="$cf_save_CPPFLAGS"
2610 LIBS="$cf_save_LIBS"
2612 if test "x$cf_test_ncuconfig" != xyes; then
2613 cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[[^ ]]*//g'`
2614 cf_pkg_cflags="$cf_temp"
2615 cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[[^ ]]*//g'`
2616 cf_pkg_libs="$cf_temp"
2621 CF_ADD_CFLAGS($cf_pkg_cflags)
2622 CF_ADD_LIBS($cf_pkg_libs)
2624 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
2625 [initscr(); mousemask(0,0); tigetstr((char *)0);],
2626 [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
2628 { const char *xx = curses_version(); return (xx == 0); }],
2629 [cf_have_ncuconfig=yes],
2630 [cf_have_ncuconfig=no],
2631 [cf_have_ncuconfig=maybe])],
2632 [cf_have_ncuconfig=no])
2633 AC_MSG_RESULT($cf_have_ncuconfig)
2634 test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
2635 if test "$cf_have_ncuconfig" != "yes"
2637 CPPFLAGS="$cf_save_CPPFLAGS"
2638 LIBS="$cf_save_LIBS"
2639 NCURSES_CONFIG_PKG=none
2641 AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2642 NCURSES_CONFIG_PKG=$cf_ncuconfig_root
2648 NCURSES_CONFIG_PKG=none
2651 NCURSES_CONFIG_PKG=none
2654 if test "x$cf_have_ncuconfig" = "xno"; then
2655 cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
2657 CF_ACVERSION_CHECK(2.52,
2658 [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)],
2659 [AC_PATH_PROGS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)])
2661 if test "$NCURSES_CONFIG" != none ; then
2663 CF_ADD_CFLAGS(`$NCURSES_CONFIG --cflags`)
2664 CF_ADD_LIBS(`$NCURSES_CONFIG --libs`)
2666 # even with config script, some packages use no-override for curses.h
2667 CF_CURSES_HEADER(ifelse($1,,ncurses,$1))
2669 dnl like CF_NCURSES_CPPFLAGS
2670 AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2672 dnl like CF_NCURSES_LIBS
2673 CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root)
2674 AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
2676 dnl like CF_NCURSES_VERSION
2677 cf_cv_ncurses_version="`$NCURSES_CONFIG --version`"
2681 CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1))
2682 CF_NCURSES_LIBS(ifelse($1,,ncurses,$1))
2689 dnl ---------------------------------------------------------------------------
2690 dnl CF_NCURSES_CPPFLAGS version: 22 updated: 2021/01/02 09:31:20
2691 dnl -------------------
2692 dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting
2693 dnl the CPPFLAGS variable so we can include its header.
2695 dnl The header files may be installed as either curses.h, or ncurses.h (would
2696 dnl be obsolete, except that some packagers prefer this name to distinguish it
2697 dnl from a "native" curses implementation). If not installed for overwrite,
2698 dnl the curses.h file would be in an ncurses subdirectory (e.g.,
2699 dnl /usr/include/ncurses), but someone may have installed overwriting the
2700 dnl vendor's curses. Only very old versions (pre-1.9.2d, the first autoconf'd
2701 dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in
2704 dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header
2705 dnl is already in the include-path, don't even bother with this, since we cannot
2706 dnl easily determine which file it is. In this case, it has to be <curses.h>.
2708 dnl The optional parameter gives the root name of the library, in case it is
2709 dnl not installed as the default curses library. That is how the
2710 dnl wide-character version of ncurses is installed.
2711 AC_DEFUN([CF_NCURSES_CPPFLAGS],
2712 [AC_REQUIRE([CF_WITH_CURSES_DIR])
2714 AC_PROVIDE([CF_CURSES_CPPFLAGS])dnl
2715 cf_ncuhdr_root=ifelse($1,,ncurses,$1)
2717 test -n "$cf_cv_curses_dir" && \
2718 test "$cf_cv_curses_dir" != "no" && { \
2719 CF_ADD_INCDIR($cf_cv_curses_dir/include/$cf_ncuhdr_root)
2722 AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[
2723 cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h"
2724 { test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw; } && cf_header_list="$cf_header_list curses.h ncurses.h"
2725 for cf_header in $cf_header_list
2727 CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1)
2728 test "$cf_cv_ncurses_h" != no && break
2735 # some applications need this, but should check for NCURSES_VERSION
2736 AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2740 dnl ---------------------------------------------------------------------------
2741 dnl CF_NCURSES_EXT_FUNCS version: 4 updated: 2012/10/06 16:39:58
2742 dnl --------------------
2743 dnl Since 2007/11/17, ncurses has defined NCURSES_EXT_FUNCS; earlier versions
2744 dnl may provide these functions. Define the symbol if it is not defined, and
2746 AC_DEFUN([CF_NCURSES_EXT_FUNCS],
2748 AC_CACHE_CHECK(for ncurses extended functions,cf_cv_ncurses_ext_funcs,[
2750 #include <${cf_cv_ncurses_header:-curses.h}>],
2752 int x = NCURSES_EXT_FUNCS
2753 ],[cf_cv_ncurses_ext_funcs=defined],[
2755 #include <${cf_cv_ncurses_header:-curses.h}>],
2757 (void) assume_default_colors (0, 0);
2758 (void) curses_version ();
2759 (void) define_key (0, 0);
2760 (void) is_term_resized (0, 0);
2761 (void) key_defined (0);
2762 (void) keybound (0, 0);
2763 (void) keyok (0, 0);
2764 (void) resize_term (0, 0);
2765 (void) resizeterm (0, 0);
2766 (void) use_default_colors ();
2767 (void) use_extended_names (0);
2768 (void) wresize (0, 0, 0);],
2769 [cf_cv_ncurses_ext_funcs=yes],
2770 [cf_cv_ncurses_ext_funcs=no])
2773 test "$cf_cv_ncurses_ext_funcs" = yes && AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 if we have ncurses extensions])
2775 dnl ---------------------------------------------------------------------------
2776 dnl CF_NCURSES_HEADER version: 7 updated: 2021/01/04 19:33:05
2777 dnl -----------------
2778 dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
2779 dnl variations of ncurses' installs.
2781 dnl See also CF_CURSES_HEADER, which sets the same cache variable.
2782 AC_DEFUN([CF_NCURSES_HEADER],[
2784 if test "$cf_cv_ncurses_h" != no ; then
2785 cf_cv_ncurses_header=$cf_cv_ncurses_h
2788 AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[
2789 test -n "$verbose" && echo
2790 CF_HEADER_PATH(cf_search,$cf_ncuhdr_root)
2791 test -n "$verbose" && echo "search path $cf_search"
2792 cf_save2_CPPFLAGS="$CPPFLAGS"
2793 for cf_incdir in $cf_search
2795 CF_ADD_INCDIR($cf_incdir)
2800 CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1)
2801 if test "$cf_cv_ncurses_h2" != no ; then
2802 cf_cv_ncurses_h2=$cf_incdir/$cf_header
2803 test -n "$verbose" && echo $ECHO_N " ... found $ECHO_C" 1>&AC_FD_MSG
2806 test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG
2808 CPPFLAGS="$cf_save2_CPPFLAGS"
2809 test "$cf_cv_ncurses_h2" != no && break
2811 test "$cf_cv_ncurses_h2" = no && AC_MSG_ERROR(not found)
2814 CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2)
2815 cf_cv_ncurses_header="`basename "$cf_cv_ncurses_h2"`"
2816 if test "`basename "$cf_1st_incdir"`" = "$cf_ncuhdr_root" ; then
2817 cf_cv_ncurses_header="$cf_ncuhdr_root/$cf_cv_ncurses_header"
2819 CF_ADD_INCDIR($cf_1st_incdir)
2823 # Set definitions to allow ifdef'ing for ncurses.h
2825 case "$cf_cv_ncurses_header" in
2827 AC_DEFINE(HAVE_NCURSES_H,1,[Define to 1 if we have ncurses.h])
2831 case "$cf_cv_ncurses_header" in
2832 (ncurses/curses.h|ncurses/ncurses.h)
2833 AC_DEFINE(HAVE_NCURSES_NCURSES_H,1,[Define to 1 if we have ncurses/ncurses.h])
2835 (ncursesw/curses.h|ncursesw/ncurses.h)
2836 AC_DEFINE(HAVE_NCURSESW_NCURSES_H,1,[Define to 1 if we have ncursesw/ncurses.h])
2841 dnl ---------------------------------------------------------------------------
2842 dnl CF_NCURSES_LIBS version: 20 updated: 2021/01/03 08:05:37
2844 dnl Look for the ncurses library. This is a little complicated on Linux,
2845 dnl because it may be linked with the gpm (general purpose mouse) library.
2846 dnl Some distributions have gpm linked with (bsd) curses, which makes it
2847 dnl unusable with ncurses. However, we don't want to link with gpm unless
2848 dnl ncurses has a dependency, since gpm is normally set up as a shared library,
2849 dnl and the linker will record a dependency.
2851 dnl The optional parameter gives the root name of the library, in case it is
2852 dnl not installed as the default curses library. That is how the
2853 dnl wide-character version of ncurses is installed.
2854 AC_DEFUN([CF_NCURSES_LIBS],
2855 [AC_REQUIRE([CF_NCURSES_CPPFLAGS])
2857 cf_nculib_root=ifelse($1,,ncurses,$1)
2858 # This works, except for the special case where we find gpm, but
2859 # ncurses is in a nonstandard location via $LIBS, and we really want
2862 cf_ncurses_SAVE="$LIBS"
2863 AC_CHECK_LIB(gpm,Gpm_Open,
2864 [AC_CHECK_LIB(gpm,initscr,
2865 [LIBS="$cf_ncurses_SAVE"],
2866 [cf_ncurses_LIBS="-lgpm"])])
2870 # This is only necessary if you are linking against an obsolete
2871 # version of ncurses (but it should do no harm, since it's static).
2872 if test "$cf_nculib_root" = ncurses ; then
2873 AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"])
2878 CF_ADD_LIBS($cf_ncurses_LIBS)
2880 if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no"
2882 CF_ADD_LIBS(-l$cf_nculib_root)
2884 CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root,
2885 [#include <${cf_cv_ncurses_header:-curses.h}>],
2890 if test -n "$cf_ncurses_LIBS" ; then
2891 AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS)
2892 cf_ncurses_SAVE="$LIBS"
2893 for p in $cf_ncurses_LIBS ; do
2894 q=`echo "$LIBS" | sed -e "s%$p %%" -e "s%$p$%%"`
2895 if test "$q" != "$LIBS" ; then
2899 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
2900 [initscr(); mousemask(0,0); tigetstr((char *)0);],
2901 [AC_MSG_RESULT(yes)],
2903 LIBS="$cf_ncurses_SAVE"])
2906 CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root)
2907 AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
2909 dnl ---------------------------------------------------------------------------
2910 dnl CF_NCURSES_PTHREADS version: 2 updated: 2016/04/22 05:07:41
2911 dnl -------------------
2912 dnl Use this followup check to ensure that we link with pthreads if ncurses
2914 AC_DEFUN([CF_NCURSES_PTHREADS],[
2915 : ${cf_nculib_root:=ifelse($1,,ncurses,$1)}
2916 AC_CHECK_LIB($cf_nculib_root,_nc_init_pthreads,
2917 cf_cv_ncurses_pthreads=yes,
2918 cf_cv_ncurses_pthreads=no)
2919 if test "$cf_cv_ncurses_pthreads" = yes
2921 CF_ADD_LIBS(-lpthread)
2924 dnl ---------------------------------------------------------------------------
2925 dnl CF_NCURSES_VERSION version: 16 updated: 2020/12/31 20:19:42
2926 dnl ------------------
2927 dnl Check for the version of ncurses, to aid in reporting bugs, etc.
2928 dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS. We don't use
2929 dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi.
2930 AC_DEFUN([CF_NCURSES_VERSION],
2932 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
2933 AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[
2934 cf_cv_ncurses_version=no
2936 rm -f "$cf_tempfile"
2938 #include <${cf_cv_ncurses_header:-curses.h}>
2942 FILE *fp = fopen("$cf_tempfile", "w");
2943 #ifdef NCURSES_VERSION
2944 # ifdef NCURSES_VERSION_PATCH
2945 fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH);
2947 fprintf(fp, "%s\\n", NCURSES_VERSION);
2951 fprintf(fp, "old\\n");
2956 ${cf_cv_main_return:-return}(0);
2958 cf_cv_ncurses_version=`cat $cf_tempfile`],,[
2960 # This will not work if the preprocessor splits the line after the
2961 # Autoconf token. The 'unproto' program does that.
2962 cat > "conftest.$ac_ext" <<EOF
2963 #include <${cf_cv_ncurses_header:-curses.h}>
2965 #ifdef NCURSES_VERSION
2966 Autoconf NCURSES_VERSION
2974 cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out"
2976 if test -f conftest.out ; then
2977 cf_out=`sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%' conftest.out`
2978 test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
2982 rm -f "$cf_tempfile"
2984 test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2986 dnl ---------------------------------------------------------------------------
2987 dnl CF_NCURSES_WRAP_PREFIX version: 1 updated: 2009/03/28 16:08:10
2988 dnl ----------------------
2989 dnl Check for ncurses "wrap-prefix" used for public variables which have been
2990 dnl wrapped with a function to help with concurrency control.
2991 AC_DEFUN([CF_NCURSES_WRAP_PREFIX],
2993 AC_MSG_CHECKING(for ncurses wrap-prefix)
2994 AC_ARG_WITH(ncurses-wrap-prefix,
2995 [ --with-ncurses-wrap-prefix naming-prefix for ncurses wrapped-variables],
2996 [NCURSES_WRAP_PREFIX=$withval],
2997 [NCURSES_WRAP_PREFIX=_nc_])
2998 AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
3000 AC_SUBST(NCURSES_WRAP_PREFIX)
3002 dnl ---------------------------------------------------------------------------
3003 dnl CF_NETBSD_FORM_H version: 2 updated: 2012/10/06 16:39:58
3004 dnl ----------------
3005 dnl Check for NetBSD's form.h, which is incompatible with SVr4 and ncurses.
3006 dnl Some workarounds are needed in client programs to allow them to compile.
3007 AC_DEFUN([CF_NETBSD_FORM_H],[
3008 AC_CACHE_CHECK(for NetBSD form.h,cf_cv_netbsd_form_h,[
3010 #include <${cf_cv_ncurses_header:-curses.h}>
3014 int y = current_field(form)->cursor_ypos;
3015 int x = current_field(form)->cursor_xpos;
3016 ],[cf_cv_netbsd_form_h=yes
3017 ],[cf_cv_netbsd_form_h=no])
3020 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])
3022 dnl ---------------------------------------------------------------------------
3023 dnl CF_NETBSD_MENU_H version: 2 updated: 2012/10/06 16:39:58
3024 dnl ----------------
3025 dnl Check for NetBSD's menu.h, which is incompatible with SVr4 and ncurses.
3026 dnl Some workarounds are needed in client programs to allow them to compile.
3027 AC_DEFUN([CF_NETBSD_MENU_H],[
3028 AC_CACHE_CHECK(for NetBSD menu.h,cf_cv_netbsd_menu_h,[
3030 #include <${cf_cv_ncurses_header:-curses.h}>
3034 int y = menu->max_item_width;
3035 ],[cf_cv_netbsd_menu_h=yes
3036 ],[cf_cv_netbsd_menu_h=no])
3039 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])
3041 dnl ---------------------------------------------------------------------------
3042 dnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41
3043 dnl ------------------
3044 dnl see CF_WITH_NO_LEAKS
3046 dnl $1 = option/name
3048 dnl $3 = symbol to define if the option is set
3049 dnl $4 = additional actions to take if the option is set
3050 AC_DEFUN([CF_NO_LEAKS_OPTION],[
3051 AC_MSG_CHECKING(if you want to use $1 for testing)
3054 [case "x$withval" in
3057 : "${with_cflags:=-g}"
3058 : "${enable_leaks:=no}"
3060 AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
3066 AC_MSG_RESULT(${with_$1:-no})
3068 case ".$with_cflags" in
3080 dnl ---------------------------------------------------------------------------
3081 dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20
3083 dnl Check the argument to see that it looks like a pathname. Rewrite it if it
3084 dnl begins with one of the prefix/exec_prefix variables, and then again if the
3085 dnl result begins with 'NONE'. This is necessary to work around autoconf's
3086 dnl delayed evaluation of those symbols.
3087 AC_DEFUN([CF_PATH_SYNTAX],[
3088 if test "x$prefix" != xNONE; then
3089 cf_path_syntax="$prefix"
3091 cf_path_syntax="$ac_default_prefix"
3095 (.\[$]\(*\)*|.\'*\'*)
3099 (.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
3101 (.\[$]\{*prefix\}*|.\[$]\{*dir\}*)
3105 $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
3110 $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
3113 ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
3117 dnl ---------------------------------------------------------------------------
3118 dnl CF_PDCURSES_X11 version: 15 updated: 2021/01/02 09:31:20
3120 dnl Configure for PDCurses' X11 library
3121 AC_DEFUN([CF_PDCURSES_X11],[
3122 AC_REQUIRE([CF_X_ATHENA])
3124 CF_ACVERSION_CHECK(2.52,
3125 [AC_CHECK_TOOLS(XCURSES_CONFIG, xcurses-config, none)],
3126 [AC_PATH_PROGS(XCURSES_CONFIG, xcurses-config, none)])
3128 if test "$XCURSES_CONFIG" != none ; then
3130 CF_ADD_CFLAGS(`$XCURSES_CONFIG --cflags`)
3131 CF_ADD_LIBS(`$XCURSES_CONFIG --libs`)
3133 cf_cv_lib_XCurses=yes
3137 LDFLAGS="$LDFLAGS $X_LIBS"
3138 CF_CHECK_CFLAGS($X_CFLAGS)
3139 AC_CHECK_LIB(X11,XOpenDisplay,
3140 [CF_ADD_LIBS(-lX11)],,
3141 [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])
3142 AC_CACHE_CHECK(for XCurses library,cf_cv_lib_XCurses,[
3143 CF_ADD_LIBS(-lXCurses)
3145 #include <xcurses.h>
3146 char *XCursesProgramName = "test";
3148 [cf_cv_lib_XCurses=yes],
3149 [cf_cv_lib_XCurses=no])
3154 if test "$cf_cv_lib_XCurses" = yes ; then
3155 AC_DEFINE(UNIX,1,[Define to 1 if using PDCurses on Unix])
3156 AC_DEFINE(XCURSES,1,[Define to 1 if using PDCurses on Unix])
3157 AC_CHECK_HEADER(xcurses.h, AC_DEFINE(HAVE_XCURSES,1,[Define to 1 if using PDCurses on Unix]))
3159 AC_MSG_ERROR(Cannot link with XCurses)
3162 dnl ---------------------------------------------------------------------------
3163 dnl CF_PKG_CONFIG version: 11 updated: 2021/01/01 13:31:04
3165 dnl Check for the package-config program, unless disabled by command-line.
3166 AC_DEFUN([CF_PKG_CONFIG],
3168 AC_MSG_CHECKING(if you want to use pkg-config)
3169 AC_ARG_WITH(pkg-config,
3170 [ --with-pkg-config{=path} enable/disable use of pkg-config],
3171 [cf_pkg_config=$withval],
3172 [cf_pkg_config=yes])
3173 AC_MSG_RESULT($cf_pkg_config)
3175 case "$cf_pkg_config" in
3180 CF_ACVERSION_CHECK(2.52,
3181 [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
3182 [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
3189 test -z "$PKG_CONFIG" && PKG_CONFIG=none
3190 if test "$PKG_CONFIG" != none ; then
3191 CF_PATH_SYNTAX(PKG_CONFIG)
3192 elif test "x$cf_pkg_config" != xno ; then
3193 AC_MSG_WARN(pkg-config is not installed)
3196 AC_SUBST(PKG_CONFIG)
3198 dnl ---------------------------------------------------------------------------
3199 dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
3200 dnl -----------------
3201 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
3203 dnl POSIX.1-1990 _POSIX_SOURCE
3204 dnl POSIX.1-1990 and _POSIX_SOURCE and
3205 dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2
3207 dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L
3208 dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L
3209 dnl X/Open 2000 _POSIX_C_SOURCE=200112L
3212 dnl $1 is the nominal value for _POSIX_C_SOURCE
3213 AC_DEFUN([CF_POSIX_C_SOURCE],
3214 [AC_REQUIRE([CF_POSIX_VISIBLE])dnl
3216 if test "$cf_cv_posix_visible" = no; then
3218 cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
3220 cf_save_CFLAGS="$CFLAGS"
3221 cf_save_CPPFLAGS="$CPPFLAGS"
3223 CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
3224 CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
3226 AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
3227 CF_MSG_LOG(if the symbol is already defined go no further)
3228 AC_TRY_COMPILE([#include <sys/types.h>],[
3229 #ifndef _POSIX_C_SOURCE
3232 [cf_cv_posix_c_source=no],
3233 [cf_want_posix_source=no
3234 case .$cf_POSIX_C_SOURCE in
3236 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
3239 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
3240 cf_want_posix_source=yes
3243 cf_want_posix_source=yes
3246 if test "$cf_want_posix_source" = yes ; then
3247 AC_TRY_COMPILE([#include <sys/types.h>],[
3248 #ifdef _POSIX_SOURCE
3251 cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
3253 CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
3254 CFLAGS="$cf_trim_CFLAGS"
3255 CPPFLAGS="$cf_trim_CPPFLAGS"
3256 CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
3257 CF_MSG_LOG(if the second compile does not leave our definition intact error)
3258 AC_TRY_COMPILE([#include <sys/types.h>],[
3259 #ifndef _POSIX_C_SOURCE
3262 [cf_cv_posix_c_source=no])
3263 CFLAGS="$cf_save_CFLAGS"
3264 CPPFLAGS="$cf_save_CPPFLAGS"
3268 if test "$cf_cv_posix_c_source" != no ; then
3269 CFLAGS="$cf_trim_CFLAGS"
3270 CPPFLAGS="$cf_trim_CPPFLAGS"
3271 CF_ADD_CFLAGS($cf_cv_posix_c_source)
3274 fi # cf_cv_posix_visible
3277 dnl ---------------------------------------------------------------------------
3278 dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
3279 dnl ----------------
3280 dnl POSIX documents test-macros which an application may set before any system
3281 dnl headers are included to make features available.
3283 dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
3284 dnl diverged from POSIX in 2002 by setting symbols which make all of the most
3285 dnl recent features visible in the system header files unless the application
3286 dnl overrides the corresponding test-macros. Doing that introduces portability
3289 dnl This macro makes a special check for the symbols used for this, to avoid a
3290 dnl conflicting definition.
3291 AC_DEFUN([CF_POSIX_VISIBLE],
3293 AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
3294 AC_TRY_COMPILE([#include <stdio.h>],[
3295 #if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
3296 && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
3297 && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
3298 && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
3299 #error conflicting symbols found
3301 ],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
3304 dnl ---------------------------------------------------------------------------
3305 dnl CF_PRG_RULES version: 2 updated: 2021/01/01 13:31:04
3307 dnl Append definitions and rules for the given programs to the subdirectory
3308 dnl Makefiles, and the recursion rule for the top-level Makefile.
3311 dnl $1 = script to run
3312 dnl $2 = list of subdirectories
3316 AC_DEFUN([CF_PRG_RULES],
3320 if test ! -d "$srcdir/$cf_dir" ; then
3322 elif test -f "$srcdir/$cf_dir/programs" ; then
3323 $AWK -f $1 "$srcdir/$cf_dir/programs" >>$cf_dir/Makefile
3328 dnl ---------------------------------------------------------------------------
3329 dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
3331 dnl standard check for CC, plus followup sanity checks
3332 dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
3333 AC_DEFUN([CF_PROG_CC],[
3334 CF_ACVERSION_CHECK(2.53,
3335 [AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
3336 AC_REQUIRE([AC_PROG_CC])],
3338 ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
3340 CF_ACVERSION_CHECK(2.52,
3345 dnl ---------------------------------------------------------------------------
3346 dnl CF_PROG_INSTALL version: 10 updated: 2021/01/04 19:33:05
3348 dnl Force $INSTALL to be an absolute-path. Otherwise, edit_man.sh and the
3349 dnl misc/tabset install won't work properly. Usually this happens only when
3350 dnl using the fallback mkinstalldirs script
3351 AC_DEFUN([CF_PROG_INSTALL],
3357 CF_DIRNAME(cf_dir,$INSTALL)
3358 test -z "$cf_dir" && cf_dir=.
3359 INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`"
3363 dnl ---------------------------------------------------------------------------
3364 dnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37
3366 AC_DEFUN([CF_PROG_LINT],
3368 AC_CHECK_PROGS(LINT, lint cppcheck splint)
3370 (xcppcheck|x*/cppcheck)
3371 test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
3376 dnl ---------------------------------------------------------------------------
3377 dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
3378 dnl ----------------
3379 dnl Remove all -U and -D options that refer to the given symbol from a list
3380 dnl of C compiler options. This works around the problem that not all
3381 dnl compilers process -U and -D options from left-to-right, so a -U option
3382 dnl cannot be used to cancel the effect of a preceding -D option.
3384 dnl $1 = target (which could be the same as the source variable)
3385 dnl $2 = source (including '$')
3386 dnl $3 = symbol to remove
3387 define([CF_REMOVE_DEFINE],
3390 sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \
3391 -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'`
3393 dnl ---------------------------------------------------------------------------
3394 dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
3395 dnl ---------------------
3396 dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
3397 dnl $1 = name of current macro
3398 define([CF_RESTORE_XTRA_FLAGS],
3400 LIBS="$cf_save_LIBS_$1"
3401 CFLAGS="$cf_save_CFLAGS_$1"
3402 CPPFLAGS="$cf_save_CPPFLAGS_$1"
3404 dnl ---------------------------------------------------------------------------
3405 dnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50
3407 AC_DEFUN([CF_RPATH_HACK],
3408 [AC_REQUIRE([AC_PROG_FGREP])dnl
3409 AC_REQUIRE([CF_LD_RPATH_OPT])dnl
3411 AC_MSG_CHECKING(for updated LDFLAGS)
3412 if test -n "$LD_RPATH_OPT" ; then
3413 AC_MSG_RESULT(maybe)
3415 AC_CHECK_PROGS(cf_ldd_prog,ldd,no)
3416 cf_rpath_list="/usr/lib /lib"
3417 if test "$cf_ldd_prog" != no
3421 AC_TRY_LINK([#include <stdio.h>],
3423 [cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
3424 cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`])
3426 # If we passed the link-test, but get a "not found" on a given library,
3427 # this could be due to inept reconfiguration of gcc to make it only
3428 # partly honor /usr/local/lib (or whatever). Sometimes this behavior
3429 # is intentional, e.g., installing gcc in /usr/bin and suppressing the
3430 # /usr/local libraries.
3431 if test -n "$cf_rpath_oops"
3433 for cf_rpath_src in $cf_rpath_oops
3435 for cf_rpath_dir in \
3440 if test -f "$cf_rpath_dir/lib/$cf_rpath_src"
3442 CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src)
3443 LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
3451 CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS)
3453 CF_RPATH_HACK_2(LDFLAGS)
3454 CF_RPATH_HACK_2(LIBS)
3456 CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS)
3460 AC_SUBST(EXTRA_LDFLAGS)
3462 dnl ---------------------------------------------------------------------------
3463 dnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04
3465 dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to
3466 dnl EXTRA_LDFLAGS for each -L option found.
3468 dnl $cf_rpath_list contains a list of directories to ignore.
3470 dnl $1 = variable name to update. The LDFLAGS variable should be the only one,
3471 dnl but LIBS often has misplaced -L options.
3472 AC_DEFUN([CF_RPATH_HACK_2],
3474 CF_VERBOSE(...checking $1 [$]$1)
3477 for cf_rpath_src in [$]$1
3479 case "$cf_rpath_src" in
3482 # check if this refers to a directory which we will ignore
3484 if test -n "$cf_rpath_list"
3486 for cf_rpath_item in $cf_rpath_list
3488 if test "x$cf_rpath_src" = "x-L$cf_rpath_item"
3496 if test "$cf_rpath_skip" = no
3498 # transform the option
3499 if test "$LD_RPATH_OPT" = "-R " ; then
3500 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"`
3502 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"`
3505 # if we have not already added this, add it now
3506 cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"`
3507 if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS"
3509 CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp)
3510 EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
3515 cf_rpath_dst="$cf_rpath_dst $cf_rpath_src"
3519 CF_VERBOSE(...checked $1 [$]$1)
3520 AC_SUBST(EXTRA_LDFLAGS)
3522 dnl ---------------------------------------------------------------------------
3523 dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
3524 dnl ------------------
3525 dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
3526 dnl and libraries which do not update those variables.
3528 dnl $1 = name of current macro
3529 define([CF_SAVE_XTRA_FLAGS],
3531 cf_save_LIBS_$1="$LIBS"
3532 cf_save_CFLAGS_$1="$CFLAGS"
3533 cf_save_CPPFLAGS_$1="$CPPFLAGS"
3534 LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
3535 for cf_X_CFLAGS in $X_CFLAGS
3537 case "x$cf_X_CFLAGS" in
3539 CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
3542 CFLAGS="$CFLAGS $cf_X_CFLAGS"
3547 dnl ---------------------------------------------------------------------------
3548 dnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04
3550 dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
3551 dnl programs need this test).
3553 dnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE
3554 dnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct
3555 dnl winsize declaration is left alone - we may revisit this if Apple choose to
3556 dnl break that part of the interface as well.
3557 AC_DEFUN([CF_SIGWINCH],
3559 AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[
3561 #include <sys/types.h>
3562 #include <sys/signal.h>
3563 ],[int x = SIGWINCH; (void)x],
3564 [cf_cv_define_sigwinch=yes],
3566 #undef _XOPEN_SOURCE
3567 #undef _POSIX_SOURCE
3568 #undef _POSIX_C_SOURCE
3569 #include <sys/types.h>
3570 #include <sys/signal.h>
3571 ],[int x = SIGWINCH; (void)x],
3572 [cf_cv_define_sigwinch=maybe],
3573 [cf_cv_define_sigwinch=no])
3577 if test "$cf_cv_define_sigwinch" = maybe ; then
3578 AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[
3579 cf_cv_fixup_sigwinch=unknown
3581 while test "$cf_sigwinch" != 1
3584 #undef _XOPEN_SOURCE
3585 #undef _POSIX_SOURCE
3586 #undef _POSIX_C_SOURCE
3587 #include <sys/types.h>
3588 #include <sys/signal.h>
3590 #if SIGWINCH != $cf_sigwinch
3593 int x = SIGWINCH; (void)x],
3594 [cf_cv_fixup_sigwinch=$cf_sigwinch
3597 cf_sigwinch="`expr "$cf_sigwinch" - 1`"
3601 if test "$cf_cv_fixup_sigwinch" != unknown ; then
3602 CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch"
3606 dnl ---------------------------------------------------------------------------
3607 dnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47
3609 dnl signal handler, but there are some gcc dependencies in that recommendation.
3611 AC_DEFUN([CF_SIG_ATOMIC_T],
3613 AC_MSG_CHECKING(for signal global datatype)
3614 AC_CACHE_VAL(cf_cv_sig_atomic_t,[
3616 "volatile sig_atomic_t" \
3621 #include <sys/types.h>
3627 static void handler(int sig)
3632 [signal(SIGINT, handler);
3634 [cf_cv_sig_atomic_t=$cf_type],
3635 [cf_cv_sig_atomic_t=no])
3636 test "$cf_cv_sig_atomic_t" != no && break
3639 AC_MSG_RESULT($cf_cv_sig_atomic_t)
3640 test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
3642 dnl ---------------------------------------------------------------------------
3643 dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
3645 dnl Construct a search-list for a nonstandard header/lib-file
3646 dnl $1 = the variable to return as result
3647 dnl $2 = the package name
3648 dnl $3 = the subdirectory, e.g., bin, include or lib
3649 AC_DEFUN([CF_SUBDIR_PATH],
3653 CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
3655 for cf_subdir_prefix in \
3663 CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
3666 dnl ---------------------------------------------------------------------------
3667 dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57
3668 dnl ------------------
3669 dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
3670 dnl older SCO configurations.
3671 AC_DEFUN([CF_SYS_TIME_SELECT],
3673 AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
3674 AC_CACHE_VAL(cf_cv_sys_time_select,[
3676 #include <sys/types.h>
3677 #ifdef HAVE_SYS_TIME_H
3678 #include <sys/time.h>
3680 #ifdef HAVE_SYS_SELECT_H
3681 #include <sys/select.h>
3683 ],[],[cf_cv_sys_time_select=yes],
3684 [cf_cv_sys_time_select=no])
3686 AC_MSG_RESULT($cf_cv_sys_time_select)
3687 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>])
3689 dnl ---------------------------------------------------------------------------
3690 dnl CF_TERM_HEADER version: 6 updated: 2021/01/02 09:31:20
3692 dnl Look for term.h, which is part of X/Open curses. It defines the interface
3693 dnl to terminfo database. Usually it is in the same include-path as curses.h,
3694 dnl but some packagers change this, breaking various applications.
3695 AC_DEFUN([CF_TERM_HEADER],[
3696 AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[
3697 case "${cf_cv_ncurses_header}" in
3698 (*/ncurses.h|*/ncursesw.h)
3699 cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'`
3702 cf_term_header=term.h
3706 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
3708 AC_TRY_COMPILE([#include <stdio.h>
3709 #include <${cf_cv_ncurses_header:-curses.h}>
3711 ],[int x = auto_left_margin; (void)x],[
3712 cf_cv_term_header="$cf_test"],[
3713 cf_cv_term_header=unknown
3715 test "$cf_cv_term_header" != unknown && break
3719 # Set definitions to allow ifdef'ing to accommodate subdirectories
3721 case "$cf_cv_term_header" in
3723 AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
3727 case "$cf_cv_term_header" in
3729 AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
3732 AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
3736 dnl ---------------------------------------------------------------------------
3737 dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32
3739 dnl Define a top_builddir symbol, for applications that need an absolute path.
3740 AC_DEFUN([CF_TOP_BUILDDIR],
3742 top_builddir=ifelse($1,,`pwd`,$1)
3743 AC_SUBST(top_builddir)
3745 dnl ---------------------------------------------------------------------------
3746 dnl CF_TPUTS_PROTO version: 4 updated: 2021/01/04 19:45:09
3748 dnl Check for type of function-pointer passed to tputs. Some old
3749 dnl implementations used functions that had different prototypes, making it
3750 dnl hard to compile portable programs using tputs.
3751 AC_DEFUN([CF_TPUTS_PROTO],[
3752 CF_CURSES_FUNCS(tputs)
3753 if test "x$cf_cv_func_tputs" = xyes
3756 for cf_arg in int char
3758 for cf_ret in int void
3760 if test "$cf_ret" = void
3762 cf_return="/* nothing */"
3764 cf_return="return value"
3767 #include <${cf_cv_ncurses_header:-curses.h}>
3768 #include <$cf_cv_term_header>
3770 static $cf_ret outc($cf_arg value) { $cf_return; }
3772 tputs("hello", 0, outc);
3773 ${cf_cv_main_return:-return}(0);
3775 CF_VERBOSE([prototype $cf_ret func($cf_arg value)])
3776 cat >>confdefs.h <<EOF
3777 #define TPUTS_ARG $cf_arg
3778 #define TPUTS_PROTO(func,value) $cf_ret func(TPUTS_ARG value)
3779 #define TPUTS_RETURN(value) $cf_return
3785 test "$cf_done" = yes && break
3789 dnl ---------------------------------------------------------------------------
3790 dnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00
3792 dnl Trim extra base X libraries added as a workaround for inconsistent library
3793 dnl dependencies returned by "new" pkg-config files.
3794 AC_DEFUN([CF_TRIM_X_LIBS],[
3795 for cf_trim_lib in Xmu Xt X11
3798 (*-l$cf_trim_lib\ *-l$cf_trim_lib*)
3799 LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'`
3800 CF_VERBOSE(..trimmed $LIBS)
3805 dnl ---------------------------------------------------------------------------
3806 dnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15
3807 dnl -----------------
3808 dnl This is a simple wrapper to use for pkg-config, for libraries which may be
3809 dnl available in that form.
3811 dnl $1 = package name, which may be a shell variable
3812 dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS
3813 dnl $3 = logic to use if pkg-config does not have the package
3814 AC_DEFUN([CF_TRY_PKG_CONFIG],[
3815 AC_REQUIRE([CF_PKG_CONFIG])
3817 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then
3818 CF_VERBOSE(found package $1)
3819 cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`"
3820 cf_pkgconfig_libs="`$PKG_CONFIG --libs "$1" 2>/dev/null`"
3821 CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs)
3822 CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs)
3823 CF_ADD_CFLAGS($cf_pkgconfig_incs)
3824 CF_ADD_LIBS($cf_pkgconfig_libs)
3825 ifelse([$2],,:,[$2])
3829 ifelse([$3],,:,[$3])
3832 dnl ---------------------------------------------------------------------------
3833 dnl CF_TRY_XOPEN_SOURCE version: 2 updated: 2018/06/20 20:23:13
3834 dnl -------------------
3835 dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
3836 dnl can define it successfully.
3837 AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
3838 AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
3842 #include <sys/types.h>
3844 #ifndef _XOPEN_SOURCE
3847 [cf_cv_xopen_source=no],
3848 [cf_save="$CPPFLAGS"
3849 CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
3853 #include <sys/types.h>
3855 #ifdef _XOPEN_SOURCE
3858 [cf_cv_xopen_source=no],
3859 [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
3864 if test "$cf_cv_xopen_source" != no ; then
3865 CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
3866 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
3867 cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
3868 CF_ADD_CFLAGS($cf_temp_xopen_source)
3871 dnl ---------------------------------------------------------------------------
3872 dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
3874 dnl Make an uppercase version of a variable
3875 dnl $1=uppercase($2)
3876 AC_DEFUN([CF_UPPER],
3878 $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
3880 dnl ---------------------------------------------------------------------------
3881 dnl CF_UTF8_LIB version: 9 updated: 2021/05/19 19:35:25
3883 dnl Check for multibyte support, and if not found, utf8 compatibility library
3884 AC_DEFUN([CF_UTF8_LIB],
3886 AC_HAVE_HEADERS(wchar.h)
3887 AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
3888 cf_save_LIBS="$LIBS"
3896 [cf_cv_utf8_lib=yes],
3898 #include <libutf8.h>],[putwc(0,0);],utf8,
3899 [cf_cv_utf8_lib=add-on],
3900 [cf_cv_utf8_lib=no])
3903 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
3905 if test "$cf_cv_utf8_lib" = "add-on" ; then
3906 AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h])
3907 CF_ADD_INCDIR($cf_cv_header_path_utf8)
3908 CF_ADD_LIBDIR($cf_cv_library_path_utf8)
3909 CF_ADD_LIBS($cf_cv_library_file_utf8)
3912 dnl ---------------------------------------------------------------------------
3913 dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
3915 dnl Use AC_VERBOSE w/o the warnings
3916 AC_DEFUN([CF_VERBOSE],
3917 [test -n "$verbose" && echo " $1" 1>&AC_FD_MSG
3920 dnl ---------------------------------------------------------------------------
3921 dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
3923 dnl Check if type wide-character type $1 is declared, and if so, which header
3924 dnl file is needed. The second parameter is used to set a shell variable when
3925 dnl the type is not found. The first parameter sets a shell variable for the
3927 AC_DEFUN([CF_WCHAR_TYPE],
3929 # This is needed on Tru64 5.0 to declare $1
3930 AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[
3935 #ifdef HAVE_LIBUTF8_H
3936 #include <libutf8.h>
3945 #ifdef HAVE_LIBUTF8_H
3946 #include <libutf8.h>
3950 [cf_cv_$1=unknown])])])
3952 if test "$cf_cv_$1" = yes ; then
3953 AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h])
3958 # if we do not find $1 in either place, use substitution to provide a fallback.
3959 if test "$cf_cv_$1" = unknown ; then
3964 # if we find $1 in either place, use substitution to provide a fallback.
3965 if test "$cf_cv_$1" != unknown ; then
3970 dnl ---------------------------------------------------------------------------
3971 dnl CF_WITH_CURSES_DIR version: 4 updated: 2021/01/02 19:22:58
3972 dnl ------------------
3973 dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses
3975 AC_DEFUN([CF_WITH_CURSES_DIR],[
3977 AC_MSG_CHECKING(for specific curses-directory)
3978 AC_ARG_WITH(curses-dir,
3979 [ --with-curses-dir=DIR directory in which (n)curses is installed],
3980 [cf_cv_curses_dir=$withval],
3981 [cf_cv_curses_dir=no])
3982 AC_MSG_RESULT($cf_cv_curses_dir)
3984 if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no"
3986 CF_PATH_SYNTAX(withval)
3987 if test -d "$cf_cv_curses_dir"
3989 CF_ADD_INCDIR($cf_cv_curses_dir/include)
3990 CF_ADD_LIBDIR($cf_cv_curses_dir/lib)
3994 dnl ---------------------------------------------------------------------------
3995 dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
3996 dnl ----------------
3997 dnl Configure-option for dbmalloc. The optional parameter is used to override
3998 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
3999 AC_DEFUN([CF_WITH_DBMALLOC],[
4000 CF_NO_LEAKS_OPTION(dbmalloc,
4001 [ --with-dbmalloc test: use Conor Cahill's dbmalloc library],
4004 if test "$with_dbmalloc" = yes ; then
4005 AC_CHECK_HEADER(dbmalloc.h,
4006 [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
4009 dnl ---------------------------------------------------------------------------
4010 dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
4012 dnl Configure-option for dmalloc. The optional parameter is used to override
4013 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
4014 AC_DEFUN([CF_WITH_DMALLOC],[
4015 CF_NO_LEAKS_OPTION(dmalloc,
4016 [ --with-dmalloc test: use Gray Watson's dmalloc library],
4019 if test "$with_dmalloc" = yes ; then
4020 AC_CHECK_HEADER(dmalloc.h,
4021 [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
4024 dnl ---------------------------------------------------------------------------
4025 dnl CF_WITH_LIB_BASENAME version: 1 updated: 2020/03/07 20:05:14
4026 dnl --------------------
4027 dnl Allow for overriding the basename of a library, i.e., the part to which
4028 dnl prefixes/suffixes are attached.
4030 dnl $1 = variable to set
4031 dnl $2 = option name
4032 dnl $3 = default basename for library, if omitted use $2
4033 AC_DEFUN([CF_WITH_LIB_BASENAME],
4035 AC_MSG_CHECKING(for desired basename for $2 library)
4036 AC_ARG_WITH($2-libname,
4037 [ --with-$2-libname=XXX override ifelse($3,,$2,$3) basename of library],
4038 [with_lib_basename=$withval],
4039 [with_lib_basename=ifelse($3,,$2,$3)])
4040 $1="$with_lib_basename"
4044 $1=ifelse($3,,$2,$3)
4050 AC_MSG_RESULT([$]$1)
4053 dnl ---------------------------------------------------------------------------
4054 dnl CF_WITH_NCURSES_ETC version: 5 updated: 2016/02/20 19:23:20
4055 dnl -------------------
4056 dnl Use this macro for programs which use any variant of "curses", e.g.,
4057 dnl "ncurses", and "PDCurses". Programs that can use curses and some unrelated
4058 dnl library (such as slang) should use a "--with-screen=XXX" option.
4060 dnl This does not use AC_DEFUN, because that would tell autoconf to run each
4061 dnl of the macros inside this one - before this macro.
4062 define([CF_WITH_NCURSES_ETC],[
4067 AC_MSG_CHECKING(for specified curses library type)
4069 [ --with-screen=XXX use specified curses-libraries],
4070 [cf_cv_screen=$withval],[
4072 AC_ARG_WITH(ncursesw,
4073 [ --with-ncursesw use wide ncurses-libraries],
4074 [cf_cv_screen=ncursesw],[
4076 AC_ARG_WITH(ncurses,
4077 [ --with-ncurses use ncurses-libraries],
4078 [cf_cv_screen=ncurses],[
4080 AC_ARG_WITH(pdcurses,
4081 [ --with-pdcurses compile/link with pdcurses X11 library],
4082 [cf_cv_screen=pdcurses],[
4084 AC_ARG_WITH(curses-colr,
4085 [ --with-curses-colr compile/link with HPUX 10.x color-curses],
4086 [cf_cv_screen=curses_colr],[
4088 AC_ARG_WITH(curses-5lib,
4089 [ --with-curses-5lib compile/link with SunOS 5lib curses],
4090 [cf_cv_screen=curses_5lib])])])])])])
4092 AC_MSG_RESULT($cf_cv_screen)
4094 case $cf_cv_screen in
4100 CF_NCURSES_CONFIG($cf_cv_screen)
4103 CF_NCURSES_CONFIG($cf_cv_screen)
4109 AC_MSG_ERROR(unexpected screen-value: $cf_cv_screen)
4113 CF_NCURSES_PTHREADS($cf_cv_screen)
4116 dnl ---------------------------------------------------------------------------
4117 dnl CF_WITH_SCREEN_PDCURSES version: 1 updated: 2020/08/28 16:56:27
4118 dnl -----------------------
4119 dnl Call this macro before CF_ENABLE_WARNINGS for configure scripts which use
4120 dnl the "--with-screen=pdcurses" selection. Doing that allows the configure
4121 dnl script to search for the X11/Xt header files to declare (or not) the
4122 dnl symbol needed to enable "const" in those header files. If that configure
4123 dnl option is not used, then those checks are unnecessary.
4124 AC_DEFUN([CF_WITH_SCREEN_PDCURSES],[
4125 AC_PROVIDE([AC_PATH_XTRA])
4126 AC_PROVIDE([AC_PATH_X])
4127 if test -n "$with_screen" && test "x$with_screen" = "xpdcurses"
4133 dnl ---------------------------------------------------------------------------
4134 dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
4135 dnl ----------------
4136 AC_DEFUN([CF_WITH_VALGRIND],[
4137 CF_NO_LEAKS_OPTION(valgrind,
4138 [ --with-valgrind test: use valgrind],
4141 dnl ---------------------------------------------------------------------------
4142 dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54
4144 dnl Handle configure option "--with-x11-rgb", setting these shell
4147 dnl $RGB_PATH is the option value, used for finding the X11 rgb file.
4148 dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given.
4150 dnl Most Linux's use this:
4151 dnl /usr/share/X11/rgb.txt
4152 dnl Debian uses this:
4153 dnl /etc/X11/rgb.txt
4154 dnl DragonFlyBSD ports uses this:
4155 dnl /usr/pkg/lib/X11/rgb.txt
4156 dnl FreeBSD ports use these:
4157 dnl /usr/local/lib/X11/rgb.txt
4158 dnl /usr/local/share/X11/rgb.txt
4159 dnl Mandriva has these:
4160 dnl /usr/lib/X11/rgb.txt
4161 dnl /usr/lib64/X11/rgb.txt
4162 dnl NetBSD has these
4163 dnl /usr/X11R7/lib/X11/rgb.txt
4164 dnl OpenSolaris uses
4166 dnl /usr/X11/etc/X11/rgb.txt
4167 dnl /usr/X11/share/X11/rgb.txt
4168 dnl /usr/X11/lib/X11/rgb.txt
4170 dnl /opt/local/share/X11/rgb.txt (MacPorts)
4171 dnl /opt/X11/share/X11/rgb.txt (non-ports)
4173 dnl /usr/X11/etc/X11/rgb.txt
4174 dnl /usr/X11/share/X11/rgb.txt (perhaps)
4175 dnl /usr/X11/lib/amd64/X11/rgb.txt
4176 dnl Solaris10 uses (in this order):
4177 dnl /usr/openwin/lib/X11/rgb.txt
4178 dnl /usr/X11/lib/X11/rgb.txt
4179 AC_DEFUN([CF_WITH_X11_RGB],[
4180 AC_MSG_CHECKING(for X11 rgb file)
4181 AC_ARG_WITH(x11-rgb,
4182 [ --with-x11-rgb=FILE file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)],
4183 [RGB_PATH=$withval],
4186 if test "x[$]RGB_PATH" = xauto
4188 RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
4190 /opt/local/share/X11/rgb.txt \
4191 /opt/X11/share/X11/rgb.txt \
4192 /usr/share/X11/rgb.txt \
4193 /usr/X11/share/X11/rgb.txt \
4194 /usr/X11/lib/X11/rgb.txt \
4195 /usr/lib/X11/rgb.txt \
4197 /usr/pkg/lib/X11/rgb.txt \
4198 /usr/X11R7/lib/X11/rgb.txt \
4199 /usr/X11R6/lib/X11/rgb.txt \
4200 /usr/X11R5/lib/X11/rgb.txt \
4201 /usr/X11R4/lib/X11/rgb.txt \
4202 /usr/local/lib/X11/rgb.txt \
4203 /usr/local/share/X11/rgb.txt \
4204 /usr/lib64/X11/rgb.txt
4206 if test -f "$cf_path" ; then
4213 CF_PATH_SYNTAX(cf_path)
4216 AC_MSG_RESULT($RGB_PATH)
4218 AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt])
4221 if test "$RGB_PATH" = no
4225 AC_SUBST(no_x11_rgb)
4227 dnl ---------------------------------------------------------------------------
4228 dnl CF_XOPEN_CURSES version: 17 updated: 2021/07/10 12:22:27
4230 dnl Test if we should define X/Open source for curses, needed on Digital Unix
4231 dnl 4.x, to see the extended functions, but breaks on IRIX 6.x.
4233 dnl The getbegyx() check is needed for HPUX, which omits legacy macros such
4234 dnl as getbegy(). The latter is better design, but the former is standard.
4235 AC_DEFUN([CF_XOPEN_CURSES],
4237 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
4238 AC_CACHE_CHECK(definition to turn on extended curses functions,cf_cv_need_xopen_extension,[
4239 cf_cv_need_xopen_extension=unknown
4242 #include <${cf_cv_ncurses_header:-curses.h}>],[
4243 #if defined(NCURSES_VERSION_PATCH)
4244 #if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403)
4248 #ifdef NCURSES_WIDECHAR
4249 make an error /* prefer to fall-through on the second checks */
4252 int check2 = curs_set((int)sizeof(check));
4253 long x = winnstr(stdscr, "", 0);
4256 getbegyx(stdscr, y1, x1);
4261 [cf_cv_need_xopen_extension=none],
4263 for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR
4266 #define $cf_try_xopen_extension 1
4268 #include <${cf_cv_ncurses_header:-curses.h}>],[
4270 int check2 = curs_set((int)sizeof(check));
4271 long x = winnstr(stdscr, "", 0);
4273 getbegyx(stdscr, y1, x1);
4279 [cf_cv_need_xopen_extension=$cf_try_xopen_extension; break])
4284 case "$cf_cv_need_xopen_extension" in
4286 CF_APPEND_TEXT(CPPFLAGS,-D$cf_cv_need_xopen_extension)
4291 dnl ---------------------------------------------------------------------------
4292 dnl CF_XOPEN_SOURCE version: 58 updated: 2021/05/01 17:49:36
4294 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
4295 dnl or adapt to the vendor's definitions to get equivalent functionality,
4296 dnl without losing the common non-POSIX features.
4299 dnl $1 is the nominal value for _XOPEN_SOURCE
4300 dnl $2 is the nominal value for _POSIX_C_SOURCE
4301 AC_DEFUN([CF_XOPEN_SOURCE],[
4302 AC_REQUIRE([AC_CANONICAL_HOST])
4303 AC_REQUIRE([CF_POSIX_VISIBLE])
4305 if test "$cf_cv_posix_visible" = no; then
4307 cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
4308 cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
4313 cf_xopen_source="-D_ALL_SOURCE"
4319 cf_xopen_source="-D_APPLE_C_SOURCE"
4322 cf_xopen_source="-D_DARWIN_C_SOURCE"
4325 (freebsd*|dragonfly*|midnightbsd*)
4326 # 5.x headers associate
4327 # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
4328 # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
4329 cf_POSIX_C_SOURCE=200112L
4331 cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
4334 cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
4337 cf_xopen_source="-D_HPUX_SOURCE"
4340 cf_xopen_source="-D_SGI_SOURCE"
4343 (linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
4344 CF_GNU_SOURCE($cf_XOPEN_SOURCE)
4347 cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
4350 # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
4352 CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
4355 cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
4358 # OpenBSD 6.x has broken locale support, both compile-time and runtime.
4359 # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
4360 # Abusing the conformance level is a workaround.
4361 AC_MSG_WARN(this system does not provide usable locale support)
4362 cf_xopen_source="-D_BSD_SOURCE"
4366 # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
4367 cf_xopen_source="-D_BSD_SOURCE"
4371 # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
4374 cf_xopen_source="-D_OSF_SOURCE"
4377 cf_xopen_source="-D_QNX_SOURCE"
4380 # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
4383 cf_xopen_source="-D__EXTENSIONS__"
4384 cf_cv_xopen_source=broken
4386 (sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
4392 CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
4396 if test -n "$cf_xopen_source" ; then
4397 CF_ADD_CFLAGS($cf_xopen_source,true)
4400 dnl In anything but the default case, we may have system-specific setting
4401 dnl which is still not guaranteed to provide all of the entrypoints that
4402 dnl _XOPEN_SOURCE would yield.
4403 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
4404 AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
4405 AC_TRY_COMPILE([#include <stdlib.h>],[
4406 #ifndef _XOPEN_SOURCE
4409 [cf_XOPEN_SOURCE_set=yes],
4410 [cf_XOPEN_SOURCE_set=no])
4411 AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
4412 if test "$cf_XOPEN_SOURCE_set" = yes
4414 AC_TRY_COMPILE([#include <stdlib.h>],[
4415 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
4418 [cf_XOPEN_SOURCE_set_ok=yes],
4419 [cf_XOPEN_SOURCE_set_ok=no])
4420 if test "$cf_XOPEN_SOURCE_set_ok" = no
4422 AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
4428 fi # cf_cv_posix_visible
4430 dnl ---------------------------------------------------------------------------
4431 dnl CF_X_ATHENA version: 24 updated: 2020/03/10 18:53:47
4433 dnl Check for Xaw (Athena) libraries
4435 dnl Sets $cf_x_athena according to the flavor of Xaw which is used.
4436 AC_DEFUN([CF_X_ATHENA],
4438 cf_x_athena=${cf_x_athena:-Xaw}
4440 AC_MSG_CHECKING(if you want to link with Xaw 3d library)
4443 [ --with-Xaw3d link with Xaw 3d library])
4444 if test "$withval" = yes ; then
4451 AC_MSG_CHECKING(if you want to link with Xaw 3d xft library)
4453 AC_ARG_WITH(Xaw3dxft,
4454 [ --with-Xaw3dxft link with Xaw 3d xft library])
4455 if test "$withval" = yes ; then
4456 cf_x_athena=Xaw3dxft
4462 AC_MSG_CHECKING(if you want to link with neXT Athena library)
4465 [ --with-neXtaw link with neXT Athena library])
4466 if test "$withval" = yes ; then
4473 AC_MSG_CHECKING(if you want to link with Athena-Plus library)
4475 AC_ARG_WITH(XawPlus,
4476 [ --with-XawPlus link with Athena-Plus library])
4477 if test "$withval" = yes ; then
4486 if test "$PKG_CONFIG" != none ; then
4488 test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6"
4489 for cf_athena_pkg in \
4492 ${cf_x_athena}-devel \
4494 lib${cf_x_athena}-devel
4496 CF_TRY_PKG_CONFIG($cf_athena_pkg,[
4497 cf_x_athena_lib="$cf_pkgconfig_libs"
4498 CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
4499 AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
4503 AC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[
4505 #include <X11/Xmu/CharSet.h>
4507 int check = XmuCompareISOLatin1("big", "small");
4509 ],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])])
4511 if test "$cf_cv_xaw_compat" = no
4513 # workaround for broken ".pc" files...
4514 case "$cf_x_athena_lib" in
4518 CF_VERBOSE(work around broken package)
4520 cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'`
4521 CF_TRY_PKG_CONFIG(xmu,[
4523 CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs)
4525 CF_ADD_LIB_AFTER($cf_first_lib,-lXmu)
4536 if test -z "$cf_x_athena_lib" ; then
4539 CF_X_ATHENA_CPPFLAGS($cf_x_athena)
4540 CF_X_ATHENA_LIBS($cf_x_athena)
4543 dnl ---------------------------------------------------------------------------
4544 dnl CF_X_ATHENA_CPPFLAGS version: 9 updated: 2020/12/31 10:54:15
4545 dnl --------------------
4546 dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
4547 dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
4548 AC_DEFUN([CF_X_ATHENA_CPPFLAGS],
4550 AC_REQUIRE([AC_PATH_XTRA])
4551 cf_x_athena_root=ifelse([$1],,Xaw,[$1])
4554 for cf_path in default \
4555 /usr/contrib/X11R6 \
4556 /usr/contrib/X11R5 \
4560 if test -z "$cf_x_athena_inc" ; then
4561 CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS])
4562 cf_test=X11/$cf_x_athena_root/SimpleMenu.h
4563 if test "$cf_path" != default ; then
4564 CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include)
4565 AC_MSG_CHECKING(for $cf_test in $cf_path)
4567 AC_MSG_CHECKING(for $cf_test)
4570 #include <X11/Intrinsic.h>
4571 #include <$cf_test>],[],
4574 AC_MSG_RESULT($cf_result)
4575 CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS])
4576 if test "$cf_result" = yes ; then
4577 test "$cf_path" = default && cf_x_athena_inc=default
4578 test "$cf_path" != default && cf_x_athena_inc="$cf_path/include"
4584 if test -z "$cf_x_athena_inc" ; then
4585 AC_MSG_WARN([Unable to find Athena header files])
4586 elif test "$cf_x_athena_inc" != default ; then
4587 CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc)
4590 dnl ---------------------------------------------------------------------------
4591 dnl CF_X_ATHENA_LIBS version: 13 updated: 2020/01/11 18:16:10
4592 dnl ----------------
4593 dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
4594 dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
4595 AC_DEFUN([CF_X_ATHENA_LIBS],
4596 [AC_REQUIRE([CF_X_TOOLKIT])
4597 cf_x_athena_root=ifelse([$1],,Xaw,[$1])
4600 for cf_path in default \
4601 /usr/contrib/X11R6 \
4602 /usr/contrib/X11R5 \
4607 ${cf_x_athena_root} \
4608 ${cf_x_athena_root}7 \
4609 ${cf_x_athena_root}6
4613 "-l$cf_lib -lXpm -lXmu" \
4614 "-l${cf_lib}_s -lXmu_s"
4616 test -n "$cf_x_athena_lib" && break
4618 CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_LIBS])
4619 cf_test=XawSimpleMenuAddGlobalActions
4620 test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs"
4621 CF_ADD_LIBS($cf_libs)
4622 AC_MSG_CHECKING(for $cf_test in $cf_libs)
4624 #include <X11/Intrinsic.h>
4625 #include <X11/$cf_x_athena_root/SimpleMenu.h>
4627 $cf_test((XtAppContext) 0)],
4630 AC_MSG_RESULT($cf_result)
4631 CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_LIBS])
4633 if test "$cf_result" = yes ; then
4634 cf_x_athena_lib="$cf_libs"
4638 test -n "$cf_x_athena_lib" && break
4642 if test -z "$cf_x_athena_lib" ; then
4644 [Unable to successfully link Athena library (-l$cf_x_athena_root) with test program])
4647 CF_ADD_LIBS($cf_x_athena_lib)
4648 CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
4649 AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
4651 dnl ---------------------------------------------------------------------------
4652 dnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05
4654 AC_DEFUN([CF_X_EXT],[
4655 CF_TRY_PKG_CONFIG(Xext,,[
4656 AC_CHECK_LIB(Xext,XextCreateExtension,
4657 [CF_ADD_LIB(Xext)])])
4659 dnl ---------------------------------------------------------------------------
4660 dnl CF_X_TOOLKIT version: 26 updated: 2021/01/02 09:31:20
4662 dnl Check for X Toolkit libraries
4663 AC_DEFUN([CF_X_TOOLKIT],
4665 AC_REQUIRE([AC_PATH_XTRA])
4666 AC_REQUIRE([CF_CHECK_CACHE])
4668 # OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and
4669 # in some cases has installed dummy files in the former, other cases replaced
4670 # it with a link to the new location). This complicates the configure script.
4671 # Check for that pitfall, and recover using pkg-config
4673 # If none of these are set, the configuration is almost certainly broken.
4674 if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}"
4676 CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)])
4677 CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)])
4678 CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)])
4679 CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)])
4681 LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS"
4686 CF_TRY_PKG_CONFIG(xt,[
4692 # we have an "xt" package, but it may omit Xt's dependency on X11
4693 AC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[
4695 #include <X11/Xlib.h>
4697 int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0);
4698 int rc2 = XClearWindow((Display*) 0, (Window) 0);
4699 int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0);
4700 int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0);
4701 ],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])])
4702 if test "$cf_cv_xt_x11_compat" = no
4704 CF_VERBOSE(work around broken X11 dependency)
4705 # 2010/11/19 - good enough until a working Xt on Xcb is delivered.
4706 CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)])
4711 AC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[
4713 #include <X11/Shell.h>
4714 ],[int num = IceConnectionNumber(0); (void) num
4715 ],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])])
4717 if test "$cf_cv_xt_ice_compat" = no
4719 # workaround for broken ".pc" files used for X Toolkit.
4720 case "x$X_PRE_LIBS" in
4726 CF_VERBOSE(work around broken ICE dependency)
4727 CF_TRY_PKG_CONFIG(ice,
4728 [CF_TRY_PKG_CONFIG(sm)],
4729 [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)])
4739 LDFLAGS="$X_LIBS $LDFLAGS"
4740 CF_CHECK_CFLAGS($X_CFLAGS)
4742 AC_CHECK_FUNC(XOpenDisplay,,[
4743 AC_CHECK_LIB(X11,XOpenDisplay,
4744 [CF_ADD_LIB(X11)])])
4746 AC_CHECK_FUNC(XtAppInitialize,,[
4747 AC_CHECK_LIB(Xt, XtAppInitialize,
4748 [AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library])
4750 LIBS="-lXt $LIBS"])])
4753 if test "$cf_have_X_LIBS" = no ; then
4755 [Unable to successfully link X Toolkit library (-lXt) with
4756 test program. You will have to check and add the proper libraries by hand
4760 dnl ---------------------------------------------------------------------------
4761 dnl CF__CURSES_DATA version: 3 updated: 2021/01/04 19:45:09
4763 dnl Attempt to make a copy of a curses data item. This is needed in the
4764 dnl check-data configure tests when using ncurses, because the symbol may be
4765 dnl actually a function return-value. That could happen if the linker is
4766 dnl broken (does not resolve data-only references), or if ncurses is configured
4767 dnl to support re-entrant code.
4770 define([CF__CURSES_DATA],[
4771 #if defined($2) && ((defined(NCURSES_WRAPPED_VAR) && (NCURSES_VERSION_PATCH < 20200208)) || defined(NCURSES_BROKEN_LINKER) || defined(NCURSES_REENTRANT))
4772 const void *$1 = (const void *)($2);
4774 const void *$1 = &($2);
4776 fprintf(stderr, "testing linkage of $2:%p\\n", (const void *)$1);
4778 dnl ---------------------------------------------------------------------------
4779 dnl CF__CURSES_HEAD version: 2 updated: 2010/10/23 15:54:49
4781 dnl Define a reusable chunk which includes <curses.h> and <term.h> when they
4782 dnl are both available.
4783 define([CF__CURSES_HEAD],[
4785 #include <xcurses.h>
4786 char * XCursesProgramName = "test";
4788 #include <${cf_cv_ncurses_header:-curses.h}>
4789 #if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
4790 #include <ncursesw/term.h>
4791 #elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
4792 #include <ncurses/term.h>
4793 #elif defined(HAVE_TERM_H)