1 dnl***************************************************************************
2 dnl Copyright 2018-2019,2020 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.186 2020/11/20 23:52:27 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: 5 updated: 2020/03/10 18:53:47
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: 14 updated: 2020/04/04 16:16:13
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: 15 updated: 2018/06/20 20:23:13
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: 10 updated: 2015/04/18 08:56:57
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: 4 updated: 2013/10/08 17:47:05
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_CC_ENV_FLAGS version: 9 updated: 2018/07/29 18:03:26
395 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
396 dnl into CC. This will not help with broken scripts that wrap the compiler
397 dnl with options, but eliminates a more common category of user confusion.
399 dnl In particular, it addresses the problem of being able to run the C
400 dnl preprocessor in a consistent manner.
402 dnl Caveat: this also disallows blanks in the pathname for the compiler, but
403 dnl the nuisance of having inconsistent settings for compiler and preprocessor
404 dnl outweighs that limitation.
405 AC_DEFUN([CF_CC_ENV_FLAGS],
407 # This should have been defined by AC_PROG_CC
410 AC_MSG_CHECKING(\$CFLAGS variable)
413 AC_MSG_RESULT(broken)
414 AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
417 for cf_arg in $cf_flags
419 CF_ADD_CFLAGS($cf_arg)
427 AC_MSG_CHECKING(\$CC variable)
430 AC_MSG_RESULT(broken)
431 AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
433 cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
434 cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
436 for cf_arg in $cf_flags
440 CF_ADD_CFLAGS($cf_arg)
447 CF_VERBOSE(resulting CC: '$CC')
448 CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
449 CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
456 dnl ---------------------------------------------------------------------------
457 dnl CF_CHECK_CACHE version: 12 updated: 2012/10/02 20:55:03
459 dnl Check if we're accidentally using a cache from a different machine.
460 dnl Derive the system name, as a check for reusing the autoconf cache.
462 dnl If we've packaged config.guess and config.sub, run that (since it does a
463 dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow
464 dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
465 dnl which is useful in cross-compiles.
467 dnl Note: we would use $ac_config_sub, but that is one of the places where
468 dnl autoconf 2.5x broke compatibility with autoconf 2.13
469 AC_DEFUN([CF_CHECK_CACHE],
471 if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
472 ifelse([$1],,[AC_CANONICAL_HOST],[$1])
473 system_name="$host_os"
475 system_name="`(uname -s -r) 2>/dev/null`"
476 if test -z "$system_name" ; then
477 system_name="`(hostname) 2>/dev/null`"
480 test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
481 AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
483 test -z "$system_name" && system_name="$cf_cv_system_name"
484 test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
486 if test ".$system_name" != ".$cf_cv_system_name" ; then
487 AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
488 AC_MSG_ERROR("Please remove config.cache and try again.")
491 dnl ---------------------------------------------------------------------------
492 dnl CF_CHECK_CFLAGS version: 3 updated: 2014/07/22 05:32:57
494 dnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from
495 dnl a build-configuration such as imake. These have the pitfall that they
496 dnl often contain compiler-specific options which we cannot use, mixed with
497 dnl preprocessor options that we usually can.
498 AC_DEFUN([CF_CHECK_CFLAGS],
500 CF_VERBOSE(checking additions to CFLAGS)
501 cf_check_cflags="$CFLAGS"
502 cf_check_cppflags="$CPPFLAGS"
503 CF_ADD_CFLAGS($1,yes)
504 if test "x$cf_check_cflags" != "x$CFLAGS" ; then
505 AC_TRY_LINK([#include <stdio.h>],[printf("Hello world");],,
506 [CF_VERBOSE(test-compile failed. Undoing change to \$CFLAGS)
507 if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then
508 CF_VERBOSE(but keeping change to \$CPPFLAGS)
510 CFLAGS="$cf_check_flags"])
513 dnl ---------------------------------------------------------------------------
514 dnl CF_CHECK_CURSES_LIB version: 2 updated: 2018/01/03 04:47:33
515 dnl -------------------
516 dnl $1 = nominal library name, used also for header lookup
517 dnl $2 = suffix to append to library name
518 dnl $3 = function to check for using AC_CHECK_LIB
519 dnl $4 = optional parameter list for $3
520 AC_DEFUN([CF_CHECK_CURSES_LIB],
522 AC_REQUIRE([CF_PKG_CONFIG])
524 cf_have_curses_lib=no
526 : ${NCURSES_CONFIG_PKG:=none}
527 if test "x${NCURSES_CONFIG_PKG}" = xnone; then
529 elif test "x${PKG_CONFIG:=none}" != xnone; then
530 AC_MSG_CHECKING(pkg-config for $1$2)
531 if "$PKG_CONFIG" --exists $1$2 ; then
534 AC_MSG_CHECKING(if the $1$2 package files work)
536 cf_save_CPPFLAGS="$CPPFLAGS"
539 CF_ADD_CFLAGS(`$PKG_CONFIG --cflags $1$2`)
540 CF_ADD_LIBS(`$PKG_CONFIG --libs $1$2`)
542 AC_TRY_LINK([#include <$1.h>],
543 [(void) $3 ( ]ifelse([$4],,,[[$4]])[ );],
544 [AC_TRY_RUN([#include <$1.h>
546 { (void) $3 ( ]ifelse([$4],,,[[$4]])[ ); return 0; }],
547 [cf_have_curses_lib=yes],
548 [cf_have_curses_lib=no],
549 [cf_have_curses_lib=maybe])],
550 [cf_have_curses_lib=no])
551 AC_MSG_RESULT($cf_have_curses_lib)
552 test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes
553 if test "$cf_have_curses_lib" != "yes"
555 CPPFLAGS="$cf_save_CPPFLAGS"
558 CF_UPPER(cf_upper,have_lib$1)
559 AC_DEFINE_UNQUOTED($cf_upper,1)
563 if test "$cf_have_curses_lib" = no; then
564 AC_CHECK_LIB($1$2,$3,[
565 CF_UPPER(cf_upper,have_lib$1)
567 AC_DEFINE_UNQUOTED($cf_upper,1)])
570 dnl ---------------------------------------------------------------------------
571 dnl CF_CLANG_COMPILER version: 5 updated: 2020/11/20 18:52:27
572 dnl -----------------
573 dnl Check if the given compiler is really clang. clang's C driver defines
574 dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
575 dnl not ignore some gcc options.
577 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
578 dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from
579 dnl the wrappers for gcc and g++ warnings.
581 dnl $1 = GCC (default) or GXX
582 dnl $2 = CLANG_COMPILER (default)
583 dnl $3 = CFLAGS (default) or CXXFLAGS
584 AC_DEFUN([CF_CLANG_COMPILER],[
585 ifelse([$2],,CLANG_COMPILER,[$2])=no
587 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
588 AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
589 cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
595 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
597 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
598 AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
601 if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
602 for cf_clang_opt in \
604 -Wno-error=implicit-function-declaration
606 AC_MSG_CHECKING(if option $cf_clang_opt works)
607 cf_save_CFLAGS="$CFLAGS"
608 CFLAGS="$CFLAGS $cf_clang_opt"
610 #include <stdio.h>],[
611 printf("hello!\n");],[
612 cf_clang_optok=yes],[
614 AC_MSG_RESULT($cf_clang_optok)
615 CFLAGS="$cf_save_CFLAGS"
616 if test $cf_clang_optok = yes; then
617 CF_VERBOSE(adding option $cf_clang_opt)
618 CF_APPEND_TEXT(CFLAGS,$cf_clang_opt)
623 dnl ---------------------------------------------------------------------------
624 dnl CF_CONST_X_STRING version: 4 updated: 2020/03/10 18:53:47
625 dnl -----------------
626 dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
627 dnl character-strings.
629 dnl It is ambiguous because the specification accommodated the pre-ANSI
630 dnl compilers bundled by more than one vendor in lieu of providing a standard C
631 dnl compiler other than by costly add-ons. Because of this, the specification
632 dnl did not take into account the use of const for telling the compiler that
633 dnl string literals would be in readonly memory.
635 dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
636 dnl let the compiler decide how to represent Xt's strings which were #define'd.
637 dnl That does not solve the problem of using the block of Xt's strings which
638 dnl are compiled into the library (and is less efficient than one might want).
640 dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
641 dnl when compiling the library and compiling using the library, to tell the
642 dnl compiler that String is const.
643 AC_DEFUN([CF_CONST_X_STRING],
645 AC_REQUIRE([AC_PATH_XTRA])
647 CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
652 #include <X11/Intrinsic.h>
654 [String foo = malloc(1); (void)foo],[
656 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
659 #define _CONST_X_STRING /* X11R7.8 (perhaps) */
660 #undef XTSTRINGDEFINES /* X11R5 and later */
662 #include <X11/Intrinsic.h>
663 ],[String foo = malloc(1); *foo = 0],[
664 cf_cv_const_x_string=no
666 cf_cv_const_x_string=yes
670 CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
672 case $cf_cv_const_x_string in
674 CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
677 CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
683 dnl ---------------------------------------------------------------------------
684 dnl CF_CURSES_ACS_MAP version: 7 updated: 2012/10/06 16:39:58
685 dnl -----------------
686 dnl Check for likely values of acs_map[]:
687 AC_DEFUN([CF_CURSES_ACS_MAP],
689 AC_REQUIRE([CF_NCURSES_WRAP_PREFIX])dnl
690 AC_CACHE_CHECK(for alternate character set array, cf_cv_curses_acs_map,[
691 cf_cv_curses_acs_map=unknown
692 for name in acs_map _acs_map __acs_map ${NCURSES_WRAP_PREFIX}acs_map
695 #include <${cf_cv_ncurses_header:-curses.h}>
697 $name['k'] = ACS_PLUS
698 ],[cf_cv_curses_acs_map=$name; break])
702 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_])
704 dnl ---------------------------------------------------------------------------
705 dnl CF_CURSES_CHECK_DATA version: 9 updated: 2020/02/08 21:00:26
706 dnl --------------------
707 dnl Check if curses.h defines the given data/variable.
708 dnl Use this after CF_NCURSES_CONFIG or CF_CURSES_CONFIG.
710 dnl $1 = data item(s) to check for
711 dnl $2 = action on success, e.g., "break" to quit checking a series of choices
712 AC_DEFUN([CF_CURSES_CHECK_DATA],
716 AC_MSG_CHECKING(for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h})
718 AC_TRY_COMPILE(CF__CURSES_HEAD,
719 CF__CURSES_DATA(foo,$cf_data)
722 AC_MSG_RESULT($cf_result)
724 if test $cf_result = yes ; then
725 CF_UPPER(cf_result,have_curses_data_$cf_data)
726 AC_DEFINE_UNQUOTED($cf_result)
729 AC_MSG_CHECKING(for data $cf_data in library)
730 # BSD linkers insist on making weak linkage, but resolve at runtime.
731 AC_TRY_RUN(CF__CURSES_HEAD
733 extern char $cf_data;
736 ]CF__CURSES_DATA(foo,$cf_data)[
737 ${cf_cv_main_return:-return}(foo == 0);
741 AC_TRY_LINK(CF__CURSES_HEAD
742 [extern char $cf_data;],[
744 ]CF__CURSES_DATA(foo,$cf_data)[
745 ${cf_cv_main_return:-return}(foo == 0);
747 ],[cf_result=yes],[cf_result=no])
749 AC_MSG_RESULT($cf_result)
750 if test $cf_result = yes ; then
751 CF_UPPER(cf_result,decl_curses_data_$cf_data)
752 AC_DEFINE_UNQUOTED($cf_result)
753 # do not exit loop here, since we prefer system's declarations
758 dnl ---------------------------------------------------------------------------
759 dnl CF_CURSES_CHECK_TYPE version: 4 updated: 2012/10/06 16:39:58
760 dnl --------------------
761 dnl Check if curses.h defines the given type
762 AC_DEFUN([CF_CURSES_CHECK_TYPE],
764 AC_MSG_CHECKING(for type $1 in ${cf_cv_ncurses_header:-curses.h})
766 #ifndef _XOPEN_SOURCE_EXTENDED
767 #define _XOPEN_SOURCE_EXTENDED
769 #include <${cf_cv_ncurses_header:-curses.h}>],[
771 ],cf_result=yes,cf_result=no)
772 AC_MSG_RESULT($cf_result)
773 if test $cf_result = yes ; then
774 CF_UPPER(cf_result,have_type_$1)
775 AC_DEFINE_UNQUOTED($cf_result,1,[Define to 1 if we have type $1])
777 AC_DEFINE_UNQUOTED($1,$2,[Define to appropriate type if $1 is not declared])
780 dnl ---------------------------------------------------------------------------
781 dnl CF_CURSES_CONFIG version: 2 updated: 2006/10/29 11:06:27
783 dnl Tie together the configure-script macros for curses. It may be ncurses,
784 dnl but unless asked, we do not make a special search for ncurses. However,
785 dnl still check for the ncurses version number, for use in other macros.
786 AC_DEFUN([CF_CURSES_CONFIG],
792 dnl ---------------------------------------------------------------------------
793 dnl CF_CURSES_CPPFLAGS version: 13 updated: 2018/06/20 20:23:13
794 dnl ------------------
795 dnl Look for the curses headers.
796 AC_DEFUN([CF_CURSES_CPPFLAGS],[
798 AC_CACHE_CHECK(for extra include directories,cf_cv_curses_incdir,[
799 cf_cv_curses_incdir=no
802 if test "x$cf_cv_screen" = "xcurses_colr"
804 test -d /usr/include/curses_colr && \
805 cf_cv_curses_incdir="-I/usr/include/curses_colr"
809 if test "x$cf_cv_screen" = "xcurses_5lib"
811 test -d /usr/5lib && \
812 test -d /usr/5include && \
813 cf_cv_curses_incdir="-I/usr/5include"
818 if test "$cf_cv_curses_incdir" != no
820 CF_APPEND_TEXT(CPPFLAGS,$cf_cv_curses_incdir)
826 dnl ---------------------------------------------------------------------------
827 dnl CF_CURSES_FUNCS version: 19 updated: 2018/01/03 04:47:33
829 dnl Curses-functions are a little complicated, since a lot of them are macros.
830 AC_DEFUN([CF_CURSES_FUNCS],
832 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
833 AC_REQUIRE([CF_XOPEN_CURSES])
834 AC_REQUIRE([CF_CURSES_TERM_H])
835 AC_REQUIRE([CF_CURSES_UNCTRL_H])
838 CF_UPPER(cf_tr_func,$cf_func)
839 AC_MSG_CHECKING(for ${cf_func})
840 CF_MSG_LOG(${cf_func})
841 AC_CACHE_VAL(cf_cv_func_$cf_func,[
842 eval cf_result='$ac_cv_func_'$cf_func
843 if test ".$cf_result" != ".no"; then
844 AC_TRY_LINK(CF__CURSES_HEAD,
847 long foo = (long)(&${cf_func});
848 fprintf(stderr, "testing linkage of $cf_func:%p\n", (void *)foo);
849 if (foo + 1234L > 5678L)
850 ${cf_cv_main_return:-return}(foo != 0);
856 eval 'cf_cv_func_'$cf_func'=$cf_result'
858 # use the computed/retrieved cache-value:
859 eval 'cf_result=$cf_cv_func_'$cf_func
860 AC_MSG_RESULT($cf_result)
861 if test $cf_result != no; then
862 AC_DEFINE_UNQUOTED(HAVE_${cf_tr_func})
866 dnl ---------------------------------------------------------------------------
867 dnl CF_CURSES_HEADER version: 5 updated: 2015/04/23 20:35:30
869 dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
870 dnl variations of ncurses' installs.
872 dnl $1 = ncurses when looking for ncurses, or is empty
873 AC_DEFUN([CF_CURSES_HEADER],[
874 AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[
875 cf_cv_ncurses_header=none
877 ncurses.h ifelse($1,,,[$1/ncurses.h]) \
878 curses.h ifelse($1,,,[$1/curses.h]) ifelse($1,,[ncurses/ncurses.h ncurses/curses.h])
880 AC_TRY_COMPILE([#include <${cf_header}>],
881 [initscr(); tgoto("?", 0,0)],
882 [cf_cv_ncurses_header=$cf_header; break],[])
886 if test "$cf_cv_ncurses_header" = none ; then
887 AC_MSG_ERROR(No curses header-files found)
890 # cheat, to get the right #define's for HAVE_NCURSES_H, etc.
891 AC_CHECK_HEADERS($cf_cv_ncurses_header)
893 dnl ---------------------------------------------------------------------------
894 dnl CF_CURSES_LIBS version: 42 updated: 2018/06/20 20:23:13
896 dnl Look for the curses libraries. Older curses implementations may require
897 dnl termcap/termlib to be linked as well. Call CF_CURSES_CPPFLAGS first.
898 AC_DEFUN([CF_CURSES_LIBS],[
900 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
901 AC_MSG_CHECKING(if we have identified curses libraries)
902 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
903 [initscr(); tgoto("?", 0,0)],
906 AC_MSG_RESULT($cf_result)
908 if test "$cf_result" = no ; then
911 AC_CHECK_LIB(mytinfo,tgoto,[CF_ADD_LIBS(-lmytinfo)])
914 # Looking at HPUX 10.20, the Hcurses library is the oldest (1997), cur_colr
915 # next (1998), and xcurses "newer" (2000). There is no header file for
916 # Hcurses; the subdirectory curses_colr has the headers (curses.h and
917 # term.h) for cur_colr
918 if test "x$cf_cv_screen" = "xcurses_colr"
920 AC_CHECK_LIB(cur_colr,initscr,[
921 CF_ADD_LIBS(-lcur_colr)
922 ac_cv_func_initscr=yes
924 AC_CHECK_LIB(Hcurses,initscr,[
925 # HP's header uses __HP_CURSES, but user claims _HP_CURSES.
926 CF_ADD_LIBS(-lHcurses)
927 CF_APPEND_TEXT(CPPFLAGS,-D__HP_CURSES -D_HP_CURSES)
928 ac_cv_func_initscr=yes
933 case `arch 2>/dev/null` in
937 CF_ADD_LIBDIR(/lib64)
948 if test "x$cf_cv_screen" = "xcurses_5lib"
950 if test -d /usr/5lib ; then
951 CF_ADD_LIBDIR(/usr/5lib)
952 CF_ADD_LIBS(-lcurses -ltermcap)
955 ac_cv_func_initscr=yes
959 if test ".$ac_cv_func_initscr" != .yes ; then
962 if test ".${cf_cv_ncurses_version:-no}" != .no
964 cf_check_list="ncurses curses cursesX"
966 cf_check_list="cursesX curses ncurses"
969 # Check for library containing tgoto. Do this before curses library
970 # because it may be needed to link the test-case for initscr.
971 if test "x$cf_term_lib" = x
973 AC_CHECK_FUNC(tgoto,[cf_term_lib=predefined],[
974 for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown
976 AC_CHECK_LIB($cf_term_lib,tgoto,[
977 : ${cf_nculib_root:=$cf_term_lib}
984 # Check for library containing initscr
985 test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS"
986 if test "x$cf_curs_lib" = x
988 for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown
990 LIBS="-l$cf_curs_lib $cf_save_LIBS"
991 if test "$cf_term_lib" = unknown || test "$cf_term_lib" = "$cf_curs_lib" ; then
992 AC_MSG_CHECKING(if we can link with $cf_curs_lib library)
993 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
997 AC_MSG_RESULT($cf_result)
998 test $cf_result = yes && break
999 elif test "$cf_curs_lib" = "$cf_term_lib" ; then
1001 elif test "$cf_term_lib" != predefined ; then
1002 AC_MSG_CHECKING(if we need both $cf_curs_lib and $cf_term_lib libraries)
1003 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
1004 [initscr(); tgoto((char *)0, 0, 0);],
1007 LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
1008 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
1013 AC_MSG_RESULT($cf_result)
1014 test $cf_result != error && break
1018 test $cf_curs_lib = unknown && AC_MSG_ERROR(no curses library found)
1023 dnl ---------------------------------------------------------------------------
1024 dnl CF_CURSES_TERM_H version: 12 updated: 2020/03/19 20:23:48
1025 dnl ----------------
1026 dnl SVr4 curses should have term.h as well (where it puts the definitions of
1027 dnl the low-level interface). This may not be true in old/broken implementations,
1028 dnl as well as in misconfigured systems (e.g., gcc configured for Solaris 2.4
1029 dnl running with Solaris 2.5.1).
1030 AC_DEFUN([CF_CURSES_TERM_H],
1032 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
1034 AC_CACHE_CHECK(for term.h, cf_cv_term_header,[
1036 # If we found <ncurses/curses.h>, look for <ncurses/term.h>, but always look
1037 # for <term.h> if we do not find the variant.
1039 cf_header_list="term.h ncurses/term.h ncursesw/term.h"
1041 case ${cf_cv_ncurses_header:-curses.h} in
1043 cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`term.h
1044 cf_header_list="$cf_header_item $cf_header_list"
1048 for cf_header in $cf_header_list
1051 #include <${cf_cv_ncurses_header:-curses.h}>
1052 #include <${cf_header}>],
1053 [WINDOW *x; (void)x],
1054 [cf_cv_term_header=$cf_header
1056 [cf_cv_term_header=no])
1059 case $cf_cv_term_header in
1061 # If curses is ncurses, some packagers still mess it up by trying to make
1062 # us use GNU termcap. This handles the most common case.
1063 for cf_header in ncurses/term.h ncursesw/term.h
1066 #include <${cf_cv_ncurses_header:-curses.h}>
1067 #ifdef NCURSES_VERSION
1068 #include <${cf_header}>
1072 [WINDOW *x; (void)x],
1073 [cf_cv_term_header=$cf_header
1075 [cf_cv_term_header=no])
1081 case $cf_cv_term_header in
1083 AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
1086 AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
1089 AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
1093 dnl ---------------------------------------------------------------------------
1094 dnl CF_CURSES_UNCTRL_H version: 5 updated: 2020/03/19 20:23:48
1095 dnl ------------------
1096 dnl Any X/Open curses implementation must have unctrl.h, but ncurses packages
1097 dnl may put it in a subdirectory (along with ncurses' other headers, of
1098 dnl course). Packages which put the headers in inconsistent locations are
1100 AC_DEFUN([CF_CURSES_UNCTRL_H],
1102 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
1104 AC_CACHE_CHECK(for unctrl.h, cf_cv_unctrl_header,[
1106 # If we found <ncurses/curses.h>, look for <ncurses/unctrl.h>, but always look
1107 # for <unctrl.h> if we do not find the variant.
1109 cf_header_list="unctrl.h ncurses/unctrl.h ncursesw/unctrl.h"
1111 case ${cf_cv_ncurses_header:-curses.h} in
1113 cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`unctrl.h
1114 cf_header_list="$cf_header_item $cf_header_list"
1118 for cf_header in $cf_header_list
1121 #include <${cf_cv_ncurses_header:-curses.h}>
1122 #include <${cf_header}>],
1123 [WINDOW *x; (void)x],
1124 [cf_cv_unctrl_header=$cf_header
1126 [cf_cv_unctrl_header=no])
1130 case $cf_cv_unctrl_header in
1132 AC_MSG_WARN(unctrl.h header not found)
1136 case $cf_cv_unctrl_header in
1138 AC_DEFINE(HAVE_UNCTRL_H,1,[Define to 1 if we have unctrl.h])
1141 AC_DEFINE(HAVE_NCURSES_UNCTRL_H,1,[Define to 1 if we have ncurses/unctrl.h])
1144 AC_DEFINE(HAVE_NCURSESW_UNCTRL_H,1,[Define to 1 if we have ncursesw/unctrl.h])
1148 dnl ---------------------------------------------------------------------------
1149 dnl CF_CURSES_WACS_MAP version: 7 updated: 2020/03/19 20:23:48
1150 dnl ------------------
1151 dnl Check for likely values of wacs_map[].
1152 AC_DEFUN([CF_CURSES_WACS_MAP],
1154 AC_CACHE_CHECK(for wide alternate character set array, cf_cv_curses_wacs_map,[
1155 cf_cv_curses_wacs_map=unknown
1156 for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char
1159 #ifndef _XOPEN_SOURCE_EXTENDED
1160 #define _XOPEN_SOURCE_EXTENDED
1162 #include <${cf_cv_ncurses_header:-curses.h}>],
1163 [void *foo = &($name['k']); (void)foo],
1164 [cf_cv_curses_wacs_map=$name
1168 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])
1170 dnl ---------------------------------------------------------------------------
1171 dnl CF_CURSES_WACS_SYMBOLS version: 3 updated: 2020/03/19 20:23:48
1172 dnl ----------------------
1173 dnl Do a check to see if the WACS_xxx constants are defined compatibly with
1174 dnl X/Open Curses. In particular, NetBSD's implementation of the WACS_xxx
1175 dnl constants is broken since those constants do not point to cchar_t's.
1176 AC_DEFUN([CF_CURSES_WACS_SYMBOLS],
1178 AC_REQUIRE([CF_CURSES_WACS_MAP])
1180 AC_CACHE_CHECK(for wide alternate character constants, cf_cv_curses_wacs_symbols,[
1181 cf_cv_curses_wacs_symbols=no
1182 if test "$cf_cv_curses_wacs_map" != unknown
1185 #ifndef _XOPEN_SOURCE_EXTENDED
1186 #define _XOPEN_SOURCE_EXTENDED
1188 #include <${cf_cv_ncurses_header:-curses.h}>],
1189 [cchar_t *foo = WACS_PLUS;
1190 $cf_cv_curses_wacs_map['k'] = *WACS_PLUS; (void)foo],
1191 [cf_cv_curses_wacs_symbols=yes])
1194 #ifndef _XOPEN_SOURCE_EXTENDED
1195 #define _XOPEN_SOURCE_EXTENDED
1197 #include <${cf_cv_ncurses_header:-curses.h}>],
1198 [cchar_t *foo = WACS_PLUS; (void)foo],
1199 [cf_cv_curses_wacs_symbols=yes])
1203 test "$cf_cv_curses_wacs_symbols" != no && AC_DEFINE(CURSES_WACS_SYMBOLS,1,[Define to 1 if (n)curses supports wide-character WACS_ symbols])
1205 dnl ---------------------------------------------------------------------------
1206 dnl CF_DIRNAME version: 4 updated: 2002/12/21 19:25:52
1208 dnl "dirname" is not portable, so we fake it with a shell script.
1209 AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl
1210 dnl ---------------------------------------------------------------------------
1211 dnl CF_DISABLE_ECHO version: 13 updated: 2015/04/18 08:56:57
1213 dnl You can always use "make -n" to see the actual options, but it's hard to
1214 dnl pick out/analyze warning messages when the compile-line is long.
1217 dnl ECHO_LT - symbol to control if libtool is verbose
1218 dnl ECHO_LD - symbol to prefix "cc -o" lines
1219 dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
1220 dnl SHOW_CC - symbol to put before explicit "cc -c" lines
1221 dnl ECHO_CC - symbol to put before any "cc" line
1223 AC_DEFUN([CF_DISABLE_ECHO],[
1224 AC_MSG_CHECKING(if you want to see long compiling messages)
1225 CF_ARG_DISABLE(echo,
1226 [ --disable-echo do not display "compiling" commands],
1229 ECHO_LD='@echo linking [$]@;'
1230 RULE_CC='@echo compiling [$]<'
1231 SHOW_CC='@echo compiling [$]@'
1240 AC_MSG_RESULT($enableval)
1247 dnl ---------------------------------------------------------------------------
1248 dnl CF_DISABLE_LEAKS version: 7 updated: 2012/10/02 20:55:03
1249 dnl ----------------
1250 dnl Combine no-leak checks with the libraries or tools that are used for the
1252 AC_DEFUN([CF_DISABLE_LEAKS],[
1254 AC_REQUIRE([CF_WITH_DMALLOC])
1255 AC_REQUIRE([CF_WITH_DBMALLOC])
1256 AC_REQUIRE([CF_WITH_VALGRIND])
1258 AC_MSG_CHECKING(if you want to perform memory-leak testing)
1259 AC_ARG_ENABLE(leaks,
1260 [ --disable-leaks test: free permanent memory, analyze leaks],
1261 [if test "x$enableval" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi],
1262 : ${with_no_leaks:=no})
1263 AC_MSG_RESULT($with_no_leaks)
1265 if test "$with_no_leaks" = yes ; then
1266 AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1267 AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1270 dnl ---------------------------------------------------------------------------
1271 dnl CF_DISABLE_RPATH_HACK version: 2 updated: 2011/02/13 13:31:33
1272 dnl ---------------------
1273 dnl The rpath-hack makes it simpler to build programs, particularly with the
1274 dnl *BSD ports which may have essential libraries in unusual places. But it
1275 dnl can interfere with building an executable for the base system. Use this
1276 dnl option in that case.
1277 AC_DEFUN([CF_DISABLE_RPATH_HACK],
1279 AC_MSG_CHECKING(if rpath-hack should be disabled)
1280 CF_ARG_DISABLE(rpath-hack,
1281 [ --disable-rpath-hack don't add rpath options for additional libraries],
1282 [cf_disable_rpath_hack=yes],
1283 [cf_disable_rpath_hack=no])
1284 AC_MSG_RESULT($cf_disable_rpath_hack)
1285 if test "$cf_disable_rpath_hack" = no ; then
1289 dnl ---------------------------------------------------------------------------
1290 dnl CF_ENABLE_STRING_HACKS version: 5 updated: 2016/10/08 17:34:11
1291 dnl ----------------------
1292 dnl On a few platforms, the compiler and/or loader nags with untruthful
1293 dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
1294 dnl and implying that most uses of the recommended alternatives are correct.
1296 dnl Factually speaking, no one has actually counted the number of uses of these
1297 dnl functions versus the total of incorrect uses. Samples of a few thousand
1298 dnl instances are meaningless compared to the hundreds of millions of lines of
1299 dnl existing C code.
1301 dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some
1302 dnl platforms, in implementations of varying quality. Likewise, snprintf is
1303 dnl standard - but evolved through phases, and older implementations are likely
1304 dnl to yield surprising results, as documented in manpages on various systems.
1305 AC_DEFUN([CF_ENABLE_STRING_HACKS],
1307 AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings)
1308 AC_ARG_ENABLE(string-hacks,
1309 [ --enable-string-hacks work around bogus compiler/loader warnings],
1310 [with_string_hacks=$enableval],
1311 [with_string_hacks=no])
1312 AC_MSG_RESULT($with_string_hacks)
1314 if test "x$with_string_hacks" = "xyes"; then
1315 AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings])
1316 AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
1317 AC_CHECK_FUNC(strlcat,[
1318 AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
1320 AC_CHECK_LIB(bsd,strlcat,[
1322 AC_CHECK_HEADERS(bsd/string.h)
1323 AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
1326 AC_CHECK_FUNCS( strlcpy snprintf )
1329 dnl ---------------------------------------------------------------------------
1330 dnl CF_ENABLE_WARNINGS version: 7 updated: 2020/08/29 09:05:21
1331 dnl ------------------
1332 dnl Configure-option to enable gcc warnings
1334 dnl $1 = extra options to add, if supported
1335 dnl $2 = option for checking attributes. By default, this is done when
1336 dnl warnings are enabled. For other values:
1337 dnl yes: always do this, e.g., to use in generated library-headers
1338 dnl no: never do this
1339 AC_DEFUN([CF_ENABLE_WARNINGS],[
1340 if ( test "$GCC" = yes || test "$GXX" = yes )
1342 CF_FIX_WARNINGS(CFLAGS)
1343 CF_FIX_WARNINGS(CPPFLAGS)
1344 CF_FIX_WARNINGS(LDFLAGS)
1345 AC_MSG_CHECKING(if you want to turn on gcc warnings)
1346 CF_ARG_ENABLE(warnings,
1347 [ --enable-warnings test: turn on gcc compiler warnings],
1348 [with_warnings=yes],
1350 AC_MSG_RESULT($with_warnings)
1351 if test "$with_warnings" = "yes"
1353 ifelse($2,,[CF_GCC_ATTRIBUTES])
1356 ifelse($2,yes,[CF_GCC_ATTRIBUTES])
1359 dnl ---------------------------------------------------------------------------
1360 dnl CF_FIND_LIBRARY version: 9 updated: 2008/03/23 14:48:54
1362 dnl Look for a non-standard library, given parameters for AC_TRY_LINK. We
1363 dnl prefer a standard location, and use -L options only if we do not find the
1364 dnl library in the standard library location(s).
1365 dnl $1 = library name
1366 dnl $2 = library class, usually the same as library name
1368 dnl $4 = code fragment to compile/link
1369 dnl $5 = corresponding function-name
1370 dnl $6 = flag, nonnull if failure should not cause an error-exit
1372 dnl Sets the variable "$cf_libdir" as a side-effect, so we can see if we had
1373 dnl to use a -L option.
1374 AC_DEFUN([CF_FIND_LIBRARY],
1376 eval 'cf_cv_have_lib_'$1'=no'
1379 eval 'cf_cv_have_lib_'$1'=yes',[
1380 cf_save_LIBS="$LIBS"
1381 AC_MSG_CHECKING(for $5 in -l$1)
1383 AC_TRY_LINK([$3],[$4],
1385 eval 'cf_cv_have_lib_'$1'=yes'
1388 CF_LIBRARY_PATH(cf_search,$2)
1389 for cf_libdir in $cf_search
1391 AC_MSG_CHECKING(for -l$1 in $cf_libdir)
1392 LIBS="-L$cf_libdir -l$1 $cf_save_LIBS"
1393 AC_TRY_LINK([$3],[$4],
1395 eval 'cf_cv_have_lib_'$1'=yes'
1398 LIBS="$cf_save_LIBS"])
1402 eval 'cf_found_library=[$]cf_cv_have_lib_'$1
1404 if test $cf_found_library = no ; then
1405 AC_MSG_ERROR(Cannot link $1 library)
1409 dnl ---------------------------------------------------------------------------
1410 dnl CF_FIND_LINKAGE version: 21 updated: 2018/06/20 20:23:13
1412 dnl Find a library (specifically the linkage used in the code fragment),
1413 dnl searching for it if it is not already in the library path.
1414 dnl See also CF_ADD_SEARCHPATH.
1416 dnl Parameters (4-on are optional):
1417 dnl $1 = headers for library entrypoint
1418 dnl $2 = code fragment for library entrypoint
1419 dnl $3 = the library name without the "-l" option or ".so" suffix.
1420 dnl $4 = action to perform if successful (default: update CPPFLAGS, etc)
1421 dnl $5 = action to perform if not successful
1422 dnl $6 = module name, if not the same as the library name
1423 dnl $7 = extra libraries
1425 dnl Sets these variables:
1426 dnl $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found
1427 dnl $cf_cv_header_path_$3 - include-directory if needed
1428 dnl $cf_cv_library_path_$3 - library-directory if needed
1429 dnl $cf_cv_library_file_$3 - library-file if needed, e.g., -l$3
1430 AC_DEFUN([CF_FIND_LINKAGE],[
1432 # If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these
1433 # will be set on completion of the AC_TRY_LINK below.
1434 cf_cv_header_path_$3=
1435 cf_cv_library_path_$3=
1437 CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)])
1439 cf_save_LIBS="$LIBS"
1441 AC_TRY_LINK([$1],[$2],[
1442 cf_cv_find_linkage_$3=yes
1443 cf_cv_header_path_$3=/usr/include
1444 cf_cv_library_path_$3=/usr/lib
1447 LIBS="-l$3 $7 $cf_save_LIBS"
1449 AC_TRY_LINK([$1],[$2],[
1450 cf_cv_find_linkage_$3=yes
1451 cf_cv_header_path_$3=/usr/include
1452 cf_cv_library_path_$3=/usr/lib
1453 cf_cv_library_file_$3="-l$3"
1455 cf_cv_find_linkage_$3=no
1456 LIBS="$cf_save_LIBS"
1458 CF_VERBOSE(find linkage for $3 library)
1459 CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
1461 cf_save_CPPFLAGS="$CPPFLAGS"
1462 cf_test_CPPFLAGS="$CPPFLAGS"
1464 CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
1465 for cf_cv_header_path_$3 in $cf_search
1467 if test -d $cf_cv_header_path_$3 ; then
1468 CF_VERBOSE(... testing $cf_cv_header_path_$3)
1469 CPPFLAGS="$cf_save_CPPFLAGS"
1470 CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3)
1471 AC_TRY_COMPILE([$1],[$2],[
1472 CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
1473 cf_cv_find_linkage_$3=maybe
1474 cf_test_CPPFLAGS="$CPPFLAGS"
1476 CPPFLAGS="$cf_save_CPPFLAGS"
1481 if test "$cf_cv_find_linkage_$3" = maybe ; then
1483 CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
1485 cf_save_LIBS="$LIBS"
1486 cf_save_LDFLAGS="$LDFLAGS"
1489 CPPFLAGS="$cf_test_CPPFLAGS"
1490 LIBS="-l$3 $7 $cf_save_LIBS"
1491 AC_TRY_LINK([$1],[$2],[
1492 CF_VERBOSE(... found $3 library in system)
1493 cf_cv_find_linkage_$3=yes])
1494 CPPFLAGS="$cf_save_CPPFLAGS"
1495 LIBS="$cf_save_LIBS"
1498 if test "$cf_cv_find_linkage_$3" != yes ; then
1499 CF_LIBRARY_PATH(cf_search,$3)
1500 for cf_cv_library_path_$3 in $cf_search
1502 if test -d $cf_cv_library_path_$3 ; then
1503 CF_VERBOSE(... testing $cf_cv_library_path_$3)
1504 CPPFLAGS="$cf_test_CPPFLAGS"
1505 LIBS="-l$3 $7 $cf_save_LIBS"
1506 LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
1507 AC_TRY_LINK([$1],[$2],[
1508 CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
1509 cf_cv_find_linkage_$3=yes
1510 cf_cv_library_file_$3="-l$3"
1512 CPPFLAGS="$cf_save_CPPFLAGS"
1513 LIBS="$cf_save_LIBS"
1514 LDFLAGS="$cf_save_LDFLAGS"
1518 CPPFLAGS="$cf_save_CPPFLAGS"
1519 LDFLAGS="$cf_save_LDFLAGS"
1523 cf_cv_find_linkage_$3=no
1528 LIBS="$cf_save_LIBS"
1530 if test "$cf_cv_find_linkage_$3" = yes ; then
1532 CF_ADD_INCDIR($cf_cv_header_path_$3)
1533 CF_ADD_LIBDIR($cf_cv_library_path_$3)
1537 ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
1540 dnl ---------------------------------------------------------------------------
1541 dnl CF_FIX_WARNINGS version: 2 updated: 2020/08/28 15:08:28
1543 dnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc. Any of gcc's
1544 dnl "-Werror" flags can interfere with configure-checks. Those go into
1547 dnl $1 = variable name to repair
1548 define([CF_FIX_WARNINGS],[
1549 if ( test "$GCC" = yes || test "$GXX" = yes )
1553 CF_VERBOSE(repairing $1: [$]$1)
1555 for cf_temp_scan in [$]$1
1557 case "x$cf_temp_scan" in
1559 CF_APPEND_TEXT(EXTRA_CFLAGS,"$cf_temp_scan")
1562 CF_APPEND_TEXT(cf_temp_flags,"$cf_temp_scan")
1567 CF_VERBOSE(... fixed [$]$1)
1568 CF_VERBOSE(... extra $EXTRA_CFLAGS)
1572 AC_SUBST(EXTRA_CFLAGS)
1574 dnl ---------------------------------------------------------------------------
1575 dnl CF_FUNC_CURSES_VERSION version: 7 updated: 2017/05/10 18:31:29
1576 dnl ----------------------
1577 dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS.
1578 dnl It's a character string "SVR4", not documented.
1579 AC_DEFUN([CF_FUNC_CURSES_VERSION],
1581 AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
1583 #include <${cf_cv_ncurses_header:-curses.h}>
1587 sprintf(temp, "%s\n", curses_version());
1588 ${cf_cv_main_return:-return}(0);
1590 ,[cf_cv_func_curses_version=yes]
1591 ,[cf_cv_func_curses_version=no]
1592 ,[cf_cv_func_curses_version=unknown])
1594 test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 if we have curses_version function])
1596 dnl ---------------------------------------------------------------------------
1597 dnl CF_FUNC_OPENPTY version: 5 updated: 2015/09/12 14:46:50
1599 dnl Check for openpty() function, along with <pty.h> header. It may need the
1600 dnl "util" library as well.
1601 AC_DEFUN([CF_FUNC_OPENPTY],
1603 AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no)
1604 AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
1605 cf_save_LIBS="$LIBS"
1606 test $cf_cv_lib_util = yes && { CF_ADD_LIB(util) }
1607 for cf_header in pty.h libutil.h util.h
1610 #include <$cf_header>
1612 int x = openpty((int *)0, (int *)0, (char *)0,
1613 (struct termios *)0, (struct winsize *)0);
1615 cf_cv_func_openpty=$cf_header
1618 cf_cv_func_openpty=no
1621 LIBS="$cf_save_LIBS"
1624 dnl ---------------------------------------------------------------------------
1625 dnl CF_GCC_ATTRIBUTES version: 19 updated: 2020/08/29 09:05:21
1626 dnl -----------------
1627 dnl Test for availability of useful gcc __attribute__ directives to quiet
1628 dnl compiler warnings. Though useful, not all are supported -- and contrary
1629 dnl to documentation, unrecognized directives cause older compilers to barf.
1630 AC_DEFUN([CF_GCC_ATTRIBUTES],
1632 if ( test "$GCC" = yes || test "$GXX" = yes )
1634 cat > conftest.i <<EOF
1636 #define GCC_PRINTF 0
1641 #ifndef GCC_NORETURN
1642 #define GCC_NORETURN /* nothing */
1645 #define GCC_UNUSED /* nothing */
1648 if test "$GCC" = yes
1650 AC_CHECKING([for $CC __attribute__ directives])
1651 cat > conftest.$ac_ext <<EOF
1652 #line __oline__ "${as_me:-configure}"
1653 #include "confdefs.h"
1654 #include "conftest.h"
1655 #include "conftest.i"
1657 #define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
1659 #define GCC_PRINTFLIKE(fmt,var) /*nothing*/
1662 #define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
1664 #define GCC_SCANFLIKE(fmt,var) /*nothing*/
1666 extern void wow(char *,...) GCC_SCANFLIKE(1,2);
1667 extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
1668 extern void foo(void) GCC_NORETURN;
1669 int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; }
1671 cf_printf_attribute=no
1672 cf_scanf_attribute=no
1673 for cf_attribute in scanf printf unused noreturn
1675 CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
1676 cf_directive="__attribute__(($cf_attribute))"
1677 echo "checking for $CC $cf_directive" 1>&AC_FD_CC
1679 case $cf_attribute in
1681 cf_printf_attribute=yes
1682 cat >conftest.h <<EOF
1683 #define GCC_$cf_ATTRIBUTE 1
1687 cf_scanf_attribute=yes
1688 cat >conftest.h <<EOF
1689 #define GCC_$cf_ATTRIBUTE 1
1693 cat >conftest.h <<EOF
1694 #define GCC_$cf_ATTRIBUTE $cf_directive
1699 if AC_TRY_EVAL(ac_compile); then
1700 test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
1701 cat conftest.h >>confdefs.h
1702 case $cf_attribute in
1704 AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
1707 cf_value='/* nothing */'
1708 if test "$cf_printf_attribute" != no ; then
1709 cf_value='__attribute__((format(printf,fmt,var)))'
1710 AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
1712 AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
1715 cf_value='/* nothing */'
1716 if test "$cf_scanf_attribute" != no ; then
1717 cf_value='__attribute__((format(scanf,fmt,var)))'
1718 AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
1720 AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
1723 AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
1729 fgrep define conftest.i >>confdefs.h
1734 dnl ---------------------------------------------------------------------------
1735 dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
1737 dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
1738 dnl compatible), attempt to determine if icc/clang is actually used.
1739 AC_DEFUN([CF_GCC_VERSION],[
1740 AC_REQUIRE([AC_PROG_CC])
1742 if test "$GCC" = yes ; then
1743 AC_MSG_CHECKING(version of $CC)
1744 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.]].*//'`"
1745 test -z "$GCC_VERSION" && GCC_VERSION=unknown
1746 AC_MSG_RESULT($GCC_VERSION)
1748 CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
1749 CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
1751 dnl ---------------------------------------------------------------------------
1752 dnl CF_GCC_WARNINGS version: 38 updated: 2020/08/28 15:08:28
1754 dnl Check if the compiler supports useful warning options. There's a few that
1755 dnl we don't use, simply because they're too noisy:
1757 dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
1758 dnl -Winline (usually not worthwhile)
1759 dnl -Wredundant-decls (system headers make this too noisy)
1760 dnl -Wtraditional (combines too many unrelated messages, only a few useful)
1761 dnl -Wwrite-strings (too noisy, but should review occasionally). This
1762 dnl is enabled for ncurses using "--enable-const".
1766 dnl $1 is an optional list of gcc warning flags that a particular
1767 dnl application might want to use, e.g., "no-unused" for
1770 dnl If $with_ext_const is "yes", add a check for -Wwrite-strings
1772 AC_DEFUN([CF_GCC_WARNINGS],
1774 AC_REQUIRE([CF_GCC_VERSION])
1775 if test "x$have_x" = xyes; then CF_CONST_X_STRING fi
1776 cat > conftest.$ac_ext <<EOF
1777 #line __oline__ "${as_me:-configure}"
1778 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
1780 if test "$INTEL_COMPILER" = yes
1782 # The "-wdXXX" options suppress warnings:
1783 # remark #1419: external declaration in primary source file
1784 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
1785 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
1786 # remark #193: zero used for undefined preprocessing identifier
1787 # remark #593: variable "curs_sb_left_arrow" was set but never used
1788 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
1789 # remark #869: parameter "tw" was never referenced
1790 # remark #981: operands are evaluated in unspecified order
1791 # warning #279: controlling expression is constant
1793 AC_CHECKING([for $CC warning options])
1794 cf_save_CFLAGS="$CFLAGS"
1795 EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
1807 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
1808 if AC_TRY_EVAL(ac_compile); then
1809 test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
1810 EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
1813 CFLAGS="$cf_save_CFLAGS"
1814 elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
1816 AC_CHECKING([for $CC warning options])
1817 cf_save_CFLAGS="$CFLAGS"
1819 test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
1820 cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
1821 test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
1822 for cf_opt in W Wall \
1823 Wbad-function-cast \
1826 Wdeclaration-after-statement \
1829 Wmissing-declarations \
1830 Wmissing-prototypes \
1834 Wstrict-prototypes \
1835 Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
1837 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
1838 if AC_TRY_EVAL(ac_compile); then
1839 test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
1842 case $GCC_VERSION in
1844 CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
1849 case $GCC_VERSION in
1851 CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
1856 EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
1859 CFLAGS="$cf_save_CFLAGS"
1863 AC_SUBST(EXTRA_CFLAGS)
1865 dnl ---------------------------------------------------------------------------
1866 dnl CF_GETOPT_HEADER version: 6 updated: 2014/07/22 14:45:54
1867 dnl ----------------
1868 dnl Check for getopt's variables which are commonly defined in stdlib.h,
1869 dnl unistd.h or (nonstandard) in getopt.h
1870 AC_DEFUN([CF_GETOPT_HEADER],
1872 AC_HAVE_HEADERS(unistd.h getopt.h)
1873 AC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[
1874 cf_cv_getopt_header=none
1875 for cf_header in stdio.h stdlib.h unistd.h getopt.h
1878 #include <$cf_header>],
1879 [int x = optind; char *y = optarg],
1880 [cf_cv_getopt_header=$cf_header
1884 if test $cf_cv_getopt_header != none ; then
1885 AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header])
1887 if test $cf_cv_getopt_header = getopt.h ; then
1888 AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h])
1891 dnl ---------------------------------------------------------------------------
1892 dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
1894 dnl Check if we must define _GNU_SOURCE to get a reasonable value for
1895 dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect
1896 dnl (or misfeature) of glibc2, which breaks portability of many applications,
1897 dnl since it is interwoven with GNU extensions.
1899 dnl Well, yes we could work around it...
1902 dnl $1 is the nominal value for _XOPEN_SOURCE
1903 AC_DEFUN([CF_GNU_SOURCE],
1905 cf_gnu_xopen_source=ifelse($1,,500,$1)
1907 AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
1908 AC_TRY_COMPILE([#include <sys/types.h>],[
1909 #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
1911 #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
1914 # error not GNU C library
1916 [cf_cv_gnu_library=yes],
1917 [cf_cv_gnu_library=no])
1920 if test x$cf_cv_gnu_library = xyes; then
1922 # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
1923 # was changed to help a little. newlib incorporated the change about 4
1925 AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
1927 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
1928 AC_TRY_COMPILE([#include <sys/types.h>],[
1929 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
1931 #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
1934 # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
1936 [cf_cv_gnu_library_219=yes],
1937 [cf_cv_gnu_library_219=no])
1941 if test "x$cf_cv_gnu_library_219" = xyes; then
1943 AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
1944 CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
1947 #include <sys/types.h>
1949 #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
1952 # error GNU C library is too old
1954 [cf_cv_gnu_dftsrc_219=yes],
1955 [cf_cv_gnu_dftsrc_219=no])
1957 test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
1959 cf_cv_gnu_dftsrc_219=maybe
1962 if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
1964 AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
1965 AC_TRY_COMPILE([#include <sys/types.h>],[
1966 #ifndef _XOPEN_SOURCE
1967 #error expected _XOPEN_SOURCE to be defined
1969 [cf_cv_gnu_source=no],
1970 [cf_save="$CPPFLAGS"
1971 CF_ADD_CFLAGS(-D_GNU_SOURCE)
1972 AC_TRY_COMPILE([#include <sys/types.h>],[
1973 #ifdef _XOPEN_SOURCE
1974 #error expected _XOPEN_SOURCE to be undefined
1976 [cf_cv_gnu_source=no],
1977 [cf_cv_gnu_source=yes])
1982 if test "$cf_cv_gnu_source" = yes
1984 AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
1985 CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
1986 AC_TRY_COMPILE([#include <sys/types.h>],[
1987 #ifdef _DEFAULT_SOURCE
1988 #error expected _DEFAULT_SOURCE to be undefined
1990 [cf_cv_default_source=no],
1991 [cf_cv_default_source=yes])
1993 if test "$cf_cv_default_source" = yes
1995 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
2002 dnl ---------------------------------------------------------------------------
2003 dnl CF_HEADER_PATH version: 13 updated: 2015/04/15 19:08:48
2005 dnl Construct a search-list of directories for a nonstandard header-file
2008 dnl $1 = the variable to return as result
2009 dnl $2 = the package name
2010 AC_DEFUN([CF_HEADER_PATH],
2014 # collect the current set of include-directories from compiler flags
2015 cf_header_path_list=""
2016 if test -n "${CFLAGS}${CPPFLAGS}" ; then
2017 for cf_header_path in $CPPFLAGS $CFLAGS
2019 case $cf_header_path in
2021 cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
2022 CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE)
2023 cf_header_path_list="$cf_header_path_list [$]$1"
2029 # add the variations for the package we are looking for
2030 CF_SUBDIR_PATH($1,$2,include)
2032 test "$includedir" != NONE && \
2033 test "$includedir" != "/usr/include" && \
2034 test -d "$includedir" && {
2035 test -d $includedir && $1="[$]$1 $includedir"
2036 test -d $includedir/$2 && $1="[$]$1 $includedir/$2"
2039 test "$oldincludedir" != NONE && \
2040 test "$oldincludedir" != "/usr/include" && \
2041 test -d "$oldincludedir" && {
2042 test -d $oldincludedir && $1="[$]$1 $oldincludedir"
2043 test -d $oldincludedir/$2 && $1="[$]$1 $oldincludedir/$2"
2046 $1="[$]$1 $cf_header_path_list"
2048 dnl ---------------------------------------------------------------------------
2049 dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54
2051 dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
2052 AC_DEFUN([CF_HELP_MESSAGE],
2053 [CF_ACVERSION_CHECK(2.53,[],[
2054 AC_DIVERT_HELP($1)])dnl
2056 dnl ---------------------------------------------------------------------------
2057 dnl CF_INHERIT_SCRIPT version: 2 updated: 2003/03/01 23:50:42
2058 dnl -----------------
2059 dnl If we do not have a given script, look for it in the parent directory.
2060 AC_DEFUN([CF_INHERIT_SCRIPT],
2062 test -f $1 || ( test -f ../$1 && cp ../$1 ./ )
2064 dnl ---------------------------------------------------------------------------
2065 dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21
2067 dnl prompt for/fill-in useful install-program options
2068 AC_DEFUN([CF_INSTALL_OPTS],
2074 dnl ---------------------------------------------------------------------------
2075 dnl CF_INSTALL_OPT_O version: 2 updated: 2015/05/15 19:45:35
2076 dnl ----------------
2077 dnl Almost all "install" programs default to the current user's ownership.
2078 dnl Almost - MINIX is an exception.
2079 AC_DEFUN([CF_INSTALL_OPT_O],
2081 AC_MSG_CHECKING(if install needs to be told about ownership)
2082 case `$ac_config_guess` in
2091 AC_MSG_RESULT($with_install_o)
2092 if test "x$with_install_o" = xyes
2094 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'`
2099 AC_SUBST(INSTALL_OPT_O)
2101 dnl ---------------------------------------------------------------------------
2102 dnl CF_INSTALL_OPT_P version: 1 updated: 2018/08/18 12:19:21
2103 dnl ----------------
2104 dnl Some install-programs accept a "-p" option to preserve file modification
2105 dnl timestamps. That can be useful as an install option, as well as a way to
2106 dnl avoid the need for ranlib after copying a static archive.
2107 AC_DEFUN([CF_INSTALL_OPT_P],
2109 : ${INSTALL:=install}
2110 AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[
2115 if $INSTALL -p conftest.in conftest.out 2>/dev/null
2117 if test -f conftest.out/conftest.in
2119 test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
2120 test conftest.out/conftest.in -nt conftest.in 2>conftest.err
2121 if test -s conftest.err
2136 dnl ---------------------------------------------------------------------------
2137 dnl CF_INSTALL_OPT_S version: 2 updated: 2018/08/18 12:19:21
2138 dnl ----------------
2139 dnl By default, we should strip executables which are installed, but leave the
2140 dnl ability to suppress that for unit-testing.
2141 AC_DEFUN([CF_INSTALL_OPT_S],
2143 AC_MSG_CHECKING(if you want to install stripped executables)
2144 CF_ARG_DISABLE(stripping,
2145 [ --disable-stripping do not strip (debug info) installed executables],
2146 [with_stripping=no],
2147 [with_stripping=yes])
2148 AC_MSG_RESULT($with_stripping)
2150 if test "$with_stripping" = yes
2156 AC_SUBST(INSTALL_OPT_S)
2158 dnl ---------------------------------------------------------------------------
2159 dnl CF_INTEL_COMPILER version: 7 updated: 2015/04/12 15:39:00
2160 dnl -----------------
2161 dnl Check if the given compiler is really the Intel compiler for Linux. It
2162 dnl tries to imitate gcc, but does not return an error when it finds a mismatch
2163 dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
2165 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
2166 dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from
2167 dnl the wrappers for gcc and g++ warnings.
2169 dnl $1 = GCC (default) or GXX
2170 dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
2171 dnl $3 = CFLAGS (default) or CXXFLAGS
2172 AC_DEFUN([CF_INTEL_COMPILER],[
2173 AC_REQUIRE([AC_CANONICAL_HOST])
2174 ifelse([$2],,INTEL_COMPILER,[$2])=no
2176 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
2179 AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
2180 cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
2181 ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
2183 #ifdef __INTEL_COMPILER
2187 ],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
2188 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
2190 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
2191 AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
2196 dnl ---------------------------------------------------------------------------
2197 dnl CF_LD_RPATH_OPT version: 8 updated: 2018/08/18 16:36:35
2199 dnl For the given system and compiler, find the compiler flags to pass to the
2200 dnl loader to use the "rpath" feature.
2201 AC_DEFUN([CF_LD_RPATH_OPT],
2203 AC_REQUIRE([CF_CHECK_CACHE])
2206 if test "x$cf_cv_enable_rpath" != xno
2208 AC_MSG_CHECKING(for an rpath option)
2209 case $cf_cv_system_name in
2211 if test "$GCC" = yes; then
2212 LD_RPATH_OPT="-Wl,-rpath,"
2214 LD_RPATH_OPT="-rpath "
2217 (linux*|gnu*|k*bsd*-gnu|freebsd*)
2218 LD_RPATH_OPT="-Wl,-rpath,"
2220 (openbsd[[2-9]].*|mirbsd*)
2221 LD_RPATH_OPT="-Wl,-rpath,"
2224 LD_RPATH_OPT="-rpath "
2227 LD_RPATH_OPT="-Wl,-rpath,"
2230 LD_RPATH_OPT="-rpath "
2238 AC_MSG_RESULT($LD_RPATH_OPT)
2240 case "x$LD_RPATH_OPT" in
2242 AC_MSG_CHECKING(if we need a space after rpath option)
2243 cf_save_LIBS="$LIBS"
2244 CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
2245 AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
2246 LIBS="$cf_save_LIBS"
2247 AC_MSG_RESULT($cf_rpath_space)
2248 test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
2253 dnl ---------------------------------------------------------------------------
2254 dnl CF_LIBRARY_PATH version: 10 updated: 2015/04/15 19:08:48
2256 dnl Construct a search-list of directories for a nonstandard library-file
2259 dnl $1 = the variable to return as result
2260 dnl $2 = the package name
2261 AC_DEFUN([CF_LIBRARY_PATH],
2264 cf_library_path_list=""
2265 if test -n "${LDFLAGS}${LIBS}" ; then
2266 for cf_library_path in $LDFLAGS $LIBS
2268 case $cf_library_path in
2270 cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
2271 CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE)
2272 cf_library_path_list="$cf_library_path_list [$]$1"
2278 CF_SUBDIR_PATH($1,$2,lib)
2280 $1="$cf_library_path_list [$]$1"
2282 dnl ---------------------------------------------------------------------------
2283 dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
2285 dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have
2286 dnl a monocase filesystem.
2287 AC_DEFUN([CF_MAKE_TAGS],[
2288 AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
2290 AC_CHECK_PROGS(CTAGS, exctags ctags)
2291 AC_CHECK_PROGS(ETAGS, exetags etags)
2293 AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
2295 if test "$cf_cv_mixedcase" = yes ; then
2296 AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
2301 if test "$MAKE_UPPER_TAGS" = yes ; then
2307 if test "$MAKE_LOWER_TAGS" = yes ; then
2316 AC_SUBST(MAKE_UPPER_TAGS)
2317 AC_SUBST(MAKE_LOWER_TAGS)
2319 dnl ---------------------------------------------------------------------------
2320 dnl CF_MATH_LIB version: 9 updated: 2017/01/21 11:06:25
2322 dnl Checks for libraries. At least one UNIX system, Apple Macintosh
2323 dnl Rhapsody 5.5, does not have -lm. We cannot use the simpler
2324 dnl AC_CHECK_LIB(m,sin), because that fails for C++.
2325 AC_DEFUN([CF_MATH_LIB],
2327 AC_CACHE_CHECK(if -lm needed for math functions,
2334 [double x = rand(); printf("result = %g\n", ]ifelse([$2],,sin(x),$2)[)],
2335 [cf_cv_need_libm=no],
2336 [cf_cv_need_libm=yes])])
2337 if test "$cf_cv_need_libm" = yes
2344 dnl ---------------------------------------------------------------------------
2345 dnl CF_MIXEDCASE_FILENAMES version: 8 updated: 2020/11/14 10:12:15
2346 dnl ----------------------
2347 dnl Check if the file-system supports mixed-case filenames. If we're able to
2348 dnl create a lowercase name and see it as uppercase, it doesn't support that.
2349 AC_DEFUN([CF_MIXEDCASE_FILENAMES],
2351 AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
2352 if test "$cross_compiling" = yes ; then
2353 case $target_alias in
2354 (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*)
2362 rm -f conftest CONFTEST
2364 if test -f CONFTEST ; then
2369 rm -f conftest CONFTEST
2372 test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
2374 dnl ---------------------------------------------------------------------------
2375 dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
2377 dnl Write a debug message to config.log, along with the line number in the
2378 dnl configure script.
2379 AC_DEFUN([CF_MSG_LOG],[
2380 echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
2382 dnl ---------------------------------------------------------------------------
2383 dnl CF_NCURSES_CC_CHECK version: 4 updated: 2007/07/29 10:39:05
2384 dnl -------------------
2385 dnl Check if we can compile with ncurses' header file
2386 dnl $1 is the cache variable to set
2387 dnl $2 is the header-file to include
2388 dnl $3 is the root name (ncurses or ncursesw)
2389 AC_DEFUN([CF_NCURSES_CC_CHECK],[
2391 ]ifelse($3,ncursesw,[
2392 #define _XOPEN_SOURCE_EXTENDED
2393 #undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */
2394 #define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */
2397 #ifdef NCURSES_VERSION
2398 ]ifelse($3,ncursesw,[
2403 printf("%s\n", NCURSES_VERSION);
2415 dnl ---------------------------------------------------------------------------
2416 dnl CF_NCURSES_CONFIG version: 23 updated: 2020/02/27 05:21:59
2417 dnl -----------------
2418 dnl Tie together the configure-script macros for ncurses, preferring these in
2420 dnl a) ".pc" files for pkg-config, using $NCURSES_CONFIG_PKG
2421 dnl b) the "-config" script from ncurses, using $NCURSES_CONFIG
2422 dnl c) just plain libraries
2424 dnl $1 is the root library name (default: "ncurses")
2425 AC_DEFUN([CF_NCURSES_CONFIG],[
2426 AC_REQUIRE([CF_PKG_CONFIG])
2427 cf_ncuconfig_root=ifelse($1,,ncurses,$1)
2428 cf_have_ncuconfig=no
2430 if test "x${PKG_CONFIG:=none}" != xnone; then
2431 AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root)
2432 if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
2435 AC_MSG_CHECKING(if the $cf_ncuconfig_root package files work)
2436 cf_have_ncuconfig=unknown
2438 cf_save_CFLAGS="$CFLAGS"
2439 cf_save_CPPFLAGS="$CPPFLAGS"
2440 cf_save_LIBS="$LIBS"
2442 cf_pkg_cflags=`$PKG_CONFIG --cflags $cf_ncuconfig_root`
2443 cf_pkg_libs=`$PKG_CONFIG --libs $cf_ncuconfig_root`
2445 # while -W for passing linker flags is prevalent, it is not "standard".
2446 # At least one wrapper for c89/c99 (in Apple's xcode) has its own
2447 # incompatible _and_ non-standard -W option which gives an error. Work
2448 # around that pitfall.
2449 case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in
2451 CF_ADD_CFLAGS($cf_pkg_cflags)
2452 CF_ADD_LIBS($cf_pkg_libs)
2454 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
2455 [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);],
2456 [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
2458 { char *xx = curses_version(); return (xx == 0); }],
2459 [cf_test_ncuconfig=yes],
2460 [cf_test_ncuconfig=no],
2461 [cf_test_ncuconfig=maybe])],
2462 [cf_test_ncuconfig=no])
2464 CFLAGS="$cf_save_CFLAGS"
2465 CPPFLAGS="$cf_save_CPPFLAGS"
2466 LIBS="$cf_save_LIBS"
2468 if test "x$cf_test_ncuconfig" != xyes; then
2469 cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[[^ ]]*//g'`
2470 cf_pkg_cflags="$cf_temp"
2471 cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[[^ ]]*//g'`
2472 cf_pkg_libs="$cf_temp"
2477 CF_ADD_CFLAGS($cf_pkg_cflags)
2478 CF_ADD_LIBS($cf_pkg_libs)
2480 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
2481 [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);],
2482 [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
2484 { char *xx = curses_version(); return (xx == 0); }],
2485 [cf_have_ncuconfig=yes],
2486 [cf_have_ncuconfig=no],
2487 [cf_have_ncuconfig=maybe])],
2488 [cf_have_ncuconfig=no])
2489 AC_MSG_RESULT($cf_have_ncuconfig)
2490 test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
2491 if test "$cf_have_ncuconfig" != "yes"
2493 CPPFLAGS="$cf_save_CPPFLAGS"
2494 LIBS="$cf_save_LIBS"
2495 NCURSES_CONFIG_PKG=none
2497 AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2498 NCURSES_CONFIG_PKG=$cf_ncuconfig_root
2504 NCURSES_CONFIG_PKG=none
2507 NCURSES_CONFIG_PKG=none
2510 if test "x$cf_have_ncuconfig" = "xno"; then
2511 cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}"
2513 CF_ACVERSION_CHECK(2.52,
2514 [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)],
2515 [AC_PATH_PROGS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)])
2517 if test "$NCURSES_CONFIG" != none ; then
2519 CF_ADD_CFLAGS(`$NCURSES_CONFIG --cflags`)
2520 CF_ADD_LIBS(`$NCURSES_CONFIG --libs`)
2522 # even with config script, some packages use no-override for curses.h
2523 CF_CURSES_HEADER(ifelse($1,,ncurses,$1))
2525 dnl like CF_NCURSES_CPPFLAGS
2526 AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2528 dnl like CF_NCURSES_LIBS
2529 CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root)
2530 AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
2532 dnl like CF_NCURSES_VERSION
2533 cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
2537 CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1))
2538 CF_NCURSES_LIBS(ifelse($1,,ncurses,$1))
2545 dnl ---------------------------------------------------------------------------
2546 dnl CF_NCURSES_CPPFLAGS version: 21 updated: 2012/10/06 08:57:51
2547 dnl -------------------
2548 dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting
2549 dnl the CPPFLAGS variable so we can include its header.
2551 dnl The header files may be installed as either curses.h, or ncurses.h (would
2552 dnl be obsolete, except that some packagers prefer this name to distinguish it
2553 dnl from a "native" curses implementation). If not installed for overwrite,
2554 dnl the curses.h file would be in an ncurses subdirectory (e.g.,
2555 dnl /usr/include/ncurses), but someone may have installed overwriting the
2556 dnl vendor's curses. Only very old versions (pre-1.9.2d, the first autoconf'd
2557 dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in
2560 dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header
2561 dnl is already in the include-path, don't even bother with this, since we cannot
2562 dnl easily determine which file it is. In this case, it has to be <curses.h>.
2564 dnl The optional parameter gives the root name of the library, in case it is
2565 dnl not installed as the default curses library. That is how the
2566 dnl wide-character version of ncurses is installed.
2567 AC_DEFUN([CF_NCURSES_CPPFLAGS],
2568 [AC_REQUIRE([CF_WITH_CURSES_DIR])
2570 AC_PROVIDE([CF_CURSES_CPPFLAGS])dnl
2571 cf_ncuhdr_root=ifelse($1,,ncurses,$1)
2573 test -n "$cf_cv_curses_dir" && \
2574 test "$cf_cv_curses_dir" != "no" && { \
2575 CF_ADD_INCDIR($cf_cv_curses_dir/include/$cf_ncuhdr_root)
2578 AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[
2579 cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h"
2580 ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h"
2581 for cf_header in $cf_header_list
2583 CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1)
2584 test "$cf_cv_ncurses_h" != no && break
2591 # some applications need this, but should check for NCURSES_VERSION
2592 AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2596 dnl ---------------------------------------------------------------------------
2597 dnl CF_NCURSES_EXT_FUNCS version: 4 updated: 2012/10/06 16:39:58
2598 dnl --------------------
2599 dnl Since 2007/11/17, ncurses has defined NCURSES_EXT_FUNCS; earlier versions
2600 dnl may provide these functions. Define the symbol if it is not defined, and
2602 AC_DEFUN([CF_NCURSES_EXT_FUNCS],
2604 AC_CACHE_CHECK(for ncurses extended functions,cf_cv_ncurses_ext_funcs,[
2606 #include <${cf_cv_ncurses_header:-curses.h}>],
2608 int x = NCURSES_EXT_FUNCS
2609 ],[cf_cv_ncurses_ext_funcs=defined],[
2611 #include <${cf_cv_ncurses_header:-curses.h}>],
2613 (void) assume_default_colors (0, 0);
2614 (void) curses_version ();
2615 (void) define_key (0, 0);
2616 (void) is_term_resized (0, 0);
2617 (void) key_defined (0);
2618 (void) keybound (0, 0);
2619 (void) keyok (0, 0);
2620 (void) resize_term (0, 0);
2621 (void) resizeterm (0, 0);
2622 (void) use_default_colors ();
2623 (void) use_extended_names (0);
2624 (void) wresize (0, 0, 0);],
2625 [cf_cv_ncurses_ext_funcs=yes],
2626 [cf_cv_ncurses_ext_funcs=no])
2629 test "$cf_cv_ncurses_ext_funcs" = yes && AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 if we have ncurses extensions])
2631 dnl ---------------------------------------------------------------------------
2632 dnl CF_NCURSES_HEADER version: 4 updated: 2015/04/15 19:08:48
2633 dnl -----------------
2634 dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
2635 dnl variations of ncurses' installs.
2637 dnl See also CF_CURSES_HEADER, which sets the same cache variable.
2638 AC_DEFUN([CF_NCURSES_HEADER],[
2640 if test "$cf_cv_ncurses_h" != no ; then
2641 cf_cv_ncurses_header=$cf_cv_ncurses_h
2644 AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[
2645 test -n "$verbose" && echo
2646 CF_HEADER_PATH(cf_search,$cf_ncuhdr_root)
2647 test -n "$verbose" && echo search path $cf_search
2648 cf_save2_CPPFLAGS="$CPPFLAGS"
2649 for cf_incdir in $cf_search
2651 CF_ADD_INCDIR($cf_incdir)
2656 CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1)
2657 if test "$cf_cv_ncurses_h2" != no ; then
2658 cf_cv_ncurses_h2=$cf_incdir/$cf_header
2659 test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&AC_FD_MSG
2662 test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG
2664 CPPFLAGS="$cf_save2_CPPFLAGS"
2665 test "$cf_cv_ncurses_h2" != no && break
2667 test "$cf_cv_ncurses_h2" = no && AC_MSG_ERROR(not found)
2670 CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2)
2671 cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2`
2672 if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then
2673 cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header
2675 CF_ADD_INCDIR($cf_1st_incdir)
2679 # Set definitions to allow ifdef'ing for ncurses.h
2681 case $cf_cv_ncurses_header in
2683 AC_DEFINE(HAVE_NCURSES_H,1,[Define to 1 if we have ncurses.h])
2687 case $cf_cv_ncurses_header in
2688 (ncurses/curses.h|ncurses/ncurses.h)
2689 AC_DEFINE(HAVE_NCURSES_NCURSES_H,1,[Define to 1 if we have ncurses/ncurses.h])
2691 (ncursesw/curses.h|ncursesw/ncurses.h)
2692 AC_DEFINE(HAVE_NCURSESW_NCURSES_H,1,[Define to 1 if we have ncursesw/ncurses.h])
2697 dnl ---------------------------------------------------------------------------
2698 dnl CF_NCURSES_LIBS version: 17 updated: 2015/04/15 19:08:48
2700 dnl Look for the ncurses library. This is a little complicated on Linux,
2701 dnl because it may be linked with the gpm (general purpose mouse) library.
2702 dnl Some distributions have gpm linked with (bsd) curses, which makes it
2703 dnl unusable with ncurses. However, we don't want to link with gpm unless
2704 dnl ncurses has a dependency, since gpm is normally set up as a shared library,
2705 dnl and the linker will record a dependency.
2707 dnl The optional parameter gives the root name of the library, in case it is
2708 dnl not installed as the default curses library. That is how the
2709 dnl wide-character version of ncurses is installed.
2710 AC_DEFUN([CF_NCURSES_LIBS],
2711 [AC_REQUIRE([CF_NCURSES_CPPFLAGS])
2713 cf_nculib_root=ifelse($1,,ncurses,$1)
2714 # This works, except for the special case where we find gpm, but
2715 # ncurses is in a nonstandard location via $LIBS, and we really want
2718 cf_ncurses_SAVE="$LIBS"
2719 AC_CHECK_LIB(gpm,Gpm_Open,
2720 [AC_CHECK_LIB(gpm,initscr,
2721 [LIBS="$cf_ncurses_SAVE"],
2722 [cf_ncurses_LIBS="-lgpm"])])
2726 # This is only necessary if you are linking against an obsolete
2727 # version of ncurses (but it should do no harm, since it's static).
2728 if test "$cf_nculib_root" = ncurses ; then
2729 AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"])
2734 CF_ADD_LIBS($cf_ncurses_LIBS)
2736 if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
2738 CF_ADD_LIBS(-l$cf_nculib_root)
2740 CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root,
2741 [#include <${cf_cv_ncurses_header:-curses.h}>],
2746 if test -n "$cf_ncurses_LIBS" ; then
2747 AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS)
2748 cf_ncurses_SAVE="$LIBS"
2749 for p in $cf_ncurses_LIBS ; do
2750 q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"`
2751 if test "$q" != "$LIBS" ; then
2755 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
2756 [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);],
2757 [AC_MSG_RESULT(yes)],
2759 LIBS="$cf_ncurses_SAVE"])
2762 CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root)
2763 AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
2765 dnl ---------------------------------------------------------------------------
2766 dnl CF_NCURSES_PTHREADS version: 2 updated: 2016/04/22 05:07:41
2767 dnl -------------------
2768 dnl Use this followup check to ensure that we link with pthreads if ncurses
2770 AC_DEFUN([CF_NCURSES_PTHREADS],[
2771 : ${cf_nculib_root:=ifelse($1,,ncurses,$1)}
2772 AC_CHECK_LIB($cf_nculib_root,_nc_init_pthreads,
2773 cf_cv_ncurses_pthreads=yes,
2774 cf_cv_ncurses_pthreads=no)
2775 if test "$cf_cv_ncurses_pthreads" = yes
2777 CF_ADD_LIBS(-lpthread)
2780 dnl ---------------------------------------------------------------------------
2781 dnl CF_NCURSES_VERSION version: 15 updated: 2017/05/09 19:26:10
2782 dnl ------------------
2783 dnl Check for the version of ncurses, to aid in reporting bugs, etc.
2784 dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS. We don't use
2785 dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi.
2786 AC_DEFUN([CF_NCURSES_VERSION],
2788 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
2789 AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[
2790 cf_cv_ncurses_version=no
2794 #include <${cf_cv_ncurses_header:-curses.h}>
2798 FILE *fp = fopen("$cf_tempfile", "w");
2799 #ifdef NCURSES_VERSION
2800 # ifdef NCURSES_VERSION_PATCH
2801 fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH);
2803 fprintf(fp, "%s\n", NCURSES_VERSION);
2807 fprintf(fp, "old\n");
2812 ${cf_cv_main_return:-return}(0);
2814 cf_cv_ncurses_version=`cat $cf_tempfile`],,[
2816 # This will not work if the preprocessor splits the line after the
2817 # Autoconf token. The 'unproto' program does that.
2818 cat > conftest.$ac_ext <<EOF
2819 #include <${cf_cv_ncurses_header:-curses.h}>
2821 #ifdef NCURSES_VERSION
2822 Autoconf NCURSES_VERSION
2830 cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out"
2832 if test -f conftest.out ; then
2833 cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%'`
2834 test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
2840 test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2842 dnl ---------------------------------------------------------------------------
2843 dnl CF_NCURSES_WRAP_PREFIX version: 1 updated: 2009/03/28 16:08:10
2844 dnl ----------------------
2845 dnl Check for ncurses "wrap-prefix" used for public variables which have been
2846 dnl wrapped with a function to help with concurrency control.
2847 AC_DEFUN([CF_NCURSES_WRAP_PREFIX],
2849 AC_MSG_CHECKING(for ncurses wrap-prefix)
2850 AC_ARG_WITH(ncurses-wrap-prefix,
2851 [ --with-ncurses-wrap-prefix naming-prefix for ncurses wrapped-variables],
2852 [NCURSES_WRAP_PREFIX=$withval],
2853 [NCURSES_WRAP_PREFIX=_nc_])
2854 AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
2856 AC_SUBST(NCURSES_WRAP_PREFIX)
2858 dnl ---------------------------------------------------------------------------
2859 dnl CF_NETBSD_FORM_H version: 2 updated: 2012/10/06 16:39:58
2860 dnl ----------------
2861 dnl Check for NetBSD's form.h, which is incompatible with SVr4 and ncurses.
2862 dnl Some workarounds are needed in client programs to allow them to compile.
2863 AC_DEFUN([CF_NETBSD_FORM_H],[
2864 AC_CACHE_CHECK(for NetBSD form.h,cf_cv_netbsd_form_h,[
2866 #include <${cf_cv_ncurses_header:-curses.h}>
2870 int y = current_field(form)->cursor_ypos;
2871 int x = current_field(form)->cursor_xpos;
2872 ],[cf_cv_netbsd_form_h=yes
2873 ],[cf_cv_netbsd_form_h=no])
2876 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])
2878 dnl ---------------------------------------------------------------------------
2879 dnl CF_NETBSD_MENU_H version: 2 updated: 2012/10/06 16:39:58
2880 dnl ----------------
2881 dnl Check for NetBSD's menu.h, which is incompatible with SVr4 and ncurses.
2882 dnl Some workarounds are needed in client programs to allow them to compile.
2883 AC_DEFUN([CF_NETBSD_MENU_H],[
2884 AC_CACHE_CHECK(for NetBSD menu.h,cf_cv_netbsd_menu_h,[
2886 #include <${cf_cv_ncurses_header:-curses.h}>
2890 int y = menu->max_item_width;
2891 ],[cf_cv_netbsd_menu_h=yes
2892 ],[cf_cv_netbsd_menu_h=no])
2895 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])
2897 dnl ---------------------------------------------------------------------------
2898 dnl CF_NO_LEAKS_OPTION version: 6 updated: 2015/04/12 15:39:00
2899 dnl ------------------
2900 dnl see CF_WITH_NO_LEAKS
2901 AC_DEFUN([CF_NO_LEAKS_OPTION],[
2902 AC_MSG_CHECKING(if you want to use $1 for testing)
2905 [AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
2908 : ${with_cflags:=-g}
2909 : ${with_no_leaks:=yes}
2912 AC_MSG_RESULT(${with_$1:-no})
2914 case .$with_cflags in
2926 dnl ---------------------------------------------------------------------------
2927 dnl CF_PATH_SYNTAX version: 16 updated: 2015/04/18 08:56:57
2929 dnl Check the argument to see that it looks like a pathname. Rewrite it if it
2930 dnl begins with one of the prefix/exec_prefix variables, and then again if the
2931 dnl result begins with 'NONE'. This is necessary to work around autoconf's
2932 dnl delayed evaluation of those symbols.
2933 AC_DEFUN([CF_PATH_SYNTAX],[
2934 if test "x$prefix" != xNONE; then
2935 cf_path_syntax="$prefix"
2937 cf_path_syntax="$ac_default_prefix"
2941 (.\[$]\(*\)*|.\'*\'*)
2945 (.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
2947 (.\[$]{*prefix}*|.\[$]{*dir}*)
2951 $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
2956 $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
2959 ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
2963 dnl ---------------------------------------------------------------------------
2964 dnl CF_PDCURSES_X11 version: 14 updated: 2018/06/20 20:23:13
2966 dnl Configure for PDCurses' X11 library
2967 AC_DEFUN([CF_PDCURSES_X11],[
2968 AC_REQUIRE([CF_X_ATHENA])
2970 CF_ACVERSION_CHECK(2.52,
2971 [AC_CHECK_TOOLS(XCURSES_CONFIG, xcurses-config, none)],
2972 [AC_PATH_PROGS(XCURSES_CONFIG, xcurses-config, none)])
2974 if test "$XCURSES_CONFIG" != none ; then
2976 CF_ADD_CFLAGS(`$XCURSES_CONFIG --cflags`)
2977 CF_ADD_LIBS(`$XCURSES_CONFIG --libs`)
2979 cf_cv_lib_XCurses=yes
2983 LDFLAGS="$LDFLAGS $X_LIBS"
2984 CF_CHECK_CFLAGS($X_CFLAGS)
2985 AC_CHECK_LIB(X11,XOpenDisplay,
2986 [CF_ADD_LIBS(-lX11)],,
2987 [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])
2988 AC_CACHE_CHECK(for XCurses library,cf_cv_lib_XCurses,[
2989 CF_ADD_LIBS(-lXCurses)
2991 #include <xcurses.h>
2992 char *XCursesProgramName = "test";
2994 [cf_cv_lib_XCurses=yes],
2995 [cf_cv_lib_XCurses=no])
3000 if test $cf_cv_lib_XCurses = yes ; then
3001 AC_DEFINE(UNIX,1,[Define to 1 if using PDCurses on Unix])
3002 AC_DEFINE(XCURSES,1,[Define to 1 if using PDCurses on Unix])
3003 AC_CHECK_HEADER(xcurses.h, AC_DEFINE(HAVE_XCURSES,1,[Define to 1 if using PDCurses on Unix]))
3005 AC_MSG_ERROR(Cannot link with XCurses)
3008 dnl ---------------------------------------------------------------------------
3009 dnl CF_PKG_CONFIG version: 10 updated: 2015/04/26 18:06:58
3011 dnl Check for the package-config program, unless disabled by command-line.
3012 AC_DEFUN([CF_PKG_CONFIG],
3014 AC_MSG_CHECKING(if you want to use pkg-config)
3015 AC_ARG_WITH(pkg-config,
3016 [ --with-pkg-config{=path} enable/disable use of pkg-config],
3017 [cf_pkg_config=$withval],
3018 [cf_pkg_config=yes])
3019 AC_MSG_RESULT($cf_pkg_config)
3021 case $cf_pkg_config in
3026 CF_ACVERSION_CHECK(2.52,
3027 [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
3028 [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
3035 test -z "$PKG_CONFIG" && PKG_CONFIG=none
3036 if test "$PKG_CONFIG" != none ; then
3037 CF_PATH_SYNTAX(PKG_CONFIG)
3038 elif test "x$cf_pkg_config" != xno ; then
3039 AC_MSG_WARN(pkg-config is not installed)
3042 AC_SUBST(PKG_CONFIG)
3044 dnl ---------------------------------------------------------------------------
3045 dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
3046 dnl -----------------
3047 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
3049 dnl POSIX.1-1990 _POSIX_SOURCE
3050 dnl POSIX.1-1990 and _POSIX_SOURCE and
3051 dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2
3053 dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L
3054 dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L
3055 dnl X/Open 2000 _POSIX_C_SOURCE=200112L
3058 dnl $1 is the nominal value for _POSIX_C_SOURCE
3059 AC_DEFUN([CF_POSIX_C_SOURCE],
3060 [AC_REQUIRE([CF_POSIX_VISIBLE])dnl
3062 if test "$cf_cv_posix_visible" = no; then
3064 cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
3066 cf_save_CFLAGS="$CFLAGS"
3067 cf_save_CPPFLAGS="$CPPFLAGS"
3069 CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
3070 CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
3072 AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
3073 CF_MSG_LOG(if the symbol is already defined go no further)
3074 AC_TRY_COMPILE([#include <sys/types.h>],[
3075 #ifndef _POSIX_C_SOURCE
3078 [cf_cv_posix_c_source=no],
3079 [cf_want_posix_source=no
3080 case .$cf_POSIX_C_SOURCE in
3082 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
3085 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
3086 cf_want_posix_source=yes
3089 cf_want_posix_source=yes
3092 if test "$cf_want_posix_source" = yes ; then
3093 AC_TRY_COMPILE([#include <sys/types.h>],[
3094 #ifdef _POSIX_SOURCE
3097 cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
3099 CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
3100 CFLAGS="$cf_trim_CFLAGS"
3101 CPPFLAGS="$cf_trim_CPPFLAGS"
3102 CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
3103 CF_MSG_LOG(if the second compile does not leave our definition intact error)
3104 AC_TRY_COMPILE([#include <sys/types.h>],[
3105 #ifndef _POSIX_C_SOURCE
3108 [cf_cv_posix_c_source=no])
3109 CFLAGS="$cf_save_CFLAGS"
3110 CPPFLAGS="$cf_save_CPPFLAGS"
3114 if test "$cf_cv_posix_c_source" != no ; then
3115 CFLAGS="$cf_trim_CFLAGS"
3116 CPPFLAGS="$cf_trim_CPPFLAGS"
3117 CF_ADD_CFLAGS($cf_cv_posix_c_source)
3120 fi # cf_cv_posix_visible
3123 dnl ---------------------------------------------------------------------------
3124 dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
3125 dnl ----------------
3126 dnl POSIX documents test-macros which an application may set before any system
3127 dnl headers are included to make features available.
3129 dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
3130 dnl diverged from POSIX in 2002 by setting symbols which make all of the most
3131 dnl recent features visible in the system header files unless the application
3132 dnl overrides the corresponding test-macros. Doing that introduces portability
3135 dnl This macro makes a special check for the symbols used for this, to avoid a
3136 dnl conflicting definition.
3137 AC_DEFUN([CF_POSIX_VISIBLE],
3139 AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
3140 AC_TRY_COMPILE([#include <stdio.h>],[
3141 #if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
3142 && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
3143 && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
3144 && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
3145 #error conflicting symbols found
3147 ],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
3150 dnl ---------------------------------------------------------------------------
3151 dnl CF_PRG_RULES version: 1 updated: 2006/06/03 11:45:08
3153 dnl Append definitions and rules for the given programs to the subdirectory
3154 dnl Makefiles, and the recursion rule for the top-level Makefile.
3157 dnl $1 = script to run
3158 dnl $2 = list of subdirectories
3162 AC_DEFUN([CF_PRG_RULES],
3166 if test ! -d $srcdir/$cf_dir; then
3168 elif test -f $srcdir/$cf_dir/programs; then
3169 $AWK -f $1 $srcdir/$cf_dir/programs >>$cf_dir/Makefile
3174 dnl ---------------------------------------------------------------------------
3175 dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
3177 dnl standard check for CC, plus followup sanity checks
3178 dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
3179 AC_DEFUN([CF_PROG_CC],[
3180 CF_ACVERSION_CHECK(2.53,
3181 [AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
3182 AC_REQUIRE([AC_PROG_CC])],
3184 ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
3186 CF_ACVERSION_CHECK(2.52,
3191 dnl ---------------------------------------------------------------------------
3192 dnl CF_PROG_INSTALL version: 7 updated: 2015/04/18 08:56:57
3194 dnl Force $INSTALL to be an absolute-path. Otherwise, edit_man.sh and the
3195 dnl misc/tabset install won't work properly. Usually this happens only when
3196 dnl using the fallback mkinstalldirs script
3197 AC_DEFUN([CF_PROG_INSTALL],
3203 CF_DIRNAME(cf_dir,$INSTALL)
3204 test -z "$cf_dir" && cf_dir=.
3205 INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
3209 dnl ---------------------------------------------------------------------------
3210 dnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37
3212 AC_DEFUN([CF_PROG_LINT],
3214 AC_CHECK_PROGS(LINT, lint cppcheck splint)
3216 (xcppcheck|x*/cppcheck)
3217 test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
3222 dnl ---------------------------------------------------------------------------
3223 dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
3224 dnl ----------------
3225 dnl Remove all -U and -D options that refer to the given symbol from a list
3226 dnl of C compiler options. This works around the problem that not all
3227 dnl compilers process -U and -D options from left-to-right, so a -U option
3228 dnl cannot be used to cancel the effect of a preceding -D option.
3230 dnl $1 = target (which could be the same as the source variable)
3231 dnl $2 = source (including '$')
3232 dnl $3 = symbol to remove
3233 define([CF_REMOVE_DEFINE],
3236 sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \
3237 -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'`
3239 dnl ---------------------------------------------------------------------------
3240 dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
3241 dnl ---------------------
3242 dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
3243 dnl $1 = name of current macro
3244 define([CF_RESTORE_XTRA_FLAGS],
3246 LIBS="$cf_save_LIBS_$1"
3247 CFLAGS="$cf_save_CFLAGS_$1"
3248 CPPFLAGS="$cf_save_CPPFLAGS_$1"
3250 dnl ---------------------------------------------------------------------------
3251 dnl CF_RPATH_HACK version: 11 updated: 2013/09/01 13:02:00
3253 AC_DEFUN([CF_RPATH_HACK],
3255 AC_REQUIRE([CF_LD_RPATH_OPT])
3256 AC_MSG_CHECKING(for updated LDFLAGS)
3257 if test -n "$LD_RPATH_OPT" ; then
3258 AC_MSG_RESULT(maybe)
3260 AC_CHECK_PROGS(cf_ldd_prog,ldd,no)
3261 cf_rpath_list="/usr/lib /lib"
3262 if test "$cf_ldd_prog" != no
3266 AC_TRY_LINK([#include <stdio.h>],
3268 [cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
3269 cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`])
3271 # If we passed the link-test, but get a "not found" on a given library,
3272 # this could be due to inept reconfiguration of gcc to make it only
3273 # partly honor /usr/local/lib (or whatever). Sometimes this behavior
3274 # is intentional, e.g., installing gcc in /usr/bin and suppressing the
3275 # /usr/local libraries.
3276 if test -n "$cf_rpath_oops"
3278 for cf_rpath_src in $cf_rpath_oops
3280 for cf_rpath_dir in \
3285 if test -f $cf_rpath_dir/lib/$cf_rpath_src
3287 CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src)
3288 LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
3296 CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS)
3298 CF_RPATH_HACK_2(LDFLAGS)
3299 CF_RPATH_HACK_2(LIBS)
3301 CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS)
3305 AC_SUBST(EXTRA_LDFLAGS)
3307 dnl ---------------------------------------------------------------------------
3308 dnl CF_RPATH_HACK_2 version: 7 updated: 2015/04/12 15:39:00
3310 dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to
3311 dnl EXTRA_LDFLAGS for each -L option found.
3313 dnl $cf_rpath_list contains a list of directories to ignore.
3315 dnl $1 = variable name to update. The LDFLAGS variable should be the only one,
3316 dnl but LIBS often has misplaced -L options.
3317 AC_DEFUN([CF_RPATH_HACK_2],
3319 CF_VERBOSE(...checking $1 [$]$1)
3322 for cf_rpath_src in [$]$1
3324 case $cf_rpath_src in
3327 # check if this refers to a directory which we will ignore
3329 if test -n "$cf_rpath_list"
3331 for cf_rpath_item in $cf_rpath_list
3333 if test "x$cf_rpath_src" = "x-L$cf_rpath_item"
3341 if test "$cf_rpath_skip" = no
3343 # transform the option
3344 if test "$LD_RPATH_OPT" = "-R " ; then
3345 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"`
3347 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"`
3350 # if we have not already added this, add it now
3351 cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"`
3352 if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS"
3354 CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp)
3355 EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
3360 cf_rpath_dst="$cf_rpath_dst $cf_rpath_src"
3364 CF_VERBOSE(...checked $1 [$]$1)
3365 AC_SUBST(EXTRA_LDFLAGS)
3367 dnl ---------------------------------------------------------------------------
3368 dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
3369 dnl ------------------
3370 dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
3371 dnl and libraries which do not update those variables.
3373 dnl $1 = name of current macro
3374 define([CF_SAVE_XTRA_FLAGS],
3376 cf_save_LIBS_$1="$LIBS"
3377 cf_save_CFLAGS_$1="$CFLAGS"
3378 cf_save_CPPFLAGS_$1="$CPPFLAGS"
3379 LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
3380 for cf_X_CFLAGS in $X_CFLAGS
3382 case "x$cf_X_CFLAGS" in
3384 CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
3387 CFLAGS="$CFLAGS $cf_X_CFLAGS"
3392 dnl ---------------------------------------------------------------------------
3393 dnl CF_SIGWINCH version: 3 updated: 2020/03/10 18:53:47
3395 dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
3396 dnl programs need this test).
3398 dnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE
3399 dnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct
3400 dnl winsize declaration is left alone - we may revisit this if Apple choose to
3401 dnl break that part of the interface as well.
3402 AC_DEFUN([CF_SIGWINCH],
3404 AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[
3406 #include <sys/types.h>
3407 #include <sys/signal.h>
3408 ],[int x = SIGWINCH; (void)x],
3409 [cf_cv_define_sigwinch=yes],
3411 #undef _XOPEN_SOURCE
3412 #undef _POSIX_SOURCE
3413 #undef _POSIX_C_SOURCE
3414 #include <sys/types.h>
3415 #include <sys/signal.h>
3416 ],[int x = SIGWINCH; (void)x],
3417 [cf_cv_define_sigwinch=maybe],
3418 [cf_cv_define_sigwinch=no])
3422 if test "$cf_cv_define_sigwinch" = maybe ; then
3423 AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[
3424 cf_cv_fixup_sigwinch=unknown
3426 while test $cf_sigwinch != 1
3429 #undef _XOPEN_SOURCE
3430 #undef _POSIX_SOURCE
3431 #undef _POSIX_C_SOURCE
3432 #include <sys/types.h>
3433 #include <sys/signal.h>
3435 #if SIGWINCH != $cf_sigwinch
3438 int x = SIGWINCH; (void)x],
3439 [cf_cv_fixup_sigwinch=$cf_sigwinch
3442 cf_sigwinch=`expr $cf_sigwinch - 1`
3446 if test "$cf_cv_fixup_sigwinch" != unknown ; then
3447 CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch"
3451 dnl ---------------------------------------------------------------------------
3452 dnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47
3454 dnl signal handler, but there are some gcc dependencies in that recommendation.
3456 AC_DEFUN([CF_SIG_ATOMIC_T],
3458 AC_MSG_CHECKING(for signal global datatype)
3459 AC_CACHE_VAL(cf_cv_sig_atomic_t,[
3461 "volatile sig_atomic_t" \
3466 #include <sys/types.h>
3472 static void handler(int sig)
3477 [signal(SIGINT, handler);
3479 [cf_cv_sig_atomic_t=$cf_type],
3480 [cf_cv_sig_atomic_t=no])
3481 test "$cf_cv_sig_atomic_t" != no && break
3484 AC_MSG_RESULT($cf_cv_sig_atomic_t)
3485 test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
3487 dnl ---------------------------------------------------------------------------
3488 dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
3490 dnl Construct a search-list for a nonstandard header/lib-file
3491 dnl $1 = the variable to return as result
3492 dnl $2 = the package name
3493 dnl $3 = the subdirectory, e.g., bin, include or lib
3494 AC_DEFUN([CF_SUBDIR_PATH],
3498 CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
3500 for cf_subdir_prefix in \
3508 CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
3511 dnl ---------------------------------------------------------------------------
3512 dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57
3513 dnl ------------------
3514 dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
3515 dnl older SCO configurations.
3516 AC_DEFUN([CF_SYS_TIME_SELECT],
3518 AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
3519 AC_CACHE_VAL(cf_cv_sys_time_select,[
3521 #include <sys/types.h>
3522 #ifdef HAVE_SYS_TIME_H
3523 #include <sys/time.h>
3525 #ifdef HAVE_SYS_SELECT_H
3526 #include <sys/select.h>
3528 ],[],[cf_cv_sys_time_select=yes],
3529 [cf_cv_sys_time_select=no])
3531 AC_MSG_RESULT($cf_cv_sys_time_select)
3532 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>])
3534 dnl ---------------------------------------------------------------------------
3535 dnl CF_TERM_HEADER version: 5 updated: 2020/03/19 20:23:48
3537 dnl Look for term.h, which is part of X/Open curses. It defines the interface
3538 dnl to terminfo database. Usually it is in the same include-path as curses.h,
3539 dnl but some packagers change this, breaking various applications.
3540 AC_DEFUN([CF_TERM_HEADER],[
3541 AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[
3542 case ${cf_cv_ncurses_header} in
3543 (*/ncurses.h|*/ncursesw.h)
3544 cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'`
3547 cf_term_header=term.h
3551 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
3553 AC_TRY_COMPILE([#include <stdio.h>
3554 #include <${cf_cv_ncurses_header:-curses.h}>
3556 ],[int x = auto_left_margin; (void)x],[
3557 cf_cv_term_header="$cf_test"],[
3558 cf_cv_term_header=unknown
3560 test "$cf_cv_term_header" != unknown && break
3564 # Set definitions to allow ifdef'ing to accommodate subdirectories
3566 case $cf_cv_term_header in
3568 AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
3572 case $cf_cv_term_header in
3574 AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
3577 AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
3581 dnl ---------------------------------------------------------------------------
3582 dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32
3584 dnl Define a top_builddir symbol, for applications that need an absolute path.
3585 AC_DEFUN([CF_TOP_BUILDDIR],
3587 top_builddir=ifelse($1,,`pwd`,$1)
3588 AC_SUBST(top_builddir)
3590 dnl ---------------------------------------------------------------------------
3591 dnl CF_TPUTS_PROTO version: 3 updated: 2015/04/17 21:26:14
3593 dnl Check for type of function-pointer passed to tputs. Some old
3594 dnl implementations used functions that had different prototypes, making it
3595 dnl hard to compile portable programs using tputs.
3596 AC_DEFUN([CF_TPUTS_PROTO],[
3597 CF_CURSES_FUNCS(tputs)
3598 if test x$cf_cv_func_tputs = xyes
3601 for cf_arg in int char
3603 for cf_ret in int void
3605 if test $cf_ret = void
3607 cf_return="/* nothing */"
3609 cf_return="return value"
3612 #include <${cf_cv_ncurses_header:-curses.h}>
3613 #include <$cf_cv_term_header>
3615 static $cf_ret outc($cf_arg value) { $cf_return; }
3617 tputs("hello", 0, outc);
3618 ${cf_cv_main_return:-return}(0);
3620 CF_VERBOSE([prototype $cf_ret func($cf_arg value)])
3621 cat >>confdefs.h <<EOF
3622 #define TPUTS_ARG $cf_arg
3623 #define TPUTS_PROTO(func,value) $cf_ret func(TPUTS_ARG value)
3624 #define TPUTS_RETURN(value) $cf_return
3630 test $cf_done = yes && break
3634 dnl ---------------------------------------------------------------------------
3635 dnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00
3637 dnl Trim extra base X libraries added as a workaround for inconsistent library
3638 dnl dependencies returned by "new" pkg-config files.
3639 AC_DEFUN([CF_TRIM_X_LIBS],[
3640 for cf_trim_lib in Xmu Xt X11
3643 (*-l$cf_trim_lib\ *-l$cf_trim_lib*)
3644 LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'`
3645 CF_VERBOSE(..trimmed $LIBS)
3650 dnl ---------------------------------------------------------------------------
3651 dnl CF_TRY_PKG_CONFIG version: 5 updated: 2013/07/06 21:27:06
3652 dnl -----------------
3653 dnl This is a simple wrapper to use for pkg-config, for libraries which may be
3654 dnl available in that form.
3656 dnl $1 = package name
3657 dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS
3658 dnl $3 = logic to use if pkg-config does not have the package
3659 AC_DEFUN([CF_TRY_PKG_CONFIG],[
3660 AC_REQUIRE([CF_PKG_CONFIG])
3662 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists $1; then
3663 CF_VERBOSE(found package $1)
3664 cf_pkgconfig_incs="`$PKG_CONFIG --cflags $1 2>/dev/null`"
3665 cf_pkgconfig_libs="`$PKG_CONFIG --libs $1 2>/dev/null`"
3666 CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs)
3667 CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs)
3668 CF_ADD_CFLAGS($cf_pkgconfig_incs)
3669 CF_ADD_LIBS($cf_pkgconfig_libs)
3670 ifelse([$2],,:,[$2])
3674 ifelse([$3],,:,[$3])
3677 dnl ---------------------------------------------------------------------------
3678 dnl CF_TRY_XOPEN_SOURCE version: 2 updated: 2018/06/20 20:23:13
3679 dnl -------------------
3680 dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
3681 dnl can define it successfully.
3682 AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
3683 AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
3687 #include <sys/types.h>
3689 #ifndef _XOPEN_SOURCE
3692 [cf_cv_xopen_source=no],
3693 [cf_save="$CPPFLAGS"
3694 CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
3698 #include <sys/types.h>
3700 #ifdef _XOPEN_SOURCE
3703 [cf_cv_xopen_source=no],
3704 [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
3709 if test "$cf_cv_xopen_source" != no ; then
3710 CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
3711 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
3712 cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
3713 CF_ADD_CFLAGS($cf_temp_xopen_source)
3716 dnl ---------------------------------------------------------------------------
3717 dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
3719 dnl Make an uppercase version of a variable
3720 dnl $1=uppercase($2)
3721 AC_DEFUN([CF_UPPER],
3723 $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
3725 dnl ---------------------------------------------------------------------------
3726 dnl CF_UTF8_LIB version: 8 updated: 2012/10/06 08:57:51
3728 dnl Check for multibyte support, and if not found, utf8 compatibility library
3729 AC_DEFUN([CF_UTF8_LIB],
3731 AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
3732 cf_save_LIBS="$LIBS"
3734 #include <stdlib.h>],[putwc(0,0);],
3735 [cf_cv_utf8_lib=yes],
3737 #include <libutf8.h>],[putwc(0,0);],utf8,
3738 [cf_cv_utf8_lib=add-on],
3739 [cf_cv_utf8_lib=no])
3742 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
3744 if test "$cf_cv_utf8_lib" = "add-on" ; then
3745 AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h])
3746 CF_ADD_INCDIR($cf_cv_header_path_utf8)
3747 CF_ADD_LIBDIR($cf_cv_library_path_utf8)
3748 CF_ADD_LIBS($cf_cv_library_file_utf8)
3751 dnl ---------------------------------------------------------------------------
3752 dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
3754 dnl Use AC_VERBOSE w/o the warnings
3755 AC_DEFUN([CF_VERBOSE],
3756 [test -n "$verbose" && echo " $1" 1>&AC_FD_MSG
3759 dnl ---------------------------------------------------------------------------
3760 dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
3762 dnl Check if type wide-character type $1 is declared, and if so, which header
3763 dnl file is needed. The second parameter is used to set a shell variable when
3764 dnl the type is not found. The first parameter sets a shell variable for the
3766 AC_DEFUN([CF_WCHAR_TYPE],
3768 # This is needed on Tru64 5.0 to declare $1
3769 AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[
3774 #ifdef HAVE_LIBUTF8_H
3775 #include <libutf8.h>
3784 #ifdef HAVE_LIBUTF8_H
3785 #include <libutf8.h>
3789 [cf_cv_$1=unknown])])])
3791 if test "$cf_cv_$1" = yes ; then
3792 AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h])
3797 # if we do not find $1 in either place, use substitution to provide a fallback.
3798 if test "$cf_cv_$1" = unknown ; then
3803 # if we find $1 in either place, use substitution to provide a fallback.
3804 if test "$cf_cv_$1" != unknown ; then
3809 dnl ---------------------------------------------------------------------------
3810 dnl CF_WITH_CURSES_DIR version: 3 updated: 2010/11/20 17:02:38
3811 dnl ------------------
3812 dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses
3814 AC_DEFUN([CF_WITH_CURSES_DIR],[
3816 AC_MSG_CHECKING(for specific curses-directory)
3817 AC_ARG_WITH(curses-dir,
3818 [ --with-curses-dir=DIR directory in which (n)curses is installed],
3819 [cf_cv_curses_dir=$withval],
3820 [cf_cv_curses_dir=no])
3821 AC_MSG_RESULT($cf_cv_curses_dir)
3823 if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
3825 CF_PATH_SYNTAX(withval)
3826 if test -d "$cf_cv_curses_dir"
3828 CF_ADD_INCDIR($cf_cv_curses_dir/include)
3829 CF_ADD_LIBDIR($cf_cv_curses_dir/lib)
3833 dnl ---------------------------------------------------------------------------
3834 dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
3835 dnl ----------------
3836 dnl Configure-option for dbmalloc. The optional parameter is used to override
3837 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
3838 AC_DEFUN([CF_WITH_DBMALLOC],[
3839 CF_NO_LEAKS_OPTION(dbmalloc,
3840 [ --with-dbmalloc test: use Conor Cahill's dbmalloc library],
3843 if test "$with_dbmalloc" = yes ; then
3844 AC_CHECK_HEADER(dbmalloc.h,
3845 [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
3848 dnl ---------------------------------------------------------------------------
3849 dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
3851 dnl Configure-option for dmalloc. The optional parameter is used to override
3852 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
3853 AC_DEFUN([CF_WITH_DMALLOC],[
3854 CF_NO_LEAKS_OPTION(dmalloc,
3855 [ --with-dmalloc test: use Gray Watson's dmalloc library],
3858 if test "$with_dmalloc" = yes ; then
3859 AC_CHECK_HEADER(dmalloc.h,
3860 [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
3863 dnl ---------------------------------------------------------------------------
3864 dnl CF_WITH_LIB_BASENAME version: 1 updated: 2020/03/07 20:05:14
3865 dnl --------------------
3866 dnl Allow for overriding the basename of a library, i.e., the part to which
3867 dnl prefixes/suffixes are attached.
3869 dnl $1 = variable to set
3870 dnl $2 = option name
3871 dnl $3 = default basename for library, if omitted use $2
3872 AC_DEFUN([CF_WITH_LIB_BASENAME],
3874 AC_MSG_CHECKING(for desired basename for $2 library)
3875 AC_ARG_WITH($2-libname,
3876 [ --with-$2-libname=XXX override ifelse($3,,$2,$3) basename of library],
3877 [with_lib_basename=$withval],
3878 [with_lib_basename=ifelse($3,,$2,$3)])
3879 $1="$with_lib_basename"
3883 $1=ifelse($3,,$2,$3)
3889 AC_MSG_RESULT([$]$1)
3892 dnl ---------------------------------------------------------------------------
3893 dnl CF_WITH_NCURSES_ETC version: 5 updated: 2016/02/20 19:23:20
3894 dnl -------------------
3895 dnl Use this macro for programs which use any variant of "curses", e.g.,
3896 dnl "ncurses", and "PDCurses". Programs that can use curses and some unrelated
3897 dnl library (such as slang) should use a "--with-screen=XXX" option.
3899 dnl This does not use AC_DEFUN, because that would tell autoconf to run each
3900 dnl of the macros inside this one - before this macro.
3901 define([CF_WITH_NCURSES_ETC],[
3906 AC_MSG_CHECKING(for specified curses library type)
3908 [ --with-screen=XXX use specified curses-libraries],
3909 [cf_cv_screen=$withval],[
3911 AC_ARG_WITH(ncursesw,
3912 [ --with-ncursesw use wide ncurses-libraries],
3913 [cf_cv_screen=ncursesw],[
3915 AC_ARG_WITH(ncurses,
3916 [ --with-ncurses use ncurses-libraries],
3917 [cf_cv_screen=ncurses],[
3919 AC_ARG_WITH(pdcurses,
3920 [ --with-pdcurses compile/link with pdcurses X11 library],
3921 [cf_cv_screen=pdcurses],[
3923 AC_ARG_WITH(curses-colr,
3924 [ --with-curses-colr compile/link with HPUX 10.x color-curses],
3925 [cf_cv_screen=curses_colr],[
3927 AC_ARG_WITH(curses-5lib,
3928 [ --with-curses-5lib compile/link with SunOS 5lib curses],
3929 [cf_cv_screen=curses_5lib])])])])])])
3931 AC_MSG_RESULT($cf_cv_screen)
3933 case $cf_cv_screen in
3939 CF_NCURSES_CONFIG($cf_cv_screen)
3942 CF_NCURSES_CONFIG($cf_cv_screen)
3948 AC_MSG_ERROR(unexpected screen-value: $cf_cv_screen)
3952 CF_NCURSES_PTHREADS($cf_cv_screen)
3955 dnl ---------------------------------------------------------------------------
3956 dnl CF_WITH_SCREEN_PDCURSES version: 1 updated: 2020/08/28 16:56:27
3957 dnl -----------------------
3958 dnl Call this macro before CF_ENABLE_WARNINGS for configure scripts which use
3959 dnl the "--with-screen=pdcurses" selection. Doing that allows the configure
3960 dnl script to search for the X11/Xt header files to declare (or not) the
3961 dnl symbol needed to enable "const" in those header files. If that configure
3962 dnl option is not used, then those checks are unnecessary.
3963 AC_DEFUN([CF_WITH_SCREEN_PDCURSES],[
3964 AC_PROVIDE([AC_PATH_XTRA])
3965 AC_PROVIDE([AC_PATH_X])
3966 if test -n "$with_screen" && test "x$with_screen" = "xpdcurses"
3972 dnl ---------------------------------------------------------------------------
3973 dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
3974 dnl ----------------
3975 AC_DEFUN([CF_WITH_VALGRIND],[
3976 CF_NO_LEAKS_OPTION(valgrind,
3977 [ --with-valgrind test: use valgrind],
3980 dnl ---------------------------------------------------------------------------
3981 dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54
3983 dnl Handle configure option "--with-x11-rgb", setting these shell
3986 dnl $RGB_PATH is the option value, used for finding the X11 rgb file.
3987 dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given.
3989 dnl Most Linux's use this:
3990 dnl /usr/share/X11/rgb.txt
3991 dnl Debian uses this:
3992 dnl /etc/X11/rgb.txt
3993 dnl DragonFlyBSD ports uses this:
3994 dnl /usr/pkg/lib/X11/rgb.txt
3995 dnl FreeBSD ports use these:
3996 dnl /usr/local/lib/X11/rgb.txt
3997 dnl /usr/local/share/X11/rgb.txt
3998 dnl Mandriva has these:
3999 dnl /usr/lib/X11/rgb.txt
4000 dnl /usr/lib64/X11/rgb.txt
4001 dnl NetBSD has these
4002 dnl /usr/X11R7/lib/X11/rgb.txt
4003 dnl OpenSolaris uses
4005 dnl /usr/X11/etc/X11/rgb.txt
4006 dnl /usr/X11/share/X11/rgb.txt
4007 dnl /usr/X11/lib/X11/rgb.txt
4009 dnl /opt/local/share/X11/rgb.txt (MacPorts)
4010 dnl /opt/X11/share/X11/rgb.txt (non-ports)
4012 dnl /usr/X11/etc/X11/rgb.txt
4013 dnl /usr/X11/share/X11/rgb.txt (perhaps)
4014 dnl /usr/X11/lib/amd64/X11/rgb.txt
4015 dnl Solaris10 uses (in this order):
4016 dnl /usr/openwin/lib/X11/rgb.txt
4017 dnl /usr/X11/lib/X11/rgb.txt
4018 AC_DEFUN([CF_WITH_X11_RGB],[
4019 AC_MSG_CHECKING(for X11 rgb file)
4020 AC_ARG_WITH(x11-rgb,
4021 [ --with-x11-rgb=FILE file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)],
4022 [RGB_PATH=$withval],
4025 if test "x[$]RGB_PATH" = xauto
4027 RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
4029 /opt/local/share/X11/rgb.txt \
4030 /opt/X11/share/X11/rgb.txt \
4031 /usr/share/X11/rgb.txt \
4032 /usr/X11/share/X11/rgb.txt \
4033 /usr/X11/lib/X11/rgb.txt \
4034 /usr/lib/X11/rgb.txt \
4036 /usr/pkg/lib/X11/rgb.txt \
4037 /usr/X11R7/lib/X11/rgb.txt \
4038 /usr/X11R6/lib/X11/rgb.txt \
4039 /usr/X11R5/lib/X11/rgb.txt \
4040 /usr/X11R4/lib/X11/rgb.txt \
4041 /usr/local/lib/X11/rgb.txt \
4042 /usr/local/share/X11/rgb.txt \
4043 /usr/lib64/X11/rgb.txt
4045 if test -f "$cf_path" ; then
4052 CF_PATH_SYNTAX(cf_path)
4055 AC_MSG_RESULT($RGB_PATH)
4057 AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt])
4060 if test "$RGB_PATH" = no
4064 AC_SUBST(no_x11_rgb)
4066 dnl ---------------------------------------------------------------------------
4067 dnl CF_XOPEN_CURSES version: 15 updated: 2020/03/19 20:23:48
4069 dnl Test if we should define X/Open source for curses, needed on Digital Unix
4070 dnl 4.x, to see the extended functions, but breaks on IRIX 6.x.
4072 dnl The getbegyx() check is needed for HPUX, which omits legacy macros such
4073 dnl as getbegy(). The latter is better design, but the former is standard.
4074 AC_DEFUN([CF_XOPEN_CURSES],
4076 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
4077 AC_CACHE_CHECK(definition to turn on extended curses functions,cf_cv_need_xopen_extension,[
4078 cf_cv_need_xopen_extension=unknown
4081 #include <${cf_cv_ncurses_header:-curses.h}>],[
4082 #if defined(NCURSES_VERSION_PATCH)
4083 #if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403)
4087 #ifdef NCURSES_VERSION
4089 int check2 = curs_set((int)sizeof(check));
4091 long x = winnstr(stdscr, "", 0);
4093 #ifdef NCURSES_VERSION
4096 getbegyx(stdscr, y1, x1);
4101 [cf_cv_need_xopen_extension=none],
4103 for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR
4106 #define $cf_try_xopen_extension 1
4108 #include <${cf_cv_ncurses_header:-curses.h}>],[
4109 #ifdef NCURSES_VERSION
4111 int check2 = curs_set((int)sizeof(check));
4113 long x = winnstr(stdscr, "", 0);
4115 getbegyx(stdscr, y1, x1);
4116 #ifdef NCURSES_VERSION
4123 [cf_cv_need_xopen_extension=$cf_try_xopen_extension; break])
4128 case $cf_cv_need_xopen_extension in
4130 CF_APPEND_TEXT(CPPFLAGS,-D$cf_cv_need_xopen_extension)
4135 dnl ---------------------------------------------------------------------------
4136 dnl CF_XOPEN_SOURCE version: 55 updated: 2018/12/31 20:46:17
4138 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
4139 dnl or adapt to the vendor's definitions to get equivalent functionality,
4140 dnl without losing the common non-POSIX features.
4143 dnl $1 is the nominal value for _XOPEN_SOURCE
4144 dnl $2 is the nominal value for _POSIX_C_SOURCE
4145 AC_DEFUN([CF_XOPEN_SOURCE],[
4146 AC_REQUIRE([AC_CANONICAL_HOST])
4147 AC_REQUIRE([CF_POSIX_VISIBLE])
4149 if test "$cf_cv_posix_visible" = no; then
4151 cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
4152 cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
4157 cf_xopen_source="-D_ALL_SOURCE"
4163 cf_xopen_source="-D_APPLE_C_SOURCE"
4166 cf_xopen_source="-D_DARWIN_C_SOURCE"
4169 (freebsd*|dragonfly*|midnightbsd*)
4170 # 5.x headers associate
4171 # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
4172 # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
4173 cf_POSIX_C_SOURCE=200112L
4175 cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
4178 cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
4181 cf_xopen_source="-D_HPUX_SOURCE"
4184 cf_xopen_source="-D_SGI_SOURCE"
4187 (linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
4188 CF_GNU_SOURCE($cf_XOPEN_SOURCE)
4191 cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
4194 # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
4196 CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
4199 cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
4202 # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
4203 cf_xopen_source="-D_BSD_SOURCE"
4207 # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
4210 cf_xopen_source="-D_OSF_SOURCE"
4213 cf_xopen_source="-D_QNX_SOURCE"
4216 # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
4219 cf_xopen_source="-D__EXTENSIONS__"
4220 cf_cv_xopen_source=broken
4222 (sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
4228 CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
4232 if test -n "$cf_xopen_source" ; then
4233 CF_ADD_CFLAGS($cf_xopen_source,true)
4236 dnl In anything but the default case, we may have system-specific setting
4237 dnl which is still not guaranteed to provide all of the entrypoints that
4238 dnl _XOPEN_SOURCE would yield.
4239 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
4240 AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
4241 AC_TRY_COMPILE([#include <stdlib.h>],[
4242 #ifndef _XOPEN_SOURCE
4245 [cf_XOPEN_SOURCE_set=yes],
4246 [cf_XOPEN_SOURCE_set=no])
4247 AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
4248 if test $cf_XOPEN_SOURCE_set = yes
4250 AC_TRY_COMPILE([#include <stdlib.h>],[
4251 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
4254 [cf_XOPEN_SOURCE_set_ok=yes],
4255 [cf_XOPEN_SOURCE_set_ok=no])
4256 if test $cf_XOPEN_SOURCE_set_ok = no
4258 AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
4264 fi # cf_cv_posix_visible
4266 dnl ---------------------------------------------------------------------------
4267 dnl CF_X_ATHENA version: 24 updated: 2020/03/10 18:53:47
4269 dnl Check for Xaw (Athena) libraries
4271 dnl Sets $cf_x_athena according to the flavor of Xaw which is used.
4272 AC_DEFUN([CF_X_ATHENA],
4274 cf_x_athena=${cf_x_athena:-Xaw}
4276 AC_MSG_CHECKING(if you want to link with Xaw 3d library)
4279 [ --with-Xaw3d link with Xaw 3d library])
4280 if test "$withval" = yes ; then
4287 AC_MSG_CHECKING(if you want to link with Xaw 3d xft library)
4289 AC_ARG_WITH(Xaw3dxft,
4290 [ --with-Xaw3dxft link with Xaw 3d xft library])
4291 if test "$withval" = yes ; then
4292 cf_x_athena=Xaw3dxft
4298 AC_MSG_CHECKING(if you want to link with neXT Athena library)
4301 [ --with-neXtaw link with neXT Athena library])
4302 if test "$withval" = yes ; then
4309 AC_MSG_CHECKING(if you want to link with Athena-Plus library)
4311 AC_ARG_WITH(XawPlus,
4312 [ --with-XawPlus link with Athena-Plus library])
4313 if test "$withval" = yes ; then
4322 if test "$PKG_CONFIG" != none ; then
4324 test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6"
4325 for cf_athena_pkg in \
4328 ${cf_x_athena}-devel \
4330 lib${cf_x_athena}-devel
4332 CF_TRY_PKG_CONFIG($cf_athena_pkg,[
4333 cf_x_athena_lib="$cf_pkgconfig_libs"
4334 CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
4335 AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
4339 AC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[
4341 #include <X11/Xmu/CharSet.h>
4343 int check = XmuCompareISOLatin1("big", "small");
4345 ],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])])
4347 if test "$cf_cv_xaw_compat" = no
4349 # workaround for broken ".pc" files...
4350 case "$cf_x_athena_lib" in
4354 CF_VERBOSE(work around broken package)
4356 cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'`
4357 CF_TRY_PKG_CONFIG(xmu,[
4359 CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs)
4361 CF_ADD_LIB_AFTER($cf_first_lib,-lXmu)
4372 if test -z "$cf_x_athena_lib" ; then
4375 CF_X_ATHENA_CPPFLAGS($cf_x_athena)
4376 CF_X_ATHENA_LIBS($cf_x_athena)
4379 dnl ---------------------------------------------------------------------------
4380 dnl CF_X_ATHENA_CPPFLAGS version: 8 updated: 2020/01/16 05:21:56
4381 dnl --------------------
4382 dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
4383 dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
4384 AC_DEFUN([CF_X_ATHENA_CPPFLAGS],
4386 AC_REQUIRE([AC_PATH_XTRA])
4387 cf_x_athena_root=ifelse([$1],,Xaw,[$1])
4390 for cf_path in default \
4391 /usr/contrib/X11R6 \
4392 /usr/contrib/X11R5 \
4396 if test -z "$cf_x_athena_inc" ; then
4397 CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS])
4398 cf_test=X11/$cf_x_athena_root/SimpleMenu.h
4399 if test $cf_path != default ; then
4400 CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include)
4401 AC_MSG_CHECKING(for $cf_test in $cf_path)
4403 AC_MSG_CHECKING(for $cf_test)
4406 #include <X11/Intrinsic.h>
4407 #include <$cf_test>],[],
4410 AC_MSG_RESULT($cf_result)
4411 CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS])
4412 if test "$cf_result" = yes ; then
4413 test "$cf_path" = default && cf_x_athena_inc=default
4414 test "$cf_path" != default && cf_x_athena_inc=$cf_path/include
4420 if test -z "$cf_x_athena_inc" ; then
4421 AC_MSG_WARN([Unable to find Athena header files])
4422 elif test "$cf_x_athena_inc" != default ; then
4423 CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc)
4426 dnl ---------------------------------------------------------------------------
4427 dnl CF_X_ATHENA_LIBS version: 13 updated: 2020/01/11 18:16:10
4428 dnl ----------------
4429 dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
4430 dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
4431 AC_DEFUN([CF_X_ATHENA_LIBS],
4432 [AC_REQUIRE([CF_X_TOOLKIT])
4433 cf_x_athena_root=ifelse([$1],,Xaw,[$1])
4436 for cf_path in default \
4437 /usr/contrib/X11R6 \
4438 /usr/contrib/X11R5 \
4443 ${cf_x_athena_root} \
4444 ${cf_x_athena_root}7 \
4445 ${cf_x_athena_root}6
4449 "-l$cf_lib -lXpm -lXmu" \
4450 "-l${cf_lib}_s -lXmu_s"
4452 test -n "$cf_x_athena_lib" && break
4454 CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_LIBS])
4455 cf_test=XawSimpleMenuAddGlobalActions
4456 test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs"
4457 CF_ADD_LIBS($cf_libs)
4458 AC_MSG_CHECKING(for $cf_test in $cf_libs)
4460 #include <X11/Intrinsic.h>
4461 #include <X11/$cf_x_athena_root/SimpleMenu.h>
4463 $cf_test((XtAppContext) 0)],
4466 AC_MSG_RESULT($cf_result)
4467 CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_LIBS])
4469 if test "$cf_result" = yes ; then
4470 cf_x_athena_lib="$cf_libs"
4474 test -n "$cf_x_athena_lib" && break
4478 if test -z "$cf_x_athena_lib" ; then
4480 [Unable to successfully link Athena library (-l$cf_x_athena_root) with test program])
4483 CF_ADD_LIBS($cf_x_athena_lib)
4484 CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
4485 AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
4487 dnl ---------------------------------------------------------------------------
4488 dnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05
4490 AC_DEFUN([CF_X_EXT],[
4491 CF_TRY_PKG_CONFIG(Xext,,[
4492 AC_CHECK_LIB(Xext,XextCreateExtension,
4493 [CF_ADD_LIB(Xext)])])
4495 dnl ---------------------------------------------------------------------------
4496 dnl CF_X_TOOLKIT version: 25 updated: 2020/03/10 17:26:15
4498 dnl Check for X Toolkit libraries
4499 AC_DEFUN([CF_X_TOOLKIT],
4501 AC_REQUIRE([AC_PATH_XTRA])
4502 AC_REQUIRE([CF_CHECK_CACHE])
4504 # OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and
4505 # in some cases has installed dummy files in the former, other cases replaced
4506 # it with a link to the new location). This complicates the configure script.
4507 # Check for that pitfall, and recover using pkg-config
4509 # If none of these are set, the configuration is almost certainly broken.
4510 if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}"
4512 CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)])
4513 CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)])
4514 CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)])
4515 CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)])
4517 LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS"
4522 CF_TRY_PKG_CONFIG(xt,[
4528 # we have an "xt" package, but it may omit Xt's dependency on X11
4529 AC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[
4531 #include <X11/Xlib.h>
4533 int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0);
4534 int rc2 = XClearWindow((Display*) 0, (Window) 0);
4535 int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0);
4536 int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0);
4537 ],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])])
4538 if test "$cf_cv_xt_x11_compat" = no
4540 CF_VERBOSE(work around broken X11 dependency)
4541 # 2010/11/19 - good enough until a working Xt on Xcb is delivered.
4542 CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)])
4547 AC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[
4549 #include <X11/Shell.h>
4550 ],[int num = IceConnectionNumber(0); (void) num
4551 ],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])])
4553 if test "$cf_cv_xt_ice_compat" = no
4555 # workaround for broken ".pc" files used for X Toolkit.
4556 case "x$X_PRE_LIBS" in
4562 CF_VERBOSE(work around broken ICE dependency)
4563 CF_TRY_PKG_CONFIG(ice,
4564 [CF_TRY_PKG_CONFIG(sm)],
4565 [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)])
4575 LDFLAGS="$X_LIBS $LDFLAGS"
4576 CF_CHECK_CFLAGS($X_CFLAGS)
4578 AC_CHECK_FUNC(XOpenDisplay,,[
4579 AC_CHECK_LIB(X11,XOpenDisplay,
4580 [CF_ADD_LIB(X11)])])
4582 AC_CHECK_FUNC(XtAppInitialize,,[
4583 AC_CHECK_LIB(Xt, XtAppInitialize,
4584 [AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library])
4586 LIBS="-lXt $LIBS"])])
4589 if test $cf_have_X_LIBS = no ; then
4591 [Unable to successfully link X Toolkit library (-lXt) with
4592 test program. You will have to check and add the proper libraries by hand
4596 dnl ---------------------------------------------------------------------------
4597 dnl CF__CURSES_DATA version: 2 updated: 2020/02/08 21:00:26
4599 dnl Attempt to make a copy of a curses data item. This is needed in the
4600 dnl check-data configure tests when using ncurses, because the symbol may be
4601 dnl actually a function return-value. That could happen if the linker is
4602 dnl broken (does not resolve data-only references), or if ncurses is configured
4603 dnl to support re-entrant code.
4606 define([CF__CURSES_DATA],[
4607 #if defined($2) && ((defined(NCURSES_WRAPPED_VAR) && (NCURSES_VERSION_PATCH < 20200208)) || defined(NCURSES_BROKEN_LINKER) || defined(NCURSES_REENTRANT))
4608 const void *$1 = (const void *)($2);
4610 const void *$1 = &($2);
4612 fprintf(stderr, "testing linkage of $2:%p\n", (const void *)$1);
4614 dnl ---------------------------------------------------------------------------
4615 dnl CF__CURSES_HEAD version: 2 updated: 2010/10/23 15:54:49
4617 dnl Define a reusable chunk which includes <curses.h> and <term.h> when they
4618 dnl are both available.
4619 define([CF__CURSES_HEAD],[
4621 #include <xcurses.h>
4622 char * XCursesProgramName = "test";
4624 #include <${cf_cv_ncurses_header:-curses.h}>
4625 #if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
4626 #include <ncursesw/term.h>
4627 #elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
4628 #include <ncurses/term.h>
4629 #elif defined(HAVE_TERM_H)