]> ncurses.scripts.mit.edu Git - ncurses.git/blob - aclocal.m4
ncurses 6.3 - patch 20211113
[ncurses.git] / aclocal.m4
1 dnl***************************************************************************
2 dnl Copyright 2018-2020,2021 Thomas E. Dickey                                *
3 dnl Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
4 dnl                                                                          *
5 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
6 dnl copy of this software and associated documentation files (the            *
7 dnl "Software"), to deal in the Software without restriction, including      *
8 dnl without limitation the rights to use, copy, modify, merge, publish,      *
9 dnl distribute, distribute with modifications, sublicense, and/or sell       *
10 dnl copies of the Software, and to permit persons to whom the Software is    *
11 dnl furnished to do so, subject to the following conditions:                 *
12 dnl                                                                          *
13 dnl The above copyright notice and this permission notice shall be included  *
14 dnl in all copies or substantial portions of the Software.                   *
15 dnl                                                                          *
16 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17 dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18 dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19 dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20 dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21 dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22 dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23 dnl                                                                          *
24 dnl Except as contained in this notice, the name(s) of the above copyright   *
25 dnl holders shall not be used in advertising or otherwise to promote the     *
26 dnl sale, use or other dealings in this Software without prior written       *
27 dnl authorization.                                                           *
28 dnl***************************************************************************
29 dnl
30 dnl Author: Thomas E. Dickey 1995-on
31 dnl
32 dnl $Id: aclocal.m4,v 1.992 2021/11/07 15:31:47 tom Exp $
33 dnl Macros used in NCURSES auto-configuration script.
34 dnl
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.
38 dnl
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
42 dnl
43 dnl ---------------------------------------------------------------------------
44 dnl ---------------------------------------------------------------------------
45 dnl AM_LANGINFO_CODESET version: 6 updated: 2021/01/01 16:53:59
46 dnl -------------------
47 dnl Inserted as requested by gettext 0.10.40
48 dnl File from /usr/share/aclocal
49 dnl codeset.m4
50 dnl ====================
51 dnl serial AM1
52 dnl
53 dnl From Bruno Haible.
54 AC_DEFUN([AM_LANGINFO_CODESET],
55 [
56 AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
57         [AC_TRY_LINK([#include <langinfo.h>],
58         [char* cs = nl_langinfo(CODESET); (void)cs],
59         am_cv_langinfo_codeset=yes,
60         am_cv_langinfo_codeset=no)
61         ])
62         if test "$am_cv_langinfo_codeset" = yes; then
63                 AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
64                 [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
65         fi
66 ])dnl
67 dnl ---------------------------------------------------------------------------
68 dnl CF_ABI_DEFAULTS version: 2 updated: 2015/06/06 13:49:58
69 dnl ---------------
70 dnl Provide configure-script defaults for different ncurses ABIs.
71 AC_DEFUN([CF_ABI_DEFAULTS],[
72 AC_REQUIRE([CF_NCURSES_WITH_ABI_VERSION])
73 case x$cf_cv_abi_version in
74 (x[[6789]])
75         cf_dft_ext_colors=yes
76         cf_dft_ext_const=yes
77         cf_dft_ext_mouse=yes
78         cf_dft_ext_putwin=yes
79         cf_dft_ext_spfuncs=yes
80         cf_dft_filter_syms=yes
81         cf_dft_chtype=uint32_t
82         cf_dft_mmask_t=uint32_t
83         cf_dft_interop=yes
84         cf_dft_tparm_arg=intptr_t
85         cf_dft_with_lp64=yes
86         ;;
87 (*)
88         cf_dft_ext_colors=no
89         cf_dft_ext_const=no
90         cf_dft_ext_mouse=no
91         cf_dft_ext_putwin=no
92         cf_dft_ext_spfuncs=no
93         cf_dft_filter_syms=no
94         cf_dft_chtype=auto
95         cf_dft_mmask_t=auto
96         cf_dft_interop=no
97         cf_dft_tparm_arg=long
98         cf_dft_with_lp64=no
99         ;;
100 esac
101 ])dnl
102 dnl ---------------------------------------------------------------------------
103 dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
104 dnl ------------------
105 dnl Conditionally generate script according to whether we're using a given autoconf.
106 dnl
107 dnl $1 = version to compare against
108 dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
109 dnl $3 = code to use if AC_ACVERSION is older than $1.
110 define([CF_ACVERSION_CHECK],
111 [
112 ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
113 ifdef([m4_version_compare],
114 [m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
115 [CF_ACVERSION_COMPARE(
116 AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
117 AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
118 dnl ---------------------------------------------------------------------------
119 dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
120 dnl --------------------
121 dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
122 dnl                      MAJOR2, MINOR2, TERNARY2,
123 dnl                      PRINTABLE2, not FOUND, FOUND)
124 define([CF_ACVERSION_COMPARE],
125 [ifelse(builtin([eval], [$2 < $5]), 1,
126 [ifelse([$8], , ,[$8])],
127 [ifelse([$9], , ,[$9])])])dnl
128 dnl ---------------------------------------------------------------------------
129 dnl CF_ADA_INCLUDE_DIRS version: 8 updated: 2013/10/14 04:24:07
130 dnl -------------------
131 dnl Construct the list of include-options for the C programs in the Ada95
132 dnl binding.
133 AC_DEFUN([CF_ADA_INCLUDE_DIRS],
134 [
135 ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS"
136 if test "$srcdir" != "."; then
137         ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS"
138 fi
139 if test "$GCC" != yes; then
140         ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
141 elif test "$includedir" != "/usr/include"; then
142         if test "$includedir" = '${prefix}/include' ; then
143                 if test x$prefix != x/usr ; then
144                         ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
145                 fi
146         else
147                 ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
148         fi
149 fi
150 AC_SUBST(ACPPFLAGS)
151 ])dnl
152 dnl ---------------------------------------------------------------------------
153 dnl CF_ADD_ADAFLAGS version: 1 updated: 2010/06/19 15:22:18
154 dnl ---------------
155 dnl Add to $ADAFLAGS, which is substituted into makefile and scripts.
156 AC_DEFUN([CF_ADD_ADAFLAGS],[
157         ADAFLAGS="$ADAFLAGS $1"
158         AC_SUBST(ADAFLAGS)
159 ])dnl
160 dnl ---------------------------------------------------------------------------
161 dnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15
162 dnl -------------
163 dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
164 dnl $1 = flags to add
165 dnl $2 = if given makes this macro verbose.
166 dnl
167 dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
168 dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
169 dnl confused by the quotes (which require backslashes to keep them usable).
170 AC_DEFUN([CF_ADD_CFLAGS],
171 [
172 cf_fix_cppflags=no
173 cf_new_cflags=
174 cf_new_cppflags=
175 cf_new_extra_cppflags=
176
177 for cf_add_cflags in $1
178 do
179 case "$cf_fix_cppflags" in
180 (no)
181         case "$cf_add_cflags" in
182         (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
183                 case "$cf_add_cflags" in
184                 (-D*)
185                         cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
186
187                         test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
188                                 && test -z "${cf_tst_cflags}" \
189                                 && cf_fix_cppflags=yes
190
191                         if test "$cf_fix_cppflags" = yes ; then
192                                 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
193                                 continue
194                         elif test "${cf_tst_cflags}" = "\"'" ; then
195                                 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
196                                 continue
197                         fi
198                         ;;
199                 esac
200                 case "$CPPFLAGS" in
201                 (*$cf_add_cflags)
202                         ;;
203                 (*)
204                         case "$cf_add_cflags" in
205                         (-D*)
206                                 cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
207                                 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
208                                 ;;
209                         esac
210                         CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags)
211                         ;;
212                 esac
213                 ;;
214         (*)
215                 CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags)
216                 ;;
217         esac
218         ;;
219 (yes)
220         CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
221
222         cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'`
223
224         test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
225                 && test -z "${cf_tst_cflags}" \
226                 && cf_fix_cppflags=no
227         ;;
228 esac
229 done
230
231 if test -n "$cf_new_cflags" ; then
232         ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
233         CF_APPEND_TEXT(CFLAGS,$cf_new_cflags)
234 fi
235
236 if test -n "$cf_new_cppflags" ; then
237         ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
238         CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags)
239 fi
240
241 if test -n "$cf_new_extra_cppflags" ; then
242         ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
243         CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags)
244 fi
245
246 AC_SUBST(EXTRA_CPPFLAGS)
247
248 ])dnl
249 dnl ---------------------------------------------------------------------------
250 dnl CF_ADD_CXXFLAGS version: 1 updated: 2020/04/04 16:16:13
251 dnl ---------------
252 dnl Copy non-preprocessor flags to $CXXFLAGS, preprocessor flags to $CPPFLAGS
253 dnl The second parameter if given makes this macro verbose.
254 dnl
255 dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
256 dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
257 dnl confused by the quotes (which require backslashes to keep them usable).
258 AC_DEFUN([CF_ADD_CXXFLAGS],
259 [
260 cf_save_CXXFLAGS="$CFLAGS"
261 CFLAGS="$CXXFLAGS"
262 CF_ADD_CFLAGS($1 ifelse($2,,,[,$2]))
263 CXXFLAGS="$CFLAGS"
264 CFLAGS="$cf_save_CXXFLAGS"
265 ])dnl
266 dnl ---------------------------------------------------------------------------
267 dnl CF_ADD_INCDIR version: 17 updated: 2021/09/04 06:35:04
268 dnl -------------
269 dnl Add an include-directory to $CPPFLAGS.  Don't add /usr/include, since it is
270 dnl redundant.  We don't normally need to add -I/usr/local/include for gcc,
271 dnl but old versions (and some misinstalled ones) need that.  To make things
272 dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to
273 dnl the include-path).
274 AC_DEFUN([CF_ADD_INCDIR],
275 [
276 if test -n "$1" ; then
277   for cf_add_incdir in $1
278   do
279         while test "$cf_add_incdir" != /usr/include
280         do
281           if test -d "$cf_add_incdir"
282           then
283                 cf_have_incdir=no
284                 if test -n "$CFLAGS$CPPFLAGS" ; then
285                   # a loop is needed to ensure we can add subdirs of existing dirs
286                   for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
287                         if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
288                           cf_have_incdir=yes; break
289                         fi
290                   done
291                 fi
292
293                 if test "$cf_have_incdir" = no ; then
294                   if test "$cf_add_incdir" = /usr/local/include ; then
295                         if test "$GCC" = yes
296                         then
297                           cf_save_CPPFLAGS=$CPPFLAGS
298                           CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir)
299                           AC_TRY_COMPILE([#include <stdio.h>],
300                                   [printf("Hello")],
301                                   [],
302                                   [cf_have_incdir=yes])
303                           CPPFLAGS=$cf_save_CPPFLAGS
304                         fi
305                   fi
306                 fi
307
308                 if test "$cf_have_incdir" = no ; then
309                   CF_VERBOSE(adding $cf_add_incdir to include-path)
310                   ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir"
311
312                   cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'`
313                   test "$cf_top_incdir" = "$cf_add_incdir" && break
314                   cf_add_incdir="$cf_top_incdir"
315                 else
316                   break
317                 fi
318           else
319                 break
320           fi
321         done
322   done
323 fi
324 ])dnl
325 dnl ---------------------------------------------------------------------------
326 dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05
327 dnl ----------
328 dnl Add a library, used to enforce consistency.
329 dnl
330 dnl $1 = library to add, without the "-l"
331 dnl $2 = variable to update (default $LIBS)
332 AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl
333 dnl ---------------------------------------------------------------------------
334 dnl CF_ADD_LIBDIR version: 11 updated: 2020/12/31 20:19:42
335 dnl -------------
336 dnl     Adds to the library-path
337 dnl
338 dnl     Some machines have trouble with multiple -L options.
339 dnl
340 dnl $1 is the (list of) directory(s) to add
341 dnl $2 is the optional name of the variable to update (default LDFLAGS)
342 dnl
343 AC_DEFUN([CF_ADD_LIBDIR],
344 [
345 if test -n "$1" ; then
346         for cf_add_libdir in $1
347         do
348                 if test "$cf_add_libdir" = /usr/lib ; then
349                         :
350                 elif test -d "$cf_add_libdir"
351                 then
352                         cf_have_libdir=no
353                         if test -n "$LDFLAGS$LIBS" ; then
354                                 # a loop is needed to ensure we can add subdirs of existing dirs
355                                 for cf_test_libdir in $LDFLAGS $LIBS ; do
356                                         if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
357                                                 cf_have_libdir=yes; break
358                                         fi
359                                 done
360                         fi
361                         if test "$cf_have_libdir" = no ; then
362                                 CF_VERBOSE(adding $cf_add_libdir to library-path)
363                                 ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
364                         fi
365                 fi
366         done
367 fi
368 ])dnl
369 dnl ---------------------------------------------------------------------------
370 dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33
371 dnl -----------
372 dnl Add one or more libraries, used to enforce consistency.  Libraries are
373 dnl prepended to an existing list, since their dependencies are assumed to
374 dnl already exist in the list.
375 dnl
376 dnl $1 = libraries to add, with the "-l", etc.
377 dnl $2 = variable to update (default $LIBS)
378 AC_DEFUN([CF_ADD_LIBS],[
379 cf_add_libs="[$]ifelse($2,,LIBS,[$2])"
380 # reverse order
381 cf_add_0lib=
382 for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
383 # filter duplicates
384 for cf_add_1lib in $cf_add_0lib; do
385         for cf_add_2lib in $cf_add_libs; do
386                 if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
387                         cf_add_1lib=
388                         break
389                 fi
390         done
391         test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
392 done
393 ifelse($2,,LIBS,[$2])="$cf_add_libs"
394 ])dnl
395 dnl ---------------------------------------------------------------------------
396 dnl CF_ADD_SUBDIR_PATH version: 5 updated: 2020/12/31 20:19:42
397 dnl ------------------
398 dnl Append to a search-list for a nonstandard header/lib-file
399 dnl     $1 = the variable to return as result
400 dnl     $2 = the package name
401 dnl     $3 = the subdirectory, e.g., bin, include or lib
402 dnl $4 = the directory under which we will test for subdirectories
403 dnl $5 = a directory that we do not want $4 to match
404 AC_DEFUN([CF_ADD_SUBDIR_PATH],
405 [
406 test "x$4" != "x$5" && \
407 test -d "$4" && \
408 ifelse([$5],NONE,,[{ test -z "$5" || test "x$5" = xNONE || test "x$4" != "x$5"; } &&]) {
409         test -n "$verbose" && echo "    ... testing for $3-directories under $4"
410         test -d "$4/$3" &&          $1="[$]$1 $4/$3"
411         test -d "$4/$3/$2" &&       $1="[$]$1 $4/$3/$2"
412         test -d "$4/$3/$2/$3" &&    $1="[$]$1 $4/$3/$2/$3"
413         test -d "$4/$2/$3" &&       $1="[$]$1 $4/$2/$3"
414         test -d "$4/$2/$3/$2" &&    $1="[$]$1 $4/$2/$3/$2"
415 }
416 ])dnl
417 dnl ---------------------------------------------------------------------------
418 dnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40
419 dnl ----------------
420 dnl Use CF_ADD_CFLAGS after first checking for potential redefinitions.
421 dnl $1 = flags to add
422 dnl $2 = if given makes this macro verbose.
423 define([CF_APPEND_CFLAGS],
424 [
425 for cf_add_cflags in $1
426 do
427         case "x$cf_add_cflags" in
428         (x-[[DU]]*)
429                 CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2])
430                 CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2])
431                 ;;
432         esac
433         CF_ADD_CFLAGS([$cf_add_cflags],[$2])
434 done
435 ])dnl
436 dnl ---------------------------------------------------------------------------
437 dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
438 dnl --------------
439 dnl use this macro for appending text without introducing an extra blank at
440 dnl the beginning
441 define([CF_APPEND_TEXT],
442 [
443         test -n "[$]$1" && $1="[$]$1 "
444         $1="[$]{$1}$2"
445 ])dnl
446 dnl ---------------------------------------------------------------------------
447 dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
448 dnl --------------
449 dnl Allow user to disable a normally-on option.
450 AC_DEFUN([CF_ARG_DISABLE],
451 [CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
452 dnl ---------------------------------------------------------------------------
453 dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31
454 dnl -------------
455 dnl Allow user to enable a normally-off option.
456 AC_DEFUN([CF_ARG_ENABLE],
457 [CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
458 dnl ---------------------------------------------------------------------------
459 dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14
460 dnl -------------
461 dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
462 dnl values.
463 dnl
464 dnl Parameters:
465 dnl $1 = option name
466 dnl $2 = help-string
467 dnl $3 = action to perform if option is not default
468 dnl $4 = action if perform if option is default
469 dnl $5 = default option value (either 'yes' or 'no')
470 AC_DEFUN([CF_ARG_OPTION],
471 [AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
472         if test "$enableval" != "$5" ; then
473 ifelse([$3],,[    :]dnl
474 ,[    $3]) ifelse([$4],,,[
475         else
476                 $4])
477         fi],[enableval=$5 ifelse([$4],,,[
478         $4
479 ])dnl
480 ])])dnl
481 dnl ---------------------------------------------------------------------------
482 dnl CF_AR_FLAGS version: 9 updated: 2021/01/01 13:31:04
483 dnl -----------
484 dnl Check for suitable "ar" (archiver) options for updating an archive.
485 dnl
486 dnl In particular, handle some obsolete cases where the "-" might be omitted,
487 dnl as well as a workaround for breakage of make's archive rules by the GNU
488 dnl binutils "ar" program.
489 AC_DEFUN([CF_AR_FLAGS],[
490 AC_REQUIRE([CF_PROG_AR])
491
492 AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[
493         case "$cf_cv_system_name" in
494         (*-msvc*)
495                 cf_cv_ar_flags=''
496                 cat >mk_static_lib.sh <<-EOF
497                 #!$SHELL
498                 MSVC_BIN="[$]AR"
499                 out="\[$]1"
500                 shift
501                 exec \[$]MSVC_BIN -out:"\[$]out" \[$]@
502                 EOF
503                 chmod +x mk_static_lib.sh
504                 AR=`pwd`/mk_static_lib.sh
505                 ;;
506         (*)
507                 cf_cv_ar_flags=unknown
508                 for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
509                 do
510
511                         # check if $ARFLAGS already contains this choice
512                         if test "x$ARFLAGS" != "x" ; then
513                                 cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"`
514                                 if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then
515                                         cf_cv_ar_flags=
516                                         break
517                                 fi
518                         fi
519
520                         rm -f "conftest.$ac_cv_objext"
521                         rm -f conftest.a
522
523                         cat >"conftest.$ac_ext" <<EOF
524 #line __oline__ "configure"
525 int     testdata[[3]] = { 123, 456, 789 };
526 EOF
527                         if AC_TRY_EVAL(ac_compile) ; then
528                                 echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&AC_FD_CC
529                                 $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&AC_FD_CC 1>/dev/null
530                                 if test -f conftest.a ; then
531                                         cf_cv_ar_flags="$cf_ar_flags"
532                                         break
533                                 fi
534                         else
535                                 CF_VERBOSE(cannot compile test-program)
536                                 break
537                         fi
538                 done
539                 rm -f conftest.a "conftest.$ac_ext" "conftest.$ac_cv_objext"
540                 ;;
541         esac
542 ])
543
544 if test -n "$ARFLAGS" ; then
545         if test -n "$cf_cv_ar_flags" ; then
546                 ARFLAGS="$ARFLAGS $cf_cv_ar_flags"
547         fi
548 else
549         ARFLAGS=$cf_cv_ar_flags
550 fi
551
552 AC_SUBST(ARFLAGS)
553 ])
554 dnl ---------------------------------------------------------------------------
555 dnl CF_AWK_BIG_PRINTF version: 5 updated: 2015/04/17 21:13:04
556 dnl -----------------
557 dnl Check if awk can handle big strings using printf.  Some older versions of
558 dnl awk choke on large strings passed via "%s".
559 dnl
560 dnl $1 = desired string size
561 dnl $2 = variable to set with result
562 AC_DEFUN([CF_AWK_BIG_PRINTF],
563 [
564         case x$AWK in
565         (x)
566                 eval $2=no
567                 ;;
568         (*)
569                 if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < $1) { xx = xx "x"; }; printf("%s\n", xx); }' 2>/dev/null \
570                         | $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
571                         eval $2=yes
572                 else
573                         eval $2=no
574                 fi
575                 ;;
576         esac
577 ])dnl
578 dnl ---------------------------------------------------------------------------
579 dnl CF_BOOL_DECL version: 8 updated: 2004/01/30 15:51:18
580 dnl ------------
581 dnl Test if 'bool' is a builtin type in the configured C++ compiler.  Some
582 dnl older compilers (e.g., gcc 2.5.8) don't support 'bool' directly; gcc
583 dnl 2.6.3 does, in anticipation of the ANSI C++ standard.
584 dnl
585 dnl Treat the configuration-variable specially here, since we're directly
586 dnl substituting its value (i.e., 1/0).
587 dnl
588 dnl $1 is the shell variable to store the result in, if not $cv_cv_builtin_bool
589 AC_DEFUN([CF_BOOL_DECL],
590 [
591 AC_MSG_CHECKING(if we should include stdbool.h)
592
593 AC_CACHE_VAL(cf_cv_header_stdbool_h,[
594         AC_TRY_COMPILE([],[bool foo = false],
595                 [cf_cv_header_stdbool_h=0],
596                 [AC_TRY_COMPILE([
597 #ifndef __BEOS__
598 #include <stdbool.h>
599 #endif
600 ],[bool foo = false],
601                         [cf_cv_header_stdbool_h=1],
602                         [cf_cv_header_stdbool_h=0])])])
603
604 if test "$cf_cv_header_stdbool_h" = 1
605 then    AC_MSG_RESULT(yes)
606 else    AC_MSG_RESULT(no)
607 fi
608
609 AC_MSG_CHECKING([for builtin bool type])
610
611 AC_CACHE_VAL(ifelse($1,,cf_cv_builtin_bool,[$1]),[
612         AC_TRY_COMPILE([
613 #include <stdio.h>
614 #include <sys/types.h>
615 ],[bool x = false],
616                 [ifelse($1,,cf_cv_builtin_bool,[$1])=1],
617                 [ifelse($1,,cf_cv_builtin_bool,[$1])=0])
618         ])
619
620 if test "$ifelse($1,,cf_cv_builtin_bool,[$1])" = 1
621 then    AC_MSG_RESULT(yes)
622 else    AC_MSG_RESULT(no)
623 fi
624 ])dnl
625 dnl ---------------------------------------------------------------------------
626 dnl CF_BOOL_SIZE version: 18 updated: 2021/09/04 06:35:04
627 dnl ------------
628 dnl Test for the size of 'bool' in the configured C++ compiler (e.g., a type).
629 dnl Don't bother looking for bool.h, since it has been deprecated.
630 dnl
631 dnl If the current compiler is C rather than C++, we get the bool definition
632 dnl from <stdbool.h>.
633 AC_DEFUN([CF_BOOL_SIZE],
634 [
635 AC_CHECK_SIZEOF(bool,,[
636 #include <stdlib.h>
637 #include <stdio.h>
638
639 #if defined(__cplusplus)
640
641 #ifdef HAVE_GXX_BUILTIN_H
642 #include <g++/builtin.h>
643 #elif HAVE_GPP_BUILTIN_H
644 #include <gpp/builtin.h>
645 #elif HAVE_BUILTIN_H
646 #include <builtin.h>
647 #endif
648
649 #else
650
651 #if $cf_cv_header_stdbool_h
652 #include <stdbool.h>
653 #endif
654
655 #endif
656 ])
657
658 AC_CACHE_CHECK(for type of bool, cf_cv_type_of_bool,[
659         rm -f cf_test.out
660         AC_TRY_RUN([
661 #include <stdlib.h>
662 #include <stdio.h>
663
664 #if defined(__cplusplus)
665
666 #ifdef HAVE_GXX_BUILTIN_H
667 #include <g++/builtin.h>
668 #elif HAVE_GPP_BUILTIN_H
669 #include <gpp/builtin.h>
670 #elif HAVE_BUILTIN_H
671 #include <builtin.h>
672 #endif
673
674 #else
675
676 #if $cf_cv_header_stdbool_h
677 #include <stdbool.h>
678 #endif
679
680 #endif
681
682 int main(void)
683 {
684         FILE *fp = fopen("cf_test.out", "w");
685         if (fp != 0) {
686                 bool x = true;
687                 if ((bool)(-x) >= 0)
688                         fputs("unsigned ", fp);
689                 if (sizeof(x) == sizeof(int))       fputs("int",  fp);
690                 else if (sizeof(x) == sizeof(char)) fputs("char", fp);
691                 else if (sizeof(x) == sizeof(short))fputs("short",fp);
692                 else if (sizeof(x) == sizeof(long)) fputs("long", fp);
693                 fclose(fp);
694         }
695         ${cf_cv_main_return:-return}(0);
696 }
697                 ],
698                 [cf_cv_type_of_bool=`cat cf_test.out`
699                  if test -z "$cf_cv_type_of_bool"; then
700                    cf_cv_type_of_bool=unknown
701                  fi],
702                 [cf_cv_type_of_bool=unknown],
703                 [
704                 case x$ac_cv_sizeof_bool in
705                 (x1) cf_cv_type_of_bool="unsigned char";;
706                 (x2) cf_cv_type_of_bool="unsigned short";;
707                 (x4) cf_cv_type_of_bool="unsigned int";;
708                 (x8) cf_cv_type_of_bool="unsigned long";;
709                 (*)  cf_cv_type_of_bool=unknown;;
710                 esac
711                 ])
712         rm -f cf_test.out
713 ])
714
715 if test "$cf_cv_type_of_bool" = unknown ; then
716         case .$NCURSES_BOOL in
717         (.auto|.) NCURSES_BOOL=unsigned;;
718         esac
719         AC_MSG_WARN(Assuming $NCURSES_BOOL for type of bool)
720         cf_cv_type_of_bool=$NCURSES_BOOL
721 fi
722 ])dnl
723 dnl ---------------------------------------------------------------------------
724 dnl CF_BUILD_CC version: 9 updated: 2021/01/02 09:31:20
725 dnl -----------
726 dnl If we're cross-compiling, allow the user to override the tools and their
727 dnl options.  The configure script is oriented toward identifying the host
728 dnl compiler, etc., but we need a build compiler to generate parts of the
729 dnl source.
730 dnl
731 dnl $1 = default for $CPPFLAGS
732 dnl $2 = default for $LIBS
733 AC_DEFUN([CF_BUILD_CC],[
734 CF_ACVERSION_CHECK(2.52,,
735         [AC_REQUIRE([CF_PROG_EXT])])
736 if test "$cross_compiling" = yes ; then
737
738         # defaults that we might want to override
739         : ${BUILD_CFLAGS:=''}
740         : ${BUILD_CPPFLAGS:='ifelse([$1],,,[$1])'}
741         : ${BUILD_LDFLAGS:=''}
742         : ${BUILD_LIBS:='ifelse([$2],,,[$2])'}
743         : ${BUILD_EXEEXT:='$x'}
744         : ${BUILD_OBJEXT:='o'}
745
746         AC_ARG_WITH(build-cc,
747                 [  --with-build-cc=XXX     the build C compiler ($BUILD_CC)],
748                 [BUILD_CC="$withval"],
749                 [AC_CHECK_PROGS(BUILD_CC, [gcc clang c99 c89 cc cl],none)])
750         AC_MSG_CHECKING(for native build C compiler)
751         AC_MSG_RESULT($BUILD_CC)
752
753         AC_MSG_CHECKING(for native build C preprocessor)
754         AC_ARG_WITH(build-cpp,
755                 [  --with-build-cpp=XXX    the build C preprocessor ($BUILD_CPP)],
756                 [BUILD_CPP="$withval"],
757                 [BUILD_CPP='${BUILD_CC} -E'])
758         AC_MSG_RESULT($BUILD_CPP)
759
760         AC_MSG_CHECKING(for native build C flags)
761         AC_ARG_WITH(build-cflags,
762                 [  --with-build-cflags=XXX the build C compiler-flags ($BUILD_CFLAGS)],
763                 [BUILD_CFLAGS="$withval"])
764         AC_MSG_RESULT($BUILD_CFLAGS)
765
766         AC_MSG_CHECKING(for native build C preprocessor-flags)
767         AC_ARG_WITH(build-cppflags,
768                 [  --with-build-cppflags=XXX the build C preprocessor-flags ($BUILD_CPPFLAGS)],
769                 [BUILD_CPPFLAGS="$withval"])
770         AC_MSG_RESULT($BUILD_CPPFLAGS)
771
772         AC_MSG_CHECKING(for native build linker-flags)
773         AC_ARG_WITH(build-ldflags,
774                 [  --with-build-ldflags=XXX the build linker-flags ($BUILD_LDFLAGS)],
775                 [BUILD_LDFLAGS="$withval"])
776         AC_MSG_RESULT($BUILD_LDFLAGS)
777
778         AC_MSG_CHECKING(for native build linker-libraries)
779         AC_ARG_WITH(build-libs,
780                 [  --with-build-libs=XXX   the build libraries (${BUILD_LIBS})],
781                 [BUILD_LIBS="$withval"])
782         AC_MSG_RESULT($BUILD_LIBS)
783
784         # this assumes we're on Unix.
785         BUILD_EXEEXT=
786         BUILD_OBJEXT=o
787
788         : ${BUILD_CC:='${CC}'}
789
790         if { test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}'; } ; then
791                 AC_MSG_ERROR([Cross-build requires two compilers.
792 Use --with-build-cc to specify the native compiler.])
793         fi
794
795 else
796         : ${BUILD_CC:='${CC}'}
797         : ${BUILD_CPP:='${CPP}'}
798         : ${BUILD_CFLAGS:='${CFLAGS}'}
799         : ${BUILD_CPPFLAGS:='${CPPFLAGS}'}
800         : ${BUILD_LDFLAGS:='${LDFLAGS}'}
801         : ${BUILD_LIBS:='${LIBS}'}
802         : ${BUILD_EXEEXT:='$x'}
803         : ${BUILD_OBJEXT:='o'}
804 fi
805
806 AC_SUBST(BUILD_CC)
807 AC_SUBST(BUILD_CPP)
808 AC_SUBST(BUILD_CFLAGS)
809 AC_SUBST(BUILD_CPPFLAGS)
810 AC_SUBST(BUILD_LDFLAGS)
811 AC_SUBST(BUILD_LIBS)
812 AC_SUBST(BUILD_EXEEXT)
813 AC_SUBST(BUILD_OBJEXT)
814 ])dnl
815 dnl ---------------------------------------------------------------------------
816 dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23
817 dnl ---------------
818 AC_DEFUN([CF_C11_NORETURN],
819 [
820 AC_MSG_CHECKING(if you want to use C11 _Noreturn feature)
821 CF_ARG_ENABLE(stdnoreturn,
822         [  --enable-stdnoreturn    enable C11 _Noreturn feature for diagnostics],
823         [enable_stdnoreturn=yes],
824         [enable_stdnoreturn=no])
825 AC_MSG_RESULT($enable_stdnoreturn)
826
827 if test $enable_stdnoreturn = yes; then
828 AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
829         [AC_TRY_COMPILE([
830 #include <stdio.h>
831 #include <stdlib.h>
832 #include <stdnoreturn.h>
833 static _Noreturn void giveup(void) { exit(0); }
834         ],
835         [if (feof(stdin)) giveup()],
836         cf_cv_c11_noreturn=yes,
837         cf_cv_c11_noreturn=no)
838         ])
839 else
840         cf_cv_c11_noreturn=no,
841 fi
842
843 if test "$cf_cv_c11_noreturn" = yes; then
844         AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working])
845         AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported])
846         HAVE_STDNORETURN_H=1
847 else
848         HAVE_STDNORETURN_H=0
849 fi
850
851 AC_SUBST(HAVE_STDNORETURN_H)
852 AC_SUBST(STDC_NORETURN)
853 ])dnl
854 dnl ---------------------------------------------------------------------------
855 dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20
856 dnl ---------------
857 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
858 dnl into CC.  This will not help with broken scripts that wrap the compiler
859 dnl with options, but eliminates a more common category of user confusion.
860 dnl
861 dnl In particular, it addresses the problem of being able to run the C
862 dnl preprocessor in a consistent manner.
863 dnl
864 dnl Caveat: this also disallows blanks in the pathname for the compiler, but
865 dnl the nuisance of having inconsistent settings for compiler and preprocessor
866 dnl outweighs that limitation.
867 AC_DEFUN([CF_CC_ENV_FLAGS],
868 [
869 # This should have been defined by AC_PROG_CC
870 : "${CC:=cc}"
871
872 AC_MSG_CHECKING(\$CFLAGS variable)
873 case "x$CFLAGS" in
874 (*-[[IUD]]*)
875         AC_MSG_RESULT(broken)
876         AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
877         cf_flags="$CFLAGS"
878         CFLAGS=
879         for cf_arg in $cf_flags
880         do
881                 CF_ADD_CFLAGS($cf_arg)
882         done
883         ;;
884 (*)
885         AC_MSG_RESULT(ok)
886         ;;
887 esac
888
889 AC_MSG_CHECKING(\$CC variable)
890 case "$CC" in
891 (*[[\ \ ]]-*)
892         AC_MSG_RESULT(broken)
893         AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
894         # humor him...
895         cf_prog=`echo "$CC" | sed -e 's/        / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
896         cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
897         CC="$cf_prog"
898         for cf_arg in $cf_flags
899         do
900                 case "x$cf_arg" in
901                 (x-[[IUDfgOW]]*)
902                         CF_ADD_CFLAGS($cf_arg)
903                         ;;
904                 (*)
905                         CC="$CC $cf_arg"
906                         ;;
907                 esac
908         done
909         CF_VERBOSE(resulting CC: '$CC')
910         CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
911         CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
912         ;;
913 (*)
914         AC_MSG_RESULT(ok)
915         ;;
916 esac
917 ])dnl
918 dnl ---------------------------------------------------------------------------
919 dnl CF_CFG_DEFAULTS version: 16 updated: 2021/01/04 19:33:05
920 dnl ---------------
921 dnl Determine the default configuration into which we'll install ncurses.  This
922 dnl can be overridden by the user's command-line options.  There's two items to
923 dnl look for:
924 dnl     1. the prefix (e.g., /usr)
925 dnl     2. the header files (e.g., /usr/include/ncurses)
926 dnl We'll look for a previous installation of ncurses and use the same defaults.
927 dnl
928 dnl We don't use AC_PREFIX_DEFAULT, because it gets evaluated too soon, and
929 dnl we don't use AC_PREFIX_PROGRAM, because we cannot distinguish ncurses's
930 dnl programs from a vendor's.
931 AC_DEFUN([CF_CFG_DEFAULTS],
932 [AC_REQUIRE([AC_PROG_FGREP])dnl
933
934 AC_MSG_CHECKING(for prefix)
935 if test "x$prefix" = "xNONE" ; then
936         case "$cf_cv_system_name" in
937                 # non-vendor systems don't have a conflict
938         (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
939                 prefix=/usr
940                 ;;
941         (*)     prefix=$ac_default_prefix
942                 ;;
943         esac
944 fi
945 AC_MSG_RESULT($prefix)
946
947 if test "x$prefix" = "xNONE" ; then
948 AC_MSG_CHECKING(for default include-directory)
949 test -n "$verbose" && echo 1>&AC_FD_MSG
950 for cf_symbol in \
951         "$includedir" \
952         "$includedir/ncurses" \
953         "$prefix/include" \
954         "$prefix/include/ncurses" \
955         /usr/local/include \
956         /usr/local/include/ncurses \
957         /usr/include \
958         /usr/include/ncurses
959 do
960         cf_dir=`eval echo "$cf_symbol"`
961         if test -f "$cf_dir/curses.h" ; then
962         if ( ${FGREP-fgrep} NCURSES_VERSION "$cf_dir/curses.h" >/dev/null 2>&1 ) ; then
963                 includedir="$cf_symbol"
964                 test -n "$verbose"  && echo $ECHO_N "   found " 1>&AC_FD_MSG
965                 break
966         fi
967         fi
968         test -n "$verbose"  && echo "   tested $cf_dir" 1>&AC_FD_MSG
969 done
970 AC_MSG_RESULT($includedir)
971 fi
972 ])dnl
973 dnl ---------------------------------------------------------------------------
974 dnl CF_CGETENT version: 6 updated: 2017/01/21 11:06:25
975 dnl ----------
976 dnl Check if the terminal-capability database functions are available.  If not,
977 dnl ncurses has a much-reduced version.
978 AC_DEFUN([CF_CGETENT],[
979 AC_CACHE_CHECK(for terminal-capability database functions,cf_cv_cgetent,[
980 AC_TRY_LINK([
981 #include <stdlib.h>],[
982         char temp[128];
983         char *buf = temp;
984         char *db_array = temp;
985         cgetent(&buf, &db_array, "vt100");
986         cgetcap(buf, "tc", '=');
987         cgetmatch(buf, "tc");
988         ],
989         [cf_cv_cgetent=yes],
990         [cf_cv_cgetent=no])
991 ])
992
993 if test "$cf_cv_cgetent" = yes
994 then
995         AC_DEFINE(HAVE_BSD_CGETENT,1,[Define to 1 if we have BSD cgetent])
996 AC_CACHE_CHECK(if cgetent uses const parameter,cf_cv_cgetent_const,[
997 AC_TRY_LINK([
998 #pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers"
999 #include <stdlib.h>],[
1000         char temp[128];
1001         char *buf = temp;
1002 #ifndef _NETBSD_SOURCE                  /* given, since April 2004 in stdlib.h */
1003         const char *db_array = temp;
1004         cgetent(&buf, &db_array, "vt100");
1005 #endif
1006         cgetcap(buf, "tc", '=');
1007         cgetmatch(buf, "tc");
1008         ],
1009         [cf_cv_cgetent_const=yes],
1010         [cf_cv_cgetent_const=no])
1011 ])
1012         if test "$cf_cv_cgetent_const" = yes
1013         then
1014                 AC_DEFINE_UNQUOTED(CGETENT_CONST,const,[Define to const if needed for some BSD cgetent variations])
1015         fi
1016 fi
1017 ])dnl
1018 dnl ---------------------------------------------------------------------------
1019 dnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15
1020 dnl --------------
1021 dnl Check if we're accidentally using a cache from a different machine.
1022 dnl Derive the system name, as a check for reusing the autoconf cache.
1023 dnl
1024 dnl If we've packaged config.guess and config.sub, run that (since it does a
1025 dnl better job than uname).  Normally we'll use AC_CANONICAL_HOST, but allow
1026 dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
1027 dnl which is useful in cross-compiles.
1028 dnl
1029 dnl Note: we would use $ac_config_sub, but that is one of the places where
1030 dnl autoconf 2.5x broke compatibility with autoconf 2.13
1031 AC_DEFUN([CF_CHECK_CACHE],
1032 [
1033 if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then
1034         ifelse([$1],,[AC_CANONICAL_HOST],[$1])
1035         system_name="$host_os"
1036 else
1037         system_name="`(uname -s -r) 2>/dev/null`"
1038         if test -z "$system_name" ; then
1039                 system_name="`(hostname) 2>/dev/null`"
1040         fi
1041 fi
1042 test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
1043 AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
1044
1045 test -z "$system_name" && system_name="$cf_cv_system_name"
1046 test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
1047
1048 if test ".$system_name" != ".$cf_cv_system_name" ; then
1049         AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
1050         AC_MSG_ERROR("Please remove config.cache and try again.")
1051 fi
1052 ])dnl
1053 dnl ---------------------------------------------------------------------------
1054 dnl CF_CHECK_ENVIRON version: 3 updated: 2010/05/26 16:44:57
1055 dnl ----------------
1056 dnl Check for data that is usually declared in <unistd.h>, e.g., the 'environ'
1057 dnl variable.  Define a DECL_xxx symbol if we must declare it ourselves.
1058 dnl
1059 dnl $1 = the name to check
1060 dnl $2 = the assumed type
1061 AC_DEFUN([CF_CHECK_ENVIRON],
1062 [
1063 AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
1064     AC_TRY_COMPILE([
1065 #ifdef HAVE_STDLIB_H
1066 #include <stdlib.h>
1067 #endif
1068 #include <unistd.h> ],
1069     ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1,
1070     [cf_cv_dcl_$1=yes],
1071     [cf_cv_dcl_$1=no])
1072 ])
1073
1074 if test "$cf_cv_dcl_$1" = no ; then
1075     CF_UPPER(cf_result,decl_$1)
1076     AC_DEFINE_UNQUOTED($cf_result)
1077 fi
1078
1079 # It's possible (for near-UNIX clones) that the data doesn't exist
1080 CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2]))
1081 ])dnl
1082 dnl ---------------------------------------------------------------------------
1083 dnl CF_CHECK_ERRNO version: 13 updated: 2020/03/10 18:53:47
1084 dnl --------------
1085 dnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g.,
1086 dnl the 'errno' variable.  Define a DECL_xxx symbol if we must declare it
1087 dnl ourselves.
1088 dnl
1089 dnl $1 = the name to check
1090 dnl $2 = the assumed type
1091 AC_DEFUN([CF_CHECK_ERRNO],
1092 [
1093 AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
1094         AC_TRY_COMPILE([
1095 #ifdef HAVE_STDLIB_H
1096 #include <stdlib.h>
1097 #endif
1098 #include <stdio.h>
1099 #include <sys/types.h>
1100 #include <errno.h> ],
1101         ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1; (void)x,
1102         [cf_cv_dcl_$1=yes],
1103         [cf_cv_dcl_$1=no])
1104 ])
1105
1106 if test "$cf_cv_dcl_$1" = no ; then
1107         CF_UPPER(cf_result,decl_$1)
1108         AC_DEFINE_UNQUOTED($cf_result)
1109 fi
1110
1111 # It's possible (for near-UNIX clones) that the data doesn't exist
1112 CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2]))
1113 ])dnl
1114 dnl ---------------------------------------------------------------------------
1115 dnl CF_CHECK_EXTERN_DATA version: 5 updated: 2021/09/04 06:35:04
1116 dnl --------------------
1117 dnl Check for existence of external data in the current set of libraries.  If
1118 dnl we can modify it, it is real enough.
1119 dnl $1 = the name to check
1120 dnl $2 = its type
1121 AC_DEFUN([CF_CHECK_EXTERN_DATA],
1122 [
1123 AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[
1124         AC_TRY_LINK([
1125 #undef $1
1126 extern $2 $1;
1127 ],
1128         [$1 = 2],
1129         [cf_cv_have_$1=yes],
1130         [cf_cv_have_$1=no])
1131 ])
1132
1133 if test "$cf_cv_have_$1" = yes ; then
1134         CF_UPPER(cf_result,have_$1)
1135         AC_DEFINE_UNQUOTED($cf_result)
1136 fi
1137
1138 ])dnl
1139 dnl ---------------------------------------------------------------------------
1140 dnl CF_CHECK_FVISIBILITY version: 2 updated: 2020/04/04 16:16:13
1141 dnl --------------------
1142 dnl Check whether the compiler understands -fvisibility=hidden
1143 dnl
1144 dnl $1 = compiler
1145 dnl $2 = compiler-flags variable name
1146 dnl $3 = cache variable to set
1147 AC_DEFUN([CF_CHECK_FVISIBILITY],[
1148 AC_CACHE_CHECK(if $1 -fvisibility=hidden option works,$3,[
1149     cf_save_cflags="[$]$2"
1150     $2="[$]$2 -fvisibility=hidden"
1151     AC_TRY_LINK([
1152 __attribute__ ((visibility("default"))) int somefunc() {return 42;}
1153         ],[
1154         if (somefunc()) return 1;
1155 ],
1156     [$3=yes],
1157     [$3=no])
1158     $2=$cf_save_cflags
1159 ])
1160 ])dnl
1161 dnl ---------------------------------------------------------------------------
1162 dnl CF_CHECK_GETENV version: 2 updated: 2021/01/02 17:09:14
1163 dnl ---------------
1164 dnl Check if repeated getenv calls return the same pointer, e.g., it does not
1165 dnl discard the previous pointer when returning a new one.
1166 AC_DEFUN([CF_CHECK_GETENV],
1167 [
1168 AC_REQUIRE([CF_CHECK_ENVIRON])
1169 AC_CHECK_FUNC( getenv, ,, AC_MSG_ERROR(getenv not found) )
1170 AC_CHECK_FUNCS( putenv setenv strdup )
1171 AC_CACHE_CHECK(if getenv returns consistent values,cf_cv_consistent_getenv,[
1172 AC_TRY_RUN([
1173 #include <stdlib.h>
1174 #include <unistd.h>
1175 #include <stdio.h>
1176 #include <string.h>
1177 #include <sys/types.h>
1178
1179 #if defined(HAVE_ENVIRON) && defined(DECL_ENVIRON) && !defined(environ)
1180 extern char **environ;  /* POSIX, but some systems are not... */
1181 #endif
1182
1183 #if defined(HAVE_STRDUP)
1184 #define str_alloc(s) strdup(s)
1185 #else
1186 #define str_alloc(s) strcpy(malloc(strlen(s) + 1, s))
1187 #endif
1188
1189 static void set_value(const char *name, const char *value)
1190 {
1191 #if defined(HAVE_SETENV)
1192         setenv(name, value, 1);
1193 #elif defined(HAVE_PUTENV)
1194         char buffer[1024];
1195         sprintf(buffer, "%s=%s", name, value);
1196         putenv(str_alloc(buffer));
1197 #else
1198 #error neither putenv/setenv found
1199 #endif
1200 }
1201 int main(void)
1202 {
1203         int pass;
1204         size_t numenv, limit, j;
1205         char **mynames;
1206         char **myvalues;
1207         char **mypointer;
1208         char *equals;
1209         for (numenv = 0; environ[numenv]; ++numenv) ;
1210         limit = numenv + 10;
1211         mynames = (char **) calloc(limit + 1, sizeof(char *));
1212         myvalues = (char **) calloc(limit + 1, sizeof(char *));
1213         mypointer = (char **) calloc(limit + 1, sizeof(char *));
1214 #if defined(HAVE_ENVIRON)
1215         for (j = 0; environ[j]; ++j) {
1216                 mynames[j] = str_alloc(environ[j]);
1217                 equals = strchr(mynames[j], '=');
1218                 if (equals != 0) {
1219                         *equals++ = '\\0';
1220                         myvalues[j] = str_alloc(equals);
1221                 } else {
1222                         myvalues[j] = str_alloc("");
1223                 }
1224         }
1225 #endif
1226         for (j = numenv; j < limit; ++j) {
1227                 char name[80];
1228                 char value[80];
1229                 size_t found;
1230                 size_t k = 0;
1231                 do {
1232                         size_t jk;
1233                         found = 0;
1234                         sprintf(name, "TERM%lu", (unsigned long) k);
1235                         for (jk = 0; jk < j; ++jk) {
1236                                 if (!strcmp(name, mynames[jk])) {
1237                                         found = 1;
1238                                         ++k;
1239                                         break;
1240                                 }
1241                         }
1242                 } while (found);
1243                 sprintf(value, "%lu:%p", (unsigned long) k, &mynames[j]);
1244                 set_value(name, value);
1245                 mynames[j] = str_alloc(name);
1246                 myvalues[j] = str_alloc(value);
1247         }
1248         for (pass = 0; pass < 3; ++pass) {
1249                 for (j = 0; j < limit; ++j) {
1250                         char *value = getenv(mynames[j]);
1251                         if (pass) {
1252                                 if (value == 0) {
1253                                         fprintf(stderr, "getenv returned null for %s\\n", mynames[j]);
1254                                         ${cf_cv_main_return:-return}(1);
1255                                 } else if (value != mypointer[j]) {
1256                                         fprintf(stderr, "getenv returned different pointer for %s\\n", mynames[j]);
1257                                         ${cf_cv_main_return:-return}(1);
1258                                 } else if (strcmp(value, myvalues[j])) {
1259                                         fprintf(stderr, "getenv returned different value for %s\\n", mynames[j]);
1260                                         ${cf_cv_main_return:-return}(1);
1261                                 }
1262                         } else {
1263                                 size_t k;
1264                                 mypointer[j] = value;
1265                                 for (k = 0; k < j; ++k) {
1266                                         if (mypointer[j] == mypointer[k]) {
1267                                                 fprintf(stderr, "getenv returned same pointer for %s and %s\\n", mynames[j], mynames[k]);
1268                                                 ${cf_cv_main_return:-return}(1);
1269                                         }
1270                                 }
1271                         }
1272                 }
1273         }
1274         ${cf_cv_main_return:-return}(0);
1275 }
1276 ],
1277 [cf_cv_consistent_getenv=yes],
1278 [cf_cv_consistent_getenv=no],
1279 [cf_cv_consistent_getenv=unknown])
1280 ])
1281
1282 if test "x$cf_cv_consistent_getenv" = xno
1283 then
1284         AC_DEFINE(HAVE_CONSISTENT_GETENV,1,[Define to 1 if getenv repeatably returns the same value for a given name])
1285 fi
1286 ])dnl
1287 dnl ---------------------------------------------------------------------------
1288 dnl CF_CHECK_GNAT_VERSION version: 4 updated: 2021/01/01 13:31:04
1289 dnl ---------------------
1290 AC_DEFUN([CF_CHECK_GNAT_VERSION],
1291 [
1292 AC_REQUIRE([CF_GNAT_VERSION])
1293 case "$cf_cv_gnat_version" in
1294 (3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|[[1-9]][[0-9]].[[0-9]]*|20[[0-9]][[0-9]])
1295         cf_cv_prog_gnat_correct=yes
1296         ;;
1297 (*)
1298         AC_MSG_WARN(Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding.)
1299         cf_cv_prog_gnat_correct=no
1300         ;;
1301 esac
1302 ])
1303 dnl ---------------------------------------------------------------------------
1304 dnl CF_CHECK_GPM_WGETCH version: 6 updated: 2021/01/04 18:48:01
1305 dnl -------------------
1306 dnl Check if GPM is already linked with curses.  If so - and if the linkage
1307 dnl is not "weak" - warn about this because it can create problems linking
1308 dnl applications with ncurses.
1309 AC_DEFUN([CF_CHECK_GPM_WGETCH],[
1310 AC_REQUIRE([AC_PROG_EGREP])dnl
1311
1312 AC_CHECK_LIB(gpm,Gpm_Wgetch,[
1313
1314 AC_CACHE_CHECK(if GPM is weakly bound to curses library, cf_cv_check_gpm_wgetch,[
1315 cf_cv_check_gpm_wgetch=unknown
1316 if test "$cross_compiling" != yes ; then
1317
1318 cat >conftest.$ac_ext <<CF_EOF
1319 #include <gpm.h>
1320 int main(void)
1321 {
1322         Gpm_Wgetch();
1323         ${cf_cv_main_return:-return}(0);
1324 }
1325 CF_EOF
1326
1327         cf_save_LIBS="$LIBS"
1328         # This only works if we can look at the symbol table.  If a shared
1329         # library is stripped for install, we cannot use that.  So we're forced
1330         # to rely on the static library, noting that some packagers may not
1331         # include it.
1332         LIBS="-static -lgpm -dynamic $LIBS"
1333         if AC_TRY_EVAL(ac_compile) ; then
1334                 if AC_TRY_EVAL(ac_link) ; then
1335                         cf_cv_check_gpm_wgetch="`nm \"conftest$ac_exeext\" | ${EGREP-egrep} '\<wgetch\>' | ${EGREP-egrep} '\<[[vVwW]]\>'`"
1336                         test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes
1337                         test -z "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=no
1338                 fi
1339         fi
1340         rm -rf ./conftest*
1341         LIBS="$cf_save_LIBS"
1342 fi
1343 ])
1344
1345 if test "$cf_cv_check_gpm_wgetch" != yes ; then
1346         AC_MSG_WARN(GPM library is already linked with curses - read the FAQ)
1347 fi
1348 ])])dnl
1349 dnl ---------------------------------------------------------------------------
1350 dnl CF_CHECK_LIBSSP version: 1 updated: 2021/10/30 10:40:19
1351 dnl ---------------
1352 dnl Check if libssp is needed, e.g., to work around misconfigured libraries
1353 dnl used in cross-compiling to MinGW.
1354 AC_DEFUN([CF_CHECK_LIBSSP],[
1355 AC_CACHE_CHECK(if ssp library is needed,cf_cv_need_libssp,[
1356 AC_TRY_LINK([
1357 #include <sys/types.h>
1358 #include <dirent.h>
1359 ],[
1360        DIR *dp = opendir(".");
1361 ],cf_cv_need_libssp=no,[
1362         cf_save_LIBS="$LIBS"
1363         LIBS="$LIBS -lssp"
1364         AC_TRY_LINK([
1365 #include <sys/types.h>
1366 #include <dirent.h>
1367         ],[
1368                    DIR *dp = opendir(".");
1369         ],cf_cv_need_libssp=yes,
1370           cf_cv_need_libssp=maybe)
1371         LIBS="$cf_save_LIBS"
1372 ])dnl
1373 ])
1374
1375 if test "x$cf_cv_need_libssp" = xyes
1376 then
1377         CF_ADD_LIB(ssp)
1378 fi
1379 ])dnl
1380 dnl ---------------------------------------------------------------------------
1381 dnl CF_CHECK_LIBTOOL_VERSION version: 2 updated: 2021/05/01 16:24:34
1382 dnl ------------------------
1383 dnl Show the version of libtool
1384 dnl
1385 dnl Save the version in a cache variable - this is not entirely a good thing,
1386 dnl but the version string from libtool is very ugly, and for bug reports it
1387 dnl might be useful to have the original string.
1388 dnl
1389 dnl There is an imitation in OpenBSD, which has no apparent use other than to
1390 dnl deny that it is GNU libtool.  Just ignore it.
1391 AC_DEFUN([CF_CHECK_LIBTOOL_VERSION],[
1392 if test -n "$LIBTOOL" && test "$LIBTOOL" != none
1393 then
1394         AC_MSG_CHECKING(version of $LIBTOOL)
1395         CF_LIBTOOL_VERSION
1396         AC_MSG_RESULT($cf_cv_libtool_version)
1397         if test -n "$cf_cv_libtool_version"
1398         then
1399                 cf_check_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' -e 's,[[()]],...,g' -e 's,[[ ]],-,g' -e '2,$d'`
1400                 case "x$cf_check_libtool_version" in
1401                 (*...GNU-libtool...*)
1402                         ;;
1403                 (*)
1404                         AC_MSG_ERROR(This is not GNU libtool)
1405                         ;;
1406                 esac
1407         else
1408                 AC_MSG_ERROR(No version found for $LIBTOOL)
1409         fi
1410 else
1411         AC_MSG_ERROR(GNU libtool has not been found)
1412 fi
1413 ])dnl
1414 dnl ---------------------------------------------------------------------------
1415 dnl CF_CHECK_WCHAR_H version: 3 updated: 2021/01/01 13:31:04
1416 dnl ----------------
1417 dnl Check if wchar.h can be used, i.e., without defining _XOPEN_SOURCE_EXTENDED
1418 AC_DEFUN([CF_CHECK_WCHAR_H],[
1419 AC_CHECK_HEADERS( \
1420 wchar.h \
1421 wctype.h \
1422 )
1423 AC_CACHE_CHECK(if wchar.h can be used as is,cf_cv_wchar_h_okay,[
1424 AC_TRY_COMPILE(
1425 [
1426 #include <stdlib.h>
1427 #ifdef HAVE_WCHAR_H
1428 #include <wchar.h>
1429 #endif
1430 #ifdef HAVE_WCTYPE_H
1431 #include <wctype.h>
1432 #endif
1433 ],[
1434         wint_t foo = 0;
1435         int bar = iswpunct(foo)],
1436         [cf_cv_wchar_h_okay=yes],
1437         [cf_cv_wchar_h_okay=no])])
1438
1439 if test "$cf_cv_wchar_h_okay" = no
1440 then
1441         CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED)
1442 fi
1443 ])dnl
1444 dnl ---------------------------------------------------------------------------
1445 dnl CF_CHECK_WCWIDTH_GRAPHICS version: 2 updated: 2021/01/02 17:09:14
1446 dnl -------------------------
1447 dnl Most "modern" terminal emulators are based to some degree on VT100, and
1448 dnl should support line-drawing.  Even with Unicode.  There is a problem.
1449 dnl
1450 dnl While most of the VT100 graphics characters were incorporated into Unicode,
1451 dnl all of those were combined into a page of useful graphics characters.
1452 dnl
1453 dnl So far, so good.
1454 dnl
1455 dnl However, while they are useful, there are other considerations.  CJK
1456 dnl is (because of poor device resolution) often rendered as double-width
1457 dnl characters.  So... for these generally-useful characters, what should
1458 dnl be the width (to make them consistent with adjacent characters)?
1459 dnl
1460 dnl The obvious choice would have been to make this locale-dependent, and use
1461 dnl wcwidth() to tell applications what the actual width is.  That was too
1462 dnl obvious.  Instead, we have a slew of "ambiguous-width" characters.
1463 dnl See for example
1464 dnl             http://www.unicode.org/reports/tr11/tr11-29.html
1465 dnl             http://www.cl.cam.ac.uk/~mgk25/ucs/scw-proposal.html
1466 dnl
1467 dnl The EastAsianWidth-6.2.0.txt file from the Unicode organization lists
1468 dnl more than 22,000 characters, with 1281 of those as ambiguous-width.  For
1469 dnl instance, it lists half (44/96) of the Latin-1 characters as
1470 dnl ambiguous-width.  Also, all of the box-characters at 0x2500 are ambiguous.
1471 dnl
1472 dnl What this means for the implementor is that on some systems wcwidth() can
1473 dnl give bad advice.  On Solaris, some of the ambiguous widths are returned as
1474 dnl 1 (the Latin-1 characters), while others are returned as 2 (line-drawing
1475 dnl characters).  These do not necessarily match the behavior of the terminal
1476 dnl emulator.  xterm, for instance, does an optional startup check to find if
1477 dnl this problem (or similar) exists with the system's locale tables, rejecting
1478 dnl them if they are too unreliable.
1479 AC_DEFUN([CF_CHECK_WCWIDTH_GRAPHICS],[
1480 AC_CACHE_CHECK(if wcwidth agrees graphics are single-width, cf_cv_wcwidth_graphics,[
1481 cat >conftest.in <<CF_EOF
1482 -       VT100 symbols
1483 0x250c  upper left corner
1484 0x2514  lower left corner
1485 0x2510  upper right corner
1486 0x2518  lower right corner
1487 0x251c  tee pointing left
1488 0x2524  tee pointing right
1489 0x2534  tee pointing up
1490 0x252c  tee pointing down
1491 0x2500  horizontal line
1492 0x2502  vertical line
1493 0x253c  large plus or crossover
1494 0x23ba  scan line 1
1495 0x23bd  scan line 9
1496 0x25c6  diamond
1497 0x2592  checker board (stipple)
1498 0x00b0  degree symbol
1499 0x00b1  plus/minus
1500 0x00b7  bullet
1501 -       Teletype 5410v1 symbols
1502 0x2190  arrow pointing left
1503 0x2192  arrow pointing right
1504 0x2193  arrow pointing down
1505 0x2191  arrow pointing up
1506 0x2592  board of squares
1507 0x2603  lantern symbol
1508 0x25ae  solid square block
1509 -       these defaults were invented for ncurses
1510 0x23bb  scan line 3
1511 0x23bc  scan line 7
1512 0x2264  less-than-or-equal-to
1513 0x2265  greater-than-or-equal-to
1514 0x03c0  greek pi
1515 0x2260  not-equal
1516 0x00a3  pound-sterling symbol
1517 -       thick-line-drawing
1518 0x250f  upper left corner
1519 0x2517  lower left corner
1520 0x2513  upper right corner
1521 0x251b  lower right corner
1522 0x2523  tee pointing left
1523 0x252b  tee pointing right
1524 0x253b  tee pointing up
1525 0x2533  tee pointing down
1526 0x2501  horizontal line
1527 0x2503  vertical line
1528 0x254b  large plus or crossover
1529 -       double-line-drawing
1530 0x2554  upper left corner
1531 0x255a  lower left corner
1532 0x2557  upper right corner
1533 0x255d  lower right corner
1534 0x2563  tee pointing left
1535 0x2560  tee pointing right
1536 0x2569  tee pointing up
1537 0x2566  tee pointing down
1538 0x2550  horizontal line
1539 0x2551  vertical line
1540 0x256c  large plus or crossover
1541 CF_EOF
1542 AC_TRY_RUN([
1543 #include <locale.h>
1544 #include <stdio.h>
1545 #include <wchar.h>
1546
1547 #define MY_LEN 80
1548
1549 int
1550 main(void)
1551 {
1552         FILE *fp;
1553         int value;
1554         char buffer[MY_LEN + 1];
1555         char notes[MY_LEN + 1];
1556         int totals = 0;
1557         int passed = 0;
1558
1559         if (setlocale(LC_ALL, "en_US.UTF8") ||
1560                 setlocale(LC_ALL, "en_US.UTF-8") ||
1561                 setlocale(LC_ALL, "en_US.utf8") ||
1562                 setlocale(LC_ALL, "en_US.utf-8")) {
1563                 if ((fp = fopen("conftest.in", "r")) != 0) {
1564                         while (fgets(buffer, MY_LEN, fp) != 0) {
1565                                 if (*buffer == '-') {
1566                                         fprintf(stderr, "\\t%s", buffer);
1567                                 } else if (sscanf(buffer, "%x %s", &value, notes) == 2) {
1568                                         ++totals;
1569                                         if (wcwidth(value) == 1)
1570                                                 ++passed;
1571                                         fprintf(stderr, "%d\\t%s", wcwidth(value), buffer);
1572                                 } else {
1573                                         fprintf(stderr, "?\\t%s", buffer);
1574                                 }
1575                         }
1576                 }
1577         }
1578         fprintf(stderr, "%d/%d passed wcwidth/graphics check\\n", passed, totals);
1579         return (totals == passed) ? 0 : 1;
1580 }
1581 ],
1582 [cf_cv_wcwidth_graphics=yes],
1583 [cf_cv_wcwidth_graphics=no],
1584 [cf_cv_wcwidth_graphics=unknown])
1585 ])
1586 ])dnl
1587 dnl ---------------------------------------------------------------------------
1588 dnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04
1589 dnl -----------------
1590 dnl Check if the given compiler is really clang.  clang's C driver defines
1591 dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
1592 dnl not ignore some gcc options.
1593 dnl
1594 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
1595 dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
1596 dnl the wrappers for gcc and g++ warnings.
1597 dnl
1598 dnl $1 = GCC (default) or GXX
1599 dnl $2 = CLANG_COMPILER (default)
1600 dnl $3 = CFLAGS (default) or CXXFLAGS
1601 AC_DEFUN([CF_CLANG_COMPILER],[
1602 ifelse([$2],,CLANG_COMPILER,[$2])=no
1603
1604 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
1605         AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
1606         cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
1607         AC_TRY_COMPILE([],[
1608 #ifdef __clang__
1609 #else
1610 make an error
1611 #endif
1612 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
1613 ],[])
1614         ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
1615         AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
1616 fi
1617
1618 CLANG_VERSION=none
1619
1620 if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
1621         case "$CC" in
1622         (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]])
1623                 AC_MSG_WARN(replacing broken compiler alias $CC)
1624                 CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
1625                 CC=clang
1626                 ;;
1627         esac
1628
1629         AC_MSG_CHECKING(version of $CC)
1630         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.]].*//'`"
1631         test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
1632         AC_MSG_RESULT($CLANG_VERSION)
1633
1634         for cf_clang_opt in \
1635                 -Qunused-arguments \
1636                 -Wno-error=implicit-function-declaration
1637         do
1638                 AC_MSG_CHECKING(if option $cf_clang_opt works)
1639                 cf_save_CFLAGS="$CFLAGS"
1640                 CFLAGS="$CFLAGS $cf_clang_opt"
1641                 AC_TRY_LINK([
1642                         #include <stdio.h>],[
1643                         printf("hello!\\n");],[
1644                         cf_clang_optok=yes],[
1645                         cf_clang_optok=no])
1646                 AC_MSG_RESULT($cf_clang_optok)
1647                 CFLAGS="$cf_save_CFLAGS"
1648                 if test "$cf_clang_optok" = yes; then
1649                         CF_VERBOSE(adding option $cf_clang_opt)
1650                         CF_APPEND_TEXT(CFLAGS,$cf_clang_opt)
1651                 fi
1652         done
1653 fi
1654 ])
1655 dnl ---------------------------------------------------------------------------
1656 dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
1657 dnl -----------------
1658 dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
1659 dnl character-strings.
1660 dnl
1661 dnl It is ambiguous because the specification accommodated the pre-ANSI
1662 dnl compilers bundled by more than one vendor in lieu of providing a standard C
1663 dnl compiler other than by costly add-ons.  Because of this, the specification
1664 dnl did not take into account the use of const for telling the compiler that
1665 dnl string literals would be in readonly memory.
1666 dnl
1667 dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
1668 dnl let the compiler decide how to represent Xt's strings which were #define'd.
1669 dnl That does not solve the problem of using the block of Xt's strings which
1670 dnl are compiled into the library (and is less efficient than one might want).
1671 dnl
1672 dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
1673 dnl when compiling the library and compiling using the library, to tell the
1674 dnl compiler that String is const.
1675 AC_DEFUN([CF_CONST_X_STRING],
1676 [
1677 AC_REQUIRE([AC_PATH_XTRA])
1678
1679 CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
1680
1681 AC_TRY_COMPILE(
1682 [
1683 #include <stdlib.h>
1684 #include <X11/Intrinsic.h>
1685 ],
1686 [String foo = malloc(1); free((void*)foo)],[
1687
1688 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
1689         AC_TRY_COMPILE(
1690                 [
1691 #define _CONST_X_STRING /* X11R7.8 (perhaps) */
1692 #undef  XTSTRINGDEFINES /* X11R5 and later */
1693 #include <stdlib.h>
1694 #include <X11/Intrinsic.h>
1695                 ],[String foo = malloc(1); *foo = 0],[
1696                         cf_cv_const_x_string=no
1697                 ],[
1698                         cf_cv_const_x_string=yes
1699                 ])
1700 ])
1701
1702 CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
1703
1704 case "$cf_cv_const_x_string" in
1705 (no)
1706         CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
1707         ;;
1708 (*)
1709         CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
1710         ;;
1711 esac
1712
1713 ])
1714 ])dnl
1715 dnl ---------------------------------------------------------------------------
1716 dnl CF_CPP_PARAM_INIT version: 7 updated: 2017/01/21 11:06:25
1717 dnl -----------------
1718 dnl Check if the C++ compiler accepts duplicate parameter initialization.  This
1719 dnl is a late feature for the standard and is not in some recent compilers
1720 dnl (1999/9/11).
1721 AC_DEFUN([CF_CPP_PARAM_INIT],
1722 [
1723 if test -n "$CXX"; then
1724 AC_CACHE_CHECK(if $CXX accepts parameter initialization,cf_cv_cpp_param_init,[
1725         AC_LANG_SAVE
1726         AC_LANG_CPLUSPLUS
1727         AC_TRY_RUN([
1728 class TEST {
1729 private:
1730         int value;
1731 public:
1732         TEST(int x = 1);
1733         ~TEST();
1734 };
1735
1736 TEST::TEST(int x = 1)   // some compilers do not like second initializer
1737 {
1738         value = x;
1739 }
1740 int main(void) { }
1741 ],
1742         [cf_cv_cpp_param_init=yes],
1743         [cf_cv_cpp_param_init=no],
1744         [cf_cv_cpp_param_init=unknown])
1745         AC_LANG_RESTORE
1746 ])
1747 fi
1748 test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT,1,[Define to 1 if C++ has parameter initialization])
1749 ])dnl
1750 dnl ---------------------------------------------------------------------------
1751 dnl CF_CPP_STATIC_CAST version: 3 updated: 2013/04/13 18:03:21
1752 dnl ------------------
1753 dnl Check if the C++ compiler accepts static_cast in generics.  This appears to
1754 dnl not be supported in g++ before 3.0
1755 AC_DEFUN([CF_CPP_STATIC_CAST],
1756 [
1757 if test -n "$CXX"; then
1758
1759 AC_CACHE_CHECK(if $CXX accepts static_cast,cf_cv_cpp_static_cast,[
1760         AC_LANG_SAVE
1761         AC_LANG_CPLUSPLUS
1762
1763         AC_TRY_COMPILE([
1764 class NCursesPanel
1765 {
1766 public:
1767   NCursesPanel(int nlines,
1768                int ncols,
1769                int begin_y = 0,
1770                int begin_x = 0)
1771   {
1772   }
1773   NCursesPanel();
1774   ~NCursesPanel();
1775 };
1776
1777 template<class T> class NCursesUserPanel : public NCursesPanel
1778 {
1779 public:
1780   NCursesUserPanel (int nlines,
1781                     int ncols,
1782                     int begin_y = 0,
1783                     int begin_x = 0,
1784                     const T* p_UserData = static_cast<T*>(0))
1785     : NCursesPanel (nlines, ncols, begin_y, begin_x)
1786   {
1787   };
1788   NCursesUserPanel(const T* p_UserData = static_cast<T*>(0)) : NCursesPanel()
1789   {
1790   };
1791
1792   virtual ~NCursesUserPanel() {};
1793 };
1794 ],[
1795         const char* p_UserData = static_cast<char*>(0)],
1796         [cf_cv_cpp_static_cast=yes],
1797         [cf_cv_cpp_static_cast=no])
1798
1799         AC_LANG_RESTORE
1800 ])
1801
1802 fi
1803
1804 test "$cf_cv_cpp_static_cast" = yes && AC_DEFINE(CPP_HAS_STATIC_CAST,1,[Define to 1 if C++ has static_cast])
1805 ])dnl
1806 dnl ---------------------------------------------------------------------------
1807 dnl CF_CXX_AR_FLAGS version: 3 updated: 2021/01/01 13:31:04
1808 dnl ---------------
1809 dnl Setup special archiver flags for given compilers.
1810 AC_DEFUN([CF_CXX_AR_FLAGS],[
1811         CXX_AR='$(AR)'
1812         CXX_ARFLAGS='$(ARFLAGS)'
1813         case "$cf_cv_system_name" in
1814         (irix*)
1815             if test "$GXX" != yes ; then
1816                 CXX_AR='$(CXX)'
1817                 CXX_ARFLAGS='-ar -o'
1818             fi
1819             ;;
1820         (sco3.2v5*)
1821             CXXLDFLAGS="-u main"
1822             ;;
1823         (solaris2*)
1824             if test "$GXX" != yes ; then
1825                 CXX_AR='$(CXX)'
1826                 CXX_ARFLAGS='-xar -o'
1827             fi
1828             ;;
1829         esac
1830         AC_SUBST(CXXLDFLAGS)
1831         AC_SUBST(CXX_AR)
1832         AC_SUBST(CXX_ARFLAGS)
1833 ])dnl
1834 dnl ---------------------------------------------------------------------------
1835 dnl CF_CXX_IOSTREAM_NAMESPACE version: 2 updated: 2012/10/06 17:56:13
1836 dnl -------------------------
1837 dnl For c++, check if iostream uses "std::" namespace.
1838 AC_DEFUN([CF_CXX_IOSTREAM_NAMESPACE],[
1839 AC_CHECK_HEADERS(iostream)
1840 if test x"$ac_cv_header_iostream" = xyes ; then
1841         AC_MSG_CHECKING(if iostream uses std-namespace)
1842         AC_TRY_COMPILE([
1843 #include <iostream>
1844 using std::endl;
1845 using std::cerr;],[
1846 cerr << "testing" << endl;
1847 ],[cf_iostream_namespace=yes],[cf_iostream_namespace=no])
1848         AC_MSG_RESULT($cf_iostream_namespace)
1849         if test "$cf_iostream_namespace" = yes ; then
1850                 AC_DEFINE(IOSTREAM_NAMESPACE,1,[Define to 1 if C++ has namespace iostream])
1851         fi
1852 fi
1853 ])dnl
1854 dnl ---------------------------------------------------------------------------
1855 dnl CF_C_INLINE version: 6 updated: 2019/09/07 13:38:36
1856 dnl -----------
1857 dnl Check if the C compiler supports "inline".
1858 dnl $1 is the name of a shell variable to set if inline is supported
1859 dnl $2 is the threshold for gcc 4.x's option controlling maximum inline size
1860 AC_DEFUN([CF_C_INLINE],[
1861 AC_REQUIRE([CF_GCC_VERSION])
1862 AC_C_INLINE
1863 $1=
1864 if test "$ac_cv_c_inline" != no ; then
1865         $1=inline
1866         if test "$INTEL_COMPILER" = yes
1867         then
1868                 :
1869         elif test "$CLANG_COMPILER" = yes
1870         then
1871                 :
1872         elif test "$GCC" = yes
1873         then
1874                 AC_CACHE_CHECK(if $CC supports options to tune inlining,cf_cv_gcc_inline,[
1875                 cf_save_CFLAGS=$CFLAGS
1876                 CFLAGS="$CFLAGS --param max-inline-insns-single=$2"
1877                 AC_TRY_COMPILE([inline int foo(void) { return 1; }],
1878                 [${cf_cv_main_return:-return} foo()],
1879                 [cf_cv_gcc_inline=yes],
1880                 [cf_cv_gcc_inline=no])
1881                 CFLAGS=$cf_save_CFLAGS
1882                 ])
1883                 if test "$cf_cv_gcc_inline" = yes ; then
1884                         CF_ADD_CFLAGS([--param max-inline-insns-single=$2])
1885                 fi
1886         fi
1887 fi
1888 AC_SUBST($1)
1889 ])dnl
1890 dnl ---------------------------------------------------------------------------
1891 dnl CF_DIRNAME version: 5 updated: 2020/12/31 20:19:42
1892 dnl ----------
1893 dnl "dirname" is not portable, so we fake it with a shell script.
1894 AC_DEFUN([CF_DIRNAME],[$1=`echo "$2" | sed -e 's%/[[^/]]*$%%'`])dnl
1895 dnl ---------------------------------------------------------------------------
1896 dnl CF_DIRS_TO_MAKE version: 4 updated: 2021/01/01 13:31:04
1897 dnl ---------------
1898 AC_DEFUN([CF_DIRS_TO_MAKE],
1899 [
1900 DIRS_TO_MAKE="lib"
1901 for cf_item in $cf_list_models
1902 do
1903         CF_OBJ_SUBDIR($cf_item,cf_subdir)
1904         for cf_item2 in $DIRS_TO_MAKE
1905         do
1906                 test "$cf_item2" = "$cf_subdir" && break
1907         done
1908         test ".$cf_item2" != ".$cf_subdir" && DIRS_TO_MAKE="$DIRS_TO_MAKE $cf_subdir"
1909 done
1910 for cf_dir in $DIRS_TO_MAKE
1911 do
1912         test ! -d "$cf_dir" && mkdir "$cf_dir"
1913 done
1914 AC_SUBST(DIRS_TO_MAKE)
1915 ])dnl
1916 dnl ---------------------------------------------------------------------------
1917 dnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04
1918 dnl ---------------
1919 dnl You can always use "make -n" to see the actual options, but it is hard to
1920 dnl pick out/analyze warning messages when the compile-line is long.
1921 dnl
1922 dnl Sets:
1923 dnl     ECHO_LT - symbol to control if libtool is verbose
1924 dnl     ECHO_LD - symbol to prefix "cc -o" lines
1925 dnl     RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
1926 dnl     SHOW_CC - symbol to put before explicit "cc -c" lines
1927 dnl     ECHO_CC - symbol to put before any "cc" line
1928 dnl
1929 AC_DEFUN([CF_DISABLE_ECHO],[
1930 AC_MSG_CHECKING(if you want to see long compiling messages)
1931 CF_ARG_DISABLE(echo,
1932         [  --disable-echo          do not display "compiling" commands],
1933         [
1934         ECHO_LT='--silent'
1935         ECHO_LD='@echo linking [$]@;'
1936         RULE_CC='@echo compiling [$]<'
1937         SHOW_CC='@echo compiling [$]@'
1938         ECHO_CC='@'
1939 ],[
1940         ECHO_LT=''
1941         ECHO_LD=''
1942         RULE_CC=''
1943         SHOW_CC=''
1944         ECHO_CC=''
1945 ])
1946 AC_MSG_RESULT($enableval)
1947 AC_SUBST(ECHO_LT)
1948 AC_SUBST(ECHO_LD)
1949 AC_SUBST(RULE_CC)
1950 AC_SUBST(SHOW_CC)
1951 AC_SUBST(ECHO_CC)
1952 ])dnl
1953 dnl ---------------------------------------------------------------------------
1954 dnl CF_DISABLE_GNAT_PROJECTS version: 1 updated: 2014/06/01 11:34:00
1955 dnl ------------------------
1956 AC_DEFUN([CF_DISABLE_GNAT_PROJECTS],[
1957 AC_MSG_CHECKING(if we want to use GNAT projects)
1958 CF_ARG_DISABLE(gnat-projects,
1959         [  --disable-gnat-projects test: disable GNAT projects even if usable],
1960         [enable_gnat_projects=no],
1961         [enable_gnat_projects=yes])
1962 AC_MSG_RESULT($enable_gnat_projects)
1963 ])dnl
1964 dnl ---------------------------------------------------------------------------
1965 dnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50
1966 dnl ----------------
1967 dnl Combine no-leak checks with the libraries or tools that are used for the
1968 dnl checks.
1969 AC_DEFUN([CF_DISABLE_LEAKS],[
1970
1971 AC_REQUIRE([CF_WITH_DMALLOC])
1972 AC_REQUIRE([CF_WITH_DBMALLOC])
1973 AC_REQUIRE([CF_WITH_VALGRIND])
1974
1975 AC_MSG_CHECKING(if you want to perform memory-leak testing)
1976 AC_ARG_ENABLE(leaks,
1977         [  --disable-leaks         test: free permanent memory, analyze leaks],
1978         [enable_leaks=$enableval],
1979         [enable_leaks=yes])
1980 dnl with_no_leaks is more readable...
1981 if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi
1982 AC_MSG_RESULT($with_no_leaks)
1983
1984 if test "$enable_leaks" = no ; then
1985         AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1986         AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1987 fi
1988 ])dnl
1989 dnl ---------------------------------------------------------------------------
1990 dnl CF_DISABLE_LIBTOOL_VERSION version: 3 updated: 2015/04/17 21:13:04
1991 dnl --------------------------
1992 dnl Check if we should use the libtool 1.5 feature "-version-number" instead of
1993 dnl the older "-version-info" feature.  The newer feature allows us to use
1994 dnl version numbering on shared libraries which make them compatible with
1995 dnl various systems.
1996 AC_DEFUN([CF_DISABLE_LIBTOOL_VERSION],
1997 [
1998 AC_MSG_CHECKING(if libtool -version-number should be used)
1999 CF_ARG_DISABLE(libtool-version,
2000         [  --disable-libtool-version  enable to use libtool's incompatible naming scheme],
2001         [cf_libtool_version=no],
2002         [cf_libtool_version=yes])
2003 AC_MSG_RESULT($cf_libtool_version)
2004
2005 if test "$cf_libtool_version" = yes ; then
2006         LIBTOOL_VERSION="-version-number"
2007 else
2008         LIBTOOL_VERSION="-version-info"
2009         case "x$VERSION" in
2010         (x)
2011                 AC_MSG_WARN(VERSION was not set)
2012                 ;;
2013         (x*.*.*)
2014                 ABI_VERSION="$VERSION"
2015                 CF_VERBOSE(ABI_VERSION: $ABI_VERSION)
2016                 ;;
2017         (x*:*:*)
2018                 ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'`
2019                 CF_VERBOSE(ABI_VERSION: $ABI_VERSION)
2020                 ;;
2021         (*)
2022                 AC_MSG_WARN(unexpected VERSION value: $VERSION)
2023                 ;;
2024         esac
2025 fi
2026
2027 AC_SUBST(ABI_VERSION)
2028 AC_SUBST(LIBTOOL_VERSION)
2029 ])dnl
2030 dnl ---------------------------------------------------------------------------
2031 dnl CF_DISABLE_RPATH_HACK version: 3 updated: 2021/01/05 20:14:44
2032 dnl ---------------------
2033 dnl The rpath-hack makes it simpler to build programs, particularly with the
2034 dnl *BSD ports which may have essential libraries in unusual places.  But it
2035 dnl can interfere with building an executable for the base system.  Use this
2036 dnl option in that case.
2037 AC_DEFUN([CF_DISABLE_RPATH_HACK],
2038 [
2039 AC_MSG_CHECKING(if rpath-hack should be disabled)
2040 CF_ARG_DISABLE(rpath-hack,
2041         [  --disable-rpath-hack    don't add rpath options for additional libraries],
2042         [enable_rpath_hack=no],
2043         [enable_rpath_hack=yes])
2044 dnl TODO - drop cf_disable_rpath_hack
2045 if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi
2046 AC_MSG_RESULT($cf_disable_rpath_hack)
2047
2048 if test "$enable_rpath_hack" = yes ; then
2049         CF_RPATH_HACK
2050 fi
2051 ])
2052 dnl ---------------------------------------------------------------------------
2053 dnl CF_ENABLE_BROKEN_LINKER version: 2 updated: 2021/01/02 17:09:14
2054 dnl -----------------------
2055 dnl Some linkers cannot reference a data-only object.  Cygwin used to be one.
2056 dnl This usually follows CF_LINK_DATAONLY, but is not required in case we need
2057 dnl an unconditional feature.
2058 AC_DEFUN([CF_ENABLE_BROKEN_LINKER],[
2059
2060 AC_MSG_CHECKING(if you want broken-linker support code)
2061 AC_ARG_ENABLE(broken_linker,
2062         [  --enable-broken_linker  compile with broken-linker support code],
2063         [with_broken_linker=$enableval],
2064         [with_broken_linker=no])
2065 AC_MSG_RESULT($with_broken_linker)
2066
2067 : "${BROKEN_LINKER:=0}"
2068 if test "x$with_broken_linker" = xyes ; then
2069         AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
2070         BROKEN_LINKER=1
2071 fi
2072 AC_SUBST(BROKEN_LINKER)
2073 ])dnl
2074 dnl ---------------------------------------------------------------------------
2075 dnl CF_ENABLE_PC_FILES version: 15 updated: 2021/10/25 19:21:54
2076 dnl ------------------
2077 dnl This is the "--enable-pc-files" option, which is available if there is a
2078 dnl pkg-config configuration on the local machine.
2079 AC_DEFUN([CF_ENABLE_PC_FILES],[
2080 AC_REQUIRE([CF_PKG_CONFIG])
2081 AC_REQUIRE([CF_WITH_PKG_CONFIG_LIBDIR])
2082
2083 if test "x$PKG_CONFIG" != xnone
2084 then
2085         AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG)
2086 else
2087         AC_MSG_CHECKING(if we should install .pc files)
2088 fi
2089
2090 AC_ARG_ENABLE(pc-files,
2091         [  --enable-pc-files       generate and install .pc files for pkg-config],
2092         [enable_pc_files=$enableval],
2093         [enable_pc_files=no])
2094 AC_MSG_RESULT($enable_pc_files)
2095
2096 if test "x$enable_pc_files" != xno
2097 then
2098         MAKE_PC_FILES=
2099         case "x$PKG_CONFIG_LIBDIR" in
2100         (xno|xnone|xyes|x)
2101                 AC_MSG_WARN(no PKG_CONFIG_LIBDIR was found)
2102                 ;;
2103         (*)
2104                 CF_PATH_SYNTAX(PKG_CONFIG_LIBDIR)
2105                 ;;
2106         esac
2107 else
2108         MAKE_PC_FILES="#"
2109 fi
2110 AC_SUBST(MAKE_PC_FILES)
2111 ])dnl
2112 dnl ---------------------------------------------------------------------------
2113 dnl CF_ENABLE_RPATH version: 2 updated: 2010/03/27 18:39:42
2114 dnl ---------------
2115 dnl Check if the rpath option should be used, setting cache variable
2116 dnl cf_cv_enable_rpath if so.
2117 AC_DEFUN([CF_ENABLE_RPATH],
2118 [
2119 AC_MSG_CHECKING(if rpath option should be used)
2120 AC_ARG_ENABLE(rpath,
2121 [  --enable-rpath          use rpath option when generating shared libraries],
2122 [cf_cv_enable_rpath=$enableval],
2123 [cf_cv_enable_rpath=no])
2124 AC_MSG_RESULT($cf_cv_enable_rpath)
2125 ])dnl
2126 dnl ---------------------------------------------------------------------------
2127 dnl CF_ENABLE_STRING_HACKS version: 6 updated: 2021/01/05 19:23:48
2128 dnl ----------------------
2129 dnl On a few platforms, the compiler and/or loader nags with untruthful
2130 dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
2131 dnl and implying that most uses of the recommended alternatives are correct.
2132 dnl
2133 dnl Factually speaking, no one has actually counted the number of uses of these
2134 dnl functions versus the total of incorrect uses.  Samples of a few thousand
2135 dnl instances are meaningless compared to the hundreds of millions of lines of
2136 dnl existing C code.
2137 dnl
2138 dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some
2139 dnl platforms, in implementations of varying quality.  Likewise, snprintf is
2140 dnl standard - but evolved through phases, and older implementations are likely
2141 dnl to yield surprising results, as documented in manpages on various systems.
2142 AC_DEFUN([CF_ENABLE_STRING_HACKS],
2143 [
2144 AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings)
2145 AC_ARG_ENABLE(string-hacks,
2146         [  --enable-string-hacks   work around bogus compiler/loader warnings],
2147         [enable_string_hacks=$enableval],
2148         [enable_string_hacks=no])
2149 AC_MSG_RESULT($enable_string_hacks)
2150
2151 if test "x$enable_string_hacks" = "xyes"; then
2152         AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings])
2153         AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
2154         AC_CHECK_FUNC(strlcat,[
2155                 AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
2156                 ],[
2157                 AC_CHECK_LIB(bsd,strlcat,[
2158                         CF_ADD_LIB(bsd)
2159                         AC_CHECK_HEADERS(bsd/string.h)
2160                         AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
2161                         ])
2162                 ])
2163         AC_CHECK_FUNCS( strlcpy snprintf )
2164 fi
2165 ])dnl
2166 dnl ---------------------------------------------------------------------------
2167 dnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50
2168 dnl ------------------
2169 dnl Configure-option to enable gcc warnings
2170 dnl
2171 dnl $1 = extra options to add, if supported
2172 dnl $2 = option for checking attributes.  By default, this is done when
2173 dnl      warnings are enabled.  For other values:
2174 dnl      yes: always do this, e.g., to use in generated library-headers
2175 dnl      no: never do this
2176 AC_DEFUN([CF_ENABLE_WARNINGS],[
2177 if test "$GCC" = yes || test "$GXX" = yes
2178 then
2179 CF_FIX_WARNINGS(CFLAGS)
2180 CF_FIX_WARNINGS(CPPFLAGS)
2181 CF_FIX_WARNINGS(LDFLAGS)
2182 AC_MSG_CHECKING(if you want to turn on gcc warnings)
2183 CF_ARG_ENABLE(warnings,
2184         [  --enable-warnings       test: turn on gcc compiler warnings],
2185         [enable_warnings=yes],
2186         [enable_warnings=no])
2187 AC_MSG_RESULT($enable_warnings)
2188 if test "$enable_warnings" = "yes"
2189 then
2190         ifelse($2,,[CF_GCC_ATTRIBUTES])
2191         CF_GCC_WARNINGS($1)
2192 fi
2193 ifelse($2,yes,[CF_GCC_ATTRIBUTES])
2194 fi
2195 ])dnl
2196 dnl ---------------------------------------------------------------------------
2197 dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39
2198 dnl --------
2199 dnl Check if 'errno' is declared in <errno.h>
2200 AC_DEFUN([CF_ERRNO],
2201 [
2202 CF_CHECK_ERRNO(errno)
2203 ])dnl
2204 dnl ---------------------------------------------------------------------------
2205 dnl CF_ETIP_DEFINES version: 6 updated: 2021/01/02 17:09:14
2206 dnl ---------------
2207 dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between
2208 dnl math.h and builtin.h, only for ncurses
2209 AC_DEFUN([CF_ETIP_DEFINES],
2210 [
2211 AC_MSG_CHECKING(for special defines needed for etip.h)
2212 cf_save_CXXFLAGS="$CXXFLAGS"
2213 cf_result="none"
2214
2215 # etip.h includes ncurses.h which includes ncurses_dll.h
2216 # But ncurses_dll.h is generated - fix here.
2217 test -d include || mkdir include
2218 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
2219
2220 for cf_math in "" MATH_H
2221 do
2222 for cf_excp in "" MATH_EXCEPTION
2223 do
2224         CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -Iinclude -I${srcdir}/include"
2225         test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
2226         test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
2227 AC_TRY_COMPILE([
2228 #include <etip.h.in>
2229 ],[],[
2230         test -n "$cf_math" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_math})
2231         test -n "$cf_excp" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_excp})
2232         cf_result="$cf_math $cf_excp"
2233         break 2
2234 ],[])
2235 done
2236 done
2237 AC_MSG_RESULT($cf_result)
2238 CXXFLAGS="$cf_save_CXXFLAGS"
2239 ])
2240 dnl ---------------------------------------------------------------------------
2241 dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42
2242 dnl ---------------
2243 dnl Find a library (specifically the linkage used in the code fragment),
2244 dnl searching for it if it is not already in the library path.
2245 dnl See also CF_ADD_SEARCHPATH.
2246 dnl
2247 dnl Parameters (4-on are optional):
2248 dnl     $1 = headers for library entrypoint
2249 dnl     $2 = code fragment for library entrypoint
2250 dnl     $3 = the library name without the "-l" option or ".so" suffix.
2251 dnl     $4 = action to perform if successful (default: update CPPFLAGS, etc)
2252 dnl     $5 = action to perform if not successful
2253 dnl     $6 = module name, if not the same as the library name
2254 dnl     $7 = extra libraries
2255 dnl
2256 dnl Sets these variables:
2257 dnl     $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found
2258 dnl     $cf_cv_header_path_$3 - include-directory if needed
2259 dnl     $cf_cv_library_path_$3 - library-directory if needed
2260 dnl     $cf_cv_library_file_$3 - library-file if needed, e.g., -l$3
2261 AC_DEFUN([CF_FIND_LINKAGE],[
2262
2263 # If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these
2264 # will be set on completion of the AC_TRY_LINK below.
2265 cf_cv_header_path_$3=
2266 cf_cv_library_path_$3=
2267
2268 CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)])
2269
2270 cf_save_LIBS="$LIBS"
2271
2272 AC_TRY_LINK([$1],[$2],[
2273         cf_cv_find_linkage_$3=yes
2274         cf_cv_header_path_$3=/usr/include
2275         cf_cv_library_path_$3=/usr/lib
2276 ],[
2277
2278 LIBS="-l$3 $7 $cf_save_LIBS"
2279
2280 AC_TRY_LINK([$1],[$2],[
2281         cf_cv_find_linkage_$3=yes
2282         cf_cv_header_path_$3=/usr/include
2283         cf_cv_library_path_$3=/usr/lib
2284         cf_cv_library_file_$3="-l$3"
2285 ],[
2286         cf_cv_find_linkage_$3=no
2287         LIBS="$cf_save_LIBS"
2288
2289         CF_VERBOSE(find linkage for $3 library)
2290         CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
2291
2292         cf_save_CPPFLAGS="$CPPFLAGS"
2293         cf_test_CPPFLAGS="$CPPFLAGS"
2294
2295         CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
2296         for cf_cv_header_path_$3 in $cf_search
2297         do
2298                 if test -d "$cf_cv_header_path_$3" ; then
2299                         CF_VERBOSE(... testing $cf_cv_header_path_$3)
2300                         CPPFLAGS="$cf_save_CPPFLAGS"
2301                         CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3)
2302                         AC_TRY_COMPILE([$1],[$2],[
2303                                 CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
2304                                 cf_cv_find_linkage_$3=maybe
2305                                 cf_test_CPPFLAGS="$CPPFLAGS"
2306                                 break],[
2307                                 CPPFLAGS="$cf_save_CPPFLAGS"
2308                                 ])
2309                 fi
2310         done
2311
2312         if test "$cf_cv_find_linkage_$3" = maybe ; then
2313
2314                 CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
2315
2316                 cf_save_LIBS="$LIBS"
2317                 cf_save_LDFLAGS="$LDFLAGS"
2318
2319                 ifelse([$6],,,[
2320                 CPPFLAGS="$cf_test_CPPFLAGS"
2321                 LIBS="-l$3 $7 $cf_save_LIBS"
2322                 AC_TRY_LINK([$1],[$2],[
2323                         CF_VERBOSE(... found $3 library in system)
2324                         cf_cv_find_linkage_$3=yes])
2325                         CPPFLAGS="$cf_save_CPPFLAGS"
2326                         LIBS="$cf_save_LIBS"
2327                         ])
2328
2329                 if test "$cf_cv_find_linkage_$3" != yes ; then
2330                         CF_LIBRARY_PATH(cf_search,$3)
2331                         for cf_cv_library_path_$3 in $cf_search
2332                         do
2333                                 if test -d "$cf_cv_library_path_$3" ; then
2334                                         CF_VERBOSE(... testing $cf_cv_library_path_$3)
2335                                         CPPFLAGS="$cf_test_CPPFLAGS"
2336                                         LIBS="-l$3 $7 $cf_save_LIBS"
2337                                         LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
2338                                         AC_TRY_LINK([$1],[$2],[
2339                                         CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
2340                                         cf_cv_find_linkage_$3=yes
2341                                         cf_cv_library_file_$3="-l$3"
2342                                         break],[
2343                                         CPPFLAGS="$cf_save_CPPFLAGS"
2344                                         LIBS="$cf_save_LIBS"
2345                                         LDFLAGS="$cf_save_LDFLAGS"
2346                                         ])
2347                                 fi
2348                         done
2349                         CPPFLAGS="$cf_save_CPPFLAGS"
2350                         LDFLAGS="$cf_save_LDFLAGS"
2351                 fi
2352
2353         else
2354                 cf_cv_find_linkage_$3=no
2355         fi
2356         ],$7)
2357 ])
2358
2359 LIBS="$cf_save_LIBS"
2360
2361 if test "$cf_cv_find_linkage_$3" = yes ; then
2362 ifelse([$4],,[
2363         CF_ADD_INCDIR($cf_cv_header_path_$3)
2364         CF_ADD_LIBDIR($cf_cv_library_path_$3)
2365         CF_ADD_LIB($3)
2366 ],[$4])
2367 else
2368 ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
2369 fi
2370 ])dnl
2371 dnl ---------------------------------------------------------------------------
2372 dnl CF_FIND_SUB_INCDIR version: 3 updated: 2021/01/01 13:31:04
2373 dnl ------------------
2374 dnl Find an include-directory with the given leaf-name.  This is useful for
2375 dnl example with FreeBSD ports, which use this convention to distinguish
2376 dnl different versions of the same port.
2377 AC_DEFUN([CF_FIND_SUB_INCDIR],[
2378         CF_SUBDIR_PATH(cf_search,$1,include)
2379         for cf_item in $cf_search
2380         do
2381                 case "$cf_item" in
2382                 (*/$1)
2383                         CF_ADD_INCDIR($cf_item)
2384                         ;;
2385                 esac
2386         done
2387 ])dnl
2388 dnl ---------------------------------------------------------------------------
2389 dnl CF_FIND_SUB_LIBDIR version: 3 updated: 2021/01/01 13:31:04
2390 dnl ------------------
2391 dnl Find a library-directory with the given leaf-name.  This is useful for
2392 dnl example with FreeBSD ports, which use this convention to distinguish
2393 dnl different versions of the same port.
2394 AC_DEFUN([CF_FIND_SUB_LIBDIR],[
2395         CF_SUBDIR_PATH(cf_search,$1,lib)
2396         for cf_item in $cf_search
2397         do
2398                 case "$cf_item" in
2399                 (*/$1)
2400                         CF_ADD_LIBDIR($cf_item)
2401                         ;;
2402                 esac
2403         done
2404 ])dnl
2405 dnl ---------------------------------------------------------------------------
2406 dnl CF_FIXUP_ADAFLAGS version: 2 updated: 2015/04/17 21:13:04
2407 dnl -----------------
2408 dnl make ADAFLAGS consistent with CFLAGS
2409 AC_DEFUN([CF_FIXUP_ADAFLAGS],[
2410         AC_MSG_CHECKING(optimization options for ADAFLAGS)
2411         case "$CFLAGS" in
2412         (*-g*)
2413                 CF_ADD_ADAFLAGS(-g)
2414                 ;;
2415         esac
2416         case "$CFLAGS" in
2417         (*-O*)
2418                 cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[[        ]].*//'`
2419                 CF_ADD_ADAFLAGS($cf_O_flag)
2420                 ;;
2421         esac
2422         AC_MSG_RESULT($ADAFLAGS)
2423 ])dnl
2424 dnl ---------------------------------------------------------------------------
2425 dnl CF_FIX_WARNINGS version: 3 updated: 2020/12/31 18:40:20
2426 dnl ---------------
2427 dnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc.  Any of gcc's
2428 dnl "-Werror" flags can interfere with configure-checks.  Those go into
2429 dnl EXTRA_CFLAGS.
2430 dnl
2431 dnl $1 = variable name to repair
2432 define([CF_FIX_WARNINGS],[
2433 if test "$GCC" = yes || test "$GXX" = yes
2434 then
2435         case [$]$1 in
2436         (*-Werror=*)
2437                 CF_VERBOSE(repairing $1: [$]$1)
2438                 cf_temp_flags=
2439                 for cf_temp_scan in [$]$1
2440                 do
2441                         case "x$cf_temp_scan" in
2442                         (x-Werror=*)
2443                                 CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan)
2444                                 ;;
2445                         (*)
2446                                 CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
2447                                 ;;
2448                         esac
2449                 done
2450                 $1="$cf_temp_flags"
2451                 CF_VERBOSE(... fixed [$]$1)
2452                 CF_VERBOSE(... extra $EXTRA_CFLAGS)
2453                 ;;
2454         esac
2455 fi
2456 AC_SUBST(EXTRA_CFLAGS)
2457 ])dnl
2458 dnl ---------------------------------------------------------------------------
2459 dnl CF_FOPEN_BIN_R version: 2 updated: 2019/12/31 08:53:54
2460 dnl --------------
2461 dnl Check if fopen works when the "b" (binary) flag is added to the mode
2462 dnl parameter.  POSIX ignores the "b", which c89 specified.  Some very old
2463 dnl systems do not accept it.
2464 AC_DEFUN([CF_FOPEN_BIN_R],[
2465 AC_CACHE_CHECK(if fopen accepts explicit binary mode,cf_cv_fopen_bin_r,[
2466         AC_TRY_RUN([
2467 #include <stdio.h>
2468 int main(void) {
2469         FILE *fp = fopen("conftest.tmp", "wb");
2470         int rc = 0;
2471         if (fp != 0) {
2472                 int p, q;
2473                 for (p = 0; p < 256; ++p) {
2474                         fputc(p, fp);
2475                 }
2476                 fclose(fp);
2477                 fp = fopen("conftest.tmp", "rb");
2478                 if (fp != 0) {
2479                         for (p = 0; p < 256; ++p) {
2480                                 q = fgetc(fp);
2481                                 if (q != p) {
2482                                         rc = 1;
2483                                         break;
2484                                 }
2485                         }
2486                 } else {
2487                         rc = 1;
2488                 }
2489         } else {
2490                 rc = 1;
2491         }
2492         ${cf_cv_main_return:-return} (rc);
2493 }
2494 ],
2495                 [cf_cv_fopen_bin_r=yes],
2496                 [cf_cv_fopen_bin_r=no],
2497                 [cf_cv_fopen_bin_r=unknown])
2498 ])
2499 test "x$cf_cv_fopen_bin_r" != xno && AC_DEFINE(USE_FOPEN_BIN_R,1,[Define to 1 if fopen accepts explicit binary mode])
2500 ])dnl
2501 dnl ---------------------------------------------------------------------------
2502 dnl CF_FORGET_TOOL version: 1 updated: 2013/04/06 18:03:09
2503 dnl --------------
2504 dnl Forget that we saw the given tool.
2505 AC_DEFUN([CF_FORGET_TOOL],[
2506 unset ac_cv_prog_ac_ct_$1
2507 unset ac_ct_$1
2508 unset $1
2509 ])dnl
2510 dnl ---------------------------------------------------------------------------
2511 dnl CF_FUNC_DLSYM version: 4 updated: 2015/09/12 14:46:44
2512 dnl -------------
2513 dnl Test for dlsym() and related functions, as well as libdl.
2514 dnl
2515 dnl Sets
2516 dnl     $cf_have_dlsym
2517 dnl     $cf_have_libdl
2518 AC_DEFUN([CF_FUNC_DLSYM],[
2519 cf_have_dlsym=no
2520 AC_CHECK_FUNC(dlsym,cf_have_dlsym=yes,[
2521
2522 cf_have_libdl=no
2523 AC_CHECK_LIB(dl,dlsym,[
2524         cf_have_dlsym=yes
2525         cf_have_libdl=yes])])
2526
2527 if test "$cf_have_dlsym" = yes ; then
2528         test "$cf_have_libdl" = yes && { CF_ADD_LIB(dl) }
2529
2530         AC_MSG_CHECKING(whether able to link to dl*() functions)
2531         AC_TRY_LINK([#include <dlfcn.h>],[
2532                 void *obj;
2533                 if ((obj = dlopen("filename", 0)) != 0) {
2534                         if (dlsym(obj, "symbolname") == 0) {
2535                         dlclose(obj);
2536                         }
2537                 }],[
2538                 AC_DEFINE(HAVE_LIBDL,1,[Define to 1 if we have dl library])],[
2539                 AC_MSG_ERROR(Cannot link test program for libdl)])
2540         AC_MSG_RESULT(ok)
2541 else
2542         AC_MSG_ERROR(Cannot find dlsym function)
2543 fi
2544 ])
2545 dnl ---------------------------------------------------------------------------
2546 dnl CF_FUNC_MEMMOVE version: 9 updated: 2017/01/21 11:06:25
2547 dnl ---------------
2548 dnl Check for memmove, or a bcopy that can handle overlapping copy.  If neither
2549 dnl is found, add our own version of memmove to the list of objects.
2550 AC_DEFUN([CF_FUNC_MEMMOVE],
2551 [
2552 AC_CHECK_FUNC(memmove,,[
2553 AC_CHECK_FUNC(bcopy,[
2554         AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[
2555                 AC_TRY_RUN([
2556 int main(void) {
2557         static char data[] = "abcdefghijklmnopqrstuwwxyz";
2558         char temp[40];
2559         bcopy(data, temp, sizeof(data));
2560         bcopy(temp+10, temp, 15);
2561         bcopy(temp+5, temp+15, 10);
2562         ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
2563 }
2564                 ],
2565                 [cf_cv_good_bcopy=yes],
2566                 [cf_cv_good_bcopy=no],
2567                 [cf_cv_good_bcopy=unknown])
2568                 ])
2569         ],[cf_cv_good_bcopy=no])
2570         if test "$cf_cv_good_bcopy" = yes ; then
2571                 AC_DEFINE(USE_OK_BCOPY,1,[Define to 1 to use bcopy when memmove is unavailable])
2572         else
2573                 AC_DEFINE(USE_MY_MEMMOVE,1,[Define to 1 to use replacement function when memmove is unavailable])
2574         fi
2575 ])])dnl
2576 dnl ---------------------------------------------------------------------------
2577 dnl CF_FUNC_NANOSLEEP version: 5 updated: 2017/01/21 11:06:25
2578 dnl -----------------
2579 dnl Check for existence of workable nanosleep() function.  Some systems, e.g.,
2580 dnl AIX 4.x, provide a non-working version.
2581 AC_DEFUN([CF_FUNC_NANOSLEEP],[
2582 AC_CACHE_CHECK(if nanosleep really works,cf_cv_func_nanosleep,[
2583 AC_TRY_RUN([
2584 #include <stdio.h>
2585 #include <errno.h>
2586 #include <time.h>
2587
2588 #ifdef HAVE_SYS_TIME_H
2589 #include <sys/time.h>
2590 #endif
2591
2592 int main(void) {
2593         struct timespec ts1, ts2;
2594         int code;
2595         ts1.tv_sec  = 0;
2596         ts1.tv_nsec = 750000000;
2597         ts2.tv_sec  = 0;
2598         ts2.tv_nsec = 0;
2599         errno = 0;
2600         code = nanosleep(&ts1, &ts2); /* on failure errno is ENOSYS. */
2601         ${cf_cv_main_return:-return}(code != 0);
2602 }
2603 ],
2604         [cf_cv_func_nanosleep=yes],
2605         [cf_cv_func_nanosleep=no],
2606         [cf_cv_func_nanosleep=unknown])])
2607
2608 test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP,1,[Define to 1 if we have nanosleep()])
2609 ])
2610 dnl ---------------------------------------------------------------------------
2611 dnl CF_FUNC_OPENPTY version: 6 updated: 2021/01/01 13:31:04
2612 dnl ---------------
2613 dnl Check for openpty() function, along with <pty.h> header.  It may need the
2614 dnl "util" library as well.
2615 AC_DEFUN([CF_FUNC_OPENPTY],
2616 [
2617 AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no)
2618 AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
2619         cf_save_LIBS="$LIBS"
2620         test "$cf_cv_lib_util" = yes && { CF_ADD_LIB(util) }
2621         for cf_header in pty.h libutil.h util.h
2622         do
2623         AC_TRY_LINK([
2624 #include <$cf_header>
2625 ],[
2626         int x = openpty((int *)0, (int *)0, (char *)0,
2627                                    (struct termios *)0, (struct winsize *)0);
2628 ],[
2629                 cf_cv_func_openpty=$cf_header
2630                 break
2631 ],[
2632                 cf_cv_func_openpty=no
2633 ])
2634         done
2635         LIBS="$cf_save_LIBS"
2636 ])
2637 ])dnl
2638 dnl ---------------------------------------------------------------------------
2639 dnl CF_FUNC_POLL version: 10 updated: 2021/01/04 19:13:57
2640 dnl ------------
2641 dnl See if the poll function really works.  Some platforms have poll(), but
2642 dnl it does not work for terminals or files.
2643 AC_DEFUN([CF_FUNC_POLL],[
2644 tty >/dev/null 2>&1 || { AC_CHECK_FUNCS(posix_openpt) }
2645 AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[
2646 AC_TRY_RUN([
2647 #include <stdlib.h>
2648 #include <stdio.h>
2649 #include <unistd.h>
2650 #include <fcntl.h>
2651 #ifdef HAVE_POLL_H
2652 #include <poll.h>
2653 #else
2654 #include <sys/poll.h>
2655 #endif
2656 int main(void) {
2657         struct pollfd myfds;
2658         int ret;
2659
2660         /* check for Darwin bug with respect to "devices" */
2661         myfds.fd = open("/dev/null", 1);        /* O_WRONLY */
2662         if (myfds.fd < 0)
2663                 myfds.fd = 0;
2664         myfds.events = POLLIN;
2665         myfds.revents = 0;
2666
2667         ret = poll(&myfds, 1, 100);
2668
2669         if (ret < 0 || (myfds.revents & POLLNVAL)) {
2670                 ret = -1;
2671         } else {
2672                 int fd = 0;
2673                 if (!isatty(fd)) {
2674                         fd = open("/dev/tty", 2);       /* O_RDWR */
2675                 }
2676 #ifdef HAVE_POSIX_OPENPT
2677                 if (fd < 0) {
2678                         fd = posix_openpt(O_RDWR);
2679                 }
2680 #endif
2681
2682                 if (fd >= 0) {
2683                         /* also check with standard input */
2684                         myfds.fd = fd;
2685                         myfds.events = POLLIN;
2686                         myfds.revents = 0;
2687                         ret = poll(&myfds, 1, 100);
2688                 } else {
2689                         ret = -1;
2690                 }
2691         }
2692         ${cf_cv_main_return:-return}(ret < 0);
2693 }],
2694         [cf_cv_working_poll=yes],
2695         [cf_cv_working_poll=no],
2696         [cf_cv_working_poll=unknown])])
2697 test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL,1,[Define to 1 if the poll function seems to work])
2698 ])dnl
2699 dnl ---------------------------------------------------------------------------
2700 dnl CF_FUNC_TERMIOS version: 3 updated: 2012/10/06 17:56:13
2701 dnl ---------------
2702 dnl Some old/broken variations define tcgetattr() only as a macro in
2703 dnl termio(s).h
2704 AC_DEFUN([CF_FUNC_TERMIOS],[
2705 AC_REQUIRE([CF_STRUCT_TERMIOS])
2706 AC_CACHE_CHECK(for tcgetattr, cf_cv_have_tcgetattr,[
2707 AC_TRY_LINK([
2708 #include <sys/types.h>
2709 #ifdef HAVE_UNISTD_H
2710 #include <unistd.h>
2711 #endif
2712 #ifdef HAVE_TERMIOS_H
2713 #include <termios.h>
2714 #define TTY struct termios
2715 #else
2716 #ifdef HAVE_TERMIO_H
2717 #include <termio.h>
2718 #define TTY struct termio
2719 #endif
2720 #endif
2721 ],[
2722 TTY foo;
2723 tcgetattr(1, &foo);],
2724 [cf_cv_have_tcgetattr=yes],
2725 [cf_cv_have_tcgetattr=no])])
2726 test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR,1,[Define to 1 if we have tcgetattr])
2727 ])dnl
2728 dnl ---------------------------------------------------------------------------
2729 dnl CF_FUNC_VSSCANF version: 7 updated: 2021/01/01 13:31:04
2730 dnl ---------------
2731 dnl Check for vsscanf() function, which is in c9x but generally not in earlier
2732 dnl versions of C.  It is in the GNU C library, and can often be simulated by
2733 dnl other functions.
2734 AC_DEFUN([CF_FUNC_VSSCANF],
2735 [
2736 AC_CACHE_CHECK(for vsscanf function or workaround,cf_cv_func_vsscanf,[
2737 AC_TRY_LINK([
2738 #include <stdarg.h>
2739 #include <stdio.h>],[
2740         va_list ap;
2741         vsscanf("from", "%d", ap)],[cf_cv_func_vsscanf=vsscanf],[
2742 AC_TRY_LINK([
2743 #include <stdarg.h>
2744 #include <stdio.h>],[
2745         FILE strbuf;
2746         char *str = "from";
2747
2748         strbuf._flag = _IOREAD;
2749         strbuf._ptr = strbuf._base = (unsigned char *) str;
2750         strbuf._cnt = strlen(str);
2751         strbuf._file = _NFILE;
2752         return (vfscanf(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=vfscanf],[
2753 AC_TRY_LINK([
2754 #include <stdarg.h>
2755 #include <stdio.h>],[
2756         FILE strbuf;
2757         char *str = "from";
2758
2759         strbuf._flag = _IOREAD;
2760         strbuf._ptr = strbuf._base = (unsigned char *) str;
2761         strbuf._cnt = strlen(str);
2762         strbuf._file = _NFILE;
2763         return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[
2764 cf_cv_func_vsscanf=no])])])])
2765
2766 case "$cf_cv_func_vsscanf" in
2767 (vsscanf) AC_DEFINE(HAVE_VSSCANF,1,[Define to 1 if we have vsscanf]);;
2768 (vfscanf) AC_DEFINE(HAVE_VFSCANF,1,[Define to 1 if we have vfscanf]);;
2769 (_doscan) AC_DEFINE(HAVE__DOSCAN,1,[Define to 1 if we have _doscan]);;
2770 esac
2771
2772 ])dnl
2773 dnl ---------------------------------------------------------------------------
2774 dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25
2775 dnl -----------------
2776 dnl Test for availability of useful gcc __attribute__ directives to quiet
2777 dnl compiler warnings.  Though useful, not all are supported -- and contrary
2778 dnl to documentation, unrecognized directives cause older compilers to barf.
2779 AC_DEFUN([CF_GCC_ATTRIBUTES],
2780 [AC_REQUIRE([AC_PROG_FGREP])dnl
2781 AC_REQUIRE([CF_C11_NORETURN])dnl
2782
2783 if test "$GCC" = yes || test "$GXX" = yes
2784 then
2785 cat > conftest.i <<EOF
2786 #ifndef GCC_PRINTF
2787 #define GCC_PRINTF 0
2788 #endif
2789 #ifndef GCC_SCANF
2790 #define GCC_SCANF 0
2791 #endif
2792 #ifndef GCC_NORETURN
2793 #define GCC_NORETURN /* nothing */
2794 #endif
2795 #ifndef GCC_UNUSED
2796 #define GCC_UNUSED /* nothing */
2797 #endif
2798 EOF
2799 if test "$GCC" = yes
2800 then
2801         AC_CHECKING([for $CC __attribute__ directives])
2802 cat > "conftest.$ac_ext" <<EOF
2803 #line __oline__ "${as_me:-configure}"
2804 #include "confdefs.h"
2805 #include "conftest.h"
2806 #include "conftest.i"
2807 #if     GCC_PRINTF
2808 #define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
2809 #else
2810 #define GCC_PRINTFLIKE(fmt,var) /*nothing*/
2811 #endif
2812 #if     GCC_SCANF
2813 #define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
2814 #else
2815 #define GCC_SCANFLIKE(fmt,var)  /*nothing*/
2816 #endif
2817 extern void wow(char *,...) GCC_SCANFLIKE(1,2);
2818 extern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2);
2819 extern GCC_NORETURN void foo(void);
2820 int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; }
2821 EOF
2822         cf_printf_attribute=no
2823         cf_scanf_attribute=no
2824         for cf_attribute in scanf printf unused noreturn
2825         do
2826                 CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
2827                 cf_directive="__attribute__(($cf_attribute))"
2828                 echo "checking for $CC $cf_directive" 1>&AC_FD_CC
2829
2830                 case "$cf_attribute" in
2831                 (printf)
2832                         cf_printf_attribute=yes
2833                         cat >conftest.h <<EOF
2834 #define GCC_$cf_ATTRIBUTE 1
2835 EOF
2836                         ;;
2837                 (scanf)
2838                         cf_scanf_attribute=yes
2839                         cat >conftest.h <<EOF
2840 #define GCC_$cf_ATTRIBUTE 1
2841 EOF
2842                         ;;
2843                 (*)
2844                         cat >conftest.h <<EOF
2845 #define GCC_$cf_ATTRIBUTE $cf_directive
2846 EOF
2847                         ;;
2848                 esac
2849
2850                 if AC_TRY_EVAL(ac_compile); then
2851                         test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
2852                         cat conftest.h >>confdefs.h
2853                         case "$cf_attribute" in
2854                         (noreturn)
2855                                 AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
2856                                 ;;
2857                         (printf)
2858                                 cf_value='/* nothing */'
2859                                 if test "$cf_printf_attribute" != no ; then
2860                                         cf_value='__attribute__((format(printf,fmt,var)))'
2861                                         AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
2862                                 fi
2863                                 AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
2864                                 ;;
2865                         (scanf)
2866                                 cf_value='/* nothing */'
2867                                 if test "$cf_scanf_attribute" != no ; then
2868                                         cf_value='__attribute__((format(scanf,fmt,var)))'
2869                                         AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
2870                                 fi
2871                                 AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
2872                                 ;;
2873                         (unused)
2874                                 AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
2875                                 ;;
2876                         esac
2877                 fi
2878         done
2879 else
2880         ${FGREP-fgrep} define conftest.i >>confdefs.h
2881 fi
2882 rm -rf ./conftest*
2883 fi
2884 ])dnl
2885 dnl ---------------------------------------------------------------------------
2886 dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
2887 dnl --------------
2888 dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
2889 dnl compatible), attempt to determine if icc/clang is actually used.
2890 AC_DEFUN([CF_GCC_VERSION],[
2891 AC_REQUIRE([AC_PROG_CC])
2892 GCC_VERSION=none
2893 if test "$GCC" = yes ; then
2894         AC_MSG_CHECKING(version of $CC)
2895         GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
2896         test -z "$GCC_VERSION" && GCC_VERSION=unknown
2897         AC_MSG_RESULT($GCC_VERSION)
2898 fi
2899 CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
2900 CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
2901 ])dnl
2902 dnl ---------------------------------------------------------------------------
2903 dnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59
2904 dnl ---------------
2905 dnl Check if the compiler supports useful warning options.  There's a few that
2906 dnl we don't use, simply because they're too noisy:
2907 dnl
2908 dnl     -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
2909 dnl     -Winline (usually not worthwhile)
2910 dnl     -Wredundant-decls (system headers make this too noisy)
2911 dnl     -Wtraditional (combines too many unrelated messages, only a few useful)
2912 dnl     -Wwrite-strings (too noisy, but should review occasionally).  This
2913 dnl             is enabled for ncurses using "--enable-const".
2914 dnl     -pedantic
2915 dnl
2916 dnl Parameter:
2917 dnl     $1 is an optional list of gcc warning flags that a particular
2918 dnl             application might want to use, e.g., "no-unused" for
2919 dnl             -Wno-unused
2920 dnl Special:
2921 dnl     If $with_ext_const is "yes", add a check for -Wwrite-strings
2922 dnl
2923 AC_DEFUN([CF_GCC_WARNINGS],
2924 [
2925 AC_REQUIRE([CF_GCC_VERSION])
2926 if test "x$have_x" = xyes; then CF_CONST_X_STRING fi
2927 cat > "conftest.$ac_ext" <<EOF
2928 #line __oline__ "${as_me:-configure}"
2929 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
2930 EOF
2931 if test "$INTEL_COMPILER" = yes
2932 then
2933 # The "-wdXXX" options suppress warnings:
2934 # remark #1419: external declaration in primary source file
2935 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
2936 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
2937 # remark #193: zero used for undefined preprocessing identifier
2938 # remark #593: variable "curs_sb_left_arrow" was set but never used
2939 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
2940 # remark #869: parameter "tw" was never referenced
2941 # remark #981: operands are evaluated in unspecified order
2942 # warning #279: controlling expression is constant
2943
2944         AC_CHECKING([for $CC warning options])
2945         cf_save_CFLAGS="$CFLAGS"
2946         EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
2947         for cf_opt in \
2948                 wd1419 \
2949                 wd1683 \
2950                 wd1684 \
2951                 wd193 \
2952                 wd593 \
2953                 wd279 \
2954                 wd810 \
2955                 wd869 \
2956                 wd981
2957         do
2958                 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
2959                 if AC_TRY_EVAL(ac_compile); then
2960                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
2961                         EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
2962                 fi
2963         done
2964         CFLAGS="$cf_save_CFLAGS"
2965 elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
2966 then
2967         AC_CHECKING([for $CC warning options])
2968         cf_save_CFLAGS="$CFLAGS"
2969         cf_warn_CONST=""
2970         test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
2971         cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
2972         test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
2973         for cf_opt in W Wall \
2974                 Wbad-function-cast \
2975                 Wcast-align \
2976                 Wcast-qual \
2977                 Wdeclaration-after-statement \
2978                 Wextra \
2979                 Winline \
2980                 Wmissing-declarations \
2981                 Wmissing-prototypes \
2982                 Wnested-externs \
2983                 Wpointer-arith \
2984                 Wshadow \
2985                 Wstrict-prototypes \
2986                 Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
2987         do
2988                 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
2989                 if AC_TRY_EVAL(ac_compile); then
2990                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
2991                         case "$cf_opt" in
2992                         (Winline)
2993                                 case "$GCC_VERSION" in
2994                                 ([[34]].*)
2995                                         CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
2996                                         continue;;
2997                                 esac
2998                                 ;;
2999                         (Wpointer-arith)
3000                                 case "$GCC_VERSION" in
3001                                 ([[12]].*)
3002                                         CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
3003                                         continue;;
3004                                 esac
3005                                 ;;
3006                         esac
3007                         EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
3008                 fi
3009         done
3010         CFLAGS="$cf_save_CFLAGS"
3011 fi
3012 rm -rf ./conftest*
3013
3014 AC_SUBST(EXTRA_CFLAGS)
3015 ])dnl
3016 dnl ---------------------------------------------------------------------------
3017 dnl CF_GETOPT_HEADER version: 8 updated: 2021/06/19 19:16:16
3018 dnl ----------------
3019 dnl Check for getopt's variables which are commonly defined in stdlib.h,
3020 dnl unistd.h or (nonstandard) in getopt.h
3021 AC_DEFUN([CF_GETOPT_HEADER],
3022 [
3023 AC_HAVE_HEADERS(unistd.h getopt.h)
3024 AC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[
3025 cf_cv_getopt_header=none
3026 for cf_header in stdio.h stdlib.h unistd.h getopt.h
3027 do
3028 AC_TRY_COMPILE([
3029 #include <$cf_header>],
3030 [int x = optind; char *y = optarg; (void)x; (void)y],
3031 [cf_cv_getopt_header=$cf_header
3032  break])
3033 done
3034 ])
3035 if test "$cf_cv_getopt_header" != none ; then
3036         AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header])
3037 fi
3038 if test "$cf_cv_getopt_header" = getopt.h ; then
3039         AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h])
3040 fi
3041 ])dnl
3042 dnl ---------------------------------------------------------------------------
3043 dnl CF_GNATPREP_OPT_T version: 1 updated: 2014/08/02 18:37:25
3044 dnl -----------------
3045 AC_DEFUN([CF_GNATPREP_OPT_T],[
3046 AC_CACHE_CHECK(if GNATPREP supports -T option,cf_cv_gnatprep_opt_t,[
3047 cf_cv_gnatprep_opt_t=no
3048 gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
3049 ])
3050 test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
3051 AC_SUBST(GNATPREP_OPTS)
3052 ])dnl
3053 dnl ---------------------------------------------------------------------------
3054 dnl CF_GNAT_GENERICS version: 7 updated: 2021/01/01 13:31:04
3055 dnl ----------------
3056 AC_DEFUN([CF_GNAT_GENERICS],
3057 [
3058 AC_REQUIRE([CF_GNAT_VERSION])
3059
3060 AC_MSG_CHECKING(if GNAT supports generics)
3061 case "$cf_cv_gnat_version" in
3062 (3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|[[1-9]][[0-9]].[[0-9]]*|20[[0-9]][[0-9]])
3063         cf_gnat_generics=yes
3064         ;;
3065 (*)
3066         cf_gnat_generics=no
3067         ;;
3068 esac
3069 AC_MSG_RESULT($cf_gnat_generics)
3070
3071 if test "$cf_gnat_generics" = yes
3072 then
3073         cf_compile_generics=generics
3074         cf_generic_objects="\${GENOBJS}"
3075 else
3076         cf_compile_generics=
3077         cf_generic_objects=
3078 fi
3079
3080 AC_SUBST(cf_compile_generics)
3081 AC_SUBST(cf_generic_objects)
3082 ])dnl
3083 dnl ---------------------------------------------------------------------------
3084 dnl CF_GNAT_PROJECTS version: 13 updated: 2021/01/02 17:09:14
3085 dnl ----------------
3086 dnl GNAT projects are configured with ".gpr" project files.
3087 dnl GNAT libraries are a further development, using the project feature.
3088 AC_DEFUN([CF_GNAT_PROJECTS],
3089 [
3090 AC_REQUIRE([CF_GNAT_VERSION])
3091 AC_REQUIRE([CF_DISABLE_GNAT_PROJECTS])
3092
3093 cf_gnat_libraries=no
3094 cf_gnat_projects=no
3095
3096 if test "$enable_gnat_projects" != no ; then
3097 AC_MSG_CHECKING(if GNAT supports project files)
3098 case "$cf_cv_gnat_version" in
3099 (3.[[0-9]]*)
3100         ;;
3101 (*)
3102         case "$cf_cv_system_name" in
3103         (cygwin*|msys*)
3104                 ;;
3105         (*)
3106                 rm -rf ./conftest* ./*~conftest*
3107                 if mkdir conftest.src conftest.bin conftest.lib
3108                 then
3109                         cd conftest.src
3110                         rm -rf ./conftest* ./*~conftest*
3111                         cat >>library.gpr <<CF_EOF
3112 project Library is
3113   Kind := External ("LIB_KIND");
3114   for Library_Name use "ConfTest";
3115   for Object_Dir use ".";
3116   for Library_ALI_Dir use External("LIBRARY_DIR");
3117   for Library_Version use External ("SONAME");
3118   for Library_Kind use Kind;
3119   for Library_Dir use External("BUILD_DIR");
3120   Source_Dir := External ("SOURCE_DIR");
3121   for Source_Dirs use (Source_Dir);
3122 end Library;
3123 CF_EOF
3124                         cat >>confpackage.ads <<CF_EOF
3125 package ConfPackage is
3126    procedure conftest;
3127 end ConfPackage;
3128 CF_EOF
3129                         cat >>confpackage.adb <<CF_EOF
3130 with Text_IO;
3131 package body ConfPackage is
3132    procedure conftest is
3133    begin
3134       Text_IO.Put ("Hello World");
3135       Text_IO.New_Line;
3136    end conftest;
3137 end ConfPackage;
3138 CF_EOF
3139                         if ( "$cf_ada_make" $ADAFLAGS \
3140                                         -Plibrary.gpr \
3141                                         -XBUILD_DIR="`cd ../conftest.bin;pwd`" \
3142                                         -XLIBRARY_DIR="`cd ../conftest.lib;pwd`" \
3143                                         -XSOURCE_DIR="`pwd`" \
3144                                         -XSONAME=libConfTest.so.1 \
3145                                         -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then
3146                                 cf_gnat_projects=yes
3147                         fi
3148                         cd ..
3149                 fi
3150                 if test -f conftest.lib/confpackage.ali
3151                 then
3152                         cf_gnat_libraries=yes
3153                 fi
3154                 rm -rf ./conftest* ./*~conftest*
3155                 ;;
3156         esac
3157         ;;
3158 esac
3159 AC_MSG_RESULT($cf_gnat_projects)
3160 fi # enable_gnat_projects
3161
3162 if test "$cf_gnat_projects" = yes
3163 then
3164         AC_MSG_CHECKING(if GNAT supports libraries)
3165         AC_MSG_RESULT($cf_gnat_libraries)
3166 fi
3167
3168 USE_OLD_MAKERULES=""
3169 USE_GNAT_PROJECTS="#"
3170 USE_GNAT_MAKE_GPR="#"
3171 USE_GNAT_GPRBUILD="#"
3172
3173 if test "$cf_gnat_projects" = yes
3174 then
3175         USE_OLD_MAKERULES="#"
3176         USE_GNAT_PROJECTS=""
3177         if test "$cf_cv_VERSION_GPRBUILD" != no
3178         then
3179                 USE_GNAT_GPRBUILD=""
3180         elif test "$cf_cv_VERSION_GNATMAKE" != no
3181         then
3182                 USE_GNAT_MAKE_GPR=""
3183         else
3184                 AC_MSG_WARN(use old makefile rules since tools are missing)
3185         fi
3186 fi
3187
3188 if test "$cf_gnat_libraries" = yes
3189 then
3190         USE_GNAT_LIBRARIES=""
3191 else
3192         USE_GNAT_LIBRARIES="#"
3193 fi
3194
3195 AC_SUBST(USE_OLD_MAKERULES)
3196 AC_SUBST(USE_GNAT_PROJECTS)
3197 AC_SUBST(USE_GNAT_LIBRARIES)
3198 AC_SUBST(USE_GNAT_MAKE_GPR)
3199 AC_SUBST(USE_GNAT_GPRBUILD)
3200 ])dnl
3201 dnl ---------------------------------------------------------------------------
3202 dnl CF_GNAT_SIGINT version: 2 updated: 2021/01/01 13:31:04
3203 dnl --------------
3204 dnl Check if gnat supports SIGINT, and presumably tasking.  For the latter, it
3205 dnl is noted that gnat may compile a tasking unit even for configurations which
3206 dnl fail at runtime.
3207 AC_DEFUN([CF_GNAT_SIGINT],[
3208 AC_CACHE_CHECK(if GNAT supports SIGINT,cf_cv_gnat_sigint,[
3209 CF_GNAT_TRY_LINK([with Ada.Interrupts.Names;
3210
3211 package ConfTest is
3212
3213    pragma Warnings (Off);  --  the next pragma exists since 3.11p
3214    pragma Unreserve_All_Interrupts;
3215    pragma Warnings (On);
3216
3217    protected Process is
3218       procedure Stop;
3219       function Continue return Boolean;
3220       pragma Attach_Handler (Stop, Ada.Interrupts.Names.SIGINT);
3221    private
3222       Done : Boolean := False;
3223    end Process;
3224
3225 end ConfTest;],
3226 [package body ConfTest is
3227    protected body Process is
3228       procedure Stop is
3229       begin
3230          Done := True;
3231       end Stop;
3232       function Continue return Boolean is
3233       begin
3234          return not Done;
3235       end Continue;
3236    end Process;
3237 end ConfTest;],
3238         [cf_cv_gnat_sigint=yes],
3239         [cf_cv_gnat_sigint=no])])
3240
3241 if test "$cf_cv_gnat_sigint" = yes ; then
3242         USE_GNAT_SIGINT=""
3243 else
3244         USE_GNAT_SIGINT="#"
3245 fi
3246 AC_SUBST(USE_GNAT_SIGINT)
3247 ])dnl
3248 dnl ---------------------------------------------------------------------------
3249 dnl CF_GNAT_TRY_LINK version: 4 updated: 2021/01/01 13:31:04
3250 dnl ----------------
3251 dnl Verify that a test program compiles/links with GNAT.
3252 dnl $cf_ada_make is set to the program that compiles/links
3253 dnl $ADAFLAGS may be set to the GNAT flags.
3254 dnl
3255 dnl $1 is the text of the spec
3256 dnl $2 is the text of the body
3257 dnl $3 is the shell command to execute if successful
3258 dnl $4 is the shell command to execute if not successful
3259 AC_DEFUN([CF_GNAT_TRY_LINK],
3260 [
3261 rm -rf ./conftest* ./*~conftest*
3262 cat >>conftest.ads <<CF_EOF
3263 $1
3264 CF_EOF
3265 cat >>conftest.adb <<CF_EOF
3266 $2
3267 CF_EOF
3268 if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
3269 ifelse($3,,      :,[      $3])
3270 ifelse($4,,,[else
3271    $4])
3272 fi
3273 rm -rf ./conftest* ./*~conftest*
3274 ])dnl
3275 dnl ---------------------------------------------------------------------------
3276 dnl CF_GNAT_TRY_RUN version: 6 updated: 2021/01/01 13:31:04
3277 dnl ---------------
3278 dnl Verify that a test program compiles and runs with GNAT
3279 dnl $cf_ada_make is set to the program that compiles/links
3280 dnl $ADAFLAGS may be set to the GNAT flags.
3281 dnl
3282 dnl $1 is the text of the spec
3283 dnl $2 is the text of the body
3284 dnl $3 is the shell command to execute if successful
3285 dnl $4 is the shell command to execute if not successful
3286 AC_DEFUN([CF_GNAT_TRY_RUN],
3287 [
3288 rm -rf ./conftest* ./*~conftest*
3289 cat >>conftest.ads <<CF_EOF
3290 $1
3291 CF_EOF
3292 cat >>conftest.adb <<CF_EOF
3293 $2
3294 CF_EOF
3295 if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
3296    if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then
3297 ifelse($3,,      :,[      $3])
3298 ifelse($4,,,[   else
3299       $4])
3300    fi
3301 ifelse($4,,,[else
3302    $4])
3303 fi
3304 rm -rf ./conftest* ./*~conftest*
3305 ])dnl
3306 dnl ---------------------------------------------------------------------------
3307 dnl CF_GNAT_VERSION version: 22 updated: 2019/12/31 08:53:54
3308 dnl ---------------
3309 dnl $1 = cache variable to update
3310 dnl $2 = program name
3311 dnl Verify version of GNAT or related tool
3312 AC_DEFUN([CF_GNAT_VERSION],
3313 [
3314 AC_CACHE_CHECK(for ifelse($2,,gnat,$2) version, cf_cv_gnat_version,[
3315 cf_cv_gnat_version=`ifelse($2,,${cf_ada_make:-gnatmake},$2) --version 2>&1 | \
3316         grep '[[0-9]].[[0-9]][[0-9]]*' |\
3317         sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'`
3318 ])
3319 test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
3320 ifelse($1,,,[eval $1=$cf_cv_gnat_version; unset cf_cv_gnat_version])
3321 ])dnl
3322 dnl ---------------------------------------------------------------------------
3323 dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
3324 dnl -------------
3325 dnl Check if we must define _GNU_SOURCE to get a reasonable value for
3326 dnl _XOPEN_SOURCE, upon which many POSIX definitions depend.  This is a defect
3327 dnl (or misfeature) of glibc2, which breaks portability of many applications,
3328 dnl since it is interwoven with GNU extensions.
3329 dnl
3330 dnl Well, yes we could work around it...
3331 dnl
3332 dnl Parameters:
3333 dnl     $1 is the nominal value for _XOPEN_SOURCE
3334 AC_DEFUN([CF_GNU_SOURCE],
3335 [
3336 cf_gnu_xopen_source=ifelse($1,,500,$1)
3337
3338 AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
3339 AC_TRY_COMPILE([#include <sys/types.h>],[
3340         #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
3341                 return 0;
3342         #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
3343                 return 0;
3344         #else
3345         #       error not GNU C library
3346         #endif],
3347         [cf_cv_gnu_library=yes],
3348         [cf_cv_gnu_library=no])
3349 ])
3350
3351 if test x$cf_cv_gnu_library = xyes; then
3352
3353         # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
3354         # was changed to help a little.  newlib incorporated the change about 4
3355         # years later.
3356         AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
3357                 cf_save="$CPPFLAGS"
3358                 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
3359                 AC_TRY_COMPILE([#include <sys/types.h>],[
3360                         #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
3361                                 return 0;
3362                         #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
3363                                 return 0;
3364                         #else
3365                         #       error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
3366                         #endif],
3367                         [cf_cv_gnu_library_219=yes],
3368                         [cf_cv_gnu_library_219=no])
3369                 CPPFLAGS="$cf_save"
3370         ])
3371
3372         if test "x$cf_cv_gnu_library_219" = xyes; then
3373                 cf_save="$CPPFLAGS"
3374                 AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
3375                         CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
3376                         AC_TRY_COMPILE([
3377                                 #include <limits.h>
3378                                 #include <sys/types.h>
3379                                 ],[
3380                                 #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
3381                                         return 0;
3382                                 #else
3383                                 #       error GNU C library is too old
3384                                 #endif],
3385                                 [cf_cv_gnu_dftsrc_219=yes],
3386                                 [cf_cv_gnu_dftsrc_219=no])
3387                         ])
3388                 test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
3389         else
3390                 cf_cv_gnu_dftsrc_219=maybe
3391         fi
3392
3393         if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
3394
3395                 AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
3396                 AC_TRY_COMPILE([#include <sys/types.h>],[
3397                         #ifndef _XOPEN_SOURCE
3398                         #error  expected _XOPEN_SOURCE to be defined
3399                         #endif],
3400                         [cf_cv_gnu_source=no],
3401                         [cf_save="$CPPFLAGS"
3402                          CF_ADD_CFLAGS(-D_GNU_SOURCE)
3403                          AC_TRY_COMPILE([#include <sys/types.h>],[
3404                                 #ifdef _XOPEN_SOURCE
3405                                 #error  expected _XOPEN_SOURCE to be undefined
3406                                 #endif],
3407                                 [cf_cv_gnu_source=no],
3408                                 [cf_cv_gnu_source=yes])
3409                         CPPFLAGS="$cf_save"
3410                         ])
3411                 ])
3412
3413                 if test "$cf_cv_gnu_source" = yes
3414                 then
3415                 AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
3416                         CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
3417                         AC_TRY_COMPILE([#include <sys/types.h>],[
3418                                 #ifdef _DEFAULT_SOURCE
3419                                 #error  expected _DEFAULT_SOURCE to be undefined
3420                                 #endif],
3421                                 [cf_cv_default_source=no],
3422                                 [cf_cv_default_source=yes])
3423                         ])
3424                         if test "$cf_cv_default_source" = yes
3425                         then
3426                                 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
3427                         fi
3428                 fi
3429         fi
3430
3431 fi
3432 ])dnl
3433 dnl ---------------------------------------------------------------------------
3434 dnl CF_GPP_LIBRARY version: 13 updated: 2021/01/01 13:31:04
3435 dnl --------------
3436 dnl If we're trying to use g++, test if libg++ is installed (a rather common
3437 dnl problem :-).  If we have the compiler but no library, we'll be able to
3438 dnl configure, but won't be able to build the c++ demo program.
3439 AC_DEFUN([CF_GPP_LIBRARY],
3440 [
3441 cf_cxx_library=unknown
3442 case "$cf_cv_system_name" in
3443 (os2*)
3444         cf_gpp_libname=gpp
3445         ;;
3446 (*)
3447         cf_gpp_libname=g++
3448         ;;
3449 esac
3450 if test "$GXX" = yes; then
3451         AC_MSG_CHECKING([for lib$cf_gpp_libname])
3452         cf_save="$LIBS"
3453         CF_ADD_LIB($cf_gpp_libname)
3454         AC_TRY_LINK([
3455 #include <$cf_gpp_libname/builtin.h>
3456         ],
3457         [two_arg_error_handler_t foo2 = lib_error_handler],
3458         [cf_cxx_library=yes
3459          CF_ADD_LIB($cf_gpp_libname,CXXLIBS)
3460          if test "$cf_gpp_libname" = cpp ; then
3461             AC_DEFINE(HAVE_GPP_BUILTIN_H,1,[Define to 1 if we have gpp builtin.h])
3462          else
3463             AC_DEFINE(HAVE_GXX_BUILTIN_H,1,[Define to 1 if we have g++ builtin.h])
3464          fi],
3465         [AC_TRY_LINK([
3466 #include <builtin.h>
3467         ],
3468         [two_arg_error_handler_t foo2 = lib_error_handler],
3469         [cf_cxx_library=yes
3470          CF_ADD_LIB($cf_gpp_libname,CXXLIBS)
3471          AC_DEFINE(HAVE_BUILTIN_H,1,[Define to 1 if we have builtin.h])],
3472         [cf_cxx_library=no])])
3473         LIBS="$cf_save"
3474         AC_MSG_RESULT($cf_cxx_library)
3475 fi
3476 ])dnl
3477 dnl ---------------------------------------------------------------------------
3478 dnl CF_GXX_VERSION version: 8 updated: 2017/02/11 14:48:57
3479 dnl --------------
3480 dnl Check for version of g++
3481 AC_DEFUN([CF_GXX_VERSION],[
3482 AC_REQUIRE([AC_PROG_CPP])
3483 GXX_VERSION=none
3484 if test "$GXX" = yes; then
3485         AC_MSG_CHECKING(version of ${CXX:-g++})
3486         GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
3487         if test -z "$GXX_VERSION"
3488         then
3489                 GXX_VERSION=unknown
3490                 GXX=no
3491         fi
3492         AC_MSG_RESULT($GXX_VERSION)
3493 fi
3494 ])dnl
3495 dnl ---------------------------------------------------------------------------
3496 dnl CF_GXX_WARNINGS version: 11 updated: 2021/01/08 16:50:55
3497 dnl ---------------
3498 dnl Check if the compiler supports useful warning options.
3499 dnl
3500 dnl Most of gcc's options apply to g++, except:
3501 dnl     -Wbad-function-cast
3502 dnl     -Wmissing-declarations
3503 dnl     -Wnested-externs
3504 dnl
3505 dnl Omit a few (for now):
3506 dnl     -Winline
3507 dnl
3508 dnl Parameter:
3509 dnl     $1 is an optional list of g++ warning flags that a particular
3510 dnl             application might want to use, e.g., "no-unused" for
3511 dnl             -Wno-unused
3512 dnl Special:
3513 dnl     If $with_ext_const is "yes", add a check for -Wwrite-strings
3514 dnl
3515 AC_DEFUN([CF_GXX_WARNINGS],
3516 [
3517
3518 CF_INTEL_COMPILER(GXX,INTEL_CPLUSPLUS,CXXFLAGS)
3519 CF_CLANG_COMPILER(GXX,CLANG_CPLUSPLUS,CXXFLAGS)
3520
3521 AC_REQUIRE([CF_GXX_VERSION])
3522
3523 AC_LANG_SAVE
3524 AC_LANG_CPLUSPLUS
3525
3526 cat > conftest.$ac_ext <<EOF
3527 #line __oline__ "configure"
3528 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
3529 EOF
3530
3531 if test "$INTEL_CPLUSPLUS" = yes
3532 then
3533 # The "-wdXXX" options suppress warnings:
3534 # remark #1419: external declaration in primary source file
3535 # remark #1682: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
3536 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
3537 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
3538 # remark #193: zero used for undefined preprocessing identifier
3539 # remark #593: variable "curs_sb_left_arrow" was set but never used
3540 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
3541 # remark #869: parameter "tw" was never referenced
3542 # remark #981: operands are evaluated in unspecified order
3543 # warning #269: invalid format string conversion
3544
3545         AC_CHECKING([for $CC warning options])
3546         cf_save_CXXFLAGS="$CXXFLAGS"
3547         EXTRA_CXXFLAGS="-Wall"
3548         for cf_opt in \
3549                 wd1419 \
3550                 wd1682 \
3551                 wd1683 \
3552                 wd1684 \
3553                 wd193 \
3554                 wd279 \
3555                 wd593 \
3556                 wd810 \
3557                 wd869 \
3558                 wd981
3559         do
3560                 CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt"
3561                 if AC_TRY_EVAL(ac_compile); then
3562                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3563                         EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
3564                 fi
3565         done
3566         CXXFLAGS="$cf_save_CXXFLAGS"
3567
3568 elif test "$GXX" = yes
3569 then
3570         AC_CHECKING([for $CXX warning options])
3571         cf_save_CXXFLAGS="$CXXFLAGS"
3572         EXTRA_CXXFLAGS="-W -Wall"
3573         cf_gxx_extra_warnings=""
3574         test "$with_ext_const" = yes && cf_gxx_extra_warnings="Wwrite-strings"
3575         case "$GXX_VERSION" in
3576         ([[1-2]].*)
3577                 ;;
3578         (*)
3579                 cf_gxx_extra_warnings="$cf_gxx_extra_warnings Weffc++"
3580                 ;;
3581         esac
3582         for cf_opt in \
3583                 Wabi \
3584                 fabi-version=0 \
3585                 Wextra \
3586                 Wignored-qualifiers \
3587                 Wlogical-op \
3588                 Woverloaded-virtual \
3589                 Wsign-promo \
3590                 Wsynth \
3591                 Wold-style-cast \
3592                 Wcast-align \
3593                 Wcast-qual \
3594                 Wpointer-arith \
3595                 Wshadow \
3596                 Wundef $cf_gxx_extra_warnings $1
3597         do
3598                 CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt"
3599                 if AC_TRY_EVAL(ac_compile); then
3600                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3601                         EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
3602                 else
3603                         test -n "$verbose" && AC_MSG_RESULT(... no -$cf_opt)
3604                 fi
3605         done
3606         CXXFLAGS="$cf_save_CXXFLAGS"
3607 fi
3608
3609 rm -rf ./conftest*
3610 AC_LANG_RESTORE
3611 AC_SUBST(EXTRA_CXXFLAGS)
3612 ])dnl
3613 dnl ---------------------------------------------------------------------------
3614 dnl CF_HASHED_DB version: 7 updated: 2015/04/18 08:56:57
3615 dnl ------------
3616 dnl Look for an instance of the Berkeley hashed database.
3617 dnl
3618 dnl $1 = optional parameter, to specify install-prefix for the database.
3619 AC_DEFUN([CF_HASHED_DB],
3620 [
3621 ifelse([$1],,,[
3622 case $1 in
3623 (yes|*able*)
3624         ;;
3625 (*)
3626         if test -d "$1" ; then
3627                 CF_ADD_INCDIR($1/include)
3628                 CF_ADD_LIBDIR($1/lib)
3629         else
3630                 case "$1" in
3631                 (./*|../*|/*)
3632                         AC_MSG_WARN(no such directory $1)
3633                         ;;
3634                 (*)
3635                         CF_FIND_SUB_INCDIR($1)
3636                         CF_FIND_SUB_LIBDIR($1)
3637                         ;;
3638                 esac
3639         fi
3640 esac
3641 ])
3642 AC_CHECK_HEADER(db.h,[
3643 CF_HASHED_DB_VERSION
3644 if test "$cf_cv_hashed_db_version" = unknown ; then
3645         AC_MSG_ERROR(Cannot determine version of db)
3646 else
3647         CF_HASHED_DB_LIBS
3648         if test "$cf_cv_hashed_db_libs" = unknown ; then
3649                 AC_MSG_ERROR(Cannot determine library for db)
3650         elif test "$cf_cv_hashed_db_libs" != default ; then
3651                 CF_ADD_LIB($cf_cv_hashed_db_libs)
3652         fi
3653 fi
3654 ],[
3655         AC_MSG_ERROR(Cannot find db.h)
3656 ])
3657 ])dnl
3658 dnl ---------------------------------------------------------------------------
3659 dnl CF_HASHED_DB_LIBS version: 10 updated: 2021/01/02 17:09:14
3660 dnl -----------------
3661 dnl Given that we have the header and version for hashed database, find the
3662 dnl library information.
3663 AC_DEFUN([CF_HASHED_DB_LIBS],
3664 [
3665 AC_CACHE_CHECK(for db libraries, cf_cv_hashed_db_libs,[
3666 cf_cv_hashed_db_libs=unknown
3667 for cf_db_libs in "" db$cf_cv_hashed_db_version db-$cf_cv_hashed_db_version db ''
3668 do
3669         cf_save_libs="$LIBS"
3670         if test -n "$cf_db_libs"; then
3671                 CF_ADD_LIB($cf_db_libs)
3672         fi
3673         CF_MSG_LOG(checking for library $cf_db_libs)
3674         AC_TRY_LINK([
3675 $ac_includes_default
3676 #include <db.h>
3677 ],[
3678         char *path = "/tmp/foo";
3679 #ifdef DB_VERSION_MAJOR
3680 #if DB_VERSION_MAJOR >= 4
3681         DB *result = 0;
3682         db_create(&result, NULL, 0);
3683         result->open(result,
3684                 NULL,
3685                 path,
3686                 path,
3687                 DB_HASH,
3688                 DB_CREATE,
3689                 0644);
3690 #elif DB_VERSION_MAJOR >= 3
3691         DB *result = 0;
3692         db_create(&result, NULL, 0);
3693         result->open(result,
3694                 path,
3695                 path,
3696                 DB_HASH,
3697                 DB_CREATE,
3698                 0644);
3699 #elif DB_VERSION_MAJOR >= 2
3700         DB *result = 0;
3701         db_open(path,
3702                 DB_HASH,
3703                 DB_CREATE,
3704                 0644,
3705                 (DB_ENV *) 0,
3706                 (DB_INFO *) 0,
3707                 &result);
3708 #endif /* DB_VERSION_MAJOR */
3709 #else
3710         DB *result = dbopen(path,
3711                      2,
3712                      0644,
3713                      DB_HASH,
3714                      0);
3715 #endif
3716         ${cf_cv_main_return:-return}(result != 0)
3717 ],[
3718         if test -n "$cf_db_libs" ; then
3719                 cf_cv_hashed_db_libs=$cf_db_libs
3720         else
3721                 cf_cv_hashed_db_libs=default
3722         fi
3723         LIBS="$cf_save_libs"
3724         break
3725 ])
3726         LIBS="$cf_save_libs"
3727 done
3728 ])
3729 ])dnl
3730 dnl ---------------------------------------------------------------------------
3731 dnl CF_HASHED_DB_VERSION version: 4 updated: 2014/04/12 16:47:01
3732 dnl --------------------
3733 dnl Given that we have the header file for hashed database, find the version
3734 dnl information.
3735 AC_DEFUN([CF_HASHED_DB_VERSION],
3736 [
3737 AC_CACHE_CHECK(for version of db, cf_cv_hashed_db_version,[
3738 cf_cv_hashed_db_version=unknown
3739
3740 for cf_db_version in 1 2 3 4 5 6
3741 do
3742         CF_MSG_LOG(checking for db version $cf_db_version)
3743         AC_TRY_COMPILE([
3744 $ac_includes_default
3745 #include <db.h>
3746
3747 #ifdef DB_VERSION_MAJOR
3748         /* db2 (DB_VERSION_MAJOR=2) has also DB_VERSION_MINOR, tested with 7 */
3749 #if $cf_db_version == DB_VERSION_MAJOR
3750         /* ok */
3751 #else
3752         make an error
3753 #endif
3754 #else
3755 #if $cf_db