]> ncurses.scripts.mit.edu Git - ncurses.git/blob - aclocal.m4
8d9a3ba2361b768c99c5a735592b4359c5470b7d
[ncurses.git] / aclocal.m4
1 dnl***************************************************************************
2 dnl Copyright 2018-2020,2021 Thomas E. Dickey                                *
3 dnl Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
4 dnl                                                                          *
5 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
6 dnl copy of this software and associated documentation files (the            *
7 dnl "Software"), to deal in the Software without restriction, including      *
8 dnl without limitation the rights to use, copy, modify, merge, publish,      *
9 dnl distribute, distribute with modifications, sublicense, and/or sell       *
10 dnl copies of the Software, and to permit persons to whom the Software is    *
11 dnl furnished to do so, subject to the following conditions:                 *
12 dnl                                                                          *
13 dnl The above copyright notice and this permission notice shall be included  *
14 dnl in all copies or substantial portions of the Software.                   *
15 dnl                                                                          *
16 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17 dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18 dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19 dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20 dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21 dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22 dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23 dnl                                                                          *
24 dnl Except as contained in this notice, the name(s) of the above copyright   *
25 dnl holders shall not be used in advertising or otherwise to promote the     *
26 dnl sale, use or other dealings in this Software without prior written       *
27 dnl authorization.                                                           *
28 dnl***************************************************************************
29 dnl
30 dnl Author: Thomas E. Dickey 1995-on
31 dnl
32 dnl $Id: aclocal.m4,v 1.999 2021/12/04 23:30:56 tom Exp $
33 dnl Macros used in NCURSES auto-configuration script.
34 dnl
35 dnl These macros are maintained separately from NCURSES.  The copyright on
36 dnl this file applies to the aggregation of macros and does not affect use of
37 dnl these macros in other applications.
38 dnl
39 dnl See these pages for additional information:
40 dnl             https://invisible-island.net/autoconf/
41 dnl             https://invisible-island.net/autoconf/my-autoconf.html
42 dnl
43 dnl ---------------------------------------------------------------------------
44 dnl ---------------------------------------------------------------------------
45 dnl AM_LANGINFO_CODESET version: 6 updated: 2021/01/01 16:53:59
46 dnl -------------------
47 dnl Inserted as requested by gettext 0.10.40
48 dnl File from /usr/share/aclocal
49 dnl codeset.m4
50 dnl ====================
51 dnl serial AM1
52 dnl
53 dnl From Bruno Haible.
54 AC_DEFUN([AM_LANGINFO_CODESET],
55 [
56 AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
57         [AC_TRY_LINK([#include <langinfo.h>],
58         [char* cs = nl_langinfo(CODESET); (void)cs],
59         am_cv_langinfo_codeset=yes,
60         am_cv_langinfo_codeset=no)
61         ])
62         if test "$am_cv_langinfo_codeset" = yes; then
63                 AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
64                 [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
65         fi
66 ])dnl
67 dnl ---------------------------------------------------------------------------
68 dnl CF_ABI_DEFAULTS version: 2 updated: 2015/06/06 13:49:58
69 dnl ---------------
70 dnl Provide configure-script defaults for different ncurses ABIs.
71 AC_DEFUN([CF_ABI_DEFAULTS],[
72 AC_REQUIRE([CF_NCURSES_WITH_ABI_VERSION])
73 case x$cf_cv_abi_version in
74 (x[[6789]])
75         cf_dft_ext_colors=yes
76         cf_dft_ext_const=yes
77         cf_dft_ext_mouse=yes
78         cf_dft_ext_putwin=yes
79         cf_dft_ext_spfuncs=yes
80         cf_dft_filter_syms=yes
81         cf_dft_chtype=uint32_t
82         cf_dft_mmask_t=uint32_t
83         cf_dft_interop=yes
84         cf_dft_tparm_arg=intptr_t
85         cf_dft_with_lp64=yes
86         ;;
87 (*)
88         cf_dft_ext_colors=no
89         cf_dft_ext_const=no
90         cf_dft_ext_mouse=no
91         cf_dft_ext_putwin=no
92         cf_dft_ext_spfuncs=no
93         cf_dft_filter_syms=no
94         cf_dft_chtype=auto
95         cf_dft_mmask_t=auto
96         cf_dft_interop=no
97         cf_dft_tparm_arg=long
98         cf_dft_with_lp64=no
99         ;;
100 esac
101 ])dnl
102 dnl ---------------------------------------------------------------------------
103 dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
104 dnl ------------------
105 dnl Conditionally generate script according to whether we're using a given autoconf.
106 dnl
107 dnl $1 = version to compare against
108 dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
109 dnl $3 = code to use if AC_ACVERSION is older than $1.
110 define([CF_ACVERSION_CHECK],
111 [
112 ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
113 ifdef([m4_version_compare],
114 [m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
115 [CF_ACVERSION_COMPARE(
116 AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
117 AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
118 dnl ---------------------------------------------------------------------------
119 dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
120 dnl --------------------
121 dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
122 dnl                      MAJOR2, MINOR2, TERNARY2,
123 dnl                      PRINTABLE2, not FOUND, FOUND)
124 define([CF_ACVERSION_COMPARE],
125 [ifelse(builtin([eval], [$2 < $5]), 1,
126 [ifelse([$8], , ,[$8])],
127 [ifelse([$9], , ,[$9])])])dnl
128 dnl ---------------------------------------------------------------------------
129 dnl CF_ADA_INCLUDE_DIRS version: 8 updated: 2013/10/14 04:24:07
130 dnl -------------------
131 dnl Construct the list of include-options for the C programs in the Ada95
132 dnl binding.
133 AC_DEFUN([CF_ADA_INCLUDE_DIRS],
134 [
135 ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS"
136 if test "$srcdir" != "."; then
137         ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS"
138 fi
139 if test "$GCC" != yes; then
140         ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
141 elif test "$includedir" != "/usr/include"; then
142         if test "$includedir" = '${prefix}/include' ; then
143                 if test x$prefix != x/usr ; then
144                         ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
145                 fi
146         else
147                 ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
148         fi
149 fi
150 AC_SUBST(ACPPFLAGS)
151 ])dnl
152 dnl ---------------------------------------------------------------------------
153 dnl CF_ADD_ADAFLAGS version: 1 updated: 2010/06/19 15:22:18
154 dnl ---------------
155 dnl Add to $ADAFLAGS, which is substituted into makefile and scripts.
156 AC_DEFUN([CF_ADD_ADAFLAGS],[
157         ADAFLAGS="$ADAFLAGS $1"
158         AC_SUBST(ADAFLAGS)
159 ])dnl
160 dnl ---------------------------------------------------------------------------
161 dnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15
162 dnl -------------
163 dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
164 dnl $1 = flags to add
165 dnl $2 = if given makes this macro verbose.
166 dnl
167 dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
168 dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
169 dnl confused by the quotes (which require backslashes to keep them usable).
170 AC_DEFUN([CF_ADD_CFLAGS],
171 [
172 cf_fix_cppflags=no
173 cf_new_cflags=
174 cf_new_cppflags=
175 cf_new_extra_cppflags=
176
177 for cf_add_cflags in $1
178 do
179 case "$cf_fix_cppflags" in
180 (no)
181         case "$cf_add_cflags" in
182         (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
183                 case "$cf_add_cflags" in
184                 (-D*)
185                         cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
186
187                         test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
188                                 && test -z "${cf_tst_cflags}" \
189                                 && cf_fix_cppflags=yes
190
191                         if test "$cf_fix_cppflags" = yes ; then
192                                 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
193                                 continue
194                         elif test "${cf_tst_cflags}" = "\"'" ; then
195                                 CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
196                                 continue
197                         fi
198                         ;;
199                 esac
200                 case "$CPPFLAGS" in
201                 (*$cf_add_cflags)
202                         ;;
203                 (*)
204                         case "$cf_add_cflags" in
205                         (-D*)
206                                 cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
207                                 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
208                                 ;;
209                         esac
210                         CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags)
211                         ;;
212                 esac
213                 ;;
214         (*)
215                 CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags)
216                 ;;
217         esac
218         ;;
219 (yes)
220         CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
221
222         cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'`
223
224         test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
225                 && test -z "${cf_tst_cflags}" \
226                 && cf_fix_cppflags=no
227         ;;
228 esac
229 done
230
231 if test -n "$cf_new_cflags" ; then
232         ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
233         CF_APPEND_TEXT(CFLAGS,$cf_new_cflags)
234 fi
235
236 if test -n "$cf_new_cppflags" ; then
237         ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
238         CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags)
239 fi
240
241 if test -n "$cf_new_extra_cppflags" ; then
242         ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
243         CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags)
244 fi
245
246 AC_SUBST(EXTRA_CPPFLAGS)
247
248 ])dnl
249 dnl ---------------------------------------------------------------------------
250 dnl CF_ADD_CXXFLAGS version: 1 updated: 2020/04/04 16:16:13
251 dnl ---------------
252 dnl Copy non-preprocessor flags to $CXXFLAGS, preprocessor flags to $CPPFLAGS
253 dnl The second parameter if given makes this macro verbose.
254 dnl
255 dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
256 dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
257 dnl confused by the quotes (which require backslashes to keep them usable).
258 AC_DEFUN([CF_ADD_CXXFLAGS],
259 [
260 cf_save_CXXFLAGS="$CFLAGS"
261 CFLAGS="$CXXFLAGS"
262 CF_ADD_CFLAGS($1 ifelse($2,,,[,$2]))
263 CXXFLAGS="$CFLAGS"
264 CFLAGS="$cf_save_CXXFLAGS"
265 ])dnl
266 dnl ---------------------------------------------------------------------------
267 dnl CF_ADD_INCDIR version: 17 updated: 2021/09/04 06:35:04
268 dnl -------------
269 dnl Add an include-directory to $CPPFLAGS.  Don't add /usr/include, since it is
270 dnl redundant.  We don't normally need to add -I/usr/local/include for gcc,
271 dnl but old versions (and some misinstalled ones) need that.  To make things
272 dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to
273 dnl the include-path).
274 AC_DEFUN([CF_ADD_INCDIR],
275 [
276 if test -n "$1" ; then
277   for cf_add_incdir in $1
278   do
279         while test "$cf_add_incdir" != /usr/include
280         do
281           if test -d "$cf_add_incdir"
282           then
283                 cf_have_incdir=no
284                 if test -n "$CFLAGS$CPPFLAGS" ; then
285                   # a loop is needed to ensure we can add subdirs of existing dirs
286                   for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
287                         if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
288                           cf_have_incdir=yes; break
289                         fi
290                   done
291                 fi
292
293                 if test "$cf_have_incdir" = no ; then
294                   if test "$cf_add_incdir" = /usr/local/include ; then
295                         if test "$GCC" = yes
296                         then
297                           cf_save_CPPFLAGS=$CPPFLAGS
298                           CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir)
299                           AC_TRY_COMPILE([#include <stdio.h>],
300                                   [printf("Hello")],
301                                   [],
302                                   [cf_have_incdir=yes])
303                           CPPFLAGS=$cf_save_CPPFLAGS
304                         fi
305                   fi
306                 fi
307
308                 if test "$cf_have_incdir" = no ; then
309                   CF_VERBOSE(adding $cf_add_incdir to include-path)
310                   ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir"
311
312                   cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'`
313                   test "$cf_top_incdir" = "$cf_add_incdir" && break
314                   cf_add_incdir="$cf_top_incdir"
315                 else
316                   break
317                 fi
318           else
319                 break
320           fi
321         done
322   done
323 fi
324 ])dnl
325 dnl ---------------------------------------------------------------------------
326 dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05
327 dnl ----------
328 dnl Add a library, used to enforce consistency.
329 dnl
330 dnl $1 = library to add, without the "-l"
331 dnl $2 = variable to update (default $LIBS)
332 AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl
333 dnl ---------------------------------------------------------------------------
334 dnl CF_ADD_LIBDIR version: 11 updated: 2020/12/31 20:19:42
335 dnl -------------
336 dnl     Adds to the library-path
337 dnl
338 dnl     Some machines have trouble with multiple -L options.
339 dnl
340 dnl $1 is the (list of) directory(s) to add
341 dnl $2 is the optional name of the variable to update (default LDFLAGS)
342 dnl
343 AC_DEFUN([CF_ADD_LIBDIR],
344 [
345 if test -n "$1" ; then
346         for cf_add_libdir in $1
347         do
348                 if test "$cf_add_libdir" = /usr/lib ; then
349                         :
350                 elif test -d "$cf_add_libdir"
351                 then
352                         cf_have_libdir=no
353                         if test -n "$LDFLAGS$LIBS" ; then
354                                 # a loop is needed to ensure we can add subdirs of existing dirs
355                                 for cf_test_libdir in $LDFLAGS $LIBS ; do
356                                         if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
357                                                 cf_have_libdir=yes; break
358                                         fi
359                                 done
360                         fi
361                         if test "$cf_have_libdir" = no ; then
362                                 CF_VERBOSE(adding $cf_add_libdir to library-path)
363                                 ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
364                         fi
365                 fi
366         done
367 fi
368 ])dnl
369 dnl ---------------------------------------------------------------------------
370 dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33
371 dnl -----------
372 dnl Add one or more libraries, used to enforce consistency.  Libraries are
373 dnl prepended to an existing list, since their dependencies are assumed to
374 dnl already exist in the list.
375 dnl
376 dnl $1 = libraries to add, with the "-l", etc.
377 dnl $2 = variable to update (default $LIBS)
378 AC_DEFUN([CF_ADD_LIBS],[
379 cf_add_libs="[$]ifelse($2,,LIBS,[$2])"
380 # reverse order
381 cf_add_0lib=
382 for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done
383 # filter duplicates
384 for cf_add_1lib in $cf_add_0lib; do
385         for cf_add_2lib in $cf_add_libs; do
386                 if test "x$cf_add_1lib" = "x$cf_add_2lib"; then
387                         cf_add_1lib=
388                         break
389                 fi
390         done
391         test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs"
392 done
393 ifelse($2,,LIBS,[$2])="$cf_add_libs"
394 ])dnl
395 dnl ---------------------------------------------------------------------------
396 dnl CF_ADD_SUBDIR_PATH version: 5 updated: 2020/12/31 20:19:42
397 dnl ------------------
398 dnl Append to a search-list for a nonstandard header/lib-file
399 dnl     $1 = the variable to return as result
400 dnl     $2 = the package name
401 dnl     $3 = the subdirectory, e.g., bin, include or lib
402 dnl $4 = the directory under which we will test for subdirectories
403 dnl $5 = a directory that we do not want $4 to match
404 AC_DEFUN([CF_ADD_SUBDIR_PATH],
405 [
406 test "x$4" != "x$5" && \
407 test -d "$4" && \
408 ifelse([$5],NONE,,[{ test -z "$5" || test "x$5" = xNONE || test "x$4" != "x$5"; } &&]) {
409         test -n "$verbose" && echo "    ... testing for $3-directories under $4"
410         test -d "$4/$3" &&          $1="[$]$1 $4/$3"
411         test -d "$4/$3/$2" &&       $1="[$]$1 $4/$3/$2"
412         test -d "$4/$3/$2/$3" &&    $1="[$]$1 $4/$3/$2/$3"
413         test -d "$4/$2/$3" &&       $1="[$]$1 $4/$2/$3"
414         test -d "$4/$2/$3/$2" &&    $1="[$]$1 $4/$2/$3/$2"
415 }
416 ])dnl
417 dnl ---------------------------------------------------------------------------
418 dnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40
419 dnl ----------------
420 dnl Use CF_ADD_CFLAGS after first checking for potential redefinitions.
421 dnl $1 = flags to add
422 dnl $2 = if given makes this macro verbose.
423 define([CF_APPEND_CFLAGS],
424 [
425 for cf_add_cflags in $1
426 do
427         case "x$cf_add_cflags" in
428         (x-[[DU]]*)
429                 CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2])
430                 CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2])
431                 ;;
432         esac
433         CF_ADD_CFLAGS([$cf_add_cflags],[$2])
434 done
435 ])dnl
436 dnl ---------------------------------------------------------------------------
437 dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
438 dnl --------------
439 dnl use this macro for appending text without introducing an extra blank at
440 dnl the beginning
441 define([CF_APPEND_TEXT],
442 [
443         test -n "[$]$1" && $1="[$]$1 "
444         $1="[$]{$1}$2"
445 ])dnl
446 dnl ---------------------------------------------------------------------------
447 dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
448 dnl --------------
449 dnl Allow user to disable a normally-on option.
450 AC_DEFUN([CF_ARG_DISABLE],
451 [CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
452 dnl ---------------------------------------------------------------------------
453 dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31
454 dnl -------------
455 dnl Allow user to enable a normally-off option.
456 AC_DEFUN([CF_ARG_ENABLE],
457 [CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
458 dnl ---------------------------------------------------------------------------
459 dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14
460 dnl -------------
461 dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
462 dnl values.
463 dnl
464 dnl Parameters:
465 dnl $1 = option name
466 dnl $2 = help-string
467 dnl $3 = action to perform if option is not default
468 dnl $4 = action if perform if option is default
469 dnl $5 = default option value (either 'yes' or 'no')
470 AC_DEFUN([CF_ARG_OPTION],
471 [AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
472         if test "$enableval" != "$5" ; then
473 ifelse([$3],,[    :]dnl
474 ,[    $3]) ifelse([$4],,,[
475         else
476                 $4])
477         fi],[enableval=$5 ifelse([$4],,,[
478         $4
479 ])dnl
480 ])])dnl
481 dnl ---------------------------------------------------------------------------
482 dnl CF_AR_FLAGS version: 9 updated: 2021/01/01 13:31:04
483 dnl -----------
484 dnl Check for suitable "ar" (archiver) options for updating an archive.
485 dnl
486 dnl In particular, handle some obsolete cases where the "-" might be omitted,
487 dnl as well as a workaround for breakage of make's archive rules by the GNU
488 dnl binutils "ar" program.
489 AC_DEFUN([CF_AR_FLAGS],[
490 AC_REQUIRE([CF_PROG_AR])
491
492 AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[
493         case "$cf_cv_system_name" in
494         (*-msvc*)
495                 cf_cv_ar_flags=''
496                 cat >mk_static_lib.sh <<-EOF
497                 #!$SHELL
498                 MSVC_BIN="[$]AR"
499                 out="\[$]1"
500                 shift
501                 exec \[$]MSVC_BIN -out:"\[$]out" \[$]@
502                 EOF
503                 chmod +x mk_static_lib.sh
504                 AR=`pwd`/mk_static_lib.sh
505                 ;;
506         (*)
507                 cf_cv_ar_flags=unknown
508                 for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv
509                 do
510
511                         # check if $ARFLAGS already contains this choice
512                         if test "x$ARFLAGS" != "x" ; then
513                                 cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"`
514                                 if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then
515                                         cf_cv_ar_flags=
516                                         break
517                                 fi
518                         fi
519
520                         rm -f "conftest.$ac_cv_objext"
521                         rm -f conftest.a
522
523                         cat >"conftest.$ac_ext" <<EOF
524 #line __oline__ "configure"
525 int     testdata[[3]] = { 123, 456, 789 };
526 EOF
527                         if AC_TRY_EVAL(ac_compile) ; then
528                                 echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&AC_FD_CC
529                                 $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&AC_FD_CC 1>/dev/null
530                                 if test -f conftest.a ; then
531                                         cf_cv_ar_flags="$cf_ar_flags"
532                                         break
533                                 fi
534                         else
535                                 CF_VERBOSE(cannot compile test-program)
536                                 break
537                         fi
538                 done
539                 rm -f conftest.a "conftest.$ac_ext" "conftest.$ac_cv_objext"
540                 ;;
541         esac
542 ])
543
544 if test -n "$ARFLAGS" ; then
545         if test -n "$cf_cv_ar_flags" ; then
546                 ARFLAGS="$ARFLAGS $cf_cv_ar_flags"
547         fi
548 else
549         ARFLAGS=$cf_cv_ar_flags
550 fi
551
552 AC_SUBST(ARFLAGS)
553 ])
554 dnl ---------------------------------------------------------------------------
555 dnl CF_AWK_BIG_PRINTF version: 5 updated: 2015/04/17 21:13:04
556 dnl -----------------
557 dnl Check if awk can handle big strings using printf.  Some older versions of
558 dnl awk choke on large strings passed via "%s".
559 dnl
560 dnl $1 = desired string size
561 dnl $2 = variable to set with result
562 AC_DEFUN([CF_AWK_BIG_PRINTF],
563 [
564         case x$AWK in
565         (x)
566                 eval $2=no
567                 ;;
568         (*)
569                 if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < $1) { xx = xx "x"; }; printf("%s\n", xx); }' 2>/dev/null \
570                         | $AWK '{ printf "%d\n", length([$]0); }' 2>/dev/null | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ([$]0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then
571                         eval $2=yes
572                 else
573                         eval $2=no
574                 fi
575                 ;;
576         esac
577 ])dnl
578 dnl ---------------------------------------------------------------------------
579 dnl CF_BOOL_DECL version: 8 updated: 2004/01/30 15:51:18
580 dnl ------------
581 dnl Test if 'bool' is a builtin type in the configured C++ compiler.  Some
582 dnl older compilers (e.g., gcc 2.5.8) don't support 'bool' directly; gcc
583 dnl 2.6.3 does, in anticipation of the ANSI C++ standard.
584 dnl
585 dnl Treat the configuration-variable specially here, since we're directly
586 dnl substituting its value (i.e., 1/0).
587 dnl
588 dnl $1 is the shell variable to store the result in, if not $cv_cv_builtin_bool
589 AC_DEFUN([CF_BOOL_DECL],
590 [
591 AC_MSG_CHECKING(if we should include stdbool.h)
592
593 AC_CACHE_VAL(cf_cv_header_stdbool_h,[
594         AC_TRY_COMPILE([],[bool foo = false],
595                 [cf_cv_header_stdbool_h=0],
596                 [AC_TRY_COMPILE([
597 #ifndef __BEOS__
598 #include <stdbool.h>
599 #endif
600 ],[bool foo = false],
601                         [cf_cv_header_stdbool_h=1],
602                         [cf_cv_header_stdbool_h=0])])])
603
604 if test "$cf_cv_header_stdbool_h" = 1
605 then    AC_MSG_RESULT(yes)
606 else    AC_MSG_RESULT(no)
607 fi
608
609 AC_MSG_CHECKING([for builtin bool type])
610
611 AC_CACHE_VAL(ifelse($1,,cf_cv_builtin_bool,[$1]),[
612         AC_TRY_COMPILE([
613 #include <stdio.h>
614 #include <sys/types.h>
615 ],[bool x = false],
616                 [ifelse($1,,cf_cv_builtin_bool,[$1])=1],
617                 [ifelse($1,,cf_cv_builtin_bool,[$1])=0])
618         ])
619
620 if test "$ifelse($1,,cf_cv_builtin_bool,[$1])" = 1
621 then    AC_MSG_RESULT(yes)
622 else    AC_MSG_RESULT(no)
623 fi
624 ])dnl
625 dnl ---------------------------------------------------------------------------
626 dnl CF_BOOL_SIZE version: 18 updated: 2021/09/04 06:35:04
627 dnl ------------
628 dnl Test for the size of 'bool' in the configured C++ compiler (e.g., a type).
629 dnl Don't bother looking for bool.h, since it has been deprecated.
630 dnl
631 dnl If the current compiler is C rather than C++, we get the bool definition
632 dnl from <stdbool.h>.
633 AC_DEFUN([CF_BOOL_SIZE],
634 [
635 AC_CHECK_SIZEOF(bool,,[
636 #include <stdlib.h>
637 #include <stdio.h>
638
639 #if defined(__cplusplus)
640
641 #ifdef HAVE_GXX_BUILTIN_H
642 #include <g++/builtin.h>
643 #elif HAVE_GPP_BUILTIN_H
644 #include <gpp/builtin.h>
645 #elif HAVE_BUILTIN_H
646 #include <builtin.h>
647 #endif
648
649 #else
650
651 #if $cf_cv_header_stdbool_h
652 #include <stdbool.h>
653 #endif
654
655 #endif
656 ])
657
658 AC_CACHE_CHECK(for type of bool, cf_cv_type_of_bool,[
659         rm -f cf_test.out
660         AC_TRY_RUN([
661 #include <stdlib.h>
662 #include <stdio.h>
663
664 #if defined(__cplusplus)
665
666 #ifdef HAVE_GXX_BUILTIN_H
667 #include <g++/builtin.h>
668 #elif HAVE_GPP_BUILTIN_H
669 #include <gpp/builtin.h>
670 #elif HAVE_BUILTIN_H
671 #include <builtin.h>
672 #endif
673
674 #else
675
676 #if $cf_cv_header_stdbool_h
677 #include <stdbool.h>
678 #endif
679
680 #endif
681
682 int main(void)
683 {
684         FILE *fp = fopen("cf_test.out", "w");
685         if (fp != 0) {
686                 bool x = true;
687                 if ((bool)(-x) >= 0)
688                         fputs("unsigned ", fp);
689                 if (sizeof(x) == sizeof(int))       fputs("int",  fp);
690                 else if (sizeof(x) == sizeof(char)) fputs("char", fp);
691                 else if (sizeof(x) == sizeof(short))fputs("short",fp);
692                 else if (sizeof(x) == sizeof(long)) fputs("long", fp);
693                 fclose(fp);
694         }
695         ${cf_cv_main_return:-return}(0);
696 }
697                 ],
698                 [cf_cv_type_of_bool=`cat cf_test.out`
699                  if test -z "$cf_cv_type_of_bool"; then
700                    cf_cv_type_of_bool=unknown
701                  fi],
702                 [cf_cv_type_of_bool=unknown],
703                 [
704                 case x$ac_cv_sizeof_bool in
705                 (x1) cf_cv_type_of_bool="unsigned char";;
706                 (x2) cf_cv_type_of_bool="unsigned short";;
707                 (x4) cf_cv_type_of_bool="unsigned int";;
708                 (x8) cf_cv_type_of_bool="unsigned long";;
709                 (*)  cf_cv_type_of_bool=unknown;;
710                 esac
711                 ])
712         rm -f cf_test.out
713 ])
714
715 if test "$cf_cv_type_of_bool" = unknown ; then
716         case .$NCURSES_BOOL in
717         (.auto|.) NCURSES_BOOL=unsigned;;
718         esac
719         AC_MSG_WARN(Assuming $NCURSES_BOOL for type of bool)
720         cf_cv_type_of_bool=$NCURSES_BOOL
721 fi
722 ])dnl
723 dnl ---------------------------------------------------------------------------
724 dnl CF_BUILD_CC version: 9 updated: 2021/01/02 09:31:20
725 dnl -----------
726 dnl If we're cross-compiling, allow the user to override the tools and their
727 dnl options.  The configure script is oriented toward identifying the host
728 dnl compiler, etc., but we need a build compiler to generate parts of the
729 dnl source.
730 dnl
731 dnl $1 = default for $CPPFLAGS
732 dnl $2 = default for $LIBS
733 AC_DEFUN([CF_BUILD_CC],[
734 CF_ACVERSION_CHECK(2.52,,
735         [AC_REQUIRE([CF_PROG_EXT])])
736 if test "$cross_compiling" = yes ; then
737
738         # defaults that we might want to override
739         : ${BUILD_CFLAGS:=''}
740         : ${BUILD_CPPFLAGS:='ifelse([$1],,,[$1])'}
741         : ${BUILD_LDFLAGS:=''}
742         : ${BUILD_LIBS:='ifelse([$2],,,[$2])'}
743         : ${BUILD_EXEEXT:='$x'}
744         : ${BUILD_OBJEXT:='o'}
745
746         AC_ARG_WITH(build-cc,
747                 [  --with-build-cc=XXX     the build C compiler ($BUILD_CC)],
748                 [BUILD_CC="$withval"],
749                 [AC_CHECK_PROGS(BUILD_CC, [gcc clang c99 c89 cc cl],none)])
750         AC_MSG_CHECKING(for native build C compiler)
751         AC_MSG_RESULT($BUILD_CC)
752
753         AC_MSG_CHECKING(for native build C preprocessor)
754         AC_ARG_WITH(build-cpp,
755                 [  --with-build-cpp=XXX    the build C preprocessor ($BUILD_CPP)],
756                 [BUILD_CPP="$withval"],
757                 [BUILD_CPP='${BUILD_CC} -E'])
758         AC_MSG_RESULT($BUILD_CPP)
759
760         AC_MSG_CHECKING(for native build C flags)
761         AC_ARG_WITH(build-cflags,
762                 [  --with-build-cflags=XXX the build C compiler-flags ($BUILD_CFLAGS)],
763                 [BUILD_CFLAGS="$withval"])
764         AC_MSG_RESULT($BUILD_CFLAGS)
765
766         AC_MSG_CHECKING(for native build C preprocessor-flags)
767         AC_ARG_WITH(build-cppflags,
768                 [  --with-build-cppflags=XXX the build C preprocessor-flags ($BUILD_CPPFLAGS)],
769                 [BUILD_CPPFLAGS="$withval"])
770         AC_MSG_RESULT($BUILD_CPPFLAGS)
771
772         AC_MSG_CHECKING(for native build linker-flags)
773         AC_ARG_WITH(build-ldflags,
774                 [  --with-build-ldflags=XXX the build linker-flags ($BUILD_LDFLAGS)],
775                 [BUILD_LDFLAGS="$withval"])
776         AC_MSG_RESULT($BUILD_LDFLAGS)
777
778         AC_MSG_CHECKING(for native build linker-libraries)
779         AC_ARG_WITH(build-libs,
780                 [  --with-build-libs=XXX   the build libraries (${BUILD_LIBS})],
781                 [BUILD_LIBS="$withval"])
782         AC_MSG_RESULT($BUILD_LIBS)
783
784         # this assumes we're on Unix.
785         BUILD_EXEEXT=
786         BUILD_OBJEXT=o
787
788         : ${BUILD_CC:='${CC}'}
789
790         if { test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}'; } ; then
791                 AC_MSG_ERROR([Cross-build requires two compilers.
792 Use --with-build-cc to specify the native compiler.])
793         fi
794
795 else
796         : ${BUILD_CC:='${CC}'}
797         : ${BUILD_CPP:='${CPP}'}
798         : ${BUILD_CFLAGS:='${CFLAGS}'}
799         : ${BUILD_CPPFLAGS:='${CPPFLAGS}'}
800         : ${BUILD_LDFLAGS:='${LDFLAGS}'}
801         : ${BUILD_LIBS:='${LIBS}'}
802         : ${BUILD_EXEEXT:='$x'}
803         : ${BUILD_OBJEXT:='o'}
804 fi
805
806 AC_SUBST(BUILD_CC)
807 AC_SUBST(BUILD_CPP)
808 AC_SUBST(BUILD_CFLAGS)
809 AC_SUBST(BUILD_CPPFLAGS)
810 AC_SUBST(BUILD_LDFLAGS)
811 AC_SUBST(BUILD_LIBS)
812 AC_SUBST(BUILD_EXEEXT)
813 AC_SUBST(BUILD_OBJEXT)
814 ])dnl
815 dnl ---------------------------------------------------------------------------
816 dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23
817 dnl ---------------
818 AC_DEFUN([CF_C11_NORETURN],
819 [
820 AC_MSG_CHECKING(if you want to use C11 _Noreturn feature)
821 CF_ARG_ENABLE(stdnoreturn,
822         [  --enable-stdnoreturn    enable C11 _Noreturn feature for diagnostics],
823         [enable_stdnoreturn=yes],
824         [enable_stdnoreturn=no])
825 AC_MSG_RESULT($enable_stdnoreturn)
826
827 if test $enable_stdnoreturn = yes; then
828 AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
829         [AC_TRY_COMPILE([
830 #include <stdio.h>
831 #include <stdlib.h>
832 #include <stdnoreturn.h>
833 static _Noreturn void giveup(void) { exit(0); }
834         ],
835         [if (feof(stdin)) giveup()],
836         cf_cv_c11_noreturn=yes,
837         cf_cv_c11_noreturn=no)
838         ])
839 else
840         cf_cv_c11_noreturn=no,
841 fi
842
843 if test "$cf_cv_c11_noreturn" = yes; then
844         AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working])
845         AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported])
846         HAVE_STDNORETURN_H=1
847 else
848         HAVE_STDNORETURN_H=0
849 fi
850
851 AC_SUBST(HAVE_STDNORETURN_H)
852 AC_SUBST(STDC_NORETURN)
853 ])dnl
854 dnl ---------------------------------------------------------------------------
855 dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20
856 dnl ---------------
857 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
858 dnl into CC.  This will not help with broken scripts that wrap the compiler
859 dnl with options, but eliminates a more common category of user confusion.
860 dnl
861 dnl In particular, it addresses the problem of being able to run the C
862 dnl preprocessor in a consistent manner.
863 dnl
864 dnl Caveat: this also disallows blanks in the pathname for the compiler, but
865 dnl the nuisance of having inconsistent settings for compiler and preprocessor
866 dnl outweighs that limitation.
867 AC_DEFUN([CF_CC_ENV_FLAGS],
868 [
869 # This should have been defined by AC_PROG_CC
870 : "${CC:=cc}"
871
872 AC_MSG_CHECKING(\$CFLAGS variable)
873 case "x$CFLAGS" in
874 (*-[[IUD]]*)
875         AC_MSG_RESULT(broken)
876         AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
877         cf_flags="$CFLAGS"
878         CFLAGS=
879         for cf_arg in $cf_flags
880         do
881                 CF_ADD_CFLAGS($cf_arg)
882         done
883         ;;
884 (*)
885         AC_MSG_RESULT(ok)
886         ;;
887 esac
888
889 AC_MSG_CHECKING(\$CC variable)
890 case "$CC" in
891 (*[[\ \ ]]-*)
892         AC_MSG_RESULT(broken)
893         AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
894         # humor him...
895         cf_prog=`echo "$CC" | sed -e 's/        / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
896         cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
897         CC="$cf_prog"
898         for cf_arg in $cf_flags
899         do
900                 case "x$cf_arg" in
901                 (x-[[IUDfgOW]]*)
902                         CF_ADD_CFLAGS($cf_arg)
903                         ;;
904                 (*)
905                         CC="$CC $cf_arg"
906                         ;;
907                 esac
908         done
909         CF_VERBOSE(resulting CC: '$CC')
910         CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
911         CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
912         ;;
913 (*)
914         AC_MSG_RESULT(ok)
915         ;;
916 esac
917 ])dnl
918 dnl ---------------------------------------------------------------------------
919 dnl CF_CFG_DEFAULTS version: 16 updated: 2021/01/04 19:33:05
920 dnl ---------------
921 dnl Determine the default configuration into which we'll install ncurses.  This
922 dnl can be overridden by the user's command-line options.  There's two items to
923 dnl look for:
924 dnl     1. the prefix (e.g., /usr)
925 dnl     2. the header files (e.g., /usr/include/ncurses)
926 dnl We'll look for a previous installation of ncurses and use the same defaults.
927 dnl
928 dnl We don't use AC_PREFIX_DEFAULT, because it gets evaluated too soon, and
929 dnl we don't use AC_PREFIX_PROGRAM, because we cannot distinguish ncurses's
930 dnl programs from a vendor's.
931 AC_DEFUN([CF_CFG_DEFAULTS],
932 [AC_REQUIRE([AC_PROG_FGREP])dnl
933
934 AC_MSG_CHECKING(for prefix)
935 if test "x$prefix" = "xNONE" ; then
936         case "$cf_cv_system_name" in
937                 # non-vendor systems don't have a conflict
938         (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
939                 prefix=/usr
940                 ;;
941         (*)     prefix=$ac_default_prefix
942                 ;;
943         esac
944 fi
945 AC_MSG_RESULT($prefix)
946
947 if test "x$prefix" = "xNONE" ; then
948 AC_MSG_CHECKING(for default include-directory)
949 test -n "$verbose" && echo 1>&AC_FD_MSG
950 for cf_symbol in \
951         "$includedir" \
952         "$includedir/ncurses" \
953         "$prefix/include" \
954         "$prefix/include/ncurses" \
955         /usr/local/include \
956         /usr/local/include/ncurses \
957         /usr/include \
958         /usr/include/ncurses
959 do
960         cf_dir=`eval echo "$cf_symbol"`
961         if test -f "$cf_dir/curses.h" ; then
962         if ( ${FGREP-fgrep} NCURSES_VERSION "$cf_dir/curses.h" >/dev/null 2>&1 ) ; then
963                 includedir="$cf_symbol"
964                 test -n "$verbose"  && echo $ECHO_N "   found " 1>&AC_FD_MSG
965                 break
966         fi
967         fi
968         test -n "$verbose"  && echo "   tested $cf_dir" 1>&AC_FD_MSG
969 done
970 AC_MSG_RESULT($includedir)
971 fi
972 ])dnl
973 dnl ---------------------------------------------------------------------------
974 dnl CF_CGETENT version: 6 updated: 2017/01/21 11:06:25
975 dnl ----------
976 dnl Check if the terminal-capability database functions are available.  If not,
977 dnl ncurses has a much-reduced version.
978 AC_DEFUN([CF_CGETENT],[
979 AC_CACHE_CHECK(for terminal-capability database functions,cf_cv_cgetent,[
980 AC_TRY_LINK([
981 #include <stdlib.h>],[
982         char temp[128];
983         char *buf = temp;
984         char *db_array = temp;
985         cgetent(&buf, &db_array, "vt100");
986         cgetcap(buf, "tc", '=');
987         cgetmatch(buf, "tc");
988         ],
989         [cf_cv_cgetent=yes],
990         [cf_cv_cgetent=no])
991 ])
992
993 if test "$cf_cv_cgetent" = yes
994 then
995         AC_DEFINE(HAVE_BSD_CGETENT,1,[Define to 1 if we have BSD cgetent])
996 AC_CACHE_CHECK(if cgetent uses const parameter,cf_cv_cgetent_const,[
997 AC_TRY_LINK([
998 #pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers"
999 #include <stdlib.h>],[
1000         char temp[128];
1001         char *buf = temp;
1002 #ifndef _NETBSD_SOURCE                  /* given, since April 2004 in stdlib.h */
1003         const char *db_array = temp;
1004         cgetent(&buf, &db_array, "vt100");
1005 #endif
1006         cgetcap(buf, "tc", '=');
1007         cgetmatch(buf, "tc");
1008         ],
1009         [cf_cv_cgetent_const=yes],
1010         [cf_cv_cgetent_const=no])
1011 ])
1012         if test "$cf_cv_cgetent_const" = yes
1013         then
1014                 AC_DEFINE_UNQUOTED(CGETENT_CONST,const,[Define to const if needed for some BSD cgetent variations])
1015         fi
1016 fi
1017 ])dnl
1018 dnl ---------------------------------------------------------------------------
1019 dnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15
1020 dnl --------------
1021 dnl Check if we're accidentally using a cache from a different machine.
1022 dnl Derive the system name, as a check for reusing the autoconf cache.
1023 dnl
1024 dnl If we've packaged config.guess and config.sub, run that (since it does a
1025 dnl better job than uname).  Normally we'll use AC_CANONICAL_HOST, but allow
1026 dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
1027 dnl which is useful in cross-compiles.
1028 dnl
1029 dnl Note: we would use $ac_config_sub, but that is one of the places where
1030 dnl autoconf 2.5x broke compatibility with autoconf 2.13
1031 AC_DEFUN([CF_CHECK_CACHE],
1032 [
1033 if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then
1034         ifelse([$1],,[AC_CANONICAL_HOST],[$1])
1035         system_name="$host_os"
1036 else
1037         system_name="`(uname -s -r) 2>/dev/null`"
1038         if test -z "$system_name" ; then
1039                 system_name="`(hostname) 2>/dev/null`"
1040         fi
1041 fi
1042 test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
1043 AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
1044
1045 test -z "$system_name" && system_name="$cf_cv_system_name"
1046 test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
1047
1048 if test ".$system_name" != ".$cf_cv_system_name" ; then
1049         AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
1050         AC_MSG_ERROR("Please remove config.cache and try again.")
1051 fi
1052 ])dnl
1053 dnl ---------------------------------------------------------------------------
1054 dnl CF_CHECK_ENVIRON version: 3 updated: 2010/05/26 16:44:57
1055 dnl ----------------
1056 dnl Check for data that is usually declared in <unistd.h>, e.g., the 'environ'
1057 dnl variable.  Define a DECL_xxx symbol if we must declare it ourselves.
1058 dnl
1059 dnl $1 = the name to check
1060 dnl $2 = the assumed type
1061 AC_DEFUN([CF_CHECK_ENVIRON],
1062 [
1063 AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
1064     AC_TRY_COMPILE([
1065 #ifdef HAVE_STDLIB_H
1066 #include <stdlib.h>
1067 #endif
1068 #include <unistd.h> ],
1069     ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1,
1070     [cf_cv_dcl_$1=yes],
1071     [cf_cv_dcl_$1=no])
1072 ])
1073
1074 if test "$cf_cv_dcl_$1" = no ; then
1075     CF_UPPER(cf_result,decl_$1)
1076     AC_DEFINE_UNQUOTED($cf_result)
1077 fi
1078
1079 # It's possible (for near-UNIX clones) that the data doesn't exist
1080 CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2]))
1081 ])dnl
1082 dnl ---------------------------------------------------------------------------
1083 dnl CF_CHECK_ERRNO version: 13 updated: 2020/03/10 18:53:47
1084 dnl --------------
1085 dnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g.,
1086 dnl the 'errno' variable.  Define a DECL_xxx symbol if we must declare it
1087 dnl ourselves.
1088 dnl
1089 dnl $1 = the name to check
1090 dnl $2 = the assumed type
1091 AC_DEFUN([CF_CHECK_ERRNO],
1092 [
1093 AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[
1094         AC_TRY_COMPILE([
1095 #ifdef HAVE_STDLIB_H
1096 #include <stdlib.h>
1097 #endif
1098 #include <stdio.h>
1099 #include <sys/types.h>
1100 #include <errno.h> ],
1101         ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1; (void)x,
1102         [cf_cv_dcl_$1=yes],
1103         [cf_cv_dcl_$1=no])
1104 ])
1105
1106 if test "$cf_cv_dcl_$1" = no ; then
1107         CF_UPPER(cf_result,decl_$1)
1108         AC_DEFINE_UNQUOTED($cf_result)
1109 fi
1110
1111 # It's possible (for near-UNIX clones) that the data doesn't exist
1112 CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2]))
1113 ])dnl
1114 dnl ---------------------------------------------------------------------------
1115 dnl CF_CHECK_EXTERN_DATA version: 5 updated: 2021/09/04 06:35:04
1116 dnl --------------------
1117 dnl Check for existence of external data in the current set of libraries.  If
1118 dnl we can modify it, it is real enough.
1119 dnl $1 = the name to check
1120 dnl $2 = its type
1121 AC_DEFUN([CF_CHECK_EXTERN_DATA],
1122 [
1123 AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[
1124         AC_TRY_LINK([
1125 #undef $1
1126 extern $2 $1;
1127 ],
1128         [$1 = 2],
1129         [cf_cv_have_$1=yes],
1130         [cf_cv_have_$1=no])
1131 ])
1132
1133 if test "$cf_cv_have_$1" = yes ; then
1134         CF_UPPER(cf_result,have_$1)
1135         AC_DEFINE_UNQUOTED($cf_result)
1136 fi
1137
1138 ])dnl
1139 dnl ---------------------------------------------------------------------------
1140 dnl CF_CHECK_FVISIBILITY version: 2 updated: 2020/04/04 16:16:13
1141 dnl --------------------
1142 dnl Check whether the compiler understands -fvisibility=hidden
1143 dnl
1144 dnl $1 = compiler
1145 dnl $2 = compiler-flags variable name
1146 dnl $3 = cache variable to set
1147 AC_DEFUN([CF_CHECK_FVISIBILITY],[
1148 AC_CACHE_CHECK(if $1 -fvisibility=hidden option works,$3,[
1149     cf_save_cflags="[$]$2"
1150     $2="[$]$2 -fvisibility=hidden"
1151     AC_TRY_LINK([
1152 __attribute__ ((visibility("default"))) int somefunc() {return 42;}
1153         ],[
1154         if (somefunc()) return 1;
1155 ],
1156     [$3=yes],
1157     [$3=no])
1158     $2=$cf_save_cflags
1159 ])
1160 ])dnl
1161 dnl ---------------------------------------------------------------------------
1162 dnl CF_CHECK_GETENV version: 2 updated: 2021/01/02 17:09:14
1163 dnl ---------------
1164 dnl Check if repeated getenv calls return the same pointer, e.g., it does not
1165 dnl discard the previous pointer when returning a new one.
1166 AC_DEFUN([CF_CHECK_GETENV],
1167 [
1168 AC_REQUIRE([CF_CHECK_ENVIRON])
1169 AC_CHECK_FUNC( getenv, ,, AC_MSG_ERROR(getenv not found) )
1170 AC_CHECK_FUNCS( putenv setenv strdup )
1171 AC_CACHE_CHECK(if getenv returns consistent values,cf_cv_consistent_getenv,[
1172 AC_TRY_RUN([
1173 #include <stdlib.h>
1174 #include <unistd.h>
1175 #include <stdio.h>
1176 #include <string.h>
1177 #include <sys/types.h>
1178
1179 #if defined(HAVE_ENVIRON) && defined(DECL_ENVIRON) && !defined(environ)
1180 extern char **environ;  /* POSIX, but some systems are not... */
1181 #endif
1182
1183 #if defined(HAVE_STRDUP)
1184 #define str_alloc(s) strdup(s)
1185 #else
1186 #define str_alloc(s) strcpy(malloc(strlen(s) + 1, s))
1187 #endif
1188
1189 static void set_value(const char *name, const char *value)
1190 {
1191 #if defined(HAVE_SETENV)
1192         setenv(name, value, 1);
1193 #elif defined(HAVE_PUTENV)
1194         char buffer[1024];
1195         sprintf(buffer, "%s=%s", name, value);
1196         putenv(str_alloc(buffer));
1197 #else
1198 #error neither putenv/setenv found
1199 #endif
1200 }
1201 int main(void)
1202 {
1203         int pass;
1204         size_t numenv, limit, j;
1205         char **mynames;
1206         char **myvalues;
1207         char **mypointer;
1208         char *equals;
1209         for (numenv = 0; environ[numenv]; ++numenv) ;
1210         limit = numenv + 10;
1211         mynames = (char **) calloc(limit + 1, sizeof(char *));
1212         myvalues = (char **) calloc(limit + 1, sizeof(char *));
1213         mypointer = (char **) calloc(limit + 1, sizeof(char *));
1214 #if defined(HAVE_ENVIRON)
1215         for (j = 0; environ[j]; ++j) {
1216                 mynames[j] = str_alloc(environ[j]);
1217                 equals = strchr(mynames[j], '=');
1218                 if (equals != 0) {
1219                         *equals++ = '\\0';
1220                         myvalues[j] = str_alloc(equals);
1221                 } else {
1222                         myvalues[j] = str_alloc("");
1223                 }
1224         }
1225 #endif
1226         for (j = numenv; j < limit; ++j) {
1227                 char name[80];
1228                 char value[80];
1229                 size_t found;
1230                 size_t k = 0;
1231                 do {
1232                         size_t jk;
1233                         found = 0;
1234                         sprintf(name, "TERM%lu", (unsigned long) k);
1235                         for (jk = 0; jk < j; ++jk) {
1236                                 if (!strcmp(name, mynames[jk])) {
1237                                         found = 1;
1238                                         ++k;
1239                                         break;
1240                                 }
1241                         }
1242                 } while (found);
1243                 sprintf(value, "%lu:%p", (unsigned long) k, &mynames[j]);
1244                 set_value(name, value);
1245                 mynames[j] = str_alloc(name);
1246                 myvalues[j] = str_alloc(value);
1247         }
1248         for (pass = 0; pass < 3; ++pass) {
1249                 for (j = 0; j < limit; ++j) {
1250                         char *value = getenv(mynames[j]);
1251                         if (pass) {
1252                                 if (value == 0) {
1253                                         fprintf(stderr, "getenv returned null for %s\\n", mynames[j]);
1254                                         ${cf_cv_main_return:-return}(1);
1255                                 } else if (value != mypointer[j]) {
1256                                         fprintf(stderr, "getenv returned different pointer for %s\\n", mynames[j]);
1257                                         ${cf_cv_main_return:-return}(1);
1258                                 } else if (strcmp(value, myvalues[j])) {
1259                                         fprintf(stderr, "getenv returned different value for %s\\n", mynames[j]);
1260                                         ${cf_cv_main_return:-return}(1);
1261                                 }
1262                         } else {
1263                                 size_t k;
1264                                 mypointer[j] = value;
1265                                 for (k = 0; k < j; ++k) {
1266                                         if (mypointer[j] == mypointer[k]) {
1267                                                 fprintf(stderr, "getenv returned same pointer for %s and %s\\n", mynames[j], mynames[k]);
1268                                                 ${cf_cv_main_return:-return}(1);
1269                                         }
1270                                 }
1271                         }
1272                 }
1273         }
1274         ${cf_cv_main_return:-return}(0);
1275 }
1276 ],
1277 [cf_cv_consistent_getenv=yes],
1278 [cf_cv_consistent_getenv=no],
1279 [cf_cv_consistent_getenv=unknown])
1280 ])
1281
1282 if test "x$cf_cv_consistent_getenv" = xno
1283 then
1284         AC_DEFINE(HAVE_CONSISTENT_GETENV,1,[Define to 1 if getenv repeatably returns the same value for a given name])
1285 fi
1286 ])dnl
1287 dnl ---------------------------------------------------------------------------
1288 dnl CF_CHECK_GNAT_VERSION version: 4 updated: 2021/01/01 13:31:04
1289 dnl ---------------------
1290 AC_DEFUN([CF_CHECK_GNAT_VERSION],
1291 [
1292 AC_REQUIRE([CF_GNAT_VERSION])
1293 case "$cf_cv_gnat_version" in
1294 (3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|[[1-9]][[0-9]].[[0-9]]*|20[[0-9]][[0-9]])
1295         cf_cv_prog_gnat_correct=yes
1296         ;;
1297 (*)
1298         AC_MSG_WARN(Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding.)
1299         cf_cv_prog_gnat_correct=no
1300         ;;
1301 esac
1302 ])
1303 dnl ---------------------------------------------------------------------------
1304 dnl CF_CHECK_GPM_WGETCH version: 6 updated: 2021/01/04 18:48:01
1305 dnl -------------------
1306 dnl Check if GPM is already linked with curses.  If so - and if the linkage
1307 dnl is not "weak" - warn about this because it can create problems linking
1308 dnl applications with ncurses.
1309 AC_DEFUN([CF_CHECK_GPM_WGETCH],[
1310 AC_REQUIRE([AC_PROG_EGREP])dnl
1311
1312 AC_CHECK_LIB(gpm,Gpm_Wgetch,[
1313
1314 AC_CACHE_CHECK(if GPM is weakly bound to curses library, cf_cv_check_gpm_wgetch,[
1315 cf_cv_check_gpm_wgetch=unknown
1316 if test "$cross_compiling" != yes ; then
1317
1318 cat >conftest.$ac_ext <<CF_EOF
1319 #include <gpm.h>
1320 int main(void)
1321 {
1322         Gpm_Wgetch();
1323         ${cf_cv_main_return:-return}(0);
1324 }
1325 CF_EOF
1326
1327         cf_save_LIBS="$LIBS"
1328         # This only works if we can look at the symbol table.  If a shared
1329         # library is stripped for install, we cannot use that.  So we're forced
1330         # to rely on the static library, noting that some packagers may not
1331         # include it.
1332         LIBS="-static -lgpm -dynamic $LIBS"
1333         if AC_TRY_EVAL(ac_compile) ; then
1334                 if AC_TRY_EVAL(ac_link) ; then
1335                         cf_cv_check_gpm_wgetch="`nm \"conftest$ac_exeext\" | ${EGREP-egrep} '\<wgetch\>' | ${EGREP-egrep} '\<[[vVwW]]\>'`"
1336                         test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes
1337                         test -z "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=no
1338                 fi
1339         fi
1340         rm -rf ./conftest*
1341         LIBS="$cf_save_LIBS"
1342 fi
1343 ])
1344
1345 if test "$cf_cv_check_gpm_wgetch" != yes ; then
1346         AC_MSG_WARN(GPM library is already linked with curses - read the FAQ)
1347 fi
1348 ])])dnl
1349 dnl ---------------------------------------------------------------------------
1350 dnl CF_CHECK_LIBSSP version: 1 updated: 2021/10/30 10:40:19
1351 dnl ---------------
1352 dnl Check if libssp is needed, e.g., to work around misconfigured libraries
1353 dnl used in cross-compiling to MinGW.
1354 AC_DEFUN([CF_CHECK_LIBSSP],[
1355 AC_CACHE_CHECK(if ssp library is needed,cf_cv_need_libssp,[
1356 AC_TRY_LINK([
1357 #include <sys/types.h>
1358 #include <dirent.h>
1359 ],[
1360        DIR *dp = opendir(".");
1361 ],cf_cv_need_libssp=no,[
1362         cf_save_LIBS="$LIBS"
1363         LIBS="$LIBS -lssp"
1364         AC_TRY_LINK([
1365 #include <sys/types.h>
1366 #include <dirent.h>
1367         ],[
1368                    DIR *dp = opendir(".");
1369         ],cf_cv_need_libssp=yes,
1370           cf_cv_need_libssp=maybe)
1371         LIBS="$cf_save_LIBS"
1372 ])dnl
1373 ])
1374
1375 if test "x$cf_cv_need_libssp" = xyes
1376 then
1377         CF_ADD_LIB(ssp)
1378 fi
1379 ])dnl
1380 dnl ---------------------------------------------------------------------------
1381 dnl CF_CHECK_LIBTOOL_VERSION version: 2 updated: 2021/05/01 16:24:34
1382 dnl ------------------------
1383 dnl Show the version of libtool
1384 dnl
1385 dnl Save the version in a cache variable - this is not entirely a good thing,
1386 dnl but the version string from libtool is very ugly, and for bug reports it
1387 dnl might be useful to have the original string.
1388 dnl
1389 dnl There is an imitation in OpenBSD, which has no apparent use other than to
1390 dnl deny that it is GNU libtool.  Just ignore it.
1391 AC_DEFUN([CF_CHECK_LIBTOOL_VERSION],[
1392 if test -n "$LIBTOOL" && test "$LIBTOOL" != none
1393 then
1394         AC_MSG_CHECKING(version of $LIBTOOL)
1395         CF_LIBTOOL_VERSION
1396         AC_MSG_RESULT($cf_cv_libtool_version)
1397         if test -n "$cf_cv_libtool_version"
1398         then
1399                 cf_check_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' -e 's,[[()]],...,g' -e 's,[[ ]],-,g' -e '2,$d'`
1400                 case "x$cf_check_libtool_version" in
1401                 (*...GNU-libtool...*)
1402                         ;;
1403                 (*)
1404                         AC_MSG_ERROR(This is not GNU libtool)
1405                         ;;
1406                 esac
1407         else
1408                 AC_MSG_ERROR(No version found for $LIBTOOL)
1409         fi
1410 else
1411         AC_MSG_ERROR(GNU libtool has not been found)
1412 fi
1413 ])dnl
1414 dnl ---------------------------------------------------------------------------
1415 dnl CF_CHECK_WCHAR_H version: 3 updated: 2021/01/01 13:31:04
1416 dnl ----------------
1417 dnl Check if wchar.h can be used, i.e., without defining _XOPEN_SOURCE_EXTENDED
1418 AC_DEFUN([CF_CHECK_WCHAR_H],[
1419 AC_CHECK_HEADERS( \
1420 wchar.h \
1421 wctype.h \
1422 )
1423 AC_CACHE_CHECK(if wchar.h can be used as is,cf_cv_wchar_h_okay,[
1424 AC_TRY_COMPILE(
1425 [
1426 #include <stdlib.h>
1427 #ifdef HAVE_WCHAR_H
1428 #include <wchar.h>
1429 #endif
1430 #ifdef HAVE_WCTYPE_H
1431 #include <wctype.h>
1432 #endif
1433 ],[
1434         wint_t foo = 0;
1435         int bar = iswpunct(foo)],
1436         [cf_cv_wchar_h_okay=yes],
1437         [cf_cv_wchar_h_okay=no])])
1438
1439 if test "$cf_cv_wchar_h_okay" = no
1440 then
1441         CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED)
1442 fi
1443 ])dnl
1444 dnl ---------------------------------------------------------------------------
1445 dnl CF_CHECK_WCWIDTH_GRAPHICS version: 2 updated: 2021/01/02 17:09:14
1446 dnl -------------------------
1447 dnl Most "modern" terminal emulators are based to some degree on VT100, and
1448 dnl should support line-drawing.  Even with Unicode.  There is a problem.
1449 dnl
1450 dnl While most of the VT100 graphics characters were incorporated into Unicode,
1451 dnl all of those were combined into a page of useful graphics characters.
1452 dnl
1453 dnl So far, so good.
1454 dnl
1455 dnl However, while they are useful, there are other considerations.  CJK
1456 dnl is (because of poor device resolution) often rendered as double-width
1457 dnl characters.  So... for these generally-useful characters, what should
1458 dnl be the width (to make them consistent with adjacent characters)?
1459 dnl
1460 dnl The obvious choice would have been to make this locale-dependent, and use
1461 dnl wcwidth() to tell applications what the actual width is.  That was too
1462 dnl obvious.  Instead, we have a slew of "ambiguous-width" characters.
1463 dnl See for example
1464 dnl             http://www.unicode.org/reports/tr11/tr11-29.html
1465 dnl             http://www.cl.cam.ac.uk/~mgk25/ucs/scw-proposal.html
1466 dnl
1467 dnl The EastAsianWidth-6.2.0.txt file from the Unicode organization lists
1468 dnl more than 22,000 characters, with 1281 of those as ambiguous-width.  For
1469 dnl instance, it lists half (44/96) of the Latin-1 characters as
1470 dnl ambiguous-width.  Also, all of the box-characters at 0x2500 are ambiguous.
1471 dnl
1472 dnl What this means for the implementor is that on some systems wcwidth() can
1473 dnl give bad advice.  On Solaris, some of the ambiguous widths are returned as
1474 dnl 1 (the Latin-1 characters), while others are returned as 2 (line-drawing
1475 dnl characters).  These do not necessarily match the behavior of the terminal
1476 dnl emulator.  xterm, for instance, does an optional startup check to find if
1477 dnl this problem (or similar) exists with the system's locale tables, rejecting
1478 dnl them if they are too unreliable.
1479 AC_DEFUN([CF_CHECK_WCWIDTH_GRAPHICS],[
1480 AC_CACHE_CHECK(if wcwidth agrees graphics are single-width, cf_cv_wcwidth_graphics,[
1481 cat >conftest.in <<CF_EOF
1482 -       VT100 symbols
1483 0x250c  upper left corner
1484 0x2514  lower left corner
1485 0x2510  upper right corner
1486 0x2518  lower right corner
1487 0x251c  tee pointing left
1488 0x2524  tee pointing right
1489 0x2534  tee pointing up
1490 0x252c  tee pointing down
1491 0x2500  horizontal line
1492 0x2502  vertical line
1493 0x253c  large plus or crossover
1494 0x23ba  scan line 1
1495 0x23bd  scan line 9
1496 0x25c6  diamond
1497 0x2592  checker board (stipple)
1498 0x00b0  degree symbol
1499 0x00b1  plus/minus
1500 0x00b7  bullet
1501 -       Teletype 5410v1 symbols
1502 0x2190  arrow pointing left
1503 0x2192  arrow pointing right
1504 0x2193  arrow pointing down
1505 0x2191  arrow pointing up
1506 0x2592  board of squares
1507 0x2603  lantern symbol
1508 0x25ae  solid square block
1509 -       these defaults were invented for ncurses
1510 0x23bb  scan line 3
1511 0x23bc  scan line 7
1512 0x2264  less-than-or-equal-to
1513 0x2265  greater-than-or-equal-to
1514 0x03c0  greek pi
1515 0x2260  not-equal
1516 0x00a3  pound-sterling symbol
1517 -       thick-line-drawing
1518 0x250f  upper left corner
1519 0x2517  lower left corner
1520 0x2513  upper right corner
1521 0x251b  lower right corner
1522 0x2523  tee pointing left
1523 0x252b  tee pointing right
1524 0x253b  tee pointing up
1525 0x2533  tee pointing down
1526 0x2501  horizontal line
1527 0x2503  vertical line
1528 0x254b  large plus or crossover
1529 -       double-line-drawing
1530 0x2554  upper left corner
1531 0x255a  lower left corner
1532 0x2557  upper right corner
1533 0x255d  lower right corner
1534 0x2563  tee pointing left
1535 0x2560  tee pointing right
1536 0x2569  tee pointing up
1537 0x2566  tee pointing down
1538 0x2550  horizontal line
1539 0x2551  vertical line
1540 0x256c  large plus or crossover
1541 CF_EOF
1542 AC_TRY_RUN([
1543 #include <locale.h>
1544 #include <stdio.h>
1545 #include <wchar.h>
1546
1547 #define MY_LEN 80
1548
1549 int
1550 main(void)
1551 {
1552         FILE *fp;
1553         int value;
1554         char buffer[MY_LEN + 1];
1555         char notes[MY_LEN + 1];
1556         int totals = 0;
1557         int passed = 0;
1558
1559         if (setlocale(LC_ALL, "en_US.UTF8") ||
1560                 setlocale(LC_ALL, "en_US.UTF-8") ||
1561                 setlocale(LC_ALL, "en_US.utf8") ||
1562                 setlocale(LC_ALL, "en_US.utf-8")) {
1563                 if ((fp = fopen("conftest.in", "r")) != 0) {
1564                         while (fgets(buffer, MY_LEN, fp) != 0) {
1565                                 if (*buffer == '-') {
1566                                         fprintf(stderr, "\\t%s", buffer);
1567                                 } else if (sscanf(buffer, "%x %s", &value, notes) == 2) {
1568                                         ++totals;
1569                                         if (wcwidth(value) == 1)
1570                                                 ++passed;
1571                                         fprintf(stderr, "%d\\t%s", wcwidth(value), buffer);
1572                                 } else {
1573                                         fprintf(stderr, "?\\t%s", buffer);
1574                                 }
1575                         }
1576                 }
1577         }
1578         fprintf(stderr, "%d/%d passed wcwidth/graphics check\\n", passed, totals);
1579         return (totals == passed) ? 0 : 1;
1580 }
1581 ],
1582 [cf_cv_wcwidth_graphics=yes],
1583 [cf_cv_wcwidth_graphics=no],
1584 [cf_cv_wcwidth_graphics=unknown])
1585 ])
1586 ])dnl
1587 dnl ---------------------------------------------------------------------------
1588 dnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04
1589 dnl -----------------
1590 dnl Check if the given compiler is really clang.  clang's C driver defines
1591 dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
1592 dnl not ignore some gcc options.
1593 dnl
1594 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
1595 dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
1596 dnl the wrappers for gcc and g++ warnings.
1597 dnl
1598 dnl $1 = GCC (default) or GXX
1599 dnl $2 = CLANG_COMPILER (default)
1600 dnl $3 = CFLAGS (default) or CXXFLAGS
1601 AC_DEFUN([CF_CLANG_COMPILER],[
1602 ifelse([$2],,CLANG_COMPILER,[$2])=no
1603
1604 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
1605         AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
1606         cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
1607         AC_TRY_COMPILE([],[
1608 #ifdef __clang__
1609 #else
1610 make an error
1611 #endif
1612 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
1613 ],[])
1614         ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
1615         AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
1616 fi
1617
1618 CLANG_VERSION=none
1619
1620 if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
1621         case "$CC" in
1622         (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]])
1623                 AC_MSG_WARN(replacing broken compiler alias $CC)
1624                 CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
1625                 CC=clang
1626                 ;;
1627         esac
1628
1629         AC_MSG_CHECKING(version of $CC)
1630         CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
1631         test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
1632         AC_MSG_RESULT($CLANG_VERSION)
1633
1634         for cf_clang_opt in \
1635                 -Qunused-arguments \
1636                 -Wno-error=implicit-function-declaration
1637         do
1638                 AC_MSG_CHECKING(if option $cf_clang_opt works)
1639                 cf_save_CFLAGS="$CFLAGS"
1640                 CFLAGS="$CFLAGS $cf_clang_opt"
1641                 AC_TRY_LINK([
1642                         #include <stdio.h>],[
1643                         printf("hello!\\n");],[
1644                         cf_clang_optok=yes],[
1645                         cf_clang_optok=no])
1646                 AC_MSG_RESULT($cf_clang_optok)
1647                 CFLAGS="$cf_save_CFLAGS"
1648                 if test "$cf_clang_optok" = yes; then
1649                         CF_VERBOSE(adding option $cf_clang_opt)
1650                         CF_APPEND_TEXT(CFLAGS,$cf_clang_opt)
1651                 fi
1652         done
1653 fi
1654 ])
1655 dnl ---------------------------------------------------------------------------
1656 dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
1657 dnl -----------------
1658 dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
1659 dnl character-strings.
1660 dnl
1661 dnl It is ambiguous because the specification accommodated the pre-ANSI
1662 dnl compilers bundled by more than one vendor in lieu of providing a standard C
1663 dnl compiler other than by costly add-ons.  Because of this, the specification
1664 dnl did not take into account the use of const for telling the compiler that
1665 dnl string literals would be in readonly memory.
1666 dnl
1667 dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
1668 dnl let the compiler decide how to represent Xt's strings which were #define'd.
1669 dnl That does not solve the problem of using the block of Xt's strings which
1670 dnl are compiled into the library (and is less efficient than one might want).
1671 dnl
1672 dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
1673 dnl when compiling the library and compiling using the library, to tell the
1674 dnl compiler that String is const.
1675 AC_DEFUN([CF_CONST_X_STRING],
1676 [
1677 AC_REQUIRE([AC_PATH_XTRA])
1678
1679 CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
1680
1681 AC_TRY_COMPILE(
1682 [
1683 #include <stdlib.h>
1684 #include <X11/Intrinsic.h>
1685 ],
1686 [String foo = malloc(1); free((void*)foo)],[
1687
1688 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
1689         AC_TRY_COMPILE(
1690                 [
1691 #define _CONST_X_STRING /* X11R7.8 (perhaps) */
1692 #undef  XTSTRINGDEFINES /* X11R5 and later */
1693 #include <stdlib.h>
1694 #include <X11/Intrinsic.h>
1695                 ],[String foo = malloc(1); *foo = 0],[
1696                         cf_cv_const_x_string=no
1697                 ],[
1698                         cf_cv_const_x_string=yes
1699                 ])
1700 ])
1701
1702 CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
1703
1704 case "$cf_cv_const_x_string" in
1705 (no)
1706         CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
1707         ;;
1708 (*)
1709         CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
1710         ;;
1711 esac
1712
1713 ])
1714 ])dnl
1715 dnl ---------------------------------------------------------------------------
1716 dnl CF_CPP_PARAM_INIT version: 7 updated: 2017/01/21 11:06:25
1717 dnl -----------------
1718 dnl Check if the C++ compiler accepts duplicate parameter initialization.  This
1719 dnl is a late feature for the standard and is not in some recent compilers
1720 dnl (1999/9/11).
1721 AC_DEFUN([CF_CPP_PARAM_INIT],
1722 [
1723 if test -n "$CXX"; then
1724 AC_CACHE_CHECK(if $CXX accepts parameter initialization,cf_cv_cpp_param_init,[
1725         AC_LANG_SAVE
1726         AC_LANG_CPLUSPLUS
1727         AC_TRY_RUN([
1728 class TEST {
1729 private:
1730         int value;
1731 public:
1732         TEST(int x = 1);
1733         ~TEST();
1734 };
1735
1736 TEST::TEST(int x = 1)   // some compilers do not like second initializer
1737 {
1738         value = x;
1739 }
1740 int main(void) { }
1741 ],
1742         [cf_cv_cpp_param_init=yes],
1743         [cf_cv_cpp_param_init=no],
1744         [cf_cv_cpp_param_init=unknown])
1745         AC_LANG_RESTORE
1746 ])
1747 fi
1748 test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT,1,[Define to 1 if C++ has parameter initialization])
1749 ])dnl
1750 dnl ---------------------------------------------------------------------------
1751 dnl CF_CPP_STATIC_CAST version: 3 updated: 2013/04/13 18:03:21
1752 dnl ------------------
1753 dnl Check if the C++ compiler accepts static_cast in generics.  This appears to
1754 dnl not be supported in g++ before 3.0
1755 AC_DEFUN([CF_CPP_STATIC_CAST],
1756 [
1757 if test -n "$CXX"; then
1758
1759 AC_CACHE_CHECK(if $CXX accepts static_cast,cf_cv_cpp_static_cast,[
1760         AC_LANG_SAVE
1761         AC_LANG_CPLUSPLUS
1762
1763         AC_TRY_COMPILE([
1764 class NCursesPanel
1765 {
1766 public:
1767   NCursesPanel(int nlines,
1768                int ncols,
1769                int begin_y = 0,
1770                int begin_x = 0)
1771   {
1772   }
1773   NCursesPanel();
1774   ~NCursesPanel();
1775 };
1776
1777 template<class T> class NCursesUserPanel : public NCursesPanel
1778 {
1779 public:
1780   NCursesUserPanel (int nlines,
1781                     int ncols,
1782                     int begin_y = 0,
1783                     int begin_x = 0,
1784                     const T* p_UserData = static_cast<T*>(0))
1785     : NCursesPanel (nlines, ncols, begin_y, begin_x)
1786   {
1787   };
1788   NCursesUserPanel(const T* p_UserData = static_cast<T*>(0)) : NCursesPanel()
1789   {
1790   };
1791
1792   virtual ~NCursesUserPanel() {};
1793 };
1794 ],[
1795         const char* p_UserData = static_cast<char*>(0)],
1796         [cf_cv_cpp_static_cast=yes],
1797         [cf_cv_cpp_static_cast=no])
1798
1799         AC_LANG_RESTORE
1800 ])
1801
1802 fi
1803
1804 test "$cf_cv_cpp_static_cast" = yes && AC_DEFINE(CPP_HAS_STATIC_CAST,1,[Define to 1 if C++ has static_cast])
1805 ])dnl
1806 dnl ---------------------------------------------------------------------------
1807 dnl CF_CXX_AR_FLAGS version: 3 updated: 2021/01/01 13:31:04
1808 dnl ---------------
1809 dnl Setup special archiver flags for given compilers.
1810 AC_DEFUN([CF_CXX_AR_FLAGS],[
1811         CXX_AR='$(AR)'
1812         CXX_ARFLAGS='$(ARFLAGS)'
1813         case "$cf_cv_system_name" in
1814         (irix*)
1815             if test "$GXX" != yes ; then
1816                 CXX_AR='$(CXX)'
1817                 CXX_ARFLAGS='-ar -o'
1818             fi
1819             ;;
1820         (sco3.2v5*)
1821             CXXLDFLAGS="-u main"
1822             ;;
1823         (solaris2*)
1824             if test "$GXX" != yes ; then
1825                 CXX_AR='$(CXX)'
1826                 CXX_ARFLAGS='-xar -o'
1827             fi
1828             ;;
1829         esac
1830         AC_SUBST(CXXLDFLAGS)
1831         AC_SUBST(CXX_AR)
1832         AC_SUBST(CXX_ARFLAGS)
1833 ])dnl
1834 dnl ---------------------------------------------------------------------------
1835 dnl CF_CXX_IOSTREAM_NAMESPACE version: 2 updated: 2012/10/06 17:56:13
1836 dnl -------------------------
1837 dnl For c++, check if iostream uses "std::" namespace.
1838 AC_DEFUN([CF_CXX_IOSTREAM_NAMESPACE],[
1839 AC_CHECK_HEADERS(iostream)
1840 if test x"$ac_cv_header_iostream" = xyes ; then
1841         AC_MSG_CHECKING(if iostream uses std-namespace)
1842         AC_TRY_COMPILE([
1843 #include <iostream>
1844 using std::endl;
1845 using std::cerr;],[
1846 cerr << "testing" << endl;
1847 ],[cf_iostream_namespace=yes],[cf_iostream_namespace=no])
1848         AC_MSG_RESULT($cf_iostream_namespace)
1849         if test "$cf_iostream_namespace" = yes ; then
1850                 AC_DEFINE(IOSTREAM_NAMESPACE,1,[Define to 1 if C++ has namespace iostream])
1851         fi
1852 fi
1853 ])dnl
1854 dnl ---------------------------------------------------------------------------
1855 dnl CF_C_INLINE version: 6 updated: 2019/09/07 13:38:36
1856 dnl -----------
1857 dnl Check if the C compiler supports "inline".
1858 dnl $1 is the name of a shell variable to set if inline is supported
1859 dnl $2 is the threshold for gcc 4.x's option controlling maximum inline size
1860 AC_DEFUN([CF_C_INLINE],[
1861 AC_REQUIRE([CF_GCC_VERSION])
1862 AC_C_INLINE
1863 $1=
1864 if test "$ac_cv_c_inline" != no ; then
1865         $1=inline
1866         if test "$INTEL_COMPILER" = yes
1867         then
1868                 :
1869         elif test "$CLANG_COMPILER" = yes
1870         then
1871                 :
1872         elif test "$GCC" = yes
1873         then
1874                 AC_CACHE_CHECK(if $CC supports options to tune inlining,cf_cv_gcc_inline,[
1875                 cf_save_CFLAGS=$CFLAGS
1876                 CFLAGS="$CFLAGS --param max-inline-insns-single=$2"
1877                 AC_TRY_COMPILE([inline int foo(void) { return 1; }],
1878                 [${cf_cv_main_return:-return} foo()],
1879                 [cf_cv_gcc_inline=yes],
1880                 [cf_cv_gcc_inline=no])
1881                 CFLAGS=$cf_save_CFLAGS
1882                 ])
1883                 if test "$cf_cv_gcc_inline" = yes ; then
1884                         CF_ADD_CFLAGS([--param max-inline-insns-single=$2])
1885                 fi
1886         fi
1887 fi
1888 AC_SUBST($1)
1889 ])dnl
1890 dnl ---------------------------------------------------------------------------
1891 dnl CF_DIRNAME version: 5 updated: 2020/12/31 20:19:42
1892 dnl ----------
1893 dnl "dirname" is not portable, so we fake it with a shell script.
1894 AC_DEFUN([CF_DIRNAME],[$1=`echo "$2" | sed -e 's%/[[^/]]*$%%'`])dnl
1895 dnl ---------------------------------------------------------------------------
1896 dnl CF_DIRS_TO_MAKE version: 4 updated: 2021/01/01 13:31:04
1897 dnl ---------------
1898 AC_DEFUN([CF_DIRS_TO_MAKE],
1899 [
1900 DIRS_TO_MAKE="lib"
1901 for cf_item in $cf_list_models
1902 do
1903         CF_OBJ_SUBDIR($cf_item,cf_subdir)
1904         for cf_item2 in $DIRS_TO_MAKE
1905         do
1906                 test "$cf_item2" = "$cf_subdir" && break
1907         done
1908         test ".$cf_item2" != ".$cf_subdir" && DIRS_TO_MAKE="$DIRS_TO_MAKE $cf_subdir"
1909 done
1910 for cf_dir in $DIRS_TO_MAKE
1911 do
1912         test ! -d "$cf_dir" && mkdir "$cf_dir"
1913 done
1914 AC_SUBST(DIRS_TO_MAKE)
1915 ])dnl
1916 dnl ---------------------------------------------------------------------------
1917 dnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04
1918 dnl ---------------
1919 dnl You can always use "make -n" to see the actual options, but it is hard to
1920 dnl pick out/analyze warning messages when the compile-line is long.
1921 dnl
1922 dnl Sets:
1923 dnl     ECHO_LT - symbol to control if libtool is verbose
1924 dnl     ECHO_LD - symbol to prefix "cc -o" lines
1925 dnl     RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
1926 dnl     SHOW_CC - symbol to put before explicit "cc -c" lines
1927 dnl     ECHO_CC - symbol to put before any "cc" line
1928 dnl
1929 AC_DEFUN([CF_DISABLE_ECHO],[
1930 AC_MSG_CHECKING(if you want to see long compiling messages)
1931 CF_ARG_DISABLE(echo,
1932         [  --disable-echo          do not display "compiling" commands],
1933         [
1934         ECHO_LT='--silent'
1935         ECHO_LD='@echo linking [$]@;'
1936         RULE_CC='@echo compiling [$]<'
1937         SHOW_CC='@echo compiling [$]@'
1938         ECHO_CC='@'
1939 ],[
1940         ECHO_LT=''
1941         ECHO_LD=''
1942         RULE_CC=''
1943         SHOW_CC=''
1944         ECHO_CC=''
1945 ])
1946 AC_MSG_RESULT($enableval)
1947 AC_SUBST(ECHO_LT)
1948 AC_SUBST(ECHO_LD)
1949 AC_SUBST(RULE_CC)
1950 AC_SUBST(SHOW_CC)
1951 AC_SUBST(ECHO_CC)
1952 ])dnl
1953 dnl ---------------------------------------------------------------------------
1954 dnl CF_DISABLE_GNAT_PROJECTS version: 1 updated: 2014/06/01 11:34:00
1955 dnl ------------------------
1956 AC_DEFUN([CF_DISABLE_GNAT_PROJECTS],[
1957 AC_MSG_CHECKING(if we want to use GNAT projects)
1958 CF_ARG_DISABLE(gnat-projects,
1959         [  --disable-gnat-projects test: disable GNAT projects even if usable],
1960         [enable_gnat_projects=no],
1961         [enable_gnat_projects=yes])
1962 AC_MSG_RESULT($enable_gnat_projects)
1963 ])dnl
1964 dnl ---------------------------------------------------------------------------
1965 dnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50
1966 dnl ----------------
1967 dnl Combine no-leak checks with the libraries or tools that are used for the
1968 dnl checks.
1969 AC_DEFUN([CF_DISABLE_LEAKS],[
1970
1971 AC_REQUIRE([CF_WITH_DMALLOC])
1972 AC_REQUIRE([CF_WITH_DBMALLOC])
1973 AC_REQUIRE([CF_WITH_VALGRIND])
1974
1975 AC_MSG_CHECKING(if you want to perform memory-leak testing)
1976 AC_ARG_ENABLE(leaks,
1977         [  --disable-leaks         test: free permanent memory, analyze leaks],
1978         [enable_leaks=$enableval],
1979         [enable_leaks=yes])
1980 dnl with_no_leaks is more readable...
1981 if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi
1982 AC_MSG_RESULT($with_no_leaks)
1983
1984 if test "$enable_leaks" = no ; then
1985         AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1986         AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1987 fi
1988 ])dnl
1989 dnl ---------------------------------------------------------------------------
1990 dnl CF_DISABLE_LIBTOOL_VERSION version: 3 updated: 2015/04/17 21:13:04
1991 dnl --------------------------
1992 dnl Check if we should use the libtool 1.5 feature "-version-number" instead of
1993 dnl the older "-version-info" feature.  The newer feature allows us to use
1994 dnl version numbering on shared libraries which make them compatible with
1995 dnl various systems.
1996 AC_DEFUN([CF_DISABLE_LIBTOOL_VERSION],
1997 [
1998 AC_MSG_CHECKING(if libtool -version-number should be used)
1999 CF_ARG_DISABLE(libtool-version,
2000         [  --disable-libtool-version  enable to use libtool's incompatible naming scheme],
2001         [cf_libtool_version=no],
2002         [cf_libtool_version=yes])
2003 AC_MSG_RESULT($cf_libtool_version)
2004
2005 if test "$cf_libtool_version" = yes ; then
2006         LIBTOOL_VERSION="-version-number"
2007 else
2008         LIBTOOL_VERSION="-version-info"
2009         case "x$VERSION" in
2010         (x)
2011                 AC_MSG_WARN(VERSION was not set)
2012                 ;;
2013         (x*.*.*)
2014                 ABI_VERSION="$VERSION"
2015                 CF_VERBOSE(ABI_VERSION: $ABI_VERSION)
2016                 ;;
2017         (x*:*:*)
2018                 ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'`
2019                 CF_VERBOSE(ABI_VERSION: $ABI_VERSION)
2020                 ;;
2021         (*)
2022                 AC_MSG_WARN(unexpected VERSION value: $VERSION)
2023                 ;;
2024         esac
2025 fi
2026
2027 AC_SUBST(ABI_VERSION)
2028 AC_SUBST(LIBTOOL_VERSION)
2029 ])dnl
2030 dnl ---------------------------------------------------------------------------
2031 dnl CF_DISABLE_RPATH_HACK version: 3 updated: 2021/01/05 20:14:44
2032 dnl ---------------------
2033 dnl The rpath-hack makes it simpler to build programs, particularly with the
2034 dnl *BSD ports which may have essential libraries in unusual places.  But it
2035 dnl can interfere with building an executable for the base system.  Use this
2036 dnl option in that case.
2037 AC_DEFUN([CF_DISABLE_RPATH_HACK],
2038 [
2039 AC_MSG_CHECKING(if rpath-hack should be disabled)
2040 CF_ARG_DISABLE(rpath-hack,
2041         [  --disable-rpath-hack    don't add rpath options for additional libraries],
2042         [enable_rpath_hack=no],
2043         [enable_rpath_hack=yes])
2044 dnl TODO - drop cf_disable_rpath_hack
2045 if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi
2046 AC_MSG_RESULT($cf_disable_rpath_hack)
2047
2048 if test "$enable_rpath_hack" = yes ; then
2049         CF_RPATH_HACK
2050 fi
2051 ])
2052 dnl ---------------------------------------------------------------------------
2053 dnl CF_ENABLE_BROKEN_LINKER version: 2 updated: 2021/01/02 17:09:14
2054 dnl -----------------------
2055 dnl Some linkers cannot reference a data-only object.  Cygwin used to be one.
2056 dnl This usually follows CF_LINK_DATAONLY, but is not required in case we need
2057 dnl an unconditional feature.
2058 AC_DEFUN([CF_ENABLE_BROKEN_LINKER],[
2059
2060 AC_MSG_CHECKING(if you want broken-linker support code)
2061 AC_ARG_ENABLE(broken_linker,
2062         [  --enable-broken_linker  compile with broken-linker support code],
2063         [with_broken_linker=$enableval],
2064         [with_broken_linker=no])
2065 AC_MSG_RESULT($with_broken_linker)
2066
2067 : "${BROKEN_LINKER:=0}"
2068 if test "x$with_broken_linker" = xyes ; then
2069         AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
2070         BROKEN_LINKER=1
2071 fi
2072 AC_SUBST(BROKEN_LINKER)
2073 ])dnl
2074 dnl ---------------------------------------------------------------------------
2075 dnl CF_ENABLE_PC_FILES version: 16 updated: 2021/11/20 12:48:37
2076 dnl ------------------
2077 dnl This is the "--enable-pc-files" option, which is available if there is a
2078 dnl pkg-config configuration on the local machine.
2079 AC_DEFUN([CF_ENABLE_PC_FILES],[
2080 AC_REQUIRE([CF_PKG_CONFIG])
2081 AC_REQUIRE([CF_WITH_PKG_CONFIG_LIBDIR])
2082
2083 if test "x$PKG_CONFIG" != xnone
2084 then
2085         AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG)
2086 else
2087         AC_MSG_CHECKING(if we should install .pc files)
2088 fi
2089
2090 AC_ARG_ENABLE(pc-files,
2091         [  --enable-pc-files       generate and install .pc files for pkg-config],
2092         [enable_pc_files=$enableval],
2093         [enable_pc_files=no])
2094 AC_MSG_RESULT($enable_pc_files)
2095
2096 if test "x$enable_pc_files" != xno
2097 then
2098         MAKE_PC_FILES=
2099         case "x$PKG_CONFIG_LIBDIR" in
2100         (xno|xnone|xyes|x)
2101                 AC_MSG_WARN(no PKG_CONFIG_LIBDIR was found)
2102                 ;;
2103         (*)
2104                 cf_pkg_config_libdir="$PKG_CONFIG_LIBDIR"
2105                 CF_PATH_SYNTAX(cf_pkg_config_libdir)
2106                 ;;
2107         esac
2108 else
2109         MAKE_PC_FILES="#"
2110 fi
2111 AC_SUBST(MAKE_PC_FILES)
2112 ])dnl
2113 dnl ---------------------------------------------------------------------------
2114 dnl CF_ENABLE_RPATH version: 2 updated: 2010/03/27 18:39:42
2115 dnl ---------------
2116 dnl Check if the rpath option should be used, setting cache variable
2117 dnl cf_cv_enable_rpath if so.
2118 AC_DEFUN([CF_ENABLE_RPATH],
2119 [
2120 AC_MSG_CHECKING(if rpath option should be used)
2121 AC_ARG_ENABLE(rpath,
2122 [  --enable-rpath          use rpath option when generating shared libraries],
2123 [cf_cv_enable_rpath=$enableval],
2124 [cf_cv_enable_rpath=no])
2125 AC_MSG_RESULT($cf_cv_enable_rpath)
2126 ])dnl
2127 dnl ---------------------------------------------------------------------------
2128 dnl CF_ENABLE_STRING_HACKS version: 6 updated: 2021/01/05 19:23:48
2129 dnl ----------------------
2130 dnl On a few platforms, the compiler and/or loader nags with untruthful
2131 dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
2132 dnl and implying that most uses of the recommended alternatives are correct.
2133 dnl
2134 dnl Factually speaking, no one has actually counted the number of uses of these
2135 dnl functions versus the total of incorrect uses.  Samples of a few thousand
2136 dnl instances are meaningless compared to the hundreds of millions of lines of
2137 dnl existing C code.
2138 dnl
2139 dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some
2140 dnl platforms, in implementations of varying quality.  Likewise, snprintf is
2141 dnl standard - but evolved through phases, and older implementations are likely
2142 dnl to yield surprising results, as documented in manpages on various systems.
2143 AC_DEFUN([CF_ENABLE_STRING_HACKS],
2144 [
2145 AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings)
2146 AC_ARG_ENABLE(string-hacks,
2147         [  --enable-string-hacks   work around bogus compiler/loader warnings],
2148         [enable_string_hacks=$enableval],
2149         [enable_string_hacks=no])
2150 AC_MSG_RESULT($enable_string_hacks)
2151
2152 if test "x$enable_string_hacks" = "xyes"; then
2153         AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings])
2154         AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
2155         AC_CHECK_FUNC(strlcat,[
2156                 AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
2157                 ],[
2158                 AC_CHECK_LIB(bsd,strlcat,[
2159                         CF_ADD_LIB(bsd)
2160                         AC_CHECK_HEADERS(bsd/string.h)
2161                         AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
2162                         ])
2163                 ])
2164         AC_CHECK_FUNCS( strlcpy snprintf )
2165 fi
2166 ])dnl
2167 dnl ---------------------------------------------------------------------------
2168 dnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50
2169 dnl ------------------
2170 dnl Configure-option to enable gcc warnings
2171 dnl
2172 dnl $1 = extra options to add, if supported
2173 dnl $2 = option for checking attributes.  By default, this is done when
2174 dnl      warnings are enabled.  For other values:
2175 dnl      yes: always do this, e.g., to use in generated library-headers
2176 dnl      no: never do this
2177 AC_DEFUN([CF_ENABLE_WARNINGS],[
2178 if test "$GCC" = yes || test "$GXX" = yes
2179 then
2180 CF_FIX_WARNINGS(CFLAGS)
2181 CF_FIX_WARNINGS(CPPFLAGS)
2182 CF_FIX_WARNINGS(LDFLAGS)
2183 AC_MSG_CHECKING(if you want to turn on gcc warnings)
2184 CF_ARG_ENABLE(warnings,
2185         [  --enable-warnings       test: turn on gcc compiler warnings],
2186         [enable_warnings=yes],
2187         [enable_warnings=no])
2188 AC_MSG_RESULT($enable_warnings)
2189 if test "$enable_warnings" = "yes"
2190 then
2191         ifelse($2,,[CF_GCC_ATTRIBUTES])
2192         CF_GCC_WARNINGS($1)
2193 fi
2194 ifelse($2,yes,[CF_GCC_ATTRIBUTES])
2195 fi
2196 ])dnl
2197 dnl ---------------------------------------------------------------------------
2198 dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39
2199 dnl --------
2200 dnl Check if 'errno' is declared in <errno.h>
2201 AC_DEFUN([CF_ERRNO],
2202 [
2203 CF_CHECK_ERRNO(errno)
2204 ])dnl
2205 dnl ---------------------------------------------------------------------------
2206 dnl CF_ETIP_DEFINES version: 6 updated: 2021/01/02 17:09:14
2207 dnl ---------------
2208 dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between
2209 dnl math.h and builtin.h, only for ncurses
2210 AC_DEFUN([CF_ETIP_DEFINES],
2211 [
2212 AC_MSG_CHECKING(for special defines needed for etip.h)
2213 cf_save_CXXFLAGS="$CXXFLAGS"
2214 cf_result="none"
2215
2216 # etip.h includes ncurses.h which includes ncurses_dll.h
2217 # But ncurses_dll.h is generated - fix here.
2218 test -d include || mkdir include
2219 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
2220
2221 for cf_math in "" MATH_H
2222 do
2223 for cf_excp in "" MATH_EXCEPTION
2224 do
2225         CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -Iinclude -I${srcdir}/include"
2226         test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
2227         test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
2228 AC_TRY_COMPILE([
2229 #include <etip.h.in>
2230 ],[],[
2231         test -n "$cf_math" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_math})
2232         test -n "$cf_excp" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_excp})
2233         cf_result="$cf_math $cf_excp"
2234         break 2
2235 ],[])
2236 done
2237 done
2238 AC_MSG_RESULT($cf_result)
2239 CXXFLAGS="$cf_save_CXXFLAGS"
2240 ])
2241 dnl ---------------------------------------------------------------------------
2242 dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42
2243 dnl ---------------
2244 dnl Find a library (specifically the linkage used in the code fragment),
2245 dnl searching for it if it is not already in the library path.
2246 dnl See also CF_ADD_SEARCHPATH.
2247 dnl
2248 dnl Parameters (4-on are optional):
2249 dnl     $1 = headers for library entrypoint
2250 dnl     $2 = code fragment for library entrypoint
2251 dnl     $3 = the library name without the "-l" option or ".so" suffix.
2252 dnl     $4 = action to perform if successful (default: update CPPFLAGS, etc)
2253 dnl     $5 = action to perform if not successful
2254 dnl     $6 = module name, if not the same as the library name
2255 dnl     $7 = extra libraries
2256 dnl
2257 dnl Sets these variables:
2258 dnl     $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found
2259 dnl     $cf_cv_header_path_$3 - include-directory if needed
2260 dnl     $cf_cv_library_path_$3 - library-directory if needed
2261 dnl     $cf_cv_library_file_$3 - library-file if needed, e.g., -l$3
2262 AC_DEFUN([CF_FIND_LINKAGE],[
2263
2264 # If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these
2265 # will be set on completion of the AC_TRY_LINK below.
2266 cf_cv_header_path_$3=
2267 cf_cv_library_path_$3=
2268
2269 CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)])
2270
2271 cf_save_LIBS="$LIBS"
2272
2273 AC_TRY_LINK([$1],[$2],[
2274         cf_cv_find_linkage_$3=yes
2275         cf_cv_header_path_$3=/usr/include
2276         cf_cv_library_path_$3=/usr/lib
2277 ],[
2278
2279 LIBS="-l$3 $7 $cf_save_LIBS"
2280
2281 AC_TRY_LINK([$1],[$2],[
2282         cf_cv_find_linkage_$3=yes
2283         cf_cv_header_path_$3=/usr/include
2284         cf_cv_library_path_$3=/usr/lib
2285         cf_cv_library_file_$3="-l$3"
2286 ],[
2287         cf_cv_find_linkage_$3=no
2288         LIBS="$cf_save_LIBS"
2289
2290         CF_VERBOSE(find linkage for $3 library)
2291         CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
2292
2293         cf_save_CPPFLAGS="$CPPFLAGS"
2294         cf_test_CPPFLAGS="$CPPFLAGS"
2295
2296         CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
2297         for cf_cv_header_path_$3 in $cf_search
2298         do
2299                 if test -d "$cf_cv_header_path_$3" ; then
2300                         CF_VERBOSE(... testing $cf_cv_header_path_$3)
2301                         CPPFLAGS="$cf_save_CPPFLAGS"
2302                         CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3)
2303                         AC_TRY_COMPILE([$1],[$2],[
2304                                 CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
2305                                 cf_cv_find_linkage_$3=maybe
2306                                 cf_test_CPPFLAGS="$CPPFLAGS"
2307                                 break],[
2308                                 CPPFLAGS="$cf_save_CPPFLAGS"
2309                                 ])
2310                 fi
2311         done
2312
2313         if test "$cf_cv_find_linkage_$3" = maybe ; then
2314
2315                 CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
2316
2317                 cf_save_LIBS="$LIBS"
2318                 cf_save_LDFLAGS="$LDFLAGS"
2319
2320                 ifelse([$6],,,[
2321                 CPPFLAGS="$cf_test_CPPFLAGS"
2322                 LIBS="-l$3 $7 $cf_save_LIBS"
2323                 AC_TRY_LINK([$1],[$2],[
2324                         CF_VERBOSE(... found $3 library in system)
2325                         cf_cv_find_linkage_$3=yes])
2326                         CPPFLAGS="$cf_save_CPPFLAGS"
2327                         LIBS="$cf_save_LIBS"
2328                         ])
2329
2330                 if test "$cf_cv_find_linkage_$3" != yes ; then
2331                         CF_LIBRARY_PATH(cf_search,$3)
2332                         for cf_cv_library_path_$3 in $cf_search
2333                         do
2334                                 if test -d "$cf_cv_library_path_$3" ; then
2335                                         CF_VERBOSE(... testing $cf_cv_library_path_$3)
2336                                         CPPFLAGS="$cf_test_CPPFLAGS"
2337                                         LIBS="-l$3 $7 $cf_save_LIBS"
2338                                         LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
2339                                         AC_TRY_LINK([$1],[$2],[
2340                                         CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
2341                                         cf_cv_find_linkage_$3=yes
2342                                         cf_cv_library_file_$3="-l$3"
2343                                         break],[
2344                                         CPPFLAGS="$cf_save_CPPFLAGS"
2345                                         LIBS="$cf_save_LIBS"
2346                                         LDFLAGS="$cf_save_LDFLAGS"
2347                                         ])
2348                                 fi
2349                         done
2350                         CPPFLAGS="$cf_save_CPPFLAGS"
2351                         LDFLAGS="$cf_save_LDFLAGS"
2352                 fi
2353
2354         else
2355                 cf_cv_find_linkage_$3=no
2356         fi
2357         ],$7)
2358 ])
2359
2360 LIBS="$cf_save_LIBS"
2361
2362 if test "$cf_cv_find_linkage_$3" = yes ; then
2363 ifelse([$4],,[
2364         CF_ADD_INCDIR($cf_cv_header_path_$3)
2365         CF_ADD_LIBDIR($cf_cv_library_path_$3)
2366         CF_ADD_LIB($3)
2367 ],[$4])
2368 else
2369 ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
2370 fi
2371 ])dnl
2372 dnl ---------------------------------------------------------------------------
2373 dnl CF_FIND_SUB_INCDIR version: 3 updated: 2021/01/01 13:31:04
2374 dnl ------------------
2375 dnl Find an include-directory with the given leaf-name.  This is useful for
2376 dnl example with FreeBSD ports, which use this convention to distinguish
2377 dnl different versions of the same port.
2378 AC_DEFUN([CF_FIND_SUB_INCDIR],[
2379         CF_SUBDIR_PATH(cf_search,$1,include)
2380         for cf_item in $cf_search
2381         do
2382                 case "$cf_item" in
2383                 (*/$1)
2384                         CF_ADD_INCDIR($cf_item)
2385                         ;;
2386                 esac
2387         done
2388 ])dnl
2389 dnl ---------------------------------------------------------------------------
2390 dnl CF_FIND_SUB_LIBDIR version: 3 updated: 2021/01/01 13:31:04
2391 dnl ------------------
2392 dnl Find a library-directory with the given leaf-name.  This is useful for
2393 dnl example with FreeBSD ports, which use this convention to distinguish
2394 dnl different versions of the same port.
2395 AC_DEFUN([CF_FIND_SUB_LIBDIR],[
2396         CF_SUBDIR_PATH(cf_search,$1,lib)
2397         for cf_item in $cf_search
2398         do
2399                 case "$cf_item" in
2400                 (*/$1)
2401                         CF_ADD_LIBDIR($cf_item)
2402                         ;;
2403                 esac
2404         done
2405 ])dnl
2406 dnl ---------------------------------------------------------------------------
2407 dnl CF_FIXUP_ADAFLAGS version: 2 updated: 2015/04/17 21:13:04
2408 dnl -----------------
2409 dnl make ADAFLAGS consistent with CFLAGS
2410 AC_DEFUN([CF_FIXUP_ADAFLAGS],[
2411         AC_MSG_CHECKING(optimization options for ADAFLAGS)
2412         case "$CFLAGS" in
2413         (*-g*)
2414                 CF_ADD_ADAFLAGS(-g)
2415                 ;;
2416         esac
2417         case "$CFLAGS" in
2418         (*-O*)
2419                 cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[[        ]].*//'`
2420                 CF_ADD_ADAFLAGS($cf_O_flag)
2421                 ;;
2422         esac
2423         AC_MSG_RESULT($ADAFLAGS)
2424 ])dnl
2425 dnl ---------------------------------------------------------------------------
2426 dnl CF_FIX_WARNINGS version: 3 updated: 2020/12/31 18:40:20
2427 dnl ---------------
2428 dnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc.  Any of gcc's
2429 dnl "-Werror" flags can interfere with configure-checks.  Those go into
2430 dnl EXTRA_CFLAGS.
2431 dnl
2432 dnl $1 = variable name to repair
2433 define([CF_FIX_WARNINGS],[
2434 if test "$GCC" = yes || test "$GXX" = yes
2435 then
2436         case [$]$1 in
2437         (*-Werror=*)
2438                 CF_VERBOSE(repairing $1: [$]$1)
2439                 cf_temp_flags=
2440                 for cf_temp_scan in [$]$1
2441                 do
2442                         case "x$cf_temp_scan" in
2443                         (x-Werror=*)
2444                                 CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan)
2445                                 ;;
2446                         (*)
2447                                 CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
2448                                 ;;
2449                         esac
2450                 done
2451                 $1="$cf_temp_flags"
2452                 CF_VERBOSE(... fixed [$]$1)
2453                 CF_VERBOSE(... extra $EXTRA_CFLAGS)
2454                 ;;
2455         esac
2456 fi
2457 AC_SUBST(EXTRA_CFLAGS)
2458 ])dnl
2459 dnl ---------------------------------------------------------------------------
2460 dnl CF_FOPEN_BIN_R version: 2 updated: 2019/12/31 08:53:54
2461 dnl --------------
2462 dnl Check if fopen works when the "b" (binary) flag is added to the mode
2463 dnl parameter.  POSIX ignores the "b", which c89 specified.  Some very old
2464 dnl systems do not accept it.
2465 AC_DEFUN([CF_FOPEN_BIN_R],[
2466 AC_CACHE_CHECK(if fopen accepts explicit binary mode,cf_cv_fopen_bin_r,[
2467         AC_TRY_RUN([
2468 #include <stdio.h>
2469 int main(void) {
2470         FILE *fp = fopen("conftest.tmp", "wb");
2471         int rc = 0;
2472         if (fp != 0) {
2473                 int p, q;
2474                 for (p = 0; p < 256; ++p) {
2475                         fputc(p, fp);
2476                 }
2477                 fclose(fp);
2478                 fp = fopen("conftest.tmp", "rb");
2479                 if (fp != 0) {
2480                         for (p = 0; p < 256; ++p) {
2481                                 q = fgetc(fp);
2482                                 if (q != p) {
2483                                         rc = 1;
2484                                         break;
2485                                 }
2486                         }
2487                 } else {
2488                         rc = 1;
2489                 }
2490         } else {
2491                 rc = 1;
2492         }
2493         ${cf_cv_main_return:-return} (rc);
2494 }
2495 ],
2496                 [cf_cv_fopen_bin_r=yes],
2497                 [cf_cv_fopen_bin_r=no],
2498                 [cf_cv_fopen_bin_r=unknown])
2499 ])
2500 test "x$cf_cv_fopen_bin_r" != xno && AC_DEFINE(USE_FOPEN_BIN_R,1,[Define to 1 if fopen accepts explicit binary mode])
2501 ])dnl
2502 dnl ---------------------------------------------------------------------------
2503 dnl CF_FORGET_TOOL version: 1 updated: 2013/04/06 18:03:09
2504 dnl --------------
2505 dnl Forget that we saw the given tool.
2506 AC_DEFUN([CF_FORGET_TOOL],[
2507 unset ac_cv_prog_ac_ct_$1
2508 unset ac_ct_$1
2509 unset $1
2510 ])dnl
2511 dnl ---------------------------------------------------------------------------
2512 dnl CF_FUNC_DLSYM version: 4 updated: 2015/09/12 14:46:44
2513 dnl -------------
2514 dnl Test for dlsym() and related functions, as well as libdl.
2515 dnl
2516 dnl Sets
2517 dnl     $cf_have_dlsym
2518 dnl     $cf_have_libdl
2519 AC_DEFUN([CF_FUNC_DLSYM],[
2520 cf_have_dlsym=no
2521 AC_CHECK_FUNC(dlsym,cf_have_dlsym=yes,[
2522
2523 cf_have_libdl=no
2524 AC_CHECK_LIB(dl,dlsym,[
2525         cf_have_dlsym=yes
2526         cf_have_libdl=yes])])
2527
2528 if test "$cf_have_dlsym" = yes ; then
2529         test "$cf_have_libdl" = yes && { CF_ADD_LIB(dl) }
2530
2531         AC_MSG_CHECKING(whether able to link to dl*() functions)
2532         AC_TRY_LINK([#include <dlfcn.h>],[
2533                 void *obj;
2534                 if ((obj = dlopen("filename", 0)) != 0) {
2535                         if (dlsym(obj, "symbolname") == 0) {
2536                         dlclose(obj);
2537                         }
2538                 }],[
2539                 AC_DEFINE(HAVE_LIBDL,1,[Define to 1 if we have dl library])],[
2540                 AC_MSG_ERROR(Cannot link test program for libdl)])
2541         AC_MSG_RESULT(ok)
2542 else
2543         AC_MSG_ERROR(Cannot find dlsym function)
2544 fi
2545 ])
2546 dnl ---------------------------------------------------------------------------
2547 dnl CF_FUNC_GETTTYNAM version: 1 updated: 2021/12/04 18:29:47
2548 dnl -----------------
2549 dnl Check if the 4.3BSD function getttyname exists, as well as if <ttyent.h>
2550 dnl defines the _PATH_TTYS symbol.  If the corresponding file exists, but the
2551 dnl other checks fail, just define HAVE_PATH_TTYS.
2552 AC_DEFUN([CF_FUNC_GETTTYNAM],[
2553 AC_CACHE_CHECK(if _PATH_TTYS is defined in ttyent.h,cf_cv_PATH_TTYS,[
2554 AC_TRY_COMPILE([
2555 #include <stdio.h>
2556 #include <ttyent.h>],[
2557 FILE *fp = fopen(_PATH_TTYS, "r"); (void)fp],
2558         [cf_cv_PATH_TTYS=yes],
2559         [cf_cv_PATH_TTYS=no])])
2560
2561 if test $cf_cv_PATH_TTYS = no
2562 then
2563         for cf_ttys in /etc/ttytype /etc/ttys
2564         do
2565                 if test -f $cf_ttys
2566                 then
2567                         cf_cv_PATH_TTYS=maybe
2568                         AC_DEFINE(_PATH_TTYS,$cf_ttys,[define to pathname of file containing mapping from tty name to terminal type])
2569                         break
2570                 fi
2571         done
2572 fi
2573
2574 if test $cf_cv_PATH_TTYS != no
2575 then
2576         AC_CACHE_CHECK(if _PATH_TTYS file exists,cf_cv_have_PATH_TTYS,[
2577                 AC_TRY_RUN([
2578 #include <stdio.h>
2579 #include <ttyent.h>
2580 int main(void) {
2581         FILE *fp = fopen(_PATH_TTYS, "r");
2582         ${cf_cv_main_return:-return} (fp == 0);
2583 }],
2584                         [cf_cv_have_PATH_TTYS=yes],
2585                         [cf_cv_have_PATH_TTYS=no],
2586                         [cf_cv_have_PATH_TTYS=unknown])])
2587         test "$cf_cv_have_PATH_TTYS" = no && cf_cv_PATH_TTYS=no
2588 fi
2589
2590 if test $cf_cv_PATH_TTYS != no
2591 then
2592         AC_DEFINE(HAVE_PATH_TTYS,1,[define to 1 if system can map tty name to terminal type])
2593         AC_CACHE_CHECK(for getttynam,cf_cv_func_getttynam,[
2594                 AC_TRY_LINK([#include <ttyent.h>],
2595                 [struct ttyent *fp = getttynam("/dev/tty"); (void)fp],
2596                 [cf_cv_func_getttynam=yes],
2597                 [cf_cv_func_getttynam=no])])
2598         test "$cf_cv_func_getttynam" = yes && AC_DEFINE(HAVE_GETTTYNAM)
2599 fi
2600 ])dnl
2601 dnl ---------------------------------------------------------------------------
2602 dnl CF_FUNC_MEMMOVE version: 9 updated: 2017/01/21 11:06:25
2603 dnl ---------------
2604 dnl Check for memmove, or a bcopy that can handle overlapping copy.  If neither
2605 dnl is found, add our own version of memmove to the list of objects.
2606 AC_DEFUN([CF_FUNC_MEMMOVE],
2607 [
2608 AC_CHECK_FUNC(memmove,,[
2609 AC_CHECK_FUNC(bcopy,[
2610         AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[
2611                 AC_TRY_RUN([
2612 int main(void) {
2613         static char data[] = "abcdefghijklmnopqrstuwwxyz";
2614         char temp[40];
2615         bcopy(data, temp, sizeof(data));
2616         bcopy(temp+10, temp, 15);
2617         bcopy(temp+5, temp+15, 10);
2618         ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
2619 }
2620                 ],
2621                 [cf_cv_good_bcopy=yes],
2622                 [cf_cv_good_bcopy=no],
2623                 [cf_cv_good_bcopy=unknown])
2624                 ])
2625         ],[cf_cv_good_bcopy=no])
2626         if test "$cf_cv_good_bcopy" = yes ; then
2627                 AC_DEFINE(USE_OK_BCOPY,1,[Define to 1 to use bcopy when memmove is unavailable])
2628         else
2629                 AC_DEFINE(USE_MY_MEMMOVE,1,[Define to 1 to use replacement function when memmove is unavailable])
2630         fi
2631 ])])dnl
2632 dnl ---------------------------------------------------------------------------
2633 dnl CF_FUNC_NANOSLEEP version: 5 updated: 2017/01/21 11:06:25
2634 dnl -----------------
2635 dnl Check for existence of workable nanosleep() function.  Some systems, e.g.,
2636 dnl AIX 4.x, provide a non-working version.
2637 AC_DEFUN([CF_FUNC_NANOSLEEP],[
2638 AC_CACHE_CHECK(if nanosleep really works,cf_cv_func_nanosleep,[
2639 AC_TRY_RUN([
2640 #include <stdio.h>
2641 #include <errno.h>
2642 #include <time.h>
2643
2644 #ifdef HAVE_SYS_TIME_H
2645 #include <sys/time.h>
2646 #endif
2647
2648 int main(void) {
2649         struct timespec ts1, ts2;
2650         int code;
2651         ts1.tv_sec  = 0;
2652         ts1.tv_nsec = 750000000;
2653         ts2.tv_sec  = 0;
2654         ts2.tv_nsec = 0;
2655         errno = 0;
2656         code = nanosleep(&ts1, &ts2); /* on failure errno is ENOSYS. */
2657         ${cf_cv_main_return:-return}(code != 0);
2658 }
2659 ],
2660         [cf_cv_func_nanosleep=yes],
2661         [cf_cv_func_nanosleep=no],
2662         [cf_cv_func_nanosleep=unknown])])
2663
2664 test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP,1,[Define to 1 if we have nanosleep()])
2665 ])
2666 dnl ---------------------------------------------------------------------------
2667 dnl CF_FUNC_OPENPTY version: 6 updated: 2021/01/01 13:31:04
2668 dnl ---------------
2669 dnl Check for openpty() function, along with <pty.h> header.  It may need the
2670 dnl "util" library as well.
2671 AC_DEFUN([CF_FUNC_OPENPTY],
2672 [
2673 AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no)
2674 AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
2675         cf_save_LIBS="$LIBS"
2676         test "$cf_cv_lib_util" = yes && { CF_ADD_LIB(util) }
2677         for cf_header in pty.h libutil.h util.h
2678         do
2679         AC_TRY_LINK([
2680 #include <$cf_header>
2681 ],[
2682         int x = openpty((int *)0, (int *)0, (char *)0,
2683                                    (struct termios *)0, (struct winsize *)0);
2684 ],[
2685                 cf_cv_func_openpty=$cf_header
2686                 break
2687 ],[
2688                 cf_cv_func_openpty=no
2689 ])
2690         done
2691         LIBS="$cf_save_LIBS"
2692 ])
2693 ])dnl
2694 dnl ---------------------------------------------------------------------------
2695 dnl CF_FUNC_POLL version: 10 updated: 2021/01/04 19:13:57
2696 dnl ------------
2697 dnl See if the poll function really works.  Some platforms have poll(), but
2698 dnl it does not work for terminals or files.
2699 AC_DEFUN([CF_FUNC_POLL],[
2700 tty >/dev/null 2>&1 || { AC_CHECK_FUNCS(posix_openpt) }
2701 AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[
2702 AC_TRY_RUN([
2703 #include <stdlib.h>
2704 #include <stdio.h>
2705 #include <unistd.h>
2706 #include <fcntl.h>
2707 #ifdef HAVE_POLL_H
2708 #include <poll.h>
2709 #else
2710 #include <sys/poll.h>
2711 #endif
2712 int main(void) {
2713         struct pollfd myfds;
2714         int ret;
2715
2716         /* check for Darwin bug with respect to "devices" */
2717         myfds.fd = open("/dev/null", 1);        /* O_WRONLY */
2718         if (myfds.fd < 0)
2719                 myfds.fd = 0;
2720         myfds.events = POLLIN;
2721         myfds.revents = 0;
2722
2723         ret = poll(&myfds, 1, 100);
2724
2725         if (ret < 0 || (myfds.revents & POLLNVAL)) {
2726                 ret = -1;
2727         } else {
2728                 int fd = 0;
2729                 if (!isatty(fd)) {
2730                         fd = open("/dev/tty", 2);       /* O_RDWR */
2731                 }
2732 #ifdef HAVE_POSIX_OPENPT
2733                 if (fd < 0) {
2734                         fd = posix_openpt(O_RDWR);
2735                 }
2736 #endif
2737
2738                 if (fd >= 0) {
2739                         /* also check with standard input */
2740                         myfds.fd = fd;
2741                         myfds.events = POLLIN;
2742                         myfds.revents = 0;
2743                         ret = poll(&myfds, 1, 100);
2744                 } else {
2745                         ret = -1;
2746                 }
2747         }
2748         ${cf_cv_main_return:-return}(ret < 0);
2749 }],
2750         [cf_cv_working_poll=yes],
2751         [cf_cv_working_poll=no],
2752         [cf_cv_working_poll=unknown])])
2753 test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL,1,[Define to 1 if the poll function seems to work])
2754 ])dnl
2755 dnl ---------------------------------------------------------------------------
2756 dnl CF_FUNC_TERMIOS version: 3 updated: 2012/10/06 17:56:13
2757 dnl ---------------
2758 dnl Some old/broken variations define tcgetattr() only as a macro in
2759 dnl termio(s).h
2760 AC_DEFUN([CF_FUNC_TERMIOS],[
2761 AC_REQUIRE([CF_STRUCT_TERMIOS])
2762 AC_CACHE_CHECK(for tcgetattr, cf_cv_have_tcgetattr,[
2763 AC_TRY_LINK([
2764 #include <sys/types.h>
2765 #ifdef HAVE_UNISTD_H
2766 #include <unistd.h>
2767 #endif
2768 #ifdef HAVE_TERMIOS_H
2769 #include <termios.h>
2770 #define TTY struct termios
2771 #else
2772 #ifdef HAVE_TERMIO_H
2773 #include <termio.h>
2774 #define TTY struct termio
2775 #endif
2776 #endif
2777 ],[
2778 TTY foo;
2779 tcgetattr(1, &foo);],
2780 [cf_cv_have_tcgetattr=yes],
2781 [cf_cv_have_tcgetattr=no])])
2782 test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR,1,[Define to 1 if we have tcgetattr])
2783 ])dnl
2784 dnl ---------------------------------------------------------------------------
2785 dnl CF_FUNC_VSSCANF version: 7 updated: 2021/01/01 13:31:04
2786 dnl ---------------
2787 dnl Check for vsscanf() function, which is in c9x but generally not in earlier
2788 dnl versions of C.  It is in the GNU C library, and can often be simulated by
2789 dnl other functions.
2790 AC_DEFUN([CF_FUNC_VSSCANF],
2791 [
2792 AC_CACHE_CHECK(for vsscanf function or workaround,cf_cv_func_vsscanf,[
2793 AC_TRY_LINK([
2794 #include <stdarg.h>
2795 #include <stdio.h>],[
2796         va_list ap;
2797         vsscanf("from", "%d", ap)],[cf_cv_func_vsscanf=vsscanf],[
2798 AC_TRY_LINK([
2799 #include <stdarg.h>
2800 #include <stdio.h>],[
2801         FILE strbuf;
2802         char *str = "from";
2803
2804         strbuf._flag = _IOREAD;
2805         strbuf._ptr = strbuf._base = (unsigned char *) str;
2806         strbuf._cnt = strlen(str);
2807         strbuf._file = _NFILE;
2808         return (vfscanf(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=vfscanf],[
2809 AC_TRY_LINK([
2810 #include <stdarg.h>
2811 #include <stdio.h>],[
2812         FILE strbuf;
2813         char *str = "from";
2814
2815         strbuf._flag = _IOREAD;
2816         strbuf._ptr = strbuf._base = (unsigned char *) str;
2817         strbuf._cnt = strlen(str);
2818         strbuf._file = _NFILE;
2819         return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[
2820 cf_cv_func_vsscanf=no])])])])
2821
2822 case "$cf_cv_func_vsscanf" in
2823 (vsscanf) AC_DEFINE(HAVE_VSSCANF,1,[Define to 1 if we have vsscanf]);;
2824 (vfscanf) AC_DEFINE(HAVE_VFSCANF,1,[Define to 1 if we have vfscanf]);;
2825 (_doscan) AC_DEFINE(HAVE__DOSCAN,1,[Define to 1 if we have _doscan]);;
2826 esac
2827
2828 ])dnl
2829 dnl ---------------------------------------------------------------------------
2830 dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25
2831 dnl -----------------
2832 dnl Test for availability of useful gcc __attribute__ directives to quiet
2833 dnl compiler warnings.  Though useful, not all are supported -- and contrary
2834 dnl to documentation, unrecognized directives cause older compilers to barf.
2835 AC_DEFUN([CF_GCC_ATTRIBUTES],
2836 [AC_REQUIRE([AC_PROG_FGREP])dnl
2837 AC_REQUIRE([CF_C11_NORETURN])dnl
2838
2839 if test "$GCC" = yes || test "$GXX" = yes
2840 then
2841 cat > conftest.i <<EOF
2842 #ifndef GCC_PRINTF
2843 #define GCC_PRINTF 0
2844 #endif
2845 #ifndef GCC_SCANF
2846 #define GCC_SCANF 0
2847 #endif
2848 #ifndef GCC_NORETURN
2849 #define GCC_NORETURN /* nothing */
2850 #endif
2851 #ifndef GCC_UNUSED
2852 #define GCC_UNUSED /* nothing */
2853 #endif
2854 EOF
2855 if test "$GCC" = yes
2856 then
2857         AC_CHECKING([for $CC __attribute__ directives])
2858 cat > "conftest.$ac_ext" <<EOF
2859 #line __oline__ "${as_me:-configure}"
2860 #include "confdefs.h"
2861 #include "conftest.h"
2862 #include "conftest.i"
2863 #if     GCC_PRINTF
2864 #define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
2865 #else
2866 #define GCC_PRINTFLIKE(fmt,var) /*nothing*/
2867 #endif
2868 #if     GCC_SCANF
2869 #define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
2870 #else
2871 #define GCC_SCANFLIKE(fmt,var)  /*nothing*/
2872 #endif
2873 extern void wow(char *,...) GCC_SCANFLIKE(1,2);
2874 extern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2);
2875 extern GCC_NORETURN void foo(void);
2876 int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; }
2877 EOF
2878         cf_printf_attribute=no
2879         cf_scanf_attribute=no
2880         for cf_attribute in scanf printf unused noreturn
2881         do
2882                 CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
2883                 cf_directive="__attribute__(($cf_attribute))"
2884                 echo "checking for $CC $cf_directive" 1>&AC_FD_CC
2885
2886                 case "$cf_attribute" in
2887                 (printf)
2888                         cf_printf_attribute=yes
2889                         cat >conftest.h <<EOF
2890 #define GCC_$cf_ATTRIBUTE 1
2891 EOF
2892                         ;;
2893                 (scanf)
2894                         cf_scanf_attribute=yes
2895                         cat >conftest.h <<EOF
2896 #define GCC_$cf_ATTRIBUTE 1
2897 EOF
2898                         ;;
2899                 (*)
2900                         cat >conftest.h <<EOF
2901 #define GCC_$cf_ATTRIBUTE $cf_directive
2902 EOF
2903                         ;;
2904                 esac
2905
2906                 if AC_TRY_EVAL(ac_compile); then
2907                         test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
2908                         cat conftest.h >>confdefs.h
2909                         case "$cf_attribute" in
2910                         (noreturn)
2911                                 AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
2912                                 ;;
2913                         (printf)
2914                                 cf_value='/* nothing */'
2915                                 if test "$cf_printf_attribute" != no ; then
2916                                         cf_value='__attribute__((format(printf,fmt,var)))'
2917                                         AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
2918                                 fi
2919                                 AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
2920                                 ;;
2921                         (scanf)
2922                                 cf_value='/* nothing */'
2923                                 if test "$cf_scanf_attribute" != no ; then
2924                                         cf_value='__attribute__((format(scanf,fmt,var)))'
2925                                         AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
2926                                 fi
2927                                 AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
2928                                 ;;
2929                         (unused)
2930                                 AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
2931                                 ;;
2932                         esac
2933                 fi
2934         done
2935 else
2936         ${FGREP-fgrep} define conftest.i >>confdefs.h
2937 fi
2938 rm -rf ./conftest*
2939 fi
2940 ])dnl
2941 dnl ---------------------------------------------------------------------------
2942 dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
2943 dnl --------------
2944 dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
2945 dnl compatible), attempt to determine if icc/clang is actually used.
2946 AC_DEFUN([CF_GCC_VERSION],[
2947 AC_REQUIRE([AC_PROG_CC])
2948 GCC_VERSION=none
2949 if test "$GCC" = yes ; then
2950         AC_MSG_CHECKING(version of $CC)
2951         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.]].*//'`"
2952         test -z "$GCC_VERSION" && GCC_VERSION=unknown
2953         AC_MSG_RESULT($GCC_VERSION)
2954 fi
2955 CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
2956 CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
2957 ])dnl
2958 dnl ---------------------------------------------------------------------------
2959 dnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59
2960 dnl ---------------
2961 dnl Check if the compiler supports useful warning options.  There's a few that
2962 dnl we don't use, simply because they're too noisy:
2963 dnl
2964 dnl     -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
2965 dnl     -Winline (usually not worthwhile)
2966 dnl     -Wredundant-decls (system headers make this too noisy)
2967 dnl     -Wtraditional (combines too many unrelated messages, only a few useful)
2968 dnl     -Wwrite-strings (too noisy, but should review occasionally).  This
2969 dnl             is enabled for ncurses using "--enable-const".
2970 dnl     -pedantic
2971 dnl
2972 dnl Parameter:
2973 dnl     $1 is an optional list of gcc warning flags that a particular
2974 dnl             application might want to use, e.g., "no-unused" for
2975 dnl             -Wno-unused
2976 dnl Special:
2977 dnl     If $with_ext_const is "yes", add a check for -Wwrite-strings
2978 dnl
2979 AC_DEFUN([CF_GCC_WARNINGS],
2980 [
2981 AC_REQUIRE([CF_GCC_VERSION])
2982 if test "x$have_x" = xyes; then CF_CONST_X_STRING fi
2983 cat > "conftest.$ac_ext" <<EOF
2984 #line __oline__ "${as_me:-configure}"
2985 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
2986 EOF
2987 if test "$INTEL_COMPILER" = yes
2988 then
2989 # The "-wdXXX" options suppress warnings:
2990 # remark #1419: external declaration in primary source file
2991 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
2992 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
2993 # remark #193: zero used for undefined preprocessing identifier
2994 # remark #593: variable "curs_sb_left_arrow" was set but never used
2995 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
2996 # remark #869: parameter "tw" was never referenced
2997 # remark #981: operands are evaluated in unspecified order
2998 # warning #279: controlling expression is constant
2999
3000         AC_CHECKING([for $CC warning options])
3001         cf_save_CFLAGS="$CFLAGS"
3002         EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
3003         for cf_opt in \
3004                 wd1419 \
3005                 wd1683 \
3006                 wd1684 \
3007                 wd193 \
3008                 wd593 \
3009                 wd279 \
3010                 wd810 \
3011                 wd869 \
3012                 wd981
3013         do
3014                 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
3015                 if AC_TRY_EVAL(ac_compile); then
3016                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3017                         EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
3018                 fi
3019         done
3020         CFLAGS="$cf_save_CFLAGS"
3021 elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
3022 then
3023         AC_CHECKING([for $CC warning options])
3024         cf_save_CFLAGS="$CFLAGS"
3025         cf_warn_CONST=""
3026         test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
3027         cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
3028         test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
3029         for cf_opt in W Wall \
3030                 Wbad-function-cast \
3031                 Wcast-align \
3032                 Wcast-qual \
3033                 Wdeclaration-after-statement \
3034                 Wextra \
3035                 Winline \
3036                 Wmissing-declarations \
3037                 Wmissing-prototypes \
3038                 Wnested-externs \
3039                 Wpointer-arith \
3040                 Wshadow \
3041                 Wstrict-prototypes \
3042                 Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
3043         do
3044                 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
3045                 if AC_TRY_EVAL(ac_compile); then
3046                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3047                         case "$cf_opt" in
3048                         (Winline)
3049                                 case "$GCC_VERSION" in
3050                                 ([[34]].*)
3051                                         CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
3052                                         continue;;
3053                                 esac
3054                                 ;;
3055                         (Wpointer-arith)
3056                                 case "$GCC_VERSION" in
3057                                 ([[12]].*)
3058                                         CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
3059                                         continue;;
3060                                 esac
3061                                 ;;
3062                         esac
3063                         EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
3064                 fi
3065         done
3066         CFLAGS="$cf_save_CFLAGS"
3067 fi
3068 rm -rf ./conftest*
3069
3070 AC_SUBST(EXTRA_CFLAGS)
3071 ])dnl
3072 dnl ---------------------------------------------------------------------------
3073 dnl CF_GETOPT_HEADER version: 8 updated: 2021/06/19 19:16:16
3074 dnl ----------------
3075 dnl Check for getopt's variables which are commonly defined in stdlib.h,
3076 dnl unistd.h or (nonstandard) in getopt.h
3077 AC_DEFUN([CF_GETOPT_HEADER],
3078 [
3079 AC_HAVE_HEADERS(unistd.h getopt.h)
3080 AC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[
3081 cf_cv_getopt_header=none
3082 for cf_header in stdio.h stdlib.h unistd.h getopt.h
3083 do
3084 AC_TRY_COMPILE([
3085 #include <$cf_header>],
3086 [int x = optind; char *y = optarg; (void)x; (void)y],
3087 [cf_cv_getopt_header=$cf_header
3088  break])
3089 done
3090 ])
3091 if test "$cf_cv_getopt_header" != none ; then
3092         AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header])
3093 fi
3094 if test "$cf_cv_getopt_header" = getopt.h ; then
3095         AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h])
3096 fi
3097 ])dnl
3098 dnl ---------------------------------------------------------------------------
3099 dnl CF_GNATPREP_OPT_T version: 1 updated: 2014/08/02 18:37:25
3100 dnl -----------------
3101 AC_DEFUN([CF_GNATPREP_OPT_T],[
3102 AC_CACHE_CHECK(if GNATPREP supports -T option,cf_cv_gnatprep_opt_t,[
3103 cf_cv_gnatprep_opt_t=no
3104 gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
3105 ])
3106 test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
3107 AC_SUBST(GNATPREP_OPTS)
3108 ])dnl
3109 dnl ---------------------------------------------------------------------------
3110 dnl CF_GNAT_GENERICS version: 7 updated: 2021/01/01 13:31:04
3111 dnl ----------------
3112 AC_DEFUN([CF_GNAT_GENERICS],
3113 [
3114 AC_REQUIRE([CF_GNAT_VERSION])
3115
3116 AC_MSG_CHECKING(if GNAT supports generics)
3117 case "$cf_cv_gnat_version" in
3118 (3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|[[1-9]][[0-9]].[[0-9]]*|20[[0-9]][[0-9]])
3119         cf_gnat_generics=yes
3120         ;;
3121 (*)
3122         cf_gnat_generics=no
3123         ;;
3124 esac
3125 AC_MSG_RESULT($cf_gnat_generics)
3126
3127 if test "$cf_gnat_generics" = yes
3128 then
3129         cf_compile_generics=generics
3130         cf_generic_objects="\${GENOBJS}"
3131 else
3132         cf_compile_generics=
3133         cf_generic_objects=
3134 fi
3135
3136 AC_SUBST(cf_compile_generics)
3137 AC_SUBST(cf_generic_objects)
3138 ])dnl
3139 dnl ---------------------------------------------------------------------------
3140 dnl CF_GNAT_PROJECTS version: 13 updated: 2021/01/02 17:09:14
3141 dnl ----------------
3142 dnl GNAT projects are configured with ".gpr" project files.
3143 dnl GNAT libraries are a further development, using the project feature.
3144 AC_DEFUN([CF_GNAT_PROJECTS],
3145 [
3146 AC_REQUIRE([CF_GNAT_VERSION])
3147 AC_REQUIRE([CF_DISABLE_GNAT_PROJECTS])
3148
3149 cf_gnat_libraries=no
3150 cf_gnat_projects=no
3151
3152 if test "$enable_gnat_projects" != no ; then
3153 AC_MSG_CHECKING(if GNAT supports project files)
3154 case "$cf_cv_gnat_version" in
3155 (3.[[0-9]]*)
3156         ;;
3157 (*)
3158         case "$cf_cv_system_name" in
3159         (cygwin*|msys*)
3160                 ;;
3161         (*)
3162                 rm -rf ./conftest* ./*~conftest*
3163                 if mkdir conftest.src conftest.bin conftest.lib
3164                 then
3165                         cd conftest.src
3166                         rm -rf ./conftest* ./*~conftest*
3167                         cat >>library.gpr <<CF_EOF
3168 project Library is
3169   Kind := External ("LIB_KIND");
3170   for Library_Name use "ConfTest";
3171   for Object_Dir use ".";
3172   for Library_ALI_Dir use External("LIBRARY_DIR");
3173   for Library_Version use External ("SONAME");
3174   for Library_Kind use Kind;
3175   for Library_Dir use External("BUILD_DIR");
3176   Source_Dir := External ("SOURCE_DIR");
3177   for Source_Dirs use (Source_Dir);
3178 end Library;
3179 CF_EOF
3180                         cat >>confpackage.ads <<CF_EOF
3181 package ConfPackage is
3182    procedure conftest;
3183 end ConfPackage;
3184 CF_EOF
3185                         cat >>confpackage.adb <<CF_EOF
3186 with Text_IO;
3187 package body ConfPackage is
3188    procedure conftest is
3189    begin
3190       Text_IO.Put ("Hello World");
3191       Text_IO.New_Line;
3192    end conftest;
3193 end ConfPackage;
3194 CF_EOF
3195                         if ( "$cf_ada_make" $ADAFLAGS \
3196                                         -Plibrary.gpr \
3197                                         -XBUILD_DIR="`cd ../conftest.bin;pwd`" \
3198                                         -XLIBRARY_DIR="`cd ../conftest.lib;pwd`" \
3199                                         -XSOURCE_DIR="`pwd`" \
3200                                         -XSONAME=libConfTest.so.1 \
3201                                         -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then
3202                                 cf_gnat_projects=yes
3203                         fi
3204                         cd ..
3205                 fi
3206                 if test -f conftest.lib/confpackage.ali
3207                 then
3208                         cf_gnat_libraries=yes
3209                 fi
3210                 rm -rf ./conftest* ./*~conftest*
3211                 ;;
3212         esac
3213         ;;
3214 esac
3215 AC_MSG_RESULT($cf_gnat_projects)
3216 fi # enable_gnat_projects
3217
3218 if test "$cf_gnat_projects" = yes
3219 then
3220         AC_MSG_CHECKING(if GNAT supports libraries)
3221         AC_MSG_RESULT($cf_gnat_libraries)
3222 fi
3223
3224 USE_OLD_MAKERULES=""
3225 USE_GNAT_PROJECTS="#"
3226 USE_GNAT_MAKE_GPR="#"
3227 USE_GNAT_GPRBUILD="#"
3228
3229 if test "$cf_gnat_projects" = yes
3230 then
3231         USE_OLD_MAKERULES="#"
3232         USE_GNAT_PROJECTS=""
3233         if test "$cf_cv_VERSION_GPRBUILD" != no
3234         then
3235                 USE_GNAT_GPRBUILD=""
3236         elif test "$cf_cv_VERSION_GNATMAKE" != no
3237         then
3238                 USE_GNAT_MAKE_GPR=""
3239         else
3240                 AC_MSG_WARN(use old makefile rules since tools are missing)
3241         fi
3242 fi
3243
3244 if test "$cf_gnat_libraries" = yes
3245 then
3246         USE_GNAT_LIBRARIES=""
3247 else
3248         USE_GNAT_LIBRARIES="#"
3249 fi
3250
3251 AC_SUBST(USE_OLD_MAKERULES)
3252 AC_SUBST(USE_GNAT_PROJECTS)
3253 AC_SUBST(USE_GNAT_LIBRARIES)
3254 AC_SUBST(USE_GNAT_MAKE_GPR)
3255 AC_SUBST(USE_GNAT_GPRBUILD)
3256 ])dnl
3257 dnl ---------------------------------------------------------------------------
3258 dnl CF_GNAT_SIGINT version: 2 updated: 2021/01/01 13:31:04
3259 dnl --------------
3260 dnl Check if gnat supports SIGINT, and presumably tasking.  For the latter, it
3261 dnl is noted that gnat may compile a tasking unit even for configurations which
3262 dnl fail at runtime.
3263 AC_DEFUN([CF_GNAT_SIGINT],[
3264 AC_CACHE_CHECK(if GNAT supports SIGINT,cf_cv_gnat_sigint,[
3265 CF_GNAT_TRY_LINK([with Ada.Interrupts.Names;
3266
3267 package ConfTest is
3268
3269    pragma Warnings (Off);  --  the next pragma exists since 3.11p
3270    pragma Unreserve_All_Interrupts;
3271    pragma Warnings (On);
3272
3273    protected Process is
3274       procedure Stop;
3275       function Continue return Boolean;
3276       pragma Attach_Handler (Stop, Ada.Interrupts.Names.SIGINT);
3277    private
3278       Done : Boolean := False;
3279    end Process;
3280
3281 end ConfTest;],
3282 [package body ConfTest is
3283    protected body Process is
3284       procedure Stop is
3285       begin
3286          Done := True;
3287       end Stop;
3288       function Continue return Boolean is
3289       begin
3290          return not Done;
3291       end Continue;
3292    end Process;
3293 end ConfTest;],
3294         [cf_cv_gnat_sigint=yes],
3295         [cf_cv_gnat_sigint=no])])
3296
3297 if test "$cf_cv_gnat_sigint" = yes ; then
3298         USE_GNAT_SIGINT=""
3299 else
3300         USE_GNAT_SIGINT="#"
3301 fi
3302 AC_SUBST(USE_GNAT_SIGINT)
3303 ])dnl
3304 dnl ---------------------------------------------------------------------------
3305 dnl CF_GNAT_TRY_LINK version: 4 updated: 2021/01/01 13:31:04
3306 dnl ----------------
3307 dnl Verify that a test program compiles/links with GNAT.
3308 dnl $cf_ada_make is set to the program that compiles/links
3309 dnl $ADAFLAGS may be set to the GNAT flags.
3310 dnl
3311 dnl $1 is the text of the spec
3312 dnl $2 is the text of the body
3313 dnl $3 is the shell command to execute if successful
3314 dnl $4 is the shell command to execute if not successful
3315 AC_DEFUN([CF_GNAT_TRY_LINK],
3316 [
3317 rm -rf ./conftest* ./*~conftest*
3318 cat >>conftest.ads <<CF_EOF
3319 $1
3320 CF_EOF
3321 cat >>conftest.adb <<CF_EOF
3322 $2
3323 CF_EOF
3324 if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
3325 ifelse($3,,      :,[      $3])
3326 ifelse($4,,,[else
3327    $4])
3328 fi
3329 rm -rf ./conftest* ./*~conftest*
3330 ])dnl
3331 dnl ---------------------------------------------------------------------------
3332 dnl CF_GNAT_TRY_RUN version: 6 updated: 2021/01/01 13:31:04
3333 dnl ---------------
3334 dnl Verify that a test program compiles and runs with GNAT
3335 dnl $cf_ada_make is set to the program that compiles/links
3336 dnl $ADAFLAGS may be set to the GNAT flags.
3337 dnl
3338 dnl $1 is the text of the spec
3339 dnl $2 is the text of the body
3340 dnl $3 is the shell command to execute if successful
3341 dnl $4 is the shell command to execute if not successful
3342 AC_DEFUN([CF_GNAT_TRY_RUN],
3343 [
3344 rm -rf ./conftest* ./*~conftest*
3345 cat >>conftest.ads <<CF_EOF
3346 $1
3347 CF_EOF
3348 cat >>conftest.adb <<CF_EOF
3349 $2
3350 CF_EOF
3351 if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
3352    if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then
3353 ifelse($3,,      :,[      $3])
3354 ifelse($4,,,[   else
3355       $4])
3356    fi
3357 ifelse($4,,,[else
3358    $4])
3359 fi
3360 rm -rf ./conftest* ./*~conftest*
3361 ])dnl
3362 dnl ---------------------------------------------------------------------------
3363 dnl CF_GNAT_VERSION version: 22 updated: 2019/12/31 08:53:54
3364 dnl ---------------
3365 dnl $1 = cache variable to update
3366 dnl $2 = program name
3367 dnl Verify version of GNAT or related tool
3368 AC_DEFUN([CF_GNAT_VERSION],
3369 [
3370 AC_CACHE_CHECK(for ifelse($2,,gnat,$2) version, cf_cv_gnat_version,[
3371 cf_cv_gnat_version=`ifelse($2,,${cf_ada_make:-gnatmake},$2) --version 2>&1 | \
3372         grep '[[0-9]].[[0-9]][[0-9]]*' |\
3373         sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'`
3374 ])
3375 test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
3376 ifelse($1,,,[eval $1=$cf_cv_gnat_version; unset cf_cv_gnat_version])
3377 ])dnl
3378 dnl ---------------------------------------------------------------------------
3379 dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
3380 dnl -------------
3381 dnl Check if we must define _GNU_SOURCE to get a reasonable value for
3382 dnl _XOPEN_SOURCE, upon which many POSIX definitions depend.  This is a defect
3383 dnl (or misfeature) of glibc2, which breaks portability of many applications,
3384 dnl since it is interwoven with GNU extensions.
3385 dnl
3386 dnl Well, yes we could work around it...
3387 dnl
3388 dnl Parameters:
3389 dnl     $1 is the nominal value for _XOPEN_SOURCE
3390 AC_DEFUN([CF_GNU_SOURCE],
3391 [
3392 cf_gnu_xopen_source=ifelse($1,,500,$1)
3393
3394 AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
3395 AC_TRY_COMPILE([#include <sys/types.h>],[
3396         #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
3397                 return 0;
3398         #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
3399                 return 0;
3400         #else
3401         #       error not GNU C library
3402         #endif],
3403         [cf_cv_gnu_library=yes],
3404         [cf_cv_gnu_library=no])
3405 ])
3406
3407 if test x$cf_cv_gnu_library = xyes; then
3408
3409         # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
3410         # was changed to help a little.  newlib incorporated the change about 4
3411         # years later.
3412         AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
3413                 cf_save="$CPPFLAGS"
3414                 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
3415                 AC_TRY_COMPILE([#include <sys/types.h>],[
3416                         #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
3417                                 return 0;
3418                         #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
3419                                 return 0;
3420                         #else
3421                         #       error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
3422                         #endif],
3423                         [cf_cv_gnu_library_219=yes],
3424                         [cf_cv_gnu_library_219=no])
3425                 CPPFLAGS="$cf_save"
3426         ])
3427
3428         if test "x$cf_cv_gnu_library_219" = xyes; then
3429                 cf_save="$CPPFLAGS"
3430                 AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
3431                         CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
3432                         AC_TRY_COMPILE([
3433                                 #include <limits.h>
3434                                 #include <sys/types.h>
3435                                 ],[
3436                                 #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
3437                                         return 0;
3438                                 #else
3439                                 #       error GNU C library is too old
3440                                 #endif],
3441                                 [cf_cv_gnu_dftsrc_219=yes],
3442                                 [cf_cv_gnu_dftsrc_219=no])
3443                         ])
3444                 test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
3445         else
3446                 cf_cv_gnu_dftsrc_219=maybe
3447         fi
3448
3449         if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
3450
3451                 AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
3452                 AC_TRY_COMPILE([#include <sys/types.h>],[
3453                         #ifndef _XOPEN_SOURCE
3454                         #error  expected _XOPEN_SOURCE to be defined
3455                         #endif],
3456                         [cf_cv_gnu_source=no],
3457                         [cf_save="$CPPFLAGS"
3458                          CF_ADD_CFLAGS(-D_GNU_SOURCE)
3459                          AC_TRY_COMPILE([#include <sys/types.h>],[
3460                                 #ifdef _XOPEN_SOURCE
3461                                 #error  expected _XOPEN_SOURCE to be undefined
3462                                 #endif],
3463                                 [cf_cv_gnu_source=no],
3464                                 [cf_cv_gnu_source=yes])
3465                         CPPFLAGS="$cf_save"
3466                         ])
3467                 ])
3468
3469                 if test "$cf_cv_gnu_source" = yes
3470                 then
3471                 AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
3472                         CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
3473                         AC_TRY_COMPILE([#include <sys/types.h>],[
3474                                 #ifdef _DEFAULT_SOURCE
3475                                 #error  expected _DEFAULT_SOURCE to be undefined
3476                                 #endif],
3477                                 [cf_cv_default_source=no],
3478                                 [cf_cv_default_source=yes])
3479                         ])
3480                         if test "$cf_cv_default_source" = yes
3481                         then
3482                                 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
3483                         fi
3484                 fi
3485         fi
3486
3487 fi
3488 ])dnl
3489 dnl ---------------------------------------------------------------------------
3490 dnl CF_GPP_LIBRARY version: 13 updated: 2021/01/01 13:31:04
3491 dnl --------------
3492 dnl If we're trying to use g++, test if libg++ is installed (a rather common
3493 dnl problem :-).  If we have the compiler but no library, we'll be able to
3494 dnl configure, but won't be able to build the c++ demo program.
3495 AC_DEFUN([CF_GPP_LIBRARY],
3496 [
3497 cf_cxx_library=unknown
3498 case "$cf_cv_system_name" in
3499 (os2*)
3500         cf_gpp_libname=gpp
3501         ;;
3502 (*)
3503         cf_gpp_libname=g++
3504         ;;
3505 esac
3506 if test "$GXX" = yes; then
3507         AC_MSG_CHECKING([for lib$cf_gpp_libname])
3508         cf_save="$LIBS"
3509         CF_ADD_LIB($cf_gpp_libname)
3510         AC_TRY_LINK([
3511 #include <$cf_gpp_libname/builtin.h>
3512         ],
3513         [two_arg_error_handler_t foo2 = lib_error_handler],
3514         [cf_cxx_library=yes
3515          CF_ADD_LIB($cf_gpp_libname,CXXLIBS)
3516          if test "$cf_gpp_libname" = cpp ; then
3517             AC_DEFINE(HAVE_GPP_BUILTIN_H,1,[Define to 1 if we have gpp builtin.h])
3518          else
3519             AC_DEFINE(HAVE_GXX_BUILTIN_H,1,[Define to 1 if we have g++ builtin.h])
3520          fi],
3521         [AC_TRY_LINK([
3522 #include <builtin.h>
3523         ],
3524         [two_arg_error_handler_t foo2 = lib_error_handler],
3525         [cf_cxx_library=yes
3526          CF_ADD_LIB($cf_gpp_libname,CXXLIBS)
3527          AC_DEFINE(HAVE_BUILTIN_H,1,[Define to 1 if we have builtin.h])],
3528         [cf_cxx_library=no])])
3529         LIBS="$cf_save"
3530         AC_MSG_RESULT($cf_cxx_library)
3531 fi
3532 ])dnl
3533 dnl ---------------------------------------------------------------------------
3534 dnl CF_GXX_VERSION version: 8 updated: 2017/02/11 14:48:57
3535 dnl --------------
3536 dnl Check for version of g++
3537 AC_DEFUN([CF_GXX_VERSION],[
3538 AC_REQUIRE([AC_PROG_CPP])
3539 GXX_VERSION=none
3540 if test "$GXX" = yes; then
3541         AC_MSG_CHECKING(version of ${CXX:-g++})
3542         GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
3543         if test -z "$GXX_VERSION"
3544         then
3545                 GXX_VERSION=unknown
3546                 GXX=no
3547         fi
3548         AC_MSG_RESULT($GXX_VERSION)
3549 fi
3550 ])dnl
3551 dnl ---------------------------------------------------------------------------
3552 dnl CF_GXX_WARNINGS version: 11 updated: 2021/01/08 16:50:55
3553 dnl ---------------
3554 dnl Check if the compiler supports useful warning options.
3555 dnl
3556 dnl Most of gcc's options apply to g++, except:
3557 dnl     -Wbad-function-cast
3558 dnl     -Wmissing-declarations
3559 dnl     -Wnested-externs
3560 dnl
3561 dnl Omit a few (for now):
3562 dnl     -Winline
3563 dnl
3564 dnl Parameter:
3565 dnl     $1 is an optional list of g++ warning flags that a particular
3566 dnl             application might want to use, e.g., "no-unused" for
3567 dnl             -Wno-unused
3568 dnl Special:
3569 dnl     If $with_ext_const is "yes", add a check for -Wwrite-strings
3570 dnl
3571 AC_DEFUN([CF_GXX_WARNINGS],
3572 [
3573
3574 CF_INTEL_COMPILER(GXX,INTEL_CPLUSPLUS,CXXFLAGS)
3575 CF_CLANG_COMPILER(GXX,CLANG_CPLUSPLUS,CXXFLAGS)
3576
3577 AC_REQUIRE([CF_GXX_VERSION])
3578
3579 AC_LANG_SAVE
3580 AC_LANG_CPLUSPLUS
3581
3582 cat > conftest.$ac_ext <<EOF
3583 #line __oline__ "configure"
3584 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
3585 EOF
3586
3587 if test "$INTEL_CPLUSPLUS" = yes
3588 then
3589 # The "-wdXXX" options suppress warnings:
3590 # remark #1419: external declaration in primary source file
3591 # remark #1682: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
3592 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
3593 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
3594 # remark #193: zero used for undefined preprocessing identifier
3595 # remark #593: variable "curs_sb_left_arrow" was set but never used
3596 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
3597 # remark #869: parameter "tw" was never referenced
3598 # remark #981: operands are evaluated in unspecified order
3599 # warning #269: invalid format string conversion
3600
3601         AC_CHECKING([for $CC warning options])
3602         cf_save_CXXFLAGS="$CXXFLAGS"
3603         EXTRA_CXXFLAGS="-Wall"
3604         for cf_opt in \
3605                 wd1419 \
3606                 wd1682 \
3607                 wd1683 \
3608                 wd1684 \
3609                 wd193 \
3610                 wd279 \
3611                 wd593 \
3612                 wd810 \
3613                 wd869 \
3614                 wd981
3615         do
3616                 CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt"
3617                 if AC_TRY_EVAL(ac_compile); then
3618                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3619                         EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
3620                 fi
3621         done
3622         CXXFLAGS="$cf_save_CXXFLAGS"
3623
3624 elif test "$GXX" = yes
3625 then
3626         AC_CHECKING([for $CXX warning options])
3627         cf_save_CXXFLAGS="$CXXFLAGS"
3628         EXTRA_CXXFLAGS="-W -Wall"
3629         cf_gxx_extra_warnings=""
3630         test "$with_ext_const" = yes && cf_gxx_extra_warnings="Wwrite-strings"
3631         case "$GXX_VERSION" in
3632         ([[1-2]].*)
3633                 ;;
3634         (*)
3635                 cf_gxx_extra_warnings="$cf_gxx_extra_warnings Weffc++"
3636                 ;;
3637         esac
3638         for cf_opt in \
3639                 Wabi \
3640                 fabi-version=0 \
3641                 Wextra \
3642                 Wignored-qualifiers \
3643                 Wlogical-op \
3644                 Woverloaded-virtual \
3645                 Wsign-promo \
3646                 Wsynth \
3647                 Wold-style-cast \
3648                 Wcast-align \
3649                 Wcast-qual \
3650                 Wpointer-arith \
3651                 Wshadow \
3652                 Wundef $cf_gxx_extra_warnings $1
3653         do
3654                 CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt"
3655                 if AC_TRY_EVAL(ac_compile); then
3656                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3657                         EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
3658                 else
3659                         test -n "$verbose" && AC_MSG_RESULT(... no -$cf_opt)
3660                 fi
3661         done
3662         CXXFLAGS="$cf_save_CXXFLAGS"
3663 fi
3664
3665 rm -rf ./conftest*
3666 AC_LANG_RESTORE
3667 AC_SUBST(EXTRA_CXXFLAGS)
3668 ])dnl
3669 dnl ---------------------------------------------------------------------------
3670 dnl CF_HASHED_DB version: 7 updated: 2015/04/18 08:56:57
3671 dnl ------------
3672 dnl Look for an instance of the Berkeley hashed database.
3673 dnl
3674 dnl $1 = optional parameter, to specify install-prefix for the database.
3675 AC_DEFUN([CF_HASHED_DB],
3676 [
3677 ifelse([$1],,,[
3678 case $1 in
3679 (yes|*able*)
3680         ;;
3681 (*)
3682         if test -d "$1" ; then
3683                 CF_ADD_INCDIR($1/include)
3684                 CF_ADD_LIBDIR($1/lib)
3685         else
3686                 case "$1" in
3687                 (./*|../*|/*)
3688                         AC_MSG_WARN(no such directory $1)
3689                         ;;
3690                 (*)
3691                         CF_FIND_SUB_INCDIR($1)
3692                         CF_FIND_SUB_LIBDIR($1)
3693                         ;;
3694                 esac
3695         fi
3696 esac
3697 ])
3698 AC_CHECK_HEADER(db.h,[
3699 CF_HASHED_DB_VERSION
3700 if test "$cf_cv_hashed_db_version" = unknown ; then
3701         AC_MSG_ERROR(Cannot determine version of db)
3702 else
3703         CF_HASHED_DB_LIBS
3704         if test "$cf_cv_hashed_db_libs" = unknown ; then
3705                 AC_MSG_ERROR(Cannot determine library for db)
3706         elif test "$cf_cv_hashed_db_libs" != default ; then
3707                 CF_ADD_LIB($cf_cv_hashed_db_libs)
3708         fi
3709 fi
3710 ],[
3711         AC_MSG_ERROR(Cannot find db.h)
3712 ])
3713 ])dnl
3714 dnl ---------------------------------------------------------------------------
3715 dnl CF_HASHED_DB_LIBS version: 10 updated: 2021/01/02 17:09:14
3716 dnl -----------------
3717 dnl Given that we have the header and version for hashed database, find the
3718 dnl library information.
3719 AC_DEFUN([CF_HASHED_DB_LIBS],
3720 [
3721 AC_CACHE_CHECK(for db libraries, cf_cv_hashed_db_libs,[
3722 cf_cv_hashed_db_libs=unknown
3723 for cf_db_libs in "" db$cf_cv_hashed_db_version db-$cf_cv_hashed_db_version db ''
3724 do
3725         cf_save_libs="$LIBS"
3726         if test -n "$cf_db_libs"; then
3727                 CF_ADD_LIB($cf_db_libs)
3728         fi
3729         CF_MSG_LOG(checking for library $cf_db_libs)
3730         AC_TRY_LINK([
3731 $ac_includes_default
3732 #include <db.h>
3733 ],[
3734         char *path = "/tmp/foo";
3735 #ifdef DB_VERSION_MAJOR
3736 #if DB_VERSION_MAJOR >= 4
3737         DB *result = 0;
3738         db_create(&result, NULL, 0);
3739         result->open(result,
3740                 NULL,
3741                 path,
3742                 path,
3743                 DB_HASH,
3744                 DB_CREATE,
3745                 0644);
3746 #elif DB_VERSION_MAJOR >= 3
3747         DB *result = 0;
3748         db_create(&result, NULL, 0);
3749         result->open(result,
3750                 path,
3751                 path,
3752                 DB_HASH,
3753                 DB_CREATE,
3754                 0644);
3755 #elif DB_VERSION_MAJOR >= 2
3756         DB *result = 0;
3757         db_open(path,
3758                 DB_HASH,
3759                 DB_CREATE,
3760                 0644,
3761                 (DB_ENV *) 0,
3762                 (DB_INFO *) 0,
3763                 &result);
3764 #endif /* DB_VERSION_MAJOR */
3765 #else
3766         DB *result = dbopen(path,
3767                      2,
3768                      0644,
3769                      DB_HASH,
3770                      0);
3771 #endif
3772         ${cf_cv_main_return:-return}(result != 0)
3773 ],[
3774         if test -n "$cf_db_libs" ; then
3775                 cf_cv_hashed_db_libs=$cf_db_libs
3776         else
3777                 cf_cv_hashed_db_libs=default
3778         fi
3779         LIBS="$cf_save_libs"
3780         break
3781 ])
3782         LIBS="$cf_save_libs"
3783 done
3784 ])
3785 ])dnl
3786 dnl ---------------------------------------------------------------------------
3787 dnl CF_HASHED_DB_VERSION version: 4 updated: 2014/04/12 16:47:01
3788 dnl --------------------
3789 dnl Given that we have the header file for hashed database, find the version
3790 dnl information.
3791 AC_DEFUN([CF_HASHED_DB_VERSION],
3792 [
3793 AC_CACHE_CHECK(for version of db, cf_cv_hashed_db_version,[
3794 cf_cv_hashed_db_version=unknown
3795
3796 for cf_db_version in 1 2 3 4 5 6
3797 do
3798         CF_MSG_LOG(checking for db version $cf_db_version)
3799         AC_TRY_COMPILE([
3800 $ac_includes_default
3801 #include <db.h>
3802
3803 #ifdef DB_VERSION_MAJOR
3804         /* db2 (DB_VERSION_MAJOR=2) has also DB_VERSION_MINOR, tested with 7 */
3805 #if $cf_db_version == DB_VERSION_MAJOR
3806         /* ok */
3807 #else
3808         make an error
3809 #endif
3810 #else
3811 #if $cf_db_version == 1
3812         /* ok: assuming this is DB 1.8.5 */
3813 #else
3814         make an error
3815 #endif
3816 #endif
3817 ],[DBT *foo = 0],[
3818         cf_cv_hashed_db_version=$cf_db_version
3819         break
3820         ])
3821 done
3822 ])
3823 ])dnl
3824 dnl ---------------------------------------------------------------------------
3825 dnl CF_HEADER_PATH version: 15 updated: 2021/01/01 13:31:04
3826 dnl --------------
3827 dnl Construct a search-list of directories for a nonstandard header-file
3828 dnl
3829 dnl Parameters
3830 dnl     $1 = the variable to return as result
3831 dnl     $2 = the package name
3832 AC_DEFUN([CF_HEADER_PATH],
3833 [
3834 $1=
3835
3836 # collect the current set of include-directories from compiler flags
3837 cf_header_path_list=""
3838 if test -n "${CFLAGS}${CPPFLAGS}" ; then
3839         for cf_header_path in $CPPFLAGS $CFLAGS
3840         do
3841                 case "$cf_header_path" in
3842                 (-I*)
3843                         cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
3844                         CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE)
3845                         cf_header_path_list="$cf_header_path_list [$]$1"
3846                         ;;
3847                 esac
3848         done
3849 fi
3850
3851 # add the variations for the package we are looking for
3852 CF_SUBDIR_PATH($1,$2,include)
3853
3854 test "$includedir" != NONE && \
3855 test "$includedir" != "/usr/include" && \
3856 test -d "$includedir" && {
3857         test -d "$includedir" &&    $1="[$]$1 $includedir"
3858         test -d "$includedir/$2" && $1="[$]$1 $includedir/$2"
3859 }
3860
3861 test "$oldincludedir" != NONE && \
3862 test "$oldincludedir" != "/usr/include" && \
3863 test -d "$oldincludedir" && {
3864         test -d "$oldincludedir"    && $1="[$]$1 $oldincludedir"
3865         test -d "$oldincludedir/$2" && $1="[$]$1 $oldincludedir/$2"
3866 }
3867
3868 $1="[$]$1 $cf_header_path_list"
3869 ])dnl
3870 dnl ---------------------------------------------------------------------------
3871 dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54
3872 dnl ---------------
3873 dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
3874 AC_DEFUN([CF_HELP_MESSAGE],
3875 [CF_ACVERSION_CHECK(2.53,[],[
3876 AC_DIVERT_HELP($1)])dnl
3877 ])dnl
3878 dnl ---------------------------------------------------------------------------
3879 dnl CF_INCLUDE_DIRS version: 10 updated: 2014/09/19 20:58:42
3880 dnl ---------------
3881 dnl Construct the list of include-options according to whether we're building
3882 dnl in the source directory or using '--srcdir=DIR' option.
3883 AC_DEFUN([CF_INCLUDE_DIRS],
3884 [
3885 if test "$srcdir" != "."; then
3886         CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
3887 fi
3888 CPPFLAGS="-I../include $CPPFLAGS"
3889 if test "$srcdir" != "."; then
3890         CPPFLAGS="-I\${srcdir} $CPPFLAGS"
3891 fi
3892 CPPFLAGS="-I. $CPPFLAGS"
3893 AC_SUBST(CPPFLAGS)
3894 ])dnl
3895 dnl ---------------------------------------------------------------------------
3896 dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21
3897 dnl ---------------
3898 dnl prompt for/fill-in useful install-program options
3899 AC_DEFUN([CF_INSTALL_OPTS],
3900 [
3901 CF_INSTALL_OPT_S
3902 CF_INSTALL_OPT_P
3903 CF_INSTALL_OPT_O
3904 ])dnl
3905 dnl ---------------------------------------------------------------------------
3906 dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42
3907 dnl ----------------
3908 dnl Almost all "install" programs default to the current user's ownership.
3909 dnl Almost - MINIX is an exception.
3910 AC_DEFUN([CF_INSTALL_OPT_O],
3911 [
3912 AC_MSG_CHECKING(if install needs to be told about ownership)
3913 case `$ac_config_guess` in
3914 (*minix)
3915         with_install_o=yes
3916         ;;
3917 (*)
3918         with_install_o=no
3919         ;;
3920 esac
3921
3922 AC_MSG_RESULT($with_install_o)
3923 if test "x$with_install_o" = xyes
3924 then
3925         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'`"
3926 else
3927         INSTALL_OPT_O=
3928 fi
3929
3930 AC_SUBST(INSTALL_OPT_O)
3931 ])dnl
3932 dnl ---------------------------------------------------------------------------
3933 dnl CF_INSTALL_OPT_P version: 3 updated: 2021/01/01 13:31:04
3934 dnl ----------------
3935 dnl Some install-programs accept a "-p" option to preserve file modification
3936 dnl timestamps.  That can be useful as an install option, as well as a way to
3937 dnl avoid the need for ranlib after copying a static archive.
3938 AC_DEFUN([CF_INSTALL_OPT_P],
3939 [
3940 : "${INSTALL:=install}"
3941 AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[
3942         rm -rf ./conftest*
3943         date >conftest.in
3944         mkdir conftest.out
3945         sleep 3
3946         if $INSTALL -p conftest.in conftest.out 2>/dev/null
3947         then
3948                 if test -f conftest.out/conftest.in
3949                 then
3950                         test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
3951                         test conftest.out/conftest.in -nt conftest.in 2>conftest.err
3952                         if test -s conftest.err
3953                         then
3954                                 cf_cv_install_p=no
3955                         else
3956                                 cf_cv_install_p=yes
3957                         fi
3958                 else
3959                         cf_cv_install_p=no
3960                 fi
3961         else
3962                 cf_cv_install_p=no
3963         fi
3964         rm -rf ./conftest*
3965 ])
3966 ])dnl
3967 dnl ---------------------------------------------------------------------------
3968 dnl CF_INSTALL_OPT_S version: 3 updated: 2021/01/05 19:23:48
3969 dnl ----------------
3970 dnl By default, we should strip executables which are installed, but leave the
3971 dnl ability to suppress that for unit-testing.
3972 AC_DEFUN([CF_INSTALL_OPT_S],
3973 [
3974 AC_MSG_CHECKING(if you want to install stripped executables)
3975 CF_ARG_DISABLE(stripping,
3976         [  --disable-stripping     do not strip (debug info) installed executables],
3977         [enable_stripping=no],
3978         [enable_stripping=yes])
3979 AC_MSG_RESULT($enable_stripping)
3980
3981 if test "$enable_stripping" = yes
3982 then
3983         INSTALL_OPT_S="-s"
3984 else
3985         INSTALL_OPT_S=
3986 fi
3987 AC_SUBST(INSTALL_OPT_S)
3988 ])dnl
3989 dnl ---------------------------------------------------------------------------
3990 dnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59
3991 dnl -----------------
3992 dnl Check if the given compiler is really the Intel compiler for Linux.  It
3993 dnl tries to imitate gcc, but does not return an error when it finds a mismatch
3994 dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
3995 dnl
3996 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
3997 dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
3998 dnl the wrappers for gcc and g++ warnings.
3999 dnl
4000 dnl $1 = GCC (default) or GXX
4001 dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
4002 dnl $3 = CFLAGS (default) or CXXFLAGS
4003 AC_DEFUN([CF_INTEL_COMPILER],[
4004 AC_REQUIRE([AC_CANONICAL_HOST])
4005 ifelse([$2],,INTEL_COMPILER,[$2])=no
4006
4007 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
4008         case "$host_os" in
4009         (linux*|gnu*)
4010                 AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
4011                 cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
4012                 ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
4013                 AC_TRY_COMPILE([],[
4014 #ifdef __INTEL_COMPILER
4015 #else
4016 make an error
4017 #endif
4018 ],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
4019 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
4020 ],[])
4021                 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
4022                 AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
4023                 ;;
4024         esac
4025 fi
4026 ])dnl
4027 dnl ---------------------------------------------------------------------------
4028 dnl CF_ISASCII version: 4 updated: 2012/10/06 17:56:13
4029 dnl ----------
4030 dnl Check if we have either a function or macro for 'isascii()'.
4031 AC_DEFUN([CF_ISASCII],
4032 [
4033 AC_MSG_CHECKING(for isascii)
4034 AC_CACHE_VAL(cf_cv_have_isascii,[
4035         AC_TRY_LINK([#include <ctype.h>],[int x = isascii(' ')],
4036         [cf_cv_have_isascii=yes],
4037         [cf_cv_have_isascii=no])
4038 ])dnl
4039 AC_MSG_RESULT($cf_cv_have_isascii)
4040 test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII,1,[Define to 1 if we have isascii()])
4041 ])dnl
4042 dnl ---------------------------------------------------------------------------
4043 dnl CF_LARGEFILE version: 12 updated: 2020/03/19 20:23:48
4044 dnl ------------
4045 dnl Add checks for large file support.
4046 AC_DEFUN([CF_LARGEFILE],[
4047 ifdef([AC_FUNC_FSEEKO],[
4048         AC_SYS_LARGEFILE
4049         if test "$enable_largefile" != no ; then
4050         AC_FUNC_FSEEKO
4051
4052         # Normally we would collect these definitions in the config.h,
4053         # but (like _XOPEN_SOURCE), some environments rely on having these
4054         # defined before any of the system headers are included.  Another
4055         # case comes up with C++, e.g., on AIX the compiler compiles the
4056         # header files by themselves before looking at the body files it is
4057         # told to compile.  For ncurses, those header files do not include
4058         # the config.h
4059         if test "$ac_cv_sys_large_files" != no
4060         then
4061                 CF_APPEND_TEXT(CPPFLAGS,-D_LARGE_FILES)
4062         fi
4063         if test "$ac_cv_sys_largefile_source" != no
4064         then
4065                 CF_APPEND_TEXT(CPPFLAGS,-D_LARGEFILE_SOURCE)
4066         fi
4067         if test "$ac_cv_sys_file_offset_bits" != no
4068         then
4069                 CF_APPEND_TEXT(CPPFLAGS,-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits)
4070         fi
4071
4072         AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[
4073                 AC_TRY_COMPILE([
4074 #pragma GCC diagnostic error "-Wincompatible-pointer-types"
4075 #include <sys/types.h>
4076 #include <dirent.h>
4077                 ],[
4078                 /* if transitional largefile support is setup, this is true */
4079                 extern struct dirent64 * readdir(DIR *);
4080                 struct dirent64 *x = readdir((DIR *)0);
4081                 struct dirent *y = readdir((DIR *)0);
4082                 int z = x - y;
4083                 (void)z;
4084                 ],
4085                 [cf_cv_struct_dirent64=yes],
4086                 [cf_cv_struct_dirent64=no])
4087         ])
4088         test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Define to 1 if we have struct dirent64])
4089         fi
4090 ])
4091 ])
4092 dnl ---------------------------------------------------------------------------
4093 dnl CF_LDFLAGS_STATIC version: 14 updated: 2021/01/02 17:09:14
4094 dnl -----------------
4095 dnl Check for compiler/linker flags used to temporarily force usage of static
4096 dnl libraries.  This depends on the compiler and platform.  Use this to help
4097 dnl ensure that the linker picks up a given library based on its position in
4098 dnl the list of linker options and libraries.
4099 AC_DEFUN([CF_LDFLAGS_STATIC],[
4100
4101 if test "$GCC" = yes ; then
4102         case "$cf_cv_system_name" in
4103         (OS/2*|os2*|aix[[4]]*|solaris2.1[[0-9]]|darwin*)
4104                 LDFLAGS_STATIC=
4105                 LDFLAGS_SHARED=
4106                 ;;
4107         (*)     # normally, except when broken
4108                 LDFLAGS_STATIC=-static
4109                 LDFLAGS_SHARED=-dynamic
4110                 ;;
4111         esac
4112 else
4113         case "$cf_cv_system_name" in
4114         (aix[[4-7]]*)   # from ld manpage
4115                 LDFLAGS_STATIC=-bstatic
4116                 LDFLAGS_SHARED=-bdynamic
4117                 ;;
4118         (hpux*)         # from ld manpage for hpux10.20, hpux11.11
4119                 # We could also use just "archive" and "shared".
4120                 LDFLAGS_STATIC=-Wl,-a,archive_shared
4121                 LDFLAGS_SHARED=-Wl,-a,shared_archive
4122                 ;;
4123         (irix*)         # from ld manpage IRIX64
4124                 LDFLAGS_STATIC=-Bstatic
4125                 LDFLAGS_SHARED=-Bdynamic
4126                 ;;
4127         (osf[[45]]*)    # from ld manpage osf4.0d, osf5.1
4128                 # alternative "-oldstyle_liblookup" (not in cc manpage)
4129                 LDFLAGS_STATIC=-noso
4130                 LDFLAGS_SHARED=-so_archive
4131                 ;;
4132         (solaris2*)
4133                 LDFLAGS_STATIC=-Bstatic
4134                 LDFLAGS_SHARED=-Bdynamic
4135                 ;;
4136         esac
4137 fi
4138
4139 if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED"
4140 then
4141         AC_MSG_CHECKING(if linker supports switching between static/dynamic)
4142
4143         rm -f libconftest.a
4144         cat >conftest.$ac_ext <<EOF
4145 #line __oline__ "configure"
4146 #include <stdio.h>
4147 int cf_ldflags_static(FILE *fp) { return fflush(fp); }
4148 EOF
4149         if AC_TRY_EVAL(ac_compile) ; then
4150                 ( $AR $ARFLAGS libconftest.a conftest.o ) 2>&AC_FD_CC 1>/dev/null
4151                 ( eval $RANLIB libconftest.a ) 2>&AC_FD_CC >/dev/null
4152         fi
4153         rm -f conftest.*
4154
4155         cf_save_LIBS="$LIBS"
4156
4157         LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS"
4158         AC_TRY_LINK([
4159 #line __oline__ "configure"
4160 #include <stdio.h>
4161 int cf_ldflags_static(FILE *fp);
4162 ],[
4163         return cf_ldflags_static(stdin);
4164 ],[
4165         # some linkers simply ignore the -dynamic
4166         case x`file "conftest$ac_exeext" 2>/dev/null` in
4167         (*static*)
4168                 cf_ldflags_static=no
4169                 ;;
4170         (*)
4171                 cf_ldflags_static=yes
4172                 ;;
4173         esac
4174 ],[cf_ldflags_static=no])
4175
4176         rm -f libconftest.*
4177         LIBS="$cf_save_LIBS"
4178
4179         AC_MSG_RESULT($cf_ldflags_static)
4180
4181         if test "$cf_ldflags_static" != yes
4182         then
4183                 LDFLAGS_STATIC=
4184                 LDFLAGS_SHARED=
4185         fi
4186 else
4187         LDFLAGS_STATIC=
4188         LDFLAGS_SHARED=
4189 fi
4190
4191 AC_SUBST(LDFLAGS_STATIC)
4192 AC_SUBST(LDFLAGS_SHARED)
4193 ])
4194 dnl ---------------------------------------------------------------------------
4195 dnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04
4196 dnl ---------------
4197 dnl For the given system and compiler, find the compiler flags to pass to the
4198 dnl loader to use the "rpath" feature.
4199 AC_DEFUN([CF_LD_RPATH_OPT],
4200 [
4201 AC_REQUIRE([CF_CHECK_CACHE])
4202
4203 LD_RPATH_OPT=
4204 if test "x$cf_cv_enable_rpath" != xno
4205 then
4206         AC_MSG_CHECKING(for an rpath option)
4207         case "$cf_cv_system_name" in
4208         (irix*)
4209                 if test "$GCC" = yes; then
4210                         LD_RPATH_OPT="-Wl,-rpath,"
4211                 else
4212                         LD_RPATH_OPT="-rpath "
4213                 fi
4214                 ;;
4215         (linux*|gnu*|k*bsd*-gnu|freebsd*)
4216                 LD_RPATH_OPT="-Wl,-rpath,"
4217                 ;;
4218         (openbsd[[2-9]].*|mirbsd*)
4219                 LD_RPATH_OPT="-Wl,-rpath,"
4220                 ;;
4221         (dragonfly*)
4222                 LD_RPATH_OPT="-rpath "
4223                 ;;
4224         (netbsd*)
4225                 LD_RPATH_OPT="-Wl,-rpath,"
4226                 ;;
4227         (osf*|mls+*)
4228                 LD_RPATH_OPT="-rpath "
4229                 ;;
4230         (solaris2*)
4231                 LD_RPATH_OPT="-R"
4232                 ;;
4233         (*)
4234                 ;;
4235         esac
4236         AC_MSG_RESULT($LD_RPATH_OPT)
4237
4238         case "x$LD_RPATH_OPT" in
4239         (x-R*)
4240                 AC_MSG_CHECKING(if we need a space after rpath option)
4241                 cf_save_LIBS="$LIBS"
4242                 CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
4243                 AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
4244                 LIBS="$cf_save_LIBS"
4245                 AC_MSG_RESULT($cf_rpath_space)
4246                 test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
4247                 ;;
4248         esac
4249 fi
4250 ])dnl
4251 dnl ---------------------------------------------------------------------------
4252 dnl CF_LD_SEARCHPATH version: 3 updated: 2021/03/05 19:13:35
4253 dnl ----------------
4254 dnl Try to obtain the linker's search-path, for use in scripts.
4255 dnl
4256 dnl Ignore LD_LIBRARY_PATH, etc.
4257 AC_DEFUN([CF_LD_SEARCHPATH],[
4258 AC_CACHE_CHECK(for linker search path,cf_cv_ld_searchpath,[
4259
4260 if test "$cross_compiling" != yes ; then
4261
4262 # GNU binutils' ld does not involve permissions which may stop ldconfig.
4263 cf_pathlist=`ld --verbose 2>/dev/null | grep SEARCH_DIR | sed -e 's,SEARCH_DIR[[("=]][[("=]]*,,g' -e 's/"[[)]];//gp' | sort -u`
4264
4265 # The -NX options tell newer versions of Linux ldconfig to not attempt to
4266 # update the cache, which makes it run faster.
4267 test -z "$cf_pathlist" && \
4268         cf_pathlist=`(ldconfig -NX -v) 2>/dev/null | sed -e '/^[[       ]]/d' -e 's/:$//' | sort -u`
4269
4270 test -z "$cf_pathlist" &&
4271         cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e '/^[[        ]]/d' -e 's/:$//p' | sort -u`
4272
4273 # This works with OpenBSD 6.5, which lists only filenames
4274 test -z "$cf_pathlist" &&
4275         cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e 's,^Adding \(.*\)/.*[$],\1,p' | sort -u`
4276
4277 if test -z "$cf_pathlist"
4278 then
4279         # dyld default path with MacOS
4280         if test -f /usr/bin/otool && test "x`uname -s`" = xDarwin
4281         then
4282                 # do this to bypass check
4283                 cf_cv_ld_searchpath='$HOME/lib'
4284                 cf_pathlist="/usr/local/lib /lib /usr/lib"
4285         fi
4286 fi
4287
4288 if test -z "$cf_pathlist"
4289 then
4290         # Solaris is "SunOS"
4291         if test -f /usr/bin/isainfo && test "x`uname -s`" = xSunOS
4292         then
4293                 case x`(isainfo -b)` in
4294                 (x64)
4295                         cf_pathlist="$cf_pathlist /lib/64 /usr/lib/64"
4296                         ;;
4297                 (x32)
4298                         test -d /usr/ccs/lib && cf_pathlist="$cf_pathlist /usr/ccs/lib"
4299                         cf_pathlist="$cf_pathlist /lib /usr/lib"
4300                         ;;
4301                 (*)
4302                         AC_MSG_WARN(problem with Solaris architecture)
4303                         ;;
4304                 esac
4305         fi
4306 fi
4307
4308 if test -z "$cf_pathlist"
4309 then
4310         # HP-UX
4311         if test x"`uname -s`" = xHP-UX
4312         then
4313                 case x`getconf LONG_BIT` in
4314                 (x64)
4315                         cf_pathlist="/usr/lib/hpux64"
4316                         ;;
4317                 (x*)
4318                         cf_pathlist="/usr/lib/hpux32"
4319                         ;;
4320                 esac
4321         fi
4322 fi
4323
4324 fi
4325
4326 # If nothing else, assume it is conventional
4327 test -z "$cf_pathlist" && cf_pathlist="/usr/lib /lib"
4328
4329 # Finally, check that this is only directories
4330 for cf_path in [$]0 $cf_pathlist
4331 do
4332         if test -d "$cf_path"; then
4333                 test -n "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath="${cf_cv_ld_searchpath} "
4334                 cf_cv_ld_searchpath="${cf_cv_ld_searchpath}${cf_path}"
4335         fi
4336 done
4337
4338 # Ensure that it is nonempty
4339 test -z "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath=/usr/lib
4340 ])
4341
4342 LD_SEARCHPATH=`echo "$cf_cv_ld_searchpath"|sed -e 's/ /|/g'`
4343 AC_SUBST(LD_SEARCHPATH)
4344 ])dnl
4345 dnl ---------------------------------------------------------------------------
4346 dnl CF_LIBRARY_PATH version: 11 updated: 2021/01/01 13:31:04
4347 dnl ---------------
4348 dnl Construct a search-list of directories for a nonstandard library-file
4349 dnl
4350 dnl Parameters
4351 dnl     $1 = the variable to return as result
4352 dnl     $2 = the package name
4353 AC_DEFUN([CF_LIBRARY_PATH],
4354 [
4355 $1=
4356 cf_library_path_list=""
4357 if test -n "${LDFLAGS}${LIBS}" ; then
4358         for cf_library_path in $LDFLAGS $LIBS
4359         do
4360                 case "$cf_library_path" in
4361                 (-L*)
4362                         cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
4363                         CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE)
4364                         cf_library_path_list="$cf_library_path_list [$]$1"
4365                         ;;
4366                 esac
4367         done
4368 fi
4369
4370 CF_SUBDIR_PATH($1,$2,lib)
4371
4372 $1="$cf_library_path_list [$]$1"
4373 ])dnl
4374 dnl ---------------------------------------------------------------------------
4375 dnl CF_LIBTOOL_VERSION version: 1 updated: 2013/04/06 18:03:09
4376 dnl ------------------
4377 AC_DEFUN([CF_LIBTOOL_VERSION],[
4378 if test -n "$LIBTOOL" && test "$LIBTOOL" != none
4379 then
4380         cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([[^)]]*)//g' -e 's/^[[^1-9]]*//' -e 's/[[^0-9.]].*//'`
4381 else
4382         cf_cv_libtool_version=
4383 fi
4384 test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
4385 ])dnl
4386 dnl ---------------------------------------------------------------------------
4387 dnl CF_LIB_PREFIX version: 14 updated: 2021/01/01 13:31:04
4388 dnl -------------
4389 dnl Compute the library-prefix for the given host system
4390 dnl $1 = variable to set
4391 define([CF_LIB_PREFIX],
4392 [
4393         case "$cf_cv_system_name" in
4394         (OS/2*|os2*)
4395                 if test "$DFT_LWR_MODEL" = libtool; then
4396                         LIB_PREFIX='lib'
4397                 else
4398                         LIB_PREFIX=''
4399                 fi
4400                 ;;
4401         (*-msvc*)
4402                 LIB_PREFIX=''
4403                 ;;
4404         (*)     LIB_PREFIX='lib'
4405                 ;;
4406         esac
4407 ifelse($1,,,[$1=$LIB_PREFIX])
4408         AC_SUBST(LIB_PREFIX)
4409 ])dnl
4410 dnl ---------------------------------------------------------------------------
4411 dnl CF_LIB_RULES version: 97 updated: 2021/07/17 13:10:54
4412 dnl ------------
4413 dnl Append definitions and rules for the given models to the subdirectory
4414 dnl Makefiles, and the recursion rule for the top-level Makefile.  If the
4415 dnl subdirectory is a library-source directory, modify the Libs_To_Make list in
4416 dnl the corresponding makefile to list the models that we'll generate.
4417 dnl
4418 dnl For shared libraries, make a list of symbolic links to construct when
4419 dnl generating each library.  The convention used for Linux is the simplest
4420 dnl one:
4421 dnl     lib<name>.so    ->
4422 dnl     lib<name>.so.<major>    ->
4423 dnl     lib<name>.so.<maj>.<minor>
4424 dnl
4425 dnl Note: Libs_To_Make is mixed case, since it is not a pure autoconf variable.
4426 AC_DEFUN([CF_LIB_RULES],
4427 [AC_REQUIRE([AC_PROG_FGREP])dnl
4428 AC_REQUIRE([CF_MAKE_PHONY])dnl
4429
4430 cf_prefix=$LIB_PREFIX
4431 AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
4432
4433 case "$cf_cv_shlib_version" in
4434 (cygdll|msysdll|mingw|msvcdll)
4435         TINFO_NAME=$TINFO_ARG_SUFFIX
4436         TINFO_SUFFIX=.dll
4437         ;;
4438 esac
4439
4440 if test -n "$TINFO_SUFFIX" ; then
4441         case "$TINFO_SUFFIX" in
4442         (tw*)
4443                 TINFO_NAME="${TINFO_NAME}tw${EXTRA_SUFFIX}"
4444                 TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^tw'$EXTRA_SUFFIX'//'`
4445                 ;;
4446         (t*)
4447                 TINFO_NAME="${TINFO_NAME}t${EXTRA_SUFFIX}"
4448                 TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^t'$EXTRA_SUFFIX'//'`
4449                 ;;
4450         (w*)
4451                 TINFO_NAME="${TINFO_NAME}w${EXTRA_SUFFIX}"
4452                 TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^w'$EXTRA_SUFFIX'//'`
4453                 ;;
4454         esac
4455 fi
4456
4457 for cf_dir in $SRC_SUBDIRS
4458 do
4459         if test ! -d "$srcdir/$cf_dir" ; then
4460                 continue
4461         elif test -f "$srcdir/$cf_dir/modules" ; then
4462
4463                 SHARED_LIB=
4464                 Libs_To_Make=
4465                 cf_awk_program=
4466                 if test -n "${cf_cv_abi_version}" && test "x${cf_cv_abi_version}" != "x5"
4467                 then
4468                         cf_awk_program="$cf_awk_program\
4469 /deprecated in ABI${cf_cv_abi_version}/ { next; }\
4470 { sub(\"NCURSES([[WT]]+)?\", \"&${cf_cv_abi_version}\"); }\
4471 "
4472                 fi
4473
4474                 if test "x$WILDCARD_SYMS" = xno
4475                 then
4476                         cf_awk_program="$cf_awk_program\
4477 /[[     ]]_\\*;/ { skip=1; next; }\
4478 "
4479                 fi
4480
4481                 if test "x$cf_awk_program" != "x"
4482                 then
4483                         cat >>$cf_dir/Makefile <<CF_EOF
4484
4485 # Generated by CF_LIB_RULES
4486 resulting.map: $UNALTERED_SYMS
4487         $AWK 'BEGIN { skip = 1; last=""; } \
4488 $cf_awk_program \
4489 { if ( last != "" && ( skip == 0 || \[$]\[$]0 !~ /}/ ) ) { print last; }\
4490  skip = 0; last = \[$]\[$]0; } \
4491 END { print last; }' < "$UNALTERED_SYMS" >\[$]@
4492
4493 distclean::
4494         rm -f resulting.map
4495 CF_EOF
4496                 fi
4497
4498                 for cf_item in $cf_LIST_MODELS
4499                 do
4500                         CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf)
4501                         if test "$cf_dir" = "c++"
4502                         then
4503                                 CF_MAP_LIB_BASENAME(cf_libname,cxx)
4504                         else
4505                                 CF_MAP_LIB_BASENAME(cf_libname,$cf_dir)
4506                         fi
4507                         test -z "$cf_libname" && cf_libname="$cf_dir"
4508                         if test "$cf_item" = shared ; then
4509                                 if test -n "${LIB_SUFFIX}"
4510                                 then
4511                                         cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'`
4512                                 else
4513                                         cf_shared_suffix="$cf_suffix"
4514                                 fi
4515                                 if test "$cf_cv_do_symlinks" = yes ; then
4516                                         cf_version_name=
4517
4518                                         case "$cf_cv_shlib_version" in
4519                                         (rel)
4520                                                 cf_version_name=REL_VERSION
4521                                                 ;;
4522                                         (abi)
4523                                                 cf_version_name=ABI_VERSION
4524                                                 ;;
4525                                         esac
4526
4527                                         if test -n "$cf_version_name"
4528                                         then
4529                                                 case "$cf_cv_system_name" in
4530                                                 (darwin*)
4531                                                         # "w", etc?
4532                                                         cf_suffix="${USE_LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix"
4533                                                         ;;
4534                                                 (*)
4535                                                         cf_suffix="$cf_suffix"'.${'$cf_version_name'}'
4536                                                         ;;
4537                                                 esac
4538                                         fi
4539                                         if test -n "${USE_LIB_SUFFIX}"
4540                                         then
4541                                                 cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'`
4542                                         else
4543                                                 cf_shared_suffix="$cf_suffix"
4544                                         fi
4545                                 fi
4546                                 # cygwin needs import library, and has unique naming convention
4547                                 # use autodetected ${cf_prefix} for import lib and static lib, but
4548                                 # use 'cyg' prefix for shared lib.
4549                                 case "$cf_cv_shlib_version" in
4550                                 (cygdll)
4551                                         cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4552                                         cf_add_lib="../lib/cyg${cf_libname}${cf_cygsuf}"
4553                                         ;;
4554                                 (msysdll)
4555                                         cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4556                                         cf_add_lib="../lib/msys-${cf_libname}${cf_cygsuf}"
4557                                         ;;
4558                                 (mingw)
4559                                         cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4560                                         cf_add_lib="../lib/lib${cf_libname}${cf_cygsuf}"
4561                                         ;;
4562                                 (msvcdll)
4563                                         cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4564                                         cf_add_lib="../lib/${cf_libname}${cf_cygsuf}"
4565                                         ;;
4566                                 (*)
4567                                         cf_add_lib=
4568                                         ;;
4569                                 esac
4570                                 if test -n "$cf_add_lib"
4571                                 then
4572                                         Libs_To_Make="$Libs_To_Make $cf_add_lib"
4573                                         continue
4574                                 fi
4575                         fi
4576                         cf_add_lib="../lib/${cf_prefix}${cf_libname}${cf_suffix}"
4577                         Libs_To_Make="$Libs_To_Make $cf_add_lib"
4578                 done
4579
4580                 if test "$cf_dir" = ncurses ; then
4581                         cf_subsets="$LIB_SUBSETS"
4582                         cf_r_parts="$cf_subsets"
4583                         cf_liblist="$Libs_To_Make"
4584
4585                         while test -n "$cf_r_parts"
4586                         do
4587                                 cf_l_parts=`echo "$cf_r_parts" |sed -e 's/ .*$//'`
4588                                 cf_r_parts=`echo "$cf_r_parts" |sed -e 's/^[[^ ]]* //'`
4589                                 if test "$cf_l_parts" != "$cf_r_parts" ; then
4590                                         cf_add_lib=
4591                                         case "$cf_l_parts" in
4592                                         (*termlib*)
4593                                                 cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g`
4594                                                 ;;
4595                                         (*ticlib*)
4596                                                 cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g`
4597                                                 ;;
4598                                         (*)
4599                                                 break
4600                                                 ;;
4601                                         esac
4602                                         if test -n "$cf_add_lib"; then
4603                                                 Libs_To_Make="$cf_add_lib $Libs_To_Make"
4604                                         fi
4605                                 else
4606                                         break
4607                                 fi
4608                         done
4609                 else
4610                         cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'`
4611                 fi
4612
4613                 if test "$cf_dir" = c++; then
4614                         if test "x$with_shared_cxx" != xyes && test -n "$cf_shared_suffix"; then
4615                                 cf_list=
4616                                 for cf_item in $Libs_To_Make
4617                                 do
4618                                         case "$cf_item" in
4619                                         (*.a)
4620                                                 ;;
4621                                         (*)
4622                                                 cf_item=`echo "$cf_item" | sed -e "s,"$cf_shared_suffix",.a,"`
4623                                                 ;;
4624                                         esac
4625                                         for cf_test in $cf_list
4626                                         do
4627                                                 if test "$cf_test" = "$cf_item"
4628                                                 then
4629                                                         cf_LIST_MODELS=`echo "$cf_LIST_MODELS" | sed -e 's/normal//'`
4630                                                         cf_item=
4631                                                         break
4632                                                 fi
4633                                         done
4634                                         test -n "$cf_item" && cf_list="$cf_list $cf_item"
4635                                 done
4636                                 Libs_To_Make="$cf_list"
4637                         fi
4638                 fi
4639
4640                 sed -e "s%@Libs_To_Make@%$Libs_To_Make%" \
4641                     -e "s%@SHARED_LIB@%$SHARED_LIB%" \
4642                         "$cf_dir/Makefile" >$cf_dir/Makefile.out
4643                 mv "$cf_dir/Makefile.out" "$cf_dir/Makefile"
4644
4645                 $AWK -f "$srcdir/mk-0th.awk" \
4646                         libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" ticlib="$TICS_LIB_SUFFIX" termlib="$TINFO_LIB_SUFFIX" \
4647                         "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile
4648
4649                 for cf_subset in $cf_subsets
4650                 do
4651                         cf_subdirs=
4652                         for cf_item in $cf_LIST_MODELS
4653                         do
4654
4655                         echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})"
4656                         CF_UPPER(cf_ITEM,$cf_item)
4657
4658                         CXX_MODEL=$cf_ITEM
4659                         if test "$CXX_MODEL" = SHARED; then
4660                                 case "$cf_cv_shlib_version" in
4661                                 (cygdll|msysdll|mingw|msvcdll)
4662                                         test "x$with_shared_cxx" = xno && CF_VERBOSE(overriding CXX_MODEL to SHARED)
4663                                         with_shared_cxx=yes
4664                                         ;;
4665                                 (*)
4666                                         test "x$with_shared_cxx" = xno && CXX_MODEL=NORMAL
4667                                         ;;
4668                                 esac
4669                         fi
4670
4671                         CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf)
4672                         CF_OBJ_SUBDIR($cf_item,cf_subdir)
4673
4674                         # Test for case where we build libtinfo with a different name.
4675                         cf_libname=$cf_dir
4676                         if test "$cf_dir" = ncurses ; then
4677                                 case "$cf_subset" in
4678                                 (*base*)
4679                                         cf_libname=${cf_libname}$USE_LIB_SUFFIX
4680                                         ;;
4681                                 (*termlib*)
4682                                         cf_libname=$TINFO_LIB_SUFFIX
4683                                         ;;
4684                                 (ticlib*)
4685                                         cf_libname=$TICS_LIB_SUFFIX
4686                                         ;;
4687                                 esac
4688                         elif test "$cf_dir" = c++ ; then
4689                                 CF_MAP_LIB_BASENAME(cf_libname,cxx)
4690                                 cf_libname=${cf_libname}$USE_LIB_SUFFIX
4691                         else
4692                                 CF_MAP_LIB_BASENAME(cf_libname,$cf_dir)
4693                                 cf_libname=${cf_libname}$USE_LIB_SUFFIX
4694                         fi
4695                         if test -n "${USE_ARG_SUFFIX}" ; then
4696                                 # undo $USE_LIB_SUFFIX add-on in CF_LIB_SUFFIX
4697                                 cf_suffix=`echo "$cf_suffix" |sed -e "s%^${USE_LIB_SUFFIX}%%"`
4698                         fi
4699
4700                         # These dependencies really are for development, not
4701                         # builds, but they are useful in porting, too.
4702                         cf_depend="../include/ncurses_cfg.h"
4703                         if test "$srcdir" = "."; then
4704                                 cf_reldir="."
4705                         else
4706                                 cf_reldir="\${srcdir}"
4707                         fi
4708
4709                         if test -f "$srcdir/$cf_dir/$cf_dir.priv.h" ; then
4710                                 cf_depend="$cf_depend $cf_reldir/$cf_dir.priv.h"
4711                         elif test -f "$srcdir/$cf_dir/curses.priv.h" ; then
4712                                 cf_depend="$cf_depend $cf_reldir/curses.priv.h"
4713                         fi
4714
4715                         cf_dir_suffix=
4716                         old_cf_suffix="$cf_suffix"
4717                         if test "$cf_cv_shlib_version_infix" = yes ; then
4718                         if test -n "$USE_LIB_SUFFIX" ; then
4719                                 case "$USE_LIB_SUFFIX" in
4720                                 (tw*)
4721                                         cf_libname=`echo "$cf_libname" | sed 's/tw'$EXTRA_SUFFIX'$//'`
4722                                         cf_suffix=`echo "$cf_suffix" | sed 's/^tw'$EXTRA_SUFFIX'//'`
4723                                         cf_dir_suffix=tw$EXTRA_SUFFIX
4724                                         ;;
4725                                 (t*)
4726                                         cf_libname=`echo "$cf_libname" | sed 's/t'$EXTRA_SUFFIX'$//'`
4727                                         cf_suffix=`echo "$cf_suffix" | sed 's/^t'$EXTRA_SUFFIX'//'`
4728                                         cf_dir_suffix=t$EXTRA_SUFFIX
4729                                         ;;
4730                                 (w*)
4731                                         cf_libname=`echo "$cf_libname" | sed 's/w'$EXTRA_SUFFIX'$//'`
4732                                         cf_suffix=`echo "$cf_suffix" | sed 's/^w'$EXTRA_SUFFIX'//'`
4733                                         cf_dir_suffix=w$EXTRA_SUFFIX
4734                                         ;;
4735                                 (*)
4736                                         cf_libname=`echo "$cf_libname" | sed 's/'$EXTRA_SUFFIX'$//'`
4737                                         cf_suffix=`echo "$cf_suffix" | sed 's/^'$EXTRA_SUFFIX'//'`
4738                                         cf_dir_suffix=$EXTRA_SUFFIX
4739                                         ;;
4740                                 esac
4741                         fi
4742                         fi
4743
4744                         $AWK -f "$srcdir/mk-1st.awk" \
4745                                 name=${cf_libname}${cf_dir_suffix} \
4746                                 traces=$LIB_TRACING \
4747                                 MODEL=$cf_ITEM \
4748                                 CXX_MODEL=$CXX_MODEL \
4749                                 LIB_SUFFIX=$LIB_SUFFIX \
4750                                 USE_LIB_SUFFIX=$USE_LIB_SUFFIX \
4751                                 make_phony="${cf_cv_make_PHONY:-no}" \
4752                                 model=$cf_subdir \
4753                                 prefix=$cf_prefix \
4754                                 suffix=$cf_suffix \
4755                                 subset=$cf_subset \
4756                                 driver=$cf_cv_term_driver \
4757                                 SymLink="$LN_S" \
4758                                 TermlibRoot=$TINFO_NAME \
4759                                 TermlibSuffix=$TINFO_SUFFIX \
4760                                 ShlibVer=$cf_cv_shlib_version \
4761                                 ShlibVerInfix=$cf_cv_shlib_version_infix \
4762                                 ReLink=${cf_cv_do_relink:-no} \
4763                                 ReRanlib=${cf_cv_do_reranlib:-yes} \
4764                                 DoLinks=$cf_cv_do_symlinks \
4765                                 rmSoLocs=$cf_cv_rm_so_locs \
4766                                 ldconfig="$LDCONFIG" \
4767                                 overwrite=$WITH_OVERWRITE \
4768                                 depend="$cf_depend" \
4769                                 host="$host" \
4770                                 libtool_version="$LIBTOOL_VERSION" \
4771                                 "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile
4772
4773                         cf_suffix="$old_cf_suffix"
4774
4775                         for cf_subdir2 in $cf_subdirs lib
4776                         do
4777                                 test "$cf_subdir" = "$cf_subdir2" && break
4778                         done
4779                         test "${cf_subset}.${cf_subdir2}" != "${cf_subset}.${cf_subdir}" && \
4780                         $AWK -f "$srcdir/mk-2nd.awk" \
4781                                 name=$cf_dir \
4782                                 traces=$LIB_TRACING \
4783                                 MODEL=$cf_ITEM \
4784                                 model=$cf_subdir \
4785                                 subset=$cf_subset \
4786                                 srcdir=$srcdir \
4787                                 echo=$WITH_ECHO \
4788                                 crenames=$cf_cv_prog_CC_c_o \
4789                                 cxxrenames=$cf_cv_prog_CXX_c_o \
4790                                 "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile
4791                         cf_subdirs="$cf_subdirs $cf_subdir"
4792                         done
4793                 done
4794         fi
4795
4796         echo '  ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@ )' >>Makefile
4797 done
4798
4799 echo >> Makefile
4800 echo '# generated by CF_LIB_RULES' >> Makefile
4801
4802 if test "x$cf_cv_make_PHONY" = xyes ; then
4803         cat >> Makefile <<-CF_EOF
4804
4805         .PHONY :        libs
4806         .PHONY :        lintlib
4807         .PHONY :        install.includes
4808         .PHONY :        uninstall.includes
4809         .PHONY :        install.libs
4810         .PHONY :        uninstall.libs
4811 CF_EOF
4812 fi
4813
4814 for cf_dir in $SRC_SUBDIRS
4815 do
4816         if test ! -d "$srcdir/$cf_dir" ; then
4817                 continue
4818         fi
4819
4820         if test -f "$cf_dir/Makefile" ; then
4821                 case "$cf_dir" in
4822                 (Ada95)
4823                         echo 'libs \' >> Makefile
4824                         echo 'install.libs \' >> Makefile
4825                         echo 'uninstall.libs ::' >> Makefile
4826                         echo '  ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@ )' >> Makefile
4827                         ;;
4828                 esac
4829         fi
4830
4831         if test -f "$srcdir/$cf_dir/modules" ; then
4832
4833                 if test "x$cf_cv_make_PHONY" = xyes ; then
4834                         cat >> Makefile <<-CF_EOF
4835
4836                         .PHONY :        install.$cf_dir
4837                         .PHONY :        uninstall.$cf_dir
4838 CF_EOF
4839                 fi
4840
4841                 echo >> Makefile
4842                 if test -f "$srcdir/$cf_dir/headers" ; then
4843 cat >> Makefile <<CF_EOF
4844 install.includes \\
4845 uninstall.includes \\
4846 CF_EOF
4847                 fi
4848
4849 cat >> Makefile <<CF_EOF
4850 lint \\
4851 libs \\
4852 lintlib \\
4853 install.libs \\
4854 uninstall.libs \\
4855 install.$cf_dir \\
4856 uninstall.$cf_dir ::
4857         ( cd "$cf_dir" && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4858 CF_EOF
4859         elif test -f "$srcdir/$cf_dir/headers" ; then
4860 cat >> Makefile <<CF_EOF
4861
4862 libs \\
4863 install.libs \\
4864 uninstall.libs \\
4865 install.includes \\
4866 uninstall.includes ::
4867         ( cd "$cf_dir" && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4868 CF_EOF
4869 fi
4870 done
4871
4872 if test "x$cf_cv_make_PHONY" = xyes ; then
4873         cat >> Makefile <<-CF_EOF
4874
4875         .PHONY :        install.data
4876         .PHONY :        uninstall.data
4877 CF_EOF
4878 fi
4879
4880 if test "x$cf_with_db_install" = xyes; then
4881 cat >> Makefile <<CF_EOF
4882
4883 install.libs uninstall.libs \\
4884 install.data uninstall.data ::
4885 $MAKE_TERMINFO  ( cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4886 CF_EOF
4887 else
4888 cat >> Makefile <<CF_EOF
4889
4890 install.libs uninstall.libs ::
4891         ( cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4892 CF_EOF
4893 fi
4894
4895 if test "x$cf_with_manpages" = xyes; then
4896
4897 if test "x$cf_cv_make_PHONY" = xyes ; then
4898         cat >> Makefile <<-CF_EOF
4899
4900         .PHONY :        install.man
4901         .PHONY :        uninstall.man
4902 CF_EOF
4903 fi
4904
4905 cat >> Makefile <<CF_EOF
4906
4907 install.man \\
4908 uninstall.man ::
4909         ( cd man && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4910 CF_EOF
4911 fi
4912
4913 cat >> Makefile <<CF_EOF
4914
4915 distclean ::
4916         rm -f config.cache config.log config.status Makefile include/ncurses_cfg.h
4917         rm -f headers.sh headers.sed mk_shared_lib.sh
4918         rm -f edit_man.* man_alias.*
4919         rm -rf \${DIRS_TO_MAKE}
4920 CF_EOF
4921
4922 # Special case: tack's manpage lives in its own directory.
4923 if test "x$cf_with_manpages" = xyes; then
4924 if test "x$cf_with_tack" = "xyes"; then
4925 cat >> Makefile <<CF_EOF
4926
4927 install.man \\
4928 uninstall.man ::
4929         ( cd tack && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4930 CF_EOF
4931 fi
4932 fi
4933
4934 dnl If we're installing into a subdirectory of /usr/include, etc., we should
4935 dnl prepend the subdirectory's name to the "#include" paths.  It won't hurt
4936 dnl anything, and will make it more standardized.  It's awkward to decide this
4937 dnl at configuration because of quoting, so we'll simply make all headers
4938 dnl installed via a script that can do the right thing.
4939
4940 rm -f headers.sed headers.sh
4941
4942 dnl ( generating this script makes the makefiles a little tidier :-)
4943 echo creating headers.sh
4944 cat >headers.sh <<CF_EOF
4945 #! $SHELL
4946 # This shell script is generated by the 'configure' script.  It is invoked in a
4947 # subdirectory of the build tree.  It generates a sed-script in the parent
4948 # directory that is used to adjust includes for header files that reside in a
4949 # subdirectory of /usr/include, etc.
4950 PRG=""
4951 while test \[$]# != 3
4952 do
4953 PRG="\$PRG \[$]1"; shift
4954 done
4955 DST=\[$]1
4956 REF=\[$]2
4957 SRC=\[$]3
4958 TMPSRC=\${TMPDIR:-/tmp}/\`basename \$SRC\`\$\$
4959 TMPSED=\${TMPDIR:-/tmp}/headers.sed\$\$
4960 echo installing \$SRC in \$DST
4961 CF_EOF
4962
4963 if test "$WITH_CURSES_H" = yes; then
4964         cat >>headers.sh <<CF_EOF
4965 case \$DST in
4966 (/*/include/*)
4967         END=\`basename \$DST\`
4968         for i in \`cat \$REF/../*/headers |${FGREP-fgrep} -v "#"\`
4969         do
4970                 NAME=\`basename \$i\`
4971                 echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
4972         done
4973         ;;
4974 (*)
4975         echo "" >> \$TMPSED
4976         ;;
4977 esac
4978 CF_EOF
4979
4980 else
4981         cat >>headers.sh <<CF_EOF
4982 case \$DST in
4983 (/*/include/*)
4984         END=\`basename \$DST\`
4985         for i in \`cat \$REF/../*/headers |${FGREP-fgrep} -v "#"\`
4986         do
4987                 NAME=\`basename \$i\`
4988                 if test "\$NAME" = "curses.h"
4989                 then
4990                         echo "s/<curses.h>/<ncurses.h>/" >> \$TMPSED
4991                         NAME=ncurses.h
4992                 fi
4993                 echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
4994         done
4995         ;;
4996 (*)
4997         echo "s/<curses.h>/<ncurses.h>/" >> \$TMPSED
4998         ;;
4999 esac
5000 CF_EOF
5001 fi
5002 cat >>headers.sh <<CF_EOF
5003 rm -f \$TMPSRC
5004 sed -f \$TMPSED \$SRC > \$TMPSRC
5005 NAME=\`basename \$SRC\`
5006 CF_EOF
5007 if test "$WITH_CURSES_H" != yes; then
5008         cat >>headers.sh <<CF_EOF
5009 test "\$NAME" = "curses.h" && NAME=ncurses.h
5010 CF_EOF
5011 fi
5012 cat >>headers.sh <<CF_EOF
5013 # Just in case someone gzip'd manpages, remove the conflicting copy.
5014 test -f \$DST/\$NAME.gz && rm -f \$DST/\$NAME.gz
5015
5016 eval \$PRG \$TMPSRC \$DST/\$NAME
5017 rm -f \$TMPSRC \$TMPSED
5018 CF_EOF
5019
5020 chmod 0755 headers.sh
5021
5022 for cf_dir in $SRC_SUBDIRS
5023 do
5024         if test ! -d "$srcdir/$cf_dir" ; then
5025                 continue
5026         fi
5027
5028         if test -f "$srcdir/$cf_dir/headers" ; then
5029                 $AWK -f "$srcdir/mk-hdr.awk" \
5030                         subset="$LIB_SUBSETS" \
5031                         compat="$WITH_CURSES_H" \
5032                         "$srcdir/$cf_dir/headers" >>$cf_dir/Makefile
5033         fi
5034
5035         if test -f "$srcdir/$cf_dir/modules" ; then
5036                 if test "$cf_dir" != "c++" ; then
5037                         if test "x$cf_cv_make_PHONY" = xyes ; then
5038                                 cat >> $cf_dir/Makefile <<-CF_EOF
5039
5040                                 .PHONY :        depend
5041 CF_EOF
5042                         fi
5043
5044                         cat >>$cf_dir/Makefile <<"CF_EOF"
5045 depend : ${AUTO_SRC}
5046         makedepend -- ${CPPFLAGS} -- ${C_SRC}
5047
5048 # DO NOT DELETE THIS LINE -- make depend depends on it.
5049 CF_EOF
5050                 fi
5051         fi
5052 done
5053 AC_SUBST(Libs_To_Make)
5054 ])dnl
5055 dnl ---------------------------------------------------------------------------
5056 dnl CF_LIB_SONAME version: 9 updated: 2021/01/04 18:48:01
5057 dnl -------------
5058 dnl Find the and soname for the given shared library.  Set the cache variable
5059 dnl cf_cv_$3_soname to this, unless it is not found.  Then set the cache
5060 dnl variable to "unknown".
5061 dnl
5062 dnl $1 = headers
5063 dnl $2 = code
5064 dnl $3 = library name
5065 AC_DEFUN([CF_LIB_SONAME],
5066 [AC_REQUIRE([AC_PROG_FGREP])dnl
5067
5068 AC_CACHE_CHECK(for soname of $3 library,cf_cv_$3_soname,[
5069
5070 cf_cv_$3_soname=unknown
5071 if test "$cross_compiling" != yes ; then
5072 cat >conftest.$ac_ext <<CF_EOF
5073 $1
5074 int main(void)
5075 {
5076 $2
5077         ${cf_cv_main_return:-return}(0);
5078 }
5079 CF_EOF
5080 cf_save_LIBS="$LIBS"
5081         CF_ADD_LIB($3)
5082         if AC_TRY_EVAL(ac_compile) ; then
5083                 if AC_TRY_EVAL(ac_link) ; then
5084                         cf_cv_$3_soname="`ldd \"conftest$ac_exeext\" 2>/dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | ${FGREP-fgrep} lib$3.`"
5085                         test -z "$cf_cv_$3_soname" && cf_cv_$3_soname=unknown
5086                 fi
5087         fi
5088 rm -rf ./conftest*
5089 LIBS="$cf_save_LIBS"
5090 fi
5091 ])
5092 ])
5093 dnl ---------------------------------------------------------------------------
5094 dnl CF_LIB_SUFFIX version: 28 updated: 2021/01/01 16:53:59
5095 dnl -------------
5096 dnl Compute the library file-suffix from the given model name
5097 dnl $1 = model name
5098 dnl $2 = variable to set (the nominal library suffix)
5099 dnl $3 = dependency variable to set (actual filename)
5100 dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
5101 AC_DEFUN([CF_LIB_SUFFIX],
5102 [
5103         case X$1 in
5104         (Xlibtool)
5105                 $2='.la'
5106                 $3=[$]$2
5107                 ;;
5108         (Xdebug)
5109                 case "$cf_cv_system_name" in
5110                 (*-msvc*)
5111                         $2='_g.lib'
5112                         ;;
5113                 (*)
5114                         $2='_g.a'
5115                         ;;
5116                 esac
5117                 $3=[$]$2
5118                 ;;
5119         (Xprofile)
5120                 case "$cf_cv_system_name" in
5121                 (*-msvc*)
5122                         $2='_p.lib'
5123                         ;;
5124                 (*)
5125                         $2='_p.a'
5126                         ;;
5127                 esac
5128                 $3=[$]$2
5129                 ;;
5130         (Xshared)
5131                 case "$cf_cv_system_name" in
5132                 (aix[[5-7]]*)
5133                         $2='.so'
5134                         $3=[$]$2
5135                         ;;
5136                 (*-msvc*)
5137                         $2='.dll'
5138                         $3='.dll.lib'
5139                         ;;
5140                 (cygwin*|msys*|mingw*)
5141                         $2='.dll'
5142                         $3='.dll.a'
5143                         ;;
5144                 (darwin*)
5145                         $2='.dylib'
5146                         $3=[$]$2
5147                         ;;
5148                 (hpux*)
5149                         case "$target" in
5150                         (ia64*)
5151                                 $2='.so'
5152                                 $3=[$]$2
5153                                 ;;
5154                         (*)
5155                                 $2='.sl'
5156                                 $3=[$]$2
5157                                 ;;
5158                         esac
5159                         ;;
5160                 (*)
5161                         $2='.so'
5162                         $3=[$]$2
5163                         ;;
5164                 esac
5165                 ;;
5166         (*)
5167                 case "$target" in
5168                 (*-msvc*)
5169                         $2='.lib'
5170                         ;;
5171                 (*)
5172                         $2='.a'
5173                         ;;
5174                 esac
5175                 $3=[$]$2
5176                 ;;
5177         esac
5178         if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
5179         then
5180                 $2="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$2}"
5181                 $3="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$3}"
5182         fi
5183 ])dnl
5184 dnl ---------------------------------------------------------------------------
5185 dnl CF_LIB_TYPE version: 5 updated: 2015/04/17 21:13:04
5186 dnl -----------
5187 dnl Compute the string to append to -library from the given model name
5188 dnl $1 = model name
5189 dnl $2 = variable to set
5190 dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
5191 AC_DEFUN([CF_LIB_TYPE],
5192 [
5193         case $1 in
5194         (libtool) $2=''   ;;
5195         (normal)  $2=''   ;;
5196         (debug)   $2='_g' ;;
5197         (profile) $2='_p' ;;
5198         (shared)  $2=''   ;;
5199         esac
5200         test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
5201 ])dnl
5202 dnl ---------------------------------------------------------------------------
5203 dnl CF_LINK_DATAONLY version: 13 updated: 2020/02/08 15:59:30
5204 dnl ----------------
5205 dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
5206 dnl only data (i.e., no functions), for example NeXT.  On those systems we'll
5207 dnl have to provide wrappers for global tables to ensure they're linked
5208 dnl properly.
5209 AC_DEFUN([CF_LINK_DATAONLY],
5210 [
5211 AC_MSG_CHECKING([if data-only library module links])
5212 AC_CACHE_VAL(cf_cv_link_dataonly,[
5213         rm -f conftest.a
5214         cat >conftest.$ac_ext <<EOF
5215 #line __oline__ "configure"
5216 int     testdata[[3]] = { 123, 456, 789 };
5217 EOF
5218         if AC_TRY_EVAL(ac_compile) ; then
5219                 mv conftest.o data.o && \
5220                 ( $AR $ARFLAGS conftest.a data.o ) 2>&AC_FD_CC 1>/dev/null
5221         fi
5222         rm -f conftest.$ac_ext data.o
5223         cat >conftest.$ac_ext <<EOF
5224 #line __oline__ "configure"
5225 int     testfunc(void)
5226 {
5227 #if defined(NeXT)
5228         ${cf_cv_main_return:-return}(1);        /* I'm told this linker is broken */
5229 #else
5230         extern int testdata[[3]];
5231         return testdata[[0]] == 123
5232            &&  testdata[[1]] == 456
5233            &&  testdata[[2]] == 789;
5234 #endif
5235 }
5236 EOF
5237         if AC_TRY_EVAL(ac_compile); then
5238                 mv conftest.o func.o && \
5239                 ( $AR $ARFLAGS conftest.a func.o ) 2>&AC_FD_CC 1>/dev/null
5240         fi
5241         rm -f conftest.$ac_ext func.o
5242         ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null
5243         cf_saveLIBS="$LIBS"
5244         LIBS="conftest.a $LIBS"
5245         AC_TRY_RUN([
5246         int main(void)
5247         {
5248                 extern int testfunc();
5249                 ${cf_cv_main_return:-return} (!testfunc());
5250         }
5251         ],
5252         [cf_cv_link_dataonly=yes],
5253         [cf_cv_link_dataonly=no],
5254         [cf_cv_link_dataonly=unknown])
5255         LIBS="$cf_saveLIBS"
5256         ])
5257 AC_MSG_RESULT($cf_cv_link_dataonly)
5258
5259 if test "$cf_cv_link_dataonly" = no ; then
5260         AC_DEFINE(BROKEN_LINKER,1,[if data-only library module does not link])
5261         BROKEN_LINKER=1
5262 fi
5263 AC_SUBST(BROKEN_LINKER)
5264
5265 ])dnl
5266 dnl ---------------------------------------------------------------------------
5267 dnl CF_LINK_FUNCS version: 11 updated: 2021/04/18 14:08:47
5268 dnl -------------
5269 dnl Most Unix systems have both link and symlink, a few don't have symlink.
5270 dnl A few non-Unix systems implement symlink, but not link.
5271 dnl A few non-systems implement neither (or have nonfunctional versions).
5272 dnl
5273 dnl This allows for a 2-second difference in modification times to allow for
5274 dnl some marginal NFS implementations.
5275 AC_DEFUN([CF_LINK_FUNCS],
5276 [
5277 AC_CHECK_HEADERS( \
5278 unistd.h \
5279 )
5280 AC_CHECK_FUNCS( \
5281         remove \
5282         unlink )
5283
5284 if test "$cross_compiling" = yes ; then
5285         AC_CHECK_FUNCS( \
5286                 link \
5287                 symlink )
5288 else
5289         AC_CACHE_CHECK(if link/symlink functions work,cf_cv_link_funcs,[
5290                 cf_cv_link_funcs=
5291                 for cf_func in link symlink ; do
5292                         AC_TRY_RUN([
5293 #include <stdio.h>
5294 #include <sys/types.h>
5295 #include <sys/stat.h>
5296 #ifdef HAVE_UNISTD_H
5297 #include <unistd.h>
5298 #endif
5299 int main(void)
5300 {
5301         int fail = 0;
5302         char *src = "conftest.tmp";
5303         char *dst = "conftest.chk";
5304         struct stat src_sb, dst_sb;
5305         FILE *fp = fopen(src, "w");
5306         if (fp == 0) { fail = 3; } else {
5307                 fclose(fp); stat(src, &src_sb);
5308                 if ($cf_func(src, dst) < 0) {
5309                         fail = 1;
5310                 } else if (stat(dst, &dst_sb) < 0) {
5311                         fail = 2;
5312                 } else {
5313                         long diff = (dst_sb.st_mtime - src_sb.st_mtime);
5314                         if (diff < 0) diff = -diff;
5315                         if (diff > 2) fail = 3;
5316                 }
5317         }
5318 #ifdef HAVE_UNLINK
5319         unlink(dst); unlink(src);
5320 #else
5321         remove(dst); remove(src);
5322 #endif
5323         ${cf_cv_main_return:-return} (fail);
5324 }
5325                         ],[
5326                         cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
5327                         eval 'ac_cv_func_'$cf_func'=yes'],[
5328                         eval 'ac_cv_func_'$cf_func'=no'],[
5329                         eval 'ac_cv_func_'$cf_func'=error'])
5330                 done
5331                 test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
5332         ])
5333         test "$ac_cv_func_link"    = yes && AC_DEFINE(HAVE_LINK,1,[Define to 1 if we have link() function])
5334         test "$ac_cv_func_symlink" = yes && AC_DEFINE(HAVE_SYMLINK,1,[Define to 1 if we have symlink() function])
5335 fi
5336 ])dnl
5337 dnl ---------------------------------------------------------------------------
5338 dnl CF_MAKEFLAGS version: 21 updated: 2021/09/04 06:47:34
5339 dnl ------------
5340 dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make'
5341 dnl options to lower-levels.  It is very useful for "make -n" -- if we have it.
5342 dnl (GNU 'make' does both, something POSIX 'make', which happens to make the
5343 dnl ${MAKEFLAGS} variable incompatible because it adds the assignments :-)
5344 AC_DEFUN([CF_MAKEFLAGS],
5345 [AC_REQUIRE([AC_PROG_FGREP])dnl
5346
5347 AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[
5348         cf_cv_makeflags=''
5349         for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
5350         do
5351                 cat >cf_makeflags.tmp <<CF_EOF
5352 SHELL = $SHELL
5353 all :
5354         @ echo '.$cf_option'
5355 CF_EOF
5356                 cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp 2>/dev/null | ${FGREP-fgrep} -v "ing directory" | sed -e 's,[[  ]]*$,,'`
5357                 case "$cf_result" in
5358                 (.*k|.*kw)
5359                         cf_result="`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`"
5360                         case "$cf_result" in
5361                         (.*CC=*)        cf_cv_makeflags=
5362                                 ;;
5363                         (*)     cf_cv_makeflags=$cf_option
5364                                 ;;
5365                         esac
5366                         break
5367                         ;;
5368                 (.-)
5369                         ;;
5370                 (*)
5371                         CF_MSG_LOG(given option \"$cf_option\", no match \"$cf_result\")
5372                         ;;
5373                 esac
5374         done
5375         rm -f cf_makeflags.tmp
5376 ])
5377
5378 AC_SUBST(cf_cv_makeflags)
5379 ])dnl
5380 dnl ---------------------------------------------------------------------------
5381 dnl CF_MAKE_PHONY version: 3 updated: 2021/01/08 16:08:21
5382 dnl -------------
5383 dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which
5384 dnl acts as a placeholder.
5385 dnl
5386 dnl The ".PHONY" feature was proposed in 2011 here
5387 dnl     https://www.austingroupbugs.net/view.php?id=523
5388 dnl and is scheduled for release in P1003.1 Issue 8 (late 2022).
5389 dnl
5390 dnl This is not supported by SVr4 make (or SunOS 4, 4.3SD, etc), but works with
5391 dnl a few others (i.e., GNU make and the non-POSIX "BSD" make):
5392 dnl
5393 dnl + This is a GNU make feature (since April 1988, but in turn from binutils,
5394 dnl   date unspecified).
5395 dnl
5396 dnl + It was adopted in NetBSD make in June 1995.
5397 dnl
5398 dnl + The other BSD make programs are derived from the NetBSD make (and for
5399 dnl   that reason are not actually different "implementations").
5400 dnl
5401 dnl + Some features of NetBSD make were actually adapted from pmake, which
5402 dnl   began as a modified GNU make starting in 1993.
5403 dnl
5404 dnl + Version 3.8 of the dmake program in January 1992 also implemented this
5405 dnl   GNU make extension, but is less well known than the BSD make.
5406 AC_DEFUN([CF_MAKE_PHONY],[
5407 AC_CACHE_CHECK(for \".PHONY\" make-support, cf_cv_make_PHONY,[
5408         rm -rf conftest*
5409         (
5410                 mkdir conftest || exit 1
5411                 cd conftest
5412                 cat >makefile <<'CF_EOF'
5413 .PHONY: always
5414 DATA=0
5415 always: always.out
5416         @echo "** making [$]@ [$](DATA)"
5417 once: once.out
5418         @echo "** making [$]@ [$](DATA)"
5419 always.out:
5420         @echo "** making [$]@ [$](DATA)"
5421         echo [$](DATA) > [$]@
5422 once.out:
5423         @echo "** making [$]@ [$](DATA)"
5424         echo [$](DATA) > [$]@
5425 CF_EOF
5426                 for cf_data in 1 2 3
5427                 do
5428                         ${MAKE:-make} always DATA=$cf_data
5429                         ${MAKE:-make} once   DATA=$cf_data
5430                         ${MAKE:-make} -t always once
5431                         if test -f always ; then
5432                                 echo "no (case 1)" > ../conftest.tmp
5433                         elif test ! -f always.out ; then
5434                                 echo "no (case 2)" > ../conftest.tmp
5435                         elif test ! -f once.out ; then
5436                                 echo "no (case 3)" > ../conftest.tmp
5437                         elif ! cmp -s always.out once.out ; then
5438                                 echo "no (case 4)" > ../conftest.tmp
5439                                 diff always.out once.out
5440                         else
5441                                 cf_check="`cat always.out`"
5442                                 if test "x$cf_check" != "x$cf_data" ; then
5443                                         echo "no (case 5)" > ../conftest.tmp
5444                                 else
5445                                         echo yes > ../conftest.tmp
5446                                         rm -f ./*.out
5447                                         continue
5448                                 fi
5449                         fi
5450                         break
5451                 done
5452         ) >&AC_FD_CC 2>&1
5453         cf_cv_make_PHONY="`cat conftest.tmp`"
5454         rm -rf conftest*
5455 ])
5456 MAKE_NO_PHONY="#"
5457 MAKE_PHONY="#"
5458 test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY=
5459 test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY=
5460 AC_SUBST(MAKE_NO_PHONY)
5461 AC_SUBST(MAKE_PHONY)
5462 ])dnl
5463 dnl ---------------------------------------------------------------------------
5464 dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
5465 dnl ------------
5466 dnl Generate tags/TAGS targets for makefiles.  Do not generate TAGS if we have
5467 dnl a monocase filesystem.
5468 AC_DEFUN([CF_MAKE_TAGS],[
5469 AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
5470
5471 AC_CHECK_PROGS(CTAGS, exctags ctags)
5472 AC_CHECK_PROGS(ETAGS, exetags etags)
5473
5474 AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
5475
5476 if test "$cf_cv_mixedcase" = yes ; then
5477         AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
5478 else
5479         MAKE_UPPER_TAGS=no
5480 fi
5481
5482 if test "$MAKE_UPPER_TAGS" = yes ; then
5483         MAKE_UPPER_TAGS=
5484 else
5485         MAKE_UPPER_TAGS="#"
5486 fi
5487
5488 if test "$MAKE_LOWER_TAGS" = yes ; then
5489         MAKE_LOWER_TAGS=
5490 else
5491         MAKE_LOWER_TAGS="#"
5492 fi
5493
5494 AC_SUBST(CTAGS)
5495 AC_SUBST(ETAGS)
5496
5497 AC_SUBST(MAKE_UPPER_TAGS)
5498 AC_SUBST(MAKE_LOWER_TAGS)
5499 ])dnl
5500 dnl ---------------------------------------------------------------------------
5501 dnl CF_MANPAGE_FORMAT version: 15 updated: 2021/09/04 06:35:04
5502 dnl -----------------
5503 dnl Option to allow user to override automatic configuration of manpage format.
5504 dnl There are several special cases:
5505 dnl
5506 dnl     gzip - man checks for, can display gzip'd files
5507 dnl     compress - man checks for, can display compressed files
5508 dnl     BSDI - files in the cat-directories are suffixed ".0"
5509 dnl     formatted - installer should format (put files in cat-directory)
5510 dnl     catonly - installer should only format, e.g., for a turnkey system.
5511 dnl
5512 dnl There are other configurations which this macro does not test, e.g., HPUX's
5513 dnl compressed manpages (but uncompressed manpages are fine, and HPUX's naming
5514 dnl convention would not match our use).
5515 AC_DEFUN([CF_MANPAGE_FORMAT],
5516 [
5517 AC_REQUIRE([CF_PATHSEP])
5518 AC_MSG_CHECKING(format of man-pages)
5519
5520 AC_ARG_WITH(manpage-format,
5521         [  --with-manpage-format   specify manpage-format: gzip/compress/BSDI/normal and
5522                           optionally formatted/catonly, e.g., gzip,formatted],
5523         [MANPAGE_FORMAT=$withval],
5524         [MANPAGE_FORMAT=unknown])
5525
5526 test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown
5527 MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'`
5528
5529 cf_unknown=
5530
5531 case "$MANPAGE_FORMAT" in
5532 (unknown)
5533         if test -z "$MANPATH" ; then
5534                 MANPATH="/usr/man:/usr/share/man"
5535         fi
5536
5537         # look for the 'date' man-page (it is most likely to be installed!)
5538         MANPAGE_FORMAT=
5539         cf_preform="no"
5540         cf_catonly="yes"
5541         cf_example="date"
5542
5543         IFS="${IFS:-    }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
5544         for cf_dir in $MANPATH; do
5545                 test -z "$cf_dir" && cf_dir=/usr/man
5546                 for cf_name in $cf_dir/man*/$cf_example.[[01]]* $cf_dir/cat*/$cf_example.[[01]]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example
5547                 do
5548                         cf_test=`echo "$cf_name" | sed -e 's/*//'`
5549                         if test "x$cf_test" = "x$cf_name" ; then
5550
5551                                 case "$cf_name" in
5552                                 (*.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
5553                                 (*.Z)  MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
5554                                 (*.0)  MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
5555                                 (*)    MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
5556                                 esac
5557
5558                                 case "$cf_name" in
5559                                 ($cf_dir/man*)
5560                                         cf_catonly=no
5561                                         ;;
5562                                 ($cf_dir/cat*)
5563                                         cf_preform=yes
5564                                         ;;
5565                                 esac
5566                                 break
5567                         fi
5568
5569                         # if we found a match in either man* or cat*, stop looking
5570                         if test -n "$MANPAGE_FORMAT" ; then
5571                                 cf_found=no
5572                                 test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
5573                                 test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
5574                                 case "$cf_name" in
5575                                 ($cf_dir/cat*)
5576                                         cf_found=yes
5577                                         ;;
5578                                 esac
5579                                 test "$cf_found" = yes && break
5580                         fi
5581                 done
5582                 # only check the first directory in $MANPATH where we find manpages
5583                 if test -n "$MANPAGE_FORMAT" ; then
5584                         break
5585                 fi
5586         done
5587         # if we did not find the example, just assume it is normal
5588         test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
5589         IFS="$ac_save_ifs"
5590         ;;
5591 (*)
5592         for cf_option in $MANPAGE_FORMAT; do
5593         case "$cf_option" in
5594         (gzip|compress|BSDI|normal|formatted|catonly)
5595                 ;;
5596         (*)
5597                 cf_unknown="$cf_unknown $cf_option"
5598                 ;;
5599         esac
5600         done
5601         ;;
5602 esac
5603
5604 AC_MSG_RESULT($MANPAGE_FORMAT)
5605 if test -n "$cf_unknown" ; then
5606         AC_MSG_WARN(Unexpected manpage-format $cf_unknown)
5607 fi
5608 ])dnl
5609 dnl ---------------------------------------------------------------------------
5610 dnl CF_MANPAGE_RENAMES version: 12 updated: 2021/01/01 16:53:59
5611 dnl ------------------
5612 dnl The Debian people have their own naming convention for manpages.  This
5613 dnl option lets us override the name of the file containing renaming, or
5614 dnl disable it altogether.
5615 AC_DEFUN([CF_MANPAGE_RENAMES],
5616 [
5617 AC_MSG_CHECKING(for manpage renaming)
5618
5619 AC_ARG_WITH(manpage-renames,
5620         [  --with-manpage-renames  specify manpage-renaming],
5621         [MANPAGE_RENAMES=$withval],
5622         [MANPAGE_RENAMES=yes])
5623
5624 case ".$MANPAGE_RENAMES" in
5625 (.no)
5626         ;;
5627 (.|.yes)
5628         # Debian 'man' program?
5629         if test -f /etc/debian_version ; then
5630                 MANPAGE_RENAMES=`cd "$srcdir" && pwd`/man/man_db.renames
5631         else
5632                 MANPAGE_RENAMES=no
5633         fi
5634         ;;
5635 esac
5636
5637 if test "$MANPAGE_RENAMES" != no ; then
5638         if test -f "$srcdir/man/$MANPAGE_RENAMES" ; then
5639                 MANPAGE_RENAMES=`cd "$srcdir/man" && pwd`/$MANPAGE_RENAMES
5640         elif test ! -f "$MANPAGE_RENAMES" ; then
5641                 AC_MSG_ERROR(not a filename: $MANPAGE_RENAMES)
5642         fi
5643
5644         test ! -d man && mkdir man
5645
5646         # Construct a sed-script to perform renaming within man-pages
5647         if test -n "$MANPAGE_RENAMES" ; then
5648                 test ! -d man && mkdir man
5649                 $SHELL "$srcdir/man/make_sed.sh" "$MANPAGE_RENAMES" >./edit_man.sed
5650         fi
5651 fi
5652
5653 AC_MSG_RESULT($MANPAGE_RENAMES)
5654 AC_SUBST(MANPAGE_RENAMES)
5655 ])dnl
5656 dnl ---------------------------------------------------------------------------
5657 dnl CF_MANPAGE_SYMLINKS version: 6 updated: 2015/04/17 21:13:04
5658 dnl -------------------
5659 dnl Some people expect each tool to make all aliases for manpages in the
5660 dnl man-directory.  This accommodates the older, less-capable implementations
5661 dnl of 'man', and is optional.
5662 AC_DEFUN([CF_MANPAGE_SYMLINKS],
5663 [
5664 AC_MSG_CHECKING(if manpage aliases will be installed)
5665
5666 AC_ARG_WITH(manpage-aliases,
5667         [  --with-manpage-aliases  specify manpage-aliases using .so],
5668         [MANPAGE_ALIASES=$withval],
5669         [MANPAGE_ALIASES=yes])
5670
5671 AC_MSG_RESULT($MANPAGE_ALIASES)
5672
5673 case "x$LN_S" in
5674 (xln*)
5675         cf_use_symlinks=yes
5676         ;;
5677 (*)
5678         cf_use_symlinks=no
5679         ;;
5680 esac
5681
5682 MANPAGE_SYMLINKS=no
5683 if test "$MANPAGE_ALIASES" = yes ; then
5684 AC_MSG_CHECKING(if manpage symlinks should be used)
5685
5686 AC_ARG_WITH(manpage-symlinks,
5687         [  --with-manpage-symlinks specify manpage-aliases using symlinks],
5688         [MANPAGE_SYMLINKS=$withval],
5689         [MANPAGE_SYMLINKS=$cf_use_symlinks])
5690
5691 if test "$$cf_use_symlinks" = no; then
5692 if test "$MANPAGE_SYMLINKS" = yes ; then
5693         AC_MSG_WARN(cannot make symlinks, will use .so files)
5694         MANPAGE_SYMLINKS=no
5695 fi
5696 fi
5697
5698 AC_MSG_RESULT($MANPAGE_SYMLINKS)
5699 fi
5700
5701 ])dnl
5702 dnl ---------------------------------------------------------------------------
5703 dnl CF_MANPAGE_TBL version: 3 updated: 2002/01/19 22:51:32
5704 dnl --------------
5705 dnl This option causes manpages to be run through tbl(1) to generate tables
5706 dnl correctly.
5707 AC_DEFUN([CF_MANPAGE_TBL],
5708 [
5709 AC_MSG_CHECKING(for manpage tbl)
5710
5711 AC_ARG_WITH(manpage-tbl,
5712         [  --with-manpage-tbl      specify manpage processing with tbl],
5713         [MANPAGE_TBL=$withval],
5714         [MANPAGE_TBL=no])
5715
5716 AC_MSG_RESULT($MANPAGE_TBL)
5717 ])dnl
5718 dnl ---------------------------------------------------------------------------
5719 dnl CF_MAN_PAGES version: 51 updated: 2021/01/05 16:29:19
5720 dnl ------------
5721 dnl Try to determine if the man-pages on the system are compressed, and if
5722 dnl so, what format is used.  Use this information to construct a script that
5723 dnl will install man-pages.
5724 AC_DEFUN([CF_MAN_PAGES],
5725 [
5726 CF_HELP_MESSAGE(Options to Specify How Manpages are Installed:)
5727 CF_MANPAGE_FORMAT
5728 CF_MANPAGE_RENAMES
5729 CF_MANPAGE_SYMLINKS
5730 CF_MANPAGE_TBL
5731
5732 if test "$prefix" = "NONE" ; then
5733         cf_prefix="$ac_default_prefix"
5734 else
5735         cf_prefix="$prefix"
5736 fi
5737
5738 case "$MANPAGE_FORMAT" in
5739 (*catonly*)
5740         cf_format=yes
5741         cf_inboth=no
5742         ;;
5743 (*formatted*)
5744         cf_format=yes
5745         cf_inboth=yes
5746         ;;
5747 (*)
5748         cf_format=no
5749         cf_inboth=no
5750         ;;
5751 esac
5752
5753 test ! -d man && mkdir man
5754
5755 cf_so_strip=
5756 cf_compress=
5757 case "$MANPAGE_FORMAT" in
5758 (*compress*)
5759         cf_so_strip="Z"
5760         cf_compress=compress
5761         ;;
5762 (*gzip*)
5763         cf_so_strip="gz"
5764         cf_compress=gzip
5765         ;;
5766 esac
5767
5768 cf_edit_man=./edit_man.sh
5769 cf_man_alias=`pwd`/man_alias.sed
5770
5771 cat >$cf_edit_man <<CF_EOF
5772 #! $SHELL
5773 # this script is generated by the configure-script CF_MAN_PAGES macro.
5774
5775 prefix="$cf_prefix"
5776 datarootdir="$datarootdir"
5777 datadir="$datadir"
5778
5779 NCURSES_MAJOR="$NCURSES_MAJOR"
5780 NCURSES_MINOR="$NCURSES_MINOR"
5781 NCURSES_PATCH="$NCURSES_PATCH"
5782
5783 NCURSES_OSPEED="$NCURSES_OSPEED"
5784 TERMINFO="$TERMINFO"
5785
5786 INSTALL="$INSTALL"
5787 INSTALL_DATA="$INSTALL_DATA"
5788
5789 transform="$program_transform_name"
5790
5791 TMP=\${TMPDIR:=/tmp}/man\$\$
5792 trap "rm -f \$TMP" 0 1 2 3 15
5793
5794 form=\[$]1
5795 shift || exit 1
5796
5797 verb=\[$]1
5798 shift || exit 1
5799
5800 mandir=\[$]1
5801 shift || exit 1
5802
5803 srcdir=\[$]1
5804 top_srcdir=\[$]srcdir/..
5805 shift || exit 1
5806
5807 if test "\$form" = normal ; then
5808         if test "$cf_format" = yes ; then
5809         if test "$cf_inboth" = no ; then
5810                 $SHELL "\[$]0" format "\$verb" "\$mandir" "\$srcdir" "\[$]@"
5811                 exit $?
5812         fi
5813         fi
5814         cf_subdir=\$mandir/man
5815         cf_tables=$MANPAGE_TBL
5816 else
5817         cf_subdir=\$mandir/cat
5818         cf_tables=yes
5819 fi
5820
5821 # process the list of source-files
5822 for i in "\[$]@" ; do
5823 case \$i in
5824 (*.orig|*.rej) ;;
5825 (*.[[0-9]]*)
5826         section=\`expr "\$i" : '.*\\.\\([[0-9]]\\)[[xm]]*'\`;
5827         if test "\$verb" = installing ; then
5828         if test ! -d "\$cf_subdir\${section}" ; then
5829                 mkdir -p "\$cf_subdir\$section"
5830         fi
5831         fi
5832
5833         # replace variables in man page
5834         if test ! -f "$cf_man_alias" ; then
5835 cat >>$cf_man_alias <<-CF_EOF2
5836                 s,@DATADIR@,\$datadir,g
5837                 s,@TERMINFO@,\${TERMINFO:="no default value"},g
5838                 s,@TERMINFO_DIRS@,\${TERMINFO_DIRS:="no default value"},g
5839                 s,@NCURSES_MAJOR@,\${NCURSES_MAJOR:="no default value"},g
5840                 s,@NCURSES_MINOR@,\${NCURSES_MINOR:="no default value"},g
5841                 s,@NCURSES_PATCH@,\${NCURSES_PATCH:="no default value"},g
5842                 s,@NCURSES_OSPEED@,\${NCURSES_OSPEED:="no default value"},g
5843 CF_EOF
5844         ifelse($1,,,[
5845         for cf_name in $1
5846         do
5847                 cf_NAME=`echo "$cf_name" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
5848                 cf_name=`echo "$cf_name" | sed "$program_transform_name"`
5849 cat >>$cf_edit_man <<-CF_EOF
5850                 s,@$cf_NAME@,$cf_name,g
5851 CF_EOF
5852         done
5853         ])
5854 cat >>$cf_edit_man <<CF_EOF
5855 CF_EOF2
5856                 echo "...made $cf_man_alias"
5857         fi
5858
5859         aliases=
5860         cf_source=\`basename "\$i"\`
5861         inalias=\$cf_source
5862         test ! -f "\$inalias" && inalias="\$srcdir/\$inalias"
5863         if test ! -f "\$inalias" ; then
5864                 echo ".. skipped \$cf_source"
5865                 continue
5866         fi
5867 CF_EOF
5868
5869 if test "$MANPAGE_ALIASES" != no ; then
5870 cat >>$cf_edit_man <<CF_EOF
5871         nCurses=ignore.3x
5872         test "$with_curses_h" = yes && nCurses=ncurses.3x
5873         aliases=\`sed -f "\$top_srcdir/man/manlinks.sed" "\$inalias" |sed -f "$cf_man_alias" | sort -u; test "\$inalias" = "\$nCurses" && echo curses\`
5874 CF_EOF
5875 fi
5876
5877 if test "$MANPAGE_RENAMES" = no ; then
5878 cat >>$cf_edit_man <<CF_EOF
5879         # perform program transformations for section 1 man pages
5880         if test \$section = 1 ; then
5881                 cf_target=\$cf_subdir\${section}/\`echo \$cf_source|sed "\${transform}"\`
5882         else
5883                 cf_target=\$cf_subdir\${section}/\$cf_source
5884         fi
5885 CF_EOF
5886 else
5887 cat >>$cf_edit_man <<CF_EOF
5888         cf_target=\`grep "^\$cf_source" $MANPAGE_RENAMES | $AWK '{print \[$]2}'\`
5889         if test -z "\$cf_target" ; then
5890                 echo "? missing rename for \$cf_source"
5891                 cf_target="\$cf_source"
5892         fi
5893         cf_target="\$cf_subdir\${section}/\${cf_target}"
5894
5895 CF_EOF
5896 fi
5897
5898 cat >>$cf_edit_man <<CF_EOF
5899         sed     -f "$cf_man_alias" \\
5900 CF_EOF
5901
5902 if test -f "$MANPAGE_RENAMES" ; then
5903 cat >>$cf_edit_man <<CF_EOF
5904                 < "\$i" | sed -f `pwd`/edit_man.sed >\$TMP
5905 CF_EOF
5906 else
5907 cat >>$cf_edit_man <<CF_EOF
5908                 < "\$i" >\$TMP
5909 CF_EOF
5910 fi
5911
5912 cat >>$cf_edit_man <<CF_EOF
5913 if test \$cf_tables = yes ; then
5914         tbl \$TMP >\$TMP.out
5915         mv \$TMP.out \$TMP
5916 fi
5917 CF_EOF
5918
5919 if test "$with_overwrite" != yes ; then
5920 cat >>$cf_edit_man <<CF_EOF
5921         sed -e "/\\#[    ]*include/s,<curses.h,<ncurses$LIB_SUFFIX/curses.h," < \$TMP >\$TMP.out
5922         mv \$TMP.out \$TMP
5923 CF_EOF
5924 fi
5925
5926 if test "$with_curses_h" != yes ; then
5927 cat >>$cf_edit_man <<CF_EOF
5928         sed -e "/\\#[    ]*include/s,curses.h,ncurses.h," < \$TMP >\$TMP.out
5929         mv \$TMP.out \$TMP
5930 CF_EOF
5931 fi
5932
5933 cat >>$cf_edit_man <<CF_EOF
5934         if test "\$form" = format ; then
5935                 nroff -man \$TMP >\$TMP.out
5936                 mv \$TMP.out \$TMP
5937         fi
5938 CF_EOF
5939
5940 if test -n "$cf_compress" ; then
5941 cat >>$cf_edit_man <<CF_EOF
5942         if test "\$verb" = installing ; then
5943         if ( "$cf_compress" -f \$TMP )
5944         then
5945                 mv \$TMP.$cf_so_strip \$TMP
5946         fi
5947         fi
5948         cf_target="\$cf_target.$cf_so_strip"
5949 CF_EOF
5950 fi
5951
5952 case "$MANPAGE_FORMAT" in
5953 (*BSDI*)
5954 cat >>$cf_edit_man <<CF_EOF
5955         if test "\$form" = format ; then
5956                 # BSDI installs only .0 suffixes in the cat directories
5957                 cf_target="\`echo \$cf_target|sed -e 's/\\.[[1-9]]\\+[[a-z]]*/.0/'\`"
5958         fi
5959 CF_EOF
5960   ;;
5961 esac
5962
5963 cat >>$cf_edit_man <<CF_EOF
5964         suffix=\`basename "\$cf_target" | sed -e 's%^[[^.]]*%%'\`
5965         if test "\$verb" = installing ; then
5966                 echo "\$verb \$cf_target"
5967                 \$INSTALL_DATA \$TMP "\$cf_target"
5968                 test -d "\$cf_subdir\${section}" &&
5969                 test -n "\$aliases" && (
5970                         cd "\$cf_subdir\${section}" && (
5971                                 cf_source=\`echo "\$cf_target" |sed -e 's%^.*/\\([[^/]][[^/]]*/[[^/]][[^/]]*$\\)%\\1%'\`
5972                                 test -n "$cf_so_strip" && cf_source=\`echo "\$cf_source" |sed -e 's%\\.$cf_so_strip\$%%'\`
5973                                 cf_target=\`basename "\$cf_target"\`
5974                                 for cf_alias in \$aliases
5975                                 do
5976                                         if test "\$section" = 1 ; then
5977                                                 cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\`
5978                                         fi
5979
5980                                         if test "$MANPAGE_SYMLINKS" = yes ; then
5981                                                 if test -f "\$cf_alias\${suffix}" ; then
5982                                                         if ( cmp -s "\$cf_target" "\$cf_alias\${suffix}" )
5983                                                         then
5984                                                                 continue
5985                                                         fi
5986                                                 fi
5987                                                 echo ".. \$verb alias \$cf_alias\${suffix}"
5988 CF_EOF
5989 case "x$LN_S" in
5990 (*-f)
5991 cat >>$cf_edit_man <<CF_EOF
5992                                                 $LN_S "\$cf_target" "\$cf_alias\${suffix}"
5993 CF_EOF
5994         ;;
5995 (*)
5996 cat >>$cf_edit_man <<CF_EOF
5997                                                 rm -f "\$cf_alias\${suffix}"
5998                                                 $LN_S "\$cf_target" "\$cf_alias\${suffix}"
5999 CF_EOF
6000         ;;
6001 esac
6002 cat >>$cf_edit_man <<CF_EOF
6003                                         elif test "\$cf_target" != "\$cf_alias\${suffix}" ; then
6004                                                 echo ".so \$cf_source" >\$TMP
6005 CF_EOF
6006 if test -n "$cf_compress" ; then
6007 cat >>$cf_edit_man <<CF_EOF
6008                                                 if test -n "$cf_so_strip" ; then
6009                                                         "$cf_compress" -f \$TMP
6010                                                         mv \$TMP.$cf_so_strip \$TMP
6011                                                 fi
6012 CF_EOF
6013 fi
6014 cat >>$cf_edit_man <<CF_EOF
6015                                                 echo ".. \$verb alias \$cf_alias\${suffix}"
6016                                                 rm -f "\$cf_alias\${suffix}"
6017                                                 \$INSTALL_DATA \$TMP "\$cf_alias\${suffix}"
6018                                         fi
6019                                 done
6020                         )
6021                 )
6022         elif test "\$verb" = removing ; then
6023                 test -f "\$cf_target" && (
6024                         echo "\$verb \$cf_target"
6025                         rm -f "\$cf_target"
6026                 )
6027                 test -d "\$cf_subdir\${section}" &&
6028                 test -n "\$aliases" && (
6029                         cd "\$cf_subdir\${section}" && (
6030                                 for cf_alias in \$aliases
6031                                 do
6032                                         if test "\$section" = 1 ; then
6033                                                 cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\`
6034                                         fi
6035
6036                                         echo ".. \$verb alias \$cf_alias\${suffix}"
6037                                         rm -f "\$cf_alias\${suffix}"
6038                                 done
6039                         )
6040                 )
6041         else
6042 #               echo ".hy 0"
6043                 cat \$TMP
6044         fi
6045         ;;
6046 esac
6047 done
6048
6049 if test "$cf_inboth" = yes ; then
6050 if test "\$form" != format ; then
6051         $SHELL "\[$]0" format "\$verb" "\$mandir" "\$srcdir" "\[$]@"
6052 fi
6053 fi
6054
6055 exit 0
6056 CF_EOF
6057 chmod 755 "$cf_edit_man"
6058
6059 ])dnl
6060 dnl ---------------------------------------------------------------------------
6061 dnl CF_MAP_LIB_BASENAME version: 2 updated: 2021/01/02 17:09:14
6062 dnl -------------------
6063 dnl Convert a default-libname to the actual one used via CF_WITH_LIB_BASENAME.
6064 dnl
6065 dnl $1 = variable to set
6066 dnl $2 = default-libname
6067 AC_DEFUN([CF_MAP_LIB_BASENAME],[
6068 CF_UPPER(cf_map_lib_basename,$2)
6069 eval $1="\$${cf_map_lib_basename}_NAME"
6070 ])dnl
6071 dnl ---------------------------------------------------------------------------
6072 dnl CF_MATH_LIB version: 10 updated: 2020/12/31 18:40:20
6073 dnl -----------
6074 dnl Checks for libraries.  At least one UNIX system, Apple Macintosh
6075 dnl Rhapsody 5.5, does not have -lm.  We cannot use the simpler
6076 dnl AC_CHECK_LIB(m,sin), because that fails for C++.
6077 AC_DEFUN([CF_MATH_LIB],
6078 [
6079 AC_CACHE_CHECK(if -lm needed for math functions,
6080         cf_cv_need_libm,[
6081         AC_TRY_LINK([
6082         #include <stdio.h>
6083         #include <stdlib.h>
6084         #include <math.h>
6085         ],
6086         [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)],
6087         [cf_cv_need_libm=no],
6088         [cf_cv_need_libm=yes])])
6089 if test "$cf_cv_need_libm" = yes
6090 then
6091 ifelse($1,,[
6092         CF_ADD_LIB(m)
6093 ],[$1=-lm])
6094 fi
6095 ])
6096 dnl ---------------------------------------------------------------------------
6097 dnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59
6098 dnl ----------------------
6099 dnl Check if the file-system supports mixed-case filenames.  If we're able to
6100 dnl create a lowercase name and see it as uppercase, it doesn't support that.
6101 AC_DEFUN([CF_MIXEDCASE_FILENAMES],
6102 [
6103 AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
6104 if test "$cross_compiling" = yes ; then
6105         case "$target_alias" in
6106         (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*)
6107                 cf_cv_mixedcase=no
6108                 ;;
6109         (*)
6110                 cf_cv_mixedcase=yes
6111                 ;;
6112         esac
6113 else
6114         rm -f conftest CONFTEST
6115         echo test >conftest
6116         if test -f CONFTEST ; then
6117                 cf_cv_mixedcase=no
6118         else
6119                 cf_cv_mixedcase=yes
6120         fi
6121         rm -f conftest CONFTEST
6122 fi
6123 ])
6124 test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
6125 ])dnl
6126 dnl ---------------------------------------------------------------------------
6127 dnl CF_MKSTEMP version: 11 updated: 2021/01/01 13:31:04
6128 dnl ----------
6129 dnl Check for a working mkstemp.  This creates two files, checks that they are
6130 dnl successfully created and distinct (AmigaOS apparently fails on the last).
6131 AC_DEFUN([CF_MKSTEMP],[
6132 AC_CHECK_HEADERS( \
6133 unistd.h \
6134 )
6135 AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
6136 rm -rf ./conftest*
6137 AC_TRY_RUN([
6138 #include <sys/types.h>
6139 #ifdef HAVE_UNISTD_H
6140 #include <unistd.h>
6141 #endif
6142 #include <stdlib.h>
6143 #include <stdio.h>
6144 #include <string.h>
6145 #include <sys/stat.h>
6146 int main(void)
6147 {
6148         char *tmpl = "conftestXXXXXX";
6149         char name[2][80];
6150         int n;
6151         int result = 0;
6152         int fd;
6153         struct stat sb;
6154
6155         umask(077);
6156         for (n = 0; n < 2; ++n) {
6157                 strcpy(name[n], tmpl);
6158                 if ((fd = mkstemp(name[n])) >= 0) {
6159                         if (!strcmp(name[n], tmpl)
6160                          || stat(name[n], &sb) != 0
6161                          || (sb.st_mode & S_IFMT) != S_IFREG
6162                          || (sb.st_mode & 077) != 0) {
6163                                 result = 1;
6164                         }
6165                         close(fd);
6166                 }
6167         }
6168         if (result == 0
6169          && !strcmp(name[0], name[1]))
6170                 result = 1;
6171         ${cf_cv_main_return:-return}(result);
6172 }
6173 ],[cf_cv_func_mkstemp=yes
6174 ],[cf_cv_func_mkstemp=no
6175 ],[cf_cv_func_mkstemp=maybe])
6176 ])
6177 if test "x$cf_cv_func_mkstemp" = xmaybe ; then
6178         AC_CHECK_FUNC(mkstemp)
6179 fi
6180 if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then
6181         AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.])
6182 fi
6183 ])dnl
6184 dnl ---------------------------------------------------------------------------
6185 dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
6186 dnl ----------
6187 dnl Write a debug message to config.log, along with the line number in the
6188 dnl configure script.
6189 AC_DEFUN([CF_MSG_LOG],[
6190 echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
6191 ])dnl
6192 dnl ---------------------------------------------------------------------------
6193 dnl CF_NCURSES_ABI_6 version: 4 updated: 2021/01/01 13:31:04
6194 dnl ----------------
6195 dnl Set ncurses' ABI to 6 unless overridden by explicit configure option, and
6196 dnl warn about this.
6197 AC_DEFUN([CF_NCURSES_ABI_6],[
6198 if test "${with_abi_version+set}" != set; then
6199         case "$cf_cv_rel_version" in
6200         (5.*)
6201                 cf_cv_rel_version=6.0
6202                 cf_cv_abi_version=6
6203                 AC_MSG_WARN(overriding ABI version to $cf_cv_abi_version)
6204                 ;;
6205         esac
6206 fi
6207 ])dnl
6208 dnl ---------------------------------------------------------------------------
6209 dnl CF_NCURSES_WITH_ABI_VERSION version: 3 updated: 2021/01/01 13:31:04
6210 dnl ---------------------------
6211 dnl Allow ncurses's ABI to be overridden.  Generally this happens when a
6212 dnl packager has incremented the ABI past that used in the original package,
6213 dnl and wishes to keep doing this.
6214 dnl
6215 dnl $1 is the package name, if any, to derive a corresponding {package}_ABI
6216 dnl symbol.
6217 AC_DEFUN([CF_NCURSES_WITH_ABI_VERSION],[
6218 CF_WITH_ABI_VERSION($1)
6219 if test "x$cf_cv_abi_version" != "x$with_abi_version"
6220 then
6221         case "$cf_cv_rel_version" in
6222         (5.*)
6223                 cf_cv_rel_version=$with_abi_version.0
6224                 ;;
6225         esac
6226 fi
6227 ])dnl
6228 dnl ---------------------------------------------------------------------------
6229 dnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41
6230 dnl ------------------
6231 dnl see CF_WITH_NO_LEAKS
6232 dnl
6233 dnl $1 = option/name
6234 dnl $2 = help-text
6235 dnl $3 = symbol to define if the option is set
6236 dnl $4 = additional actions to take if the option is set
6237 AC_DEFUN([CF_NO_LEAKS_OPTION],[
6238 AC_MSG_CHECKING(if you want to use $1 for testing)
6239 AC_ARG_WITH($1,
6240         [$2],
6241         [case "x$withval" in
6242         (x|xno) ;;
6243         (*)
6244                 : "${with_cflags:=-g}"
6245                 : "${enable_leaks:=no}"
6246                 with_$1=yes
6247                 AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
6248          $4
6249 ])
6250                 ;;
6251         esac],
6252         [with_$1=])
6253 AC_MSG_RESULT(${with_$1:-no})
6254
6255 case ".$with_cflags" in
6256 (.*-g*)
6257         case .$CFLAGS in
6258         (.*-g*)
6259                 ;;
6260         (*)
6261                 CF_ADD_CFLAGS([-g])
6262                 ;;
6263         esac
6264         ;;
6265 esac
6266 ])dnl
6267 dnl ---------------------------------------------------------------------------
6268 dnl CF_NUMBER_SYNTAX version: 2 updated: 2015/04/17 21:13:04
6269 dnl ----------------
6270 dnl Check if the given variable is a number.  If not, report an error.
6271 dnl $1 is the variable
6272 dnl $2 is the message
6273 AC_DEFUN([CF_NUMBER_SYNTAX],[
6274 if test -n "$1" ; then
6275   case $1 in
6276   ([[0-9]]*)
6277         ;;
6278   (*)
6279         AC_MSG_ERROR($2 is not a number: $1)
6280         ;;
6281   esac
6282 else
6283   AC_MSG_ERROR($2 value is empty)
6284 fi
6285 ])dnl
6286 dnl ---------------------------------------------------------------------------
6287 dnl CF_OBJ_SUBDIR version: 8 updated: 2021/01/01 13:31:04
6288 dnl -------------
6289 dnl Compute the object-directory name from the given model name
6290 AC_DEFUN([CF_OBJ_SUBDIR],
6291 [
6292         case $1 in
6293         (libtool) $2='obj_lo'  ;;
6294         (normal)  $2='objects' ;;
6295         (debug)   $2='obj_g' ;;
6296         (profile) $2='obj_p' ;;
6297         (shared)
6298                 case "$cf_cv_system_name" in
6299                 (cygwin|msys)
6300                         $2='objects' ;;
6301                 (*)
6302                         $2='obj_s' ;;
6303                 esac
6304         esac
6305 ])dnl
6306 dnl ---------------------------------------------------------------------------
6307 dnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04
6308 dnl ----------
6309 dnl Provide a value for the $PATH and similar separator (or amend the value
6310 dnl as provided in autoconf 2.5x).
6311 AC_DEFUN([CF_PATHSEP],
6312 [
6313         AC_MSG_CHECKING(for PATH separator)
6314         case "$cf_cv_system_name" in
6315         (os2*)  PATH_SEPARATOR=';'  ;;
6316         (*)     ${PATH_SEPARATOR:=':'}  ;;
6317         esac
6318 ifelse([$1],,,[$1=$PATH_SEPARATOR])
6319         AC_SUBST(PATH_SEPARATOR)
6320         AC_MSG_RESULT($PATH_SEPARATOR)
6321 ])dnl
6322 dnl ---------------------------------------------------------------------------
6323 dnl CF_PATH_PROG version: 12 updated: 2021/01/02 09:31:20
6324 dnl ------------
6325 dnl Check for a given program, defining corresponding symbol.
6326 dnl     $1 = environment variable, which is suffixed by "_PATH" in the #define.
6327 dnl     $2 = program name to find.
6328 dnl     $3 = optional list of additional program names to test.
6329 dnl $4 = $PATH
6330 dnl
6331 dnl If there is more than one token in the result, #define the remaining tokens
6332 dnl to $1_ARGS.  We need this for 'install' in particular.
6333 dnl
6334 dnl FIXME: we should allow this to be overridden by environment variables
6335 dnl
6336 AC_DEFUN([CF_PATH_PROG],[
6337 AC_REQUIRE([CF_PATHSEP])
6338 test -z "[$]$1" && $1="$2"
6339 AC_PATH_PROGS($1,[$]$1 $2 ifelse($3,,,$3),[$]$1, ifelse($4,,,$4))
6340
6341 cf_path_prog=""
6342 cf_path_args=""
6343 IFS="${IFS:-    }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
6344 for cf_temp in $ac_cv_path_$1
6345 do
6346         if test -z "$cf_path_prog" ; then
6347                 if test "$with_full_paths" = yes ; then
6348                         CF_PATH_SYNTAX(cf_temp,break)
6349                         cf_path_prog="$cf_temp"
6350                 else
6351                         cf_path_prog="`basename "$cf_temp"`"
6352                 fi
6353         elif test -z "$cf_path_args" ; then
6354                 cf_path_args="$cf_temp"
6355         else
6356                 cf_path_args="$cf_path_args $cf_temp"
6357         fi
6358 done
6359 IFS="$cf_save_ifs"
6360
6361 if test -n "$cf_path_prog" ; then
6362         CF_MSG_LOG(defining path for ${cf_path_prog})
6363         AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog",Define to pathname $1)
6364         test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args",Define to provide args for $1)
6365 fi
6366 ])dnl
6367 dnl ---------------------------------------------------------------------------
6368 dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20
6369 dnl --------------
6370 dnl Check the argument to see that it looks like a pathname.  Rewrite it if it
6371 dnl begins with one of the prefix/exec_prefix variables, and then again if the
6372 dnl result begins with 'NONE'.  This is necessary to work around autoconf's
6373 dnl delayed evaluation of those symbols.
6374 AC_DEFUN([CF_PATH_SYNTAX],[
6375 if test "x$prefix" != xNONE; then
6376         cf_path_syntax="$prefix"
6377 else
6378         cf_path_syntax="$ac_default_prefix"
6379 fi
6380
6381 case ".[$]$1" in
6382 (.\[$]\(*\)*|.\'*\'*)
6383         ;;
6384 (..|./*|.\\*)
6385         ;;
6386 (.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
6387         ;;
6388 (.\[$]\{*prefix\}*|.\[$]\{*dir\}*)
6389         eval $1="[$]$1"
6390         case ".[$]$1" in
6391         (.NONE/*)
6392                 $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
6393                 ;;
6394         esac
6395         ;;
6396 (.no|.NONE/*)
6397         $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
6398         ;;
6399 (*)
6400         ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
6401         ;;
6402 esac
6403 ])dnl
6404 dnl ---------------------------------------------------------------------------
6405 dnl CF_PKG_CONFIG version: 12 updated: 2021/10/10 20:18:09
6406 dnl -------------
6407 dnl Check for the package-config program, unless disabled by command-line.
6408 dnl
6409 dnl Sets $PKG_CONFIG to the pathname of the pkg-config program.
6410 AC_DEFUN([CF_PKG_CONFIG],
6411 [
6412 AC_MSG_CHECKING(if you want to use pkg-config)
6413 AC_ARG_WITH(pkg-config,
6414         [  --with-pkg-config{=path} enable/disable use of pkg-config],
6415         [cf_pkg_config=$withval],
6416         [cf_pkg_config=yes])
6417 AC_MSG_RESULT($cf_pkg_config)
6418
6419 case "$cf_pkg_config" in
6420 (no)
6421         PKG_CONFIG=none
6422         ;;
6423 (yes)
6424         CF_ACVERSION_CHECK(2.52,
6425                 [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
6426                 [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
6427         ;;
6428 (*)
6429         PKG_CONFIG=$withval
6430         ;;
6431 esac
6432
6433 test -z "$PKG_CONFIG" && PKG_CONFIG=none
6434 if test "$PKG_CONFIG" != none ; then
6435         CF_PATH_SYNTAX(PKG_CONFIG)
6436 elif test "x$cf_pkg_config" != xno ; then
6437         AC_MSG_WARN(pkg-config is not installed)
6438 fi
6439
6440 AC_SUBST(PKG_CONFIG)
6441 ])dnl
6442 dnl ---------------------------------------------------------------------------
6443 dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
6444 dnl -----------------
6445 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
6446 dnl
6447 dnl     POSIX.1-1990                            _POSIX_SOURCE
6448 dnl     POSIX.1-1990 and                        _POSIX_SOURCE and
6449 dnl             POSIX.2-1992 C-Language                 _POSIX_C_SOURCE=2
6450 dnl             Bindings Option
6451 dnl     POSIX.1b-1993                           _POSIX_C_SOURCE=199309L
6452 dnl     POSIX.1c-1996                           _POSIX_C_SOURCE=199506L
6453 dnl     X/Open 2000                             _POSIX_C_SOURCE=200112L
6454 dnl
6455 dnl Parameters:
6456 dnl     $1 is the nominal value for _POSIX_C_SOURCE
6457 AC_DEFUN([CF_POSIX_C_SOURCE],
6458 [AC_REQUIRE([CF_POSIX_VISIBLE])dnl
6459
6460 if test "$cf_cv_posix_visible" = no; then
6461
6462 cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
6463
6464 cf_save_CFLAGS="$CFLAGS"
6465 cf_save_CPPFLAGS="$CPPFLAGS"
6466
6467 CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
6468 CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
6469
6470 AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
6471         CF_MSG_LOG(if the symbol is already defined go no further)
6472         AC_TRY_COMPILE([#include <sys/types.h>],[
6473 #ifndef _POSIX_C_SOURCE
6474 make an error
6475 #endif],
6476         [cf_cv_posix_c_source=no],
6477         [cf_want_posix_source=no
6478          case .$cf_POSIX_C_SOURCE in
6479          (.[[12]]??*)
6480                 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
6481                 ;;
6482          (.2)
6483                 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
6484                 cf_want_posix_source=yes
6485                 ;;
6486          (.*)
6487                 cf_want_posix_source=yes
6488                 ;;
6489          esac
6490          if test "$cf_want_posix_source" = yes ; then
6491                 AC_TRY_COMPILE([#include <sys/types.h>],[
6492 #ifdef _POSIX_SOURCE
6493 make an error
6494 #endif],[],
6495                 cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
6496          fi
6497          CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
6498          CFLAGS="$cf_trim_CFLAGS"
6499          CPPFLAGS="$cf_trim_CPPFLAGS"
6500          CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
6501          CF_MSG_LOG(if the second compile does not leave our definition intact error)
6502          AC_TRY_COMPILE([#include <sys/types.h>],[
6503 #ifndef _POSIX_C_SOURCE
6504 make an error
6505 #endif],,
6506          [cf_cv_posix_c_source=no])
6507          CFLAGS="$cf_save_CFLAGS"
6508          CPPFLAGS="$cf_save_CPPFLAGS"
6509         ])
6510 ])
6511
6512 if test "$cf_cv_posix_c_source" != no ; then
6513         CFLAGS="$cf_trim_CFLAGS"
6514         CPPFLAGS="$cf_trim_CPPFLAGS"
6515         CF_ADD_CFLAGS($cf_cv_posix_c_source)
6516 fi
6517
6518 fi # cf_cv_posix_visible
6519
6520 ])dnl
6521 dnl ---------------------------------------------------------------------------
6522 dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
6523 dnl ----------------
6524 dnl POSIX documents test-macros which an application may set before any system
6525 dnl headers are included to make features available.
6526 dnl
6527 dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
6528 dnl diverged from POSIX in 2002 by setting symbols which make all of the most
6529 dnl recent features visible in the system header files unless the application
6530 dnl overrides the corresponding test-macros.  Doing that introduces portability
6531 dnl problems.
6532 dnl
6533 dnl This macro makes a special check for the symbols used for this, to avoid a
6534 dnl conflicting definition.
6535 AC_DEFUN([CF_POSIX_VISIBLE],
6536 [
6537 AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
6538 AC_TRY_COMPILE([#include <stdio.h>],[
6539 #if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
6540         && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
6541         && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
6542         && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
6543 #error conflicting symbols found
6544 #endif
6545 ],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
6546 ])
6547 ])dnl
6548 dnl ---------------------------------------------------------------------------
6549 dnl CF_PREDEFINE version: 2 updated: 2010/05/26 16:44:57
6550 dnl ------------
6551 dnl Add definitions to CPPFLAGS to ensure they're predefined for all compiles.
6552 dnl
6553 dnl $1 = symbol to test
6554 dnl $2 = value (if any) to use for a predefinition
6555 AC_DEFUN([CF_PREDEFINE],
6556 [
6557 AC_MSG_CHECKING(if we must define $1)
6558 AC_TRY_COMPILE([#include <sys/types.h>
6559 ],[
6560 #ifndef $1
6561 make an error
6562 #endif],[cf_result=no],[cf_result=yes])
6563 AC_MSG_RESULT($cf_result)
6564
6565 if test "$cf_result" = yes ; then
6566         CPPFLAGS="$CPPFLAGS ifelse([$2],,-D$1,[-D$1=$2])"
6567 elif test "x$2" != "x" ; then
6568         AC_MSG_CHECKING(checking for compatible value versus $2)
6569         AC_TRY_COMPILE([#include <sys/types.h>
6570 ],[
6571 #if $1-$2 < 0
6572 make an error
6573 #endif],[cf_result=yes],[cf_result=no])
6574         AC_MSG_RESULT($cf_result)
6575         if test "$cf_result" = no ; then
6576                 # perhaps we can override it - try...
6577                 CPPFLAGS="$CPPFLAGS -D$1=$2"
6578         fi
6579 fi
6580 ])dnl
6581 dnl ---------------------------------------------------------------------------
6582 dnl CF_PRG_RULES version: 2 updated: 2021/01/01 13:31:04
6583 dnl ------------
6584 dnl Append definitions and rules for the given programs to the subdirectory
6585 dnl Makefiles, and the recursion rule for the top-level Makefile.
6586 dnl
6587 dnl parameters
6588 dnl     $1 = script to run
6589 dnl     $2 = list of subdirectories
6590 dnl
6591 dnl variables
6592 dnl     $AWK
6593 AC_DEFUN([CF_PRG_RULES],
6594 [
6595 for cf_dir in $2
6596 do
6597         if test ! -d "$srcdir/$cf_dir" ; then
6598                 continue
6599         elif test -f "$srcdir/$cf_dir/programs" ; then
6600                 $AWK -f $1 "$srcdir/$cf_dir/programs" >>$cf_dir/Makefile
6601         fi
6602 done
6603
6604 ])dnl
6605 dnl ---------------------------------------------------------------------------
6606 dnl CF_PROG_AR version: 1 updated: 2009/01/01 20:15:22
6607 dnl ----------
6608 dnl Check for archiver "ar".
6609 AC_DEFUN([CF_PROG_AR],[
6610 AC_CHECK_TOOL(AR, ar, ar)
6611 ])
6612 dnl ---------------------------------------------------------------------------
6613 dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59
6614 dnl -----------
6615 dnl Check for awk, ensure that the check found something.
6616 AC_DEFUN([CF_PROG_AWK],
6617 [
6618 AC_PROG_AWK
6619 test -z "$AWK" && AC_MSG_ERROR(No awk program found)
6620 ])dnl
6621 dnl ---------------------------------------------------------------------------
6622 dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
6623 dnl ----------
6624 dnl standard check for CC, plus followup sanity checks
6625 dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
6626 AC_DEFUN([CF_PROG_CC],[
6627 CF_ACVERSION_CHECK(2.53,
6628         [AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
6629          AC_REQUIRE([AC_PROG_CC])],
6630         [])
6631 ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
6632 CF_GCC_VERSION
6633 CF_ACVERSION_CHECK(2.52,
6634         [AC_PROG_CC_STDC],
6635         [CF_ANSI_CC_REQD])
6636 CF_CC_ENV_FLAGS
6637 ])dnl
6638 dnl ---------------------------------------------------------------------------
6639 dnl CF_PROG_CC_C_O version: 6 updated: 2021/01/01 13:31:04
6640 dnl --------------
6641 dnl Analogous to AC_PROG_CC_C_O, but more useful: tests only $CC, ensures that
6642 dnl the output file can be renamed, and allows for a shell variable that can
6643 dnl be used later.  The parameter is either CC or CXX.  The result is the
6644 dnl cache variable:
6645 dnl     $cf_cv_prog_CC_c_o
6646 dnl     $cf_cv_prog_CXX_c_o
6647 dnl
6648 dnl $1 = compiler
6649 dnl $2 = compiler options, if any
6650 AC_DEFUN([CF_PROG_CC_C_O],
6651 [AC_REQUIRE([AC_PROG_CC])dnl
6652 AC_MSG_CHECKING([whether [$]$1 understands -c and -o together])
6653 AC_CACHE_VAL(cf_cv_prog_$1_c_o,
6654 [
6655 cat > conftest.$ac_ext <<CF_EOF
6656 int main(void)
6657 {
6658         ${cf_cv_main_return:-return}(0);
6659 }
6660 CF_EOF
6661 # We do the test twice because some compilers refuse to overwrite an
6662 # existing .o file with -o, though they will create one.
6663 ac_try='[$]$1 $2 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC'
6664 if AC_TRY_EVAL(ac_try) &&
6665   test -f conftest2.$ac_objext && AC_TRY_EVAL(ac_try);
6666 then
6667   eval cf_cv_prog_$1_c_o=yes
6668 else
6669   eval cf_cv_prog_$1_c_o=no
6670 fi
6671 rm -rf ./conftest*
6672 ])dnl
6673 if test "$cf_cv_prog_$1_c_o" = yes; then
6674   AC_MSG_RESULT([yes])
6675 else
6676   AC_MSG_RESULT([no])
6677 fi
6678 ])dnl
6679 dnl ---------------------------------------------------------------------------
6680 dnl CF_PROG_GNAT version: 12 updated: 2021/01/02 17:09:14
6681 dnl ------------
6682 dnl Check for gnat/gnatmake/etc, ensure that the toolset is complete.
6683 AC_DEFUN([CF_PROG_GNAT],[
6684 for cf_prog_gnat in gnat gnatmake gprconfig gprbuild
6685 do
6686         CF_UPPER(cf_upper_prog_gnat,${cf_prog_gnat})
6687
6688         unset ac_cv_path_cf_TEMP_gnat
6689         unset cf_TEMP_gnat
6690         AC_PATH_PROG(cf_TEMP_gnat,$cf_prog_gnat,no)
6691         eval "cf_cv_PATH_$cf_upper_prog_gnat=[$]ac_cv_path_cf_TEMP_gnat"
6692
6693         if test "x$cf_TEMP_gnat" != xno; then
6694                 unset cf_cv_gnat_version
6695                 unset cf_TEMP_gnat
6696                 CF_GNAT_VERSION(cf_TEMP_gnat,$cf_prog_gnat)
6697         fi
6698         eval "cf_cv_VERSION_$cf_upper_prog_gnat=[$]cf_TEMP_gnat"
6699
6700         unset cf_TEMP_gnat
6701         unset cf_cv_gnat_version
6702         unset ac_cv_path_cf_TEMP_gnat
6703 done
6704
6705 if test "x$cf_cv_VERSION_GNATMAKE" = "xno"; then
6706         cf_ada_make=
6707         cf_cv_prog_gnat_correct=no
6708 else
6709         cf_ada_make=gnatmake
6710         if test "x$cf_cv_VERSION_GPRCONFIG" = "xno"; then
6711                 # gprconfig is newer than gnatmake; we can continue...
6712                 cf_ada_config="##"
6713         else
6714                 rm -rf ./conftest* ./*~conftest*
6715                 if mkdir conftest.src
6716                 then
6717                         cf_ada_config=""
6718                         cd conftest.src
6719                         for cf_gprconfig in Ada C
6720                         do
6721                                 AC_MSG_CHECKING(for gprconfig name for $cf_gprconfig)
6722                                 if test "$cf_gprconfig" = C
6723                                 then
6724                                         for cf_gprconfig_param in \
6725                                                 "$cf_gprconfig,,,,GNATGCC" \
6726                                                 "$cf_gprconfig,,,,GCC" \
6727                                                 "$cf_gprconfig"
6728                                         do
6729                                                 cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
6730                                                 test -n "$cf_gprconfig_value" && break
6731                                         done
6732                                 else
6733                                         cf_gprconfig_param=$cf_gprconfig
6734                                         cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
6735                                 fi
6736                                 if test -n "$cf_gprconfig_value"
6737                                 then
6738                                         eval "cf_ada_config_[$]cf_gprconfig=[$]cf_gprconfig_value"
6739                                         AC_MSG_RESULT($cf_gprconfig_value)
6740                                 else
6741                                         AC_MSG_RESULT(missing)
6742                                         cf_ada_config="#"
6743                                         break
6744                                 fi
6745                         done
6746                         cd ..
6747                         rm -rf ./conftest* ./*~conftest*
6748                 fi
6749         fi
6750         if test "x$cf_ada_config" != "x#"
6751         then
6752                 CF_GNAT_VERSION
6753                 CF_CHECK_GNAT_VERSION
6754                 AC_CHECK_PROG(M4_exists, m4, yes, no)
6755                 if test "$ac_cv_prog_M4_exists" = no; then
6756                         cf_cv_prog_gnat_correct=no
6757                         AC_MSG_WARN(Ada95 binding required program m4 not found. Ada95 binding disabled)
6758                 fi
6759                 if test "$cf_cv_prog_gnat_correct" = yes; then
6760                         AC_MSG_CHECKING(if GNAT works)
6761                         CF_GNAT_TRY_RUN([procedure conftest;],
6762 [with Text_IO;
6763 with GNAT.OS_Lib;
6764 procedure conftest is
6765 begin
6766    Text_IO.Put ("Hello World");
6767    Text_IO.New_Line;
6768    GNAT.OS_Lib.OS_Exit (0);
6769 end conftest;],
6770 [cf_cv_prog_gnat_correct=yes],
6771 [cf_cv_prog_gnat_correct=no])
6772                         AC_MSG_RESULT($cf_cv_prog_gnat_correct)
6773                 fi
6774         else
6775                 cf_cv_prog_gnat_correct=no
6776         fi
6777 fi
6778
6779 AC_SUBST(cf_ada_make)
6780 AC_SUBST(cf_ada_config)
6781 AC_SUBST(cf_ada_config_Ada)
6782 AC_SUBST(cf_ada_config_C)
6783 ])dnl
6784 dnl ---------------------------------------------------------------------------
6785 dnl CF_PROG_INSTALL version: 10 updated: 2021/01/04 19:33:05
6786 dnl ---------------
6787 dnl Force $INSTALL to be an absolute-path.  Otherwise, edit_man.sh and the
6788 dnl misc/tabset install won't work properly.  Usually this happens only when
6789 dnl using the fallback mkinstalldirs script
6790 AC_DEFUN([CF_PROG_INSTALL],
6791 [AC_PROG_INSTALL
6792 case $INSTALL in
6793 (/*)
6794         ;;
6795 (*)
6796         CF_DIRNAME(cf_dir,$INSTALL)
6797         test -z "$cf_dir" && cf_dir=.
6798         INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`"
6799         ;;
6800 esac
6801 ])dnl
6802 dnl ---------------------------------------------------------------------------
6803 dnl CF_PROG_LDCONFIG version: 5 updated: 2015/04/18 08:56:57
6804 dnl ----------------
6805 dnl Check for ldconfig, needed to fixup shared libraries that would be built
6806 dnl and then used in the install.
6807 AC_DEFUN([CF_PROG_LDCONFIG],[
6808 if test "$cross_compiling" = yes ; then
6809         LDCONFIG=:
6810 else
6811         case "$cf_cv_system_name" in
6812         (dragonfly*|mirbsd*|freebsd*)
6813                 test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
6814                 ;;
6815         (*) LDPATH=$PATH:/sbin:/usr/sbin
6816                 AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH)
6817                 ;;
6818         esac
6819 fi
6820 AC_SUBST(LDCONFIG)
6821 ])dnl
6822 dnl ---------------------------------------------------------------------------
6823 dnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37
6824 dnl ------------
6825 AC_DEFUN([CF_PROG_LINT],
6826 [
6827 AC_CHECK_PROGS(LINT, lint cppcheck splint)
6828 case "x$LINT" in
6829 (xcppcheck|x*/cppcheck)
6830         test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
6831         ;;
6832 esac
6833 AC_SUBST(LINT_OPTS)
6834 ])dnl
6835 dnl ---------------------------------------------------------------------------
6836 dnl CF_PROG_LN_S version: 2 updated: 2010/08/14 18:25:37
6837 dnl ------------
6838 dnl Combine checks for "ln -s" and "ln -sf", updating $LN_S to include "-f"
6839 dnl option if it is supported.
6840 AC_DEFUN([CF_PROG_LN_S],[
6841 AC_PROG_LN_S
6842 AC_MSG_CHECKING(if $LN_S -f options work)
6843
6844 rm -f conf$$.src conf$$dst
6845 echo >conf$$.dst
6846 echo first >conf$$.src
6847 if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then
6848         cf_prog_ln_sf=yes
6849 else
6850         cf_prog_ln_sf=no
6851 fi
6852 rm -f conf$$.dst conf$$src
6853 AC_MSG_RESULT($cf_prog_ln_sf)
6854
6855 test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
6856 ])dnl
6857 dnl ---------------------------------------------------------------------------
6858 dnl CF_REGEX version: 18 updated: 2021/01/01 16:53:59
6859 dnl --------
6860 dnl Attempt to determine if we've got one of the flavors of regular-expression
6861 dnl code that we can support.
6862 AC_DEFUN([CF_REGEX],
6863 [
6864
6865 cf_regex_func=no
6866 cf_regex_libs=
6867 case "$host_os" in
6868 (mingw*)
6869         # -lsystre -ltre -lintl -liconv
6870         AC_CHECK_LIB(systre,regcomp,[
6871                 AC_CHECK_LIB(iconv,libiconv_open,[CF_ADD_LIB(iconv)])
6872                 AC_CHECK_LIB(intl,libintl_gettext,[CF_ADD_LIB(intl)])
6873                 AC_CHECK_LIB(tre,tre_regcomp,[CF_ADD_LIB(tre)])
6874                 CF_ADD_LIB(systre)
6875                 cf_regex_func=regcomp
6876         ],[
6877                 AC_CHECK_LIB(gnurx,regcomp,[
6878                         CF_ADD_LIB(gnurx)
6879                         cf_regex_func=regcomp])
6880         ])
6881         ;;
6882 (*)
6883         cf_regex_libs="regex re"
6884         AC_CHECK_FUNC(regcomp,[cf_regex_func=regcomp],[
6885                 for cf_regex_lib in $cf_regex_libs
6886                 do
6887                         AC_CHECK_LIB($cf_regex_lib,regcomp,[
6888                                         CF_ADD_LIB($cf_regex_lib)
6889                                         cf_regex_func=regcomp
6890                                         break])
6891                 done
6892         ])
6893         ;;
6894 esac
6895
6896 if test "$cf_regex_func" = no ; then
6897         AC_CHECK_FUNC(compile,[cf_regex_func=compile],[
6898                 AC_CHECK_LIB(gen,compile,[
6899                                 CF_ADD_LIB(gen)
6900                                 cf_regex_func=compile])])
6901 fi
6902
6903 if test "$cf_regex_func" = no ; then
6904         AC_MSG_WARN(cannot find regular expression library)
6905 fi
6906
6907 AC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[
6908
6909 cf_cv_regex_hdrs=no
6910 case "$cf_regex_func" in
6911 (compile)
6912         for cf_regex_hdr in regexp.h regexpr.h
6913         do
6914                 AC_TRY_LINK([#include <$cf_regex_hdr>],[
6915                         char *p = compile("", "", "", 0);
6916                         int x = step("", "");
6917                         (void)p;
6918                         (void)x;
6919                 ],[
6920                         cf_cv_regex_hdrs=$cf_regex_hdr
6921                         break
6922                 ])
6923         done
6924         ;;
6925 (*)
6926         for cf_regex_hdr in regex.h
6927         do
6928                 AC_TRY_LINK([#include <sys/types.h>
6929 #include <$cf_regex_hdr>],[
6930                         regex_t *p = 0;
6931                         int x = regcomp(p, "", 0);
6932                         int y = regexec(p, "", 0, 0, 0);
6933                         (void)x;
6934                         (void)y;
6935                         regfree(p);
6936                 ],[
6937                         cf_cv_regex_hdrs=$cf_regex_hdr
6938                         break
6939                 ])
6940         done
6941         ;;
6942 esac
6943
6944 ])
6945
6946 case "$cf_cv_regex_hdrs" in
6947         (no)            AC_MSG_WARN(no regular expression header found) ;;
6948         (regex.h)       AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;;
6949         (regexp.h)      AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;;
6950         (regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;;
6951 esac
6952 ])dnl
6953 dnl ---------------------------------------------------------------------------
6954 dnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40
6955 dnl ----------------
6956 dnl Remove a given option from CFLAGS/CPPFLAGS
6957 dnl $1 = option to remove
6958 dnl $2 = variable to update
6959 dnl $3 = nonempty to allow verbose message
6960 define([CF_REMOVE_CFLAGS],
6961 [
6962 cf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'`
6963 while true
6964 do
6965         cf_old_cflag=`echo "x[$]$2" | sed -e 's/^.//' -e 's/[[  ]][[    ]]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[[^   ]][[^   ]]*\\)\?%%" -e 's/^[[   ]]*//' -e 's%[[ ]][[ ]]*-D% -D%g' -e 's%[[ ]][[ ]]*-I% -I%g'`
6966         test "[$]$2" != "$cf_old_cflag" || break
6967         ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)])
6968         $2="$cf_old_cflag"
6969 done
6970 ])dnl
6971 dnl ---------------------------------------------------------------------------
6972 dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
6973 dnl ----------------
6974 dnl Remove all -U and -D options that refer to the given symbol from a list
6975 dnl of C compiler options.  This works around the problem that not all
6976 dnl compilers process -U and -D options from left-to-right, so a -U option
6977 dnl cannot be used to cancel the effect of a preceding -D option.
6978 dnl
6979 dnl $1 = target (which could be the same as the source variable)
6980 dnl $2 = source (including '$')
6981 dnl $3 = symbol to remove
6982 define([CF_REMOVE_DEFINE],
6983 [
6984 $1=`echo "$2" | \
6985         sed     -e 's/-[[UD]]'"$3"'\(=[[^       ]]*\)\?[[       ]]/ /g' \
6986                 -e 's/-[[UD]]'"$3"'\(=[[^       ]]*\)\?[$]//g'`
6987 ])dnl
6988 dnl ---------------------------------------------------------------------------
6989 dnl CF_REMOVE_LIB version: 1 updated: 2007/02/17 14:11:52
6990 dnl -------------
6991 dnl Remove the given library from the symbol
6992 dnl
6993 dnl $1 = target (which could be the same as the source variable)
6994 dnl $2 = source (including '$')
6995 dnl $3 = library to remove
6996 define([CF_REMOVE_LIB],
6997 [
6998 # remove $3 library from $2
6999 $1=`echo "$2" | sed -e 's/-l$3[[        ]]//g' -e 's/-l$3[$]//'`
7000 ])dnl
7001 dnl ---------------------------------------------------------------------------
7002 dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
7003 dnl ---------------------
7004 dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
7005 dnl $1 = name of current macro
7006 define([CF_RESTORE_XTRA_FLAGS],
7007 [
7008 LIBS="$cf_save_LIBS_$1"
7009 CFLAGS="$cf_save_CFLAGS_$1"
7010 CPPFLAGS="$cf_save_CPPFLAGS_$1"
7011 ])dnl
7012 dnl ---------------------------------------------------------------------------
7013 dnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50
7014 dnl -------------
7015 AC_DEFUN([CF_RPATH_HACK],
7016 [AC_REQUIRE([AC_PROG_FGREP])dnl
7017 AC_REQUIRE([CF_LD_RPATH_OPT])dnl
7018
7019 AC_MSG_CHECKING(for updated LDFLAGS)
7020 if test -n "$LD_RPATH_OPT" ; then
7021         AC_MSG_RESULT(maybe)
7022
7023         AC_CHECK_PROGS(cf_ldd_prog,ldd,no)
7024         cf_rpath_list="/usr/lib /lib"
7025         if test "$cf_ldd_prog" != no
7026         then
7027                 cf_rpath_oops=
7028
7029 AC_TRY_LINK([#include <stdio.h>],
7030                 [printf("Hello");],
7031                 [cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
7032                  cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[        ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`])
7033
7034                 # If we passed the link-test, but get a "not found" on a given library,
7035                 # this could be due to inept reconfiguration of gcc to make it only
7036                 # partly honor /usr/local/lib (or whatever).  Sometimes this behavior
7037                 # is intentional, e.g., installing gcc in /usr/bin and suppressing the
7038                 # /usr/local libraries.
7039                 if test -n "$cf_rpath_oops"
7040                 then
7041                         for cf_rpath_src in $cf_rpath_oops
7042                         do
7043                                 for cf_rpath_dir in \
7044                                         /usr/local \
7045                                         /usr/pkg \
7046                                         /opt/sfw
7047                                 do
7048                                         if test -f "$cf_rpath_dir/lib/$cf_rpath_src"
7049                                         then
7050                                                 CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src)
7051                                                 LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
7052                                                 break
7053                                         fi
7054                                 done
7055                         done
7056                 fi
7057         fi
7058
7059         CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS)
7060
7061         CF_RPATH_HACK_2(LDFLAGS)
7062         CF_RPATH_HACK_2(LIBS)
7063
7064         CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS)
7065 else
7066         AC_MSG_RESULT(no)
7067 fi
7068 AC_SUBST(EXTRA_LDFLAGS)
7069 ])dnl
7070 dnl ---------------------------------------------------------------------------
7071 dnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04
7072 dnl ---------------
7073 dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to
7074 dnl EXTRA_LDFLAGS for each -L option found.
7075 dnl
7076 dnl $cf_rpath_list contains a list of directories to ignore.
7077 dnl
7078 dnl $1 = variable name to update.  The LDFLAGS variable should be the only one,
7079 dnl      but LIBS often has misplaced -L options.
7080 AC_DEFUN([CF_RPATH_HACK_2],
7081 [
7082 CF_VERBOSE(...checking $1 [$]$1)
7083
7084 cf_rpath_dst=
7085 for cf_rpath_src in [$]$1
7086 do
7087         case "$cf_rpath_src" in
7088         (-L*)
7089
7090                 # check if this refers to a directory which we will ignore
7091                 cf_rpath_skip=no
7092                 if test -n "$cf_rpath_list"
7093                 then
7094                         for cf_rpath_item in $cf_rpath_list
7095                         do
7096                                 if test "x$cf_rpath_src" = "x-L$cf_rpath_item"
7097                                 then
7098                                         cf_rpath_skip=yes
7099                                         break
7100                                 fi
7101                         done
7102                 fi
7103
7104                 if test "$cf_rpath_skip" = no
7105                 then
7106                         # transform the option
7107                         if test "$LD_RPATH_OPT" = "-R " ; then
7108                                 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"`
7109                         else
7110                                 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"`
7111                         fi
7112
7113                         # if we have not already added this, add it now
7114                         cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"`
7115                         if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS"
7116                         then
7117                                 CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp)
7118                                 EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
7119                         fi
7120                 fi
7121                 ;;
7122         esac
7123         cf_rpath_dst="$cf_rpath_dst $cf_rpath_src"
7124 done
7125 $1=$cf_rpath_dst
7126
7127 CF_VERBOSE(...checked $1 [$]$1)
7128 AC_SUBST(EXTRA_LDFLAGS)
7129 ])dnl
7130 dnl ---------------------------------------------------------------------------
7131 dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
7132 dnl ------------------
7133 dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
7134 dnl and libraries which do not update those variables.
7135 dnl
7136 dnl $1 = name of current macro
7137 define([CF_SAVE_XTRA_FLAGS],
7138 [
7139 cf_save_LIBS_$1="$LIBS"
7140 cf_save_CFLAGS_$1="$CFLAGS"
7141 cf_save_CPPFLAGS_$1="$CPPFLAGS"
7142 LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
7143 for cf_X_CFLAGS in $X_CFLAGS
7144 do
7145         case "x$cf_X_CFLAGS" in
7146         x-[[IUD]]*)
7147                 CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
7148                 ;;
7149         *)
7150                 CFLAGS="$CFLAGS $cf_X_CFLAGS"
7151                 ;;
7152         esac
7153 done
7154 ])dnl
7155 dnl ---------------------------------------------------------------------------
7156 dnl CF_SHARED_OPTS version: 107 updated: 2021/09/04 06:47:34
7157 dnl --------------
7158 dnl --------------
7159 dnl Attempt to determine the appropriate CC/LD options for creating a shared
7160 dnl library.
7161 dnl
7162 dnl Notes:
7163 dnl a) ${LOCAL_LDFLAGS} is used to link executables that will run within
7164 dnl the build-tree, i.e., by making use of the libraries that are compiled in
7165 dnl $rel_builddir/lib We avoid compiling-in a $rel_builddir/lib path for the
7166 dnl shared library since that can lead to unexpected results at runtime.
7167 dnl b) ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared
7168 dnl libraries are compiled in ../../lib
7169 dnl
7170 dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure
7171 dnl to install symbolic links to the rel/abi versions of shared libraries.
7172 dnl
7173 dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi
7174 dnl version when making symbolic links.
7175 dnl
7176 dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library
7177 dnl version numbers are infix (ex: libncurses.<ver>.dylib) or postfix
7178 dnl (ex: libncurses.so.<ver>).
7179 dnl
7180 dnl Some loaders leave 'so_locations' lying around.  It is nice to clean up.
7181 AC_DEFUN([CF_SHARED_OPTS],
7182 [
7183         AC_REQUIRE([CF_LD_RPATH_OPT])
7184
7185         RM_SHARED_OPTS=
7186         LOCAL_LDFLAGS=
7187         LOCAL_LDFLAGS2=
7188         LD_SHARED_OPTS=
7189         INSTALL_LIB="-m 644"
7190         : ${rel_builddir:=.}
7191
7192         shlibdir=$libdir
7193         AC_SUBST(shlibdir)
7194
7195         MAKE_DLLS="#"
7196         AC_SUBST(MAKE_DLLS)
7197
7198         cf_cv_do_symlinks=no
7199         cf_ld_rpath_opt=
7200         test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
7201
7202         AC_MSG_CHECKING(if release/abi version should be used for shared libs)
7203         AC_ARG_WITH(shlib-version,
7204         [  --with-shlib-version=X  Specify rel or abi version for shared libs],
7205         [test -z "$withval" && withval=auto
7206         case "$withval" in
7207         (yes)
7208                 cf_cv_shlib_version=auto
7209                 ;;
7210         (rel|abi|auto)
7211                 cf_cv_shlib_version=$withval
7212                 ;;
7213         (*)
7214                 AC_MSG_RESULT($withval)
7215                 AC_MSG_ERROR([option value must be one of: rel, abi, or auto])
7216                 ;;
7217         esac
7218         ],[cf_cv_shlib_version=auto])
7219         AC_MSG_RESULT($cf_cv_shlib_version)
7220
7221         cf_cv_rm_so_locs=no
7222         cf_try_cflags=
7223
7224         # Some less-capable ports of gcc support only -fpic
7225         CC_SHARED_OPTS=
7226
7227         cf_try_fPIC=no
7228         if test "$GCC" = yes
7229         then
7230                 cf_try_fPIC=yes
7231         else
7232                 case "$cf_cv_system_name" in
7233                 (*linux*)       # e.g., PGI compiler
7234                         cf_try_fPIC=yes
7235                         ;;
7236                 esac
7237         fi
7238
7239         if test "$cf_try_fPIC" = yes
7240         then
7241                 AC_MSG_CHECKING(which $CC option to use)
7242                 cf_save_CFLAGS="$CFLAGS"
7243                 for CC_SHARED_OPTS in -fPIC -fpic ''
7244                 do
7245                         CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
7246                         AC_TRY_COMPILE([#include <stdio.h>],[int x = 1],[break],[])
7247                 done
7248                 AC_MSG_RESULT($CC_SHARED_OPTS)
7249                 CFLAGS="$cf_save_CFLAGS"
7250         fi
7251
7252         cf_cv_shlib_version_infix=no
7253
7254         case "$cf_cv_system_name" in
7255         (aix4.[3-9]*|aix[[5-7]]*)
7256                 if test "$GCC" = yes; then
7257                         CC_SHARED_OPTS='-Wl,-brtl'
7258                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
7259                 else
7260                         CC_SHARED_OPTS='-brtl'
7261                         # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall"
7262                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
7263                 fi
7264                 ;;
7265         (beos*)
7266                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
7267                 ;;
7268         (cygwin*)
7269                 CC_SHARED_OPTS=
7270                 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
7271                 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
7272                 cf_cv_shlib_version=cygdll
7273                 cf_cv_shlib_version_infix=cygdll
7274                 shlibdir=$bindir
7275                 MAKE_DLLS=
7276                 cat >mk_shared_lib.sh <<-CF_EOF
7277                 #!$SHELL
7278                 SHARED_LIB=\[$]1
7279                 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
7280                 shift
7281                 cat <<-EOF
7282                 Linking shared library
7283                 ** SHARED_LIB \[$]SHARED_LIB
7284                 ** IMPORT_LIB \[$]IMPORT_LIB
7285 EOF
7286                 exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
7287 CF_EOF
7288                 chmod +x mk_shared_lib.sh
7289                 ;;
7290         (msys*)
7291                 CC_SHARED_OPTS=
7292                 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
7293                 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
7294                 cf_cv_shlib_version=msysdll
7295                 cf_cv_shlib_version_infix=msysdll
7296                 shlibdir=$bindir
7297                 MAKE_DLLS=
7298                 cat >mk_shared_lib.sh <<-CF_EOF
7299                 #!$SHELL
7300                 SHARED_LIB=\[$]1
7301                 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
7302                 shift
7303                 cat <<-EOF
7304                 Linking shared library
7305                 ** SHARED_LIB \[$]SHARED_LIB
7306                 ** IMPORT_LIB \[$]IMPORT_LIB
7307 EOF
7308                 exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
7309 CF_EOF
7310                 chmod +x mk_shared_lib.sh
7311                 ;;
7312         (darwin*)
7313                 cf_try_cflags="no-cpp-precomp"
7314                 CC_SHARED_OPTS="-dynamic"
7315                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $[@]` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $[@]'
7316                 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
7317                 cf_cv_shlib_version_infix=yes
7318                 AC_CACHE_CHECK([if ld -search_paths_first works], cf_cv_ldflags_search_paths_first, [
7319                         cf_save_LDFLAGS=$LDFLAGS
7320                         LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
7321                         AC_TRY_LINK(, [int i;], cf_cv_ldflags_search_paths_first=yes, cf_cv_ldflags_search_paths_first=no)
7322                                 LDFLAGS=$cf_save_LDFLAGS])
7323                 if test "$cf_cv_ldflags_search_paths_first" = yes; then
7324                         LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
7325                 fi
7326                 ;;
7327         (haiku*)
7328                 CF_SHARED_SONAME
7329                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7330                 ;;
7331         (hpux[[7-8]]*)
7332                 # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
7333                 if test "$GCC" != yes; then
7334                         CC_SHARED_OPTS='+Z'
7335                 fi
7336                 MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $[@]'
7337                 INSTALL_LIB="-m 555"
7338                 ;;
7339         (hpux*)
7340                 # (tested with gcc 2.7.2 -- I don't have c89)
7341                 if test "$GCC" = yes; then
7342                         LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
7343                 else
7344                         CC_SHARED_OPTS='+Z'
7345                         LD_SHARED_OPTS='-Wl,+b,${libdir}'
7346                 fi
7347                 MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $[@]'
7348                 # HP-UX shared libraries must be executable, and should be
7349                 # readonly to exploit a quirk in the memory manager.
7350                 INSTALL_LIB="-m 555"
7351                 ;;
7352         (interix*)
7353                 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7354                 if test "$cf_cv_shlib_version" = rel; then
7355                         cf_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
7356                 else
7357                         cf_shared_soname='`basename $[@]`'
7358                 fi
7359                 CC_SHARED_OPTS=
7360                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $[@]'
7361                 ;;
7362         (irix*)
7363                 if test "$cf_cv_enable_rpath" = yes ; then
7364                         EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7365                 fi
7366                 # tested with IRIX 5.2 and 'cc'.
7367                 if test "$GCC" != yes; then
7368                         CC_SHARED_OPTS='-KPIC'
7369                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
7370                 else
7371                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $[@]` -o $[@]'
7372                 fi
7373                 cf_cv_rm_so_locs=yes
7374                 ;;
7375         (linux*|gnu*|k*bsd*-gnu)
7376                 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
7377                         LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
7378                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7379                 fi
7380                 if test "$cf_cv_enable_rpath" = yes ; then
7381                         EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7382                 fi
7383                 CF_SHARED_SONAME
7384                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7385                 ;;
7386         (mingw*msvc*)
7387                 cf_cv_shlib_version=msvcdll
7388                 cf_cv_shlib_version_infix=msvcdll
7389                 shlibdir=$bindir
7390                 MAKE_DLLS=
7391                 if test "$DFT_LWR_MODEL" = "shared" ; then
7392                         LOCAL_LDFLAGS="-link -dll"
7393                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7394                         EXTRA_LDFLAGS="-link -dll $EXTRA_LDFLAGS"
7395                 fi
7396                 CC_SHARED_OPTS=
7397                 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ ${LD} [$]{CFLAGS}'
7398                 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.lib"
7399                 cat >mk_shared_lib.sh <<-CF_EOF
7400                 #!$SHELL
7401                 SHARED_LIB=\[$]1
7402                 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.lib/'\`
7403                 shift
7404                 my_ld=\[$]1
7405                 shift
7406                 cat <<-EOF
7407                 Linking shared library
7408                 ** SHARED LIB \$SHARED_LIB
7409                 ** IMPORT_LIB \$IMPORT_LIB
7410 EOF
7411                 args=\$(echo \[$]* | sed -E "s#-l(\w*)#\1.dll.lib#g" | sed -E "s#-L(\w*)#-LIBPATH:\1#g")
7412                 exec \$my_ld -DLL -IMPLIB:"\${IMPORT_LIB}" -OUT:"\${SHARED_LIB}" ${LDFLAGS} \$args
7413                 mv "\${IMPORT_LIB}" "\${IMPORT_LIB}"
7414 CF_EOF
7415                 chmod +x mk_shared_lib.sh
7416                 cat >mk_prog.sh <<-CF_EOF
7417                 #!$SHELL
7418                 shift
7419                 # Ignore first argument (compiler) and use LD (link.exe) unconditionally
7420                 LD="[$]LD"
7421                 clopts=()
7422                 ldopts=("/subsystem:console")
7423                 libs=()
7424                 isdll=0
7425                 while test \[$]# -gt 0; do
7426                         case "\[$]1" in
7427                                 -link)
7428                                         # ignore -link argument
7429                                         ;;
7430                                 -M[[TD]] | -M[[TD]]d)
7431                                         # ignore runtime-library option
7432                                         ;;
7433                                 -dll)
7434                                         isdll=1
7435                                         ;;
7436                                 -W* | -w*)
7437                                         # ignore warnings
7438                                         ;;
7439                                 -D*)
7440                                         clopts+=("\[$]1")
7441                                         ;;
7442                                 -I*)
7443                                         clopts+=("\[$]1")
7444                                         ;;
7445                                 -l*)
7446                                         libs+=("\`echo \"\[$]1\" | sed \"s/^-l//\"\`")
7447                                         ;;
7448                                 -L*)
7449                                         ldopts+=("\`echo \"\[$]1\" | sed \"s/^-L/-LIBPATH:/\"\`")
7450                                         ;;
7451                                 *.obj | *.o)
7452                                         ldopts+=("\[$]1")
7453                                         ;;
7454                                 -Wl,*)
7455                                         for linkarg in \`echo '\[$]1' | sed -e 's/-Wl,//' -e 's/,/ /'\`; do
7456                                                 ldopts+=("\[$]{linkarg}")
7457                                         done
7458                                         ;;
7459                                 *.lib)
7460                                         ldopts+=("\[$]1")
7461                                         ;;
7462                                 -o)
7463                                         shift
7464                                         ldopts+=("-out:\[$]1")
7465                                         ;;
7466                                 *)
7467                                         clopts+=("\[$]1")
7468                                         ldopts+=("\[$]1")
7469                                         ;;
7470                         esac
7471                         shift
7472                 done
7473                 if [[ "\$isdll" -ne 0 ]]; then
7474                         for lib in \[$]{libs[[*]]}; do
7475                                 ldopts+=("\[$]lib.dll.lib")
7476                         done
7477                 else
7478                         for lib in \[$]{libs[[*]]}; do
7479                                 ldopts+=("\[$]lib.lib")
7480                         done
7481                 fi
7482                 cat <<-EOF
7483                 Creating program
7484                 ** ld options:   "\[$]{ldopts[[@]]}"
7485 EOF
7486                 exec \[$]LD \[$]{ldopts[[@]]}
7487 CF_EOF
7488                 chmod +x mk_prog.sh
7489                 LINK_PROGS="$SHELL ${rel_builddir}/mk_prog.sh"
7490                 LINK_TESTS="$SHELL ${rel_builddir}/mk_prog.sh"
7491                 ;;
7492         (mingw*)
7493                 cf_cv_shlib_version=mingw
7494                 cf_cv_shlib_version_infix=mingw
7495                 shlibdir=$bindir
7496                 MAKE_DLLS=
7497                 if test "$DFT_LWR_MODEL" = "shared" ; then
7498                         LOCAL_LDFLAGS="-Wl,--enable-auto-import"
7499                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7500                         EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
7501                 fi
7502                 CC_SHARED_OPTS=
7503                 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
7504                 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
7505                 cat >mk_shared_lib.sh <<-CF_EOF
7506                 #!$SHELL
7507                 SHARED_LIB=\[$]1
7508                 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
7509                 shift
7510                 cat <<-EOF
7511                 Linking shared library
7512                 ** SHARED_LIB \[$]SHARED_LIB
7513                 ** IMPORT_LIB \[$]IMPORT_LIB
7514 EOF
7515                 exec \[$]* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
7516 CF_EOF
7517                 chmod +x mk_shared_lib.sh
7518                 ;;
7519         (openbsd[[2-9]].*|mirbsd*)
7520                 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
7521                         LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
7522                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7523                 fi
7524                 if test "$cf_cv_enable_rpath" = yes ; then
7525                         EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7526                 fi
7527                 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7528                 CF_SHARED_SONAME
7529                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7530                 ;;
7531         (nskJ*)
7532                 CC_SHARED_OPTS=
7533                 MK_SHARED_LIB='${LD} -Wshared -Weld=-export_all -o $[@]'
7534                 ;;
7535         (nskL*)
7536                 CC_SHARED_OPTS=
7537                 MK_SHARED_LIB='${LD} -Wshared -Wxld=-export_all -o $[@]'
7538                 ;;
7539         (nto-qnx*|openbsd*|freebsd[[12]].*)
7540                 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7541                 MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $[@]'
7542                 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7543                 ;;
7544         (dragonfly*|freebsd*)
7545                 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7546                 if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
7547                         LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
7548                         LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
7549                         EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7550                 fi
7551                 CF_SHARED_SONAME
7552                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7553                 ;;
7554         (netbsd*)
7555                 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7556                 if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
7557                         LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
7558                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7559                         EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7560                         if test "$cf_cv_shlib_version" = auto; then
7561                         if test -f /usr/libexec/ld.elf_so; then
7562                                 cf_cv_shlib_version=abi
7563                         else
7564                                 cf_cv_shlib_version=rel
7565                         fi
7566                         fi
7567                         CF_SHARED_SONAME
7568                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]'
7569                 else
7570                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -o $[@]'
7571                 fi
7572                 ;;
7573         (osf*|mls+*)
7574                 # tested with OSF/1 V3.2 and 'cc'
7575                 # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
7576                 # link with shared libs).
7577                 MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`'
7578                 case "$host_os" in
7579                 (osf4*)
7580                         MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
7581                         ;;
7582                 esac
7583                 MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]'
7584                 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
7585                         LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
7586                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7587                 fi
7588                 cf_cv_rm_so_locs=yes
7589                 ;;
7590         (sco3.2v5*)  # also uw2* and UW7: hops 13-Apr-98
7591                 # tested with osr5.0.5
7592                 if test "$GCC" != yes; then
7593                         CC_SHARED_OPTS='-belf -KPIC'
7594                 fi
7595                 MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@'
7596                 if test "$cf_cv_enable_rpath" = yes ; then
7597                         # only way is to set LD_RUN_PATH but no switch for it
7598                         RUN_PATH=$libdir
7599                 fi
7600                 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7601                 LINK_PROGS='LD_RUN_PATH=${libdir}'
7602                 LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
7603                 ;;
7604         (sunos4*)
7605                 # tested with SunOS 4.1.1 and gcc 2.7.0
7606                 if test "$GCC" != yes; then
7607                         CC_SHARED_OPTS='-KPIC'
7608                 fi
7609                 MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $[@]'
7610                 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7611                 ;;
7612         (solaris2*)
7613                 # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
7614                 # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
7615                 if test "$DFT_LWR_MODEL" = "shared" ; then
7616                         LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
7617                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7618                 fi
7619                 if test "$cf_cv_enable_rpath" = yes ; then
7620                         EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS"
7621                 fi
7622                 CF_SHARED_SONAME
7623                 if test "$GCC" != yes; then
7624                         cf_save_CFLAGS="$CFLAGS"
7625                         for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O
7626                         do
7627                                 CFLAGS="$cf_shared_opts $cf_save_CFLAGS"
7628                                 AC_TRY_COMPILE([#include <stdio.h>],[printf("Hello\\n");],[break])
7629                         done
7630                         CFLAGS="$cf_save_CFLAGS"
7631                         CC_SHARED_OPTS=$cf_shared_opts
7632                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $[@]'
7633                 else
7634                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]'
7635                 fi
7636                 ;;
7637         (sysv5uw7*|unix_sv*)
7638                 # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
7639                 if test "$GCC" != yes; then
7640                         CC_SHARED_OPTS='-KPIC'
7641                 fi
7642                 MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o [$]@'
7643                 ;;
7644         (*)
7645                 CC_SHARED_OPTS='unknown'
7646                 MK_SHARED_LIB='echo unknown'
7647                 ;;
7648         esac
7649
7650         # This works if the last tokens in $MK_SHARED_LIB are the -o target.
7651         case "$cf_cv_shlib_version" in
7652         (rel|abi)
7653                 case "$MK_SHARED_LIB" in
7654                 (*'-o $[@]')
7655                         test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
7656                         ;;
7657                 (*)
7658                         AC_MSG_WARN(ignored --with-shlib-version)
7659                         ;;
7660                 esac
7661                 ;;
7662         esac
7663
7664         if test -n "$cf_try_cflags"
7665         then
7666 cat > conftest.$ac_ext <<EOF
7667 #line __oline__ "${as_me:-configure}"
7668 #include <stdio.h>
7669 int main(int argc, char *argv[[]])
7670 {
7671         printf("hello\\n");
7672         return (argv[[argc-1]] == 0) ;
7673 }
7674 EOF
7675                 cf_save_CFLAGS="$CFLAGS"
7676                 for cf_opt in $cf_try_cflags
7677                 do
7678                         CFLAGS="$cf_save_CFLAGS -$cf_opt"
7679                         AC_MSG_CHECKING(if CFLAGS option -$cf_opt works)
7680                         if AC_TRY_EVAL(ac_compile); then
7681                                 AC_MSG_RESULT(yes)
7682                                 cf_save_CFLAGS="$CFLAGS"
7683                         else
7684                                 AC_MSG_RESULT(no)
7685                         fi
7686                 done
7687                 CFLAGS="$cf_save_CFLAGS"
7688         fi
7689
7690
7691         # RPATH_LIST is a colon-separated list of directories
7692         test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
7693         test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
7694
7695         test "$cf_cv_rm_so_locs" = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations"
7696
7697         CF_VERBOSE(CC_SHARED_OPTS: $CC_SHARED_OPTS)
7698         CF_VERBOSE(MK_SHARED_LIB:  $MK_SHARED_LIB)
7699
7700         AC_SUBST(CC_SHARED_OPTS)
7701         AC_SUBST(LD_RPATH_OPT)
7702         AC_SUBST(LD_SHARED_OPTS)
7703         AC_SUBST(MK_SHARED_LIB)
7704         AC_SUBST(RM_SHARED_OPTS)
7705
7706         AC_SUBST(LINK_PROGS)
7707         AC_SUBST(LINK_TESTS)
7708
7709         AC_SUBST(EXTRA_LDFLAGS)
7710         AC_SUBST(LOCAL_LDFLAGS)
7711         AC_SUBST(LOCAL_LDFLAGS2)
7712
7713         AC_SUBST(INSTALL_LIB)
7714         AC_SUBST(RPATH_LIST)
7715 ])dnl
7716 dnl ---------------------------------------------------------------------------
7717 dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43
7718 dnl ----------------
7719 dnl utility macro for CF_SHARED_OPTS, constructs "$cf_cv_shared_soname" for
7720 dnl substitution into MK_SHARED_LIB string for the "-soname" (or similar)
7721 dnl option.
7722 dnl
7723 dnl $1 is the default that should be used for "$cf_cv_shlib_version".
7724 dnl If missing, use "rel".
7725 define([CF_SHARED_SONAME],
7726 [
7727         test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=ifelse($1,,rel,$1)
7728         if test "$cf_cv_shlib_version" = rel; then
7729                 cf_cv_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
7730         else
7731                 cf_cv_shared_soname='`basename $[@]`'
7732         fi
7733 ])
7734 dnl ---------------------------------------------------------------------------
7735 dnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04
7736 dnl -----------
7737 dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
7738 dnl programs need this test).
7739 dnl
7740 dnl This is really a Mac OS X 10.4.3 workaround.  Defining _POSIX_C_SOURCE
7741 dnl forces SIGWINCH to be undefined (breaks xterm, ncurses).  Oddly, the struct
7742 dnl winsize declaration is left alone - we may revisit this if Apple choose to
7743 dnl break that part of the interface as well.
7744 AC_DEFUN([CF_SIGWINCH],
7745 [
7746 AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[
7747         AC_TRY_COMPILE([
7748 #include <sys/types.h>
7749 #include <sys/signal.h>
7750 ],[int x = SIGWINCH; (void)x],
7751         [cf_cv_define_sigwinch=yes],
7752         [AC_TRY_COMPILE([
7753 #undef _XOPEN_SOURCE
7754 #undef _POSIX_SOURCE
7755 #undef _POSIX_C_SOURCE
7756 #include <sys/types.h>
7757 #include <sys/signal.h>
7758 ],[int x = SIGWINCH; (void)x],
7759         [cf_cv_define_sigwinch=maybe],
7760         [cf_cv_define_sigwinch=no])
7761 ])
7762 ])
7763
7764 if test "$cf_cv_define_sigwinch" = maybe ; then
7765 AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[
7766 cf_cv_fixup_sigwinch=unknown
7767 cf_sigwinch=32
7768 while test "$cf_sigwinch" != 1
7769 do
7770         AC_TRY_COMPILE([
7771 #undef _XOPEN_SOURCE
7772 #undef _POSIX_SOURCE
7773 #undef _POSIX_C_SOURCE
7774 #include <sys/types.h>
7775 #include <sys/signal.h>
7776 ],[
7777 #if SIGWINCH != $cf_sigwinch
7778 make an error
7779 #endif
7780 int x = SIGWINCH; (void)x],
7781         [cf_cv_fixup_sigwinch=$cf_sigwinch
7782          break])
7783
7784 cf_sigwinch="`expr "$cf_sigwinch" - 1`"
7785 done
7786 ])
7787
7788         if test "$cf_cv_fixup_sigwinch" != unknown ; then
7789                 CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch"
7790         fi
7791 fi
7792 ])dnl
7793 dnl ---------------------------------------------------------------------------
7794 dnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47
7795 dnl ---------------
7796 dnl signal handler, but there are some gcc dependencies in that recommendation.
7797 dnl Try anyway.
7798 AC_DEFUN([CF_SIG_ATOMIC_T],
7799 [
7800 AC_MSG_CHECKING(for signal global datatype)
7801 AC_CACHE_VAL(cf_cv_sig_atomic_t,[
7802         for cf_type in \
7803                 "volatile sig_atomic_t" \
7804                 "sig_atomic_t" \
7805                 "int"
7806         do
7807         AC_TRY_COMPILE([
7808 #include <sys/types.h>
7809 #include <signal.h>
7810 #include <stdio.h>
7811
7812 extern $cf_type x;
7813 $cf_type x;
7814 static void handler(int sig)
7815 {
7816         (void)sig;
7817         x = 5;
7818 }],
7819                 [signal(SIGINT, handler);
7820                  x = 1],
7821                 [cf_cv_sig_atomic_t=$cf_type],
7822                 [cf_cv_sig_atomic_t=no])
7823                 test "$cf_cv_sig_atomic_t" != no && break
7824         done
7825         ])
7826 AC_MSG_RESULT($cf_cv_sig_atomic_t)
7827 test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
7828 ])dnl
7829 dnl ---------------------------------------------------------------------------
7830 dnl CF_SIZECHANGE version: 18 updated: 2021/09/04 06:35:04
7831 dnl -------------
7832 dnl Check for definitions & structures needed for window size-changing
7833 dnl
7834 dnl https://stackoverflow.com/questions/18878141/difference-between-structures-ttysize-and-winsize/50769952#50769952
7835 AC_DEFUN([CF_SIZECHANGE],
7836 [
7837 AC_REQUIRE([CF_STRUCT_TERMIOS])
7838 AC_CACHE_CHECK(declaration of size-change, cf_cv_sizechange,[
7839         cf_cv_sizechange=unknown
7840         cf_save_CPPFLAGS="$CPPFLAGS"
7841
7842 for cf_opts in "" "NEED_PTEM_H"
7843 do
7844
7845         CPPFLAGS="$cf_save_CPPFLAGS"
7846         if test -n "$cf_opts"
7847         then
7848                 CF_APPEND_TEXT(CPPFLAGS,-D$cf_opts)
7849         fi
7850         AC_TRY_COMPILE([#include <sys/types.h>
7851 #ifdef HAVE_TERMIOS_H
7852 #include <termios.h>
7853 #else
7854 #ifdef HAVE_TERMIO_H
7855 #include <termio.h>
7856 #endif
7857 #endif
7858
7859 #ifdef NEED_PTEM_H
7860 /* This is a workaround for SCO:  they neglected to define struct winsize in
7861  * termios.h -- it is only in termio.h and ptem.h
7862  */
7863 #include <sys/stream.h>
7864 #include <sys/ptem.h>
7865 #endif
7866
7867 #ifdef HAVE_SYS_IOCTL_H
7868 #include <sys/ioctl.h>
7869 #endif
7870 ],[
7871 #ifdef TIOCGSIZE
7872         struct ttysize win;     /* SunOS 3.0... */
7873         int y = win.ts_lines = 2;
7874         int x = win.ts_cols = 1;
7875         (void)y;
7876         (void)x;
7877 #else
7878 #ifdef TIOCGWINSZ
7879         struct winsize win;     /* everything else */
7880         int y = win.ws_row = 2;
7881         int x = win.ws_col = 1;
7882         (void)y;
7883         (void)x;
7884 #else
7885         no TIOCGSIZE or TIOCGWINSZ
7886 #endif /* TIOCGWINSZ */
7887 #endif /* TIOCGSIZE */
7888         ],
7889         [cf_cv_sizechange=yes],
7890         [cf_cv_sizechange=no])
7891
7892         CPPFLAGS="$cf_save_CPPFLAGS"
7893         if test "$cf_cv_sizechange" = yes ; then
7894                 echo "size-change succeeded ($cf_opts)" >&AC_FD_CC
7895                 test -n "$cf_opts" && cf_cv_sizechange="$cf_opts"
7896                 break
7897         fi
7898 done
7899 ])
7900 if test "$cf_cv_sizechange" != no ; then
7901         AC_DEFINE(HAVE_SIZECHANGE,1,[Define to 1 if sizechange declarations are provided])
7902         case "$cf_cv_sizechange" in
7903         (NEED*)
7904                 AC_DEFINE_UNQUOTED($cf_cv_sizechange )
7905                 ;;
7906         esac
7907 fi
7908 ])dnl
7909 dnl ---------------------------------------------------------------------------
7910 dnl CF_SRC_MODULES version: 33 updated: 2021/01/01 13:31:04
7911 dnl --------------
7912 dnl For each parameter, test if the source-directory exists, and if it contains
7913 dnl a 'modules' file.  If so, add to the list $cf_cv_src_modules which we'll
7914 dnl use in CF_LIB_RULES.
7915 dnl
7916 dnl This uses the configured value to make the lists SRC_SUBDIRS and
7917 dnl SUB_MAKEFILES which are used in the makefile-generation scheme.
7918 AC_DEFUN([CF_SRC_MODULES],
7919 [
7920 AC_REQUIRE([CF_CHECK_GNAT_VERSION])
7921 AC_MSG_CHECKING(for src modules)
7922
7923 # dependencies and linker-arguments for test-programs
7924 TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
7925 TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEP2"
7926 if test "$DFT_LWR_MODEL" = "libtool"; then
7927         TEST_ARGS="${TEST_DEPS}"
7928         TEST_ARG2="${TEST_DEP2}"
7929 else
7930         TEST_ARGS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS"
7931         TEST_ARG2="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARG2"
7932 fi
7933
7934 PC_MODULES_TO_MAKE="ncurses${USE_ARG_SUFFIX}"
7935 cf_cv_src_modules=
7936 for cf_dir in $1
7937 do
7938         if test -f "$srcdir/$cf_dir/modules" ; then
7939
7940                 # We may/may not have tack in the distribution, though the
7941                 # makefile is.
7942                 if test "$cf_dir" = tack ; then
7943                         if test "x$cf_with_tack" != "xyes"; then
7944                                 continue
7945                         fi
7946                 fi
7947
7948                 if test -z "$cf_cv_src_modules"; then
7949                         cf_cv_src_modules=$cf_dir
7950                 else
7951                         cf_cv_src_modules="$cf_cv_src_modules $cf_dir"
7952                 fi
7953
7954                 # Make the ncurses_cfg.h file record the library interface files as
7955                 # well.  These are header files that are the same name as their
7956                 # directory.  Ncurses is the only library that does not follow
7957                 # that pattern.
7958                 if test "$cf_dir" = tack ; then
7959                         continue
7960                 elif test -f "$srcdir/${cf_dir}/${cf_dir}.h" ; then
7961                         CF_UPPER(cf_have_include,$cf_dir)
7962                         AC_DEFINE_UNQUOTED(HAVE_${cf_have_include}_H)
7963                         AC_DEFINE_UNQUOTED(HAVE_LIB${cf_have_include})
7964                         CF_MAP_LIB_BASENAME(TEST_ROOT,$cf_dir)
7965                         TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TEST_ROOT}${DFT_DEP_SUFFIX} $TEST_DEPS"
7966                         TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TEST_ROOT}${DFT_DEP_SUFFIX} $TEST_DEP2"
7967                         if test "$DFT_LWR_MODEL" = "libtool"; then
7968                                 TEST_ARGS="${TEST_DEPS}"
7969                                 TEST_ARG2="${TEST_DEP2}"
7970                         else
7971                                 TEST_ARGS="-l${TEST_ROOT}${USE_ARG_SUFFIX} $TEST_ARGS"
7972                                 TEST_ARG2="-l${TEST_ROOT}${USE_ARG_SUFFIX} $TEST_ARG2"
7973                         fi
7974                         PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ${cf_dir}${USE_ARG_SUFFIX}"
7975                 fi
7976         fi
7977 done
7978 AC_MSG_RESULT($cf_cv_src_modules)
7979
7980 TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
7981 TEST_ARG2="-L${LIB_2ND} $TEST_ARG2"
7982
7983 AC_SUBST(TEST_ARGS)
7984 AC_SUBST(TEST_DEPS)
7985
7986 AC_SUBST(TEST_ARG2)
7987 AC_SUBST(TEST_DEP2)
7988
7989 SRC_SUBDIRS=
7990 if test "x$cf_with_manpages" != xno ; then
7991         SRC_SUBDIRS="$SRC_SUBDIRS man"
7992 fi
7993 SRC_SUBDIRS="$SRC_SUBDIRS include"
7994 for cf_dir in $cf_cv_src_modules
7995 do
7996         SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir"
7997 done
7998 if test "x$cf_with_tests" != "xno" ; then
7999         SRC_SUBDIRS="$SRC_SUBDIRS test"
8000 fi
8001 # always make this, to install the ncurses-config script
8002 SRC_SUBDIRS="$SRC_SUBDIRS misc"
8003 if test "$cf_with_cxx_binding" != no; then
8004         PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${USE_ARG_SUFFIX}"
8005         SRC_SUBDIRS="$SRC_SUBDIRS c++"
8006 fi
8007
8008 test "x$with_termlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TINFO_ARG_SUFFIX"
8009 test "x$with_ticlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TICS_ARG_SUFFIX"
8010
8011 AC_SUBST(PC_MODULES_TO_MAKE)
8012
8013 ADA_SUBDIRS=
8014 if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = xyes && test -f "$srcdir/Ada95/Makefile.in" ; then
8015         SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
8016         ADA_SUBDIRS="gen src"
8017         if test "x$cf_with_tests" != "xno" ; then
8018                 ADA_SUBDIRS="$ADA_SUBDIRS samples"
8019         fi
8020 fi
8021
8022 SUB_MAKEFILES=
8023 for cf_dir in $SRC_SUBDIRS
8024 do
8025         SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile"
8026 done
8027
8028 if test -n "$ADA_SUBDIRS"; then
8029         for cf_dir in $ADA_SUBDIRS
8030         do
8031                 SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile"
8032         done
8033         AC_SUBST(ADA_SUBDIRS)
8034 fi
8035 ])dnl
8036 dnl ---------------------------------------------------------------------------
8037 dnl CF_STDCPP_LIBRARY version: 12 updated: 2021/01/01 13:31:04
8038 dnl -----------------
8039 dnl Check for -lstdc++, which is GNU's standard C++ library.
8040 dnl If $CXXLIBS is set, add that to the libraries used for test-linking.
8041 dnl If -lstdc++ was not already added to $LIBS or $CXXLIBS, and is needed,
8042 dnl add it to $CXXLIBS.
8043 AC_DEFUN([CF_STDCPP_LIBRARY],
8044 [
8045 if test -n "$GXX" ; then
8046
8047         cf_save="$LIBS"
8048         LIBS="$LIBS $CXXLIBS"
8049         AC_MSG_CHECKING(if we already have C++ library)
8050         AC_TRY_LINK([
8051                         #include <iostream>],[
8052                         std::cout << "Hello World!" << std::endl;],
8053                 [cf_have_libstdcpp=yes],
8054                 [cf_have_libstdcpp=no])
8055         AC_MSG_RESULT($cf_have_libstdcpp)
8056         LIBS="$cf_save"
8057
8058         if test "$cf_have_libstdcpp" != yes
8059         then
8060                 case "$cf_cv_system_name" in
8061                 (os2*)
8062                         if test -z "`g++ -dM -E - < /dev/null | grep __KLIBC__`"; then
8063                                 cf_stdcpp_libname=stdcpp
8064                         else
8065                                 cf_stdcpp_libname=stdc++
8066                         fi
8067                         ;;
8068                 (*)
8069                         cf_stdcpp_libname=stdc++
8070                         ;;
8071                 esac
8072
8073                 AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[
8074                         cf_save="$LIBS"
8075                         LIBS="$LIBS $CXXLIBS"
8076                         CF_ADD_LIB($cf_stdcpp_libname)
8077                 AC_TRY_LINK([
8078                                 #include <iostream>],[
8079                                 std::cout << "Hello World!" << std::endl;],
8080                         [cf_cv_libstdcpp=yes],
8081                         [cf_cv_libstdcpp=no])
8082                         LIBS="$cf_save"
8083                 ])
8084                 test "$cf_cv_libstdcpp" = yes && { CF_ADD_LIB($cf_stdcpp_libname,CXXLIBS) }
8085         fi
8086 fi
8087 ])dnl
8088 dnl ---------------------------------------------------------------------------
8089 dnl CF_STRIP_G_OPT version: 4 updated: 2021/01/02 09:31:20
8090 dnl --------------
8091 dnl     Remove "-g" option from the compiler options
8092 AC_DEFUN([CF_STRIP_G_OPT],
8093 [$1=`echo "${$1}" | CF__SED_TRIMBLANKS(-e 's%-g %%' -e 's%-g$%%')`])dnl
8094 dnl ---------------------------------------------------------------------------
8095 dnl CF_STRUCT_SIGACTION version: 5 updated: 2012/10/06 17:56:13
8096 dnl -------------------
8097 dnl Check if we need _POSIX_SOURCE defined to use struct sigaction.  We'll only
8098 dnl do this if we've found the sigaction function.
8099 AC_DEFUN([CF_STRUCT_SIGACTION],[
8100 AC_REQUIRE([CF_XOPEN_SOURCE])
8101
8102 if test "$ac_cv_func_sigaction" = yes; then
8103 AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE)
8104 AC_TRY_COMPILE([
8105 #include <sys/types.h>
8106 #include <signal.h>],
8107         [struct sigaction act],
8108         [sigact_bad=no],
8109         [
8110 AC_TRY_COMPILE([
8111 #define _POSIX_SOURCE
8112 #include <sys/types.h>
8113 #include <signal.h>],
8114         [struct sigaction act],
8115         [sigact_bad=yes
8116          AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE])],
8117          [sigact_bad=unknown])])
8118 AC_MSG_RESULT($sigact_bad)
8119 fi
8120 ])dnl
8121 dnl ---------------------------------------------------------------------------
8122 dnl CF_STRUCT_TERMIOS version: 11 updated: 2020/03/19 20:46:13
8123 dnl -----------------
8124 dnl Some machines require _POSIX_SOURCE to completely define struct termios.
8125 AC_DEFUN([CF_STRUCT_TERMIOS],[
8126 AC_REQUIRE([CF_XOPEN_SOURCE])
8127
8128 AC_CHECK_HEADERS( \
8129 termio.h \
8130 termios.h \
8131 unistd.h \
8132 sys/ioctl.h \
8133 sys/termio.h \
8134 )
8135
8136 if test "$ac_cv_header_termios_h" = yes ; then
8137         case "$CFLAGS $CPPFLAGS" in
8138         (*-D_POSIX_SOURCE*)
8139                 termios_bad=dunno ;;
8140         (*)     termios_bad=maybe ;;
8141         esac
8142         if test "$termios_bad" = maybe ; then
8143         AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE)
8144         AC_TRY_COMPILE([#include <termios.h>],
8145                 [struct termios foo; int x = foo.c_iflag = 1; (void)x],
8146                 termios_bad=no, [
8147                 AC_TRY_COMPILE([
8148 #define _POSIX_SOURCE
8149 #include <termios.h>],
8150                         [struct termios foo; int x = foo.c_iflag = 2; (void)x],
8151                         termios_bad=unknown,
8152                         termios_bad=yes AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE]))
8153                         ])
8154         AC_MSG_RESULT($termios_bad)
8155         fi
8156 fi
8157 ])dnl
8158 dnl ---------------------------------------------------------------------------
8159 dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
8160 dnl --------------
8161 dnl Construct a search-list for a nonstandard header/lib-file
8162 dnl     $1 = the variable to return as result
8163 dnl     $2 = the package name
8164 dnl     $3 = the subdirectory, e.g., bin, include or lib
8165 AC_DEFUN([CF_SUBDIR_PATH],
8166 [
8167 $1=
8168
8169 CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
8170
8171 for cf_subdir_prefix in \
8172         /usr \
8173         /usr/local \
8174         /usr/pkg \
8175         /opt \
8176         /opt/local \
8177         [$]HOME
8178 do
8179         CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
8180 done
8181 ])dnl
8182 dnl ---------------------------------------------------------------------------
8183 dnl CF_SUBST_IF version: 2 updated: 2006/06/17 12:33:03
8184 dnl -----------
8185 dnl     Shorthand macro for substituting things that the user may override
8186 dnl     with an environment variable.
8187 dnl
8188 dnl     $1 = condition to pass to "test"
8189 dnl     $2 = environment variable
8190 dnl     $3 = value if the test succeeds
8191 dnl     $4 = value if the test fails
8192 AC_DEFUN([CF_SUBST_IF],
8193 [
8194 if test $1 ; then
8195         $2=$3
8196 ifelse($4,,,[else
8197         $2=$4])
8198 fi
8199 AC_SUBST($2)
8200 ])dnl
8201 dnl ---------------------------------------------------------------------------
8202 dnl CF_SUBST_NCURSES_VERSION version: 10 updated: 2021/01/04 18:48:01
8203 dnl ------------------------
8204 dnl Get the version-number for use in shared-library naming, etc.
8205 AC_DEFUN([CF_SUBST_NCURSES_VERSION],
8206 [AC_REQUIRE([AC_PROG_EGREP])dnl
8207
8208 NCURSES_MAJOR="`${EGREP-egrep} '^NCURSES_MAJOR[[        ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`"
8209 NCURSES_MINOR="`${EGREP-egrep} '^NCURSES_MINOR[[        ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`"
8210 NCURSES_PATCH="`${EGREP-egrep} '^NCURSES_PATCH[[        ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`"
8211 cf_cv_abi_version=${NCURSES_MAJOR}
8212 cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
8213 dnl Show the computed version, for logging
8214 cf_cv_timestamp=`date`
8215 AC_MSG_RESULT(Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp))
8216 dnl We need these values in the generated headers
8217 AC_SUBST(NCURSES_MAJOR)
8218 AC_SUBST(NCURSES_MINOR)
8219 AC_SUBST(NCURSES_PATCH)
8220 dnl We need these values in the generated makefiles
8221 AC_SUBST(cf_cv_rel_version)
8222 AC_SUBST(cf_cv_abi_version)
8223 AC_SUBST(cf_cv_builtin_bool)
8224 AC_SUBST(cf_cv_header_stdbool_h)
8225 AC_SUBST(cf_cv_type_of_bool)dnl
8226 ])dnl
8227 dnl ---------------------------------------------------------------------------
8228 dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57
8229 dnl ------------------
8230 dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
8231 dnl older SCO configurations.
8232 AC_DEFUN([CF_SYS_TIME_SELECT],
8233 [
8234 AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
8235 AC_CACHE_VAL(cf_cv_sys_time_select,[
8236 AC_TRY_COMPILE([
8237 #include <sys/types.h>
8238 #ifdef HAVE_SYS_TIME_H
8239 #include <sys/time.h>
8240 #endif
8241 #ifdef HAVE_SYS_SELECT_H
8242 #include <sys/select.h>
8243 #endif
8244 ],[],[cf_cv_sys_time_select=yes],
8245          [cf_cv_sys_time_select=no])
8246          ])
8247 AC_MSG_RESULT($cf_cv_sys_time_select)
8248 test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT,1,[Define to 1 if we can include <sys/time.h> with <sys/select.h>])
8249 ])dnl
8250 dnl ---------------------------------------------------------------------------
8251 dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32
8252 dnl ---------------
8253 dnl Define a top_builddir symbol, for applications that need an absolute path.
8254 AC_DEFUN([CF_TOP_BUILDDIR],
8255 [
8256 top_builddir=ifelse($1,,`pwd`,$1)
8257 AC_SUBST(top_builddir)
8258 ])dnl
8259 dnl ---------------------------------------------------------------------------
8260 dnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15
8261 dnl -----------------
8262 dnl This is a simple wrapper to use for pkg-config, for libraries which may be
8263 dnl available in that form.
8264 dnl
8265 dnl $1 = package name, which may be a shell variable
8266 dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS
8267 dnl $3 = logic to use if pkg-config does not have the package
8268 AC_DEFUN([CF_TRY_PKG_CONFIG],[
8269 AC_REQUIRE([CF_PKG_CONFIG])
8270
8271 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then
8272         CF_VERBOSE(found package $1)
8273         cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`"
8274         cf_pkgconfig_libs="`$PKG_CONFIG --libs   "$1" 2>/dev/null`"
8275         CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs)
8276         CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs)
8277         CF_ADD_CFLAGS($cf_pkgconfig_incs)
8278         CF_ADD_LIBS($cf_pkgconfig_libs)
8279         ifelse([$2],,:,[$2])
8280 else
8281         cf_pkgconfig_incs=
8282         cf_pkgconfig_libs=
8283         ifelse([$3],,:,[$3])
8284 fi
8285 ])
8286 dnl ---------------------------------------------------------------------------
8287 dnl CF_TRY_XOPEN_SOURCE version: 3 updated: 2021/08/28 15:20:37
8288 dnl -------------------
8289 dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
8290 dnl can define it successfully.
8291 AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
8292 AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
8293         AC_TRY_COMPILE([
8294 #include <stdlib.h>
8295 #include <string.h>
8296 #include <sys/types.h>
8297 ],[
8298 #ifndef _XOPEN_SOURCE
8299 make an error
8300 #endif],
8301         [cf_cv_xopen_source=no],
8302         [cf_save="$CPPFLAGS"
8303          CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
8304          AC_TRY_COMPILE([
8305 #include <stdlib.h>
8306 #include <string.h>
8307 #include <sys/types.h>
8308 ],[
8309 #ifdef _XOPEN_SOURCE
8310 make an error
8311 #endif],
8312         [cf_cv_xopen_source=no],
8313         [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
8314         CPPFLAGS="$cf_save"
8315         ])
8316 ])
8317
8318 if test "$cf_cv_xopen_source" != no ; then
8319         CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
8320         CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
8321         cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
8322         CF_APPEND_CFLAGS($cf_temp_xopen_source)
8323 fi
8324 ])
8325 dnl ---------------------------------------------------------------------------
8326 dnl CF_TYPEOF_CHTYPE version: 10 updated: 2017/01/21 11:06:25
8327 dnl ----------------
8328 dnl Determine the type we should use for chtype (and attr_t, which is treated
8329 dnl as the same thing).  We want around 32 bits, so on most machines want a
8330 dnl long, but on newer 64-bit machines, probably want an int.  If we're using
8331 dnl wide characters, we have to have a type compatible with that, as well.
8332 AC_DEFUN([CF_TYPEOF_CHTYPE],
8333 [
8334 AC_MSG_CHECKING([for type of chtype])
8335 AC_CACHE_VAL(cf_cv_typeof_chtype,[
8336                 AC_TRY_RUN([
8337 #define WANT_BITS 31
8338 #include <stdio.h>
8339 int main(void)
8340 {
8341         FILE *fp = fopen("cf_test.out", "w");
8342         if (fp != 0) {
8343                 char *result = "long";
8344                 if (sizeof(unsigned long) > sizeof(unsigned int)) {
8345                         int n;
8346                         unsigned int x, y;
8347                         for (n = 0; n < WANT_BITS; n++) {
8348                                 x = (1 << n);
8349                                 y = (x >> n);
8350                                 if (y != 1 || x == 0) {
8351                                         x = 0;
8352                                         break;
8353                                 }
8354                         }
8355                         /*
8356                          * If x is nonzero, an int is big enough for the bits
8357                          * that we want.
8358                          */
8359                         result = (x != 0) ? "int" : "long";
8360                 }
8361                 fputs(result, fp);
8362                 fclose(fp);
8363         }
8364         ${cf_cv_main_return:-return}(0);
8365 }
8366                 ],
8367                 [cf_cv_typeof_chtype=`cat cf_test.out`],
8368                 [cf_cv_typeof_chtype=long],
8369                 [cf_cv_typeof_chtype=long])
8370                 rm -f cf_test.out
8371         ])
8372 AC_MSG_RESULT($cf_cv_typeof_chtype)
8373
8374 AC_SUBST(cf_cv_typeof_chtype)
8375 AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype,[Define to actual type if needed for chtype])
8376 ])dnl
8377 dnl ---------------------------------------------------------------------------
8378 dnl CF_TYPE_SIGACTION version: 4 updated: 2012/10/06 17:56:13
8379 dnl -----------------
8380 dnl
8381 AC_DEFUN([CF_TYPE_SIGACTION],
8382 [
8383 AC_MSG_CHECKING([for type sigaction_t])
8384 AC_CACHE_VAL(cf_cv_type_sigaction,[
8385         AC_TRY_COMPILE([
8386 #include <signal.h>],
8387                 [sigaction_t x],
8388                 [cf_cv_type_sigaction=yes],
8389                 [cf_cv_type_sigaction=no])])
8390 AC_MSG_RESULT($cf_cv_type_sigaction)
8391 test "$cf_cv_type_sigaction" = yes && AC_DEFINE(HAVE_TYPE_SIGACTION,1,[Define to 1 if we have the sigaction_t type])
8392 ])dnl
8393 dnl ---------------------------------------------------------------------------
8394 dnl CF_UNSIGNED_LITERALS version: 2 updated: 1998/02/07 22:10:16
8395 dnl --------------------
8396 dnl Test if the compiler supports 'U' and 'L' suffixes.  Only old compilers
8397 dnl won't, but they're still there.
8398 AC_DEFUN([CF_UNSIGNED_LITERALS],
8399 [
8400 AC_MSG_CHECKING([if unsigned literals are legal])
8401 AC_CACHE_VAL(cf_cv_unsigned_literals,[
8402         AC_TRY_COMPILE([],[long x = 1L + 1UL + 1U + 1],
8403                 [cf_cv_unsigned_literals=yes],
8404                 [cf_cv_unsigned_literals=no])
8405         ])
8406 AC_MSG_RESULT($cf_cv_unsigned_literals)
8407 ])dnl
8408 dnl ---------------------------------------------------------------------------
8409 dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
8410 dnl --------
8411 dnl Make an uppercase version of a variable
8412 dnl $1=uppercase($2)
8413 AC_DEFUN([CF_UPPER],
8414 [
8415 $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
8416 ])dnl
8417 dnl ---------------------------------------------------------------------------
8418 dnl CF_UTF8_LIB version: 9 updated: 2021/05/19 19:35:25
8419 dnl -----------
8420 dnl Check for multibyte support, and if not found, utf8 compatibility library
8421 AC_DEFUN([CF_UTF8_LIB],
8422 [
8423 AC_HAVE_HEADERS(wchar.h)
8424 AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
8425         cf_save_LIBS="$LIBS"
8426         AC_TRY_LINK([
8427 #include <stdlib.h>
8428 #include <stdio.h>
8429 #ifdef HAVE_WCHAR_H
8430 #include <wchar.h>
8431 #endif
8432 ],[putwc(0,0);],
8433         [cf_cv_utf8_lib=yes],
8434         [CF_FIND_LINKAGE([
8435 #include <libutf8.h>],[putwc(0,0);],utf8,
8436                 [cf_cv_utf8_lib=add-on],
8437                 [cf_cv_utf8_lib=no])
8438 ])])
8439
8440 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
8441 # ncurses/ncursesw:
8442 if test "$cf_cv_utf8_lib" = "add-on" ; then
8443         AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h])
8444         CF_ADD_INCDIR($cf_cv_header_path_utf8)
8445         CF_ADD_LIBDIR($cf_cv_library_path_utf8)
8446         CF_ADD_LIBS($cf_cv_library_file_utf8)
8447 fi
8448 ])dnl
8449 dnl ---------------------------------------------------------------------------
8450 dnl CF_VA_COPY version: 6 updated: 2018/12/04 18:14:25
8451 dnl ----------
8452 dnl check for va_copy, part of stdarg.h starting with ISO C 1999.
8453 dnl Also, workaround for glibc's __va_copy, by checking for both.
8454 dnl Finally, try to accommodate pre-ISO C 1999 headers.
8455 AC_DEFUN([CF_VA_COPY],[
8456 AC_CACHE_CHECK(for va_copy, cf_cv_have_va_copy,[
8457 AC_TRY_LINK([
8458 #include <stdarg.h>
8459 ],[
8460         static va_list dst;
8461         static va_list src;
8462         va_copy(dst, src)],
8463         cf_cv_have_va_copy=yes,
8464         cf_cv_have_va_copy=no)])
8465
8466 if test "$cf_cv_have_va_copy" = yes;
8467 then
8468         AC_DEFINE(HAVE_VA_COPY,1,[Define to 1 if we have va_copy])
8469 else # !cf_cv_have_va_copy
8470
8471 AC_CACHE_CHECK(for __va_copy, cf_cv_have___va_copy,[
8472 AC_TRY_LINK([
8473 #include <stdarg.h>
8474 ],[
8475         static va_list dst;
8476         static va_list src;
8477         __va_copy(dst, src)],
8478         cf_cv_have___va_copy=yes,
8479         cf_cv_have___va_copy=no)])
8480
8481 if test "$cf_cv_have___va_copy" = yes
8482 then
8483         AC_DEFINE(HAVE___VA_COPY,1,[Define to 1 if we have __va_copy])
8484 else # !cf_cv_have___va_copy
8485
8486 AC_CACHE_CHECK(for __builtin_va_copy, cf_cv_have___builtin_va_copy,[
8487 AC_TRY_LINK([
8488 #include <stdarg.h>
8489 ],[
8490         static va_list dst;
8491         static va_list src;
8492         __builtin_va_copy(dst, src)],
8493         cf_cv_have___builtin_va_copy=yes,
8494         cf_cv_have___builtin_va_copy=no)])
8495
8496 test "$cf_cv_have___builtin_va_copy" = yes &&
8497         AC_DEFINE(HAVE___BUILTIN_VA_COPY,1,[Define to 1 if we have __builtin_va_copy])
8498
8499 fi # cf_cv_have___va_copy
8500
8501 fi # cf_cv_have_va_copy
8502
8503 case "${cf_cv_have_va_copy}${cf_cv_have___va_copy}${cf_cv_have___builtin_va_copy}" in
8504 (*yes*)
8505         ;;
8506
8507 (*)
8508         AC_CACHE_CHECK(if we can simply copy va_list, cf_cv_pointer_va_list,[
8509 AC_TRY_LINK([
8510 #include <stdarg.h>
8511 ],[
8512         va_list dst;
8513         va_list src;
8514         dst = src],
8515         cf_cv_pointer_va_list=yes,
8516         cf_cv_pointer_va_list=no)])
8517
8518         if test "$cf_cv_pointer_va_list" = no
8519         then
8520                 AC_CACHE_CHECK(if we can copy va_list indirectly, cf_cv_array_va_list,[
8521 AC_TRY_LINK([
8522 #include <stdarg.h>
8523 ],[
8524         va_list dst;
8525         va_list src;
8526         *dst = *src],
8527                         cf_cv_array_va_list=yes,
8528                         cf_cv_array_va_list=no)])
8529                 test "$cf_cv_array_va_list" = yes && AC_DEFINE(ARRAY_VA_LIST,1,[Define to 1 if we can copy va_list indirectly])
8530         fi
8531         ;;
8532 esac
8533 ])
8534 dnl ---------------------------------------------------------------------------
8535 dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
8536 dnl ----------
8537 dnl Use AC_VERBOSE w/o the warnings
8538 AC_DEFUN([CF_VERBOSE],
8539 [test -n "$verbose" && echo "   $1" 1>&AC_FD_MSG
8540 CF_MSG_LOG([$1])
8541 ])dnl
8542 dnl ---------------------------------------------------------------------------
8543 dnl CF_VERSION_INFO version: 8 updated: 2021/01/01 13:31:04
8544 dnl ---------------
8545 dnl Define several useful symbols derived from the VERSION file.  A separate
8546 dnl file is preferred to embedding the version numbers in various scripts.
8547 dnl (automake is a textbook-example of why the latter is a bad idea, but there
8548 dnl are others).
8549 dnl
8550 dnl The file contents are:
8551 dnl     libtool-version release-version patch-version
8552 dnl or
8553 dnl     release-version
8554 dnl where
8555 dnl     libtool-version (see ?) consists of 3 integers separated by '.'
8556 dnl     release-version consists of a major version and minor version
8557 dnl             separated by '.', optionally followed by a patch-version
8558 dnl             separated by '-'.  The minor version need not be an
8559 dnl             integer (but it is preferred).
8560 dnl     patch-version is an integer in the form yyyymmdd, so ifdef's and
8561 dnl             scripts can easily compare versions.
8562 dnl
8563 dnl If libtool is used, the first form is required, since CF_WITH_LIBTOOL
8564 dnl simply extracts the first field using 'cut -f1'.
8565 dnl
8566 dnl Optional parameters:
8567 dnl $1 = internal name for package
8568 dnl $2 = external name for package
8569 AC_DEFUN([CF_VERSION_INFO],
8570 [
8571 if test -f "$srcdir/VERSION" ; then
8572         AC_MSG_CHECKING(for package version)
8573
8574         # if there are not enough fields, cut returns the last one...
8575         cf_field1=`sed -e '2,$d' "$srcdir/VERSION" |cut -f1`
8576         cf_field2=`sed -e '2,$d' "$srcdir/VERSION" |cut -f2`
8577         cf_field3=`sed -e '2,$d' "$srcdir/VERSION" |cut -f3`
8578
8579         # this is how CF_BUNDLED_INTL uses $VERSION:
8580         VERSION="$cf_field1"
8581
8582         VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'`
8583         test -z "$VERSION_MAJOR" && AC_MSG_ERROR(missing major-version)
8584
8585         VERSION_MINOR=`echo "$cf_field2" | sed -e 's/^[[^.]]*\.//' -e 's/-.*//'`
8586         test -z "$VERSION_MINOR" && AC_MSG_ERROR(missing minor-version)
8587
8588         AC_MSG_RESULT(${VERSION_MAJOR}.${VERSION_MINOR})
8589
8590         AC_MSG_CHECKING(for package patch date)
8591         VERSION_PATCH=`echo "$cf_field3" | sed -e 's/^[[^-]]*-//'`
8592         case .$VERSION_PATCH in
8593         (.)
8594                 AC_MSG_ERROR(missing patch-date $VERSION_PATCH)
8595                 ;;
8596         (.[[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]])
8597                 ;;
8598         (*)
8599                 AC_MSG_ERROR(illegal patch-date $VERSION_PATCH)
8600                 ;;
8601         esac
8602         AC_MSG_RESULT($VERSION_PATCH)
8603 else
8604         AC_MSG_ERROR(did not find $srcdir/VERSION)
8605 fi
8606
8607 # show the actual data that we have for versions:
8608 CF_VERBOSE(ABI VERSION $VERSION)
8609 CF_VERBOSE(VERSION_MAJOR $VERSION_MAJOR)
8610 CF_VERBOSE(VERSION_MINOR $VERSION_MINOR)
8611 CF_VERBOSE(VERSION_PATCH $VERSION_PATCH)
8612
8613 AC_SUBST(VERSION)
8614 AC_SUBST(VERSION_MAJOR)
8615 AC_SUBST(VERSION_MINOR)
8616 AC_SUBST(VERSION_PATCH)
8617
8618 dnl if a package name is given, define its corresponding version info.  We
8619 dnl need the package name to ensure that the defined symbols are unique.
8620 ifelse($1,,,[
8621         cf_PACKAGE=$1
8622         PACKAGE=ifelse($2,,$1,$2)
8623         AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",[Define to the package-name])
8624         AC_SUBST(PACKAGE)
8625         CF_UPPER(cf_PACKAGE,$cf_PACKAGE)
8626         AC_DEFINE_UNQUOTED(${cf_PACKAGE}_VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}")
8627         AC_DEFINE_UNQUOTED(${cf_PACKAGE}_PATCHDATE,${VERSION_PATCH})
8628 ])
8629 ])dnl
8630 dnl ---------------------------------------------------------------------------
8631 dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
8632 dnl -------------
8633 dnl Check if type wide-character type $1 is declared, and if so, which header
8634 dnl file is needed.  The second parameter is used to set a shell variable when
8635 dnl the type is not found.  The first parameter sets a shell variable for the
8636 dnl opposite sense.
8637 AC_DEFUN([CF_WCHAR_TYPE],
8638 [
8639 # This is needed on Tru64 5.0 to declare $1
8640 AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[
8641 AC_TRY_COMPILE([
8642 #include <stdlib.h>
8643 #include <stdarg.h>
8644 #include <stdio.h>
8645 #ifdef HAVE_LIBUTF8_H
8646 #include <libutf8.h>
8647 #endif],
8648         [$1 state],
8649         [cf_cv_$1=no],
8650         [AC_TRY_COMPILE([
8651 #include <stdlib.h>
8652 #include <stdarg.h>
8653 #include <stdio.h>
8654 #include <wchar.h>
8655 #ifdef HAVE_LIBUTF8_H
8656 #include <libutf8.h>
8657 #endif],
8658         [$1 value],
8659         [cf_cv_$1=yes],
8660         [cf_cv_$1=unknown])])])
8661
8662 if test "$cf_cv_$1" = yes ; then
8663         AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h])
8664         NEED_WCHAR_H=1
8665 fi
8666
8667 ifelse([$2],,,[
8668 # if we do not find $1 in either place, use substitution to provide a fallback.
8669 if test "$cf_cv_$1" = unknown ; then
8670         $2=1
8671 fi
8672 ])
8673 ifelse($3,,,[
8674 # if we find $1 in either place, use substitution to provide a fallback.
8675 if test "$cf_cv_$1" != unknown ; then
8676         $3=1
8677 fi
8678 ])
8679 ])dnl
8680 dnl ---------------------------------------------------------------------------
8681 dnl CF_WEAK_SYMBOLS version: 1 updated: 2008/08/16 19:18:06
8682 dnl ---------------
8683 dnl Check for compiler-support for weak symbols.
8684 dnl This works with "recent" gcc.
8685 AC_DEFUN([CF_WEAK_SYMBOLS],[
8686 AC_CACHE_CHECK(if $CC supports weak symbols,cf_cv_weak_symbols,[
8687
8688 AC_TRY_COMPILE([
8689 #include <stdio.h>],
8690 [
8691 #if defined(__GNUC__)
8692 #  if defined __USE_ISOC99
8693 #    define _cat_pragma(exp)    _Pragma(#exp)
8694 #    define _weak_pragma(exp)   _cat_pragma(weak name)
8695 #  else
8696 #    define _weak_pragma(exp)
8697 #  endif
8698 #  define _declare(name)        __extension__ extern __typeof__(name) name
8699 #  define weak_symbol(name)     _weak_pragma(name) _declare(name) __attribute__((weak))
8700 #endif
8701
8702 weak_symbol(fopen);
8703 ],[cf_cv_weak_symbols=yes],[cf_cv_weak_symbols=no])
8704 ])
8705 ])dnl
8706 dnl ---------------------------------------------------------------------------
8707 dnl CF_WITH_ABI_VERSION version: 4 updated: 2021/01/01 13:31:04
8708 dnl -------------------
8709 dnl Allow library's ABI to be overridden.  Generally this happens when a
8710 dnl packager has incremented the ABI past that used in the original package,
8711 dnl and wishes to keep doing this.
8712 dnl
8713 dnl $1 is the package name, if any, to derive a corresponding {package}_ABI
8714 dnl symbol.
8715 AC_DEFUN([CF_WITH_ABI_VERSION],[
8716 test -z "$cf_cv_abi_version" && cf_cv_abi_version=0
8717 AC_ARG_WITH(abi-version,
8718 [  --with-abi-version=XXX  override derived ABI version],[
8719         if test "x$cf_cv_abi_version" != "x$withval"
8720         then
8721                 AC_MSG_WARN(overriding ABI version $cf_cv_abi_version to $withval)
8722                 case "$cf_cv_rel_version" in
8723                 (5.*)
8724                         cf_cv_rel_version=$withval.0
8725                         ;;
8726                 (6.*)
8727                         cf_cv_rel_version=$withval.9    # FIXME: should be 10 as of 6.0 release
8728                         ;;
8729                 esac
8730         fi
8731         cf_cv_abi_version=$withval])
8732         CF_NUMBER_SYNTAX($cf_cv_abi_version,ABI version)
8733 ifelse($1,,,[
8734 $1_ABI=$cf_cv_abi_version
8735 ])
8736 ])dnl
8737 dnl ---------------------------------------------------------------------------
8738 dnl CF_WITH_ADA_COMPILER version: 2 updated: 2010/06/26 17:35:58
8739 dnl --------------------
8740 dnl Command-line option to specify the Ada95 compiler.
8741 AC_DEFUN([CF_WITH_ADA_COMPILER],[
8742 AC_MSG_CHECKING(for ada-compiler)
8743 AC_ARG_WITH(ada-compiler,
8744         [  --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)],
8745         [cf_ada_compiler=$withval],
8746         [cf_ada_compiler=gnatmake])
8747 AC_SUBST(cf_ada_compiler)
8748 AC_MSG_RESULT($cf_ada_compiler)
8749 ])dnl
8750 dnl ---------------------------------------------------------------------------
8751 dnl CF_WITH_ADA_INCLUDE version: 2 updated: 2010/06/26 17:35:58
8752 dnl -------------------
8753 dnl Command-line option to specify where Ada includes will install.
8754 AC_DEFUN([CF_WITH_ADA_INCLUDE],[
8755 AC_MSG_CHECKING(for ada-include)
8756 CF_WITH_PATH(ada-include,
8757    [  --with-ada-include=DIR  Ada includes are in DIR],
8758    ADA_INCLUDE,
8759    PREFIX/share/ada/adainclude,
8760    [$]prefix/share/ada/adainclude)
8761 AC_SUBST(ADA_INCLUDE)
8762 AC_MSG_RESULT($ADA_INCLUDE)
8763 ])dnl
8764 dnl ---------------------------------------------------------------------------
8765 dnl CF_WITH_ADA_LIBNAME version: 1 updated: 2019/09/07 18:59:41
8766 dnl -------------------
8767 dnl CF_WITH_ADA_LIBNAME
8768 dnl -------------------
8769 dnl Command-line option to specify how to name the resulting Ada library.
8770 dnl $1 = default value
8771 AC_DEFUN([CF_WITH_ADA_LIBNAME],[
8772 AC_MSG_CHECKING(for ada-libname)
8773 AC_ARG_WITH(ada-libname,
8774    [  --with-ada-libname=XXX  override default Ada library-name],
8775    ADA_LIBNAME=[$]withval,
8776    ADA_LIBNAME=$1)
8777 case "x$ADA_LIBNAME" in
8778 (x|xyes|xno)
8779         ADA_LIBNAME=$1
8780         ;;
8781 esac
8782 AC_SUBST(ADA_LIBNAME)
8783 AC_MSG_RESULT($ADA_LIBNAME)
8784 ])dnl
8785 dnl ---------------------------------------------------------------------------
8786 dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58
8787 dnl -------------------
8788 dnl Command-line option to specify where Ada objects will install.
8789 AC_DEFUN([CF_WITH_ADA_OBJECTS],[
8790 AC_MSG_CHECKING(for ada-objects)
8791 CF_WITH_PATH(ada-objects,
8792    [  --with-ada-objects=DIR  Ada objects are in DIR],
8793    ADA_OBJECTS,
8794    PREFIX/lib/ada/adalib,
8795    [$]prefix/lib/ada/adalib)
8796 AC_SUBST(ADA_OBJECTS)
8797 AC_MSG_RESULT($ADA_OBJECTS)
8798 ])dnl
8799 dnl ---------------------------------------------------------------------------
8800 dnl CF_WITH_ADA_SHAREDLIB version: 5 updated: 2018/07/21 19:10:35
8801 dnl ---------------------
8802 dnl Command-line option to specify if an Ada95 shared-library should be built,
8803 dnl and optionally what its soname should be.
8804 AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[
8805 AC_REQUIRE([CF_GNAT_PROJECTS])
8806 AC_MSG_CHECKING(if an Ada95 shared-library should be built)
8807 AC_ARG_WITH(ada-sharedlib,
8808         [  --with-ada-sharedlib=soname build shared-library (requires GNAT projects)],
8809         [with_ada_sharedlib=$withval],
8810         [with_ada_sharedlib=no])
8811 AC_MSG_RESULT($with_ada_sharedlib)
8812
8813 if test "x$with_ada_sharedlib" != xno
8814 then
8815         if test "x$cf_gnat_projects" != xyes
8816         then
8817                 AC_MSG_WARN(disabling shared-library since GNAT projects are not supported)
8818                 with_ada_sharedlib=no
8819         fi
8820 fi
8821
8822 ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
8823 MAKE_ADA_SHAREDLIB="#"
8824
8825 if test "x$with_ada_sharedlib" != xno
8826 then
8827         MAKE_ADA_SHAREDLIB=
8828         if test "x$with_ada_sharedlib" != xyes
8829         then
8830                 ADA_SHAREDLIB="$with_ada_sharedlib"
8831         fi
8832 fi
8833
8834 AC_SUBST(ADA_SHAREDLIB)
8835 AC_SUBST(MAKE_ADA_SHAREDLIB)
8836 ])dnl
8837 dnl ---------------------------------------------------------------------------
8838 dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
8839 dnl ----------------
8840 dnl Configure-option for dbmalloc.  The optional parameter is used to override
8841 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
8842 AC_DEFUN([CF_WITH_DBMALLOC],[
8843 CF_NO_LEAKS_OPTION(dbmalloc,
8844         [  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
8845         [USE_DBMALLOC])
8846
8847 if test "$with_dbmalloc" = yes ; then
8848         AC_CHECK_HEADER(dbmalloc.h,
8849                 [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
8850 fi
8851 ])dnl
8852 dnl ---------------------------------------------------------------------------
8853 dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
8854 dnl ---------------
8855 dnl Configure-option for dmalloc.  The optional parameter is used to override
8856 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
8857 AC_DEFUN([CF_WITH_DMALLOC],[
8858 CF_NO_LEAKS_OPTION(dmalloc,
8859         [  --with-dmalloc          test: use Gray Watson's dmalloc library],
8860         [USE_DMALLOC])
8861
8862 if test "$with_dmalloc" = yes ; then
8863         AC_CHECK_HEADER(dmalloc.h,
8864                 [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
8865 fi
8866 ])dnl
8867 dnl ---------------------------------------------------------------------------
8868 dnl CF_WITH_EXPORT_SYMS version: 3 updated: 2014/12/20 19:16:08
8869 dnl -------------------
8870 dnl Use this with libtool to specify the list of symbols that may be exported.
8871 dnl The input file contains one symbol per line; comments work with "#".
8872 dnl
8873 dnl $1 = basename of the ".sym" file (default $PACKAGE)
8874 AC_DEFUN([CF_WITH_EXPORT_SYMS],
8875 [
8876 AC_MSG_CHECKING(if exported-symbols file should be used)
8877 AC_ARG_WITH(export-syms,
8878         [  --with-export-syms=XXX  limit exported symbols using libtool],
8879         [with_export_syms=$withval],
8880         [with_export_syms=no])
8881 if test "x$with_export_syms" = xyes
8882 then
8883         with_export_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).sym'
8884         AC_SUBST(PACKAGE)
8885 fi
8886 AC_MSG_RESULT($with_export_syms)
8887 if test "x$with_export_syms" != xno
8888 then
8889         EXPORT_SYMS="-export-symbols $with_export_syms"
8890         AC_SUBST(EXPORT_SYMS)
8891 fi
8892 ])dnl
8893 dnl ---------------------------------------------------------------------------
8894 dnl CF_WITH_GPM version: 10 updated: 2017/04/29 18:32:18
8895 dnl -----------
8896 dnl
8897 dnl The option parameter (if neither yes/no) is assumed to be the name of
8898 dnl the gpm library, e.g., for dynamic loading.
8899 AC_DEFUN([CF_WITH_GPM],
8900 [
8901 AC_MSG_CHECKING(if you want to link with the GPM mouse library)
8902 AC_ARG_WITH(gpm,
8903         [  --with-gpm              use Alessandro Rubini's GPM library],
8904         [with_gpm=$withval],
8905         [with_gpm=maybe])
8906 AC_MSG_RESULT($with_gpm)
8907
8908 if test "$with_gpm" != no ; then
8909         AC_CHECK_HEADER(gpm.h,[
8910                 AC_DEFINE(HAVE_GPM_H,1,[Define to 1 if we have gpm.h header])
8911                 if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then
8912                         CF_VERBOSE(assuming we really have GPM library)
8913                         AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library])
8914                         with_gpm=yes
8915                 else
8916                         AC_CHECK_LIB(gpm,Gpm_Open,[with_gpm=yes],[
8917                                 if test "$with_gpm" = maybe; then
8918                                         AC_MSG_WARN(Cannot link with GPM library)
8919                                         with_gpm=no
8920                                 else
8921                                         AC_MSG_ERROR(Cannot link with GPM library)
8922                                 fi
8923                         ])
8924                 fi
8925         ],[
8926                 test "$with_gpm" != maybe && AC_MSG_WARN(Cannot find GPM header)
8927                 with_gpm=no
8928         ])
8929 fi
8930 ])
8931 dnl ---------------------------------------------------------------------------
8932 dnl CF_WITH_LIBTOOL version: 36 updated: 2021/01/01 13:31:04
8933 dnl ---------------
8934 dnl Provide a configure option to incorporate libtool.  Define several useful
8935 dnl symbols for the makefile rules.
8936 dnl
8937 dnl The reference to AC_PROG_LIBTOOL does not normally work, since it uses
8938 dnl macros from libtool.m4 which is in the aclocal directory of automake.
8939 dnl Following is a simple script which turns on the AC_PROG_LIBTOOL macro.
8940 dnl But that still does not work properly since the macro is expanded outside
8941 dnl the CF_WITH_LIBTOOL macro:
8942 dnl
8943 dnl     #!/bin/sh
8944 dnl     ACLOCAL=`aclocal --print-ac-dir`
8945 dnl     if test -z "$ACLOCAL" ; then
8946 dnl             echo cannot find aclocal directory
8947 dnl             exit 1
8948 dnl     elif test ! -f $ACLOCAL/libtool.m4 ; then
8949 dnl             echo cannot find libtool.m4 file
8950 dnl             exit 1
8951 dnl     fi
8952 dnl
8953 dnl     LOCAL=aclocal.m4
8954 dnl     ORIG=aclocal.m4.orig
8955 dnl
8956 dnl     trap "mv $ORIG $LOCAL" 0 1 2 3 15
8957 dnl     rm -f $ORIG
8958 dnl     mv $LOCAL $ORIG
8959 dnl
8960 dnl     # sed the LIBTOOL= assignment to omit the current directory?
8961 dnl     sed -e 's/^LIBTOOL=.*/LIBTOOL=${LIBTOOL:-libtool}/' $ACLOCAL/libtool.m4 >>$LOCAL
8962 dnl     cat $ORIG >>$LOCAL
8963 dnl
8964 dnl     autoconf-257 $*
8965 dnl
8966 AC_DEFUN([CF_WITH_LIBTOOL],
8967 [
8968 AC_REQUIRE([CF_DISABLE_LIBTOOL_VERSION])
8969 ifdef([AC_PROG_LIBTOOL],,[
8970 LIBTOOL=
8971 ])
8972 # common library maintenance symbols that are convenient for libtool scripts:
8973 LIB_CREATE='${AR} -cr'
8974 LIB_OBJECT='${OBJECTS}'
8975 LIB_SUFFIX=.a
8976 LIB_PREP="$RANLIB"
8977
8978 # symbols used to prop libtool up to enable it to determine what it should be
8979 # doing:
8980 LIB_CLEAN=
8981 LIB_COMPILE=
8982 LIB_LINK='${CC}'
8983 LIB_INSTALL=
8984 LIB_UNINSTALL=
8985
8986 AC_MSG_CHECKING(if you want to build libraries with libtool)
8987 AC_ARG_WITH(libtool,
8988         [  --with-libtool          generate libraries with libtool],
8989         [with_libtool=$withval],
8990         [with_libtool=no])
8991 AC_MSG_RESULT($with_libtool)
8992 if test "$with_libtool" != "no"; then
8993 ifdef([AC_PROG_LIBTOOL],[
8994         # missing_content_AC_PROG_LIBTOOL{{
8995         AC_PROG_LIBTOOL
8996         # missing_content_AC_PROG_LIBTOOL}}
8997 ],[
8998         if test "$with_libtool" != "yes" ; then
8999                 CF_PATH_SYNTAX(with_libtool)
9000                 LIBTOOL=$with_libtool
9001         else
9002                 AC_CHECK_TOOLS(LIBTOOL,[libtool glibtool],none)
9003                 CF_LIBTOOL_VERSION
9004                 if test -z "$cf_cv_libtool_version" && test "$LIBTOOL" = libtool
9005                 then
9006                         CF_FORGET_TOOL(LIBTOOL)
9007                         AC_CHECK_TOOLS(LIBTOOL,[glibtool],none)
9008                         CF_LIBTOOL_VERSION
9009                 fi
9010         fi
9011         if test -z "$LIBTOOL" ; then
9012                 AC_MSG_ERROR(Cannot find libtool)
9013         fi
9014 ])dnl
9015         LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${libdir} ${LIBTOOL_VERSION} `cut -f1 ${top_srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o'
9016         LIB_OBJECT='${OBJECTS:.o=.lo}'
9017         LIB_SUFFIX=.la
9018         LIB_CLEAN='${LIBTOOL} --mode=clean'
9019         LIB_COMPILE='${LIBTOOL} --mode=compile'
9020         LIB_LINK='${LIBTOOL} --mode=link ${CC} ${LIBTOOL_OPTS}'
9021         LIB_INSTALL='${LIBTOOL} --mode=install'
9022         LIB_UNINSTALL='${LIBTOOL} --mode=uninstall'
9023         LIB_PREP=:
9024
9025         CF_CHECK_LIBTOOL_VERSION
9026
9027         # special hack to add -no-undefined (which libtool should do for itself)
9028         LT_UNDEF=
9029         case "$cf_cv_system_name" in
9030         (cygwin*|msys*|mingw32*|os2*|uwin*|aix[[4-7]])
9031                 LT_UNDEF=-no-undefined
9032                 ;;
9033         esac
9034         AC_SUBST([LT_UNDEF])
9035
9036         # special hack to add --tag option for C++ compiler
9037         case "$cf_cv_libtool_version" in
9038         (1.[[5-9]]*|[[2-9]].[[0-9.a-z]]*)
9039                 LIBTOOL_CXX="$LIBTOOL --tag=CXX"
9040                 LIBTOOL="$LIBTOOL --tag=CC"
9041                 ;;
9042         (*)
9043                 LIBTOOL_CXX="$LIBTOOL"
9044                 ;;
9045         esac
9046 else
9047         LIBTOOL=""
9048         LIBTOOL_CXX=""
9049 fi
9050
9051 test -z "$LIBTOOL" && ECHO_LT=
9052
9053 AC_SUBST(LIBTOOL)
9054 AC_SUBST(LIBTOOL_CXX)
9055 AC_SUBST(LIBTOOL_OPTS)
9056
9057 AC_SUBST(LIB_CREATE)
9058 AC_SUBST(LIB_OBJECT)
9059 AC_SUBST(LIB_SUFFIX)
9060 AC_SUBST(LIB_PREP)
9061
9062 AC_SUBST(LIB_CLEAN)
9063 AC_SUBST(LIB_COMPILE)
9064 AC_SUBST(LIB_LINK)
9065 AC_SUBST(LIB_INSTALL)
9066 AC_SUBST(LIB_UNINSTALL)
9067
9068 ])dnl
9069 dnl ---------------------------------------------------------------------------
9070 dnl CF_WITH_LIBTOOL_OPTS version: 4 updated: 2015/04/17 21:13:04
9071 dnl --------------------
9072 dnl Allow user to pass additional libtool options into the library creation
9073 dnl and link steps.  The main use for this is to do something like
9074 dnl     ./configure --with-libtool-opts=-static
9075 dnl to get the same behavior as automake-flavored
9076 dnl     ./configure --enable-static
9077 AC_DEFUN([CF_WITH_LIBTOOL_OPTS],[
9078 AC_MSG_CHECKING(for additional libtool options)
9079 AC_ARG_WITH(libtool-opts,
9080         [  --with-libtool-opts=XXX specify additional libtool options],
9081         [with_libtool_opts=$withval],
9082         [with_libtool_opts=no])
9083 AC_MSG_RESULT($with_libtool_opts)
9084
9085 case .$with_libtool_opts in
9086 (.yes|.no|.)
9087         ;;
9088 (*)
9089         LIBTOOL_OPTS="$LIBTOOL_OPTS $with_libtool_opts"
9090         ;;
9091 esac
9092
9093 AC_SUBST(LIBTOOL_OPTS)
9094 ])dnl
9095 dnl ---------------------------------------------------------------------------
9096 dnl CF_WITH_LIB_BASENAME version: 1 updated: 2020/03/07 20:05:14
9097 dnl --------------------
9098 dnl Allow for overriding the basename of a library, i.e., the part to which
9099 dnl prefixes/suffixes are attached.
9100 dnl
9101 dnl $1 = variable to set
9102 dnl $2 = option name
9103 dnl $3 = default basename for library, if omitted use $2
9104 AC_DEFUN([CF_WITH_LIB_BASENAME],
9105 [
9106 AC_MSG_CHECKING(for desired basename for $2 library)
9107 AC_ARG_WITH($2-libname,
9108         [  --with-$2-libname=XXX override ifelse($3,,$2,$3) basename of library],
9109         [with_lib_basename=$withval],
9110         [with_lib_basename=ifelse($3,,$2,$3)])
9111 $1="$with_lib_basename"
9112
9113 case "x[$]$1" in
9114 (x|xno|xnone|xyes)
9115         $1=ifelse($3,,$2,$3)
9116         ;;
9117 (*)
9118         ;;
9119 esac
9120
9121 AC_MSG_RESULT([$]$1)
9122 AC_SUBST($1)
9123 ])dnl
9124 dnl ---------------------------------------------------------------------------
9125 dnl CF_WITH_LIB_PREFIX version: 2 updated: 2021/01/01 16:53:59
9126 dnl ------------------
9127 dnl Allow the library-prefix to be overridden.  OS/2 EMX originally had no
9128 dnl "lib" prefix, e.g., because it used the dll naming convention.
9129 dnl
9130 dnl $1 = variable to set
9131 AC_DEFUN([CF_WITH_LIB_PREFIX],
9132 [
9133 AC_MSG_CHECKING(if you want to have a library-prefix)
9134 AC_ARG_WITH(lib-prefix,
9135         [  --with-lib-prefix       override library-prefix],
9136         [with_lib_prefix=$withval],
9137         [with_lib_prefix=auto])
9138 AC_MSG_RESULT($with_lib_prefix)
9139
9140 if test "$with_lib_prefix" = auto
9141 then
9142         CF_LIB_PREFIX($1)
9143 elif test "$with_lib_prefix" = no
9144 then
9145         LIB_PREFIX=
9146 else
9147         LIB_PREFIX=$with_lib_prefix
9148 fi
9149 ])dnl
9150 dnl ---------------------------------------------------------------------------
9151 dnl CF_WITH_PATH version: 12 updated: 2021/09/04 06:35:04
9152 dnl ------------
9153 dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just
9154 dnl defaulting to yes/no.
9155 dnl
9156 dnl $1 = option name
9157 dnl $2 = help-text
9158 dnl $3 = environment variable to set
9159 dnl $4 = default value, shown in the help-message, must be a constant
9160 dnl $5 = default value, if it is an expression & cannot be in the help-message
9161 dnl
9162 AC_DEFUN([CF_WITH_PATH],
9163 [AC_ARG_WITH($1,[$2 ](default: ifelse([$4],,empty,[$4])),,
9164 ifelse([$4],,[withval="${$3}"],[withval="${$3:-ifelse([$5],,[$4],[$5])}"]))dnl
9165 if ifelse([$5],,true,[test -n "$5"]) ; then
9166 CF_PATH_SYNTAX(withval)
9167 fi
9168 eval $3="$withval"
9169 AC_SUBST($3)dnl
9170 ])dnl
9171 dnl ---------------------------------------------------------------------------
9172 dnl CF_WITH_PATHLIST version: 13 updated: 2021/09/04 06:35:04
9173 dnl ----------------
9174 dnl Process an option specifying a list of colon-separated paths.
9175 dnl
9176 dnl $1 = option name
9177 dnl $2 = help-text
9178 dnl $3 = environment variable to set
9179 dnl $4 = default value, shown in the help-message, must be a constant
9180 dnl $5 = default value, if it is an expression & cannot be in the help-message
9181 dnl $6 = flag to tell if we want to define or substitute
9182 dnl
9183 AC_DEFUN([CF_WITH_PATHLIST],[
9184 AC_REQUIRE([CF_PATHSEP])
9185 AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
9186 ifelse($4,,[withval=${$3}],[withval=${$3:-ifelse($5,,$4,$5)}]))dnl
9187
9188 IFS="${IFS:-    }"; ac_save_ifs="$IFS"; IFS="${PATH_SEPARATOR}"
9189 cf_dst_path=
9190 for cf_src_path in $withval
9191 do
9192   CF_PATH_SYNTAX(cf_src_path)
9193   test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR"
9194   cf_dst_path="${cf_dst_path}${cf_src_path}"
9195 done
9196 IFS="$ac_save_ifs"
9197
9198 ifelse($6,define,[
9199 # Strip single quotes from the value, e.g., when it was supplied as a literal
9200 # for $4 or $5.
9201 case "$cf_dst_path" in
9202 (\'*)
9203   cf_dst_path="`echo "$cf_dst_path" |sed -e s/\'// -e s/\'\$//`"
9204   ;;
9205 esac
9206 cf_dst_path=`echo "$cf_dst_path" | sed -e 's/\\\\/\\\\\\\\/g'`
9207 ])
9208
9209 # This may use the prefix/exec_prefix symbols which will only yield "NONE"
9210 # so we have to check/work around.  We do prefer the result of "eval"...
9211 eval cf_dst_eval="$cf_dst_path"
9212 case "x$cf_dst_eval" in
9213 (xNONE*)
9214         $3=$cf_dst_path
9215         ;;
9216 (*)
9217         $3="$cf_dst_eval"
9218         ;;
9219 esac
9220 AC_SUBST($3)dnl
9221
9222 ])dnl
9223 dnl ---------------------------------------------------------------------------
9224 dnl CF_WITH_PATH_PROG version: 1 updated: 2019/06/30 19:44:43
9225 dnl -----------------
9226 dnl Check for a given program, like CF_PATH_PROG, but allow override using a
9227 dnl "--with-xxx" option.
9228 dnl
9229 dnl Parameters:
9230 dnl             $1 = environment variable to set/update
9231 dnl             $2 = program name
9232 dnl             $3 = help-text
9233 dnl             $4 = $PATH
9234 AC_DEFUN([CF_WITH_PATH_PROG],[
9235 AC_ARG_WITH($2-path,
9236         [  --with-$2-path=XXX     specify path of $2 ifelse($3,,,$3)],
9237         [AC_MSG_CHECKING(for $2 program ifelse($3,,,$3))
9238                 $1=$withval
9239                 AC_MSG_RESULT([$]$1)
9240                 CF_PATH_SYNTAX($1)
9241         ],
9242         [CF_PATH_PROG($1,$2,,ifelse($4,,,$4))
9243                 if test -z "[$]$1"
9244                 then
9245                         AC_MSG_WARN(no $2 program found ifelse($3,,,$3))
9246                 fi
9247         ])
9248 ])
9249 dnl ---------------------------------------------------------------------------
9250 dnl CF_WITH_PCRE2 version: 6 updated: 2021/08/11 20:35:34
9251 dnl -------------
9252 dnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is
9253 dnl available and the user requests it.  Assume the application will otherwise
9254 dnl use the POSIX interface.
9255 dnl
9256 dnl TODO allow $withval to specify package location
9257 AC_DEFUN([CF_WITH_PCRE2],
9258 [
9259 AC_REQUIRE([CF_PKG_CONFIG])
9260
9261 AC_MSG_CHECKING(if you want to use PCRE2 for regular-expressions)
9262 AC_ARG_WITH(pcre2,
9263         [  --with-pcre2            use PCRE2 for regular-expressions])
9264 test -z "$with_pcre2" && with_pcre2=no
9265 AC_MSG_RESULT($with_pcre2)
9266
9267 if test "x$with_pcre2" != xno ; then
9268         cf_with_pcre2_ok=no
9269         for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre
9270         do
9271                 CF_TRY_PKG_CONFIG($cf_with_pcre2,[cf_with_pcre2_ok=yes; break])
9272         done
9273         cf_with_pcre2_ok=yes || AC_MSG_ERROR(Cannot find PCRE2 library)
9274
9275         AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library])
9276
9277         # if pkgconfig gave no results, look for the libraries directly
9278         case "$LIBS" in
9279         (*pcre2-posix*|*pcreposix*)
9280                 ;;
9281         (*)
9282                 AC_CHECK_LIB(pcre2-posix,regcomp,[
9283                         CF_ADD_LIB(pcre2-posix)],
9284                         [AC_CHECK_LIB(pcreposix,regcomp,[
9285                          CF_ADD_LIB(pcreposix)
9286                         ],[AC_MSG_ERROR(Cannot find PCRE2 POSIX library)])])
9287                 ;;
9288         esac
9289
9290         # either way, check for the library header files
9291         AC_CHECK_HEADERS(pcre2posix.h pcreposix.h)
9292         AC_CHECK_FUNCS(PCRE2regcomp)
9293 fi
9294 ])dnl
9295 dnl ---------------------------------------------------------------------------
9296 dnl CF_WITH_PKG_CONFIG_LIBDIR version: 19 updated: 2021/11/20 14:57:36
9297 dnl -------------------------
9298 dnl Allow the choice of the pkg-config library directory to be overridden.
9299 dnl
9300 dnl pkg-config uses a search-list built from these colon-separated lists of
9301 dnl directories:
9302 dnl a) $PKG_CONFIG_PATH (tested first, added if set)
9303 dnl b) $PKG_CONFIG_LIBDIR (tested second, added if set)
9304 dnl c) builtin-list (added if $PKG_CONFIG_LIBDIR is not set)
9305 dnl
9306 dnl pkgconf (used with some systems such as FreeBSD in place of pkg-config)
9307 dnl optionally ignores $PKG_CONFIG_LIBDIR.
9308 AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[
9309
9310 case "$PKG_CONFIG" in
9311 (no|none|yes)
9312         AC_MSG_CHECKING(for pkg-config library directory)
9313         ;;
9314 (*)
9315         AC_MSG_CHECKING(for $PKG_CONFIG library directory)
9316         ;;
9317 esac
9318
9319 # if $PKG_CONFIG_LIBDIR is set, try to use that
9320 cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[[  ]]*,,'`
9321
9322 # if the option is used, let that override.  otherwise default to "libdir"
9323 AC_ARG_WITH(pkg-config-libdir,
9324         [  --with-pkg-config-libdir=XXX use given directory for installing pc-files],
9325         [cf_search_path=$withval],
9326         [test "x$PKG_CONFIG" != xnone && test -z "$cf_search_path" && cf_search_path=libdir])
9327
9328 case x$cf_search_path in
9329 (xlibdir)
9330         PKG_CONFIG_LIBDIR='${libdir}/pkgconfig'
9331         AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
9332         cf_search_path=
9333         ;;
9334 (x)
9335         ;;
9336 (x/*)
9337         PKG_CONFIG_LIBDIR="$cf_search_path"
9338         AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
9339         cf_search_path=
9340         ;;
9341 (xyes|xauto)
9342         AC_MSG_RESULT(auto)
9343         cf_search_path=
9344         # Look for the library directory using the same prefix as the executable
9345         AC_MSG_CHECKING(for search-list)
9346         if test "x$PKG_CONFIG" != xnone
9347         then
9348                 # works for pkg-config since version 0.24 (2009)
9349                 # works for pkgconf since version 0.8.3 (2012)
9350                 for cf_pkg_program in \
9351                         `echo "$PKG_CONFIG" | sed -e 's,^.*/,,'` \
9352                         pkg-config \
9353                         pkgconf
9354                 do
9355                         cf_search_path=`"$PKG_CONFIG" --variable=pc_path "$cf_pkg_program" 2>/dev/null | tr : ' '`
9356                         test -n "$cf_search_path" && break
9357                 done
9358
9359                 # works for pkg-config since import in 2005 of original 2001 HP code.
9360                 test -z "$cf_search_path" && \
9361                 cf_search_path=`
9362                 "$PKG_CONFIG" --debug --exists no-such-package 2>&1 | $AWK "\
9363 /^Scanning directory (#[1-9][0-9]* )?'.*'$/{ \
9364         sub(\"^[[^']]*'\",\"\"); \
9365         sub(\"'.*\",\"\"); \
9366         printf \" %s\", \\[$]0; } \
9367 { next; } \
9368 "`
9369         fi
9370
9371         AC_MSG_RESULT($cf_search_path)
9372         ;;
9373 (*)
9374         AC_MSG_ERROR(Unexpected option value: $cf_search_path)
9375         ;;
9376 esac
9377
9378 if test -n "$cf_search_path"
9379 then
9380         AC_MSG_CHECKING(for first directory)
9381         cf_pkg_config_path=none
9382         for cf_config in $cf_search_path
9383         do
9384                 if test -d "$cf_config"
9385                 then
9386                         cf_pkg_config_path=$cf_config
9387                         break
9388                 fi
9389         done
9390         AC_MSG_RESULT($cf_pkg_config_path)
9391
9392         if test "x$cf_pkg_config_path" != xnone ; then
9393                 # limit this to the first directory found
9394                 PKG_CONFIG_LIBDIR="$cf_pkg_config_path"
9395         fi
9396
9397         if test -z "$PKG_CONFIG_LIBDIR" && test -n "$cf_search_path"
9398         then
9399                 AC_MSG_CHECKING(for workaround)
9400                 if test "$prefix" = "NONE" ; then
9401                         cf_prefix="$ac_default_prefix"
9402                 else
9403                         cf_prefix="$prefix"
9404                 fi
9405                 eval cf_libdir=$libdir
9406                 cf_libdir=`echo "$cf_libdir" | sed -e "s,^NONE,$cf_prefix,"`
9407                 cf_backup=
9408                 for cf_config in $cf_search_path
9409                 do
9410                         case $cf_config in
9411                         $cf_libdir/pkgconfig)
9412                                 PKG_CONFIG_LIBDIR=$cf_libdir/pkgconfig
9413                                 break
9414                                 ;;
9415                         *)
9416                                 test -z "$cf_backup" && cf_backup=$cf_config
9417                                 ;;
9418                         esac
9419                 done
9420                 test -z "$PKG_CONFIG_LIBDIR" && PKG_CONFIG_LIBDIR=$cf_backup
9421                 AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
9422         fi
9423 fi
9424
9425 AC_SUBST(PKG_CONFIG_LIBDIR)
9426 ])dnl
9427 dnl ---------------------------------------------------------------------------
9428 dnl CF_WITH_PTHREAD version: 7 updated: 2015/04/18 08:56:57
9429 dnl ---------------
9430 dnl Check for POSIX thread library.
9431 AC_DEFUN([CF_WITH_PTHREAD],
9432 [
9433 AC_MSG_CHECKING(if you want to link with the pthread library)
9434 AC_ARG_WITH(pthread,
9435         [  --with-pthread          use POSIX thread library],
9436         [with_pthread=$withval],
9437         [with_pthread=no])
9438 AC_MSG_RESULT($with_pthread)
9439
9440 if test "$with_pthread" != no ; then
9441         AC_CHECK_HEADER(pthread.h,[
9442         AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header])
9443
9444         for cf_lib_pthread in pthread c_r
9445         do
9446             AC_MSG_CHECKING(if we can link with the $cf_lib_pthread library)
9447             cf_save_LIBS="$LIBS"
9448             CF_ADD_LIB($cf_lib_pthread)
9449             AC_TRY_LINK([
9450 #include <pthread.h>
9451 ],[
9452                 int rc = pthread_create(0,0,0,0);
9453                 int r2 = pthread_mutexattr_settype(0, 0);
9454 ],[with_pthread=yes],[with_pthread=no])
9455             LIBS="$cf_save_LIBS"
9456             AC_MSG_RESULT($with_pthread)
9457             test "$with_pthread" = yes && break
9458         done
9459
9460         if test "$with_pthread" = yes ; then
9461             CF_ADD_LIB($cf_lib_pthread)
9462             AC_DEFINE(HAVE_LIBPTHREADS,1,[Define to 1 if we have pthreads library])
9463         else
9464             AC_MSG_ERROR(Cannot link with pthread library)
9465         fi
9466         ])
9467 fi
9468 ])
9469 dnl ---------------------------------------------------------------------------
9470 dnl CF_WITH_REL_VERSION version: 1 updated: 2003/09/20 18:12:49
9471 dnl -------------------
9472 dnl Allow library's release-version to be overridden.  Generally this happens when a
9473 dnl packager has incremented the release-version past that used in the original package,
9474 dnl and wishes to keep doing this.
9475 dnl
9476 dnl $1 is the package name, if any, to derive corresponding {package}_MAJOR
9477 dnl and {package}_MINOR symbols
9478 dnl symbol.
9479 AC_DEFUN([CF_WITH_REL_VERSION],[
9480 test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0
9481 AC_ARG_WITH(rel-version,
9482 [  --with-rel-version=XXX  override derived release version],
9483 [AC_MSG_WARN(overriding release version $cf_cv_rel_version to $withval)
9484  cf_cv_rel_version=$withval])
9485 ifelse($1,,[
9486  CF_NUMBER_SYNTAX($cf_cv_rel_version,Release version)
9487 ],[
9488  $1_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'`
9489  $1_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[[^.]]*//' -e 's/^\.//' -e 's/\..*//'`
9490  CF_NUMBER_SYNTAX([$]$1_MAJOR,Release major-version)
9491  CF_NUMBER_SYNTAX([$]$1_MINOR,Release minor-version)
9492 ])
9493 ])dnl
9494 dnl ---------------------------------------------------------------------------
9495 dnl CF_WITH_SYSMOUSE version: 3 updated: 2012/10/06 17:56:13
9496 dnl ----------------
9497 dnl If we can compile with sysmouse, make it available unless it is not wanted.
9498 AC_DEFUN([CF_WITH_SYSMOUSE],[
9499 # not everyone has "test -c"
9500 if test -c /dev/sysmouse 2>/dev/null ; then
9501 AC_MSG_CHECKING(if you want to use sysmouse)
9502 AC_ARG_WITH(sysmouse,
9503         [  --with-sysmouse         use sysmouse (FreeBSD console)],
9504         [cf_with_sysmouse=$withval],
9505         [cf_with_sysmouse=maybe])
9506         if test "$cf_with_sysmouse" != no ; then
9507         AC_TRY_COMPILE([
9508 #include <osreldate.h>
9509 #if (__FreeBSD_version >= 400017)
9510 #include <sys/consio.h>
9511 #include <sys/fbio.h>
9512 #else
9513 #include <machine/console.h>
9514 #endif
9515 ],[
9516         struct mouse_info the_mouse;
9517         ioctl(0, CONS_MOUSECTL, &the_mouse);
9518 ],[cf_with_sysmouse=yes],[cf_with_sysmouse=no])
9519         fi
9520 AC_MSG_RESULT($cf_with_sysmouse)
9521 test "$cf_with_sysmouse" = yes && AC_DEFINE(USE_SYSMOUSE,1,[Define to 1 if we can/should use the sysmouse interface])
9522 fi
9523 ])dnl
9524 dnl ---------------------------------------------------------------------------
9525 dnl CF_WITH_SYSTYPE version: 1 updated: 2013/01/26 16:26:12
9526 dnl ---------------
9527 dnl For testing, override the derived host system-type which is used to decide
9528 dnl things such as the linker commands used to build shared libraries.  This is
9529 dnl normally chosen automatically based on the type of system which you are
9530 dnl building on.  We use it for testing the configure script.
9531 dnl
9532 dnl This is different from the --host option: it is used only for testing parts
9533 dnl of the configure script which would not be reachable with --host since that
9534 dnl relies on the build environment being real, rather than mocked up.
9535 AC_DEFUN([CF_WITH_SYSTYPE],[
9536 CF_CHECK_CACHE([AC_CANONICAL_SYSTEM])
9537 AC_ARG_WITH(system-type,
9538         [  --with-system-type=XXX  test: override derived host system-type],
9539 [AC_MSG_WARN(overriding system type to $withval)
9540         cf_cv_system_name=$withval
9541         host_os=$withval
9542 ])
9543 ])dnl
9544 dnl ---------------------------------------------------------------------------
9545 dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
9546 dnl ----------------
9547 AC_DEFUN([CF_WITH_VALGRIND],[
9548 CF_NO_LEAKS_OPTION(valgrind,
9549         [  --with-valgrind         test: use valgrind],
9550         [USE_VALGRIND])
9551 ])dnl
9552 dnl ---------------------------------------------------------------------------
9553 dnl CF_WITH_VERSIONED_SYMS version: 10 updated: 2021/01/04 18:48:01
9554 dnl ----------------------
9555 dnl Use this when building shared library with ELF, to markup symbols with the
9556 dnl version identifier from the given input file.  Generally that identifier is
9557 dnl the same as the SONAME at which the symbol was first introduced.
9558 dnl
9559 dnl $1 = basename of the ".map" file (default $PACKAGE)
9560 AC_DEFUN([CF_WITH_VERSIONED_SYMS],
9561 [AC_REQUIRE([AC_PROG_FGREP])dnl
9562 AC_REQUIRE([AC_PROG_EGREP])dnl
9563
9564 AC_MSG_CHECKING(if versioned-symbols file should be used)
9565 AC_ARG_WITH(versioned-syms,
9566         [  --with-versioned-syms=X markup versioned symbols using ld],
9567         [with_versioned_syms=$withval],
9568         [with_versioned_syms=no])
9569 case "x$with_versioned_syms" in
9570 (xyes)
9571         with_versioned_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).map'
9572         AC_SUBST(PACKAGE)
9573         ;;
9574 (xno)
9575         ;;
9576 (x/*)
9577         test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms)
9578         ;;
9579 (*)
9580         test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms)
9581         with_versioned_syms=`pwd`/"$with_versioned_syms"
9582         ;;
9583 esac
9584 AC_MSG_RESULT($with_versioned_syms)
9585
9586 RESULTING_SYMS=
9587 VERSIONED_SYMS=
9588 WILDCARD_SYMS=
9589
9590 if test "x$with_versioned_syms" != xno
9591 then
9592         RESULTING_SYMS=$with_versioned_syms
9593         case "x$MK_SHARED_LIB" in
9594         (*-Wl,*)
9595                 VERSIONED_SYMS="-Wl,--version-script,\${RESULTING_SYMS}"
9596                 MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-Wl,%\\[$]{VERSIONED_SYMS} -Wl,%"`
9597                 CF_VERBOSE(MK_SHARED_LIB:  $MK_SHARED_LIB)
9598                 ;;
9599         (*-dy\ *)
9600                 VERSIONED_SYMS="-Wl,-M,\${RESULTING_SYMS}"
9601                 MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-dy%\\[$]{VERSIONED_SYMS} -dy%"`
9602                 CF_VERBOSE(MK_SHARED_LIB:  $MK_SHARED_LIB)
9603                 ;;
9604         (*)
9605                 AC_MSG_WARN(this system does not support versioned-symbols)
9606                 ;;
9607         esac
9608
9609         # Linux ld can selectively override scope, e.g., of symbols beginning with
9610         # "_" by first declaring some as global, and then using a wildcard to
9611         # declare the others as local.  Some other loaders cannot do this.  Check
9612         # by constructing a (very) simple shared library and inspecting its
9613         # symbols.
9614         if test "x$VERSIONED_SYMS" != "x"
9615         then
9616                 AC_MSG_CHECKING(if wildcards can be used to selectively omit symbols)
9617                 WILDCARD_SYMS=no
9618
9619                 # make sources
9620                 rm -f conftest.*
9621
9622                 cat >conftest.ver <<EOF
9623 module_1.0 {
9624 global:
9625         globalf1;
9626 local:
9627         localf1;
9628 };
9629 module_2.0 {
9630 global:
9631         globalf2;
9632 local:
9633         localf2;
9634         _*;
9635 } module_1.0;
9636 submodule_1.0 {
9637 global:
9638         subglobalf1;
9639         _ismissing;
9640 local:
9641         sublocalf1;
9642 };
9643 submodule_2.0 {
9644 global:
9645         subglobalf2;
9646 local:
9647         sublocalf2;
9648         _*;
9649 } submodule_1.0;
9650 EOF
9651                 cat >conftest.$ac_ext <<EOF
9652 #line __oline__ "configure"
9653 int     _ismissing(void) { return 1; }
9654 int     _localf1(void) { return 1; }
9655 int     _localf2(void) { return 2; }
9656 int     globalf1(void) { return 1; }
9657 int     globalf2(void) { return 2; }
9658 int     _sublocalf1(void) { return 1; }
9659 int     _sublocalf2(void) { return 2; }
9660 int     subglobalf1(void) { return 1; }
9661 int     subglobalf2(void) { return 2; }
9662 EOF
9663                 cat >conftest.mk <<EOF
9664 CC=${CC}
9665 CFLAGS=${CFLAGS}
9666 CPPFLAGS=${CPPFLAGS}
9667 LDFLAGS=${LDFLAGS}
9668 LIBS=${LIBS}
9669 VERSIONED_SYMS=${VERSIONED_SYMS}
9670 RESULTING_SYMS=conftest.ver
9671 MK_SHARED_LIB=${MK_SHARED_LIB}
9672 conftest.so: conftest.$ac_cv_objext
9673                 \$(MK_SHARED_LIB) conftest.$ac_cv_objext
9674 EOF
9675
9676                 # compile source, make library
9677                 if make -f conftest.mk 2>&AC_FD_CC >/dev/null
9678                 then
9679                         # test for missing symbol in either Data or Text section
9680                         cf_missing="`nm -P conftest.so 2>&AC_FD_CC |${FGREP-fgrep} _ismissing | ${EGREP-egrep} '[[      ]][[DT]][[      ]]'`"
9681                         test -n "$cf_missing" && WILDCARD_SYMS=yes
9682                 fi
9683                 AC_MSG_RESULT($WILDCARD_SYMS)
9684                 rm -f conftest.*
9685         fi
9686 fi
9687 AC_SUBST(RESULTING_SYMS)
9688 AC_SUBST(VERSIONED_SYMS)
9689 AC_SUBST(WILDCARD_SYMS)
9690 ])dnl
9691 dnl ---------------------------------------------------------------------------
9692 dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54
9693 dnl ---------------
9694 dnl Handle configure option "--with-x11-rgb", setting these shell
9695 dnl variables:
9696 dnl
9697 dnl $RGB_PATH is the option value, used for finding the X11 rgb file.
9698 dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given.
9699 dnl
9700 dnl Most Linux's use this:
9701 dnl     /usr/share/X11/rgb.txt
9702 dnl Debian uses this:
9703 dnl     /etc/X11/rgb.txt
9704 dnl DragonFlyBSD ports uses this:
9705 dnl     /usr/pkg/lib/X11/rgb.txt
9706 dnl FreeBSD ports use these:
9707 dnl     /usr/local/lib/X11/rgb.txt
9708 dnl     /usr/local/share/X11/rgb.txt
9709 dnl Mandriva has these:
9710 dnl     /usr/lib/X11/rgb.txt
9711 dnl     /usr/lib64/X11/rgb.txt
9712 dnl NetBSD has these
9713 dnl     /usr/X11R7/lib/X11/rgb.txt
9714 dnl OpenSolaris uses
9715 dnl     32-bit:
9716 dnl     /usr/X11/etc/X11/rgb.txt
9717 dnl     /usr/X11/share/X11/rgb.txt
9718 dnl     /usr/X11/lib/X11/rgb.txt
9719 dnl OSX uses
9720 dnl             /opt/local/share/X11/rgb.txt (MacPorts)
9721 dnl             /opt/X11/share/X11/rgb.txt (non-ports)
9722 dnl     64-bit:
9723 dnl     /usr/X11/etc/X11/rgb.txt
9724 dnl     /usr/X11/share/X11/rgb.txt (perhaps)
9725 dnl     /usr/X11/lib/amd64/X11/rgb.txt
9726 dnl Solaris10 uses (in this order):
9727 dnl     /usr/openwin/lib/X11/rgb.txt
9728 dnl     /usr/X11/lib/X11/rgb.txt
9729 AC_DEFUN([CF_WITH_X11_RGB],[
9730 AC_MSG_CHECKING(for X11 rgb file)
9731 AC_ARG_WITH(x11-rgb,
9732         [  --with-x11-rgb=FILE   file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)],
9733         [RGB_PATH=$withval],
9734         [RGB_PATH=auto])
9735
9736 if test "x[$]RGB_PATH" = xauto
9737 then
9738         RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
9739         for cf_path in \
9740                 /opt/local/share/X11/rgb.txt \
9741                 /opt/X11/share/X11/rgb.txt \
9742                 /usr/share/X11/rgb.txt \
9743                 /usr/X11/share/X11/rgb.txt \
9744                 /usr/X11/lib/X11/rgb.txt \
9745                 /usr/lib/X11/rgb.txt \
9746                 /etc/X11/rgb.txt \
9747                 /usr/pkg/lib/X11/rgb.txt \
9748                 /usr/X11R7/lib/X11/rgb.txt \
9749                 /usr/X11R6/lib/X11/rgb.txt \
9750                 /usr/X11R5/lib/X11/rgb.txt \
9751                 /usr/X11R4/lib/X11/rgb.txt \
9752                 /usr/local/lib/X11/rgb.txt \
9753                 /usr/local/share/X11/rgb.txt \
9754                 /usr/lib64/X11/rgb.txt
9755         do
9756                 if test -f "$cf_path" ; then
9757                         RGB_PATH="$cf_path"
9758                         break
9759                 fi
9760         done
9761 else
9762         cf_path=$RGB_PATH
9763         CF_PATH_SYNTAX(cf_path)
9764 fi
9765
9766 AC_MSG_RESULT($RGB_PATH)
9767 AC_SUBST(RGB_PATH)
9768 AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt])
9769
9770 no_x11_rgb=
9771 if test "$RGB_PATH" = no
9772 then
9773         no_x11_rgb="#"
9774 fi
9775 AC_SUBST(no_x11_rgb)
9776 ])dnl
9777 dnl ---------------------------------------------------------------------------
9778 dnl CF_XOPEN_SOURCE version: 59 updated: 2021/08/28 15:20:37
9779 dnl ---------------
9780 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
9781 dnl or adapt to the vendor's definitions to get equivalent functionality,
9782 dnl without losing the common non-POSIX features.
9783 dnl
9784 dnl Parameters:
9785 dnl     $1 is the nominal value for _XOPEN_SOURCE
9786 dnl     $2 is the nominal value for _POSIX_C_SOURCE
9787 AC_DEFUN([CF_XOPEN_SOURCE],[
9788 AC_REQUIRE([AC_CANONICAL_HOST])
9789 AC_REQUIRE([CF_POSIX_VISIBLE])
9790
9791 if test "$cf_cv_posix_visible" = no; then
9792
9793 cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
9794 cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
9795 cf_xopen_source=
9796
9797 case "$host_os" in
9798 (aix[[4-7]]*)
9799         cf_xopen_source="-D_ALL_SOURCE"
9800         ;;
9801 (msys)
9802         cf_XOPEN_SOURCE=600
9803         ;;
9804 (darwin[[0-8]].*)
9805         cf_xopen_source="-D_APPLE_C_SOURCE"
9806         ;;
9807 (darwin*)
9808         cf_xopen_source="-D_DARWIN_C_SOURCE"
9809         cf_XOPEN_SOURCE=
9810         ;;
9811 (freebsd*|dragonfly*|midnightbsd*)
9812         # 5.x headers associate
9813         #       _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
9814         #       _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
9815         cf_POSIX_C_SOURCE=200112L
9816         cf_XOPEN_SOURCE=600
9817         cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
9818         ;;
9819 (hpux11*)
9820         cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
9821         ;;
9822 (hpux*)
9823         cf_xopen_source="-D_HPUX_SOURCE"
9824         ;;
9825 (irix[[56]].*)
9826         cf_xopen_source="-D_SGI_SOURCE"
9827         cf_XOPEN_SOURCE=
9828         ;;
9829 (linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
9830         CF_GNU_SOURCE($cf_XOPEN_SOURCE)
9831         ;;
9832 (minix*)
9833         cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
9834         ;;
9835 (mirbsd*)
9836         # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
9837         cf_XOPEN_SOURCE=
9838         CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
9839         ;;
9840 (netbsd*)
9841         cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
9842         ;;
9843 (openbsd[[6-9]]*)
9844         # OpenBSD 6.x has broken locale support, both compile-time and runtime.
9845         # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
9846         # Abusing the conformance level is a workaround.
9847         AC_MSG_WARN(this system does not provide usable locale support)
9848         cf_xopen_source="-D_BSD_SOURCE"
9849         cf_XOPEN_SOURCE=700
9850         ;;
9851 (openbsd[[4-5]]*)
9852         # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
9853         cf_xopen_source="-D_BSD_SOURCE"
9854         cf_XOPEN_SOURCE=600
9855         ;;
9856 (openbsd*)
9857         # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
9858         ;;
9859 (osf[[45]]*)
9860         cf_xopen_source="-D_OSF_SOURCE"
9861         ;;
9862 (nto-qnx*)
9863         cf_xopen_source="-D_QNX_SOURCE"
9864         ;;
9865 (sco*)
9866         # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
9867         ;;
9868 (solaris2.*)
9869         cf_xopen_source="-D__EXTENSIONS__"
9870         cf_cv_xopen_source=broken
9871         ;;
9872 (sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
9873         cf_XOPEN_SOURCE=
9874         cf_POSIX_C_SOURCE=
9875         ;;
9876 (*)
9877         CF_TRY_XOPEN_SOURCE
9878         CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
9879         ;;
9880 esac
9881
9882 if test -n "$cf_xopen_source" ; then
9883         CF_APPEND_CFLAGS($cf_xopen_source,true)
9884 fi
9885
9886 dnl In anything but the default case, we may have system-specific setting
9887 dnl which is still not guaranteed to provide all of the entrypoints that
9888 dnl _XOPEN_SOURCE would yield.
9889 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
9890         AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
9891         AC_TRY_COMPILE([#include <stdlib.h>],[
9892 #ifndef _XOPEN_SOURCE
9893 make an error
9894 #endif],
9895         [cf_XOPEN_SOURCE_set=yes],
9896         [cf_XOPEN_SOURCE_set=no])
9897         AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
9898         if test "$cf_XOPEN_SOURCE_set" = yes
9899         then
9900                 AC_TRY_COMPILE([#include <stdlib.h>],[
9901 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
9902 make an error
9903 #endif],
9904                 [cf_XOPEN_SOURCE_set_ok=yes],
9905                 [cf_XOPEN_SOURCE_set_ok=no])
9906                 if test "$cf_XOPEN_SOURCE_set_ok" = no
9907                 then
9908                         AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
9909                 fi
9910         else
9911                 CF_TRY_XOPEN_SOURCE
9912         fi
9913 fi
9914 fi # cf_cv_posix_visible
9915 ])
9916 dnl ---------------------------------------------------------------------------
9917 dnl CF__SED_TRIMBLANKS version: 1 updated: 2021/01/02 09:31:20
9918 dnl ------------------
9919 dnl Trim something using sed, then trim extra whitespace
9920 dnl $1 = extra parameters, e.g., in CF_STRIP_G_OPT
9921 define([CF__SED_TRIMBLANKS],[sed ifelse($1,,,[$1] )-e 's%[[     ]]% %g' -e 's% [[ ]]*% %g' -e 's%^ %%' -e 's% [$]%%'])dnl