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