1 dnl***************************************************************************
2 dnl Copyright 2018-2022,2023 Thomas E. Dickey *
3 dnl Copyright 1998-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 Author: Thomas E. Dickey 1995-on
32 dnl $Id: aclocal.m4,v 1.1053 2023/10/21 12:54:23 tom Exp $
33 dnl Macros used in NCURSES auto-configuration script.
35 dnl These macros are maintained separately from NCURSES. The copyright on
36 dnl this file applies to the aggregation of macros and does not affect use of
37 dnl these macros in other applications.
39 dnl See these pages for additional information:
40 dnl https://invisible-island.net/autoconf/
41 dnl https://invisible-island.net/autoconf/my-autoconf.html
43 dnl ---------------------------------------------------------------------------
44 dnl ---------------------------------------------------------------------------
45 dnl AM_LANGINFO_CODESET version: 7 updated: 2023/01/11 04:05:23
46 dnl -------------------
47 dnl Inserted as requested by gettext 0.10.40
48 dnl File from /usr/share/aclocal
50 dnl ====================
53 dnl From Bruno Haible.
54 AC_DEFUN([AM_LANGINFO_CODESET],
56 AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
59 #include <langinfo.h>],
60 [char* cs = nl_langinfo(CODESET); (void)cs],
61 am_cv_langinfo_codeset=yes,
62 am_cv_langinfo_codeset=no)
64 if test "$am_cv_langinfo_codeset" = yes; then
65 AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
66 [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
69 dnl ---------------------------------------------------------------------------
70 dnl CF_ABI_DEFAULTS version: 5 updated: 2023/10/21 08:54:23
72 dnl Provide configure-script defaults for different ncurses ABIs.
73 AC_DEFUN([CF_ABI_DEFAULTS],[
74 AC_REQUIRE([CF_NCURSES_WITH_ABI_VERSION])
87 cf_dft_opaque_curses=no
88 cf_dft_ordinate_type=short
94 # ABI 6 default differences from ABI 5:
95 case x$cf_cv_abi_default in
97 cf_dft_chtype=uint32_t
101 cf_dft_ext_putwin=yes
102 cf_dft_ext_spfuncs=yes
103 cf_dft_filter_syms=yes
105 cf_dft_mmask_t=uint32_t
106 cf_dft_opaque_curses=yes
107 cf_dft_tparm_arg=intptr_t
113 # ABI 7 default differences from ABI 6:
114 case x$cf_cv_abi_default in
117 cf_dft_mmask_t=uint64_t
118 cf_dft_ordinate_type=int
119 cf_dft_signed_char=yes
120 # also: remove the wgetch-events feature in ABI 7
124 dnl ---------------------------------------------------------------------------
125 dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
126 dnl ------------------
127 dnl Conditionally generate script according to whether we're using a given autoconf.
129 dnl $1 = version to compare against
130 dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
131 dnl $3 = code to use if AC_ACVERSION is older than $1.
132 define([CF_ACVERSION_CHECK],
134 ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
135 ifdef([m4_version_compare],
136 [m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
137 [CF_ACVERSION_COMPARE(
138 AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
139 AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
140 dnl ---------------------------------------------------------------------------
141 dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
142 dnl --------------------
143 dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
144 dnl MAJOR2, MINOR2, TERNARY2,
145 dnl PRINTABLE2, not FOUND, FOUND)
146 define([CF_ACVERSION_COMPARE],
147 [ifelse(builtin([eval], [$2 < $5]), 1,
148 [ifelse([$8], , ,[$8])],
149 [ifelse([$9], , ,[$9])])])dnl
150 dnl ---------------------------------------------------------------------------
151 dnl CF_ADA_INCLUDE_DIRS version: 8 updated: 2013/10/14 04:24:07
152 dnl -------------------
153 dnl Construct the list of include-options for the C programs in the Ada95
155 AC_DEFUN([CF_ADA_INCLUDE_DIRS],
157 ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS"
158 if test "$srcdir" != "."; then
159 ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS"
161 if test "$GCC" != yes; then
162 ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
163 elif test "$includedir" != "/usr/include"; then
164 if test "$includedir" = '${prefix}/include' ; then
165 if test x$prefix != x/usr ; then
166 ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
169 ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
174 dnl ---------------------------------------------------------------------------
175 dnl CF_ADD_ADAFLAGS version: 1 updated: 2010/06/19 15:22:18
177 dnl Add to $ADAFLAGS, which is substituted into makefile and scripts.
178 AC_DEFUN([CF_ADD_ADAFLAGS],[
179 ADAFLAGS="$ADAFLAGS $1"
182 dnl ---------------------------------------------------------------------------
183 dnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15
185 dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
186 dnl $1 = flags to add
187 dnl $2 = if given makes this macro verbose.
189 dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
190 dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
191 dnl confused by the quotes (which require backslashes to keep them usable).
192 AC_DEFUN([CF_ADD_CFLAGS],
197 cf_new_extra_cppflags=
199 for cf_add_cflags in $1
201 case "$cf_fix_cppflags" in
203 case "$cf_add_cflags" in
204 (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
205 case "$cf_add_cflags" in
207 cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
209 test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
210 && test -z "${cf_tst_cflags}" \
211 && cf_fix_cppflags=yes
213 if test "$cf_fix_cppflags" = yes ; then
214 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
216 elif test "${cf_tst_cflags}" = "\"'" ; then
217 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
226 case "$cf_add_cflags" in
228 cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
229 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
232 CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags)
237 CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags)
242 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
244 cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'`
246 test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
247 && test -z "${cf_tst_cflags}" \
248 && cf_fix_cppflags=no
253 if test -n "$cf_new_cflags" ; then
254 ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
255 CF_APPEND_TEXT(CFLAGS,$cf_new_cflags)
258 if test -n "$cf_new_cppflags" ; then
259 ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
260 CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags)
263 if test -n "$cf_new_extra_cppflags" ; then
264 ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
265 CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags)
268 AC_SUBST(EXTRA_CPPFLAGS)
271 dnl ---------------------------------------------------------------------------
272 dnl CF_ADD_CXXFLAGS version: 1 updated: 2020/04/04 16:16:13
274 dnl Copy non-preprocessor flags to $CXXFLAGS, preprocessor flags to $CPPFLAGS
275 dnl The second parameter if given makes this macro verbose.
277 dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
278 dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
279 dnl confused by the quotes (which require backslashes to keep them usable).
280 AC_DEFUN([CF_ADD_CXXFLAGS],
282 cf_save_CXXFLAGS="$CFLAGS"
284 CF_ADD_CFLAGS($1 ifelse($2,,,[,$2]))
286 CFLAGS="$cf_save_CXXFLAGS"
288 dnl ---------------------------------------------------------------------------
289 dnl CF_ADD_INCDIR version: 17 updated: 2021/09/04 06:35:04
291 dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it is
292 dnl redundant. We don't normally need to add -I/usr/local/include for gcc,
293 dnl but old versions (and some misinstalled ones) need that. To make things
294 dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to
295 dnl the include-path).
296 AC_DEFUN([CF_ADD_INCDIR],
298 if test -n "$1" ; then
299 for cf_add_incdir in $1
301 while test "$cf_add_incdir" != /usr/include
303 if test -d "$cf_add_incdir"
306 if test -n "$CFLAGS$CPPFLAGS" ; then
307 # a loop is needed to ensure we can add subdirs of existing dirs
308 for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
309 if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
310 cf_have_incdir=yes; break
315 if test "$cf_have_incdir" = no ; then
316 if test "$cf_add_incdir" = /usr/local/include ; then
319 cf_save_CPPFLAGS=$CPPFLAGS
320 CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir)
321 AC_TRY_COMPILE([#include <stdio.h>],
324 [cf_have_incdir=yes])
325 CPPFLAGS=$cf_save_CPPFLAGS
330 if test "$cf_have_incdir" = no ; then
331 CF_VERBOSE(adding $cf_add_incdir to include-path)
332 ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir"
334 cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'`
335 test "$cf_top_incdir" = "$cf_add_incdir" && break
336 cf_add_incdir="$cf_top_incdir"
347 dnl ---------------------------------------------------------------------------
348 dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05
350 dnl Add a library, used to enforce consistency.
352 dnl $1 = library to add, without the "-l"
353 dnl $2 = variable to update (default $LIBS)
354 AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl
355 dnl ---------------------------------------------------------------------------
356 dnl CF_ADD_LIBDIR version: 11 updated: 2020/12/31 20:19:42
358 dnl Adds to the library-path
360 dnl Some machines have trouble with multiple -L options.
362 dnl $1 is the (list of) directory(s) to add
363 dnl $2 is the optional name of the variable to update (default LDFLAGS)
365 AC_DEFUN([CF_ADD_LIBDIR],
367 if test -n "$1" ; then
368 for cf_add_libdir in $1
370 if test "$cf_add_libdir" = /usr/lib ; then
372 elif test -d "$cf_add_libdir"
375 if test -n "$LDFLAGS$LIBS" ; then
376 # a loop is needed to ensure we can add subdirs of existing dirs
377 for cf_test_libdir in $LDFLAGS $LIBS ; do
378 if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
379 cf_have_libdir=yes; break
383 if test "$cf_have_libdir" = no ; then
384 CF_VERBOSE(adding $cf_add_libdir to library-path)
385 ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
391 dnl ---------------------------------------------------------------------------
392 dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33
394 dnl Add one or more libraries, used to enforce consistency. Libraries are
395 dnl prepended to an existing list, since their dependencies are assumed to
396 dnl already exist in the list.
398 dnl $1 = libraries to add, with the "-l", etc.
399 dnl $2 = variable to update (default $LIBS)
400 AC_DEFUN([CF_ADD_LIBS],[
401 cf_add_libs="[$]ifelse($2,,LIBS,[$2])"
404 for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
406 for cf_add_1lib in $cf_add_0lib; do
407 for cf_add_2lib in $cf_add_libs; do
408 if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
413 test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
415 ifelse($2,,LIBS,[$2])="$cf_add_libs"
417 dnl ---------------------------------------------------------------------------
418 dnl CF_ADD_SUBDIR_PATH version: 5 updated: 2020/12/31 20:19:42
419 dnl ------------------
420 dnl Append to a search-list for a nonstandard header/lib-file
421 dnl $1 = the variable to return as result
422 dnl $2 = the package name
423 dnl $3 = the subdirectory, e.g., bin, include or lib
424 dnl $4 = the directory under which we will test for subdirectories
425 dnl $5 = a directory that we do not want $4 to match
426 AC_DEFUN([CF_ADD_SUBDIR_PATH],
428 test "x$4" != "x$5" && \
430 ifelse([$5],NONE,,[{ test -z "$5" || test "x$5" = xNONE || test "x$4" != "x$5"; } &&]) {
431 test -n "$verbose" && echo " ... testing for $3-directories under $4"
432 test -d "$4/$3" && $1="[$]$1 $4/$3"
433 test -d "$4/$3/$2" && $1="[$]$1 $4/$3/$2"
434 test -d "$4/$3/$2/$3" && $1="[$]$1 $4/$3/$2/$3"
435 test -d "$4/$2/$3" && $1="[$]$1 $4/$2/$3"
436 test -d "$4/$2/$3/$2" && $1="[$]$1 $4/$2/$3/$2"
439 dnl ---------------------------------------------------------------------------
440 dnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40
442 dnl Use CF_ADD_CFLAGS after first checking for potential redefinitions.
443 dnl $1 = flags to add
444 dnl $2 = if given makes this macro verbose.
445 define([CF_APPEND_CFLAGS],
447 for cf_add_cflags in $1
449 case "x$cf_add_cflags" in
451 CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2])
452 CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2])
455 CF_ADD_CFLAGS([$cf_add_cflags],[$2])
458 dnl ---------------------------------------------------------------------------
459 dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
461 dnl use this macro for appending text without introducing an extra blank at
463 define([CF_APPEND_TEXT],
465 test -n "[$]$1" && $1="[$]$1 "
468 dnl ---------------------------------------------------------------------------
469 dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
471 dnl Allow user to disable a normally-on option.
472 AC_DEFUN([CF_ARG_DISABLE],
473 [CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
474 dnl ---------------------------------------------------------------------------
475 dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31
477 dnl Allow user to enable a normally-off option.
478 AC_DEFUN([CF_ARG_ENABLE],
479 [CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
480 dnl ---------------------------------------------------------------------------
481 dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14
483 dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
489 dnl $3 = action to perform if option is not default
490 dnl $4 = action if perform if option is default
491 dnl $5 = default option value (either 'yes' or 'no')
492 AC_DEFUN([CF_ARG_OPTION],
493 [AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
494 if test "$enableval" != "$5" ; then
496 ,[ $3]) ifelse([$4],,,[
499 fi],[enableval=$5 ifelse([$4],,,[
503 dnl ---------------------------------------------------------------------------
504 dnl CF_AR_FLAGS version: 9 updated: 2021/01/01 13:31:04
506 dnl Check for suitable "ar" (archiver) options for updating an archive.
508 dnl In particular, handle some obsolete cases where the "-" might be omitted,
509 dnl as well as a workaround for breakage of make's archive rules by the GNU
510 dnl binutils "ar" program.
511 AC_DEFUN([CF_AR_FLAGS],[
512 AC_REQUIRE([CF_PROG_AR])
514 AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[
515 case "$cf_cv_system_name" in
518 cat >mk_static_lib.sh <<-EOF
523 exec \[$]MSVC_BIN -out:"\[$]out" \[$]@
525 chmod +x mk_static_lib.sh
526 AR=`pwd`/mk_static_lib.sh
529 cf_cv_ar_flags=unknown
530 for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
533 # check if $ARFLAGS already contains this choice
534 if test "x$ARFLAGS" != "x" ; then
535 cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"`
536 if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then
542 rm -f "conftest.$ac_cv_objext"
545 cat >"conftest.$ac_ext" <<EOF
546 #line __oline__ "configure"
547 int testdata[[3]] = { 123, 456, 789 };
549 if AC_TRY_EVAL(ac_compile) ; then
550 echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&AC_FD_CC
551 $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&AC_FD_CC 1>/dev/null
552 if test -f conftest.a ; then
553 cf_cv_ar_flags="$cf_ar_flags"
557 CF_VERBOSE(cannot compile test-program)
561 rm -f conftest.a "conftest.$ac_ext" "conftest.$ac_cv_objext"
566 if test -n "$ARFLAGS" ; then
567 if test -n "$cf_cv_ar_flags" ; then
568 ARFLAGS="$ARFLAGS $cf_cv_ar_flags"
571 ARFLAGS=$cf_cv_ar_flags
576 dnl ---------------------------------------------------------------------------
577 dnl CF_AWK_BIG_PRINTF version: 5 updated: 2015/04/17 21:13:04
578 dnl -----------------
579 dnl Check if awk can handle big strings using printf. Some older versions of
580 dnl awk choke on large strings passed via "%s".
582 dnl $1 = desired string size
583 dnl $2 = variable to set with result
584 AC_DEFUN([CF_AWK_BIG_PRINTF],
591 if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < $1) { xx = xx "x"; }; printf("%s\n", xx); }' 2>/dev/null \
592 | $AWK '{ printf "%d\n", length([$]0); }' 2>/dev/null | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ([$]0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then
600 dnl ---------------------------------------------------------------------------
601 dnl CF_BOOL_DECL version: 8 updated: 2004/01/30 15:51:18
603 dnl Test if 'bool' is a builtin type in the configured C++ compiler. Some
604 dnl older compilers (e.g., gcc 2.5.8) don't support 'bool' directly; gcc
605 dnl 2.6.3 does, in anticipation of the ANSI C++ standard.
607 dnl Treat the configuration-variable specially here, since we're directly
608 dnl substituting its value (i.e., 1/0).
610 dnl $1 is the shell variable to store the result in, if not $cv_cv_builtin_bool
611 AC_DEFUN([CF_BOOL_DECL],
613 AC_MSG_CHECKING(if we should include stdbool.h)
615 AC_CACHE_VAL(cf_cv_header_stdbool_h,[
616 AC_TRY_COMPILE([],[bool foo = false],
617 [cf_cv_header_stdbool_h=0],
622 ],[bool foo = false],
623 [cf_cv_header_stdbool_h=1],
624 [cf_cv_header_stdbool_h=0])])])
626 if test "$cf_cv_header_stdbool_h" = 1
627 then AC_MSG_RESULT(yes)
628 else AC_MSG_RESULT(no)
631 AC_MSG_CHECKING([for builtin bool type])
633 AC_CACHE_VAL(ifelse($1,,cf_cv_builtin_bool,[$1]),[
636 #include <sys/types.h>
638 [ifelse($1,,cf_cv_builtin_bool,[$1])=1],
639 [ifelse($1,,cf_cv_builtin_bool,[$1])=0])
642 if test "$ifelse($1,,cf_cv_builtin_bool,[$1])" = 1
643 then AC_MSG_RESULT(yes)
644 else AC_MSG_RESULT(no)
647 dnl ---------------------------------------------------------------------------
648 dnl CF_BOOL_SIZE version: 20 updated: 2023/02/18 17:41:25
650 dnl Test for the size of 'bool' in the configured C++ compiler (e.g., a type).
651 dnl Don't bother looking for bool.h, since it has been deprecated.
653 dnl If the current compiler is C rather than C++, we get the bool definition
654 dnl from <stdbool.h>.
655 AC_DEFUN([CF_BOOL_SIZE],
657 AC_CHECK_SIZEOF(bool,,[
660 #if defined(__cplusplus)
662 #ifdef HAVE_GXX_BUILTIN_H
663 #include <g++/builtin.h>
664 #elif HAVE_GPP_BUILTIN_H
665 #include <gpp/builtin.h>
672 #if $cf_cv_header_stdbool_h
679 AC_CACHE_CHECK(for type of bool, cf_cv_type_of_bool,[
684 #if defined(__cplusplus)
686 #ifdef HAVE_GXX_BUILTIN_H
687 #include <g++/builtin.h>
688 #elif HAVE_GPP_BUILTIN_H
689 #include <gpp/builtin.h>
696 #if $cf_cv_header_stdbool_h
704 FILE *fp = fopen("cf_test.out", "w");
708 fputs("unsigned ", fp);
709 if (sizeof(x) == sizeof(int)) fputs("int", fp);
710 else if (sizeof(x) == sizeof(char)) fputs("char", fp);
711 else if (sizeof(x) == sizeof(short))fputs("short",fp);
712 else if (sizeof(x) == sizeof(long)) fputs("long", fp);
715 ${cf_cv_main_return:-return}(0);
718 [cf_cv_type_of_bool=`cat cf_test.out`
719 if test -z "$cf_cv_type_of_bool"; then
720 cf_cv_type_of_bool=unknown
722 [cf_cv_type_of_bool=unknown],
724 case x$ac_cv_sizeof_bool in
725 (x1) cf_cv_type_of_bool="unsigned char";;
726 (x2) cf_cv_type_of_bool="unsigned short";;
727 (x4) cf_cv_type_of_bool="unsigned int";;
728 (x8) cf_cv_type_of_bool="unsigned long";;
729 (*) cf_cv_type_of_bool=unknown;;
735 if test "$cf_cv_type_of_bool" = unknown ; then
736 case .$NCURSES_BOOL in
737 (.auto|.) NCURSES_BOOL=unsigned;;
739 AC_MSG_WARN(Assuming $NCURSES_BOOL for type of bool)
740 cf_cv_type_of_bool=$NCURSES_BOOL
743 dnl ---------------------------------------------------------------------------
744 dnl CF_BUILD_CC version: 11 updated: 2022/12/04 15:40:08
746 dnl If we're cross-compiling, allow the user to override the tools and their
747 dnl options. The configure script is oriented toward identifying the host
748 dnl compiler, etc., but we need a build compiler to generate parts of the
751 dnl $1 = default for $CPPFLAGS
752 dnl $2 = default for $LIBS
753 AC_DEFUN([CF_BUILD_CC],[
754 CF_ACVERSION_CHECK(2.52,,
755 [AC_REQUIRE([CF_PROG_EXT])])
756 if test "$cross_compiling" = yes ; then
758 # defaults that we might want to override
759 : ${BUILD_CFLAGS:=''}
760 : ${BUILD_CPPFLAGS:='ifelse([$1],,,[$1])'}
761 : ${BUILD_LDFLAGS:=''}
762 : ${BUILD_LIBS:='ifelse([$2],,,[$2])'}
763 : ${BUILD_EXEEXT:='$x'}
764 : ${BUILD_OBJEXT:='o'}
766 AC_ARG_WITH(build-cc,
767 [ --with-build-cc=XXX the build C compiler ($BUILD_CC)],
768 [BUILD_CC="$withval"],
769 [AC_CHECK_PROGS(BUILD_CC, [gcc clang c99 c89 cc cl],none)])
770 AC_MSG_CHECKING(for native build C compiler)
771 AC_MSG_RESULT($BUILD_CC)
773 AC_MSG_CHECKING(for native build C preprocessor)
774 AC_ARG_WITH(build-cpp,
775 [ --with-build-cpp=XXX the build C preprocessor ($BUILD_CPP)],
776 [BUILD_CPP="$withval"],
777 [BUILD_CPP='${BUILD_CC} -E'])
778 AC_MSG_RESULT($BUILD_CPP)
780 AC_MSG_CHECKING(for native build C flags)
781 AC_ARG_WITH(build-cflags,
782 [ --with-build-cflags=XXX the build C compiler-flags ($BUILD_CFLAGS)],
783 [BUILD_CFLAGS="$withval"])
784 AC_MSG_RESULT($BUILD_CFLAGS)
786 AC_MSG_CHECKING(for native build C preprocessor-flags)
787 AC_ARG_WITH(build-cppflags,
788 [ --with-build-cppflags=XXX the build C preprocessor-flags ($BUILD_CPPFLAGS)],
789 [BUILD_CPPFLAGS="$withval"])
790 AC_MSG_RESULT($BUILD_CPPFLAGS)
792 AC_MSG_CHECKING(for native build linker-flags)
793 AC_ARG_WITH(build-ldflags,
794 [ --with-build-ldflags=XXX the build linker-flags ($BUILD_LDFLAGS)],
795 [BUILD_LDFLAGS="$withval"])
796 AC_MSG_RESULT($BUILD_LDFLAGS)
798 AC_MSG_CHECKING(for native build linker-libraries)
799 AC_ARG_WITH(build-libs,
800 [ --with-build-libs=XXX the build libraries (${BUILD_LIBS})],
801 [BUILD_LIBS="$withval"])
802 AC_MSG_RESULT($BUILD_LIBS)
804 # this assumes we're on Unix.
808 : ${BUILD_CC:='${CC}'}
810 AC_MSG_CHECKING(if the build-compiler "$BUILD_CC" works)
812 cf_save_crossed=$cross_compiling
813 cf_save_ac_link=$ac_link
815 cf_build_cppflags=$BUILD_CPPFLAGS
816 test "$cf_build_cppflags" = "#" && cf_build_cppflags=
817 ac_link='$BUILD_CC -o "conftest$ac_exeext" $BUILD_CFLAGS $cf_build_cppflags $BUILD_LDFLAGS "conftest.$ac_ext" $BUILD_LIBS >&AS_MESSAGE_LOG_FD'
819 AC_TRY_RUN([#include <stdio.h>
820 int main(int argc, char *argv[])
822 ${cf_cv_main_return:-return}(argc < 0 || argv == 0 || argv[0] == 0);
827 cf_ok_build_cc=unknown)
829 cross_compiling=$cf_save_crossed
830 ac_link=$cf_save_ac_link
832 AC_MSG_RESULT($cf_ok_build_cc)
834 if test "$cf_ok_build_cc" != yes
836 AC_MSG_ERROR([Cross-build requires two compilers.
837 Use --with-build-cc to specify the native compiler.])
841 : ${BUILD_CC:='${CC}'}
842 : ${BUILD_CPP:='${CPP}'}
843 : ${BUILD_CFLAGS:='${CFLAGS}'}
844 : ${BUILD_CPPFLAGS:='${CPPFLAGS}'}
845 : ${BUILD_LDFLAGS:='${LDFLAGS}'}
846 : ${BUILD_LIBS:='${LIBS}'}
847 : ${BUILD_EXEEXT:='$x'}
848 : ${BUILD_OBJEXT:='o'}
853 AC_SUBST(BUILD_CFLAGS)
854 AC_SUBST(BUILD_CPPFLAGS)
855 AC_SUBST(BUILD_LDFLAGS)
857 AC_SUBST(BUILD_EXEEXT)
858 AC_SUBST(BUILD_OBJEXT)
860 dnl ---------------------------------------------------------------------------
861 dnl CF_C11_NORETURN version: 4 updated: 2023/02/18 17:41:25
863 AC_DEFUN([CF_C11_NORETURN],
865 AC_MSG_CHECKING(if you want to use C11 _Noreturn feature)
866 CF_ARG_ENABLE(stdnoreturn,
867 [ --enable-stdnoreturn enable C11 _Noreturn feature for diagnostics],
868 [enable_stdnoreturn=yes],
869 [enable_stdnoreturn=no])
870 AC_MSG_RESULT($enable_stdnoreturn)
872 if test $enable_stdnoreturn = yes; then
873 AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
876 #include <stdnoreturn.h>
877 static _Noreturn void giveup(void) { exit(0); }
879 [if (feof(stdin)) giveup()],
880 cf_cv_c11_noreturn=yes,
881 cf_cv_c11_noreturn=no)
884 cf_cv_c11_noreturn=no,
887 if test "$cf_cv_c11_noreturn" = yes; then
888 AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working])
889 AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported])
895 AC_SUBST(HAVE_STDNORETURN_H)
896 AC_SUBST(STDC_NORETURN)
898 dnl ---------------------------------------------------------------------------
899 dnl CF_CC_ENV_FLAGS version: 11 updated: 2023/02/20 11:15:46
901 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
902 dnl into CC. This will not help with broken scripts that wrap the compiler
903 dnl with options, but eliminates a more common category of user confusion.
905 dnl In particular, it addresses the problem of being able to run the C
906 dnl preprocessor in a consistent manner.
908 dnl Caveat: this also disallows blanks in the pathname for the compiler, but
909 dnl the nuisance of having inconsistent settings for compiler and preprocessor
910 dnl outweighs that limitation.
911 AC_DEFUN([CF_CC_ENV_FLAGS],
913 # This should have been defined by AC_PROG_CC
916 AC_MSG_CHECKING(\$CFLAGS variable)
919 AC_MSG_RESULT(broken)
920 AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
923 for cf_arg in $cf_flags
925 CF_ADD_CFLAGS($cf_arg)
933 AC_MSG_CHECKING(\$CC variable)
936 AC_MSG_RESULT(broken)
937 AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
939 cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
940 cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
942 for cf_arg in $cf_flags
946 CF_ADD_CFLAGS($cf_arg)
953 CF_VERBOSE(resulting CC: '$CC')
954 CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
955 CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
962 dnl ---------------------------------------------------------------------------
963 dnl CF_CFG_DEFAULTS version: 16 updated: 2021/01/04 19:33:05
965 dnl Determine the default configuration into which we'll install ncurses. This
966 dnl can be overridden by the user's command-line options. There's two items to
968 dnl 1. the prefix (e.g., /usr)
969 dnl 2. the header files (e.g., /usr/include/ncurses)
970 dnl We'll look for a previous installation of ncurses and use the same defaults.
972 dnl We don't use AC_PREFIX_DEFAULT, because it gets evaluated too soon, and
973 dnl we don't use AC_PREFIX_PROGRAM, because we cannot distinguish ncurses's
974 dnl programs from a vendor's.
975 AC_DEFUN([CF_CFG_DEFAULTS],
976 [AC_REQUIRE([AC_PROG_FGREP])dnl
978 AC_MSG_CHECKING(for prefix)
979 if test "x$prefix" = "xNONE" ; then
980 case "$cf_cv_system_name" in
981 # non-vendor systems don't have a conflict
982 (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
985 (*) prefix=$ac_default_prefix
989 AC_MSG_RESULT($prefix)
991 if test "x$prefix" = "xNONE" ; then
992 AC_MSG_CHECKING(for default include-directory)
993 test -n "$verbose" && echo 1>&AC_FD_MSG
996 "$includedir/ncurses" \
998 "$prefix/include/ncurses" \
1000 /usr/local/include/ncurses \
1002 /usr/include/ncurses
1004 cf_dir=`eval echo "$cf_symbol"`
1005 if test -f "$cf_dir/curses.h" ; then
1006 if ( ${FGREP-fgrep} NCURSES_VERSION "$cf_dir/curses.h" >/dev/null 2>&1 ) ; then
1007 includedir="$cf_symbol"
1008 test -n "$verbose" && echo $ECHO_N " found " 1>&AC_FD_MSG
1012 test -n "$verbose" && echo " tested $cf_dir" 1>&AC_FD_MSG
1014 AC_MSG_RESULT($includedir)
1017 dnl ---------------------------------------------------------------------------
1018 dnl CF_CGETENT version: 7 updated: 2023/02/18 17:41:25
1020 dnl Check if the terminal-capability database functions are available. If not,
1021 dnl ncurses has a much-reduced version.
1022 AC_DEFUN([CF_CGETENT],[
1023 AC_CACHE_CHECK(for terminal-capability database functions,cf_cv_cgetent,[
1025 $ac_includes_default],[
1028 char *db_array = temp;
1029 cgetent(&buf, &db_array, "vt100");
1030 cgetcap(buf, "tc", '=');
1031 cgetmatch(buf, "tc");
1033 [cf_cv_cgetent=yes],
1037 if test "$cf_cv_cgetent" = yes
1039 AC_DEFINE(HAVE_BSD_CGETENT,1,[Define to 1 if we have BSD cgetent])
1040 AC_CACHE_CHECK(if cgetent uses const parameter,cf_cv_cgetent_const,[
1042 #pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers"
1043 $ac_includes_default],[
1046 #ifndef _NETBSD_SOURCE /* given, since April 2004 in stdlib.h */
1047 const char *db_array = temp;
1048 cgetent(&buf, &db_array, "vt100");
1050 cgetcap(buf, "tc", '=');
1051 cgetmatch(buf, "tc");
1053 [cf_cv_cgetent_const=yes],
1054 [cf_cv_cgetent_const=no])
1056 if test "$cf_cv_cgetent_const" = yes
1058 AC_DEFINE_UNQUOTED(CGETENT_CONST,const,[Define to const if needed for some BSD cgetent variations])
1062 dnl ---------------------------------------------------------------------------
1063 dnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15
1065 dnl Check if we're accidentally using a cache from a different machine.
1066 dnl Derive the system name, as a check for reusing the autoconf cache.
1068 dnl If we've packaged config.guess and config.sub, run that (since it does a
1069 dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow
1070 dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
1071 dnl which is useful in cross-compiles.
1073 dnl Note: we would use $ac_config_sub, but that is one of the places where
1074 dnl autoconf 2.5x broke compatibility with autoconf 2.13
1075 AC_DEFUN([CF_CHECK_CACHE],
1077 if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then
1078 ifelse([$1],,[AC_CANONICAL_HOST],[$1])
1079 system_name="$host_os"
1081 system_name="`(uname -s -r) 2>/dev/null`"
1082 if test -z "$system_name" ; then
1083 system_name="`(hostname) 2>/dev/null`"
1086 test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
1087 AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
1089 test -z "$system_name" && system_name="$cf_cv_system_name"
1090 test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
1092 if test ".$system_name" != ".$cf_cv_system_name" ; then
1093 AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
1094 AC_MSG_ERROR("Please remove config.cache and try again.")
1097 dnl ---------------------------------------------------------------------------
1098 dnl CF_CHECK_ENVIRON version: 5 updated: 2023/02/18 17:41:25
1099 dnl ----------------
1100 dnl Check for data that is usually declared in <unistd.h>, e.g., the 'environ'
1101 dnl variable. Define a DECL_xxx symbol if we must declare it ourselves.
1103 dnl $1 = the name to check
1104 dnl $2 = the assumed type
1105 AC_DEFUN([CF_CHECK_ENVIRON],
1107 AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
1109 $ac_includes_default],
1110 ifelse([$2],,void*,[$2]) x = (ifelse([$2],,void*,[$2])) $1; (void)x,
1115 if test "$cf_cv_dcl_$1" = no ; then
1116 CF_UPPER(cf_result,decl_$1)
1117 AC_DEFINE_UNQUOTED($cf_result)
1120 # It's possible (for near-UNIX clones) that the data doesn't exist
1121 CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2]))
1123 dnl ---------------------------------------------------------------------------
1124 dnl CF_CHECK_ERRNO version: 14 updated: 2023/02/18 17:41:25
1126 dnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g.,
1127 dnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it
1130 dnl $1 = the name to check
1131 dnl $2 = the assumed type
1132 AC_DEFUN([CF_CHECK_ERRNO],
1134 AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
1136 $ac_includes_default
1137 #include <errno.h> ],
1138 ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1; (void)x,
1143 if test "$cf_cv_dcl_$1" = no ; then
1144 CF_UPPER(cf_result,decl_$1)
1145 AC_DEFINE_UNQUOTED($cf_result)
1148 # It's possible (for near-UNIX clones) that the data doesn't exist
1149 CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2]))
1151 dnl ---------------------------------------------------------------------------
1152 dnl CF_CHECK_EXTERN_DATA version: 5 updated: 2021/09/04 06:35:04
1153 dnl --------------------
1154 dnl Check for existence of external data in the current set of libraries. If
1155 dnl we can modify it, it is real enough.
1156 dnl $1 = the name to check
1158 AC_DEFUN([CF_CHECK_EXTERN_DATA],
1160 AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[
1166 [cf_cv_have_$1=yes],
1170 if test "$cf_cv_have_$1" = yes ; then
1171 CF_UPPER(cf_result,have_$1)
1172 AC_DEFINE_UNQUOTED($cf_result)
1176 dnl ---------------------------------------------------------------------------
1177 dnl CF_CHECK_FVISIBILITY version: 2 updated: 2020/04/04 16:16:13
1178 dnl --------------------
1179 dnl Check whether the compiler understands -fvisibility=hidden
1182 dnl $2 = compiler-flags variable name
1183 dnl $3 = cache variable to set
1184 AC_DEFUN([CF_CHECK_FVISIBILITY],[
1185 AC_CACHE_CHECK(if $1 -fvisibility=hidden option works,$3,[
1186 cf_save_cflags="[$]$2"
1187 $2="[$]$2 -fvisibility=hidden"
1189 __attribute__ ((visibility("default"))) int somefunc() {return 42;}
1191 if (somefunc()) return 1;
1198 dnl ---------------------------------------------------------------------------
1199 dnl CF_CHECK_GETENV version: 3 updated: 2023/01/05 17:47:56
1201 dnl Check if repeated getenv calls return the same pointer, e.g., it does not
1202 dnl discard the previous pointer when returning a new one.
1203 AC_DEFUN([CF_CHECK_GETENV],
1205 AC_REQUIRE([CF_CHECK_ENVIRON])
1206 AC_CHECK_FUNC( getenv, ,, AC_MSG_ERROR(getenv not found) )
1207 AC_CHECK_FUNCS( putenv setenv strdup )
1208 AC_CACHE_CHECK(if getenv returns consistent values,cf_cv_consistent_getenv,[
1210 $ac_includes_default
1212 #if defined(HAVE_ENVIRON) && defined(DECL_ENVIRON) && !defined(environ)
1213 extern char **environ; /* POSIX, but some systems are not... */
1216 #if defined(HAVE_STRDUP)
1217 #define str_alloc(s) strdup(s)
1219 #define str_alloc(s) strcpy(malloc(strlen(s) + 1, s))
1222 static void set_value(const char *name, const char *value)
1224 #if defined(HAVE_SETENV)
1225 setenv(name, value, 1);
1226 #elif defined(HAVE_PUTENV)
1228 sprintf(buffer, "%s=%s", name, value);
1229 putenv(str_alloc(buffer));
1231 #error neither putenv/setenv found
1237 size_t numenv, limit, j;
1242 for (numenv = 0; environ[numenv]; ++numenv) ;
1243 limit = numenv + 10;
1244 mynames = (char **) calloc(limit + 1, sizeof(char *));
1245 myvalues = (char **) calloc(limit + 1, sizeof(char *));
1246 mypointer = (char **) calloc(limit + 1, sizeof(char *));
1247 #if defined(HAVE_ENVIRON)
1248 for (j = 0; environ[j]; ++j) {
1249 mynames[j] = str_alloc(environ[j]);
1250 equals = strchr(mynames[j], '=');
1253 myvalues[j] = str_alloc(equals);
1255 myvalues[j] = str_alloc("");
1259 for (j = numenv; j < limit; ++j) {
1267 sprintf(name, "TERM%lu", (unsigned long) k);
1268 for (jk = 0; jk < j; ++jk) {
1269 if (!strcmp(name, mynames[jk])) {
1276 sprintf(value, "%lu:%p", (unsigned long) k, &mynames[j]);
1277 set_value(name, value);
1278 mynames[j] = str_alloc(name);
1279 myvalues[j] = str_alloc(value);
1281 for (pass = 0; pass < 3; ++pass) {
1282 for (j = 0; j < limit; ++j) {
1283 char *value = getenv(mynames[j]);
1286 fprintf(stderr, "getenv returned null for %s\\n", mynames[j]);
1287 ${cf_cv_main_return:-return}(1);
1288 } else if (value != mypointer[j]) {
1289 fprintf(stderr, "getenv returned different pointer for %s\\n", mynames[j]);
1290 ${cf_cv_main_return:-return}(1);
1291 } else if (strcmp(value, myvalues[j])) {
1292 fprintf(stderr, "getenv returned different value for %s\\n", mynames[j]);
1293 ${cf_cv_main_return:-return}(1);
1297 mypointer[j] = value;
1298 for (k = 0; k < j; ++k) {
1299 if (mypointer[j] == mypointer[k]) {
1300 fprintf(stderr, "getenv returned same pointer for %s and %s\\n", mynames[j], mynames[k]);
1301 ${cf_cv_main_return:-return}(1);
1307 ${cf_cv_main_return:-return}(0);
1310 [cf_cv_consistent_getenv=yes],
1311 [cf_cv_consistent_getenv=no],
1312 [cf_cv_consistent_getenv=unknown])
1315 if test "x$cf_cv_consistent_getenv" = xno
1317 AC_DEFINE(HAVE_CONSISTENT_GETENV,1,[Define to 1 if getenv repeatably returns the same value for a given name])
1320 dnl ---------------------------------------------------------------------------
1321 dnl CF_CHECK_GNAT_VERSION version: 4 updated: 2021/01/01 13:31:04
1322 dnl ---------------------
1323 AC_DEFUN([CF_CHECK_GNAT_VERSION],
1325 AC_REQUIRE([CF_GNAT_VERSION])
1326 case "$cf_cv_gnat_version" in
1327 (3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|[[1-9]][[0-9]].[[0-9]]*|20[[0-9]][[0-9]])
1328 cf_cv_prog_gnat_correct=yes
1331 AC_MSG_WARN(Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding.)
1332 cf_cv_prog_gnat_correct=no
1336 dnl ---------------------------------------------------------------------------
1337 dnl CF_CHECK_GPM_WGETCH version: 6 updated: 2021/01/04 18:48:01
1338 dnl -------------------
1339 dnl Check if GPM is already linked with curses. If so - and if the linkage
1340 dnl is not "weak" - warn about this because it can create problems linking
1341 dnl applications with ncurses.
1342 AC_DEFUN([CF_CHECK_GPM_WGETCH],[
1343 AC_REQUIRE([AC_PROG_EGREP])dnl
1345 AC_CHECK_LIB(gpm,Gpm_Wgetch,[
1347 AC_CACHE_CHECK(if GPM is weakly bound to curses library, cf_cv_check_gpm_wgetch,[
1348 cf_cv_check_gpm_wgetch=unknown
1349 if test "$cross_compiling" != yes ; then
1351 cat >conftest.$ac_ext <<CF_EOF
1356 ${cf_cv_main_return:-return}(0);
1360 cf_save_LIBS="$LIBS"
1361 # This only works if we can look at the symbol table. If a shared
1362 # library is stripped for install, we cannot use that. So we're forced
1363 # to rely on the static library, noting that some packagers may not
1365 LIBS="-static -lgpm -dynamic $LIBS"
1366 if AC_TRY_EVAL(ac_compile) ; then
1367 if AC_TRY_EVAL(ac_link) ; then
1368 cf_cv_check_gpm_wgetch="`nm \"conftest$ac_exeext\" | ${EGREP-egrep} '\<wgetch\>' | ${EGREP-egrep} '\<[[vVwW]]\>'`"
1369 test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes
1370 test -z "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=no
1374 LIBS="$cf_save_LIBS"
1378 if test "$cf_cv_check_gpm_wgetch" != yes ; then
1379 AC_MSG_WARN(GPM library is already linked with curses - read the FAQ)
1382 dnl ---------------------------------------------------------------------------
1383 dnl CF_CHECK_LIBSSP version: 1 updated: 2021/10/30 10:40:19
1385 dnl Check if libssp is needed, e.g., to work around misconfigured libraries
1386 dnl used in cross-compiling to MinGW.
1387 AC_DEFUN([CF_CHECK_LIBSSP],[
1388 AC_CACHE_CHECK(if ssp library is needed,cf_cv_need_libssp,[
1390 #include <sys/types.h>
1393 DIR *dp = opendir(".");
1394 ],cf_cv_need_libssp=no,[
1395 cf_save_LIBS="$LIBS"
1398 #include <sys/types.h>
1401 DIR *dp = opendir(".");
1402 ],cf_cv_need_libssp=yes,
1403 cf_cv_need_libssp=maybe)
1404 LIBS="$cf_save_LIBS"
1408 if test "x$cf_cv_need_libssp" = xyes
1413 dnl ---------------------------------------------------------------------------
1414 dnl CF_CHECK_LIBTOOL_VERSION version: 2 updated: 2021/05/01 16:24:34
1415 dnl ------------------------
1416 dnl Show the version of libtool
1418 dnl Save the version in a cache variable - this is not entirely a good thing,
1419 dnl but the version string from libtool is very ugly, and for bug reports it
1420 dnl might be useful to have the original string.
1422 dnl There is an imitation in OpenBSD, which has no apparent use other than to
1423 dnl deny that it is GNU libtool. Just ignore it.
1424 AC_DEFUN([CF_CHECK_LIBTOOL_VERSION],[
1425 if test -n "$LIBTOOL" && test "$LIBTOOL" != none
1427 AC_MSG_CHECKING(version of $LIBTOOL)
1429 AC_MSG_RESULT($cf_cv_libtool_version)
1430 if test -n "$cf_cv_libtool_version"
1432 cf_check_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' -e 's,[[()]],...,g' -e 's,[[ ]],-,g' -e '2,$d'`
1433 case "x$cf_check_libtool_version" in
1434 (*...GNU-libtool...*)
1437 AC_MSG_ERROR(This is not GNU libtool)
1441 AC_MSG_ERROR(No version found for $LIBTOOL)
1444 AC_MSG_ERROR(GNU libtool has not been found)
1447 dnl ---------------------------------------------------------------------------
1448 dnl CF_CHECK_WCHAR_H version: 4 updated: 2023/02/18 17:41:25
1449 dnl ----------------
1450 dnl Check if wchar.h can be used, i.e., without defining _XOPEN_SOURCE_EXTENDED
1451 AC_DEFUN([CF_CHECK_WCHAR_H],[
1456 AC_CACHE_CHECK(if wchar.h can be used as is,cf_cv_wchar_h_okay,[
1459 $ac_includes_default
1463 #ifdef HAVE_WCTYPE_H
1468 int bar = iswpunct(foo)],
1469 [cf_cv_wchar_h_okay=yes],
1470 [cf_cv_wchar_h_okay=no])])
1472 if test "$cf_cv_wchar_h_okay" = no
1474 CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED)
1477 dnl ---------------------------------------------------------------------------
1478 dnl CF_CHECK_WCWIDTH_GRAPHICS version: 3 updated: 2023/01/05 18:01:30
1479 dnl -------------------------
1480 dnl Most "modern" terminal emulators are based to some degree on VT100, and
1481 dnl should support line-drawing. Even with Unicode. There is a problem.
1483 dnl While most of the VT100 graphics characters were incorporated into Unicode,
1484 dnl all of those were combined into a page of useful graphics characters.
1486 dnl So far, so good.
1488 dnl However, while they are useful, there are other considerations. CJK
1489 dnl is (because of poor device resolution) often rendered as double-width
1490 dnl characters. So... for these generally-useful characters, what should
1491 dnl be the width (to make them consistent with adjacent characters)?
1493 dnl The obvious choice would have been to make this locale-dependent, and use
1494 dnl wcwidth() to tell applications what the actual width is. That was too
1495 dnl obvious. Instead, we have a slew of "ambiguous-width" characters.
1497 dnl http://www.unicode.org/reports/tr11/tr11-29.html
1498 dnl http://www.cl.cam.ac.uk/~mgk25/ucs/scw-proposal.html
1500 dnl The EastAsianWidth-6.2.0.txt file from the Unicode organization lists
1501 dnl more than 22,000 characters, with 1281 of those as ambiguous-width. For
1502 dnl instance, it lists half (44/96) of the Latin-1 characters as
1503 dnl ambiguous-width. Also, all of the box-characters at 0x2500 are ambiguous.
1505 dnl What this means for the implementor is that on some systems wcwidth() can
1506 dnl give bad advice. On Solaris, some of the ambiguous widths are returned as
1507 dnl 1 (the Latin-1 characters), while others are returned as 2 (line-drawing
1508 dnl characters). These do not necessarily match the behavior of the terminal
1509 dnl emulator. xterm, for instance, does an optional startup check to find if
1510 dnl this problem (or similar) exists with the system's locale tables, rejecting
1511 dnl them if they are too unreliable.
1512 AC_DEFUN([CF_CHECK_WCWIDTH_GRAPHICS],[
1513 AC_CACHE_CHECK(if wcwidth agrees graphics are single-width, cf_cv_wcwidth_graphics,[
1514 cat >conftest.in <<CF_EOF
1516 0x250c upper left corner
1517 0x2514 lower left corner
1518 0x2510 upper right corner
1519 0x2518 lower right corner
1520 0x251c tee pointing left
1521 0x2524 tee pointing right
1522 0x2534 tee pointing up
1523 0x252c tee pointing down
1524 0x2500 horizontal line
1525 0x2502 vertical line
1526 0x253c large plus or crossover
1530 0x2592 checker board (stipple)
1531 0x00b0 degree symbol
1534 - Teletype 5410v1 symbols
1535 0x2190 arrow pointing left
1536 0x2192 arrow pointing right
1537 0x2193 arrow pointing down
1538 0x2191 arrow pointing up
1539 0x2592 board of squares
1540 0x2603 lantern symbol
1541 0x25ae solid square block
1542 - these defaults were invented for ncurses
1545 0x2264 less-than-or-equal-to
1546 0x2265 greater-than-or-equal-to
1549 0x00a3 pound-sterling symbol
1550 - thick-line-drawing
1551 0x250f upper left corner
1552 0x2517 lower left corner
1553 0x2513 upper right corner
1554 0x251b lower right corner
1555 0x2523 tee pointing left
1556 0x252b tee pointing right
1557 0x253b tee pointing up
1558 0x2533 tee pointing down
1559 0x2501 horizontal line
1560 0x2503 vertical line
1561 0x254b large plus or crossover
1562 - double-line-drawing
1563 0x2554 upper left corner
1564 0x255a lower left corner
1565 0x2557 upper right corner
1566 0x255d lower right corner
1567 0x2563 tee pointing left
1568 0x2560 tee pointing right
1569 0x2569 tee pointing up
1570 0x2566 tee pointing down
1571 0x2550 horizontal line
1572 0x2551 vertical line
1573 0x256c large plus or crossover
1576 $ac_includes_default
1588 char buffer[MY_LEN + 1];
1589 char notes[MY_LEN + 1];
1593 if (setlocale(LC_ALL, "en_US.UTF8") ||
1594 setlocale(LC_ALL, "en_US.UTF-8") ||
1595 setlocale(LC_ALL, "en_US.utf8") ||
1596 setlocale(LC_ALL, "en_US.utf-8")) {
1597 if ((fp = fopen("conftest.in", "r")) != 0) {
1598 while (fgets(buffer, MY_LEN, fp) != 0) {
1599 if (*buffer == '-') {
1600 fprintf(stderr, "\\t%s", buffer);
1601 } else if (sscanf(buffer, "%x %s", &value, notes) == 2) {
1603 if (wcwidth(value) == 1)
1605 fprintf(stderr, "%d\\t%s", wcwidth(value), buffer);
1607 fprintf(stderr, "?\\t%s", buffer);
1612 fprintf(stderr, "%d/%d passed wcwidth/graphics check\\n", passed, totals);
1613 return (totals == passed) ? 0 : 1;
1616 [cf_cv_wcwidth_graphics=yes],
1617 [cf_cv_wcwidth_graphics=no],
1618 [cf_cv_wcwidth_graphics=unknown])
1621 dnl ---------------------------------------------------------------------------
1622 dnl CF_CLANG_COMPILER version: 9 updated: 2023/02/18 17:41:25
1623 dnl -----------------
1624 dnl Check if the given compiler is really clang. clang's C driver defines
1625 dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
1626 dnl not ignore some gcc options.
1628 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
1629 dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from
1630 dnl the wrappers for gcc and g++ warnings.
1632 dnl $1 = GCC (default) or GXX
1633 dnl $2 = CLANG_COMPILER (default)
1634 dnl $3 = CFLAGS (default) or CXXFLAGS
1635 AC_DEFUN([CF_CLANG_COMPILER],[
1636 ifelse([$2],,CLANG_COMPILER,[$2])=no
1638 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
1639 AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
1640 cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
1644 #error __clang__ is not defined
1646 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
1648 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
1649 AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
1654 if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
1656 (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]])
1657 AC_MSG_WARN(replacing broken compiler alias $CC)
1658 CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
1663 AC_MSG_CHECKING(version of $CC)
1664 CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
1665 test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
1666 AC_MSG_RESULT($CLANG_VERSION)
1668 for cf_clang_opt in \
1669 -Qunused-arguments \
1670 -Wno-error=implicit-function-declaration
1672 AC_MSG_CHECKING(if option $cf_clang_opt works)
1673 cf_save_CFLAGS="$CFLAGS"
1674 CFLAGS="$CFLAGS $cf_clang_opt"
1676 #include <stdio.h>],[
1677 printf("hello!\\n");],[
1678 cf_clang_optok=yes],[
1680 AC_MSG_RESULT($cf_clang_optok)
1681 CFLAGS="$cf_save_CFLAGS"
1682 if test "$cf_clang_optok" = yes; then
1683 CF_VERBOSE(adding option $cf_clang_opt)
1684 CF_APPEND_TEXT(CFLAGS,$cf_clang_opt)
1689 dnl ---------------------------------------------------------------------------
1690 dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
1691 dnl -----------------
1692 dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
1693 dnl character-strings.
1695 dnl It is ambiguous because the specification accommodated the pre-ANSI
1696 dnl compilers bundled by more than one vendor in lieu of providing a standard C
1697 dnl compiler other than by costly add-ons. Because of this, the specification
1698 dnl did not take into account the use of const for telling the compiler that
1699 dnl string literals would be in readonly memory.
1701 dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
1702 dnl let the compiler decide how to represent Xt's strings which were #define'd.
1703 dnl That does not solve the problem of using the block of Xt's strings which
1704 dnl are compiled into the library (and is less efficient than one might want).
1706 dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
1707 dnl when compiling the library and compiling using the library, to tell the
1708 dnl compiler that String is const.
1709 AC_DEFUN([CF_CONST_X_STRING],
1711 AC_REQUIRE([AC_PATH_XTRA])
1713 CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
1718 #include <X11/Intrinsic.h>
1720 [String foo = malloc(1); free((void*)foo)],[
1722 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
1725 #define _CONST_X_STRING /* X11R7.8 (perhaps) */
1726 #undef XTSTRINGDEFINES /* X11R5 and later */
1728 #include <X11/Intrinsic.h>
1729 ],[String foo = malloc(1); *foo = 0],[
1730 cf_cv_const_x_string=no
1732 cf_cv_const_x_string=yes
1736 CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
1738 case "$cf_cv_const_x_string" in
1740 CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
1743 CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
1749 dnl ---------------------------------------------------------------------------
1750 dnl CF_CPP_OVERRIDE version: 1 updated: 2022/08/20 16:07:10
1752 dnl Check if the C++ compiler accepts the override keyword. This is a C++-11
1754 AC_DEFUN([CF_CPP_OVERRIDE],
1756 if test -n "$CXX"; then
1757 AC_CACHE_CHECK(if $CXX accepts override keyword,cf_cv_cpp_override,[
1765 virtual int foo(float x) = 0;
1769 class derived: public base
1772 int foo(float x) override { return x != 0.0 ? 1 : 0; }
1777 [cf_cv_cpp_override=yes],
1778 [cf_cv_cpp_override=no],
1779 [cf_cv_cpp_override=unknown])
1783 test "$cf_cv_cpp_override" = yes && AC_DEFINE(CPP_HAS_OVERRIDE,1,[Define to 1 if C++ has override keyword])
1785 dnl ---------------------------------------------------------------------------
1786 dnl CF_CPP_PARAM_INIT version: 7 updated: 2017/01/21 11:06:25
1787 dnl -----------------
1788 dnl Check if the C++ compiler accepts duplicate parameter initialization. This
1789 dnl is a late feature for the standard and is not in some recent compilers
1791 AC_DEFUN([CF_CPP_PARAM_INIT],
1793 if test -n "$CXX"; then
1794 AC_CACHE_CHECK(if $CXX accepts parameter initialization,cf_cv_cpp_param_init,[
1806 TEST::TEST(int x = 1) // some compilers do not like second initializer
1812 [cf_cv_cpp_param_init=yes],
1813 [cf_cv_cpp_param_init=no],
1814 [cf_cv_cpp_param_init=unknown])
1818 test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT,1,[Define to 1 if C++ has parameter initialization])
1820 dnl ---------------------------------------------------------------------------
1821 dnl CF_CPP_STATIC_CAST version: 3 updated: 2013/04/13 18:03:21
1822 dnl ------------------
1823 dnl Check if the C++ compiler accepts static_cast in generics. This appears to
1824 dnl not be supported in g++ before 3.0
1825 AC_DEFUN([CF_CPP_STATIC_CAST],
1827 if test -n "$CXX"; then
1829 AC_CACHE_CHECK(if $CXX accepts static_cast,cf_cv_cpp_static_cast,[
1837 NCursesPanel(int nlines,
1847 template<class T> class NCursesUserPanel : public NCursesPanel
1850 NCursesUserPanel (int nlines,
1854 const T* p_UserData = static_cast<T*>(0))
1855 : NCursesPanel (nlines, ncols, begin_y, begin_x)
1858 NCursesUserPanel(const T* p_UserData = static_cast<T*>(0)) : NCursesPanel()
1862 virtual ~NCursesUserPanel() {};
1865 const char* p_UserData = static_cast<char*>(0)],
1866 [cf_cv_cpp_static_cast=yes],
1867 [cf_cv_cpp_static_cast=no])
1874 test "$cf_cv_cpp_static_cast" = yes && AC_DEFINE(CPP_HAS_STATIC_CAST,1,[Define to 1 if C++ has static_cast])
1876 dnl ---------------------------------------------------------------------------
1877 dnl CF_CXX_AR_FLAGS version: 3 updated: 2021/01/01 13:31:04
1879 dnl Setup special archiver flags for given compilers.
1880 AC_DEFUN([CF_CXX_AR_FLAGS],[
1882 CXX_ARFLAGS='$(ARFLAGS)'
1883 case "$cf_cv_system_name" in
1885 if test "$GXX" != yes ; then
1887 CXX_ARFLAGS='-ar -o'
1891 CXXLDFLAGS="-u main"
1894 if test "$GXX" != yes ; then
1896 CXX_ARFLAGS='-xar -o'
1900 AC_SUBST(CXXLDFLAGS)
1902 AC_SUBST(CXX_ARFLAGS)
1904 dnl ---------------------------------------------------------------------------
1905 dnl CF_CXX_IOSTREAM_NAMESPACE version: 2 updated: 2012/10/06 17:56:13
1906 dnl -------------------------
1907 dnl For c++, check if iostream uses "std::" namespace.
1908 AC_DEFUN([CF_CXX_IOSTREAM_NAMESPACE],[
1909 AC_CHECK_HEADERS(iostream)
1910 if test x"$ac_cv_header_iostream" = xyes ; then
1911 AC_MSG_CHECKING(if iostream uses std-namespace)
1916 cerr << "testing" << endl;
1917 ],[cf_iostream_namespace=yes],[cf_iostream_namespace=no])
1918 AC_MSG_RESULT($cf_iostream_namespace)
1919 if test "$cf_iostream_namespace" = yes ; then
1920 AC_DEFINE(IOSTREAM_NAMESPACE,1,[Define to 1 if C++ has namespace iostream])
1924 dnl ---------------------------------------------------------------------------
1925 dnl CF_C_INLINE version: 6 updated: 2019/09/07 13:38:36
1927 dnl Check if the C compiler supports "inline".
1928 dnl $1 is the name of a shell variable to set if inline is supported
1929 dnl $2 is the threshold for gcc 4.x's option controlling maximum inline size
1930 AC_DEFUN([CF_C_INLINE],[
1931 AC_REQUIRE([CF_GCC_VERSION])
1934 if test "$ac_cv_c_inline" != no ; then
1936 if test "$INTEL_COMPILER" = yes
1939 elif test "$CLANG_COMPILER" = yes
1942 elif test "$GCC" = yes
1944 AC_CACHE_CHECK(if $CC supports options to tune inlining,cf_cv_gcc_inline,[
1945 cf_save_CFLAGS=$CFLAGS
1946 CFLAGS="$CFLAGS --param max-inline-insns-single=$2"
1947 AC_TRY_COMPILE([inline int foo(void) { return 1; }],
1948 [${cf_cv_main_return:-return} foo()],
1949 [cf_cv_gcc_inline=yes],
1950 [cf_cv_gcc_inline=no])
1951 CFLAGS=$cf_save_CFLAGS
1953 if test "$cf_cv_gcc_inline" = yes ; then
1954 CF_ADD_CFLAGS([--param max-inline-insns-single=$2])
1960 dnl ---------------------------------------------------------------------------
1961 dnl CF_DIRNAME version: 5 updated: 2020/12/31 20:19:42
1963 dnl "dirname" is not portable, so we fake it with a shell script.
1964 AC_DEFUN([CF_DIRNAME],[$1=`echo "$2" | sed -e 's%/[[^/]]*$%%'`])dnl
1965 dnl ---------------------------------------------------------------------------
1966 dnl CF_DIRS_TO_MAKE version: 4 updated: 2021/01/01 13:31:04
1968 AC_DEFUN([CF_DIRS_TO_MAKE],
1971 for cf_item in $cf_list_models
1973 CF_OBJ_SUBDIR($cf_item,cf_subdir)
1974 for cf_item2 in $DIRS_TO_MAKE
1976 test "$cf_item2" = "$cf_subdir" && break
1978 test ".$cf_item2" != ".$cf_subdir" && DIRS_TO_MAKE="$DIRS_TO_MAKE $cf_subdir"
1980 for cf_dir in $DIRS_TO_MAKE
1982 test ! -d "$cf_dir" && mkdir "$cf_dir"
1984 AC_SUBST(DIRS_TO_MAKE)
1986 dnl ---------------------------------------------------------------------------
1987 dnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04
1989 dnl You can always use "make -n" to see the actual options, but it is hard to
1990 dnl pick out/analyze warning messages when the compile-line is long.
1993 dnl ECHO_LT - symbol to control if libtool is verbose
1994 dnl ECHO_LD - symbol to prefix "cc -o" lines
1995 dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
1996 dnl SHOW_CC - symbol to put before explicit "cc -c" lines
1997 dnl ECHO_CC - symbol to put before any "cc" line
1999 AC_DEFUN([CF_DISABLE_ECHO],[
2000 AC_MSG_CHECKING(if you want to see long compiling messages)
2001 CF_ARG_DISABLE(echo,
2002 [ --disable-echo do not display "compiling" commands],
2005 ECHO_LD='@echo linking [$]@;'
2006 RULE_CC='@echo compiling [$]<'
2007 SHOW_CC='@echo compiling [$]@'
2016 AC_MSG_RESULT($enableval)
2023 dnl ---------------------------------------------------------------------------
2024 dnl CF_DISABLE_GNAT_PROJECTS version: 1 updated: 2014/06/01 11:34:00
2025 dnl ------------------------
2026 AC_DEFUN([CF_DISABLE_GNAT_PROJECTS],[
2027 AC_MSG_CHECKING(if we want to use GNAT projects)
2028 CF_ARG_DISABLE(gnat-projects,
2029 [ --disable-gnat-projects test: disable GNAT projects even if usable],
2030 [enable_gnat_projects=no],
2031 [enable_gnat_projects=yes])
2032 AC_MSG_RESULT($enable_gnat_projects)
2034 dnl ---------------------------------------------------------------------------
2035 dnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50
2036 dnl ----------------
2037 dnl Combine no-leak checks with the libraries or tools that are used for the
2039 AC_DEFUN([CF_DISABLE_LEAKS],[
2041 AC_REQUIRE([CF_WITH_DMALLOC])
2042 AC_REQUIRE([CF_WITH_DBMALLOC])
2043 AC_REQUIRE([CF_WITH_VALGRIND])
2045 AC_MSG_CHECKING(if you want to perform memory-leak testing)
2046 AC_ARG_ENABLE(leaks,
2047 [ --disable-leaks test: free permanent memory, analyze leaks],
2048 [enable_leaks=$enableval],
2050 dnl with_no_leaks is more readable...
2051 if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi
2052 AC_MSG_RESULT($with_no_leaks)
2054 if test "$enable_leaks" = no ; then
2055 AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
2056 AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
2059 dnl ---------------------------------------------------------------------------
2060 dnl CF_DISABLE_LIBTOOL_VERSION version: 3 updated: 2015/04/17 21:13:04
2061 dnl --------------------------
2062 dnl Check if we should use the libtool 1.5 feature "-version-number" instead of
2063 dnl the older "-version-info" feature. The newer feature allows us to use
2064 dnl version numbering on shared libraries which make them compatible with
2065 dnl various systems.
2066 AC_DEFUN([CF_DISABLE_LIBTOOL_VERSION],
2068 AC_MSG_CHECKING(if libtool -version-number should be used)
2069 CF_ARG_DISABLE(libtool-version,
2070 [ --disable-libtool-version enable to use libtool's incompatible naming scheme],
2071 [cf_libtool_version=no],
2072 [cf_libtool_version=yes])
2073 AC_MSG_RESULT($cf_libtool_version)
2075 if test "$cf_libtool_version" = yes ; then
2076 LIBTOOL_VERSION="-version-number"
2078 LIBTOOL_VERSION="-version-info"
2081 AC_MSG_WARN(VERSION was not set)
2084 ABI_VERSION="$VERSION"
2085 CF_VERBOSE(ABI_VERSION: $ABI_VERSION)
2088 ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'`
2089 CF_VERBOSE(ABI_VERSION: $ABI_VERSION)
2092 AC_MSG_WARN(unexpected VERSION value: $VERSION)
2097 AC_SUBST(ABI_VERSION)
2098 AC_SUBST(LIBTOOL_VERSION)
2100 dnl ---------------------------------------------------------------------------
2101 dnl CF_DISABLE_RPATH_HACK version: 3 updated: 2021/01/05 20:14:44
2102 dnl ---------------------
2103 dnl The rpath-hack makes it simpler to build programs, particularly with the
2104 dnl *BSD ports which may have essential libraries in unusual places. But it
2105 dnl can interfere with building an executable for the base system. Use this
2106 dnl option in that case.
2107 AC_DEFUN([CF_DISABLE_RPATH_HACK],
2109 AC_MSG_CHECKING(if rpath-hack should be disabled)
2110 CF_ARG_DISABLE(rpath-hack,
2111 [ --disable-rpath-hack don't add rpath options for additional libraries],
2112 [enable_rpath_hack=no],
2113 [enable_rpath_hack=yes])
2114 dnl TODO - drop cf_disable_rpath_hack
2115 if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi
2116 AC_MSG_RESULT($cf_disable_rpath_hack)
2118 if test "$enable_rpath_hack" = yes ; then
2122 dnl ---------------------------------------------------------------------------
2123 dnl CF_ENABLE_BROKEN_LINKER version: 2 updated: 2021/01/02 17:09:14
2124 dnl -----------------------
2125 dnl Some linkers cannot reference a data-only object. Cygwin used to be one.
2126 dnl This usually follows CF_LINK_DATAONLY, but is not required in case we need
2127 dnl an unconditional feature.
2128 AC_DEFUN([CF_ENABLE_BROKEN_LINKER],[
2130 AC_MSG_CHECKING(if you want broken-linker support code)
2131 AC_ARG_ENABLE(broken_linker,
2132 [ --enable-broken_linker compile with broken-linker support code],
2133 [with_broken_linker=$enableval],
2134 [with_broken_linker=no])
2135 AC_MSG_RESULT($with_broken_linker)
2137 : "${BROKEN_LINKER:=0}"
2138 if test "x$with_broken_linker" = xyes ; then
2139 AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
2142 AC_SUBST(BROKEN_LINKER)
2144 dnl ---------------------------------------------------------------------------
2145 dnl CF_ENABLE_PC_FILES version: 16 updated: 2021/11/20 12:48:37
2146 dnl ------------------
2147 dnl This is the "--enable-pc-files" option, which is available if there is a
2148 dnl pkg-config configuration on the local machine.
2149 AC_DEFUN([CF_ENABLE_PC_FILES],[
2150 AC_REQUIRE([CF_PKG_CONFIG])
2151 AC_REQUIRE([CF_WITH_PKG_CONFIG_LIBDIR])
2153 if test "x$PKG_CONFIG" != xnone
2155 AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG)
2157 AC_MSG_CHECKING(if we should install .pc files)
2160 AC_ARG_ENABLE(pc-files,
2161 [ --enable-pc-files generate and install .pc files for pkg-config],
2162 [enable_pc_files=$enableval],
2163 [enable_pc_files=no])
2164 AC_MSG_RESULT($enable_pc_files)
2166 if test "x$enable_pc_files" != xno
2169 case "x$PKG_CONFIG_LIBDIR" in
2171 AC_MSG_WARN(no PKG_CONFIG_LIBDIR was found)
2174 cf_pkg_config_libdir="$PKG_CONFIG_LIBDIR"
2175 CF_PATH_SYNTAX(cf_pkg_config_libdir)
2181 AC_SUBST(MAKE_PC_FILES)
2183 dnl ---------------------------------------------------------------------------
2184 dnl CF_ENABLE_RPATH version: 2 updated: 2010/03/27 18:39:42
2186 dnl Check if the rpath option should be used, setting cache variable
2187 dnl cf_cv_enable_rpath if so.
2188 AC_DEFUN([CF_ENABLE_RPATH],
2190 AC_MSG_CHECKING(if rpath option should be used)
2191 AC_ARG_ENABLE(rpath,
2192 [ --enable-rpath use rpath option when generating shared libraries],
2193 [cf_cv_enable_rpath=$enableval],
2194 [cf_cv_enable_rpath=no])
2195 AC_MSG_RESULT($cf_cv_enable_rpath)
2197 dnl ---------------------------------------------------------------------------
2198 dnl CF_ENABLE_STRING_HACKS version: 6 updated: 2021/01/05 19:23:48
2199 dnl ----------------------
2200 dnl On a few platforms, the compiler and/or loader nags with untruthful
2201 dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
2202 dnl and implying that most uses of the recommended alternatives are correct.
2204 dnl Factually speaking, no one has actually counted the number of uses of these
2205 dnl functions versus the total of incorrect uses. Samples of a few thousand
2206 dnl instances are meaningless compared to the hundreds of millions of lines of
2207 dnl existing C code.
2209 dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some
2210 dnl platforms, in implementations of varying quality. Likewise, snprintf is
2211 dnl standard - but evolved through phases, and older implementations are likely
2212 dnl to yield surprising results, as documented in manpages on various systems.
2213 AC_DEFUN([CF_ENABLE_STRING_HACKS],
2215 AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings)
2216 AC_ARG_ENABLE(string-hacks,
2217 [ --enable-string-hacks work around bogus compiler/loader warnings],
2218 [enable_string_hacks=$enableval],
2219 [enable_string_hacks=no])
2220 AC_MSG_RESULT($enable_string_hacks)
2222 if test "x$enable_string_hacks" = "xyes"; then
2223 AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings])
2224 AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
2225 AC_CHECK_FUNC(strlcat,[
2226 AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
2228 AC_CHECK_LIB(bsd,strlcat,[
2230 AC_CHECK_HEADERS(bsd/string.h)
2231 AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
2234 AC_CHECK_FUNCS( strlcpy snprintf )
2237 dnl ---------------------------------------------------------------------------
2238 dnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50
2239 dnl ------------------
2240 dnl Configure-option to enable gcc warnings
2242 dnl $1 = extra options to add, if supported
2243 dnl $2 = option for checking attributes. By default, this is done when
2244 dnl warnings are enabled. For other values:
2245 dnl yes: always do this, e.g., to use in generated library-headers
2246 dnl no: never do this
2247 AC_DEFUN([CF_ENABLE_WARNINGS],[
2248 if test "$GCC" = yes || test "$GXX" = yes
2250 CF_FIX_WARNINGS(CFLAGS)
2251 CF_FIX_WARNINGS(CPPFLAGS)
2252 CF_FIX_WARNINGS(LDFLAGS)
2253 AC_MSG_CHECKING(if you want to turn on gcc warnings)
2254 CF_ARG_ENABLE(warnings,
2255 [ --enable-warnings test: turn on gcc compiler warnings],
2256 [enable_warnings=yes],
2257 [enable_warnings=no])
2258 AC_MSG_RESULT($enable_warnings)
2259 if test "$enable_warnings" = "yes"
2261 ifelse($2,,[CF_GCC_ATTRIBUTES])
2264 ifelse($2,yes,[CF_GCC_ATTRIBUTES])
2267 dnl ---------------------------------------------------------------------------
2268 dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39
2270 dnl Check if 'errno' is declared in <errno.h>
2271 AC_DEFUN([CF_ERRNO],
2273 CF_CHECK_ERRNO(errno)
2275 dnl ---------------------------------------------------------------------------
2276 dnl CF_ETIP_DEFINES version: 6 updated: 2021/01/02 17:09:14
2278 dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between
2279 dnl math.h and builtin.h, only for ncurses
2280 AC_DEFUN([CF_ETIP_DEFINES],
2282 AC_MSG_CHECKING(for special defines needed for etip.h)
2283 cf_save_CXXFLAGS="$CXXFLAGS"
2286 # etip.h includes ncurses.h which includes ncurses_dll.h
2287 # But ncurses_dll.h is generated - fix here.
2288 test -d include || mkdir include
2289 test -f include/ncurses_dll.h || sed -e 's/@NCURSES_WRAP_PREFIX@/'$NCURSES_WRAP_PREFIX'/g' "${srcdir}/include/ncurses_dll.h.in" >include/ncurses_dll.h
2291 for cf_math in "" MATH_H
2293 for cf_excp in "" MATH_EXCEPTION
2295 CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -Iinclude -I${srcdir}/include"
2296 test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
2297 test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
2299 #include <etip.h.in>
2301 test -n "$cf_math" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_math})
2302 test -n "$cf_excp" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_excp})
2303 cf_result="$cf_math $cf_excp"
2308 AC_MSG_RESULT($cf_result)
2309 CXXFLAGS="$cf_save_CXXFLAGS"
2311 dnl ---------------------------------------------------------------------------
2312 dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42
2314 dnl Find a library (specifically the linkage used in the code fragment),
2315 dnl searching for it if it is not already in the library path.
2316 dnl See also CF_ADD_SEARCHPATH.
2318 dnl Parameters (4-on are optional):
2319 dnl $1 = headers for library entrypoint
2320 dnl $2 = code fragment for library entrypoint
2321 dnl $3 = the library name without the "-l" option or ".so" suffix.
2322 dnl $4 = action to perform if successful (default: update CPPFLAGS, etc)
2323 dnl $5 = action to perform if not successful
2324 dnl $6 = module name, if not the same as the library name
2325 dnl $7 = extra libraries
2327 dnl Sets these variables:
2328 dnl $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found
2329 dnl $cf_cv_header_path_$3 - include-directory if needed
2330 dnl $cf_cv_library_path_$3 - library-directory if needed
2331 dnl $cf_cv_library_file_$3 - library-file if needed, e.g., -l$3
2332 AC_DEFUN([CF_FIND_LINKAGE],[
2334 # If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these
2335 # will be set on completion of the AC_TRY_LINK below.
2336 cf_cv_header_path_$3=
2337 cf_cv_library_path_$3=
2339 CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)])
2341 cf_save_LIBS="$LIBS"
2343 AC_TRY_LINK([$1],[$2],[
2344 cf_cv_find_linkage_$3=yes
2345 cf_cv_header_path_$3=/usr/include
2346 cf_cv_library_path_$3=/usr/lib
2349 LIBS="-l$3 $7 $cf_save_LIBS"
2351 AC_TRY_LINK([$1],[$2],[
2352 cf_cv_find_linkage_$3=yes
2353 cf_cv_header_path_$3=/usr/include
2354 cf_cv_library_path_$3=/usr/lib
2355 cf_cv_library_file_$3="-l$3"
2357 cf_cv_find_linkage_$3=no
2358 LIBS="$cf_save_LIBS"
2360 CF_VERBOSE(find linkage for $3 library)
2361 CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
2363 cf_save_CPPFLAGS="$CPPFLAGS"
2364 cf_test_CPPFLAGS="$CPPFLAGS"
2366 CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
2367 for cf_cv_header_path_$3 in $cf_search
2369 if test -d "$cf_cv_header_path_$3" ; then
2370 CF_VERBOSE(... testing $cf_cv_header_path_$3)
2371 CPPFLAGS="$cf_save_CPPFLAGS"
2372 CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3)
2373 AC_TRY_COMPILE([$1],[$2],[
2374 CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
2375 cf_cv_find_linkage_$3=maybe
2376 cf_test_CPPFLAGS="$CPPFLAGS"
2378 CPPFLAGS="$cf_save_CPPFLAGS"
2383 if test "$cf_cv_find_linkage_$3" = maybe ; then
2385 CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
2387 cf_save_LIBS="$LIBS"
2388 cf_save_LDFLAGS="$LDFLAGS"
2391 CPPFLAGS="$cf_test_CPPFLAGS"
2392 LIBS="-l$3 $7 $cf_save_LIBS"
2393 AC_TRY_LINK([$1],[$2],[
2394 CF_VERBOSE(... found $3 library in system)
2395 cf_cv_find_linkage_$3=yes])
2396 CPPFLAGS="$cf_save_CPPFLAGS"
2397 LIBS="$cf_save_LIBS"
2400 if test "$cf_cv_find_linkage_$3" != yes ; then
2401 CF_LIBRARY_PATH(cf_search,$3)
2402 for cf_cv_library_path_$3 in $cf_search
2404 if test -d "$cf_cv_library_path_$3" ; then
2405 CF_VERBOSE(... testing $cf_cv_library_path_$3)
2406 CPPFLAGS="$cf_test_CPPFLAGS"
2407 LIBS="-l$3 $7 $cf_save_LIBS"
2408 LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
2409 AC_TRY_LINK([$1],[$2],[
2410 CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
2411 cf_cv_find_linkage_$3=yes
2412 cf_cv_library_file_$3="-l$3"
2414 CPPFLAGS="$cf_save_CPPFLAGS"
2415 LIBS="$cf_save_LIBS"
2416 LDFLAGS="$cf_save_LDFLAGS"
2420 CPPFLAGS="$cf_save_CPPFLAGS"
2421 LDFLAGS="$cf_save_LDFLAGS"
2425 cf_cv_find_linkage_$3=no
2430 LIBS="$cf_save_LIBS"
2432 if test "$cf_cv_find_linkage_$3" = yes ; then
2434 CF_ADD_INCDIR($cf_cv_header_path_$3)
2435 CF_ADD_LIBDIR($cf_cv_library_path_$3)
2439 ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
2442 dnl ---------------------------------------------------------------------------
2443 dnl CF_FIND_SUB_INCDIR version: 3 updated: 2021/01/01 13:31:04
2444 dnl ------------------
2445 dnl Find an include-directory with the given leaf-name. This is useful for
2446 dnl example with FreeBSD ports, which use this convention to distinguish
2447 dnl different versions of the same port.
2448 AC_DEFUN([CF_FIND_SUB_INCDIR],[
2449 CF_SUBDIR_PATH(cf_search,$1,include)
2450 for cf_item in $cf_search
2454 CF_ADD_INCDIR($cf_item)
2459 dnl ---------------------------------------------------------------------------
2460 dnl CF_FIND_SUB_LIBDIR version: 3 updated: 2021/01/01 13:31:04
2461 dnl ------------------
2462 dnl Find a library-directory with the given leaf-name. This is useful for
2463 dnl example with FreeBSD ports, which use this convention to distinguish
2464 dnl different versions of the same port.
2465 AC_DEFUN([CF_FIND_SUB_LIBDIR],[
2466 CF_SUBDIR_PATH(cf_search,$1,lib)
2467 for cf_item in $cf_search
2471 CF_ADD_LIBDIR($cf_item)
2476 dnl ---------------------------------------------------------------------------
2477 dnl CF_FIXUP_ADAFLAGS version: 2 updated: 2015/04/17 21:13:04
2478 dnl -----------------
2479 dnl make ADAFLAGS consistent with CFLAGS
2480 AC_DEFUN([CF_FIXUP_ADAFLAGS],[
2481 AC_MSG_CHECKING(optimization options for ADAFLAGS)
2489 cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[[ ]].*//'`
2490 CF_ADD_ADAFLAGS($cf_O_flag)
2493 AC_MSG_RESULT($ADAFLAGS)
2495 dnl ---------------------------------------------------------------------------
2496 dnl CF_FIX_WARNINGS version: 4 updated: 2021/12/16 18:22:31
2498 dnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc. Any of gcc's
2499 dnl "-Werror" flags can interfere with configure-checks. Those go into
2502 dnl $1 = variable name to repair
2503 define([CF_FIX_WARNINGS],[
2504 if test "$GCC" = yes || test "$GXX" = yes
2509 for cf_temp_scan in [$]$1
2511 case "x$cf_temp_scan" in
2513 CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
2516 CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan)
2519 CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
2523 if test "x[$]$1" != "x$cf_temp_flags"
2525 CF_VERBOSE(repairing $1: [$]$1)
2527 CF_VERBOSE(... fixed [$]$1)
2528 CF_VERBOSE(... extra $EXTRA_CFLAGS)
2533 AC_SUBST(EXTRA_CFLAGS)
2535 dnl ---------------------------------------------------------------------------
2536 dnl CF_FOPEN_BIN_R version: 3 updated: 2023/01/05 18:05:46
2538 dnl Check if fopen works when the "b" (binary) flag is added to the mode
2539 dnl parameter. POSIX ignores the "b", which c89 specified. Some very old
2540 dnl systems do not accept it.
2541 AC_DEFUN([CF_FOPEN_BIN_R],[
2542 AC_CACHE_CHECK(if fopen accepts explicit binary mode,cf_cv_fopen_bin_r,[
2544 $ac_includes_default
2548 FILE *fp = fopen("conftest.tmp", "wb");
2552 for (p = 0; p < 256; ++p) {
2556 fp = fopen("conftest.tmp", "rb");
2558 for (p = 0; p < 256; ++p) {
2571 ${cf_cv_main_return:-return} (rc);
2574 [cf_cv_fopen_bin_r=yes],
2575 [cf_cv_fopen_bin_r=no],
2576 [cf_cv_fopen_bin_r=unknown])
2578 test "x$cf_cv_fopen_bin_r" != xno && AC_DEFINE(USE_FOPEN_BIN_R,1,[Define to 1 if fopen accepts explicit binary mode])
2580 dnl ---------------------------------------------------------------------------
2581 dnl CF_FORGET_TOOL version: 1 updated: 2013/04/06 18:03:09
2583 dnl Forget that we saw the given tool.
2584 AC_DEFUN([CF_FORGET_TOOL],[
2585 unset ac_cv_prog_ac_ct_$1
2589 dnl ---------------------------------------------------------------------------
2590 dnl CF_FUNC_DLSYM version: 4 updated: 2015/09/12 14:46:44
2592 dnl Test for dlsym() and related functions, as well as libdl.
2597 AC_DEFUN([CF_FUNC_DLSYM],[
2599 AC_CHECK_FUNC(dlsym,cf_have_dlsym=yes,[
2602 AC_CHECK_LIB(dl,dlsym,[
2604 cf_have_libdl=yes])])
2606 if test "$cf_have_dlsym" = yes ; then
2607 test "$cf_have_libdl" = yes && { CF_ADD_LIB(dl) }
2609 AC_MSG_CHECKING(whether able to link to dl*() functions)
2610 AC_TRY_LINK([#include <dlfcn.h>],[
2612 if ((obj = dlopen("filename", 0)) != 0) {
2613 if (dlsym(obj, "symbolname") == 0) {
2617 AC_DEFINE(HAVE_LIBDL,1,[Define to 1 if we have dl library])],[
2618 AC_MSG_ERROR(Cannot link test program for libdl)])
2621 AC_MSG_ERROR(Cannot find dlsym function)
2624 dnl ---------------------------------------------------------------------------
2625 dnl CF_FUNC_GETTIME version: 2 updated: 2023/02/25 08:45:56
2627 dnl Check for gettimeofday or clock_gettime. In 2023, the former is still more
2628 dnl widely supported, but "deprecated" (2008), so we will use the latter if it
2629 dnl is available, to reduce compiler warnings.
2630 AC_DEFUN([CF_FUNC_GETTIME],[
2631 AC_CACHE_CHECK(for clock_gettime,cf_cv_func_clock_gettime,[
2632 AC_TRY_LINK([#include <time.h>],
2633 [struct timespec ts;
2634 int rc = clock_gettime(CLOCK_REALTIME, &ts); (void) rc; (void)ts],
2635 [cf_cv_func_clock_gettime=yes],
2636 [cf_cv_func_clock_gettime=no])
2639 if test "$cf_cv_func_clock_gettime" = yes
2641 AC_DEFINE(HAVE_CLOCK_GETTIME,1,[Define to 1 if we have clock_gettime function])
2643 AC_CHECK_FUNC(gettimeofday,
2644 AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[
2646 AC_CHECK_LIB(bsd, gettimeofday,
2647 AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function])
2648 CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday
2651 dnl ---------------------------------------------------------------------------
2652 dnl CF_FUNC_GETTTYNAM version: 2 updated: 2023/01/05 18:06:28
2653 dnl -----------------
2654 dnl Check if the 4.3BSD function getttyname exists, as well as if <ttyent.h>
2655 dnl defines the _PATH_TTYS symbol. If the corresponding file exists, but the
2656 dnl other checks fail, just define HAVE_PATH_TTYS.
2657 AC_DEFUN([CF_FUNC_GETTTYNAM],[
2658 AC_CACHE_CHECK(if _PATH_TTYS is defined in ttyent.h,cf_cv_PATH_TTYS,[
2661 #include <ttyent.h>],[
2662 FILE *fp = fopen(_PATH_TTYS, "r"); (void)fp],
2663 [cf_cv_PATH_TTYS=yes],
2664 [cf_cv_PATH_TTYS=no])])
2666 if test $cf_cv_PATH_TTYS = no
2668 for cf_ttys in /etc/ttytype /etc/ttys
2672 cf_cv_PATH_TTYS=maybe
2673 AC_DEFINE(_PATH_TTYS,$cf_ttys,[define to pathname of file containing mapping from tty name to terminal type])
2679 if test $cf_cv_PATH_TTYS != no
2681 AC_CACHE_CHECK(if _PATH_TTYS file exists,cf_cv_have_PATH_TTYS,[
2683 $ac_includes_default
2688 FILE *fp = fopen(_PATH_TTYS, "r");
2689 ${cf_cv_main_return:-return} (fp == 0);
2691 [cf_cv_have_PATH_TTYS=yes],
2692 [cf_cv_have_PATH_TTYS=no],
2693 [cf_cv_have_PATH_TTYS=unknown])])
2694 test "$cf_cv_have_PATH_TTYS" = no && cf_cv_PATH_TTYS=no
2697 if test $cf_cv_PATH_TTYS != no
2699 AC_DEFINE(HAVE_PATH_TTYS,1,[define to 1 if system can map tty name to terminal type])
2700 AC_CACHE_CHECK(for getttynam,cf_cv_func_getttynam,[
2701 AC_TRY_LINK([#include <ttyent.h>],
2702 [struct ttyent *fp = getttynam("/dev/tty"); (void)fp],
2703 [cf_cv_func_getttynam=yes],
2704 [cf_cv_func_getttynam=no])])
2705 test "$cf_cv_func_getttynam" = yes && AC_DEFINE(HAVE_GETTTYNAM)
2708 dnl ---------------------------------------------------------------------------
2709 dnl CF_FUNC_MEMMOVE version: 10 updated: 2023/01/05 18:51:28
2711 dnl Check for memmove, or a bcopy that can handle overlapping copy. If neither
2712 dnl is found, add our own version of memmove to the list of objects.
2713 AC_DEFUN([CF_FUNC_MEMMOVE],
2715 AC_CHECK_FUNC(memmove,,[
2716 AC_CHECK_FUNC(bcopy,[
2717 AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[
2719 $ac_includes_default
2722 static char data[] = "abcdefghijklmnopqrstuwwxyz";
2724 bcopy(data, temp, sizeof(data));
2725 bcopy(temp+10, temp, 15);
2726 bcopy(temp+5, temp+15, 10);
2727 ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
2730 [cf_cv_good_bcopy=yes],
2731 [cf_cv_good_bcopy=no],
2732 [cf_cv_good_bcopy=unknown])
2734 ],[cf_cv_good_bcopy=no])
2735 if test "$cf_cv_good_bcopy" = yes ; then
2736 AC_DEFINE(USE_OK_BCOPY,1,[Define to 1 to use bcopy when memmove is unavailable])
2738 AC_DEFINE(USE_MY_MEMMOVE,1,[Define to 1 to use replacement function when memmove is unavailable])
2741 dnl ---------------------------------------------------------------------------
2742 dnl CF_FUNC_NANOSLEEP version: 6 updated: 2023/01/05 18:51:33
2743 dnl -----------------
2744 dnl Check for existence of workable nanosleep() function. Some systems, e.g.,
2745 dnl AIX 4.x, provide a non-working version.
2746 AC_DEFUN([CF_FUNC_NANOSLEEP],[
2747 AC_CACHE_CHECK(if nanosleep really works,cf_cv_func_nanosleep,[
2749 $ac_includes_default
2754 #ifdef HAVE_SYS_TIME_H
2755 #include <sys/time.h>
2759 struct timespec ts1, ts2;
2762 ts1.tv_nsec = 750000000;
2766 code = nanosleep(&ts1, &ts2); /* on failure errno is ENOSYS. */
2767 ${cf_cv_main_return:-return}(code != 0);
2770 [cf_cv_func_nanosleep=yes],
2771 [cf_cv_func_nanosleep=no],
2772 [cf_cv_func_nanosleep=unknown])])
2774 test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP,1,[Define to 1 if we have nanosleep()])
2776 dnl ---------------------------------------------------------------------------
2777 dnl CF_FUNC_OPENPTY version: 6 updated: 2021/01/01 13:31:04
2779 dnl Check for openpty() function, along with <pty.h> header. It may need the
2780 dnl "util" library as well.
2781 AC_DEFUN([CF_FUNC_OPENPTY],
2783 AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no)
2784 AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
2785 cf_save_LIBS="$LIBS"
2786 test "$cf_cv_lib_util" = yes && { CF_ADD_LIB(util) }
2787 for cf_header in pty.h libutil.h util.h
2790 #include <$cf_header>
2792 int x = openpty((int *)0, (int *)0, (char *)0,
2793 (struct termios *)0, (struct winsize *)0);
2795 cf_cv_func_openpty=$cf_header
2798 cf_cv_func_openpty=no
2801 LIBS="$cf_save_LIBS"
2804 dnl ---------------------------------------------------------------------------
2805 dnl CF_FUNC_POLL version: 11 updated: 2023/01/05 18:51:40
2807 dnl See if the poll function really works. Some platforms have poll(), but
2808 dnl it does not work for terminals or files.
2809 AC_DEFUN([CF_FUNC_POLL],[
2810 tty >/dev/null 2>&1 || { AC_CHECK_FUNCS(posix_openpt) }
2811 AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[
2813 $ac_includes_default
2820 #include <sys/poll.h>
2824 struct pollfd myfds;
2827 /* check for Darwin bug with respect to "devices" */
2828 myfds.fd = open("/dev/null", 1); /* O_WRONLY */
2831 myfds.events = POLLIN;
2834 ret = poll(&myfds, 1, 100);
2836 if (ret < 0 || (myfds.revents & POLLNVAL)) {
2841 fd = open("/dev/tty", 2); /* O_RDWR */
2843 #ifdef HAVE_POSIX_OPENPT
2845 fd = posix_openpt(O_RDWR);
2850 /* also check with standard input */
2852 myfds.events = POLLIN;
2854 ret = poll(&myfds, 1, 100);
2859 ${cf_cv_main_return:-return}(ret < 0);
2861 [cf_cv_working_poll=yes],
2862 [cf_cv_working_poll=no],
2863 [cf_cv_working_poll=unknown])])
2864 test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL,1,[Define to 1 if the poll function seems to work])
2866 dnl ---------------------------------------------------------------------------
2867 dnl CF_FUNC_TERMIOS version: 3 updated: 2012/10/06 17:56:13
2869 dnl Some old/broken variations define tcgetattr() only as a macro in
2871 AC_DEFUN([CF_FUNC_TERMIOS],[
2872 AC_REQUIRE([CF_STRUCT_TERMIOS])
2873 AC_CACHE_CHECK(for tcgetattr, cf_cv_have_tcgetattr,[
2875 #include <sys/types.h>
2876 #ifdef HAVE_UNISTD_H
2879 #ifdef HAVE_TERMIOS_H
2880 #include <termios.h>
2881 #define TTY struct termios
2883 #ifdef HAVE_TERMIO_H
2885 #define TTY struct termio
2890 tcgetattr(1, &foo);],
2891 [cf_cv_have_tcgetattr=yes],
2892 [cf_cv_have_tcgetattr=no])])
2893 test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR,1,[Define to 1 if we have tcgetattr])
2895 dnl ---------------------------------------------------------------------------
2896 dnl CF_FUNC_VSSCANF version: 7 updated: 2021/01/01 13:31:04
2898 dnl Check for vsscanf() function, which is in c9x but generally not in earlier
2899 dnl versions of C. It is in the GNU C library, and can often be simulated by
2900 dnl other functions.
2901 AC_DEFUN([CF_FUNC_VSSCANF],
2903 AC_CACHE_CHECK(for vsscanf function or workaround,cf_cv_func_vsscanf,[
2906 #include <stdio.h>],[
2908 vsscanf("from", "%d", ap)],[cf_cv_func_vsscanf=vsscanf],[
2911 #include <stdio.h>],[
2915 strbuf._flag = _IOREAD;
2916 strbuf._ptr = strbuf._base = (unsigned char *) str;
2917 strbuf._cnt = strlen(str);
2918 strbuf._file = _NFILE;
2919 return (vfscanf(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=vfscanf],[
2922 #include <stdio.h>],[
2926 strbuf._flag = _IOREAD;
2927 strbuf._ptr = strbuf._base = (unsigned char *) str;
2928 strbuf._cnt = strlen(str);
2929 strbuf._file = _NFILE;
2930 return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[
2931 cf_cv_func_vsscanf=no])])])])
2933 case "$cf_cv_func_vsscanf" in
2934 (vsscanf) AC_DEFINE(HAVE_VSSCANF,1,[Define to 1 if we have vsscanf]);;
2935 (vfscanf) AC_DEFINE(HAVE_VFSCANF,1,[Define to 1 if we have vfscanf]);;
2936 (_doscan) AC_DEFINE(HAVE__DOSCAN,1,[Define to 1 if we have _doscan]);;
2940 dnl ---------------------------------------------------------------------------
2941 dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25
2942 dnl -----------------
2943 dnl Test for availability of useful gcc __attribute__ directives to quiet
2944 dnl compiler warnings. Though useful, not all are supported -- and contrary
2945 dnl to documentation, unrecognized directives cause older compilers to barf.
2946 AC_DEFUN([CF_GCC_ATTRIBUTES],
2947 [AC_REQUIRE([AC_PROG_FGREP])dnl
2948 AC_REQUIRE([CF_C11_NORETURN])dnl
2950 if test "$GCC" = yes || test "$GXX" = yes
2952 cat > conftest.i <<EOF
2954 #define GCC_PRINTF 0
2959 #ifndef GCC_NORETURN
2960 #define GCC_NORETURN /* nothing */
2963 #define GCC_UNUSED /* nothing */
2966 if test "$GCC" = yes
2968 AC_CHECKING([for $CC __attribute__ directives])
2969 cat > "conftest.$ac_ext" <<EOF
2970 #line __oline__ "${as_me:-configure}"
2972 #include "confdefs.h"
2973 #include "conftest.h"
2974 #include "conftest.i"
2976 #define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
2978 #define GCC_PRINTFLIKE(fmt,var) /*nothing*/
2981 #define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
2983 #define GCC_SCANFLIKE(fmt,var) /*nothing*/
2985 extern void wow(char *,...) GCC_SCANFLIKE(1,2);
2986 extern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2);
2987 extern GCC_NORETURN void foo(void);
2988 int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; }
2990 cf_printf_attribute=no
2991 cf_scanf_attribute=no
2992 for cf_attribute in scanf printf unused noreturn
2994 CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
2995 cf_directive="__attribute__(($cf_attribute))"
2996 echo "checking for $CC $cf_directive" 1>&AC_FD_CC
2998 case "$cf_attribute" in
3000 cf_printf_attribute=yes
3001 cat >conftest.h <<EOF
3002 #define GCC_$cf_ATTRIBUTE 1
3006 cf_scanf_attribute=yes
3007 cat >conftest.h <<EOF
3008 #define GCC_$cf_ATTRIBUTE 1
3012 cat >conftest.h <<EOF
3013 #define GCC_$cf_ATTRIBUTE $cf_directive
3018 if AC_TRY_EVAL(ac_compile); then
3019 test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
3020 cat conftest.h >>confdefs.h
3021 case "$cf_attribute" in
3023 AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
3026 cf_value='/* nothing */'
3027 if test "$cf_printf_attribute" != no ; then
3028 cf_value='__attribute__((format(printf,fmt,var)))'
3029 AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
3031 AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
3034 cf_value='/* nothing */'
3035 if test "$cf_scanf_attribute" != no ; then
3036 cf_value='__attribute__((format(scanf,fmt,var)))'
3037 AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
3039 AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
3042 AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
3048 ${FGREP-fgrep} define conftest.i >>confdefs.h
3053 dnl ---------------------------------------------------------------------------
3054 dnl CF_GCC_VERSION version: 9 updated: 2023/03/05 14:30:13
3056 dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
3057 dnl compatible), attempt to determine if icc/clang is actually used.
3058 AC_DEFUN([CF_GCC_VERSION],[
3059 AC_REQUIRE([AC_PROG_CC])
3061 if test "$GCC" = yes ; then
3062 AC_MSG_CHECKING(version of $CC)
3063 GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
3064 test -z "$GCC_VERSION" && GCC_VERSION=unknown
3065 AC_MSG_RESULT($GCC_VERSION)
3067 CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
3068 CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
3070 dnl ---------------------------------------------------------------------------
3071 dnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59
3073 dnl Check if the compiler supports useful warning options. There's a few that
3074 dnl we don't use, simply because they're too noisy:
3076 dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
3077 dnl -Winline (usually not worthwhile)
3078 dnl -Wredundant-decls (system headers make this too noisy)
3079 dnl -Wtraditional (combines too many unrelated messages, only a few useful)
3080 dnl -Wwrite-strings (too noisy, but should review occasionally). This
3081 dnl is enabled for ncurses using "--enable-const".
3085 dnl $1 is an optional list of gcc warning flags that a particular
3086 dnl application might want to use, e.g., "no-unused" for
3089 dnl If $with_ext_const is "yes", add a check for -Wwrite-strings
3091 AC_DEFUN([CF_GCC_WARNINGS],
3093 AC_REQUIRE([CF_GCC_VERSION])
3094 if test "x$have_x" = xyes; then CF_CONST_X_STRING fi
3095 cat > "conftest.$ac_ext" <<EOF
3096 #line __oline__ "${as_me:-configure}"
3097 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
3099 if test "$INTEL_COMPILER" = yes
3101 # The "-wdXXX" options suppress warnings:
3102 # remark #1419: external declaration in primary source file
3103 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
3104 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
3105 # remark #193: zero used for undefined preprocessing identifier
3106 # remark #593: variable "curs_sb_left_arrow" was set but never used
3107 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
3108 # remark #869: parameter "tw" was never referenced
3109 # remark #981: operands are evaluated in unspecified order
3110 # warning #279: controlling expression is constant
3112 AC_CHECKING([for $CC warning options])
3113 cf_save_CFLAGS="$CFLAGS"
3114 EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
3126 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
3127 if AC_TRY_EVAL(ac_compile); then
3128 test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3129 EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
3132 CFLAGS="$cf_save_CFLAGS"
3133 elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
3135 AC_CHECKING([for $CC warning options])
3136 cf_save_CFLAGS="$CFLAGS"
3138 test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
3139 cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
3140 test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
3141 for cf_opt in W Wall \
3142 Wbad-function-cast \
3145 Wdeclaration-after-statement \
3148 Wmissing-declarations \
3149 Wmissing-prototypes \
3153 Wstrict-prototypes \
3154 Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
3156 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
3157 if AC_TRY_EVAL(ac_compile); then
3158 test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3161 case "$GCC_VERSION" in
3163 CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
3168 case "$GCC_VERSION" in
3170 CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
3175 EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
3178 CFLAGS="$cf_save_CFLAGS"
3182 AC_SUBST(EXTRA_CFLAGS)
3184 dnl ---------------------------------------------------------------------------
3185 dnl CF_GETOPT_HEADER version: 8 updated: 2021/06/19 19:16:16
3186 dnl ----------------
3187 dnl Check for getopt's variables which are commonly defined in stdlib.h,
3188 dnl unistd.h or (nonstandard) in getopt.h
3189 AC_DEFUN([CF_GETOPT_HEADER],
3191 AC_HAVE_HEADERS(unistd.h getopt.h)
3192 AC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[
3193 cf_cv_getopt_header=none
3194 for cf_header in stdio.h stdlib.h unistd.h getopt.h
3197 #include <$cf_header>],
3198 [int x = optind; char *y = optarg; (void)x; (void)y],
3199 [cf_cv_getopt_header=$cf_header
3203 if test "$cf_cv_getopt_header" != none ; then
3204 AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header])
3206 if test "$cf_cv_getopt_header" = getopt.h ; then
3207 AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h])
3210 dnl ---------------------------------------------------------------------------
3211 dnl CF_GNATPREP_OPT_T version: 1 updated: 2014/08/02 18:37:25
3212 dnl -----------------
3213 AC_DEFUN([CF_GNATPREP_OPT_T],[
3214 AC_CACHE_CHECK(if GNATPREP supports -T option,cf_cv_gnatprep_opt_t,[
3215 cf_cv_gnatprep_opt_t=no
3216 gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
3218 test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
3219 AC_SUBST(GNATPREP_OPTS)
3221 dnl ---------------------------------------------------------------------------
3222 dnl CF_GNAT_GENERICS version: 7 updated: 2021/01/01 13:31:04
3223 dnl ----------------
3224 AC_DEFUN([CF_GNAT_GENERICS],
3226 AC_REQUIRE([CF_GNAT_VERSION])
3228 AC_MSG_CHECKING(if GNAT supports generics)
3229 case "$cf_cv_gnat_version" in
3230 (3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|[[1-9]][[0-9]].[[0-9]]*|20[[0-9]][[0-9]])
3231 cf_gnat_generics=yes
3237 AC_MSG_RESULT($cf_gnat_generics)
3239 if test "$cf_gnat_generics" = yes
3241 cf_compile_generics=generics
3242 cf_generic_objects="\${GENOBJS}"
3244 cf_compile_generics=
3248 AC_SUBST(cf_compile_generics)
3249 AC_SUBST(cf_generic_objects)
3251 dnl ---------------------------------------------------------------------------
3252 dnl CF_GNAT_PROJECTS version: 13 updated: 2021/01/02 17:09:14
3253 dnl ----------------
3254 dnl GNAT projects are configured with ".gpr" project files.
3255 dnl GNAT libraries are a further development, using the project feature.
3256 AC_DEFUN([CF_GNAT_PROJECTS],
3258 AC_REQUIRE([CF_GNAT_VERSION])
3259 AC_REQUIRE([CF_DISABLE_GNAT_PROJECTS])
3261 cf_gnat_libraries=no
3264 if test "$enable_gnat_projects" != no ; then
3265 AC_MSG_CHECKING(if GNAT supports project files)
3266 case "$cf_cv_gnat_version" in
3270 case "$cf_cv_system_name" in
3274 rm -rf ./conftest* ./*~conftest*
3275 if mkdir conftest.src conftest.bin conftest.lib
3278 rm -rf ./conftest* ./*~conftest*
3279 cat >>library.gpr <<CF_EOF
3281 Kind := External ("LIB_KIND");
3282 for Library_Name use "ConfTest";
3283 for Object_Dir use ".";
3284 for Library_ALI_Dir use External("LIBRARY_DIR");
3285 for Library_Version use External ("SONAME");
3286 for Library_Kind use Kind;
3287 for Library_Dir use External("BUILD_DIR");
3288 Source_Dir := External ("SOURCE_DIR");
3289 for Source_Dirs use (Source_Dir);
3292 cat >>confpackage.ads <<CF_EOF
3293 package ConfPackage is
3297 cat >>confpackage.adb <<CF_EOF
3299 package body ConfPackage is
3300 procedure conftest is
3302 Text_IO.Put ("Hello World");
3307 if ( "$cf_ada_make" $ADAFLAGS \
3309 -XBUILD_DIR="`cd ../conftest.bin;pwd`" \
3310 -XLIBRARY_DIR="`cd ../conftest.lib;pwd`" \
3311 -XSOURCE_DIR="`pwd`" \
3312 -XSONAME=libConfTest.so.1 \
3313 -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then
3314 cf_gnat_projects=yes
3318 if test -f conftest.lib/confpackage.ali
3320 cf_gnat_libraries=yes
3322 rm -rf ./conftest* ./*~conftest*
3327 AC_MSG_RESULT($cf_gnat_projects)
3328 fi # enable_gnat_projects
3330 if test "$cf_gnat_projects" = yes
3332 AC_MSG_CHECKING(if GNAT supports libraries)
3333 AC_MSG_RESULT($cf_gnat_libraries)
3336 USE_OLD_MAKERULES=""
3337 USE_GNAT_PROJECTS="#"
3338 USE_GNAT_MAKE_GPR="#"
3339 USE_GNAT_GPRBUILD="#"
3341 if test "$cf_gnat_projects" = yes
3343 USE_OLD_MAKERULES="#"
3344 USE_GNAT_PROJECTS=""
3345 if test "$cf_cv_VERSION_GPRBUILD" != no
3347 USE_GNAT_GPRBUILD=""
3348 elif test "$cf_cv_VERSION_GNATMAKE" != no
3350 USE_GNAT_MAKE_GPR=""
3352 AC_MSG_WARN(use old makefile rules since tools are missing)
3356 if test "$cf_gnat_libraries" = yes
3358 USE_GNAT_LIBRARIES=""
3360 USE_GNAT_LIBRARIES="#"
3363 AC_SUBST(USE_OLD_MAKERULES)
3364 AC_SUBST(USE_GNAT_PROJECTS)
3365 AC_SUBST(USE_GNAT_LIBRARIES)
3366 AC_SUBST(USE_GNAT_MAKE_GPR)
3367 AC_SUBST(USE_GNAT_GPRBUILD)
3369 dnl ---------------------------------------------------------------------------
3370 dnl CF_GNAT_SIGINT version: 2 updated: 2021/01/01 13:31:04
3372 dnl Check if gnat supports SIGINT, and presumably tasking. For the latter, it
3373 dnl is noted that gnat may compile a tasking unit even for configurations which
3374 dnl fail at runtime.
3375 AC_DEFUN([CF_GNAT_SIGINT],[
3376 AC_CACHE_CHECK(if GNAT supports SIGINT,cf_cv_gnat_sigint,[
3377 CF_GNAT_TRY_LINK([with Ada.Interrupts.Names;
3381 pragma Warnings (Off); -- the next pragma exists since 3.11p
3382 pragma Unreserve_All_Interrupts;
3383 pragma Warnings (On);
3385 protected Process is
3387 function Continue return Boolean;
3388 pragma Attach_Handler (Stop, Ada.Interrupts.Names.SIGINT);
3390 Done : Boolean := False;
3394 [package body ConfTest is
3395 protected body Process is
3400 function Continue return Boolean is
3406 [cf_cv_gnat_sigint=yes],
3407 [cf_cv_gnat_sigint=no])])
3409 if test "$cf_cv_gnat_sigint" = yes ; then
3414 AC_SUBST(USE_GNAT_SIGINT)
3416 dnl ---------------------------------------------------------------------------
3417 dnl CF_GNAT_TRY_LINK version: 4 updated: 2021/01/01 13:31:04
3418 dnl ----------------
3419 dnl Verify that a test program compiles/links with GNAT.
3420 dnl $cf_ada_make is set to the program that compiles/links
3421 dnl $ADAFLAGS may be set to the GNAT flags.
3423 dnl $1 is the text of the spec
3424 dnl $2 is the text of the body
3425 dnl $3 is the shell command to execute if successful
3426 dnl $4 is the shell command to execute if not successful
3427 AC_DEFUN([CF_GNAT_TRY_LINK],
3429 rm -rf ./conftest* ./*~conftest*
3430 cat >>conftest.ads <<CF_EOF
3433 cat >>conftest.adb <<CF_EOF
3436 if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
3437 ifelse($3,, :,[ $3])
3441 rm -rf ./conftest* ./*~conftest*
3443 dnl ---------------------------------------------------------------------------
3444 dnl CF_GNAT_TRY_RUN version: 6 updated: 2021/01/01 13:31:04
3446 dnl Verify that a test program compiles and runs with GNAT
3447 dnl $cf_ada_make is set to the program that compiles/links
3448 dnl $ADAFLAGS may be set to the GNAT flags.
3450 dnl $1 is the text of the spec
3451 dnl $2 is the text of the body
3452 dnl $3 is the shell command to execute if successful
3453 dnl $4 is the shell command to execute if not successful
3454 AC_DEFUN([CF_GNAT_TRY_RUN],
3456 rm -rf ./conftest* ./*~conftest*
3457 cat >>conftest.ads <<CF_EOF
3460 cat >>conftest.adb <<CF_EOF
3463 if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
3464 if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then
3465 ifelse($3,, :,[ $3])
3472 rm -rf ./conftest* ./*~conftest*
3474 dnl ---------------------------------------------------------------------------
3475 dnl CF_GNAT_VERSION version: 22 updated: 2019/12/31 08:53:54
3477 dnl $1 = cache variable to update
3478 dnl $2 = program name
3479 dnl Verify version of GNAT or related tool
3480 AC_DEFUN([CF_GNAT_VERSION],
3482 AC_CACHE_CHECK(for ifelse($2,,gnat,$2) version, cf_cv_gnat_version,[
3483 cf_cv_gnat_version=`ifelse($2,,${cf_ada_make:-gnatmake},$2) --version 2>&1 | \
3484 grep '[[0-9]].[[0-9]][[0-9]]*' |\
3485 sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'`
3487 test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
3488 ifelse($1,,,[eval $1=$cf_cv_gnat_version; unset cf_cv_gnat_version])
3490 dnl ---------------------------------------------------------------------------
3491 dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
3493 dnl Check if we must define _GNU_SOURCE to get a reasonable value for
3494 dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect
3495 dnl (or misfeature) of glibc2, which breaks portability of many applications,
3496 dnl since it is interwoven with GNU extensions.
3498 dnl Well, yes we could work around it...
3501 dnl $1 is the nominal value for _XOPEN_SOURCE
3502 AC_DEFUN([CF_GNU_SOURCE],
3504 cf_gnu_xopen_source=ifelse($1,,500,$1)
3506 AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
3507 AC_TRY_COMPILE([#include <sys/types.h>],[
3508 #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
3510 #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
3513 # error not GNU C library
3515 [cf_cv_gnu_library=yes],
3516 [cf_cv_gnu_library=no])
3519 if test x$cf_cv_gnu_library = xyes; then
3521 # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
3522 # was changed to help a little. newlib incorporated the change about 4
3524 AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
3526 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
3527 AC_TRY_COMPILE([#include <sys/types.h>],[
3528 #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
3530 #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
3533 # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
3535 [cf_cv_gnu_library_219=yes],
3536 [cf_cv_gnu_library_219=no])
3540 if test "x$cf_cv_gnu_library_219" = xyes; then
3542 AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
3543 CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
3546 #include <sys/types.h>
3548 #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
3551 # error GNU C library is too old
3553 [cf_cv_gnu_dftsrc_219=yes],
3554 [cf_cv_gnu_dftsrc_219=no])
3556 test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
3558 cf_cv_gnu_dftsrc_219=maybe
3561 if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
3563 AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
3564 AC_TRY_COMPILE([#include <sys/types.h>],[
3565 #ifndef _XOPEN_SOURCE
3566 #error expected _XOPEN_SOURCE to be defined
3568 [cf_cv_gnu_source=no],
3569 [cf_save="$CPPFLAGS"
3570 CF_ADD_CFLAGS(-D_GNU_SOURCE)
3571 AC_TRY_COMPILE([#include <sys/types.h>],[
3572 #ifdef _XOPEN_SOURCE
3573 #error expected _XOPEN_SOURCE to be undefined
3575 [cf_cv_gnu_source=no],
3576 [cf_cv_gnu_source=yes])
3581 if test "$cf_cv_gnu_source" = yes
3583 AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
3584 CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
3585 AC_TRY_COMPILE([#include <sys/types.h>],[
3586 #ifdef _DEFAULT_SOURCE
3587 #error expected _DEFAULT_SOURCE to be undefined
3589 [cf_cv_default_source=no],
3590 [cf_cv_default_source=yes])
3592 if test "$cf_cv_default_source" = yes
3594 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
3601 dnl ---------------------------------------------------------------------------
3602 dnl CF_GPP_LIBRARY version: 13 updated: 2021/01/01 13:31:04
3604 dnl If we're trying to use g++, test if libg++ is installed (a rather common
3605 dnl problem :-). If we have the compiler but no library, we'll be able to
3606 dnl configure, but won't be able to build the c++ demo program.
3607 AC_DEFUN([CF_GPP_LIBRARY],
3609 cf_cxx_library=unknown
3610 case "$cf_cv_system_name" in
3618 if test "$GXX" = yes; then
3619 AC_MSG_CHECKING([for lib$cf_gpp_libname])
3621 CF_ADD_LIB($cf_gpp_libname)
3623 #include <$cf_gpp_libname/builtin.h>
3625 [two_arg_error_handler_t foo2 = lib_error_handler],
3627 CF_ADD_LIB($cf_gpp_libname,CXXLIBS)
3628 if test "$cf_gpp_libname" = cpp ; then
3629 AC_DEFINE(HAVE_GPP_BUILTIN_H,1,[Define to 1 if we have gpp builtin.h])
3631 AC_DEFINE(HAVE_GXX_BUILTIN_H,1,[Define to 1 if we have g++ builtin.h])
3634 #include <builtin.h>
3636 [two_arg_error_handler_t foo2 = lib_error_handler],
3638 CF_ADD_LIB($cf_gpp_libname,CXXLIBS)
3639 AC_DEFINE(HAVE_BUILTIN_H,1,[Define to 1 if we have builtin.h])],
3640 [cf_cxx_library=no])])
3642 AC_MSG_RESULT($cf_cxx_library)
3645 dnl ---------------------------------------------------------------------------
3646 dnl CF_GXX_VERSION version: 9 updated: 2023/03/05 14:30:13
3648 dnl Check for version of g++
3649 AC_DEFUN([CF_GXX_VERSION],[
3650 AC_REQUIRE([AC_PROG_CPP])
3652 if test "$GXX" = yes; then
3653 AC_MSG_CHECKING(version of ${CXX:-g++})
3654 GXX_VERSION="`${CXX:-g++} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
3655 if test -z "$GXX_VERSION"
3660 AC_MSG_RESULT($GXX_VERSION)
3663 dnl ---------------------------------------------------------------------------
3664 dnl CF_GXX_WARNINGS version: 11 updated: 2021/01/08 16:50:55
3666 dnl Check if the compiler supports useful warning options.
3668 dnl Most of gcc's options apply to g++, except:
3669 dnl -Wbad-function-cast
3670 dnl -Wmissing-declarations
3671 dnl -Wnested-externs
3673 dnl Omit a few (for now):
3677 dnl $1 is an optional list of g++ warning flags that a particular
3678 dnl application might want to use, e.g., "no-unused" for
3681 dnl If $with_ext_const is "yes", add a check for -Wwrite-strings
3683 AC_DEFUN([CF_GXX_WARNINGS],
3686 CF_INTEL_COMPILER(GXX,INTEL_CPLUSPLUS,CXXFLAGS)
3687 CF_CLANG_COMPILER(GXX,CLANG_CPLUSPLUS,CXXFLAGS)
3689 AC_REQUIRE([CF_GXX_VERSION])
3694 cat > conftest.$ac_ext <<EOF
3695 #line __oline__ "configure"
3696 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
3699 if test "$INTEL_CPLUSPLUS" = yes
3701 # The "-wdXXX" options suppress warnings:
3702 # remark #1419: external declaration in primary source file
3703 # remark #1682: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
3704 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
3705 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
3706 # remark #193: zero used for undefined preprocessing identifier
3707 # remark #593: variable "curs_sb_left_arrow" was set but never used
3708 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
3709 # remark #869: parameter "tw" was never referenced
3710 # remark #981: operands are evaluated in unspecified order
3711 # warning #269: invalid format string conversion
3713 AC_CHECKING([for $CC warning options])
3714 cf_save_CXXFLAGS="$CXXFLAGS"
3715 EXTRA_CXXFLAGS="-Wall"
3728 CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt"
3729 if AC_TRY_EVAL(ac_compile); then
3730 test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3731 EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
3734 CXXFLAGS="$cf_save_CXXFLAGS"
3736 elif test "$GXX" = yes
3738 AC_CHECKING([for $CXX warning options])
3739 cf_save_CXXFLAGS="$CXXFLAGS"
3740 EXTRA_CXXFLAGS="-W -Wall"
3741 cf_gxx_extra_warnings=""
3742 test "$with_ext_const" = yes && cf_gxx_extra_warnings="Wwrite-strings"
3743 case "$GXX_VERSION" in
3747 cf_gxx_extra_warnings="$cf_gxx_extra_warnings Weffc++"
3754 Wignored-qualifiers \
3756 Woverloaded-virtual \
3764 Wundef $cf_gxx_extra_warnings $1
3766 CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt"
3767 if AC_TRY_EVAL(ac_compile); then
3768 test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3769 EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
3771 test -n "$verbose" && AC_MSG_RESULT(... no -$cf_opt)
3774 CXXFLAGS="$cf_save_CXXFLAGS"
3779 AC_SUBST(EXTRA_CXXFLAGS)
3781 dnl ---------------------------------------------------------------------------
3782 dnl CF_HASHED_DB version: 7 updated: 2015/04/18 08:56:57
3784 dnl Look for an instance of the Berkeley hashed database.
3786 dnl $1 = optional parameter, to specify install-prefix for the database.
3787 AC_DEFUN([CF_HASHED_DB],
3794 if test -d "$1" ; then
3795 CF_ADD_INCDIR($1/include)
3796 CF_ADD_LIBDIR($1/lib)
3800 AC_MSG_WARN(no such directory $1)
3803 CF_FIND_SUB_INCDIR($1)
3804 CF_FIND_SUB_LIBDIR($1)
3810 AC_CHECK_HEADER(db.h,[
3811 CF_HASHED_DB_VERSION
3812 if test "$cf_cv_hashed_db_version" = unknown ; then
3813 AC_MSG_ERROR(Cannot determine version of db)
3816 if test "$cf_cv_hashed_db_libs" = unknown ; then
3817 AC_MSG_ERROR(Cannot determine library for db)
3818 elif test "$cf_cv_hashed_db_libs" != default ; then
3819 CF_ADD_LIB($cf_cv_hashed_db_libs)
3823 AC_MSG_ERROR(Cannot find db.h)
3826 dnl ---------------------------------------------------------------------------
3827 dnl CF_HASHED_DB_LIBS version: 10 updated: 2021/01/02 17:09:14
3828 dnl -----------------
3829 dnl Given that we have the header and version for hashed database, find the
3830 dnl library information.
3831 AC_DEFUN([CF_HASHED_DB_LIBS],
3833 AC_CACHE_CHECK(for db libraries, cf_cv_hashed_db_libs,[
3834 cf_cv_hashed_db_libs=unknown
3835 for cf_db_libs in "" db$cf_cv_hashed_db_version db-$cf_cv_hashed_db_version db ''
3837 cf_save_libs="$LIBS"
3838 if test -n "$cf_db_libs"; then
3839 CF_ADD_LIB($cf_db_libs)
3841 CF_MSG_LOG(checking for library $cf_db_libs)
3843 $ac_includes_default
3846 char *path = "/tmp/foo";
3847 #ifdef DB_VERSION_MAJOR
3848 #if DB_VERSION_MAJOR >= 4
3850 db_create(&result, NULL, 0);
3851 result->open(result,
3858 #elif DB_VERSION_MAJOR >= 3
3860 db_create(&result, NULL, 0);
3861 result->open(result,
3867 #elif DB_VERSION_MAJOR >= 2
3876 #endif /* DB_VERSION_MAJOR */
3878 DB *result = dbopen(path,
3884 ${cf_cv_main_return:-return}(result != 0)
3886 if test -n "$cf_db_libs" ; then
3887 cf_cv_hashed_db_libs=$cf_db_libs
3889 cf_cv_hashed_db_libs=default
3891 LIBS="$cf_save_libs"
3894 LIBS="$cf_save_libs"
3898 dnl ---------------------------------------------------------------------------
3899 dnl CF_HASHED_DB_VERSION version: 5 updated: 2023/02/18 17:41:25
3900 dnl --------------------
3901 dnl Given that we have the header file for hashed database, find the version
3903 AC_DEFUN([CF_HASHED_DB_VERSION],
3905 AC_CACHE_CHECK(for version of db, cf_cv_hashed_db_version,[
3906 cf_cv_hashed_db_version=unknown
3908 for cf_db_version in 1 2 3 4 5 6
3910 CF_MSG_LOG(checking for db version $cf_db_version)
3912 $ac_includes_default
3915 #ifdef DB_VERSION_MAJOR
3916 /* db2 (DB_VERSION_MAJOR=2) has also DB_VERSION_MINOR, tested with 7 */
3917 #if $cf_db_version == DB_VERSION_MAJOR
3920 #error $cf_db_version is not DB_VERSION_MAJOR
3923 #if $cf_db_version == 1
3924 /* ok: assuming this is DB 1.8.5 */
3926 #error $cf_db_version is not 1
3930 cf_cv_hashed_db_version=$cf_db_version
3936 dnl ---------------------------------------------------------------------------
3937 dnl CF_HEADER_PATH version: 15 updated: 2021/01/01 13:31:04
3939 dnl Construct a search-list of directories for a nonstandard header-file
3942 dnl $1 = the variable to return as result
3943 dnl $2 = the package name
3944 AC_DEFUN([CF_HEADER_PATH],
3948 # collect the current set of include-directories from compiler flags
3949 cf_header_path_list=""
3950 if test -n "${CFLAGS}${CPPFLAGS}" ; then
3951 for cf_header_path in $CPPFLAGS $CFLAGS
3953 case "$cf_header_path" in
3955 cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
3956 CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE)
3957 cf_header_path_list="$cf_header_path_list [$]$1"
3963 # add the variations for the package we are looking for
3964 CF_SUBDIR_PATH($1,$2,include)
3966 test "$includedir" != NONE && \
3967 test "$includedir" != "/usr/include" && \
3968 test -d "$includedir" && {
3969 test -d "$includedir" && $1="[$]$1 $includedir"
3970 test -d "$includedir/$2" && $1="[$]$1 $includedir/$2"
3973 test "$oldincludedir" != NONE && \
3974 test "$oldincludedir" != "/usr/include" && \
3975 test -d "$oldincludedir" && {
3976 test -d "$oldincludedir" && $1="[$]$1 $oldincludedir"
3977 test -d "$oldincludedir/$2" && $1="[$]$1 $oldincludedir/$2"
3980 $1="[$]$1 $cf_header_path_list"
3982 dnl ---------------------------------------------------------------------------
3983 dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54
3985 dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
3986 AC_DEFUN([CF_HELP_MESSAGE],
3987 [CF_ACVERSION_CHECK(2.53,[],[
3988 AC_DIVERT_HELP($1)])dnl
3990 dnl ---------------------------------------------------------------------------
3991 dnl CF_INCLUDE_DIRS version: 10 updated: 2014/09/19 20:58:42
3993 dnl Construct the list of include-options according to whether we're building
3994 dnl in the source directory or using '--srcdir=DIR' option.
3995 AC_DEFUN([CF_INCLUDE_DIRS],
3997 if test "$srcdir" != "."; then
3998 CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
4000 CPPFLAGS="-I../include $CPPFLAGS"
4001 if test "$srcdir" != "."; then
4002 CPPFLAGS="-I\${srcdir} $CPPFLAGS"
4004 CPPFLAGS="-I. $CPPFLAGS"
4007 dnl ---------------------------------------------------------------------------
4008 dnl CF_INSTALL_OPTS version: 3 updated: 2023/06/03 15:17:30
4010 dnl prompt for/fill-in useful install-program options
4011 AC_DEFUN([CF_INSTALL_OPTS],
4016 CF_INSTALL_OPT_STRIP_PROG
4018 dnl ---------------------------------------------------------------------------
4019 dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42
4020 dnl ----------------
4021 dnl Almost all "install" programs default to the current user's ownership.
4022 dnl Almost - MINIX is an exception.
4023 AC_DEFUN([CF_INSTALL_OPT_O],
4025 AC_MSG_CHECKING(if install needs to be told about ownership)
4026 case `$ac_config_guess` in
4035 AC_MSG_RESULT($with_install_o)
4036 if test "x$with_install_o" = xyes
4038 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'`"
4043 AC_SUBST(INSTALL_OPT_O)
4045 dnl ---------------------------------------------------------------------------
4046 dnl CF_INSTALL_OPT_P version: 3 updated: 2021/01/01 13:31:04
4047 dnl ----------------
4048 dnl Some install-programs accept a "-p" option to preserve file modification
4049 dnl timestamps. That can be useful as an install option, as well as a way to
4050 dnl avoid the need for ranlib after copying a static archive.
4051 AC_DEFUN([CF_INSTALL_OPT_P],
4053 : "${INSTALL:=install}"
4054 AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[
4059 if $INSTALL -p conftest.in conftest.out 2>/dev/null
4061 if test -f conftest.out/conftest.in
4063 test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
4064 test conftest.out/conftest.in -nt conftest.in 2>conftest.err
4065 if test -s conftest.err
4080 dnl ---------------------------------------------------------------------------
4081 dnl CF_INSTALL_OPT_S version: 3 updated: 2021/01/05 19:23:48
4082 dnl ----------------
4083 dnl By default, we should strip executables which are installed, but leave the
4084 dnl ability to suppress that for unit-testing.
4085 AC_DEFUN([CF_INSTALL_OPT_S],
4087 AC_MSG_CHECKING(if you want to install stripped executables)
4088 CF_ARG_DISABLE(stripping,
4089 [ --disable-stripping do not strip (debug info) installed executables],
4090 [enable_stripping=no],
4091 [enable_stripping=yes])
4092 AC_MSG_RESULT($enable_stripping)
4094 if test "$enable_stripping" = yes
4100 AC_SUBST(INSTALL_OPT_S)
4102 dnl ---------------------------------------------------------------------------
4103 dnl CF_INSTALL_OPT_STRIP_PROG version: 1 updated: 2023/06/03 15:17:30
4104 dnl -------------------------
4105 dnl Provide an option for overriding the strip program used in install "-s"
4107 dnl coreutils install provides a --strip-program option
4108 dnl FreeBSD uses STRIPBIN environment variable, while NetBSD and OpenBSD use
4109 dnl STRIP environment variable. Other versions of install do not support this.
4110 AC_DEFUN([CF_INSTALL_OPT_STRIP_PROG],
4112 AC_REQUIRE([CF_INSTALL_OPT_S])
4113 if test -n "$INSTALL_OPT_S"
4115 AC_MSG_CHECKING(if you want to specify strip-program)
4116 AC_ARG_WITH(strip-program,
4117 [ --with-strip-program=XX specify program to use when stripping in install],
4118 [with_strip_program=$withval],
4119 [with_strip_program=no])
4120 AC_MSG_RESULT($with_strip_program)
4121 if test "$with_strip_program" != no
4123 AC_MSG_CHECKING(if strip-program is supported with this installer)
4124 cf_install_program=`echo "$INSTALL" | sed -e 's%[[ ]]*[[ ]]-.%%'`
4125 check_install_strip=no
4126 if test -f "$cf_install_program"
4128 check_install_version=`"$cf_install_program" --version 2>/dev/null | head -n 1 | grep coreutils`
4129 if test -n "$check_install_version"
4131 check_install_strip="option"
4133 for check_strip_variable in STRIPBIN STRIP
4135 if strings "$cf_install_program" | grep "^$check_strip_variable[$]" >/dev/null
4137 check_install_strip="environ"
4143 AC_MSG_RESULT($check_install_strip)
4144 case "$check_install_strip" in
4146 AC_MSG_WARN($cf_install_program does not support strip program option)
4147 with_strip_program=no
4150 cat >install.tmp <<-CF_EOF
4152 STRIPBIN="$with_strip_program" \\
4153 STRIP="$with_strip_program" \\
4156 INSTALL="`pwd`/install.tmp"
4158 CF_VERBOSE(created $INSTALL)
4161 INSTALL_OPT_S="$INSTALL_OPT_S --strip-program=\"$with_strip_program\""
4166 AC_SUBST(INSTALL_OPT_S)
4168 dnl ---------------------------------------------------------------------------
4169 dnl CF_INTEL_COMPILER version: 9 updated: 2023/02/18 17:41:25
4170 dnl -----------------
4171 dnl Check if the given compiler is really the Intel compiler for Linux. It
4172 dnl tries to imitate gcc, but does not return an error when it finds a mismatch
4173 dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
4175 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
4176 dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from
4177 dnl the wrappers for gcc and g++ warnings.
4179 dnl $1 = GCC (default) or GXX
4180 dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
4181 dnl $3 = CFLAGS (default) or CXXFLAGS
4182 AC_DEFUN([CF_INTEL_COMPILER],[
4183 AC_REQUIRE([AC_CANONICAL_HOST])
4184 ifelse([$2],,INTEL_COMPILER,[$2])=no
4186 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
4189 AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
4190 cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
4191 ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
4193 #ifdef __INTEL_COMPILER
4195 #error __INTEL_COMPILER is not defined
4197 ],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
4198 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
4200 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
4201 AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
4206 dnl ---------------------------------------------------------------------------
4207 dnl CF_ISASCII version: 4 updated: 2012/10/06 17:56:13
4209 dnl Check if we have either a function or macro for 'isascii()'.
4210 AC_DEFUN([CF_ISASCII],
4212 AC_MSG_CHECKING(for isascii)
4213 AC_CACHE_VAL(cf_cv_have_isascii,[
4214 AC_TRY_LINK([#include <ctype.h>],[int x = isascii(' ')],
4215 [cf_cv_have_isascii=yes],
4216 [cf_cv_have_isascii=no])
4218 AC_MSG_RESULT($cf_cv_have_isascii)
4219 test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII,1,[Define to 1 if we have isascii()])
4221 dnl ---------------------------------------------------------------------------
4222 dnl CF_LARGEFILE version: 12 updated: 2020/03/19 20:23:48
4224 dnl Add checks for large file support.
4225 AC_DEFUN([CF_LARGEFILE],[
4226 ifdef([AC_FUNC_FSEEKO],[
4228 if test "$enable_largefile" != no ; then
4231 # Normally we would collect these definitions in the config.h,
4232 # but (like _XOPEN_SOURCE), some environments rely on having these
4233 # defined before any of the system headers are included. Another
4234 # case comes up with C++, e.g., on AIX the compiler compiles the
4235 # header files by themselves before looking at the body files it is
4236 # told to compile. For ncurses, those header files do not include
4238 if test "$ac_cv_sys_large_files" != no
4240 CF_APPEND_TEXT(CPPFLAGS,-D_LARGE_FILES)
4242 if test "$ac_cv_sys_largefile_source" != no
4244 CF_APPEND_TEXT(CPPFLAGS,-D_LARGEFILE_SOURCE)
4246 if test "$ac_cv_sys_file_offset_bits" != no
4248 CF_APPEND_TEXT(CPPFLAGS,-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits)
4251 AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[
4253 #pragma GCC diagnostic error "-Wincompatible-pointer-types"
4254 #include <sys/types.h>
4257 /* if transitional largefile support is setup, this is true */
4258 extern struct dirent64 * readdir(DIR *);
4259 struct dirent64 *x = readdir((DIR *)0);
4260 struct dirent *y = readdir((DIR *)0);
4264 [cf_cv_struct_dirent64=yes],
4265 [cf_cv_struct_dirent64=no])
4267 test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Define to 1 if we have struct dirent64])
4271 dnl ---------------------------------------------------------------------------
4272 dnl CF_LDFLAGS_STATIC version: 14 updated: 2021/01/02 17:09:14
4273 dnl -----------------
4274 dnl Check for compiler/linker flags used to temporarily force usage of static
4275 dnl libraries. This depends on the compiler and platform. Use this to help
4276 dnl ensure that the linker picks up a given library based on its position in
4277 dnl the list of linker options and libraries.
4278 AC_DEFUN([CF_LDFLAGS_STATIC],[
4280 if test "$GCC" = yes ; then
4281 case "$cf_cv_system_name" in
4282 (OS/2*|os2*|aix[[4]]*|solaris2.1[[0-9]]|darwin*)
4286 (*) # normally, except when broken
4287 LDFLAGS_STATIC=-static
4288 LDFLAGS_SHARED=-dynamic
4292 case "$cf_cv_system_name" in
4293 (aix[[4-7]]*) # from ld manpage
4294 LDFLAGS_STATIC=-bstatic
4295 LDFLAGS_SHARED=-bdynamic
4297 (hpux*) # from ld manpage for hpux10.20, hpux11.11
4298 # We could also use just "archive" and "shared".
4299 LDFLAGS_STATIC=-Wl,-a,archive_shared
4300 LDFLAGS_SHARED=-Wl,-a,shared_archive
4302 (irix*) # from ld manpage IRIX64
4303 LDFLAGS_STATIC=-Bstatic
4304 LDFLAGS_SHARED=-Bdynamic
4306 (osf[[45]]*) # from ld manpage osf4.0d, osf5.1
4307 # alternative "-oldstyle_liblookup" (not in cc manpage)
4308 LDFLAGS_STATIC=-noso
4309 LDFLAGS_SHARED=-so_archive
4312 LDFLAGS_STATIC=-Bstatic
4313 LDFLAGS_SHARED=-Bdynamic
4318 if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED"
4320 AC_MSG_CHECKING(if linker supports switching between static/dynamic)
4323 cat >conftest.$ac_ext <<EOF
4324 #line __oline__ "configure"
4326 int cf_ldflags_static(FILE *fp) { return fflush(fp); }
4328 if AC_TRY_EVAL(ac_compile) ; then
4329 ( $AR $ARFLAGS libconftest.a conftest.o ) 2>&AC_FD_CC 1>/dev/null
4330 ( eval $RANLIB libconftest.a ) 2>&AC_FD_CC >/dev/null
4334 cf_save_LIBS="$LIBS"
4336 LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS"
4338 #line __oline__ "configure"
4340 int cf_ldflags_static(FILE *fp);
4342 return cf_ldflags_static(stdin);
4344 # some linkers simply ignore the -dynamic
4345 case x`file "conftest$ac_exeext" 2>/dev/null` in
4347 cf_ldflags_static=no
4350 cf_ldflags_static=yes
4353 ],[cf_ldflags_static=no])
4356 LIBS="$cf_save_LIBS"
4358 AC_MSG_RESULT($cf_ldflags_static)
4360 if test "$cf_ldflags_static" != yes
4370 AC_SUBST(LDFLAGS_STATIC)
4371 AC_SUBST(LDFLAGS_SHARED)
4373 dnl ---------------------------------------------------------------------------
4374 dnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04
4376 dnl For the given system and compiler, find the compiler flags to pass to the
4377 dnl loader to use the "rpath" feature.
4378 AC_DEFUN([CF_LD_RPATH_OPT],
4380 AC_REQUIRE([CF_CHECK_CACHE])
4383 if test "x$cf_cv_enable_rpath" != xno
4385 AC_MSG_CHECKING(for an rpath option)
4386 case "$cf_cv_system_name" in
4388 if test "$GCC" = yes; then
4389 LD_RPATH_OPT="-Wl,-rpath,"
4391 LD_RPATH_OPT="-rpath "
4394 (linux*|gnu*|k*bsd*-gnu|freebsd*)
4395 LD_RPATH_OPT="-Wl,-rpath,"
4397 (openbsd[[2-9]].*|mirbsd*)
4398 LD_RPATH_OPT="-Wl,-rpath,"
4401 LD_RPATH_OPT="-rpath "
4404 LD_RPATH_OPT="-Wl,-rpath,"
4407 LD_RPATH_OPT="-rpath "
4415 AC_MSG_RESULT($LD_RPATH_OPT)
4417 case "x$LD_RPATH_OPT" in
4419 AC_MSG_CHECKING(if we need a space after rpath option)
4420 cf_save_LIBS="$LIBS"
4421 CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
4422 AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
4423 LIBS="$cf_save_LIBS"
4424 AC_MSG_RESULT($cf_rpath_space)
4425 test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
4430 dnl ---------------------------------------------------------------------------
4431 dnl CF_LD_SEARCHPATH version: 4 updated: 2022/08/27 15:43:08
4432 dnl ----------------
4433 dnl Try to obtain the linker's search-path, for use in scripts.
4435 dnl Ignore LD_LIBRARY_PATH, etc.
4436 AC_DEFUN([CF_LD_SEARCHPATH],[
4437 AC_CACHE_CHECK(for linker search path,cf_cv_ld_searchpath,[
4439 if test "$cross_compiling" != yes ; then
4441 # GNU binutils' ld does not involve permissions which may stop ldconfig.
4442 cf_pathlist=`${LD:-ld} --verbose 2>/dev/null | grep SEARCH_DIR | sed -e 's,SEARCH_DIR[[("=]][[("=]]*,,g' -e 's/"[[)]];//gp' | sort -u`
4444 # The -NX options tell newer versions of Linux ldconfig to not attempt to
4445 # update the cache, which makes it run faster.
4446 test -z "$cf_pathlist" && \
4447 cf_pathlist=`(ldconfig -NX -v) 2>/dev/null | sed -e '/^[[ ]]/d' -e 's/:$//' | sort -u`
4449 test -z "$cf_pathlist" &&
4450 cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e '/^[[ ]]/d' -e 's/:$//p' | sort -u`
4452 # This works with OpenBSD 6.5, which lists only filenames
4453 test -z "$cf_pathlist" &&
4454 cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e 's,^Adding \(.*\)/.*[$],\1,p' | sort -u`
4456 if test -z "$cf_pathlist"
4458 # dyld default path with MacOS
4459 if test -f /usr/bin/otool && test "x`uname -s`" = xDarwin
4461 # do this to bypass check
4462 cf_cv_ld_searchpath='$HOME/lib'
4463 cf_pathlist="/usr/local/lib /lib /usr/lib"
4467 if test -z "$cf_pathlist"
4469 # Solaris is "SunOS"
4470 if test -f /usr/bin/isainfo && test "x`uname -s`" = xSunOS
4472 case x`(isainfo -b)` in
4474 cf_pathlist="$cf_pathlist /lib/64 /usr/lib/64"
4477 test -d /usr/ccs/lib && cf_pathlist="$cf_pathlist /usr/ccs/lib"
4478 cf_pathlist="$cf_pathlist /lib /usr/lib"
4481 AC_MSG_WARN(problem with Solaris architecture)
4487 if test -z "$cf_pathlist"
4490 if test x"`uname -s`" = xHP-UX
4492 case x`getconf LONG_BIT` in
4494 cf_pathlist="/usr/lib/hpux64"
4497 cf_pathlist="/usr/lib/hpux32"
4505 # If nothing else, assume it is conventional
4506 test -z "$cf_pathlist" && cf_pathlist="/usr/lib /lib"
4508 # Finally, check that this is only directories
4509 for cf_path in [$]0 $cf_pathlist
4511 if test -d "$cf_path"; then
4512 test -n "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath="${cf_cv_ld_searchpath} "
4513 cf_cv_ld_searchpath="${cf_cv_ld_searchpath}${cf_path}"
4517 # Ensure that it is nonempty
4518 test -z "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath=/usr/lib
4521 LD_SEARCHPATH=`echo "$cf_cv_ld_searchpath"|sed -e 's/ /|/g'`
4522 AC_SUBST(LD_SEARCHPATH)
4524 dnl ---------------------------------------------------------------------------
4525 dnl CF_LIBRARY_PATH version: 11 updated: 2021/01/01 13:31:04
4527 dnl Construct a search-list of directories for a nonstandard library-file
4530 dnl $1 = the variable to return as result
4531 dnl $2 = the package name
4532 AC_DEFUN([CF_LIBRARY_PATH],
4535 cf_library_path_list=""
4536 if test -n "${LDFLAGS}${LIBS}" ; then
4537 for cf_library_path in $LDFLAGS $LIBS
4539 case "$cf_library_path" in
4541 cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
4542 CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE)
4543 cf_library_path_list="$cf_library_path_list [$]$1"
4549 CF_SUBDIR_PATH($1,$2,lib)
4551 $1="$cf_library_path_list [$]$1"
4553 dnl ---------------------------------------------------------------------------
4554 dnl CF_LIBTOOL_VERSION version: 1 updated: 2013/04/06 18:03:09
4555 dnl ------------------
4556 AC_DEFUN([CF_LIBTOOL_VERSION],[
4557 if test -n "$LIBTOOL" && test "$LIBTOOL" != none
4559 cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([[^)]]*)//g' -e 's/^[[^1-9]]*//' -e 's/[[^0-9.]].*//'`
4561 cf_cv_libtool_version=
4563 test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
4565 dnl ---------------------------------------------------------------------------
4566 dnl CF_LIB_PREFIX version: 14 updated: 2021/01/01 13:31:04
4568 dnl Compute the library-prefix for the given host system
4569 dnl $1 = variable to set
4570 define([CF_LIB_PREFIX],
4572 case "$cf_cv_system_name" in
4574 if test "$DFT_LWR_MODEL" = libtool; then
4583 (*) LIB_PREFIX='lib'
4586 ifelse($1,,,[$1=$LIB_PREFIX])
4587 AC_SUBST(LIB_PREFIX)
4589 dnl ---------------------------------------------------------------------------
4590 dnl CF_LIB_RULES version: 100 updated: 2023/06/03 15:17:30
4592 dnl Append definitions and rules for the given models to the subdirectory
4593 dnl Makefiles, and the recursion rule for the top-level Makefile. If the
4594 dnl subdirectory is a library-source directory, modify the Libs_To_Make list in
4595 dnl the corresponding makefile to list the models that we'll generate.
4597 dnl For shared libraries, make a list of symbolic links to construct when
4598 dnl generating each library. The convention used for Linux is the simplest
4601 dnl lib<name>.so.<major> ->
4602 dnl lib<name>.so.<maj>.<minor>
4604 dnl Note: Libs_To_Make is mixed case, since it is not a pure autoconf variable.
4605 AC_DEFUN([CF_LIB_RULES],
4606 [AC_REQUIRE([AC_PROG_FGREP])dnl
4607 AC_REQUIRE([CF_MAKE_PHONY])dnl
4609 cf_prefix=$LIB_PREFIX
4610 AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
4612 case "$cf_cv_shlib_version" in
4613 (cygdll|msysdll|mingw|msvcdll)
4614 TINFO_NAME=$TINFO_ARG_SUFFIX
4619 if test -n "$TINFO_SUFFIX" ; then
4620 case "$TINFO_SUFFIX" in
4622 TINFO_NAME="${TINFO_NAME}tw${EXTRA_SUFFIX}"
4623 TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^tw'$EXTRA_SUFFIX'//'`
4626 TINFO_NAME="${TINFO_NAME}t${EXTRA_SUFFIX}"
4627 TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^t'$EXTRA_SUFFIX'//'`
4630 TINFO_NAME="${TINFO_NAME}w${EXTRA_SUFFIX}"
4631 TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^w'$EXTRA_SUFFIX'//'`
4636 for cf_dir in $SRC_SUBDIRS
4638 if test ! -d "$srcdir/$cf_dir" ; then
4640 elif test -f "$srcdir/$cf_dir/modules" ; then
4645 if test -n "${cf_cv_abi_default}" && test "x${cf_cv_abi_default}" != "x5"
4647 cf_awk_program="$cf_awk_program\
4648 /deprecated in ABI${cf_cv_abi_default}/ { next; }\
4649 { sub(\"NCURSES([[WT]]+)?\", \"&${cf_cv_abi_default}\"); }\
4653 if test "x$WILDCARD_SYMS" = xno
4655 cf_awk_program="$cf_awk_program\
4656 /[[ ]]_\\*;/ { skip=1; next; }\
4660 if test "x$cf_awk_program" != "x"
4662 cat >>$cf_dir/Makefile <<CF_EOF
4664 # Generated by CF_LIB_RULES
4665 resulting.map: $UNALTERED_SYMS
4666 $AWK 'BEGIN { skip = 1; last=""; } \
4668 { if ( last != "" && ( skip == 0 || \[$]\[$]0 !~ /}/ ) ) { print last; }\
4669 skip = 0; last = \[$]\[$]0; } \
4670 END { print last; }' < "$UNALTERED_SYMS" >\[$]@
4677 for cf_item in $cf_LIST_MODELS
4679 CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf)
4680 if test "$cf_dir" = "c++"
4682 CF_MAP_LIB_BASENAME(cf_libname,cxx)
4684 CF_MAP_LIB_BASENAME(cf_libname,$cf_dir)
4686 test -z "$cf_libname" && cf_libname="$cf_dir"
4687 if test "$cf_item" = shared ; then
4688 if test -n "${LIB_SUFFIX}"
4690 cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'`
4692 cf_shared_suffix="$cf_suffix"
4694 if test "$cf_cv_do_symlinks" = yes ; then
4697 case "$cf_cv_shlib_version" in
4699 cf_version_name=REL_VERSION
4702 cf_version_name=ABI_VERSION
4706 if test -n "$cf_version_name"
4708 case "$cf_cv_system_name" in
4711 cf_suffix="${USE_LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix"
4714 cf_suffix="$cf_suffix"'.${'$cf_version_name'}'
4718 if test -n "${USE_LIB_SUFFIX}"
4720 cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'`
4722 cf_shared_suffix="$cf_suffix"
4725 # cygwin needs import library, and has unique naming convention
4726 # use autodetected ${cf_prefix} for import lib and static lib, but
4727 # use 'cyg' prefix for shared lib.
4728 case "$cf_cv_shlib_version" in
4730 cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4731 cf_add_lib="../lib/cyg${cf_libname}${cf_cygsuf}"
4734 cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4735 cf_add_lib="../lib/msys-${cf_libname}${cf_cygsuf}"
4738 cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4739 cf_add_lib="../lib/lib${cf_libname}${cf_cygsuf}"
4742 cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4743 cf_add_lib="../lib/${cf_libname}${cf_cygsuf}"
4749 if test -n "$cf_add_lib"
4751 Libs_To_Make="$Libs_To_Make $cf_add_lib"
4755 cf_add_lib="../lib/${cf_prefix}${cf_libname}${cf_suffix}"
4756 Libs_To_Make="$Libs_To_Make $cf_add_lib"
4759 if test "$cf_dir" = ncurses ; then
4760 cf_subsets="$LIB_SUBSETS"
4761 cf_r_parts="$cf_subsets"
4762 cf_liblist="$Libs_To_Make"
4764 while test -n "$cf_r_parts"
4766 cf_l_parts=`echo "$cf_r_parts" |sed -e 's/ .*$//'`
4767 cf_r_parts=`echo "$cf_r_parts" |sed -e 's/^[[^ ]]* //'`
4768 if test "$cf_l_parts" != "$cf_r_parts" ; then
4770 case "$cf_l_parts" in
4772 cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g`
4775 cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g`
4781 if test -n "$cf_add_lib"; then
4782 Libs_To_Make="$cf_add_lib $Libs_To_Make"
4789 cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'`
4792 if test "$cf_dir" = c++; then
4793 if test "x$with_shared_cxx" != xyes && test -n "$cf_shared_suffix"; then
4795 for cf_item in $Libs_To_Make
4801 cf_item=`echo "$cf_item" | sed -e "s,"$cf_shared_suffix",.a,"`
4804 for cf_test in $cf_list
4806 if test "$cf_test" = "$cf_item"
4808 cf_LIST_MODELS=`echo "$cf_LIST_MODELS" | sed -e 's/normal//'`
4813 test -n "$cf_item" && cf_list="$cf_list $cf_item"
4815 Libs_To_Make="$cf_list"
4819 sed -e "s%@Libs_To_Make@%$Libs_To_Make%" \
4820 -e "s%@SHARED_LIB@%$SHARED_LIB%" \
4821 "$cf_dir/Makefile" >$cf_dir/Makefile.out
4822 mv "$cf_dir/Makefile.out" "$cf_dir/Makefile"
4824 $AWK -f "$srcdir/mk-0th.awk" \
4825 libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" ticlib="$TICS_LIB_SUFFIX" termlib="$TINFO_LIB_SUFFIX" \
4826 "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile
4828 for cf_subset in $cf_subsets
4831 for cf_item in $cf_LIST_MODELS
4834 echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})"
4835 CF_UPPER(cf_ITEM,$cf_item)
4838 if test "$CXX_MODEL" = SHARED; then
4839 case "$cf_cv_shlib_version" in
4840 (cygdll|msysdll|mingw|msvcdll)
4841 test "x$with_shared_cxx" = xno && CF_VERBOSE(overriding CXX_MODEL to SHARED)
4845 test "x$with_shared_cxx" = xno && CXX_MODEL=NORMAL
4850 CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf)
4851 CF_OBJ_SUBDIR($cf_item,cf_subdir)
4853 # Test for case where we build libtinfo with a different name.
4855 if test "$cf_dir" = ncurses ; then
4856 case "$cf_subset" in
4858 cf_libname=${cf_libname}$USE_LIB_SUFFIX
4861 cf_libname=$TINFO_LIB_SUFFIX
4864 cf_libname=$TICS_LIB_SUFFIX
4867 elif test "$cf_dir" = c++ ; then
4868 CF_MAP_LIB_BASENAME(cf_libname,cxx)
4869 cf_libname=${cf_libname}$USE_LIB_SUFFIX
4871 CF_MAP_LIB_BASENAME(cf_libname,$cf_dir)
4872 cf_libname=${cf_libname}$USE_LIB_SUFFIX
4874 if test -n "${USE_ARG_SUFFIX}" ; then
4875 # undo $USE_LIB_SUFFIX add-on in CF_LIB_SUFFIX
4876 cf_suffix=`echo "$cf_suffix" |sed -e "s%^${USE_LIB_SUFFIX}%%"`
4879 # These dependencies really are for development, not
4880 # builds, but they are useful in porting, too.
4881 cf_depend="../include/ncurses_cfg.h"
4882 if test "$srcdir" = "."; then
4885 cf_reldir="\${srcdir}"
4888 if test -f "$srcdir/$cf_dir/$cf_dir.priv.h" ; then
4889 cf_depend="$cf_depend $cf_reldir/$cf_dir.priv.h"
4890 elif test -f "$srcdir/$cf_dir/curses.priv.h" ; then
4891 cf_depend="$cf_depend $cf_reldir/curses.priv.h"
4895 old_cf_suffix="$cf_suffix"
4896 if test "$cf_cv_shlib_version_infix" = yes ; then
4897 if test -n "$USE_LIB_SUFFIX" ; then
4898 case "$USE_LIB_SUFFIX" in
4900 cf_libname=`echo "$cf_libname" | sed 's/tw'$EXTRA_SUFFIX'$//'`
4901 cf_suffix=`echo "$cf_suffix" | sed 's/^tw'$EXTRA_SUFFIX'//'`
4902 cf_dir_suffix=tw$EXTRA_SUFFIX
4905 cf_libname=`echo "$cf_libname" | sed 's/t'$EXTRA_SUFFIX'$//'`
4906 cf_suffix=`echo "$cf_suffix" | sed 's/^t'$EXTRA_SUFFIX'//'`
4907 cf_dir_suffix=t$EXTRA_SUFFIX
4910 cf_libname=`echo "$cf_libname" | sed 's/w'$EXTRA_SUFFIX'$//'`
4911 cf_suffix=`echo "$cf_suffix" | sed 's/^w'$EXTRA_SUFFIX'//'`
4912 cf_dir_suffix=w$EXTRA_SUFFIX
4915 cf_libname=`echo "$cf_libname" | sed 's/'$EXTRA_SUFFIX'$//'`
4916 cf_suffix=`echo "$cf_suffix" | sed 's/^'$EXTRA_SUFFIX'//'`
4917 cf_dir_suffix=$EXTRA_SUFFIX
4923 $AWK -f "$srcdir/mk-1st.awk" \
4924 name=${cf_libname}${cf_dir_suffix} \
4925 traces=$LIB_TRACING \
4927 CXX_MODEL=$CXX_MODEL \
4928 LIB_SUFFIX=$LIB_SUFFIX \
4929 USE_LIB_SUFFIX=$USE_LIB_SUFFIX \
4930 make_phony="${cf_cv_make_PHONY:-no}" \
4935 driver=$cf_cv_term_driver \
4937 TermlibRoot=$TINFO_NAME \
4938 TermlibSuffix=$TINFO_SUFFIX \
4939 ShlibVer=$cf_cv_shlib_version \
4940 ShlibVerInfix=$cf_cv_shlib_version_infix \
4941 ReLink=${cf_cv_do_relink:-no} \
4942 ReRanlib=${cf_cv_do_reranlib:-yes} \
4943 DoLinks=$cf_cv_do_symlinks \
4944 rmSoLocs=$cf_cv_rm_so_locs \
4945 ldconfig="$LDCONFIG" \
4946 overwrite=$WITH_OVERWRITE \
4947 depend="$cf_depend" \
4949 libtool_version="$LIBTOOL_VERSION" \
4950 "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile
4952 cf_suffix="$old_cf_suffix"
4954 for cf_subdir2 in $cf_subdirs lib
4956 test "$cf_subdir" = "$cf_subdir2" && break
4958 test "${cf_subset}.${cf_subdir2}" != "${cf_subset}.${cf_subdir}" && \
4959 $AWK -f "$srcdir/mk-2nd.awk" \
4961 traces=$LIB_TRACING \
4967 crenames=$cf_cv_prog_CC_c_o \
4968 cxxrenames=$cf_cv_prog_CXX_c_o \
4969 "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile
4970 cf_subdirs="$cf_subdirs $cf_subdir"
4975 echo ' ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@ )' >>Makefile
4979 echo '# generated by CF_LIB_RULES' >> Makefile
4981 if test "x$cf_cv_make_PHONY" = xyes ; then
4982 cat >> Makefile <<-CF_EOF
4986 .PHONY : install.includes
4987 .PHONY : uninstall.includes
4988 .PHONY : install.libs
4989 .PHONY : uninstall.libs
4993 for cf_dir in $SRC_SUBDIRS
4995 if test ! -d "$srcdir/$cf_dir" ; then
4999 if test -f "$cf_dir/Makefile" ; then
5002 echo 'libs \' >> Makefile
5003 echo 'install.libs \' >> Makefile
5004 echo 'uninstall.libs ::' >> Makefile
5005 echo ' ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@ )' >> Makefile
5010 if test -f "$srcdir/$cf_dir/modules" ; then
5012 if test "x$cf_cv_make_PHONY" = xyes ; then
5013 cat >> Makefile <<-CF_EOF
5015 .PHONY : install.$cf_dir
5016 .PHONY : uninstall.$cf_dir
5021 if test -f "$srcdir/$cf_dir/headers" ; then
5022 cat >> Makefile <<CF_EOF
5024 uninstall.includes \\
5028 cat >> Makefile <<CF_EOF
5035 uninstall.$cf_dir ::
5036 ( cd "$cf_dir" && \${MAKE} \${TOP_MFLAGS} \[$]@ )
5038 elif test -f "$srcdir/$cf_dir/headers" ; then
5039 cat >> Makefile <<CF_EOF
5045 uninstall.includes ::
5046 ( cd "$cf_dir" && \${MAKE} \${TOP_MFLAGS} \[$]@ )
5051 if test "x$cf_cv_make_PHONY" = xyes ; then
5052 cat >> Makefile <<-CF_EOF
5054 .PHONY : install.data
5055 .PHONY : uninstall.data
5059 if test "x$cf_with_db_install" = xyes; then
5060 cat >> Makefile <<CF_EOF
5062 install.libs uninstall.libs \\
5063 install.data uninstall.data ::
5064 $MAKE_TERMINFO ( cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@ )
5067 cat >> Makefile <<CF_EOF
5069 install.libs uninstall.libs ::
5070 ( cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@ )
5074 if test "x$cf_with_manpages" = xyes; then
5076 if test "x$cf_cv_make_PHONY" = xyes ; then
5077 cat >> Makefile <<-CF_EOF
5079 .PHONY : install.man
5080 .PHONY : uninstall.man
5084 cat >> Makefile <<CF_EOF
5088 ( cd man && \${MAKE} \${TOP_MFLAGS} \[$]@ )
5092 cat >> Makefile <<CF_EOF
5095 rm -f config.cache config.log config.status Makefile include/ncurses_cfg.h
5096 rm -f headers.sh headers.sed mk_shared_lib.sh
5097 rm -f edit_man.* man_alias.* *.tmp
5098 rm -rf \${DIRS_TO_MAKE}
5101 dnl If we're installing into a subdirectory of /usr/include, etc., we should
5102 dnl prepend the subdirectory's name to the "#include" paths. It won't hurt
5103 dnl anything, and will make it more standardized. It's awkward to decide this
5104 dnl at configuration because of quoting, so we'll simply make all headers
5105 dnl installed via a script that can do the right thing.
5107 rm -f headers.sed headers.sh
5109 dnl ( generating this script makes the makefiles a little tidier :-)
5110 echo creating headers.sh
5111 cat >headers.sh <<CF_EOF
5113 # This shell script is generated by the 'configure' script. It is invoked in a
5114 # subdirectory of the build tree. It generates a sed-script in the parent
5115 # directory that is used to adjust includes for header files that reside in a
5116 # subdirectory of /usr/include, etc.
5118 while test \[$]# != 3
5120 PRG="\$PRG \[$]1"; shift
5125 TMPSRC=\${TMPDIR:-/tmp}/\`basename \$SRC\`\$\$
5126 TMPSED=\${TMPDIR:-/tmp}/headers.sed\$\$
5127 echo installing \$SRC in \$DST
5130 if test "$WITH_CURSES_H" = yes; then
5131 cat >>headers.sh <<CF_EOF
5134 END=\`basename \$DST\`
5135 for i in \`cat \$REF/../*/headers |${FGREP-fgrep} -v "#"\`
5137 NAME=\`basename \$i\`
5138 echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
5148 cat >>headers.sh <<CF_EOF
5151 END=\`basename \$DST\`
5152 for i in \`cat \$REF/../*/headers |${FGREP-fgrep} -v "#"\`
5154 NAME=\`basename \$i\`
5155 if test "\$NAME" = "curses.h"
5157 echo "s/<curses.h>/<ncurses.h>/" >> \$TMPSED
5160 echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
5164 echo "s/<curses.h>/<ncurses.h>/" >> \$TMPSED
5169 cat >>headers.sh <<CF_EOF
5171 sed -f \$TMPSED \$SRC > \$TMPSRC
5172 NAME=\`basename \$SRC\`
5174 if test "$WITH_CURSES_H" != yes; then
5175 cat >>headers.sh <<CF_EOF
5176 test "\$NAME" = "curses.h" && NAME=ncurses.h
5179 cat >>headers.sh <<CF_EOF
5180 # Just in case someone gzip'd manpages, remove the conflicting copy.
5181 test -f \$DST/\$NAME.gz && rm -f \$DST/\$NAME.gz
5183 eval \$PRG \$TMPSRC \$DST/\$NAME
5184 rm -f \$TMPSRC \$TMPSED
5187 chmod 0755 headers.sh
5189 for cf_dir in $SRC_SUBDIRS
5191 if test ! -d "$srcdir/$cf_dir" ; then
5195 if test -f "$srcdir/$cf_dir/headers" ; then
5196 $AWK -f "$srcdir/mk-hdr.awk" \
5197 subset="$LIB_SUBSETS" \
5198 compat="$WITH_CURSES_H" \
5199 "$srcdir/$cf_dir/headers" >>$cf_dir/Makefile
5202 if test -f "$srcdir/$cf_dir/modules" ; then
5203 if test "$cf_dir" != "c++" ; then
5204 if test "x$cf_cv_make_PHONY" = xyes ; then
5205 cat >> $cf_dir/Makefile <<-CF_EOF
5211 cat >>$cf_dir/Makefile <<"CF_EOF"
5212 depend : ${AUTO_SRC}
5213 makedepend -- ${CPPFLAGS} -- ${C_SRC}
5215 # DO NOT DELETE THIS LINE -- make depend depends on it.
5220 AC_SUBST(Libs_To_Make)
5222 dnl ---------------------------------------------------------------------------
5223 dnl CF_LIB_SONAME version: 9 updated: 2021/01/04 18:48:01
5225 dnl Find the and soname for the given shared library. Set the cache variable
5226 dnl cf_cv_$3_soname to this, unless it is not found. Then set the cache
5227 dnl variable to "unknown".
5231 dnl $3 = library name
5232 AC_DEFUN([CF_LIB_SONAME],
5233 [AC_REQUIRE([AC_PROG_FGREP])dnl
5235 AC_CACHE_CHECK(for soname of $3 library,cf_cv_$3_soname,[
5237 cf_cv_$3_soname=unknown
5238 if test "$cross_compiling" != yes ; then
5239 cat >conftest.$ac_ext <<CF_EOF
5244 ${cf_cv_main_return:-return}(0);
5247 cf_save_LIBS="$LIBS"
5249 if AC_TRY_EVAL(ac_compile) ; then
5250 if AC_TRY_EVAL(ac_link) ; then
5251 cf_cv_$3_soname="`ldd \"conftest$ac_exeext\" 2>/dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | ${FGREP-fgrep} lib$3.`"
5252 test -z "$cf_cv_$3_soname" && cf_cv_$3_soname=unknown
5256 LIBS="$cf_save_LIBS"
5260 dnl ---------------------------------------------------------------------------
5261 dnl CF_LIB_SUFFIX version: 28 updated: 2021/01/01 16:53:59
5263 dnl Compute the library file-suffix from the given model name
5265 dnl $2 = variable to set (the nominal library suffix)
5266 dnl $3 = dependency variable to set (actual filename)
5267 dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
5268 AC_DEFUN([CF_LIB_SUFFIX],
5276 case "$cf_cv_system_name" in
5287 case "$cf_cv_system_name" in
5298 case "$cf_cv_system_name" in
5307 (cygwin*|msys*|mingw*)
5345 if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
5347 $2="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$2}"
5348 $3="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$3}"
5351 dnl ---------------------------------------------------------------------------
5352 dnl CF_LIB_TYPE version: 5 updated: 2015/04/17 21:13:04
5354 dnl Compute the string to append to -library from the given model name
5356 dnl $2 = variable to set
5357 dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
5358 AC_DEFUN([CF_LIB_TYPE],
5364 (profile) $2='_p' ;;
5367 test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
5369 dnl ---------------------------------------------------------------------------
5370 dnl CF_LINK_DATAONLY version: 13 updated: 2020/02/08 15:59:30
5371 dnl ----------------
5372 dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
5373 dnl only data (i.e., no functions), for example NeXT. On those systems we'll
5374 dnl have to provide wrappers for global tables to ensure they're linked
5376 AC_DEFUN([CF_LINK_DATAONLY],
5378 AC_MSG_CHECKING([if data-only library module links])
5379 AC_CACHE_VAL(cf_cv_link_dataonly,[
5381 cat >conftest.$ac_ext <<EOF
5382 #line __oline__ "configure"
5383 int testdata[[3]] = { 123, 456, 789 };
5385 if AC_TRY_EVAL(ac_compile) ; then
5386 mv conftest.o data.o && \
5387 ( $AR $ARFLAGS conftest.a data.o ) 2>&AC_FD_CC 1>/dev/null
5389 rm -f conftest.$ac_ext data.o
5390 cat >conftest.$ac_ext <<EOF
5391 #line __oline__ "configure"
5395 ${cf_cv_main_return:-return}(1); /* I'm told this linker is broken */
5397 extern int testdata[[3]];
5398 return testdata[[0]] == 123
5399 && testdata[[1]] == 456
5400 && testdata[[2]] == 789;
5404 if AC_TRY_EVAL(ac_compile); then
5405 mv conftest.o func.o && \
5406 ( $AR $ARFLAGS conftest.a func.o ) 2>&AC_FD_CC 1>/dev/null
5408 rm -f conftest.$ac_ext func.o
5409 ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null
5411 LIBS="conftest.a $LIBS"
5415 extern int testfunc();
5416 ${cf_cv_main_return:-return} (!testfunc());
5419 [cf_cv_link_dataonly=yes],
5420 [cf_cv_link_dataonly=no],
5421 [cf_cv_link_dataonly=unknown])
5424 AC_MSG_RESULT($cf_cv_link_dataonly)
5426 if test "$cf_cv_link_dataonly" = no ; then
5427 AC_DEFINE(BROKEN_LINKER,1,[if data-only library module does not link])
5430 AC_SUBST(BROKEN_LINKER)
5433 dnl ---------------------------------------------------------------------------
5434 dnl CF_LINK_FUNCS version: 12 updated: 2023/01/05 17:51:41
5436 dnl Most Unix systems have both link and symlink, a few don't have symlink.
5437 dnl A few non-Unix systems implement symlink, but not link.
5438 dnl A few non-systems implement neither (or have nonfunctional versions).
5440 dnl This allows for a 2-second difference in modification times to allow for
5441 dnl some marginal NFS implementations.
5442 AC_DEFUN([CF_LINK_FUNCS],
5451 if test "$cross_compiling" = yes ; then
5456 AC_CACHE_CHECK(if link/symlink functions work,cf_cv_link_funcs,[
5458 for cf_func in link symlink ; do
5460 $ac_includes_default
5465 char *src = "conftest.tmp";
5466 char *dst = "conftest.chk";
5467 struct stat src_sb, dst_sb;
5468 FILE *fp = fopen(src, "w");
5469 if (fp == 0) { fail = 3; } else {
5470 fclose(fp); stat(src, &src_sb);
5471 if ($cf_func(src, dst) < 0) {
5473 } else if (stat(dst, &dst_sb) < 0) {
5476 long diff = (dst_sb.st_mtime - src_sb.st_mtime);
5477 if (diff < 0) diff = -diff;
5478 if (diff > 2) fail = 3;
5482 unlink(dst); unlink(src);
5484 remove(dst); remove(src);
5486 ${cf_cv_main_return:-return} (fail);
5489 cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
5490 eval 'ac_cv_func_'$cf_func'=yes'],[
5491 eval 'ac_cv_func_'$cf_func'=no'],[
5492 eval 'ac_cv_func_'$cf_func'=error'])
5494 test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
5496 test "$ac_cv_func_link" = yes && AC_DEFINE(HAVE_LINK,1,[Define to 1 if we have link() function])
5497 test "$ac_cv_func_symlink" = yes && AC_DEFINE(HAVE_SYMLINK,1,[Define to 1 if we have symlink() function])
5500 dnl ---------------------------------------------------------------------------
5501 dnl CF_MAKEFLAGS version: 21 updated: 2021/09/04 06:47:34
5503 dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make'
5504 dnl options to lower-levels. It is very useful for "make -n" -- if we have it.
5505 dnl (GNU 'make' does both, something POSIX 'make', which happens to make the
5506 dnl ${MAKEFLAGS} variable incompatible because it adds the assignments :-)
5507 AC_DEFUN([CF_MAKEFLAGS],
5508 [AC_REQUIRE([AC_PROG_FGREP])dnl
5510 AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[
5512 for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
5514 cat >cf_makeflags.tmp <<CF_EOF
5517 @ echo '.$cf_option'
5519 cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp 2>/dev/null | ${FGREP-fgrep} -v "ing directory" | sed -e 's,[[ ]]*$,,'`
5520 case "$cf_result" in
5522 cf_result="`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`"
5523 case "$cf_result" in
5524 (.*CC=*) cf_cv_makeflags=
5526 (*) cf_cv_makeflags=$cf_option
5534 CF_MSG_LOG(given option \"$cf_option\", no match \"$cf_result\")
5538 rm -f cf_makeflags.tmp
5541 AC_SUBST(cf_cv_makeflags)
5543 dnl ---------------------------------------------------------------------------
5544 dnl CF_MAKE_PHONY version: 3 updated: 2021/01/08 16:08:21
5546 dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which
5547 dnl acts as a placeholder.
5549 dnl The ".PHONY" feature was proposed in 2011 here
5550 dnl https://www.austingroupbugs.net/view.php?id=523
5551 dnl and is scheduled for release in P1003.1 Issue 8 (late 2022).
5553 dnl This is not supported by SVr4 make (or SunOS 4, 4.3SD, etc), but works with
5554 dnl a few others (i.e., GNU make and the non-POSIX "BSD" make):
5556 dnl + This is a GNU make feature (since April 1988, but in turn from binutils,
5557 dnl date unspecified).
5559 dnl + It was adopted in NetBSD make in June 1995.
5561 dnl + The other BSD make programs are derived from the NetBSD make (and for
5562 dnl that reason are not actually different "implementations").
5564 dnl + Some features of NetBSD make were actually adapted from pmake, which
5565 dnl began as a modified GNU make starting in 1993.
5567 dnl + Version 3.8 of the dmake program in January 1992 also implemented this
5568 dnl GNU make extension, but is less well known than the BSD make.
5569 AC_DEFUN([CF_MAKE_PHONY],[
5570 AC_CACHE_CHECK(for \".PHONY\" make-support, cf_cv_make_PHONY,[
5573 mkdir conftest || exit 1
5575 cat >makefile <<'CF_EOF'
5579 @echo "** making [$]@ [$](DATA)"
5581 @echo "** making [$]@ [$](DATA)"
5583 @echo "** making [$]@ [$](DATA)"
5584 echo [$](DATA) > [$]@
5586 @echo "** making [$]@ [$](DATA)"
5587 echo [$](DATA) > [$]@
5589 for cf_data in 1 2 3
5591 ${MAKE:-make} always DATA=$cf_data
5592 ${MAKE:-make} once DATA=$cf_data
5593 ${MAKE:-make} -t always once
5594 if test -f always ; then
5595 echo "no (case 1)" > ../conftest.tmp
5596 elif test ! -f always.out ; then
5597 echo "no (case 2)" > ../conftest.tmp
5598 elif test ! -f once.out ; then
5599 echo "no (case 3)" > ../conftest.tmp
5600 elif ! cmp -s always.out once.out ; then
5601 echo "no (case 4)" > ../conftest.tmp
5602 diff always.out once.out
5604 cf_check="`cat always.out`"
5605 if test "x$cf_check" != "x$cf_data" ; then
5606 echo "no (case 5)" > ../conftest.tmp
5608 echo yes > ../conftest.tmp
5616 cf_cv_make_PHONY="`cat conftest.tmp`"
5621 test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY=
5622 test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY=
5623 AC_SUBST(MAKE_NO_PHONY)
5624 AC_SUBST(MAKE_PHONY)
5626 dnl ---------------------------------------------------------------------------
5627 dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
5629 dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have
5630 dnl a monocase filesystem.
5631 AC_DEFUN([CF_MAKE_TAGS],[
5632 AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
5634 AC_CHECK_PROGS(CTAGS, exctags ctags)
5635 AC_CHECK_PROGS(ETAGS, exetags etags)
5637 AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
5639 if test "$cf_cv_mixedcase" = yes ; then
5640 AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
5645 if test "$MAKE_UPPER_TAGS" = yes ; then
5651 if test "$MAKE_LOWER_TAGS" = yes ; then
5660 AC_SUBST(MAKE_UPPER_TAGS)
5661 AC_SUBST(MAKE_LOWER_TAGS)
5663 dnl ---------------------------------------------------------------------------
5664 dnl CF_MANPAGE_FORMAT version: 18 updated: 2023/05/19 18:35:02
5665 dnl -----------------
5666 dnl Option to allow user to override automatic configuration of manpage format.
5667 dnl There are several special cases:
5669 dnl compress - man checks for, can display compressed files
5670 dnl bzip2 - man checks for, can display bzip2'd files
5671 dnl gzip - man checks for, can display gzip'd files
5672 dnl xz - man checks for, can display xz'd files
5674 dnl BSDI - files in the cat-directories are suffixed ".0"
5675 dnl formatted - installer should format (put files in cat-directory)
5676 dnl catonly - installer should only format, e.g., for a turnkey system.
5678 dnl There are other configurations which this macro does not test, e.g., HPUX's
5679 dnl compressed manpages (but uncompressed manpages are fine, and HPUX's naming
5680 dnl convention would not match our use).
5681 AC_DEFUN([CF_MANPAGE_FORMAT],
5683 AC_REQUIRE([CF_PATHSEP])
5684 AC_MSG_CHECKING(format of man-pages)
5686 AC_ARG_WITH(manpage-format,
5687 [ --with-manpage-format specify manpage-format: gzip/compress/bzip2/xz,
5688 BSDI/normal and optionally formatted/catonly,
5689 e.g., gzip,formatted],
5690 [MANPAGE_FORMAT=$withval],
5691 [MANPAGE_FORMAT=unknown])
5693 test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown
5694 MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'`
5698 case "$MANPAGE_FORMAT" in
5700 if test -z "$MANPATH" ; then
5701 MANPATH="/usr/man:/usr/share/man"
5704 # look for the 'date' man-page (it is most likely to be installed!)
5710 IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
5711 for cf_dir in $MANPATH; do
5712 test -z "$cf_dir" && cf_dir=/usr/man
5713 for cf_name in $cf_dir/man*/$cf_example.[[01]]* $cf_dir/cat*/$cf_example.[[01]]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example
5715 cf_test=`echo "$cf_name" | sed -e 's/*//'`
5716 if test "x$cf_test" = "x$cf_name" ; then
5719 (*.bz2) MANPAGE_FORMAT="$MANPAGE_FORMAT bzip2";;
5720 (*.xz) MANPAGE_FORMAT="$MANPAGE_FORMAT xz";;
5721 (*.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
5722 (*.Z) MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
5723 (*.0) MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
5724 (*) MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
5738 # if we found a match in either man* or cat*, stop looking
5739 if test -n "$MANPAGE_FORMAT" ; then
5741 test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
5742 test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
5748 test "$cf_found" = yes && break
5751 # only check the first directory in $MANPATH where we find manpages
5752 if test -n "$MANPAGE_FORMAT" ; then
5756 # if we did not find the example, just assume it is normal
5757 test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
5761 for cf_option in $MANPAGE_FORMAT; do
5762 case "$cf_option" in
5763 (xz|bzip2|gzip|compress|BSDI|normal|formatted|catonly)
5766 cf_unknown="$cf_unknown $cf_option"
5773 AC_MSG_RESULT($MANPAGE_FORMAT)
5774 if test -n "$cf_unknown" ; then
5775 AC_MSG_WARN(Unexpected manpage-format $cf_unknown)
5778 cf_manpage_format=no
5779 cf_manpage_inboth=no
5780 cf_manpage_so_strip=
5781 cf_manpage_compress=
5783 for cf_item in $MANPAGE_FORMAT
5787 cf_manpage_format=yes
5788 cf_manpage_inboth=no
5791 cf_manpage_format=yes
5792 cf_manpage_inboth=yes
5795 cf_manpage_so_strip="Z"
5796 cf_manpage_compress=compress
5799 cf_manpage_so_strip="gz"
5800 cf_manpage_compress=gzip
5803 cf_manpage_so_strip="bz2"
5804 cf_manpage_compress=bzip2
5807 cf_manpage_so_strip="xz"
5808 cf_manpage_compress=xz
5813 AC_SUBST(cf_manpage_format)
5814 AC_SUBST(cf_manpage_inboth)
5815 AC_SUBST(cf_manpage_so_strip)
5816 AC_SUBST(cf_manpage_compress)
5819 dnl ---------------------------------------------------------------------------
5820 dnl CF_MANPAGE_RENAMES version: 17 updated: 2022/10/23 07:46:29
5821 dnl ------------------
5822 dnl The Debian people have their own naming convention for manpages. This
5823 dnl option lets us override the name of the file containing renaming, or
5824 dnl disable it altogether.
5825 AC_DEFUN([CF_MANPAGE_RENAMES],
5827 AC_MSG_CHECKING(for manpage renaming)
5829 AC_ARG_WITH(manpage-renames,
5830 [ --with-manpage-renames specify manpage-renaming],
5831 [MANPAGE_RENAMES=$withval],
5832 [MANPAGE_RENAMES=yes])
5834 case ".$MANPAGE_RENAMES" in
5838 # Debian 'man' program?
5839 if test -f /etc/debian_version ; then
5840 MANPAGE_RENAMES=man/man_db.renames
5847 if test "$MANPAGE_RENAMES" = man/man_db.renames ; then
5848 MANPAGE_RENAMES=`pwd`/$MANPAGE_RENAMES
5849 elif test "$MANPAGE_RENAMES" = no ; then
5851 elif test ! -f "$MANPAGE_RENAMES" ; then
5852 AC_MSG_ERROR(not a filename: $MANPAGE_RENAMES)
5855 AC_MSG_RESULT($MANPAGE_RENAMES)
5856 AC_SUBST(MANPAGE_RENAMES)
5858 dnl ---------------------------------------------------------------------------
5859 dnl CF_MANPAGE_SYMLINKS version: 7 updated: 2023/01/21 16:37:17
5860 dnl -------------------
5861 dnl Some people expect each tool to make all aliases for manpages in the
5862 dnl man-directory. This accommodates the older, less-capable implementations
5863 dnl of 'man', and is optional.
5864 AC_DEFUN([CF_MANPAGE_SYMLINKS],
5866 AC_MSG_CHECKING(if manpage aliases will be installed)
5868 AC_ARG_WITH(manpage-aliases,
5869 [ --with-manpage-aliases specify manpage-aliases using .so],
5870 [MANPAGE_ALIASES=$withval],
5871 [MANPAGE_ALIASES=yes])
5873 AC_MSG_RESULT($MANPAGE_ALIASES)
5885 if test "$MANPAGE_ALIASES" = yes ; then
5886 AC_MSG_CHECKING(if manpage symlinks should be used)
5888 AC_ARG_WITH(manpage-symlinks,
5889 [ --with-manpage-symlinks specify manpage-aliases using symlinks],
5890 [MANPAGE_SYMLINKS=$withval],
5891 [MANPAGE_SYMLINKS=$cf_use_symlinks])
5893 if test "$cf_use_symlinks" = no; then
5894 if test "$MANPAGE_SYMLINKS" = yes ; then
5895 AC_MSG_WARN(cannot make symlinks, will use .so files)
5900 AC_MSG_RESULT($MANPAGE_SYMLINKS)
5904 dnl ---------------------------------------------------------------------------
5905 dnl CF_MANPAGE_TBL version: 3 updated: 2002/01/19 22:51:32
5907 dnl This option causes manpages to be run through tbl(1) to generate tables
5909 AC_DEFUN([CF_MANPAGE_TBL],
5911 AC_MSG_CHECKING(for manpage tbl)
5913 AC_ARG_WITH(manpage-tbl,
5914 [ --with-manpage-tbl specify manpage processing with tbl],
5915 [MANPAGE_TBL=$withval],
5918 AC_MSG_RESULT($MANPAGE_TBL)
5920 dnl ---------------------------------------------------------------------------
5921 dnl CF_MAN_PAGES version: 58 updated: 2023/07/28 20:13:29
5923 dnl Try to determine if the man-pages on the system are compressed, and if
5924 dnl so, what format is used. Use this information to construct a script that
5925 dnl will install man-pages.
5926 AC_DEFUN([CF_MAN_PAGES],
5928 CF_HELP_MESSAGE(Options to Specify How Manpages are Installed:)
5934 if test "$prefix" = "NONE" ; then
5935 cf_prefix="$ac_default_prefix"
5940 test ! -d man && mkdir man
5942 cf_edit_man=./edit_man.sh
5943 cf_man_alias=`pwd`/man_alias.sed
5945 cat >$cf_edit_man <<CF_EOF
5947 # this script is generated by the configure-script CF_MAN_PAGES macro.
5950 datarootdir="$datarootdir"
5953 NCURSES_MAJOR="$NCURSES_MAJOR"
5954 NCURSES_MINOR="$NCURSES_MINOR"
5955 NCURSES_PATCH="$NCURSES_PATCH"
5957 NCURSES_OSPEED="$NCURSES_OSPEED"
5958 TERMINFO="$TERMINFO"
5959 TERMINFO_DIRS="$TERMINFO_DIRS"
5962 INSTALL_DATA="$INSTALL_DATA"
5964 transform="$program_transform_name"
5966 TMP=\${TMPDIR:=/tmp}/man\$\$
5967 trap "rm -f \$TMP; exit 1" 1 2 3 15
5968 trap "rm -f \$TMP" 0
5980 top_srcdir=\[$]srcdir/..
5983 if test "\$form" = normal ; then
5984 if test "$cf_manpage_format" = yes ; then
5985 if test "$cf_manpage_inboth" = no ; then
5986 $SHELL "\[$]0" format "\$verb" "\$mandir" "\$srcdir" "\[$]@"
5990 cf_subdir=\$mandir/man
5991 cf_tables=$MANPAGE_TBL
5993 cf_subdir=\$mandir/cat
5997 # process the list of source-files
5998 for i in "\[$]@" ; do
6002 section=\`expr "\$i" : '.*\\.\\([[0-9]]\\)[[xm]]*'\`;
6003 if test "\$verb" = installing ; then
6004 if test ! -d "\$cf_subdir\${section}" ; then
6005 mkdir -p "\$cf_subdir\$section"
6009 # replace variables in man page
6010 if test ! -f "$cf_man_alias" ; then
6011 cat >>$cf_man_alias <<-CF_EOF2
6012 s,@DATADIR@,\$datadir,g
6013 s,@TERMINFO@,\${TERMINFO:="no default value"},g
6014 s,@TERMINFO_DIRS@,\${TERMINFO_DIRS:="no default value"},g
6015 s,@NCURSES_MAJOR@,\${NCURSES_MAJOR:="no default value"},g
6016 s,@NCURSES_MINOR@,\${NCURSES_MINOR:="no default value"},g
6017 s,@NCURSES_PATCH@,\${NCURSES_PATCH:="no default value"},g
6018 s,@NCURSES_OSPEED@,\${NCURSES_OSPEED:="no default value"},g
6023 cf_NAME=`echo "$cf_name" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
6024 cf_name=`echo "$cf_name" | sed "$program_transform_name"`
6025 cat >>$cf_edit_man <<-CF_EOF
6026 s,@$cf_NAME@,$cf_name,g
6030 cat >>$cf_edit_man <<CF_EOF
6032 echo "...made $cf_man_alias"
6036 cf_source=\`basename "\$i"\`
6037 cf_full_alias=\$cf_source
6038 test ! -f "\$cf_full_alias" && cf_full_alias="\$srcdir/\$cf_full_alias"
6039 if test ! -f "\$cf_full_alias" ; then
6040 echo ".. skipped \$cf_source"
6045 if test "$MANPAGE_ALIASES" != no ; then
6046 cat >>$cf_edit_man <<CF_EOF
6048 cf_part_alias=\`echo \$cf_full_alias| sed -e 's,^.*/,,'\`
6049 test "$with_curses_h" = yes && nCurses=ncurses.3x
6050 aliases=\`sed -f "\$top_srcdir/man/manlinks.sed" "\$cf_full_alias" |sed -f "$cf_man_alias" | sort -u; test "\$cf_part_alias" = "\$nCurses" && echo curses\`
6054 if test "$MANPAGE_RENAMES" = no ; then
6055 cat >>$cf_edit_man <<CF_EOF
6056 # perform program transformations for section 1 man pages
6057 if test \$section = 1 ; then
6058 cf_target=\$cf_subdir\${section}/\`echo \$cf_source|sed "\${transform}"\`
6060 cf_target=\$cf_subdir\${section}/\$cf_source
6064 cat >>$cf_edit_man <<CF_EOF
6065 cf_target=\`grep "^\$cf_source" $MANPAGE_RENAMES | $AWK '{print \[$]2}'\`
6066 if test -z "\$cf_target" ; then
6067 echo "? missing rename for \$cf_source"
6068 cf_target="\$cf_source"
6070 cf_target="\$cf_subdir\${section}/\${cf_target}"
6075 cat >>$cf_edit_man <<CF_EOF
6076 sed -f "$cf_man_alias" \\
6079 if test "$MANPAGE_RENAMES" != no ; then
6080 cat >>$cf_edit_man <<CF_EOF
6081 < "\$i" | sed -f `pwd`/edit_man.sed >\$TMP
6084 cat >>$cf_edit_man <<CF_EOF
6089 cat >>$cf_edit_man <<CF_EOF
6090 if test \$cf_tables = yes ; then
6091 tbl \$TMP >\$TMP.out
6096 if test "$with_overwrite" != yes ; then
6097 cat >>$cf_edit_man <<CF_EOF
6098 sed -e "/\\#[ ]*include/s,<curses.h,<ncurses$LIB_SUFFIX/curses.h," < \$TMP >\$TMP.out
6103 if test "$with_curses_h" != yes ; then
6104 cat >>$cf_edit_man <<CF_EOF
6105 sed -e "/\\#[ ]*include/s,curses.h,ncurses.h," < \$TMP >\$TMP.out
6110 cat >>$cf_edit_man <<CF_EOF
6111 if test "\$form" = format ; then
6112 nroff -man \$TMP >\$TMP.out
6117 if test -n "$cf_manpage_compress" ; then
6118 cat >>$cf_edit_man <<CF_EOF
6119 if test "\$verb" = installing ; then
6120 if ( "$cf_manpage_compress" -f \$TMP )
6122 mv \$TMP.$cf_manpage_so_strip \$TMP
6125 cf_target="\$cf_target.$cf_manpage_so_strip"
6129 case "$MANPAGE_FORMAT" in
6131 cat >>$cf_edit_man <<CF_EOF
6132 if test "\$form" = format ; then
6133 # BSDI installs only .0 suffixes in the cat directories
6134 cf_target="\`echo \$cf_target|sed -e 's/\\.[[1-9]]\\+[[a-z]]*/.0/'\`"
6140 cat >>$cf_edit_man <<CF_EOF
6141 suffix=\`basename "\$cf_target" | sed -e 's%^[[^.]]*%%'\`
6143 if test -n "$EXTRA_SUFFIX" ; then
6145 (*${EXTRA_SUFFIX}\$suffix)
6146 extra_suffix="$EXTRA_SUFFIX"
6150 if test "\$verb" = installing ; then
6151 echo "\$verb \$cf_target"
6152 \$INSTALL_DATA \$TMP "\$cf_target"
6153 test -d "\$cf_subdir\${section}" &&
6154 test -n "\$aliases" && (
6155 cd "\$cf_subdir\${section}" && (
6156 cf_source=\`echo "\$cf_target" |sed -e 's%^.*/\\([[^/]][[^/]]*/[[^/]][[^/]]*$\\)%\\1%'\`
6157 test -n "$cf_manpage_so_strip" && cf_source=\`echo "\$cf_source" |sed -e 's%\\.$cf_manpage_so_strip\$%%'\`
6158 cf_target=\`basename "\$cf_target"\`
6159 for cf_alias in \$aliases
6161 if test "\$section" = 1 ; then
6162 cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\`
6164 cf_alias="\${cf_alias}\${extra_suffix}"
6166 if test "$MANPAGE_SYMLINKS" = yes ; then
6167 if test -f "\$cf_alias\${suffix}" ; then
6168 if ( cmp -s "\$cf_target" "\$cf_alias\${suffix}" )
6173 echo ".. \$verb alias \$cf_alias\${suffix}"
6177 cat >>$cf_edit_man <<CF_EOF
6178 $LN_S "\$cf_target" "\$cf_alias\${suffix}"
6182 cat >>$cf_edit_man <<CF_EOF
6183 rm -f "\$cf_alias\${suffix}"
6184 $LN_S "\$cf_target" "\$cf_alias\${suffix}"
6188 cat >>$cf_edit_man <<CF_EOF
6189 elif test "\$cf_target" != "\$cf_alias\${suffix}" ; then
6190 echo ".so \$cf_source" >\$TMP
6192 if test -n "$cf_manpage_compress" ; then
6193 cat >>$cf_edit_man <<CF_EOF
6194 if test -n "$cf_manpage_so_strip" ; then
6195 "$cf_manpage_compress" -f \$TMP
6196 mv \$TMP.$cf_manpage_so_strip \$TMP
6200 cat >>$cf_edit_man <<CF_EOF
6201 echo ".. \$verb alias \$cf_alias\${suffix}"
6202 rm -f "\$cf_alias\${suffix}"
6203 \$INSTALL_DATA \$TMP "\$cf_alias\${suffix}"
6208 elif test "\$verb" = removing ; then
6209 test -f "\$cf_target" && (
6210 echo "\$verb \$cf_target"
6213 test -d "\$cf_subdir\${section}" &&
6214 test -n "\$aliases" && (
6215 cd "\$cf_subdir\${section}" && (
6216 for cf_alias in \$aliases
6218 if test "\$section" = 1 ; then
6219 cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\`
6221 cf_alias="\${cf_alias}\${extra_suffix}"
6223 echo ".. \$verb alias \$cf_alias\${suffix}"
6224 rm -f "\$cf_alias\${suffix}"
6236 if test "$cf_manpage_inboth" = yes ; then
6237 if test "\$form" != format ; then
6238 $SHELL "\[$]0" format "\$verb" "\$mandir" "\$srcdir" "\[$]@"
6244 chmod 755 "$cf_edit_man"
6247 dnl ---------------------------------------------------------------------------
6248 dnl CF_MAP_LIB_BASENAME version: 2 updated: 2021/01/02 17:09:14
6249 dnl -------------------
6250 dnl Convert a default-libname to the actual one used via CF_WITH_LIB_BASENAME.
6252 dnl $1 = variable to set
6253 dnl $2 = default-libname
6254 AC_DEFUN([CF_MAP_LIB_BASENAME],[
6255 CF_UPPER(cf_map_lib_basename,$2)
6256 eval $1="\$${cf_map_lib_basename}_NAME"
6258 dnl ---------------------------------------------------------------------------
6259 dnl CF_MATH_LIB version: 11 updated: 2022/07/27 19:01:48
6261 dnl Checks for libraries. At least one UNIX system, Apple Macintosh
6262 dnl Rhapsody 5.5, does not have -lm. We cannot use the simpler
6263 dnl AC_CHECK_LIB(m,sin), because that fails for C++.
6264 AC_DEFUN([CF_MATH_LIB],
6266 AC_CACHE_CHECK(if -lm needed for math functions,
6273 [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)],
6274 [cf_cv_need_libm=no],
6275 [cf_cv_need_libm=yes])])
6277 if test "$cf_cv_need_libm" = yes
6280 cf_save_LIBS="$LIBS"
6282 AC_CACHE_CHECK(if -lm is available for math functions,
6289 [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)],
6290 [cf_cv_have_libm=yes],
6291 [cf_cv_have_libm=no])])
6292 LIBS="$cf_save_LIBS"
6294 if test "$cf_cv_have_libm" = yes
6296 ifelse($1,,[CF_ADD_LIB(m)],[$1=-lm])
6302 if test "$cf_cv_have_libm" = yes
6304 AC_DEFINE(HAVE_MATH_FUNCS,1,[Define to 1 if math functions are available])
6307 dnl ---------------------------------------------------------------------------
6308 dnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59
6309 dnl ----------------------
6310 dnl Check if the file-system supports mixed-case filenames. If we're able to
6311 dnl create a lowercase name and see it as uppercase, it doesn't support that.
6312 AC_DEFUN([CF_MIXEDCASE_FILENAMES],
6314 AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
6315 if test "$cross_compiling" = yes ; then
6316 case "$target_alias" in
6317 (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*)
6325 rm -f conftest CONFTEST
6327 if test -f CONFTEST ; then
6332 rm -f conftest CONFTEST
6335 test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
6337 dnl ---------------------------------------------------------------------------
6338 dnl CF_MKSTEMP version: 12 updated: 2023/01/05 17:53:11
6340 dnl Check for a working mkstemp. This creates two files, checks that they are
6341 dnl successfully created and distinct (AmigaOS apparently fails on the last).
6342 AC_DEFUN([CF_MKSTEMP],[
6346 AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
6349 $ac_includes_default
6353 char *tmpl = "conftestXXXXXX";
6361 for (n = 0; n < 2; ++n) {
6362 strcpy(name[n], tmpl);
6363 if ((fd = mkstemp(name[n])) >= 0) {
6364 if (!strcmp(name[n], tmpl)
6365 || stat(name[n], &sb) != 0
6366 || (sb.st_mode & S_IFMT) != S_IFREG
6367 || (sb.st_mode & 077) != 0) {
6374 && !strcmp(name[0], name[1]))
6376 ${cf_cv_main_return:-return}(result);
6378 ],[cf_cv_func_mkstemp=yes
6379 ],[cf_cv_func_mkstemp=no
6380 ],[cf_cv_func_mkstemp=maybe])
6382 if test "x$cf_cv_func_mkstemp" = xmaybe ; then
6383 AC_CHECK_FUNC(mkstemp)
6385 if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then
6386 AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.])
6389 dnl ---------------------------------------------------------------------------
6390 dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
6392 dnl Write a debug message to config.log, along with the line number in the
6393 dnl configure script.
6394 AC_DEFUN([CF_MSG_LOG],[
6395 echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
6397 dnl ---------------------------------------------------------------------------
6398 dnl CF_NCURSES_ABI_6 version: 5 updated: 2023/01/07 16:32:06
6399 dnl ----------------
6400 dnl Set ncurses' ABI to 6 unless overridden by explicit configure option, and
6401 dnl warn about this.
6402 AC_DEFUN([CF_NCURSES_ABI_6],[
6403 if test "${with_abi_version+set}" != set; then
6404 case "$cf_cv_rel_version" in
6406 cf_cv_rel_version=6.0
6409 AC_MSG_WARN(overriding ABI version to $cf_cv_abi_default)
6414 dnl ---------------------------------------------------------------------------
6415 dnl CF_NCURSES_WITH_ABI_VERSION version: 3 updated: 2021/01/01 13:31:04
6416 dnl ---------------------------
6417 dnl Allow ncurses's ABI to be overridden. Generally this happens when a
6418 dnl packager has incremented the ABI past that used in the original package,
6419 dnl and wishes to keep doing this.
6421 dnl $1 is the package name, if any, to derive a corresponding {package}_ABI
6423 AC_DEFUN([CF_NCURSES_WITH_ABI_VERSION],[
6424 CF_WITH_ABI_VERSION($1)
6425 if test "x$cf_cv_abi_version" != "x$with_abi_version"
6427 case "$cf_cv_rel_version" in
6429 cf_cv_rel_version=$with_abi_version.0
6434 dnl ---------------------------------------------------------------------------
6435 dnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41
6436 dnl ------------------
6437 dnl see CF_WITH_NO_LEAKS
6439 dnl $1 = option/name
6441 dnl $3 = symbol to define if the option is set
6442 dnl $4 = additional actions to take if the option is set
6443 AC_DEFUN([CF_NO_LEAKS_OPTION],[
6444 AC_MSG_CHECKING(if you want to use $1 for testing)
6447 [case "x$withval" in
6450 : "${with_cflags:=-g}"
6451 : "${enable_leaks:=no}"
6453 AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
6459 AC_MSG_RESULT(${with_$1:-no})
6461 case ".$with_cflags" in
6473 dnl ---------------------------------------------------------------------------
6474 dnl CF_NUMBER_SYNTAX version: 3 updated: 2023/05/06 16:14:29
6475 dnl ----------------
6476 dnl Check if the given variable is a positive integer. Report an error if not.
6477 dnl $1 is the variable
6478 dnl $2 is the message
6479 AC_DEFUN([CF_NUMBER_SYNTAX],[
6480 if test -n "$1" ; then
6481 case `echo "$1" | sed -e 's/^[[0-9]]*$/0/g'` in
6485 AC_MSG_ERROR($2 is not a number: $1)
6489 AC_MSG_ERROR($2 value is empty)
6492 dnl ---------------------------------------------------------------------------
6493 dnl CF_OBJ_SUBDIR version: 8 updated: 2021/01/01 13:31:04
6495 dnl Compute the object-directory name from the given model name
6496 AC_DEFUN([CF_OBJ_SUBDIR],
6499 (libtool) $2='obj_lo' ;;
6500 (normal) $2='objects' ;;
6501 (debug) $2='obj_g' ;;
6502 (profile) $2='obj_p' ;;
6504 case "$cf_cv_system_name" in
6512 dnl ---------------------------------------------------------------------------
6513 dnl CF_OUTPUT_MANPAGE_RENAMES version: 2 updated: 2022/10/22 19:12:31
6514 dnl -------------------------
6515 dnl This runs in the output step to config.status, after man_db.renames has
6517 AC_DEFUN([CF_OUTPUT_MANPAGE_RENAMES],
6519 AC_REQUIRE([CF_MANPAGE_RENAMES])
6520 if test "$MANPAGE_RENAMES" != no ; then
6521 # Construct a sed-script to perform renaming within man-pages
6522 test -n "$verbose" && echo "creating edit_man.sed"
6523 test ! -d man && mkdir man
6524 FGREP="${FGREP-grep -F}" $SHELL "$srcdir/man/make_sed.sh" "$MANPAGE_RENAMES" >./edit_man.sed
6527 dnl ---------------------------------------------------------------------------
6528 dnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04
6530 dnl Provide a value for the $PATH and similar separator (or amend the value
6531 dnl as provided in autoconf 2.5x).
6532 AC_DEFUN([CF_PATHSEP],
6534 AC_MSG_CHECKING(for PATH separator)
6535 case "$cf_cv_system_name" in
6536 (os2*) PATH_SEPARATOR=';' ;;
6537 (*) ${PATH_SEPARATOR:=':'} ;;
6539 ifelse([$1],,,[$1=$PATH_SEPARATOR])
6540 AC_SUBST(PATH_SEPARATOR)
6541 AC_MSG_RESULT($PATH_SEPARATOR)
6543 dnl ---------------------------------------------------------------------------
6544 dnl CF_PATH_PROG version: 12 updated: 2021/01/02 09:31:20
6546 dnl Check for a given program, defining corresponding symbol.
6547 dnl $1 = environment variable, which is suffixed by "_PATH" in the #define.
6548 dnl $2 = program name to find.
6549 dnl $3 = optional list of additional program names to test.
6552 dnl If there is more than one token in the result, #define the remaining tokens
6553 dnl to $1_ARGS. We need this for 'install' in particular.
6555 dnl FIXME: we should allow this to be overridden by environment variables
6557 AC_DEFUN([CF_PATH_PROG],[
6558 AC_REQUIRE([CF_PATHSEP])
6559 test -z "[$]$1" && $1="$2"
6560 AC_PATH_PROGS($1,[$]$1 $2 ifelse($3,,,$3),[$]$1, ifelse($4,,,$4))
6564 IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
6565 for cf_temp in $ac_cv_path_$1
6567 if test -z "$cf_path_prog" ; then
6568 if test "$with_full_paths" = yes ; then
6569 CF_PATH_SYNTAX(cf_temp,break)
6570 cf_path_prog="$cf_temp"
6572 cf_path_prog="`basename "$cf_temp"`"
6574 elif test -z "$cf_path_args" ; then
6575 cf_path_args="$cf_temp"
6577 cf_path_args="$cf_path_args $cf_temp"
6582 if test -n "$cf_path_prog" ; then
6583 CF_MSG_LOG(defining path for ${cf_path_prog})
6584 AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog",Define to pathname $1)
6585 test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args",Define to provide args for $1)
6588 dnl ---------------------------------------------------------------------------
6589 dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20
6591 dnl Check the argument to see that it looks like a pathname. Rewrite it if it
6592 dnl begins with one of the prefix/exec_prefix variables, and then again if the
6593 dnl result begins with 'NONE'. This is necessary to work around autoconf's
6594 dnl delayed evaluation of those symbols.
6595 AC_DEFUN([CF_PATH_SYNTAX],[
6596 if test "x$prefix" != xNONE; then
6597 cf_path_syntax="$prefix"
6599 cf_path_syntax="$ac_default_prefix"
6603 (.\[$]\(*\)*|.\'*\'*)
6607 (.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
6609 (.\[$]\{*prefix\}*|.\[$]\{*dir\}*)
6613 $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
6618 $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
6621 ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
6625 dnl ---------------------------------------------------------------------------
6626 dnl CF_PKG_CONFIG version: 12 updated: 2021/10/10 20:18:09
6628 dnl Check for the package-config program, unless disabled by command-line.
6630 dnl Sets $PKG_CONFIG to the pathname of the pkg-config program.
6631 AC_DEFUN([CF_PKG_CONFIG],
6633 AC_MSG_CHECKING(if you want to use pkg-config)
6634 AC_ARG_WITH(pkg-config,
6635 [ --with-pkg-config{=path} enable/disable use of pkg-config],
6636 [cf_pkg_config=$withval],
6637 [cf_pkg_config=yes])
6638 AC_MSG_RESULT($cf_pkg_config)
6640 case "$cf_pkg_config" in
6645 CF_ACVERSION_CHECK(2.52,
6646 [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
6647 [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
6654 test -z "$PKG_CONFIG" && PKG_CONFIG=none
6655 if test "$PKG_CONFIG" != none ; then
6656 CF_PATH_SYNTAX(PKG_CONFIG)
6657 elif test "x$cf_pkg_config" != xno ; then
6658 AC_MSG_WARN(pkg-config is not installed)
6661 AC_SUBST(PKG_CONFIG)
6663 dnl ---------------------------------------------------------------------------
6664 dnl CF_POSIX_C_SOURCE version: 12 updated: 2023/02/18 17:41:25
6665 dnl -----------------
6666 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
6668 dnl POSIX.1-1990 _POSIX_SOURCE
6669 dnl POSIX.1-1990 and _POSIX_SOURCE and
6670 dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2
6672 dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L
6673 dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L
6674 dnl X/Open 2000 _POSIX_C_SOURCE=200112L
6677 dnl $1 is the nominal value for _POSIX_C_SOURCE
6678 AC_DEFUN([CF_POSIX_C_SOURCE],
6679 [AC_REQUIRE([CF_POSIX_VISIBLE])dnl
6681 if test "$cf_cv_posix_visible" = no; then
6683 cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
6685 cf_save_CFLAGS="$CFLAGS"
6686 cf_save_CPPFLAGS="$CPPFLAGS"
6688 CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
6689 CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
6691 AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
6692 CF_MSG_LOG(if the symbol is already defined go no further)
6693 AC_TRY_COMPILE([#include <sys/types.h>],[
6694 #ifndef _POSIX_C_SOURCE
6695 #error _POSIX_C_SOURCE is not defined
6697 [cf_cv_posix_c_source=no],
6698 [cf_want_posix_source=no
6699 case .$cf_POSIX_C_SOURCE in
6701 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
6704 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
6705 cf_want_posix_source=yes
6708 cf_want_posix_source=yes
6711 if test "$cf_want_posix_source" = yes ; then
6712 AC_TRY_COMPILE([#include <sys/types.h>],[
6713 #ifdef _POSIX_SOURCE
6714 #error _POSIX_SOURCE is defined
6716 cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
6718 CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
6719 CFLAGS="$cf_trim_CFLAGS"
6720 CPPFLAGS="$cf_trim_CPPFLAGS"
6721 CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
6722 CF_MSG_LOG(if the second compile does not leave our definition intact error)
6723 AC_TRY_COMPILE([#include <sys/types.h>],[
6724 #ifndef _POSIX_C_SOURCE
6725 #error _POSIX_C_SOURCE is not defined
6727 [cf_cv_posix_c_source=no])
6728 CFLAGS="$cf_save_CFLAGS"
6729 CPPFLAGS="$cf_save_CPPFLAGS"
6733 if test "$cf_cv_posix_c_source" != no ; then
6734 CFLAGS="$cf_trim_CFLAGS"
6735 CPPFLAGS="$cf_trim_CPPFLAGS"
6736 CF_ADD_CFLAGS($cf_cv_posix_c_source)
6739 fi # cf_cv_posix_visible
6742 dnl ---------------------------------------------------------------------------
6743 dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
6744 dnl ----------------
6745 dnl POSIX documents test-macros which an application may set before any system
6746 dnl headers are included to make features available.
6748 dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
6749 dnl diverged from POSIX in 2002 by setting symbols which make all of the most
6750 dnl recent features visible in the system header files unless the application
6751 dnl overrides the corresponding test-macros. Doing that introduces portability
6754 dnl This macro makes a special check for the symbols used for this, to avoid a
6755 dnl conflicting definition.
6756 AC_DEFUN([CF_POSIX_VISIBLE],
6758 AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
6759 AC_TRY_COMPILE([#include <stdio.h>],[
6760 #if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
6761 && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
6762 && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
6763 && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
6764 #error conflicting symbols found
6766 ],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
6769 dnl ---------------------------------------------------------------------------
6770 dnl CF_PREDEFINE version: 3 updated: 2023/02/18 17:41:25
6772 dnl Add definitions to CPPFLAGS to ensure they're predefined for all compiles.
6774 dnl $1 = symbol to test
6775 dnl $2 = value (if any) to use for a predefinition
6776 AC_DEFUN([CF_PREDEFINE],
6778 AC_MSG_CHECKING(if we must define $1)
6779 AC_TRY_COMPILE([#include <sys/types.h>
6782 #error $1 is not defined
6783 #endif],[cf_result=no],[cf_result=yes])
6784 AC_MSG_RESULT($cf_result)
6786 if test "$cf_result" = yes ; then
6787 CPPFLAGS="$CPPFLAGS ifelse([$2],,-D$1,[-D$1=$2])"
6788 elif test "x$2" != "x" ; then
6789 AC_MSG_CHECKING(checking for compatible value versus $2)
6790 AC_TRY_COMPILE([#include <sys/types.h>
6793 #error $1-$2 is negative
6794 #endif],[cf_result=yes],[cf_result=no])
6795 AC_MSG_RESULT($cf_result)
6796 if test "$cf_result" = no ; then
6797 # perhaps we can override it - try...
6798 CPPFLAGS="$CPPFLAGS -D$1=$2"
6802 dnl ---------------------------------------------------------------------------
6803 dnl CF_PRG_RULES version: 2 updated: 2021/01/01 13:31:04
6805 dnl Append definitions and rules for the given programs to the subdirectory
6806 dnl Makefiles, and the recursion rule for the top-level Makefile.
6809 dnl $1 = script to run
6810 dnl $2 = list of subdirectories
6814 AC_DEFUN([CF_PRG_RULES],
6818 if test ! -d "$srcdir/$cf_dir" ; then
6820 elif test -f "$srcdir/$cf_dir/programs" ; then
6821 $AWK -f $1 "$srcdir/$cf_dir/programs" >>$cf_dir/Makefile
6826 dnl ---------------------------------------------------------------------------
6827 dnl CF_PROG_AR version: 1 updated: 2009/01/01 20:15:22
6829 dnl Check for archiver "ar".
6830 AC_DEFUN([CF_PROG_AR],[
6831 AC_CHECK_TOOL(AR, ar, ar)
6833 dnl ---------------------------------------------------------------------------
6834 dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59
6836 dnl Check for awk, ensure that the check found something.
6837 AC_DEFUN([CF_PROG_AWK],
6840 test -z "$AWK" && AC_MSG_ERROR(No awk program found)
6842 dnl ---------------------------------------------------------------------------
6843 dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
6845 dnl standard check for CC, plus followup sanity checks
6846 dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
6847 AC_DEFUN([CF_PROG_CC],[
6848 CF_ACVERSION_CHECK(2.53,
6849 [AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
6850 AC_REQUIRE([AC_PROG_CC])],
6852 ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
6854 CF_ACVERSION_CHECK(2.52,
6859 dnl ---------------------------------------------------------------------------
6860 dnl CF_PROG_CC_C_O version: 6 updated: 2021/01/01 13:31:04
6862 dnl Analogous to AC_PROG_CC_C_O, but more useful: tests only $CC, ensures that
6863 dnl the output file can be renamed, and allows for a shell variable that can
6864 dnl be used later. The parameter is either CC or CXX. The result is the
6866 dnl $cf_cv_prog_CC_c_o
6867 dnl $cf_cv_prog_CXX_c_o
6870 dnl $2 = compiler options, if any
6871 AC_DEFUN([CF_PROG_CC_C_O],
6872 [AC_REQUIRE([AC_PROG_CC])dnl
6873 AC_MSG_CHECKING([whether [$]$1 understands -c and -o together])
6874 AC_CACHE_VAL(cf_cv_prog_$1_c_o,
6876 cat > conftest.$ac_ext <<CF_EOF
6879 ${cf_cv_main_return:-return}(0);
6882 # We do the test twice because some compilers refuse to overwrite an
6883 # existing .o file with -o, though they will create one.
6884 ac_try='[$]$1 $2 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC'
6885 if AC_TRY_EVAL(ac_try) &&
6886 test -f conftest2.$ac_objext && AC_TRY_EVAL(ac_try);
6888 eval cf_cv_prog_$1_c_o=yes
6890 eval cf_cv_prog_$1_c_o=no
6894 if test "$cf_cv_prog_$1_c_o" = yes; then
6895 AC_MSG_RESULT([yes])
6900 dnl ---------------------------------------------------------------------------
6901 dnl CF_PROG_GNAT version: 12 updated: 2021/01/02 17:09:14
6903 dnl Check for gnat/gnatmake/etc, ensure that the toolset is complete.
6904 AC_DEFUN([CF_PROG_GNAT],[
6905 for cf_prog_gnat in gnat gnatmake gprconfig gprbuild
6907 CF_UPPER(cf_upper_prog_gnat,${cf_prog_gnat})
6909 unset ac_cv_path_cf_TEMP_gnat
6911 AC_PATH_PROG(cf_TEMP_gnat,$cf_prog_gnat,no)
6912 eval "cf_cv_PATH_$cf_upper_prog_gnat=[$]ac_cv_path_cf_TEMP_gnat"
6914 if test "x$cf_TEMP_gnat" != xno; then
6915 unset cf_cv_gnat_version
6917 CF_GNAT_VERSION(cf_TEMP_gnat,$cf_prog_gnat)
6919 eval "cf_cv_VERSION_$cf_upper_prog_gnat=[$]cf_TEMP_gnat"
6922 unset cf_cv_gnat_version
6923 unset ac_cv_path_cf_TEMP_gnat
6926 if test "x$cf_cv_VERSION_GNATMAKE" = "xno"; then
6928 cf_cv_prog_gnat_correct=no
6930 cf_ada_make=gnatmake
6931 if test "x$cf_cv_VERSION_GPRCONFIG" = "xno"; then
6932 # gprconfig is newer than gnatmake; we can continue...
6935 rm -rf ./conftest* ./*~conftest*
6936 if mkdir conftest.src
6940 for cf_gprconfig in Ada C
6942 AC_MSG_CHECKING(for gprconfig name for $cf_gprconfig)
6943 if test "$cf_gprconfig" = C
6945 for cf_gprconfig_param in \
6946 "$cf_gprconfig,,,,GNATGCC" \
6947 "$cf_gprconfig,,,,GCC" \
6950 cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
6951 test -n "$cf_gprconfig_value" && break
6954 cf_gprconfig_param=$cf_gprconfig
6955 cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
6957 if test -n "$cf_gprconfig_value"
6959 eval "cf_ada_config_[$]cf_gprconfig=[$]cf_gprconfig_value"
6960 AC_MSG_RESULT($cf_gprconfig_value)
6962 AC_MSG_RESULT(missing)
6968 rm -rf ./conftest* ./*~conftest*
6971 if test "x$cf_ada_config" != "x#"
6974 CF_CHECK_GNAT_VERSION
6975 AC_CHECK_PROG(M4_exists, m4, yes, no)
6976 if test "$ac_cv_prog_M4_exists" = no; then
6977 cf_cv_prog_gnat_correct=no
6978 AC_MSG_WARN(Ada95 binding required program m4 not found. Ada95 binding disabled)
6980 if test "$cf_cv_prog_gnat_correct" = yes; then
6981 AC_MSG_CHECKING(if GNAT works)
6982 CF_GNAT_TRY_RUN([procedure conftest;],
6985 procedure conftest is
6987 Text_IO.Put ("Hello World");
6989 GNAT.OS_Lib.OS_Exit (0);
6991 [cf_cv_prog_gnat_correct=yes],
6992 [cf_cv_prog_gnat_correct=no])
6993 AC_MSG_RESULT($cf_cv_prog_gnat_correct)
6996 cf_cv_prog_gnat_correct=no
7000 AC_SUBST(cf_ada_make)
7001 AC_SUBST(cf_ada_config)
7002 AC_SUBST(cf_ada_config_Ada)
7003 AC_SUBST(cf_ada_config_C)
7005 dnl ---------------------------------------------------------------------------
7006 dnl CF_PROG_INSTALL version: 10 updated: 2021/01/04 19:33:05
7008 dnl Force $INSTALL to be an absolute-path. Otherwise, edit_man.sh and the
7009 dnl misc/tabset install won't work properly. Usually this happens only when
7010 dnl using the fallback mkinstalldirs script
7011 AC_DEFUN([CF_PROG_INSTALL],
7017 CF_DIRNAME(cf_dir,$INSTALL)
7018 test -z "$cf_dir" && cf_dir=.
7019 INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`"
7023 dnl ---------------------------------------------------------------------------
7024 dnl CF_PROG_LDCONFIG version: 5 updated: 2015/04/18 08:56:57
7025 dnl ----------------
7026 dnl Check for ldconfig, needed to fixup shared libraries that would be built
7027 dnl and then used in the install.
7028 AC_DEFUN([CF_PROG_LDCONFIG],[
7029 if test "$cross_compiling" = yes ; then
7032 case "$cf_cv_system_name" in
7033 (dragonfly*|mirbsd*|freebsd*)
7034 test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
7036 (*) LDPATH=$PATH:/sbin:/usr/sbin
7037 AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH)
7043 dnl ---------------------------------------------------------------------------
7044 dnl CF_PROG_LINT version: 5 updated: 2022/08/20 15:44:13
7046 AC_DEFUN([CF_PROG_LINT],
7048 AC_CHECK_PROGS(LINT, lint cppcheck splint)
7050 (xcppcheck|x*/cppcheck)
7051 test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
7057 dnl ---------------------------------------------------------------------------
7058 dnl CF_PROG_LN_S version: 2 updated: 2010/08/14 18:25:37
7060 dnl Combine checks for "ln -s" and "ln -sf", updating $LN_S to include "-f"
7061 dnl option if it is supported.
7062 AC_DEFUN([CF_PROG_LN_S],[
7064 AC_MSG_CHECKING(if $LN_S -f options work)
7066 rm -f conf$$.src conf$$dst
7068 echo first >conf$$.src
7069 if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then
7074 rm -f conf$$.dst conf$$src
7075 AC_MSG_RESULT($cf_prog_ln_sf)
7077 test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
7079 dnl ---------------------------------------------------------------------------
7080 dnl CF_REGEX version: 18 updated: 2021/01/01 16:53:59
7082 dnl Attempt to determine if we've got one of the flavors of regular-expression
7083 dnl code that we can support.
7084 AC_DEFUN([CF_REGEX],
7091 # -lsystre -ltre -lintl -liconv
7092 AC_CHECK_LIB(systre,regcomp,[
7093 AC_CHECK_LIB(iconv,libiconv_open,[CF_ADD_LIB(iconv)])
7094 AC_CHECK_LIB(intl,libintl_gettext,[CF_ADD_LIB(intl)])
7095 AC_CHECK_LIB(tre,tre_regcomp,[CF_ADD_LIB(tre)])
7097 cf_regex_func=regcomp
7099 AC_CHECK_LIB(gnurx,regcomp,[
7101 cf_regex_func=regcomp])
7105 cf_regex_libs="regex re"
7106 AC_CHECK_FUNC(regcomp,[cf_regex_func=regcomp],[
7107 for cf_regex_lib in $cf_regex_libs
7109 AC_CHECK_LIB($cf_regex_lib,regcomp,[
7110 CF_ADD_LIB($cf_regex_lib)
7111 cf_regex_func=regcomp
7118 if test "$cf_regex_func" = no ; then
7119 AC_CHECK_FUNC(compile,[cf_regex_func=compile],[
7120 AC_CHECK_LIB(gen,compile,[
7122 cf_regex_func=compile])])
7125 if test "$cf_regex_func" = no ; then
7126 AC_MSG_WARN(cannot find regular expression library)
7129 AC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[
7132 case "$cf_regex_func" in
7134 for cf_regex_hdr in regexp.h regexpr.h
7136 AC_TRY_LINK([#include <$cf_regex_hdr>],[
7137 char *p = compile("", "", "", 0);
7138 int x = step("", "");
7142 cf_cv_regex_hdrs=$cf_regex_hdr
7148 for cf_regex_hdr in regex.h
7150 AC_TRY_LINK([#include <sys/types.h>
7151 #include <$cf_regex_hdr>],[
7153 int x = regcomp(p, "", 0);
7154 int y = regexec(p, "", 0, 0, 0);
7159 cf_cv_regex_hdrs=$cf_regex_hdr
7168 case "$cf_cv_regex_hdrs" in
7169 (no) AC_MSG_WARN(no regular expression header found) ;;
7170 (regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;;
7171 (regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;;
7172 (regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;;
7175 dnl ---------------------------------------------------------------------------
7176 dnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40
7177 dnl ----------------
7178 dnl Remove a given option from CFLAGS/CPPFLAGS
7179 dnl $1 = option to remove
7180 dnl $2 = variable to update
7181 dnl $3 = nonempty to allow verbose message
7182 define([CF_REMOVE_CFLAGS],
7184 cf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'`
7187 cf_old_cflag=`echo "x[$]$2" | sed -e 's/^.//' -e 's/[[ ]][[ ]]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[[^ ]][[^ ]]*\\)\?%%" -e 's/^[[ ]]*//' -e 's%[[ ]][[ ]]*-D% -D%g' -e 's%[[ ]][[ ]]*-I% -I%g'`
7188 test "[$]$2" != "$cf_old_cflag" || break
7189 ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)])
7193 dnl ---------------------------------------------------------------------------
7194 dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
7195 dnl ----------------
7196 dnl Remove all -U and -D options that refer to the given symbol from a list
7197 dnl of C compiler options. This works around the problem that not all
7198 dnl compilers process -U and -D options from left-to-right, so a -U option
7199 dnl cannot be used to cancel the effect of a preceding -D option.
7201 dnl $1 = target (which could be the same as the source variable)
7202 dnl $2 = source (including '$')
7203 dnl $3 = symbol to remove
7204 define([CF_REMOVE_DEFINE],
7207 sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \
7208 -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'`
7210 dnl ---------------------------------------------------------------------------
7211 dnl CF_REMOVE_LIB version: 1 updated: 2007/02/17 14:11:52
7213 dnl Remove the given library from the symbol
7215 dnl $1 = target (which could be the same as the source variable)
7216 dnl $2 = source (including '$')
7217 dnl $3 = library to remove
7218 define([CF_REMOVE_LIB],
7220 # remove $3 library from $2
7221 $1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'`
7223 dnl ---------------------------------------------------------------------------
7224 dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
7225 dnl ---------------------
7226 dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
7227 dnl $1 = name of current macro
7228 define([CF_RESTORE_XTRA_FLAGS],
7230 LIBS="$cf_save_LIBS_$1"
7231 CFLAGS="$cf_save_CFLAGS_$1"
7232 CPPFLAGS="$cf_save_CPPFLAGS_$1"
7234 dnl ---------------------------------------------------------------------------
7235 dnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50
7237 AC_DEFUN([CF_RPATH_HACK],
7238 [AC_REQUIRE([AC_PROG_FGREP])dnl
7239 AC_REQUIRE([CF_LD_RPATH_OPT])dnl
7241 AC_MSG_CHECKING(for updated LDFLAGS)
7242 if test -n "$LD_RPATH_OPT" ; then
7243 AC_MSG_RESULT(maybe)
7245 AC_CHECK_PROGS(cf_ldd_prog,ldd,no)
7246 cf_rpath_list="/usr/lib /lib"
7247 if test "$cf_ldd_prog" != no
7251 AC_TRY_LINK([#include <stdio.h>],
7253 [cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
7254 cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`])
7256 # If we passed the link-test, but get a "not found" on a given library,
7257 # this could be due to inept reconfiguration of gcc to make it only
7258 # partly honor /usr/local/lib (or whatever). Sometimes this behavior
7259 # is intentional, e.g., installing gcc in /usr/bin and suppressing the
7260 # /usr/local libraries.
7261 if test -n "$cf_rpath_oops"
7263 for cf_rpath_src in $cf_rpath_oops
7265 for cf_rpath_dir in \
7270 if test -f "$cf_rpath_dir/lib/$cf_rpath_src"
7272 CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src)
7273 LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
7281 CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS)
7283 CF_RPATH_HACK_2(LDFLAGS)
7284 CF_RPATH_HACK_2(LIBS)
7286 CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS)
7290 AC_SUBST(EXTRA_LDFLAGS)
7292 dnl ---------------------------------------------------------------------------
7293 dnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04
7295 dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to
7296 dnl EXTRA_LDFLAGS for each -L option found.
7298 dnl $cf_rpath_list contains a list of directories to ignore.
7300 dnl $1 = variable name to update. The LDFLAGS variable should be the only one,
7301 dnl but LIBS often has misplaced -L options.
7302 AC_DEFUN([CF_RPATH_HACK_2],
7304 CF_VERBOSE(...checking $1 [$]$1)
7307 for cf_rpath_src in [$]$1
7309 case "$cf_rpath_src" in
7312 # check if this refers to a directory which we will ignore
7314 if test -n "$cf_rpath_list"
7316 for cf_rpath_item in $cf_rpath_list
7318 if test "x$cf_rpath_src" = "x-L$cf_rpath_item"
7326 if test "$cf_rpath_skip" = no
7328 # transform the option
7329 if test "$LD_RPATH_OPT" = "-R " ; then
7330 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"`
7332 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"`
7335 # if we have not already added this, add it now
7336 cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"`
7337 if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS"
7339 CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp)
7340 EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
7345 cf_rpath_dst="$cf_rpath_dst $cf_rpath_src"
7349 CF_VERBOSE(...checked $1 [$]$1)
7350 AC_SUBST(EXTRA_LDFLAGS)
7352 dnl ---------------------------------------------------------------------------
7353 dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
7354 dnl ------------------
7355 dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
7356 dnl and libraries which do not update those variables.
7358 dnl $1 = name of current macro
7359 define([CF_SAVE_XTRA_FLAGS],
7361 cf_save_LIBS_$1="$LIBS"
7362 cf_save_CFLAGS_$1="$CFLAGS"
7363 cf_save_CPPFLAGS_$1="$CPPFLAGS"
7364 LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
7365 for cf_X_CFLAGS in $X_CFLAGS
7367 case "x$cf_X_CFLAGS" in
7369 CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
7372 CFLAGS="$CFLAGS $cf_X_CFLAGS"
7377 dnl ---------------------------------------------------------------------------
7378 dnl CF_SHARED_OPTS version: 107 updated: 2021/09/04 06:47:34
7381 dnl Attempt to determine the appropriate CC/LD options for creating a shared
7385 dnl a) ${LOCAL_LDFLAGS} is used to link executables that will run within
7386 dnl the build-tree, i.e., by making use of the libraries that are compiled in
7387 dnl $rel_builddir/lib We avoid compiling-in a $rel_builddir/lib path for the
7388 dnl shared library since that can lead to unexpected results at runtime.
7389 dnl b) ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared
7390 dnl libraries are compiled in ../../lib
7392 dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure
7393 dnl to install symbolic links to the rel/abi versions of shared libraries.
7395 dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi
7396 dnl version when making symbolic links.
7398 dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library
7399 dnl version numbers are infix (ex: libncurses.<ver>.dylib) or postfix
7400 dnl (ex: libncurses.so.<ver>).
7402 dnl Some loaders leave 'so_locations' lying around. It is nice to clean up.
7403 AC_DEFUN([CF_SHARED_OPTS],
7405 AC_REQUIRE([CF_LD_RPATH_OPT])
7411 INSTALL_LIB="-m 644"
7412 : ${rel_builddir:=.}
7420 cf_cv_do_symlinks=no
7422 test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
7424 AC_MSG_CHECKING(if release/abi version should be used for shared libs)
7425 AC_ARG_WITH(shlib-version,
7426 [ --with-shlib-version=X Specify rel or abi version for shared libs],
7427 [test -z "$withval" && withval=auto
7430 cf_cv_shlib_version=auto
7433 cf_cv_shlib_version=$withval
7436 AC_MSG_RESULT($withval)
7437 AC_MSG_ERROR([option value must be one of: rel, abi, or auto])
7440 ],[cf_cv_shlib_version=auto])
7441 AC_MSG_RESULT($cf_cv_shlib_version)
7446 # Some less-capable ports of gcc support only -fpic
7450 if test "$GCC" = yes
7454 case "$cf_cv_system_name" in
7455 (*linux*) # e.g., PGI compiler
7461 if test "$cf_try_fPIC" = yes
7463 AC_MSG_CHECKING(which $CC option to use)
7464 cf_save_CFLAGS="$CFLAGS"
7465 for CC_SHARED_OPTS in -fPIC -fpic ''
7467 CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
7468 AC_TRY_COMPILE([#include <stdio.h>],[int x = 1],[break],[])
7470 AC_MSG_RESULT($CC_SHARED_OPTS)
7471 CFLAGS="$cf_save_CFLAGS"
7474 cf_cv_shlib_version_infix=no
7476 case "$cf_cv_system_name" in
7477 (aix4.[3-9]*|aix[[5-7]]*)
7478 if test "$GCC" = yes; then
7479 CC_SHARED_OPTS='-Wl,-brtl'
7480 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
7482 CC_SHARED_OPTS='-brtl'
7483 # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall"
7484 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
7488 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
7492 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
7493 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
7494 cf_cv_shlib_version=cygdll
7495 cf_cv_shlib_version_infix=cygdll
7498 cat >mk_shared_lib.sh <<-CF_EOF
7501 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
7504 Linking shared library
7505 ** SHARED_LIB \[$]SHARED_LIB
7506 ** IMPORT_LIB \[$]IMPORT_LIB
7508 exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
7510 chmod +x mk_shared_lib.sh
7514 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
7515 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
7516 cf_cv_shlib_version=msysdll
7517 cf_cv_shlib_version_infix=msysdll
7520 cat >mk_shared_lib.sh <<-CF_EOF
7523 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
7526 Linking shared library
7527 ** SHARED_LIB \[$]SHARED_LIB
7528 ** IMPORT_LIB \[$]IMPORT_LIB
7530 exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
7532 chmod +x mk_shared_lib.sh
7535 cf_try_cflags="no-cpp-precomp"
7536 CC_SHARED_OPTS="-dynamic"
7537 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $[@]` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $[@]'
7538 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
7539 cf_cv_shlib_version_infix=yes
7540 AC_CACHE_CHECK([if ld -search_paths_first works], cf_cv_ldflags_search_paths_first, [
7541 cf_save_LDFLAGS=$LDFLAGS
7542 LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
7543 AC_TRY_LINK(, [int i;], cf_cv_ldflags_search_paths_first=yes, cf_cv_ldflags_search_paths_first=no)
7544 LDFLAGS=$cf_save_LDFLAGS])
7545 if test "$cf_cv_ldflags_search_paths_first" = yes; then
7546 LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
7551 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7554 # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
7555 if test "$GCC" != yes; then
7558 MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $[@]'
7559 INSTALL_LIB="-m 555"
7562 # (tested with gcc 2.7.2 -- I don't have c89)
7563 if test "$GCC" = yes; then
7564 LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
7567 LD_SHARED_OPTS='-Wl,+b,${libdir}'
7569 MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $[@]'
7570 # HP-UX shared libraries must be executable, and should be
7571 # readonly to exploit a quirk in the memory manager.
7572 INSTALL_LIB="-m 555"
7575 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7576 if test "$cf_cv_shlib_version" = rel; then
7577 cf_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
7579 cf_shared_soname='`basename $[@]`'
7582 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $[@]'
7585 if test "$cf_cv_enable_rpath" = yes ; then
7586 EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7588 # tested with IRIX 5.2 and 'cc'.
7589 if test "$GCC" != yes; then
7590 CC_SHARED_OPTS='-KPIC'
7591 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
7593 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $[@]` -o $[@]'
7595 cf_cv_rm_so_locs=yes
7597 (linux*|gnu*|k*bsd*-gnu)
7598 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
7599 LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
7600 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7602 if test "$cf_cv_enable_rpath" = yes ; then
7603 EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7606 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7609 cf_cv_shlib_version=msvcdll
7610 cf_cv_shlib_version_infix=msvcdll
7613 if test "$DFT_LWR_MODEL" = "shared" ; then
7614 LOCAL_LDFLAGS="-link -dll"
7615 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7616 EXTRA_LDFLAGS="-link -dll $EXTRA_LDFLAGS"
7619 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ ${LD} [$]{CFLAGS}'
7620 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.lib"
7621 cat >mk_shared_lib.sh <<-CF_EOF
7624 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.lib/'\`
7629 Linking shared library
7630 ** SHARED LIB \$SHARED_LIB
7631 ** IMPORT_LIB \$IMPORT_LIB
7633 args=\$(echo \[$]* | sed -E "s#-l(\w*)#\1.dll.lib#g" | sed -E "s#-L(\w*)#-LIBPATH:\1#g")
7634 exec \$my_ld -DLL -IMPLIB:"\${IMPORT_LIB}" -OUT:"\${SHARED_LIB}" ${LDFLAGS} \$args
7635 mv "\${IMPORT_LIB}" "\${IMPORT_LIB}"
7637 chmod +x mk_shared_lib.sh
7638 cat >mk_prog.sh <<-CF_EOF
7641 # Ignore first argument (compiler) and use LD (link.exe) unconditionally
7644 ldopts=("/subsystem:console")
7647 while test \[$]# -gt 0; do
7650 # ignore -link argument
7652 -M[[TD]] | -M[[TD]]d)
7653 # ignore runtime-library option
7668 libs+=("\`echo \"\[$]1\" | sed \"s/^-l//\"\`")
7671 ldopts+=("\`echo \"\[$]1\" | sed \"s/^-L/-LIBPATH:/\"\`")
7677 for linkarg in \`echo '\[$]1' | sed -e 's/-Wl,//' -e 's/,/ /'\`; do
7678 ldopts+=("\[$]{linkarg}")
7686 ldopts+=("-out:\[$]1")
7695 if [[ "\$isdll" -ne 0 ]]; then
7696 for lib in \[$]{libs[[*]]}; do
7697 ldopts+=("\[$]lib.dll.lib")
7700 for lib in \[$]{libs[[*]]}; do
7701 ldopts+=("\[$]lib.lib")
7706 ** ld options: "\[$]{ldopts[[@]]}"
7708 exec \[$]LD \[$]{ldopts[[@]]}
7711 LINK_PROGS="$SHELL ${rel_builddir}/mk_prog.sh"
7712 LINK_TESTS="$SHELL ${rel_builddir}/mk_prog.sh"
7715 cf_cv_shlib_version=mingw
7716 cf_cv_shlib_version_infix=mingw
7719 if test "$DFT_LWR_MODEL" = "shared" ; then
7720 LOCAL_LDFLAGS="-Wl,--enable-auto-import"
7721 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7722 EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
7725 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
7726 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
7727 cat >mk_shared_lib.sh <<-CF_EOF
7730 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
7733 Linking shared library
7734 ** SHARED_LIB \[$]SHARED_LIB
7735 ** IMPORT_LIB \[$]IMPORT_LIB
7737 exec \[$]* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
7739 chmod +x mk_shared_lib.sh
7741 (openbsd[[2-9]].*|mirbsd*)
7742 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
7743 LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
7744 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7746 if test "$cf_cv_enable_rpath" = yes ; then
7747 EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7749 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7751 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7755 MK_SHARED_LIB='${LD} -Wshared -Weld=-export_all -o $[@]'
7759 MK_SHARED_LIB='${LD} -Wshared -Wxld=-export_all -o $[@]'
7761 (nto-qnx*|openbsd*|freebsd[[12]].*)
7762 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7763 MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $[@]'
7764 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7766 (dragonfly*|freebsd*)
7767 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7768 if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
7769 LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
7770 LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
7771 EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7774 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7777 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7778 if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
7779 LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
7780 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7781 EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7782 if test "$cf_cv_shlib_version" = auto; then
7783 if test -f /usr/libexec/ld.elf_so; then
7784 cf_cv_shlib_version=abi
7786 cf_cv_shlib_version=rel
7790 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]'
7792 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -o $[@]'
7796 # tested with OSF/1 V3.2 and 'cc'
7797 # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
7798 # link with shared libs).
7799 MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`'
7802 MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
7805 MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]'
7806 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
7807 LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
7808 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7810 cf_cv_rm_so_locs=yes
7812 (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98
7813 # tested with osr5.0.5
7814 if test "$GCC" != yes; then
7815 CC_SHARED_OPTS='-belf -KPIC'
7817 MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@'
7818 if test "$cf_cv_enable_rpath" = yes ; then
7819 # only way is to set LD_RUN_PATH but no switch for it
7822 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7823 LINK_PROGS='LD_RUN_PATH=${libdir}'
7824 LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
7827 # tested with SunOS 4.1.1 and gcc 2.7.0
7828 if test "$GCC" != yes; then
7829 CC_SHARED_OPTS='-KPIC'
7831 MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $[@]'
7832 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7835 # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
7836 # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
7837 if test "$DFT_LWR_MODEL" = "shared" ; then
7838 LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
7839 LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7841 if test "$cf_cv_enable_rpath" = yes ; then
7842 EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS"
7845 if test "$GCC" != yes; then
7846 cf_save_CFLAGS="$CFLAGS"
7847 for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O
7849 CFLAGS="$cf_shared_opts $cf_save_CFLAGS"
7850 AC_TRY_COMPILE([#include <stdio.h>],[printf("Hello\\n");],[break])
7852 CFLAGS="$cf_save_CFLAGS"
7853 CC_SHARED_OPTS=$cf_shared_opts
7854 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $[@]'
7856 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]'
7859 (sysv5uw7*|unix_sv*)
7860 # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
7861 if test "$GCC" != yes; then
7862 CC_SHARED_OPTS='-KPIC'
7864 MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o [$]@'
7867 CC_SHARED_OPTS='unknown'
7868 MK_SHARED_LIB='echo unknown'
7872 # This works if the last tokens in $MK_SHARED_LIB are the -o target.
7873 case "$cf_cv_shlib_version" in
7875 case "$MK_SHARED_LIB" in
7877 test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
7880 AC_MSG_WARN(ignored --with-shlib-version)
7886 if test -n "$cf_try_cflags"
7888 cat > conftest.$ac_ext <<EOF
7889 #line __oline__ "${as_me:-configure}"
7891 int main(int argc, char *argv[[]])
7894 return (argv[[argc-1]] == 0) ;
7897 cf_save_CFLAGS="$CFLAGS"
7898 for cf_opt in $cf_try_cflags
7900 CFLAGS="$cf_save_CFLAGS -$cf_opt"
7901 AC_MSG_CHECKING(if CFLAGS option -$cf_opt works)
7902 if AC_TRY_EVAL(ac_compile); then
7904 cf_save_CFLAGS="$CFLAGS"
7909 CFLAGS="$cf_save_CFLAGS"
7913 # RPATH_LIST is a colon-separated list of directories
7914 test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
7915 test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
7917 test "$cf_cv_rm_so_locs" = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations"
7919 CF_VERBOSE(CC_SHARED_OPTS: $CC_SHARED_OPTS)
7920 CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB)
7922 AC_SUBST(CC_SHARED_OPTS)
7923 AC_SUBST(LD_RPATH_OPT)
7924 AC_SUBST(LD_SHARED_OPTS)
7925 AC_SUBST(MK_SHARED_LIB)
7926 AC_SUBST(RM_SHARED_OPTS)
7928 AC_SUBST(LINK_PROGS)
7929 AC_SUBST(LINK_TESTS)
7931 AC_SUBST(EXTRA_LDFLAGS)
7932 AC_SUBST(LOCAL_LDFLAGS)
7933 AC_SUBST(LOCAL_LDFLAGS2)
7935 AC_SUBST(INSTALL_LIB)
7936 AC_SUBST(RPATH_LIST)
7938 dnl ---------------------------------------------------------------------------
7939 dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43
7940 dnl ----------------
7941 dnl utility macro for CF_SHARED_OPTS, constructs "$cf_cv_shared_soname" for
7942 dnl substitution into MK_SHARED_LIB string for the "-soname" (or similar)
7945 dnl $1 is the default that should be used for "$cf_cv_shlib_version".
7946 dnl If missing, use "rel".
7947 define([CF_SHARED_SONAME],
7949 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=ifelse($1,,rel,$1)
7950 if test "$cf_cv_shlib_version" = rel; then
7951 cf_cv_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
7953 cf_cv_shared_soname='`basename $[@]`'
7956 dnl ---------------------------------------------------------------------------
7957 dnl CF_SIGWINCH version: 7 updated: 2023/02/18 17:41:25
7959 dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
7960 dnl programs need this test).
7962 dnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE
7963 dnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct
7964 dnl winsize declaration is left alone - we may revisit this if Apple choose to
7965 dnl break that part of the interface as well.
7966 AC_DEFUN([CF_SIGWINCH],
7968 AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[
7970 #include <sys/types.h>
7971 #include <sys/signal.h>
7972 ],[int x = SIGWINCH; (void)x],
7973 [cf_cv_define_sigwinch=yes],
7975 #undef _XOPEN_SOURCE
7976 #undef _POSIX_SOURCE
7977 #undef _POSIX_C_SOURCE
7978 #include <sys/types.h>
7979 #include <sys/signal.h>
7980 ],[int x = SIGWINCH; (void)x],
7981 [cf_cv_define_sigwinch=maybe],
7982 [cf_cv_define_sigwinch=no])
7986 if test "$cf_cv_define_sigwinch" = maybe ; then
7987 AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[
7988 cf_cv_fixup_sigwinch=unknown
7990 while test "$cf_sigwinch" != 1
7993 #undef _XOPEN_SOURCE
7994 #undef _POSIX_SOURCE
7995 #undef _POSIX_C_SOURCE
7996 #include <sys/types.h>
7997 #include <sys/signal.h>
7999 #if SIGWINCH != $cf_sigwinch
8000 #error SIGWINCH is not $cf_sigwinch
8002 int x = SIGWINCH; (void)x],
8003 [cf_cv_fixup_sigwinch=$cf_sigwinch
8006 cf_sigwinch="`expr "$cf_sigwinch" - 1`"
8010 if test "$cf_cv_fixup_sigwinch" != unknown ; then
8011 CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch"
8015 dnl ---------------------------------------------------------------------------
8016 dnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47
8018 dnl signal handler, but there are some gcc dependencies in that recommendation.
8020 AC_DEFUN([CF_SIG_ATOMIC_T],
8022 AC_MSG_CHECKING(for signal global datatype)
8023 AC_CACHE_VAL(cf_cv_sig_atomic_t,[
8025 "volatile sig_atomic_t" \
8030 #include <sys/types.h>
8036 static void handler(int sig)
8041 [signal(SIGINT, handler);
8043 [cf_cv_sig_atomic_t=$cf_type],
8044 [cf_cv_sig_atomic_t=no])
8045 test "$cf_cv_sig_atomic_t" != no && break
8048 AC_MSG_RESULT($cf_cv_sig_atomic_t)
8049 test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
8051 dnl ---------------------------------------------------------------------------
8052 dnl CF_SIZECHANGE version: 18 updated: 2021/09/04 06:35:04
8054 dnl Check for definitions & structures needed for window size-changing
8056 dnl https://stackoverflow.com/questions/18878141/difference-between-structures-ttysize-and-winsize/50769952#50769952
8057 AC_DEFUN([CF_SIZECHANGE],
8059 AC_REQUIRE([CF_STRUCT_TERMIOS])
8060 AC_CACHE_CHECK(declaration of size-change, cf_cv_sizechange,[
8061 cf_cv_sizechange=unknown
8062 cf_save_CPPFLAGS="$CPPFLAGS"
8064 for cf_opts in "" "NEED_PTEM_H"
8067 CPPFLAGS="$cf_save_CPPFLAGS"
8068 if test -n "$cf_opts"
8070 CF_APPEND_TEXT(CPPFLAGS,-D$cf_opts)
8072 AC_TRY_COMPILE([#include <sys/types.h>
8073 #ifdef HAVE_TERMIOS_H
8074 #include <termios.h>
8076 #ifdef HAVE_TERMIO_H
8082 /* This is a workaround for SCO: they neglected to define struct winsize in
8083 * termios.h -- it is only in termio.h and ptem.h
8085 #include <sys/stream.h>
8086 #include <sys/ptem.h>
8089 #ifdef HAVE_SYS_IOCTL_H
8090 #include <sys/ioctl.h>
8094 struct ttysize win; /* SunOS 3.0... */
8095 int y = win.ts_lines = 2;
8096 int x = win.ts_cols = 1;
8101 struct winsize win; /* everything else */
8102 int y = win.ws_row = 2;
8103 int x = win.ws_col = 1;
8107 no TIOCGSIZE or TIOCGWINSZ
8108 #endif /* TIOCGWINSZ */
8109 #endif /* TIOCGSIZE */
8111 [cf_cv_sizechange=yes],
8112 [cf_cv_sizechange=no])
8114 CPPFLAGS="$cf_save_CPPFLAGS"
8115 if test "$cf_cv_sizechange" = yes ; then
8116 echo "size-change succeeded ($cf_opts)" >&AC_FD_CC
8117 test -n "$cf_opts" && cf_cv_sizechange="$cf_opts"
8122 if test "$cf_cv_sizechange" != no ; then
8123 AC_DEFINE(HAVE_SIZECHANGE,1,[Define to 1 if sizechange declarations are provided])
8124 case "$cf_cv_sizechange" in
8126 AC_DEFINE_UNQUOTED($cf_cv_sizechange )
8131 dnl ---------------------------------------------------------------------------
8132 dnl CF_SRC_MODULES version: 34 updated: 2023/04/22 11:51:06
8134 dnl For each parameter, test if the source-directory exists, and if it contains
8135 dnl a 'modules' file. If so, add to the list $cf_cv_src_modules which we'll
8136 dnl use in CF_LIB_RULES.
8138 dnl This uses the configured value to make the lists SRC_SUBDIRS and
8139 dnl SUB_MAKEFILES which are used in the makefile-generation scheme.
8140 AC_DEFUN([CF_SRC_MODULES],
8142 AC_REQUIRE([CF_CHECK_GNAT_VERSION])
8143 AC_MSG_CHECKING(for src modules)
8145 # dependencies and linker-arguments for test-programs
8146 TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
8147 TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEP2"
8148 if test "$DFT_LWR_MODEL" = "libtool"; then
8149 TEST_ARGS="${TEST_DEPS}"
8150 TEST_ARG2="${TEST_DEP2}"
8152 TEST_ARGS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS"
8153 TEST_ARG2="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARG2"
8156 PC_MODULES_TO_MAKE="ncurses${USE_ARG_SUFFIX}"
8160 if test -f "$srcdir/$cf_dir/modules" ; then
8162 if test -z "$cf_cv_src_modules"; then
8163 cf_cv_src_modules=$cf_dir
8165 cf_cv_src_modules="$cf_cv_src_modules $cf_dir"
8168 # Make the ncurses_cfg.h file record the library interface files as
8169 # well. These are header files that are the same name as their
8170 # directory. Ncurses is the only library that does not follow
8172 if test -f "$srcdir/${cf_dir}/${cf_dir}.h" ; then
8173 CF_UPPER(cf_have_include,$cf_dir)
8174 AC_DEFINE_UNQUOTED(HAVE_${cf_have_include}_H)
8175 AC_DEFINE_UNQUOTED(HAVE_LIB${cf_have_include})
8176 CF_MAP_LIB_BASENAME(TEST_ROOT,$cf_dir)
8177 TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TEST_ROOT}${DFT_DEP_SUFFIX} $TEST_DEPS"
8178 TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TEST_ROOT}${DFT_DEP_SUFFIX} $TEST_DEP2"
8179 if test "$DFT_LWR_MODEL" = "libtool"; then
8180 TEST_ARGS="${TEST_DEPS}"
8181 TEST_ARG2="${TEST_DEP2}"
8183 TEST_ARGS="-l${TEST_ROOT}${USE_ARG_SUFFIX} $TEST_ARGS"
8184 TEST_ARG2="-l${TEST_ROOT}${USE_ARG_SUFFIX} $TEST_ARG2"
8186 PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ${cf_dir}${USE_ARG_SUFFIX}"
8190 AC_MSG_RESULT($cf_cv_src_modules)
8192 TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
8193 TEST_ARG2="-L${LIB_2ND} $TEST_ARG2"
8202 if test "x$cf_with_manpages" != xno ; then
8203 SRC_SUBDIRS="$SRC_SUBDIRS man"
8205 SRC_SUBDIRS="$SRC_SUBDIRS include"
8206 for cf_dir in $cf_cv_src_modules
8208 SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir"
8210 if test "x$cf_with_tests" != "xno" ; then
8211 SRC_SUBDIRS="$SRC_SUBDIRS test"
8213 # always make this, to install the ncurses-config script
8214 SRC_SUBDIRS="$SRC_SUBDIRS misc"
8215 if test "$cf_with_cxx_binding" != no; then
8216 PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${USE_ARG_SUFFIX}"
8217 SRC_SUBDIRS="$SRC_SUBDIRS c++"
8220 test "x$with_termlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TINFO_ARG_SUFFIX"
8221 test "x$with_ticlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TICS_ARG_SUFFIX"
8223 AC_SUBST(PC_MODULES_TO_MAKE)
8226 if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = xyes && test -f "$srcdir/Ada95/Makefile.in" ; then
8227 SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
8228 ADA_SUBDIRS="gen src"
8229 if test "x$cf_with_tests" != "xno" ; then
8230 ADA_SUBDIRS="$ADA_SUBDIRS samples"
8235 for cf_dir in $SRC_SUBDIRS
8237 SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile"
8240 if test -n "$ADA_SUBDIRS"; then
8241 for cf_dir in $ADA_SUBDIRS
8243 SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile"
8245 AC_SUBST(ADA_SUBDIRS)
8248 dnl ---------------------------------------------------------------------------
8249 dnl CF_STDCPP_LIBRARY version: 12 updated: 2021/01/01 13:31:04
8250 dnl -----------------
8251 dnl Check for -lstdc++, which is GNU's standard C++ library.
8252 dnl If $CXXLIBS is set, add that to the libraries used for test-linking.
8253 dnl If -lstdc++ was not already added to $LIBS or $CXXLIBS, and is needed,
8254 dnl add it to $CXXLIBS.
8255 AC_DEFUN([CF_STDCPP_LIBRARY],
8257 if test -n "$GXX" ; then
8260 LIBS="$LIBS $CXXLIBS"
8261 AC_MSG_CHECKING(if we already have C++ library)
8263 #include <iostream>],[
8264 std::cout << "Hello World!" << std::endl;],
8265 [cf_have_libstdcpp=yes],
8266 [cf_have_libstdcpp=no])
8267 AC_MSG_RESULT($cf_have_libstdcpp)
8270 if test "$cf_have_libstdcpp" != yes
8272 case "$cf_cv_system_name" in
8274 if test -z "`g++ -dM -E - < /dev/null | grep __KLIBC__`"; then
8275 cf_stdcpp_libname=stdcpp
8277 cf_stdcpp_libname=stdc++
8281 cf_stdcpp_libname=stdc++
8285 AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[
8287 LIBS="$LIBS $CXXLIBS"
8288 CF_ADD_LIB($cf_stdcpp_libname)
8290 #include <iostream>],[
8291 std::cout << "Hello World!" << std::endl;],
8292 [cf_cv_libstdcpp=yes],
8293 [cf_cv_libstdcpp=no])
8296 test "$cf_cv_libstdcpp" = yes && { CF_ADD_LIB($cf_stdcpp_libname,CXXLIBS) }
8300 dnl ---------------------------------------------------------------------------
8301 dnl CF_STRIP_G_OPT version: 4 updated: 2021/01/02 09:31:20
8303 dnl Remove "-g" option from the compiler options
8304 AC_DEFUN([CF_STRIP_G_OPT],
8305 [$1=`echo "${$1}" | CF__SED_TRIMBLANKS(-e 's%-g %%' -e 's%-g$%%')`])dnl
8306 dnl ---------------------------------------------------------------------------
8307 dnl CF_STRUCT_SIGACTION version: 5 updated: 2012/10/06 17:56:13
8308 dnl -------------------
8309 dnl Check if we need _POSIX_SOURCE defined to use struct sigaction. We'll only
8310 dnl do this if we've found the sigaction function.
8311 AC_DEFUN([CF_STRUCT_SIGACTION],[
8312 AC_REQUIRE([CF_XOPEN_SOURCE])
8314 if test "$ac_cv_func_sigaction" = yes; then
8315 AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE)
8317 #include <sys/types.h>
8318 #include <signal.h>],
8319 [struct sigaction act],
8323 #define _POSIX_SOURCE
8324 #include <sys/types.h>
8325 #include <signal.h>],
8326 [struct sigaction act],
8328 AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE])],
8329 [sigact_bad=unknown])])
8330 AC_MSG_RESULT($sigact_bad)
8333 dnl ---------------------------------------------------------------------------
8334 dnl CF_STRUCT_TERMIOS version: 11 updated: 2020/03/19 20:46:13
8335 dnl -----------------
8336 dnl Some machines require _POSIX_SOURCE to completely define struct termios.
8337 AC_DEFUN([CF_STRUCT_TERMIOS],[
8338 AC_REQUIRE([CF_XOPEN_SOURCE])
8348 if test "$ac_cv_header_termios_h" = yes ; then
8349 case "$CFLAGS $CPPFLAGS" in
8351 termios_bad=dunno ;;
8352 (*) termios_bad=maybe ;;
8354 if test "$termios_bad" = maybe ; then
8355 AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE)
8356 AC_TRY_COMPILE([#include <termios.h>],
8357 [struct termios foo; int x = foo.c_iflag = 1; (void)x],
8360 #define _POSIX_SOURCE
8361 #include <termios.h>],
8362 [struct termios foo; int x = foo.c_iflag = 2; (void)x],
8363 termios_bad=unknown,
8364 termios_bad=yes AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE]))
8366 AC_MSG_RESULT($termios_bad)
8370 dnl ---------------------------------------------------------------------------
8371 dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
8373 dnl Construct a search-list for a nonstandard header/lib-file
8374 dnl $1 = the variable to return as result
8375 dnl $2 = the package name
8376 dnl $3 = the subdirectory, e.g., bin, include or lib
8377 AC_DEFUN([CF_SUBDIR_PATH],
8381 CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
8383 for cf_subdir_prefix in \
8391 CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
8394 dnl ---------------------------------------------------------------------------
8395 dnl CF_SUBST_IF version: 2 updated: 2006/06/17 12:33:03
8397 dnl Shorthand macro for substituting things that the user may override
8398 dnl with an environment variable.
8400 dnl $1 = condition to pass to "test"
8401 dnl $2 = environment variable
8402 dnl $3 = value if the test succeeds
8403 dnl $4 = value if the test fails
8404 AC_DEFUN([CF_SUBST_IF],
8413 dnl ---------------------------------------------------------------------------
8414 dnl CF_SUBST_NCURSES_VERSION version: 11 updated: 2023/01/07 16:32:06
8415 dnl ------------------------
8416 dnl Get the version-number for use in shared-library naming, etc.
8417 AC_DEFUN([CF_SUBST_NCURSES_VERSION],
8418 [AC_REQUIRE([AC_PROG_EGREP])dnl
8420 NCURSES_MAJOR="`${EGREP-egrep} '^NCURSES_MAJOR[[ ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`"
8421 NCURSES_MINOR="`${EGREP-egrep} '^NCURSES_MINOR[[ ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`"
8422 NCURSES_PATCH="`${EGREP-egrep} '^NCURSES_PATCH[[ ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`"
8423 cf_cv_abi_version=${NCURSES_MAJOR}
8424 cf_cv_abi_default=${NCURSES_MAJOR}
8425 cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
8426 dnl Show the computed version, for logging
8427 cf_cv_timestamp=`date`
8428 AC_MSG_RESULT(Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_default ($cf_cv_timestamp))
8429 dnl We need these values in the generated headers
8430 AC_SUBST(NCURSES_MAJOR)
8431 AC_SUBST(NCURSES_MINOR)
8432 AC_SUBST(NCURSES_PATCH)
8433 dnl We need these values in the generated makefiles
8434 AC_SUBST(cf_cv_rel_version)
8435 AC_SUBST(cf_cv_abi_version)
8436 AC_SUBST(cf_cv_abi_default)
8437 AC_SUBST(cf_cv_builtin_bool)
8438 AC_SUBST(cf_cv_header_stdbool_h)
8439 AC_SUBST(cf_cv_type_of_bool)dnl
8441 dnl ---------------------------------------------------------------------------
8442 dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57
8443 dnl ------------------
8444 dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
8445 dnl older SCO configurations.
8446 AC_DEFUN([CF_SYS_TIME_SELECT],
8448 AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
8449 AC_CACHE_VAL(cf_cv_sys_time_select,[
8451 #include <sys/types.h>
8452 #ifdef HAVE_SYS_TIME_H
8453 #include <sys/time.h>
8455 #ifdef HAVE_SYS_SELECT_H
8456 #include <sys/select.h>
8458 ],[],[cf_cv_sys_time_select=yes],
8459 [cf_cv_sys_time_select=no])
8461 AC_MSG_RESULT($cf_cv_sys_time_select)
8462 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>])
8464 dnl ---------------------------------------------------------------------------
8465 dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32
8467 dnl Define a top_builddir symbol, for applications that need an absolute path.
8468 AC_DEFUN([CF_TOP_BUILDDIR],
8470 top_builddir=ifelse($1,,`pwd`,$1)
8471 AC_SUBST(top_builddir)
8473 dnl ---------------------------------------------------------------------------
8474 dnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15
8475 dnl -----------------
8476 dnl This is a simple wrapper to use for pkg-config, for libraries which may be
8477 dnl available in that form.
8479 dnl $1 = package name, which may be a shell variable
8480 dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS
8481 dnl $3 = logic to use if pkg-config does not have the package
8482 AC_DEFUN([CF_TRY_PKG_CONFIG],[
8483 AC_REQUIRE([CF_PKG_CONFIG])
8485 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then
8486 CF_VERBOSE(found package $1)
8487 cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`"
8488 cf_pkgconfig_libs="`$PKG_CONFIG --libs "$1" 2>/dev/null`"
8489 CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs)
8490 CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs)
8491 CF_ADD_CFLAGS($cf_pkgconfig_incs)
8492 CF_ADD_LIBS($cf_pkgconfig_libs)
8493 ifelse([$2],,:,[$2])
8497 ifelse([$3],,:,[$3])
8500 dnl ---------------------------------------------------------------------------
8501 dnl CF_TRY_XOPEN_SOURCE version: 4 updated: 2022/09/10 15:16:16
8502 dnl -------------------
8503 dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
8504 dnl can define it successfully.
8505 AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
8506 AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
8507 AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,
8508 [cf_cv_xopen_source=no],
8509 [cf_save="$CPPFLAGS"
8510 CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
8511 AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,
8512 [cf_cv_xopen_source=no],
8513 [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
8518 if test "$cf_cv_xopen_source" != no ; then
8519 CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
8520 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
8521 cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
8522 CF_APPEND_CFLAGS($cf_temp_xopen_source)
8525 dnl ---------------------------------------------------------------------------
8526 dnl CF_TYPEOF_CHTYPE version: 11 updated: 2023/01/05 17:57:59
8527 dnl ----------------
8528 dnl Determine the type we should use for chtype (and attr_t, which is treated
8529 dnl as the same thing). We want around 32 bits, so on most machines want a
8530 dnl long, but on newer 64-bit machines, probably want an int. If we're using
8531 dnl wide characters, we have to have a type compatible with that, as well.
8532 AC_DEFUN([CF_TYPEOF_CHTYPE],
8534 AC_MSG_CHECKING([for type of chtype])
8535 AC_CACHE_VAL(cf_cv_typeof_chtype,[
8537 $ac_includes_default
8538 #define WANT_BITS 31
8541 FILE *fp = fopen("cf_test.out", "w");
8543 char *result = "long";
8544 if (sizeof(unsigned long) > sizeof(unsigned int)) {
8547 for (n = 0; n < WANT_BITS; n++) {
8550 if (y != 1 || x == 0) {
8556 * If x is nonzero, an int is big enough for the bits
8559 result = (x != 0) ? "int" : "long";
8564 ${cf_cv_main_return:-return}(0);
8567 [cf_cv_typeof_chtype=`cat cf_test.out`],
8568 [cf_cv_typeof_chtype=long],
8569 [cf_cv_typeof_chtype=long])
8572 AC_MSG_RESULT($cf_cv_typeof_chtype)
8574 AC_SUBST(cf_cv_typeof_chtype)
8575 AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype,[Define to actual type if needed for chtype])
8577 dnl ---------------------------------------------------------------------------
8578 dnl CF_TYPE_SIGACTION version: 4 updated: 2012/10/06 17:56:13
8579 dnl -----------------
8581 AC_DEFUN([CF_TYPE_SIGACTION],
8583 AC_MSG_CHECKING([for type sigaction_t])
8584 AC_CACHE_VAL(cf_cv_type_sigaction,[
8586 #include <signal.h>],
8588 [cf_cv_type_sigaction=yes],
8589 [cf_cv_type_sigaction=no])])
8590 AC_MSG_RESULT($cf_cv_type_sigaction)
8591 test "$cf_cv_type_sigaction" = yes && AC_DEFINE(HAVE_TYPE_SIGACTION,1,[Define to 1 if we have the sigaction_t type])
8593 dnl ---------------------------------------------------------------------------
8594 dnl CF_UNSIGNED_LITERALS version: 2 updated: 1998/02/07 22:10:16
8595 dnl --------------------
8596 dnl Test if the compiler supports 'U' and 'L' suffixes. Only old compilers
8597 dnl won't, but they're still there.
8598 AC_DEFUN([CF_UNSIGNED_LITERALS],
8600 AC_MSG_CHECKING([if unsigned literals are legal])
8601 AC_CACHE_VAL(cf_cv_unsigned_literals,[
8602 AC_TRY_COMPILE([],[long x = 1L + 1UL + 1U + 1],
8603 [cf_cv_unsigned_literals=yes],
8604 [cf_cv_unsigned_literals=no])
8606 AC_MSG_RESULT($cf_cv_unsigned_literals)
8608 dnl ---------------------------------------------------------------------------
8609 dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
8611 dnl Make an uppercase version of a variable
8612 dnl $1=uppercase($2)
8613 AC_DEFUN([CF_UPPER],
8615 $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
8617 dnl ---------------------------------------------------------------------------
8618 dnl CF_UTF8_LIB version: 10 updated: 2023/01/11 04:05:23
8620 dnl Check for multibyte support, and if not found, utf8 compatibility library
8621 AC_DEFUN([CF_UTF8_LIB],
8623 AC_HAVE_HEADERS(wchar.h)
8624 AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
8625 cf_save_LIBS="$LIBS"
8627 $ac_includes_default
8632 [cf_cv_utf8_lib=yes],
8634 #include <libutf8.h>],[putwc(0,0);],utf8,
8635 [cf_cv_utf8_lib=add-on],
8636 [cf_cv_utf8_lib=no])
8639 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
8641 if test "$cf_cv_utf8_lib" = "add-on" ; then
8642 AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h])
8643 CF_ADD_INCDIR($cf_cv_header_path_utf8)
8644 CF_ADD_LIBDIR($cf_cv_library_path_utf8)
8645 CF_ADD_LIBS($cf_cv_library_file_utf8)
8648 dnl ---------------------------------------------------------------------------
8649 dnl CF_VA_COPY version: 6 updated: 2018/12/04 18:14:25
8651 dnl check for va_copy, part of stdarg.h starting with ISO C 1999.
8652 dnl Also, workaround for glibc's __va_copy, by checking for both.
8653 dnl Finally, try to accommodate pre-ISO C 1999 headers.
8654 AC_DEFUN([CF_VA_COPY],[
8655 AC_CACHE_CHECK(for va_copy, cf_cv_have_va_copy,[
8662 cf_cv_have_va_copy=yes,
8663 cf_cv_have_va_copy=no)])
8665 if test "$cf_cv_have_va_copy" = yes;
8667 AC_DEFINE(HAVE_VA_COPY,1,[Define to 1 if we have va_copy])
8668 else # !cf_cv_have_va_copy
8670 AC_CACHE_CHECK(for __va_copy, cf_cv_have___va_copy,[
8676 __va_copy(dst, src)],
8677 cf_cv_have___va_copy=yes,
8678 cf_cv_have___va_copy=no)])
8680 if test "$cf_cv_have___va_copy" = yes
8682 AC_DEFINE(HAVE___VA_COPY,1,[Define to 1 if we have __va_copy])
8683 else # !cf_cv_have___va_copy
8685 AC_CACHE_CHECK(for __builtin_va_copy, cf_cv_have___builtin_va_copy,[
8691 __builtin_va_copy(dst, src)],
8692 cf_cv_have___builtin_va_copy=yes,
8693 cf_cv_have___builtin_va_copy=no)])
8695 test "$cf_cv_have___builtin_va_copy" = yes &&
8696 AC_DEFINE(HAVE___BUILTIN_VA_COPY,1,[Define to 1 if we have __builtin_va_copy])
8698 fi # cf_cv_have___va_copy
8700 fi # cf_cv_have_va_copy
8702 case "${cf_cv_have_va_copy}${cf_cv_have___va_copy}${cf_cv_have___builtin_va_copy}" in
8707 AC_CACHE_CHECK(if we can simply copy va_list, cf_cv_pointer_va_list,[
8714 cf_cv_pointer_va_list=yes,
8715 cf_cv_pointer_va_list=no)])
8717 if test "$cf_cv_pointer_va_list" = no
8719 AC_CACHE_CHECK(if we can copy va_list indirectly, cf_cv_array_va_list,[
8726 cf_cv_array_va_list=yes,
8727 cf_cv_array_va_list=no)])
8728 test "$cf_cv_array_va_list" = yes && AC_DEFINE(ARRAY_VA_LIST,1,[Define to 1 if we can copy va_list indirectly])
8733 dnl ---------------------------------------------------------------------------
8734 dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
8736 dnl Use AC_VERBOSE w/o the warnings
8737 AC_DEFUN([CF_VERBOSE],
8738 [test -n "$verbose" && echo " $1" 1>&AC_FD_MSG
8741 dnl ---------------------------------------------------------------------------
8742 dnl CF_VERSION_INFO version: 8 updated: 2021/01/01 13:31:04
8744 dnl Define several useful symbols derived from the VERSION file. A separate
8745 dnl file is preferred to embedding the version numbers in various scripts.
8746 dnl (automake is a textbook-example of why the latter is a bad idea, but there
8749 dnl The file contents are:
8750 dnl libtool-version release-version patch-version
8754 dnl libtool-version (see ?) consists of 3 integers separated by '.'
8755 dnl release-version consists of a major version and minor version
8756 dnl separated by '.', optionally followed by a patch-version
8757 dnl separated by '-'. The minor version need not be an
8758 dnl integer (but it is preferred).
8759 dnl patch-version is an integer in the form yyyymmdd, so ifdef's and
8760 dnl scripts can easily compare versions.
8762 dnl If libtool is used, the first form is required, since CF_WITH_LIBTOOL
8763 dnl simply extracts the first field using 'cut -f1'.
8765 dnl Optional parameters:
8766 dnl $1 = internal name for package
8767 dnl $2 = external name for package
8768 AC_DEFUN([CF_VERSION_INFO],
8770 if test -f "$srcdir/VERSION" ; then
8771 AC_MSG_CHECKING(for package version)
8773 # if there are not enough fields, cut returns the last one...
8774 cf_field1=`sed -e '2,$d' "$srcdir/VERSION" |cut -f1`
8775 cf_field2=`sed -e '2,$d' "$srcdir/VERSION" |cut -f2`
8776 cf_field3=`sed -e '2,$d' "$srcdir/VERSION" |cut -f3`
8778 # this is how CF_BUNDLED_INTL uses $VERSION:
8779 VERSION="$cf_field1"
8781 VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'`
8782 test -z "$VERSION_MAJOR" && AC_MSG_ERROR(missing major-version)
8784 VERSION_MINOR=`echo "$cf_field2" | sed -e 's/^[[^.]]*\.//' -e 's/-.*//'`
8785 test -z "$VERSION_MINOR" && AC_MSG_ERROR(missing minor-version)
8787 AC_MSG_RESULT(${VERSION_MAJOR}.${VERSION_MINOR})
8789 AC_MSG_CHECKING(for package patch date)
8790 VERSION_PATCH=`echo "$cf_field3" | sed -e 's/^[[^-]]*-//'`
8791 case .$VERSION_PATCH in
8793 AC_MSG_ERROR(missing patch-date $VERSION_PATCH)
8795 (.[[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]])
8798 AC_MSG_ERROR(illegal patch-date $VERSION_PATCH)
8801 AC_MSG_RESULT($VERSION_PATCH)
8803 AC_MSG_ERROR(did not find $srcdir/VERSION)
8806 # show the actual data that we have for versions:
8807 CF_VERBOSE(ABI VERSION $VERSION)
8808 CF_VERBOSE(VERSION_MAJOR $VERSION_MAJOR)
8809 CF_VERBOSE(VERSION_MINOR $VERSION_MINOR)
8810 CF_VERBOSE(VERSION_PATCH $VERSION_PATCH)
8813 AC_SUBST(VERSION_MAJOR)
8814 AC_SUBST(VERSION_MINOR)
8815 AC_SUBST(VERSION_PATCH)
8817 dnl if a package name is given, define its corresponding version info. We
8818 dnl need the package name to ensure that the defined symbols are unique.
8821 PACKAGE=ifelse($2,,$1,$2)
8822 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",[Define to the package-name])
8824 CF_UPPER(cf_PACKAGE,$cf_PACKAGE)
8825 AC_DEFINE_UNQUOTED(${cf_PACKAGE}_VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}")
8826 AC_DEFINE_UNQUOTED(${cf_PACKAGE}_PATCHDATE,${VERSION_PATCH})
8829 dnl ---------------------------------------------------------------------------
8830 dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
8832 dnl Check if type wide-character type $1 is declared, and if so, which header
8833 dnl file is needed. The second parameter is used to set a shell variable when
8834 dnl the type is not found. The first parameter sets a shell variable for the
8836 AC_DEFUN([CF_WCHAR_TYPE],
8838 # This is needed on Tru64 5.0 to declare $1
8839 AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[
8844 #ifdef HAVE_LIBUTF8_H
8845 #include <libutf8.h>
8854 #ifdef HAVE_LIBUTF8_H
8855 #include <libutf8.h>
8859 [cf_cv_$1=unknown])])])
8861 if test "$cf_cv_$1" = yes ; then
8862 AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h])
8867 # if we do not find $1 in either place, use substitution to provide a fallback.
8868 if test "$cf_cv_$1" = unknown ; then
8873 # if we find $1 in either place, use substitution to provide a fallback.
8874 if test "$cf_cv_$1" != unknown ; then
8879 dnl ---------------------------------------------------------------------------
8880 dnl CF_WEAK_SYMBOLS version: 1 updated: 2008/08/16 19:18:06
8882 dnl Check for compiler-support for weak symbols.
8883 dnl This works with "recent" gcc.
8884 AC_DEFUN([CF_WEAK_SYMBOLS],[
8885 AC_CACHE_CHECK(if $CC supports weak symbols,cf_cv_weak_symbols,[
8888 #include <stdio.h>],
8890 #if defined(__GNUC__)
8891 # if defined __USE_ISOC99
8892 # define _cat_pragma(exp) _Pragma(#exp)
8893 # define _weak_pragma(exp) _cat_pragma(weak name)
8895 # define _weak_pragma(exp)
8897 # define _declare(name) __extension__ extern __typeof__(name) name
8898 # define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak))
8902 ],[cf_cv_weak_symbols=yes],[cf_cv_weak_symbols=no])
8905 dnl ---------------------------------------------------------------------------
8906 dnl CF_WITH_ABI_ALTERED version: 1 updated: 2023/01/07 16:32:06
8907 dnl -------------------
8908 dnl Provide a way to override the displayed ABI version, e.g., in filenames.
8909 dnl Check this option after using the ABI version in configuration decisions.
8910 AC_DEFUN([CF_WITH_ABI_ALTERED],[
8911 AC_REQUIRE([CF_WITH_ABI_VERSION])
8912 AC_REQUIRE([CF_ABI_DEFAULTS])
8913 AC_ARG_WITH(abi-altered,
8914 [ --with-abi-altered=XXX override visible ABI version, for packaging],[
8915 CF_NUMBER_SYNTAX($withval,ABI altered)
8916 if test "$cf_cv_abi_version" != "$withval"
8918 AC_MSG_WARN(altering visible ABI from $cf_cv_abi_version to $withval)
8919 cf_cv_abi_version=$withval
8923 dnl ---------------------------------------------------------------------------
8924 dnl CF_WITH_ABI_VERSION version: 5 updated: 2023/01/07 16:32:06
8925 dnl -------------------
8926 dnl Allow library's ABI to be overridden. Generally this happens when a
8927 dnl packager has incremented the ABI past that used in the original package,
8928 dnl and wishes to keep doing this.
8930 dnl $1 is the package name, if any, to derive a corresponding {package}_ABI
8932 AC_DEFUN([CF_WITH_ABI_VERSION],[
8933 test -z "$cf_cv_abi_version" && cf_cv_abi_version=0
8934 AC_ARG_WITH(abi-version,
8935 [ --with-abi-version=XXX override derived ABI version],[
8936 if test "x$cf_cv_abi_version" != "x$withval"
8938 AC_MSG_WARN(overriding ABI version $cf_cv_abi_version to $withval)
8939 case "$cf_cv_rel_version" in
8941 cf_cv_rel_version=$withval.0
8944 cf_cv_rel_version=$withval.9 # FIXME: should be 10 as of 6.0 release
8948 cf_cv_abi_version=$withval])
8949 CF_NUMBER_SYNTAX($cf_cv_abi_version,ABI version)
8951 $1_ABI=$cf_cv_abi_version
8953 cf_cv_abi_default=$cf_cv_abi_version
8955 dnl ---------------------------------------------------------------------------
8956 dnl CF_WITH_ADA_COMPILER version: 2 updated: 2010/06/26 17:35:58
8957 dnl --------------------
8958 dnl Command-line option to specify the Ada95 compiler.
8959 AC_DEFUN([CF_WITH_ADA_COMPILER],[
8960 AC_MSG_CHECKING(for ada-compiler)
8961 AC_ARG_WITH(ada-compiler,
8962 [ --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)],
8963 [cf_ada_compiler=$withval],
8964 [cf_ada_compiler=gnatmake])
8965 AC_SUBST(cf_ada_compiler)
8966 AC_MSG_RESULT($cf_ada_compiler)
8968 dnl ---------------------------------------------------------------------------
8969 dnl CF_WITH_ADA_INCLUDE version: 2 updated: 2010/06/26 17:35:58
8970 dnl -------------------
8971 dnl Command-line option to specify where Ada includes will install.
8972 AC_DEFUN([CF_WITH_ADA_INCLUDE],[
8973 AC_MSG_CHECKING(for ada-include)
8974 CF_WITH_PATH(ada-include,
8975 [ --with-ada-include=DIR Ada includes are in DIR],
8977 PREFIX/share/ada/adainclude,
8978 [$]prefix/share/ada/adainclude)
8979 AC_SUBST(ADA_INCLUDE)
8980 AC_MSG_RESULT($ADA_INCLUDE)
8982 dnl ---------------------------------------------------------------------------
8983 dnl CF_WITH_ADA_LIBNAME version: 1 updated: 2019/09/07 18:59:41
8984 dnl -------------------
8985 dnl CF_WITH_ADA_LIBNAME
8986 dnl -------------------
8987 dnl Command-line option to specify how to name the resulting Ada library.
8988 dnl $1 = default value
8989 AC_DEFUN([CF_WITH_ADA_LIBNAME],[
8990 AC_MSG_CHECKING(for ada-libname)
8991 AC_ARG_WITH(ada-libname,
8992 [ --with-ada-libname=XXX override default Ada library-name],
8993 ADA_LIBNAME=[$]withval,
8995 case "x$ADA_LIBNAME" in
9000 AC_SUBST(ADA_LIBNAME)
9001 AC_MSG_RESULT($ADA_LIBNAME)
9003 dnl ---------------------------------------------------------------------------
9004 dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58
9005 dnl -------------------
9006 dnl Command-line option to specify where Ada objects will install.
9007 AC_DEFUN([CF_WITH_ADA_OBJECTS],[
9008 AC_MSG_CHECKING(for ada-objects)
9009 CF_WITH_PATH(ada-objects,
9010 [ --with-ada-objects=DIR Ada objects are in DIR],
9012 PREFIX/lib/ada/adalib,
9013 [$]prefix/lib/ada/adalib)
9014 AC_SUBST(ADA_OBJECTS)
9015 AC_MSG_RESULT($ADA_OBJECTS)
9017 dnl ---------------------------------------------------------------------------
9018 dnl CF_WITH_ADA_SHAREDLIB version: 5 updated: 2018/07/21 19:10:35
9019 dnl ---------------------
9020 dnl Command-line option to specify if an Ada95 shared-library should be built,
9021 dnl and optionally what its soname should be.
9022 AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[
9023 AC_REQUIRE([CF_GNAT_PROJECTS])
9024 AC_MSG_CHECKING(if an Ada95 shared-library should be built)
9025 AC_ARG_WITH(ada-sharedlib,
9026 [ --with-ada-sharedlib=soname build shared-library (requires GNAT projects)],
9027 [with_ada_sharedlib=$withval],
9028 [with_ada_sharedlib=no])
9029 AC_MSG_RESULT($with_ada_sharedlib)
9031 if test "x$with_ada_sharedlib" != xno
9033 if test "x$cf_gnat_projects" != xyes
9035 AC_MSG_WARN(disabling shared-library since GNAT projects are not supported)
9036 with_ada_sharedlib=no
9040 ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
9041 MAKE_ADA_SHAREDLIB="#"
9043 if test "x$with_ada_sharedlib" != xno
9046 if test "x$with_ada_sharedlib" != xyes
9048 ADA_SHAREDLIB="$with_ada_sharedlib"
9052 AC_SUBST(ADA_SHAREDLIB)
9053 AC_SUBST(MAKE_ADA_SHAREDLIB)
9055 dnl ---------------------------------------------------------------------------
9056 dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
9057 dnl ----------------
9058 dnl Configure-option for dbmalloc. The optional parameter is used to override
9059 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
9060 AC_DEFUN([CF_WITH_DBMALLOC],[
9061 CF_NO_LEAKS_OPTION(dbmalloc,
9062 [ --with-dbmalloc test: use Conor Cahill's dbmalloc library],
9065 if test "$with_dbmalloc" = yes ; then
9066 AC_CHECK_HEADER(dbmalloc.h,
9067 [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
9070 dnl ---------------------------------------------------------------------------
9071 dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
9073 dnl Configure-option for dmalloc. The optional parameter is used to override
9074 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
9075 AC_DEFUN([CF_WITH_DMALLOC],[
9076 CF_NO_LEAKS_OPTION(dmalloc,
9077 [ --with-dmalloc test: use Gray Watson's dmalloc library],
9080 if test "$with_dmalloc" = yes ; then
9081 AC_CHECK_HEADER(dmalloc.h,
9082 [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
9085 dnl ---------------------------------------------------------------------------
9086 dnl CF_WITH_EXPORT_SYMS version: 3 updated: 2014/12/20 19:16:08
9087 dnl -------------------
9088 dnl Use this with libtool to specify the list of symbols that may be exported.
9089 dnl The input file contains one symbol per line; comments work with "#".
9091 dnl $1 = basename of the ".sym" file (default $PACKAGE)
9092 AC_DEFUN([CF_WITH_EXPORT_SYMS],
9094 AC_MSG_CHECKING(if exported-symbols file should be used)
9095 AC_ARG_WITH(export-syms,
9096 [ --with-export-syms=XXX limit exported symbols using libtool],
9097 [with_export_syms=$withval],
9098 [with_export_syms=no])
9099 if test "x$with_export_syms" = xyes
9101 with_export_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).sym'
9104 AC_MSG_RESULT($with_export_syms)
9105 if test "x$with_export_syms" != xno
9107 EXPORT_SYMS="-export-symbols $with_export_syms"
9108 AC_SUBST(EXPORT_SYMS)
9111 dnl ---------------------------------------------------------------------------
9112 dnl CF_WITH_GPM version: 10 updated: 2017/04/29 18:32:18
9115 dnl The option parameter (if neither yes/no) is assumed to be the name of
9116 dnl the gpm library, e.g., for dynamic loading.
9117 AC_DEFUN([CF_WITH_GPM],
9119 AC_MSG_CHECKING(if you want to link with the GPM mouse library)
9121 [ --with-gpm use Alessandro Rubini's GPM library],
9122 [with_gpm=$withval],
9124 AC_MSG_RESULT($with_gpm)
9126 if test "$with_gpm" != no ; then
9127 AC_CHECK_HEADER(gpm.h,[
9128 AC_DEFINE(HAVE_GPM_H,1,[Define to 1 if we have gpm.h header])
9129 if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then
9130 CF_VERBOSE(assuming we really have GPM library)
9131 AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library])
9134 AC_CHECK_LIB(gpm,Gpm_Open,[with_gpm=yes],[
9135 if test "$with_gpm" = maybe; then
9136 AC_MSG_WARN(Cannot link with GPM library)
9139 AC_MSG_ERROR(Cannot link with GPM library)
9144 test "$with_gpm" != maybe && AC_MSG_WARN(Cannot find GPM header)
9149 dnl ---------------------------------------------------------------------------
9150 dnl CF_WITH_LIBTOOL version: 36 updated: 2021/01/01 13:31:04
9152 dnl Provide a configure option to incorporate libtool. Define several useful
9153 dnl symbols for the makefile rules.
9155 dnl The reference to AC_PROG_LIBTOOL does not normally work, since it uses
9156 dnl macros from libtool.m4 which is in the aclocal directory of automake.
9157 dnl Following is a simple script which turns on the AC_PROG_LIBTOOL macro.
9158 dnl But that still does not work properly since the macro is expanded outside
9159 dnl the CF_WITH_LIBTOOL macro:
9162 dnl ACLOCAL=`aclocal --print-ac-dir`
9163 dnl if test -z "$ACLOCAL" ; then
9164 dnl echo cannot find aclocal directory
9166 dnl elif test ! -f $ACLOCAL/libtool.m4 ; then
9167 dnl echo cannot find libtool.m4 file
9171 dnl LOCAL=aclocal.m4
9172 dnl ORIG=aclocal.m4.orig
9174 dnl trap "mv $ORIG $LOCAL" 0 1 2 3 15
9178 dnl # sed the LIBTOOL= assignment to omit the current directory?
9179 dnl sed -e 's/^LIBTOOL=.*/LIBTOOL=${LIBTOOL:-libtool}/' $ACLOCAL/libtool.m4 >>$LOCAL
9180 dnl cat $ORIG >>$LOCAL
9184 AC_DEFUN([CF_WITH_LIBTOOL],
9186 AC_REQUIRE([CF_DISABLE_LIBTOOL_VERSION])
9187 ifdef([AC_PROG_LIBTOOL],,[
9190 # common library maintenance symbols that are convenient for libtool scripts:
9191 LIB_CREATE='${AR} -cr'
9192 LIB_OBJECT='${OBJECTS}'
9196 # symbols used to prop libtool up to enable it to determine what it should be
9204 AC_MSG_CHECKING(if you want to build libraries with libtool)
9205 AC_ARG_WITH(libtool,
9206 [ --with-libtool generate libraries with libtool],
9207 [with_libtool=$withval],
9209 AC_MSG_RESULT($with_libtool)
9210 if test "$with_libtool" != "no"; then
9211 ifdef([AC_PROG_LIBTOOL],[
9212 # missing_content_AC_PROG_LIBTOOL{{
9214 # missing_content_AC_PROG_LIBTOOL}}
9216 if test "$with_libtool" != "yes" ; then
9217 CF_PATH_SYNTAX(with_libtool)
9218 LIBTOOL=$with_libtool
9220 AC_CHECK_TOOLS(LIBTOOL,[libtool glibtool],none)
9222 if test -z "$cf_cv_libtool_version" && test "$LIBTOOL" = libtool
9224 CF_FORGET_TOOL(LIBTOOL)
9225 AC_CHECK_TOOLS(LIBTOOL,[glibtool],none)
9229 if test -z "$LIBTOOL" ; then
9230 AC_MSG_ERROR(Cannot find libtool)
9233 LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${libdir} ${LIBTOOL_VERSION} `cut -f1 ${top_srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o'
9234 LIB_OBJECT='${OBJECTS:.o=.lo}'
9236 LIB_CLEAN='${LIBTOOL} --mode=clean'
9237 LIB_COMPILE='${LIBTOOL} --mode=compile'
9238 LIB_LINK='${LIBTOOL} --mode=link ${CC} ${LIBTOOL_OPTS}'
9239 LIB_INSTALL='${LIBTOOL} --mode=install'
9240 LIB_UNINSTALL='${LIBTOOL} --mode=uninstall'
9243 CF_CHECK_LIBTOOL_VERSION
9245 # special hack to add -no-undefined (which libtool should do for itself)
9247 case "$cf_cv_system_name" in
9248 (cygwin*|msys*|mingw32*|os2*|uwin*|aix[[4-7]])
9249 LT_UNDEF=-no-undefined
9252 AC_SUBST([LT_UNDEF])
9254 # special hack to add --tag option for C++ compiler
9255 case "$cf_cv_libtool_version" in
9256 (1.[[5-9]]*|[[2-9]].[[0-9.a-z]]*)
9257 LIBTOOL_CXX="$LIBTOOL --tag=CXX"
9258 LIBTOOL="$LIBTOOL --tag=CC"
9261 LIBTOOL_CXX="$LIBTOOL"
9269 test -z "$LIBTOOL" && ECHO_LT=
9272 AC_SUBST(LIBTOOL_CXX)
9273 AC_SUBST(LIBTOOL_OPTS)
9275 AC_SUBST(LIB_CREATE)
9276 AC_SUBST(LIB_OBJECT)
9277 AC_SUBST(LIB_SUFFIX)
9281 AC_SUBST(LIB_COMPILE)
9283 AC_SUBST(LIB_INSTALL)
9284 AC_SUBST(LIB_UNINSTALL)
9287 dnl ---------------------------------------------------------------------------
9288 dnl CF_WITH_LIBTOOL_OPTS version: 4 updated: 2015/04/17 21:13:04
9289 dnl --------------------
9290 dnl Allow user to pass additional libtool options into the library creation
9291 dnl and link steps. The main use for this is to do something like
9292 dnl ./configure --with-libtool-opts=-static
9293 dnl to get the same behavior as automake-flavored
9294 dnl ./configure --enable-static
9295 AC_DEFUN([CF_WITH_LIBTOOL_OPTS],[
9296 AC_MSG_CHECKING(for additional libtool options)
9297 AC_ARG_WITH(libtool-opts,
9298 [ --with-libtool-opts=XXX specify additional libtool options],
9299 [with_libtool_opts=$withval],
9300 [with_libtool_opts=no])
9301 AC_MSG_RESULT($with_libtool_opts)
9303 case .$with_libtool_opts in
9307 LIBTOOL_OPTS="$LIBTOOL_OPTS $with_libtool_opts"
9311 AC_SUBST(LIBTOOL_OPTS)
9313 dnl ---------------------------------------------------------------------------
9314 dnl CF_WITH_LIB_BASENAME version: 1 updated: 2020/03/07 20:05:14
9315 dnl --------------------
9316 dnl Allow for overriding the basename of a library, i.e., the part to which
9317 dnl prefixes/suffixes are attached.
9319 dnl $1 = variable to set
9320 dnl $2 = option name
9321 dnl $3 = default basename for library, if omitted use $2
9322 AC_DEFUN([CF_WITH_LIB_BASENAME],
9324 AC_MSG_CHECKING(for desired basename for $2 library)
9325 AC_ARG_WITH($2-libname,
9326 [ --with-$2-libname=XXX override ifelse($3,,$2,$3) basename of library],
9327 [with_lib_basename=$withval],
9328 [with_lib_basename=ifelse($3,,$2,$3)])
9329 $1="$with_lib_basename"
9333 $1=ifelse($3,,$2,$3)
9339 AC_MSG_RESULT([$]$1)
9342 dnl ---------------------------------------------------------------------------
9343 dnl CF_WITH_LIB_PREFIX version: 2 updated: 2021/01/01 16:53:59
9344 dnl ------------------
9345 dnl Allow the library-prefix to be overridden. OS/2 EMX originally had no
9346 dnl "lib" prefix, e.g., because it used the dll naming convention.
9348 dnl $1 = variable to set
9349 AC_DEFUN([CF_WITH_LIB_PREFIX],
9351 AC_MSG_CHECKING(if you want to have a library-prefix)
9352 AC_ARG_WITH(lib-prefix,
9353 [ --with-lib-prefix override library-prefix],
9354 [with_lib_prefix=$withval],
9355 [with_lib_prefix=auto])
9356 AC_MSG_RESULT($with_lib_prefix)
9358 if test "$with_lib_prefix" = auto
9361 elif test "$with_lib_prefix" = no
9365 LIB_PREFIX=$with_lib_prefix
9368 dnl ---------------------------------------------------------------------------
9369 dnl CF_WITH_PATH version: 12 updated: 2021/09/04 06:35:04
9371 dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just
9372 dnl defaulting to yes/no.
9374 dnl $1 = option name
9376 dnl $3 = environment variable to set
9377 dnl $4 = default value, shown in the help-message, must be a constant
9378 dnl $5 = default value, if it is an expression & cannot be in the help-message
9380 AC_DEFUN([CF_WITH_PATH],
9381 [AC_ARG_WITH($1,[$2 ](default: ifelse([$4],,empty,[$4])),,
9382 ifelse([$4],,[withval="${$3}"],[withval="${$3:-ifelse([$5],,[$4],[$5])}"]))dnl
9383 if ifelse([$5],,true,[test -n "$5"]) ; then
9384 CF_PATH_SYNTAX(withval)
9389 dnl ---------------------------------------------------------------------------
9390 dnl CF_WITH_PATHLIST version: 13 updated: 2021/09/04 06:35:04
9391 dnl ----------------
9392 dnl Process an option specifying a list of colon-separated paths.
9394 dnl $1 = option name
9396 dnl $3 = environment variable to set
9397 dnl $4 = default value, shown in the help-message, must be a constant
9398 dnl $5 = default value, if it is an expression & cannot be in the help-message
9399 dnl $6 = flag to tell if we want to define or substitute
9401 AC_DEFUN([CF_WITH_PATHLIST],[
9402 AC_REQUIRE([CF_PATHSEP])
9403 AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
9404 ifelse($4,,[withval=${$3}],[withval=${$3:-ifelse($5,,$4,$5)}]))dnl
9406 IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${PATH_SEPARATOR}"
9408 for cf_src_path in $withval
9410 CF_PATH_SYNTAX(cf_src_path)
9411 test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR"
9412 cf_dst_path="${cf_dst_path}${cf_src_path}"
9417 # Strip single quotes from the value, e.g., when it was supplied as a literal
9419 case "$cf_dst_path" in
9421 cf_dst_path="`echo "$cf_dst_path" |sed -e s/\'// -e s/\'\$//`"
9424 cf_dst_path=`echo "$cf_dst_path" | sed -e 's/\\\\/\\\\\\\\/g'`
9427 # This may use the prefix/exec_prefix symbols which will only yield "NONE"
9428 # so we have to check/work around. We do prefer the result of "eval"...
9429 eval cf_dst_eval="$cf_dst_path"
9430 case "x$cf_dst_eval" in
9441 dnl ---------------------------------------------------------------------------
9442 dnl CF_WITH_PATH_PROG version: 1 updated: 2019/06/30 19:44:43
9443 dnl -----------------
9444 dnl Check for a given program, like CF_PATH_PROG, but allow override using a
9445 dnl "--with-xxx" option.
9448 dnl $1 = environment variable to set/update
9449 dnl $2 = program name
9452 AC_DEFUN([CF_WITH_PATH_PROG],[
9453 AC_ARG_WITH($2-path,
9454 [ --with-$2-path=XXX specify path of $2 ifelse($3,,,$3)],
9455 [AC_MSG_CHECKING(for $2 program ifelse($3,,,$3))
9457 AC_MSG_RESULT([$]$1)
9460 [CF_PATH_PROG($1,$2,,ifelse($4,,,$4))
9463 AC_MSG_WARN(no $2 program found ifelse($3,,,$3))
9467 dnl ---------------------------------------------------------------------------
9468 dnl CF_WITH_PCRE2 version: 6 updated: 2021/08/11 20:35:34
9470 dnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is
9471 dnl available and the user requests it. Assume the application will otherwise
9472 dnl use the POSIX interface.
9474 dnl TODO allow $withval to specify package location
9475 AC_DEFUN([CF_WITH_PCRE2],
9477 AC_REQUIRE([CF_PKG_CONFIG])
9479 AC_MSG_CHECKING(if you want to use PCRE2 for regular-expressions)
9481 [ --with-pcre2 use PCRE2 for regular-expressions])
9482 test -z "$with_pcre2" && with_pcre2=no
9483 AC_MSG_RESULT($with_pcre2)
9485 if test "x$with_pcre2" != xno ; then
9487 for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre
9489 CF_TRY_PKG_CONFIG($cf_with_pcre2,[cf_with_pcre2_ok=yes; break])
9491 cf_with_pcre2_ok=yes || AC_MSG_ERROR(Cannot find PCRE2 library)
9493 AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library])
9495 # if pkgconfig gave no results, look for the libraries directly
9497 (*pcre2-posix*|*pcreposix*)
9500 AC_CHECK_LIB(pcre2-posix,regcomp,[
9501 CF_ADD_LIB(pcre2-posix)],
9502 [AC_CHECK_LIB(pcreposix,regcomp,[
9503 CF_ADD_LIB(pcreposix)
9504 ],[AC_MSG_ERROR(Cannot find PCRE2 POSIX library)])])
9508 # either way, check for the library header files
9509 AC_CHECK_HEADERS(pcre2posix.h pcreposix.h)
9510 AC_CHECK_FUNCS(PCRE2regcomp)
9513 dnl ---------------------------------------------------------------------------
9514 dnl CF_WITH_PKG_CONFIG_LIBDIR version: 21 updated: 2023/01/22 13:37:42
9515 dnl -------------------------
9516 dnl Allow the choice of the pkg-config library directory to be overridden.
9518 dnl pkg-config uses a search-list built from these colon-separated lists of
9520 dnl a) $PKG_CONFIG_PATH (tested first, added if set)
9521 dnl b) $PKG_CONFIG_LIBDIR (tested second, added if set)
9522 dnl c) builtin-list (added if $PKG_CONFIG_LIBDIR is not set)
9524 dnl pkgconf (used with some systems such as FreeBSD in place of pkg-config)
9525 dnl optionally ignores $PKG_CONFIG_LIBDIR. Very old versions of pkg-config,
9526 dnl e.g., Solaris 10 also do not recognize $PKG_CONFIG_LIBDIR.
9527 AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[
9529 case "$PKG_CONFIG" in
9531 AC_MSG_CHECKING(for pkg-config library directory)
9534 AC_MSG_CHECKING(for $PKG_CONFIG library directory)
9538 # if $PKG_CONFIG_LIBDIR is set, try to use that
9539 if test -n "$PKG_CONFIG_PATH"; then
9540 cf_search_path=`echo "$PKG_CONFIG_PATH" | sed -e 's/:/ /g' -e 's,^[[ ]]*,,' -e 's,[[ ]]*$,,'`
9541 elif test -n "$PKG_CONFIG_LIBDIR"; then
9542 cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[[ ]]*,,' -e 's,[[ ]]*$,,'`
9547 # if the option is used, let that override. otherwise default to "libdir"
9548 AC_ARG_WITH(pkg-config-libdir,
9549 [ --with-pkg-config-libdir=XXX use given directory for installing pc-files],
9550 [cf_search_path=$withval],
9551 [test "x$PKG_CONFIG" != xnone && test -z "$cf_search_path" && cf_search_path=libdir])
9553 case "x$cf_search_path" in
9555 PKG_CONFIG_LIBDIR='${libdir}/pkgconfig'
9556 AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
9565 PKG_CONFIG_LIBDIR="$cf_search_path"
9566 AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
9572 # Look for the library directory using the same prefix as the executable
9573 AC_MSG_CHECKING(for search-list)
9574 if test "x$PKG_CONFIG" != xnone
9576 # works for pkg-config since version 0.24 (2009)
9577 # works for pkgconf since version 0.8.3 (2012)
9578 for cf_pkg_program in \
9579 `echo "$PKG_CONFIG" | sed -e 's,^.*/,,'` \
9583 cf_search_path=`"$PKG_CONFIG" --variable=pc_path "$cf_pkg_program" 2>/dev/null | tr : ' '`
9584 test -n "$cf_search_path" && break
9587 # works for pkg-config since import in 2005 of original 2001 HP code.
9588 test -z "$cf_search_path" && \
9590 "$PKG_CONFIG" --debug --exists no-such-package 2>&1 | $AWK "\
9591 /^Scanning directory (#[1-9][0-9]* )?'.*'$/{ \
9592 sub(\"^[[^']]*'\",\"\"); \
9593 sub(\"'.*\",\"\"); \
9594 printf \" %s\", \\[$]0; } \
9599 AC_MSG_RESULT($cf_search_path)
9602 AC_MSG_ERROR(Unexpected option value: $cf_search_path)
9606 if test -n "$cf_search_path"
9608 AC_MSG_CHECKING(for first directory)
9609 cf_pkg_config_path=none
9610 for cf_config in $cf_search_path
9612 if test -d "$cf_config"
9614 cf_pkg_config_path=$cf_config
9618 AC_MSG_RESULT($cf_pkg_config_path)
9620 if test "x$cf_pkg_config_path" != xnone ; then
9621 # limit this to the first directory found
9622 PKG_CONFIG_LIBDIR="$cf_pkg_config_path"
9625 if test -z "$PKG_CONFIG_LIBDIR" && test -n "$cf_search_path"
9627 AC_MSG_CHECKING(for workaround)
9628 if test "$prefix" = "NONE" ; then
9629 cf_prefix="$ac_default_prefix"
9633 eval cf_libdir=$libdir
9634 cf_libdir=`echo "$cf_libdir" | sed -e "s,^NONE,$cf_prefix,"`
9636 for cf_config in $cf_search_path
9639 $cf_libdir/pkgconfig)
9640 PKG_CONFIG_LIBDIR=$cf_libdir/pkgconfig
9644 test -z "$cf_backup" && cf_backup=$cf_config
9648 test -z "$PKG_CONFIG_LIBDIR" && PKG_CONFIG_LIBDIR=$cf_backup
9649 AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
9653 AC_SUBST(PKG_CONFIG_LIBDIR)
9655 dnl ---------------------------------------------------------------------------
9656 dnl CF_WITH_PTHREAD version: 7 updated: 2015/04/18 08:56:57
9658 dnl Check for POSIX thread library.
9659 AC_DEFUN([CF_WITH_PTHREAD],
9661 AC_MSG_CHECKING(if you want to link with the pthread library)
9662 AC_ARG_WITH(pthread,
9663 [ --with-pthread use POSIX thread library],
9664 [with_pthread=$withval],
9666 AC_MSG_RESULT($with_pthread)
9668 if test "$with_pthread" != no ; then
9669 AC_CHECK_HEADER(pthread.h,[
9670 AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header])
9672 for cf_lib_pthread in pthread c_r
9674 AC_MSG_CHECKING(if we can link with the $cf_lib_pthread library)
9675 cf_save_LIBS="$LIBS"
9676 CF_ADD_LIB($cf_lib_pthread)
9678 #include <pthread.h>
9680 int rc = pthread_create(0,0,0,0);
9681 int r2 = pthread_mutexattr_settype(0, 0);
9682 ],[with_pthread=yes],[with_pthread=no])
9683 LIBS="$cf_save_LIBS"
9684 AC_MSG_RESULT($with_pthread)
9685 test "$with_pthread" = yes && break
9688 if test "$with_pthread" = yes ; then
9689 CF_ADD_LIB($cf_lib_pthread)
9690 AC_DEFINE(HAVE_LIBPTHREADS,1,[Define to 1 if we have pthreads library])
9692 AC_MSG_ERROR(Cannot link with pthread library)
9697 dnl ---------------------------------------------------------------------------
9698 dnl CF_WITH_REL_VERSION version: 2 updated: 2023/05/06 18:18:18
9699 dnl -------------------
9700 dnl Allow library's release-version to be overridden. Generally this happens when a
9701 dnl packager has incremented the release-version past that used in the original package,
9702 dnl and wishes to keep doing this.
9704 dnl $1 is the package name, if any, to derive corresponding {package}_MAJOR
9705 dnl and {package}_MINOR symbols
9707 AC_DEFUN([CF_WITH_REL_VERSION],[
9708 test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0
9709 AC_ARG_WITH(rel-version,
9710 [ --with-rel-version=XXX override derived release version],
9711 [AC_MSG_WARN(overriding release version $cf_cv_rel_version to $withval)
9712 cf_cv_rel_version=$withval])
9714 CF_NUMBER_SYNTAX($cf_cv_rel_version,Release version)
9716 $1_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'`
9717 $1_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[[^.]]*//' -e 's/^\.//' -e 's/\..*//'`
9718 test -n "$1_MINOR" || $1_MINOR=0
9719 CF_NUMBER_SYNTAX([$]$1_MAJOR,Release major-version)
9720 CF_NUMBER_SYNTAX([$]$1_MINOR,Release minor-version)
9723 dnl ---------------------------------------------------------------------------
9724 dnl CF_WITH_SYSMOUSE version: 3 updated: 2012/10/06 17:56:13
9725 dnl ----------------
9726 dnl If we can compile with sysmouse, make it available unless it is not wanted.
9727 AC_DEFUN([CF_WITH_SYSMOUSE],[
9728 # not everyone has "test -c"
9729 if test -c /dev/sysmouse 2>/dev/null ; then
9730 AC_MSG_CHECKING(if you want to use sysmouse)
9731 AC_ARG_WITH(sysmouse,
9732 [ --with-sysmouse use sysmouse (FreeBSD console)],
9733 [cf_with_sysmouse=$withval],
9734 [cf_with_sysmouse=maybe])
9735 if test "$cf_with_sysmouse" != no ; then
9737 #include <osreldate.h>
9738 #if (__FreeBSD_version >= 400017)
9739 #include <sys/consio.h>
9740 #include <sys/fbio.h>
9742 #include <machine/console.h>
9745 struct mouse_info the_mouse;
9746 ioctl(0, CONS_MOUSECTL, &the_mouse);
9747 ],[cf_with_sysmouse=yes],[cf_with_sysmouse=no])
9749 AC_MSG_RESULT($cf_with_sysmouse)
9750 test "$cf_with_sysmouse" = yes && AC_DEFINE(USE_SYSMOUSE,1,[Define to 1 if we can/should use the sysmouse interface])
9753 dnl ---------------------------------------------------------------------------
9754 dnl CF_WITH_SYSTYPE version: 1 updated: 2013/01/26 16:26:12
9756 dnl For testing, override the derived host system-type which is used to decide
9757 dnl things such as the linker commands used to build shared libraries. This is
9758 dnl normally chosen automatically based on the type of system which you are
9759 dnl building on. We use it for testing the configure script.
9761 dnl This is different from the --host option: it is used only for testing parts
9762 dnl of the configure script which would not be reachable with --host since that
9763 dnl relies on the build environment being real, rather than mocked up.
9764 AC_DEFUN([CF_WITH_SYSTYPE],[
9765 CF_CHECK_CACHE([AC_CANONICAL_SYSTEM])
9766 AC_ARG_WITH(system-type,
9767 [ --with-system-type=XXX test: override derived host system-type],
9768 [AC_MSG_WARN(overriding system type to $withval)
9769 cf_cv_system_name=$withval
9773 dnl ---------------------------------------------------------------------------
9774 dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
9775 dnl ----------------
9776 AC_DEFUN([CF_WITH_VALGRIND],[
9777 CF_NO_LEAKS_OPTION(valgrind,
9778 [ --with-valgrind test: use valgrind],
9781 dnl ---------------------------------------------------------------------------
9782 dnl CF_WITH_VERSIONED_SYMS version: 10 updated: 2021/01/04 18:48:01
9783 dnl ----------------------
9784 dnl Use this when building shared library with ELF, to markup symbols with the
9785 dnl version identifier from the given input file. Generally that identifier is
9786 dnl the same as the SONAME at which the symbol was first introduced.
9788 dnl $1 = basename of the ".map" file (default $PACKAGE)
9789 AC_DEFUN([CF_WITH_VERSIONED_SYMS],
9790 [AC_REQUIRE([AC_PROG_FGREP])dnl
9791 AC_REQUIRE([AC_PROG_EGREP])dnl
9793 AC_MSG_CHECKING(if versioned-symbols file should be used)
9794 AC_ARG_WITH(versioned-syms,
9795 [ --with-versioned-syms=X markup versioned symbols using ld],
9796 [with_versioned_syms=$withval],
9797 [with_versioned_syms=no])
9798 case "x$with_versioned_syms" in
9800 with_versioned_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).map'
9806 test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms)
9809 test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms)
9810 with_versioned_syms=`pwd`/"$with_versioned_syms"
9813 AC_MSG_RESULT($with_versioned_syms)
9819 if test "x$with_versioned_syms" != xno
9821 RESULTING_SYMS=$with_versioned_syms
9822 case "x$MK_SHARED_LIB" in
9824 VERSIONED_SYMS="-Wl,--version-script,\${RESULTING_SYMS}"
9825 MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-Wl,%\\[$]{VERSIONED_SYMS} -Wl,%"`
9826 CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB)
9829 VERSIONED_SYMS="-Wl,-M,\${RESULTING_SYMS}"
9830 MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-dy%\\[$]{VERSIONED_SYMS} -dy%"`
9831 CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB)
9834 AC_MSG_WARN(this system does not support versioned-symbols)
9838 # Linux ld can selectively override scope, e.g., of symbols beginning with
9839 # "_" by first declaring some as global, and then using a wildcard to
9840 # declare the others as local. Some other loaders cannot do this. Check
9841 # by constructing a (very) simple shared library and inspecting its
9843 if test "x$VERSIONED_SYMS" != "x"
9845 AC_MSG_CHECKING(if wildcards can be used to selectively omit symbols)
9851 cat >conftest.ver <<EOF
9880 cat >conftest.$ac_ext <<EOF
9881 #line __oline__ "configure"
9882 int _ismissing(void) { return 1; }
9883 int _localf1(void) { return 1; }
9884 int _localf2(void) { return 2; }
9885 int globalf1(void) { return 1; }
9886 int globalf2(void) { return 2; }
9887 int _sublocalf1(void) { return 1; }
9888 int _sublocalf2(void) { return 2; }
9889 int subglobalf1(void) { return 1; }
9890 int subglobalf2(void) { return 2; }
9892 cat >conftest.mk <<EOF
9895 CPPFLAGS=${CPPFLAGS}
9898 VERSIONED_SYMS=${VERSIONED_SYMS}
9899 RESULTING_SYMS=conftest.ver
9900 MK_SHARED_LIB=${MK_SHARED_LIB}
9901 conftest.so: conftest.$ac_cv_objext
9902 \$(MK_SHARED_LIB) conftest.$ac_cv_objext
9905 # compile source, make library
9906 if make -f conftest.mk 2>&AC_FD_CC >/dev/null
9908 # test for missing symbol in either Data or Text section
9909 cf_missing="`nm -P conftest.so 2>&AC_FD_CC |${FGREP-fgrep} _ismissing | ${EGREP-egrep} '[[ ]][[DT]][[ ]]'`"
9910 test -n "$cf_missing" && WILDCARD_SYMS=yes
9912 AC_MSG_RESULT($WILDCARD_SYMS)
9916 AC_SUBST(RESULTING_SYMS)
9917 AC_SUBST(VERSIONED_SYMS)
9918 AC_SUBST(WILDCARD_SYMS)
9920 dnl ---------------------------------------------------------------------------
9921 dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54
9923 dnl Handle configure option "--with-x11-rgb", setting these shell
9926 dnl $RGB_PATH is the option value, used for finding the X11 rgb file.
9927 dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given.
9929 dnl Most Linux's use this:
9930 dnl /usr/share/X11/rgb.txt
9931 dnl Debian uses this:
9932 dnl /etc/X11/rgb.txt
9933 dnl DragonFlyBSD ports uses this:
9934 dnl /usr/pkg/lib/X11/rgb.txt
9935 dnl FreeBSD ports use these:
9936 dnl /usr/local/lib/X11/rgb.txt
9937 dnl /usr/local/share/X11/rgb.txt
9938 dnl Mandriva has these:
9939 dnl /usr/lib/X11/rgb.txt
9940 dnl /usr/lib64/X11/rgb.txt
9941 dnl NetBSD has these
9942 dnl /usr/X11R7/lib/X11/rgb.txt
9943 dnl OpenSolaris uses
9945 dnl /usr/X11/etc/X11/rgb.txt
9946 dnl /usr/X11/share/X11/rgb.txt
9947 dnl /usr/X11/lib/X11/rgb.txt
9949 dnl /opt/local/share/X11/rgb.txt (MacPorts)
9950 dnl /opt/X11/share/X11/rgb.txt (non-ports)
9952 dnl /usr/X11/etc/X11/rgb.txt
9953 dnl /usr/X11/share/X11/rgb.txt (perhaps)
9954 dnl /usr/X11/lib/amd64/X11/rgb.txt
9955 dnl Solaris10 uses (in this order):
9956 dnl /usr/openwin/lib/X11/rgb.txt
9957 dnl /usr/X11/lib/X11/rgb.txt
9958 AC_DEFUN([CF_WITH_X11_RGB],[
9959 AC_MSG_CHECKING(for X11 rgb file)
9960 AC_ARG_WITH(x11-rgb,
9961 [ --with-x11-rgb=FILE file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)],
9962 [RGB_PATH=$withval],
9965 if test "x[$]RGB_PATH" = xauto
9967 RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
9969 /opt/local/share/X11/rgb.txt \
9970 /opt/X11/share/X11/rgb.txt \
9971 /usr/share/X11/rgb.txt \
9972 /usr/X11/share/X11/rgb.txt \
9973 /usr/X11/lib/X11/rgb.txt \
9974 /usr/lib/X11/rgb.txt \
9976 /usr/pkg/lib/X11/rgb.txt \
9977 /usr/X11R7/lib/X11/rgb.txt \
9978 /usr/X11R6/lib/X11/rgb.txt \
9979 /usr/X11R5/lib/X11/rgb.txt \
9980 /usr/X11R4/lib/X11/rgb.txt \
9981 /usr/local/lib/X11/rgb.txt \
9982 /usr/local/share/X11/rgb.txt \
9983 /usr/lib64/X11/rgb.txt
9985 if test -f "$cf_path" ; then
9992 CF_PATH_SYNTAX(cf_path)
9995 AC_MSG_RESULT($RGB_PATH)
9997 AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt])
10000 if test "$RGB_PATH" = no
10004 AC_SUBST(no_x11_rgb)
10006 dnl ---------------------------------------------------------------------------
10007 dnl CF_XOPEN_SOURCE version: 67 updated: 2023/09/06 18:55:27
10008 dnl ---------------
10009 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
10010 dnl or adapt to the vendor's definitions to get equivalent functionality,
10011 dnl without losing the common non-POSIX features.
10014 dnl $1 is the nominal value for _XOPEN_SOURCE
10015 dnl $2 is the nominal value for _POSIX_C_SOURCE
10017 dnl The default case prefers _XOPEN_SOURCE over _POSIX_C_SOURCE if the
10018 dnl implementation predefines it, because X/Open and most implementations agree
10019 dnl that the latter is a legacy or "aligned" value.
10021 dnl Because _XOPEN_SOURCE is preferred, if defining _POSIX_C_SOURCE turns
10022 dnl that off, then refrain from setting _POSIX_C_SOURCE explicitly.
10025 dnl https://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html
10026 dnl https://docs.oracle.com/cd/E19253-01/816-5175/standards-5/index.html
10027 dnl https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
10028 AC_DEFUN([CF_XOPEN_SOURCE],[
10029 AC_REQUIRE([AC_CANONICAL_HOST])
10030 AC_REQUIRE([CF_POSIX_VISIBLE])
10032 if test "$cf_cv_posix_visible" = no; then
10034 cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
10035 cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
10040 cf_xopen_source="-D_ALL_SOURCE"
10043 cf_xopen_source="-D_APPLE_C_SOURCE"
10046 cf_xopen_source="-D_DARWIN_C_SOURCE"
10049 (freebsd*|dragonfly*|midnightbsd*)
10050 # 5.x headers associate
10051 # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
10052 # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
10053 cf_POSIX_C_SOURCE=200112L
10054 cf_XOPEN_SOURCE=600
10055 cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
10058 cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
10061 cf_xopen_source="-D_HPUX_SOURCE"
10064 cf_xopen_source="-D_SGI_SOURCE"
10067 (linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
10068 CF_GNU_SOURCE($cf_XOPEN_SOURCE)
10071 cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
10074 # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
10076 CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
10079 cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
10082 # OpenBSD 6.x has broken locale support, both compile-time and runtime.
10083 # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
10084 # Abusing the conformance level is a workaround.
10085 AC_MSG_WARN(this system does not provide usable locale support)
10086 cf_xopen_source="-D_BSD_SOURCE"
10087 cf_XOPEN_SOURCE=700
10090 # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
10091 cf_xopen_source="-D_BSD_SOURCE"
10092 cf_XOPEN_SOURCE=600
10095 # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
10098 cf_xopen_source="-D_OSF_SOURCE"
10101 cf_xopen_source="-D_QNX_SOURCE"
10104 # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
10107 cf_xopen_source="-D__EXTENSIONS__"
10108 cf_cv_xopen_source=broken
10110 (sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
10115 CF_TRY_XOPEN_SOURCE
10116 cf_save_xopen_cppflags="$CPPFLAGS"
10117 CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
10118 # Some of these niche implementations use copy/paste, double-check...
10119 if test "$cf_cv_xopen_source" = no ; then
10120 CF_VERBOSE(checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE)
10121 AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[
10122 AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable)
10123 CPPFLAGS="$cf_save_xopen_cppflags"])
10128 if test -n "$cf_xopen_source" ; then
10129 CF_APPEND_CFLAGS($cf_xopen_source,true)
10132 dnl In anything but the default case, we may have system-specific setting
10133 dnl which is still not guaranteed to provide all of the entrypoints that
10134 dnl _XOPEN_SOURCE would yield.
10135 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
10136 AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
10137 AC_TRY_COMPILE([#include <stdlib.h>],[
10138 #ifndef _XOPEN_SOURCE
10139 #error _XOPEN_SOURCE is not defined
10141 [cf_XOPEN_SOURCE_set=yes],
10142 [cf_XOPEN_SOURCE_set=no])
10143 AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
10144 if test "$cf_XOPEN_SOURCE_set" = yes
10146 AC_TRY_COMPILE([#include <stdlib.h>],[
10147 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
10148 #error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
10150 [cf_XOPEN_SOURCE_set_ok=yes],
10151 [cf_XOPEN_SOURCE_set_ok=no])
10152 if test "$cf_XOPEN_SOURCE_set_ok" = no
10154 AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
10157 CF_TRY_XOPEN_SOURCE
10160 fi # cf_cv_posix_visible
10162 dnl ---------------------------------------------------------------------------
10163 dnl CF__SED_TRIMBLANKS version: 1 updated: 2021/01/02 09:31:20
10164 dnl ------------------
10165 dnl Trim something using sed, then trim extra whitespace
10166 dnl $1 = extra parameters, e.g., in CF_STRIP_G_OPT
10167 define([CF__SED_TRIMBLANKS],[sed ifelse($1,,,[$1] )-e 's%[[ ]]% %g' -e 's% [[ ]]*% %g' -e 's%^ %%' -e 's% [$]%%'])dnl
10168 dnl ---------------------------------------------------------------------------
10169 dnl CF__XOPEN_SOURCE_BODY version: 2 updated: 2023/02/18 17:41:25
10170 dnl ---------------------
10171 dnl body of test when test-compiling for _XOPEN_SOURCE check
10172 define([CF__XOPEN_SOURCE_BODY],
10174 #ifndef _XOPEN_SOURCE
10175 #error _XOPEN_SOURCE is not defined
10178 dnl ---------------------------------------------------------------------------
10179 dnl CF__XOPEN_SOURCE_HEAD version: 2 updated: 2023/02/18 17:41:25
10180 dnl ---------------------
10181 dnl headers to include when test-compiling for _XOPEN_SOURCE check
10182 define([CF__XOPEN_SOURCE_HEAD],
10184 $ac_includes_default