]> ncurses.scripts.mit.edu Git - ncurses.git/blob - aclocal.m4
ncurses 6.2 - patch 20211017
[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.981 2021/10/17 15:14:04 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_LIBTOOL_VERSION version: 2 updated: 2021/05/01 16:24:34
1351 dnl ------------------------
1352 dnl Show the version of libtool
1353 dnl
1354 dnl Save the version in a cache variable - this is not entirely a good thing,
1355 dnl but the version string from libtool is very ugly, and for bug reports it
1356 dnl might be useful to have the original string.
1357 dnl
1358 dnl There is an imitation in OpenBSD, which has no apparent use other than to
1359 dnl deny that it is GNU libtool.  Just ignore it.
1360 AC_DEFUN([CF_CHECK_LIBTOOL_VERSION],[
1361 if test -n "$LIBTOOL" && test "$LIBTOOL" != none
1362 then
1363         AC_MSG_CHECKING(version of $LIBTOOL)
1364         CF_LIBTOOL_VERSION
1365         AC_MSG_RESULT($cf_cv_libtool_version)
1366         if test -n "$cf_cv_libtool_version"
1367         then
1368                 cf_check_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' -e 's,[[()]],...,g' -e 's,[[ ]],-,g' -e '2,$d'`
1369                 case "x$cf_check_libtool_version" in
1370                 (*...GNU-libtool...*)
1371                         ;;
1372                 (*)
1373                         AC_MSG_ERROR(This is not GNU libtool)
1374                         ;;
1375                 esac
1376         else
1377                 AC_MSG_ERROR(No version found for $LIBTOOL)
1378         fi
1379 else
1380         AC_MSG_ERROR(GNU libtool has not been found)
1381 fi
1382 ])dnl
1383 dnl ---------------------------------------------------------------------------
1384 dnl CF_CHECK_WCHAR_H version: 3 updated: 2021/01/01 13:31:04
1385 dnl ----------------
1386 dnl Check if wchar.h can be used, i.e., without defining _XOPEN_SOURCE_EXTENDED
1387 AC_DEFUN([CF_CHECK_WCHAR_H],[
1388 AC_CHECK_HEADERS( \
1389 wchar.h \
1390 wctype.h \
1391 )
1392 AC_CACHE_CHECK(if wchar.h can be used as is,cf_cv_wchar_h_okay,[
1393 AC_TRY_COMPILE(
1394 [
1395 #include <stdlib.h>
1396 #ifdef HAVE_WCHAR_H
1397 #include <wchar.h>
1398 #endif
1399 #ifdef HAVE_WCTYPE_H
1400 #include <wctype.h>
1401 #endif
1402 ],[
1403         wint_t foo = 0;
1404         int bar = iswpunct(foo)],
1405         [cf_cv_wchar_h_okay=yes],
1406         [cf_cv_wchar_h_okay=no])])
1407
1408 if test "$cf_cv_wchar_h_okay" = no
1409 then
1410         CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED)
1411 fi
1412 ])dnl
1413 dnl ---------------------------------------------------------------------------
1414 dnl CF_CHECK_WCWIDTH_GRAPHICS version: 2 updated: 2021/01/02 17:09:14
1415 dnl -------------------------
1416 dnl Most "modern" terminal emulators are based to some degree on VT100, and
1417 dnl should support line-drawing.  Even with Unicode.  There is a problem.
1418 dnl
1419 dnl While most of the VT100 graphics characters were incorporated into Unicode,
1420 dnl all of those were combined into a page of useful graphics characters.
1421 dnl
1422 dnl So far, so good.
1423 dnl
1424 dnl However, while they are useful, there are other considerations.  CJK
1425 dnl is (because of poor device resolution) often rendered as double-width
1426 dnl characters.  So... for these generally-useful characters, what should
1427 dnl be the width (to make them consistent with adjacent characters)?
1428 dnl
1429 dnl The obvious choice would have been to make this locale-dependent, and use
1430 dnl wcwidth() to tell applications what the actual width is.  That was too
1431 dnl obvious.  Instead, we have a slew of "ambiguous-width" characters.
1432 dnl See for example
1433 dnl             http://www.unicode.org/reports/tr11/tr11-29.html
1434 dnl             http://www.cl.cam.ac.uk/~mgk25/ucs/scw-proposal.html
1435 dnl
1436 dnl The EastAsianWidth-6.2.0.txt file from the Unicode organization lists
1437 dnl more than 22,000 characters, with 1281 of those as ambiguous-width.  For
1438 dnl instance, it lists half (44/96) of the Latin-1 characters as
1439 dnl ambiguous-width.  Also, all of the box-characters at 0x2500 are ambiguous.
1440 dnl
1441 dnl What this means for the implementor is that on some systems wcwidth() can
1442 dnl give bad advice.  On Solaris, some of the ambiguous widths are returned as
1443 dnl 1 (the Latin-1 characters), while others are returned as 2 (line-drawing
1444 dnl characters).  These do not necessarily match the behavior of the terminal
1445 dnl emulator.  xterm, for instance, does an optional startup check to find if
1446 dnl this problem (or similar) exists with the system's locale tables, rejecting
1447 dnl them if they are too unreliable.
1448 AC_DEFUN([CF_CHECK_WCWIDTH_GRAPHICS],[
1449 AC_CACHE_CHECK(if wcwidth agrees graphics are single-width, cf_cv_wcwidth_graphics,[
1450 cat >conftest.in <<CF_EOF
1451 -       VT100 symbols
1452 0x250c  upper left corner
1453 0x2514  lower left corner
1454 0x2510  upper right corner
1455 0x2518  lower right corner
1456 0x251c  tee pointing left
1457 0x2524  tee pointing right
1458 0x2534  tee pointing up
1459 0x252c  tee pointing down
1460 0x2500  horizontal line
1461 0x2502  vertical line
1462 0x253c  large plus or crossover
1463 0x23ba  scan line 1
1464 0x23bd  scan line 9
1465 0x25c6  diamond
1466 0x2592  checker board (stipple)
1467 0x00b0  degree symbol
1468 0x00b1  plus/minus
1469 0x00b7  bullet
1470 -       Teletype 5410v1 symbols
1471 0x2190  arrow pointing left
1472 0x2192  arrow pointing right
1473 0x2193  arrow pointing down
1474 0x2191  arrow pointing up
1475 0x2592  board of squares
1476 0x2603  lantern symbol
1477 0x25ae  solid square block
1478 -       these defaults were invented for ncurses
1479 0x23bb  scan line 3
1480 0x23bc  scan line 7
1481 0x2264  less-than-or-equal-to
1482 0x2265  greater-than-or-equal-to
1483 0x03c0  greek pi
1484 0x2260  not-equal
1485 0x00a3  pound-sterling symbol
1486 -       thick-line-drawing
1487 0x250f  upper left corner
1488 0x2517  lower left corner
1489 0x2513  upper right corner
1490 0x251b  lower right corner
1491 0x2523  tee pointing left
1492 0x252b  tee pointing right
1493 0x253b  tee pointing up
1494 0x2533  tee pointing down
1495 0x2501  horizontal line
1496 0x2503  vertical line
1497 0x254b  large plus or crossover
1498 -       double-line-drawing
1499 0x2554  upper left corner
1500 0x255a  lower left corner
1501 0x2557  upper right corner
1502 0x255d  lower right corner
1503 0x2563  tee pointing left
1504 0x2560  tee pointing right
1505 0x2569  tee pointing up
1506 0x2566  tee pointing down
1507 0x2550  horizontal line
1508 0x2551  vertical line
1509 0x256c  large plus or crossover
1510 CF_EOF
1511 AC_TRY_RUN([
1512 #include <locale.h>
1513 #include <stdio.h>
1514 #include <wchar.h>
1515
1516 #define MY_LEN 80
1517
1518 int
1519 main(void)
1520 {
1521         FILE *fp;
1522         int value;
1523         char buffer[MY_LEN + 1];
1524         char notes[MY_LEN + 1];
1525         int totals = 0;
1526         int passed = 0;
1527
1528         if (setlocale(LC_ALL, "en_US.UTF8") ||
1529                 setlocale(LC_ALL, "en_US.UTF-8") ||
1530                 setlocale(LC_ALL, "en_US.utf8") ||
1531                 setlocale(LC_ALL, "en_US.utf-8")) {
1532                 if ((fp = fopen("conftest.in", "r")) != 0) {
1533                         while (fgets(buffer, MY_LEN, fp) != 0) {
1534                                 if (*buffer == '-') {
1535                                         fprintf(stderr, "\\t%s", buffer);
1536                                 } else if (sscanf(buffer, "%x %s", &value, notes) == 2) {
1537                                         ++totals;
1538                                         if (wcwidth(value) == 1)
1539                                                 ++passed;
1540                                         fprintf(stderr, "%d\\t%s", wcwidth(value), buffer);
1541                                 } else {
1542                                         fprintf(stderr, "?\\t%s", buffer);
1543                                 }
1544                         }
1545                 }
1546         }
1547         fprintf(stderr, "%d/%d passed wcwidth/graphics check\\n", passed, totals);
1548         return (totals == passed) ? 0 : 1;
1549 }
1550 ],
1551 [cf_cv_wcwidth_graphics=yes],
1552 [cf_cv_wcwidth_graphics=no],
1553 [cf_cv_wcwidth_graphics=unknown])
1554 ])
1555 ])dnl
1556 dnl ---------------------------------------------------------------------------
1557 dnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04
1558 dnl -----------------
1559 dnl Check if the given compiler is really clang.  clang's C driver defines
1560 dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
1561 dnl not ignore some gcc options.
1562 dnl
1563 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
1564 dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
1565 dnl the wrappers for gcc and g++ warnings.
1566 dnl
1567 dnl $1 = GCC (default) or GXX
1568 dnl $2 = CLANG_COMPILER (default)
1569 dnl $3 = CFLAGS (default) or CXXFLAGS
1570 AC_DEFUN([CF_CLANG_COMPILER],[
1571 ifelse([$2],,CLANG_COMPILER,[$2])=no
1572
1573 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
1574         AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
1575         cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
1576         AC_TRY_COMPILE([],[
1577 #ifdef __clang__
1578 #else
1579 make an error
1580 #endif
1581 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
1582 ],[])
1583         ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
1584         AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
1585 fi
1586
1587 CLANG_VERSION=none
1588
1589 if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
1590         case "$CC" in
1591         (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]])
1592                 AC_MSG_WARN(replacing broken compiler alias $CC)
1593                 CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
1594                 CC=clang
1595                 ;;
1596         esac
1597
1598         AC_MSG_CHECKING(version of $CC)
1599         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.]].*//'`"
1600         test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
1601         AC_MSG_RESULT($CLANG_VERSION)
1602
1603         for cf_clang_opt in \
1604                 -Qunused-arguments \
1605                 -Wno-error=implicit-function-declaration
1606         do
1607                 AC_MSG_CHECKING(if option $cf_clang_opt works)
1608                 cf_save_CFLAGS="$CFLAGS"
1609                 CFLAGS="$CFLAGS $cf_clang_opt"
1610                 AC_TRY_LINK([
1611                         #include <stdio.h>],[
1612                         printf("hello!\\n");],[
1613                         cf_clang_optok=yes],[
1614                         cf_clang_optok=no])
1615                 AC_MSG_RESULT($cf_clang_optok)
1616                 CFLAGS="$cf_save_CFLAGS"
1617                 if test "$cf_clang_optok" = yes; then
1618                         CF_VERBOSE(adding option $cf_clang_opt)
1619                         CF_APPEND_TEXT(CFLAGS,$cf_clang_opt)
1620                 fi
1621         done
1622 fi
1623 ])
1624 dnl ---------------------------------------------------------------------------
1625 dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
1626 dnl -----------------
1627 dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
1628 dnl character-strings.
1629 dnl
1630 dnl It is ambiguous because the specification accommodated the pre-ANSI
1631 dnl compilers bundled by more than one vendor in lieu of providing a standard C
1632 dnl compiler other than by costly add-ons.  Because of this, the specification
1633 dnl did not take into account the use of const for telling the compiler that
1634 dnl string literals would be in readonly memory.
1635 dnl
1636 dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
1637 dnl let the compiler decide how to represent Xt's strings which were #define'd.
1638 dnl That does not solve the problem of using the block of Xt's strings which
1639 dnl are compiled into the library (and is less efficient than one might want).
1640 dnl
1641 dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
1642 dnl when compiling the library and compiling using the library, to tell the
1643 dnl compiler that String is const.
1644 AC_DEFUN([CF_CONST_X_STRING],
1645 [
1646 AC_REQUIRE([AC_PATH_XTRA])
1647
1648 CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
1649
1650 AC_TRY_COMPILE(
1651 [
1652 #include <stdlib.h>
1653 #include <X11/Intrinsic.h>
1654 ],
1655 [String foo = malloc(1); free((void*)foo)],[
1656
1657 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
1658         AC_TRY_COMPILE(
1659                 [
1660 #define _CONST_X_STRING /* X11R7.8 (perhaps) */
1661 #undef  XTSTRINGDEFINES /* X11R5 and later */
1662 #include <stdlib.h>
1663 #include <X11/Intrinsic.h>
1664                 ],[String foo = malloc(1); *foo = 0],[
1665                         cf_cv_const_x_string=no
1666                 ],[
1667                         cf_cv_const_x_string=yes
1668                 ])
1669 ])
1670
1671 CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
1672
1673 case "$cf_cv_const_x_string" in
1674 (no)
1675         CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
1676         ;;
1677 (*)
1678         CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
1679         ;;
1680 esac
1681
1682 ])
1683 ])dnl
1684 dnl ---------------------------------------------------------------------------
1685 dnl CF_CPP_PARAM_INIT version: 7 updated: 2017/01/21 11:06:25
1686 dnl -----------------
1687 dnl Check if the C++ compiler accepts duplicate parameter initialization.  This
1688 dnl is a late feature for the standard and is not in some recent compilers
1689 dnl (1999/9/11).
1690 AC_DEFUN([CF_CPP_PARAM_INIT],
1691 [
1692 if test -n "$CXX"; then
1693 AC_CACHE_CHECK(if $CXX accepts parameter initialization,cf_cv_cpp_param_init,[
1694         AC_LANG_SAVE
1695         AC_LANG_CPLUSPLUS
1696         AC_TRY_RUN([
1697 class TEST {
1698 private:
1699         int value;
1700 public:
1701         TEST(int x = 1);
1702         ~TEST();
1703 };
1704
1705 TEST::TEST(int x = 1)   // some compilers do not like second initializer
1706 {
1707         value = x;
1708 }
1709 int main(void) { }
1710 ],
1711         [cf_cv_cpp_param_init=yes],
1712         [cf_cv_cpp_param_init=no],
1713         [cf_cv_cpp_param_init=unknown])
1714         AC_LANG_RESTORE
1715 ])
1716 fi
1717 test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT,1,[Define to 1 if C++ has parameter initialization])
1718 ])dnl
1719 dnl ---------------------------------------------------------------------------
1720 dnl CF_CPP_STATIC_CAST version: 3 updated: 2013/04/13 18:03:21
1721 dnl ------------------
1722 dnl Check if the C++ compiler accepts static_cast in generics.  This appears to
1723 dnl not be supported in g++ before 3.0
1724 AC_DEFUN([CF_CPP_STATIC_CAST],
1725 [
1726 if test -n "$CXX"; then
1727
1728 AC_CACHE_CHECK(if $CXX accepts static_cast,cf_cv_cpp_static_cast,[
1729         AC_LANG_SAVE
1730         AC_LANG_CPLUSPLUS
1731
1732         AC_TRY_COMPILE([
1733 class NCursesPanel
1734 {
1735 public:
1736   NCursesPanel(int nlines,
1737                int ncols,
1738                int begin_y = 0,
1739                int begin_x = 0)
1740   {
1741   }
1742   NCursesPanel();
1743   ~NCursesPanel();
1744 };
1745
1746 template<class T> class NCursesUserPanel : public NCursesPanel
1747 {
1748 public:
1749   NCursesUserPanel (int nlines,
1750                     int ncols,
1751                     int begin_y = 0,
1752                     int begin_x = 0,
1753                     const T* p_UserData = static_cast<T*>(0))
1754     : NCursesPanel (nlines, ncols, begin_y, begin_x)
1755   {
1756   };
1757   NCursesUserPanel(const T* p_UserData = static_cast<T*>(0)) : NCursesPanel()
1758   {
1759   };
1760
1761   virtual ~NCursesUserPanel() {};
1762 };
1763 ],[
1764         const char* p_UserData = static_cast<char*>(0)],
1765         [cf_cv_cpp_static_cast=yes],
1766         [cf_cv_cpp_static_cast=no])
1767
1768         AC_LANG_RESTORE
1769 ])
1770
1771 fi
1772
1773 test "$cf_cv_cpp_static_cast" = yes && AC_DEFINE(CPP_HAS_STATIC_CAST,1,[Define to 1 if C++ has static_cast])
1774 ])dnl
1775 dnl ---------------------------------------------------------------------------
1776 dnl CF_CXX_AR_FLAGS version: 3 updated: 2021/01/01 13:31:04
1777 dnl ---------------
1778 dnl Setup special archiver flags for given compilers.
1779 AC_DEFUN([CF_CXX_AR_FLAGS],[
1780         CXX_AR='$(AR)'
1781         CXX_ARFLAGS='$(ARFLAGS)'
1782         case "$cf_cv_system_name" in
1783         (irix*)
1784             if test "$GXX" != yes ; then
1785                 CXX_AR='$(CXX)'
1786                 CXX_ARFLAGS='-ar -o'
1787             fi
1788             ;;
1789         (sco3.2v5*)
1790             CXXLDFLAGS="-u main"
1791             ;;
1792         (solaris2*)
1793             if test "$GXX" != yes ; then
1794                 CXX_AR='$(CXX)'
1795                 CXX_ARFLAGS='-xar -o'
1796             fi
1797             ;;
1798         esac
1799         AC_SUBST(CXXLDFLAGS)
1800         AC_SUBST(CXX_AR)
1801         AC_SUBST(CXX_ARFLAGS)
1802 ])dnl
1803 dnl ---------------------------------------------------------------------------
1804 dnl CF_CXX_IOSTREAM_NAMESPACE version: 2 updated: 2012/10/06 17:56:13
1805 dnl -------------------------
1806 dnl For c++, check if iostream uses "std::" namespace.
1807 AC_DEFUN([CF_CXX_IOSTREAM_NAMESPACE],[
1808 AC_CHECK_HEADERS(iostream)
1809 if test x"$ac_cv_header_iostream" = xyes ; then
1810         AC_MSG_CHECKING(if iostream uses std-namespace)
1811         AC_TRY_COMPILE([
1812 #include <iostream>
1813 using std::endl;
1814 using std::cerr;],[
1815 cerr << "testing" << endl;
1816 ],[cf_iostream_namespace=yes],[cf_iostream_namespace=no])
1817         AC_MSG_RESULT($cf_iostream_namespace)
1818         if test "$cf_iostream_namespace" = yes ; then
1819                 AC_DEFINE(IOSTREAM_NAMESPACE,1,[Define to 1 if C++ has namespace iostream])
1820         fi
1821 fi
1822 ])dnl
1823 dnl ---------------------------------------------------------------------------
1824 dnl CF_C_INLINE version: 6 updated: 2019/09/07 13:38:36
1825 dnl -----------
1826 dnl Check if the C compiler supports "inline".
1827 dnl $1 is the name of a shell variable to set if inline is supported
1828 dnl $2 is the threshold for gcc 4.x's option controlling maximum inline size
1829 AC_DEFUN([CF_C_INLINE],[
1830 AC_REQUIRE([CF_GCC_VERSION])
1831 AC_C_INLINE
1832 $1=
1833 if test "$ac_cv_c_inline" != no ; then
1834         $1=inline
1835         if test "$INTEL_COMPILER" = yes
1836         then
1837                 :
1838         elif test "$CLANG_COMPILER" = yes
1839         then
1840                 :
1841         elif test "$GCC" = yes
1842         then
1843                 AC_CACHE_CHECK(if $CC supports options to tune inlining,cf_cv_gcc_inline,[
1844                 cf_save_CFLAGS=$CFLAGS
1845                 CFLAGS="$CFLAGS --param max-inline-insns-single=$2"
1846                 AC_TRY_COMPILE([inline int foo(void) { return 1; }],
1847                 [${cf_cv_main_return:-return} foo()],
1848                 [cf_cv_gcc_inline=yes],
1849                 [cf_cv_gcc_inline=no])
1850                 CFLAGS=$cf_save_CFLAGS
1851                 ])
1852                 if test "$cf_cv_gcc_inline" = yes ; then
1853                         CF_ADD_CFLAGS([--param max-inline-insns-single=$2])
1854                 fi
1855         fi
1856 fi
1857 AC_SUBST($1)
1858 ])dnl
1859 dnl ---------------------------------------------------------------------------
1860 dnl CF_DIRNAME version: 5 updated: 2020/12/31 20:19:42
1861 dnl ----------
1862 dnl "dirname" is not portable, so we fake it with a shell script.
1863 AC_DEFUN([CF_DIRNAME],[$1=`echo "$2" | sed -e 's%/[[^/]]*$%%'`])dnl
1864 dnl ---------------------------------------------------------------------------
1865 dnl CF_DIRS_TO_MAKE version: 4 updated: 2021/01/01 13:31:04
1866 dnl ---------------
1867 AC_DEFUN([CF_DIRS_TO_MAKE],
1868 [
1869 DIRS_TO_MAKE="lib"
1870 for cf_item in $cf_list_models
1871 do
1872         CF_OBJ_SUBDIR($cf_item,cf_subdir)
1873         for cf_item2 in $DIRS_TO_MAKE
1874         do
1875                 test "$cf_item2" = "$cf_subdir" && break
1876         done
1877         test ".$cf_item2" != ".$cf_subdir" && DIRS_TO_MAKE="$DIRS_TO_MAKE $cf_subdir"
1878 done
1879 for cf_dir in $DIRS_TO_MAKE
1880 do
1881         test ! -d "$cf_dir" && mkdir "$cf_dir"
1882 done
1883 AC_SUBST(DIRS_TO_MAKE)
1884 ])dnl
1885 dnl ---------------------------------------------------------------------------
1886 dnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04
1887 dnl ---------------
1888 dnl You can always use "make -n" to see the actual options, but it is hard to
1889 dnl pick out/analyze warning messages when the compile-line is long.
1890 dnl
1891 dnl Sets:
1892 dnl     ECHO_LT - symbol to control if libtool is verbose
1893 dnl     ECHO_LD - symbol to prefix "cc -o" lines
1894 dnl     RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
1895 dnl     SHOW_CC - symbol to put before explicit "cc -c" lines
1896 dnl     ECHO_CC - symbol to put before any "cc" line
1897 dnl
1898 AC_DEFUN([CF_DISABLE_ECHO],[
1899 AC_MSG_CHECKING(if you want to see long compiling messages)
1900 CF_ARG_DISABLE(echo,
1901         [  --disable-echo          do not display "compiling" commands],
1902         [
1903         ECHO_LT='--silent'
1904         ECHO_LD='@echo linking [$]@;'
1905         RULE_CC='@echo compiling [$]<'
1906         SHOW_CC='@echo compiling [$]@'
1907         ECHO_CC='@'
1908 ],[
1909         ECHO_LT=''
1910         ECHO_LD=''
1911         RULE_CC=''
1912         SHOW_CC=''
1913         ECHO_CC=''
1914 ])
1915 AC_MSG_RESULT($enableval)
1916 AC_SUBST(ECHO_LT)
1917 AC_SUBST(ECHO_LD)
1918 AC_SUBST(RULE_CC)
1919 AC_SUBST(SHOW_CC)
1920 AC_SUBST(ECHO_CC)
1921 ])dnl
1922 dnl ---------------------------------------------------------------------------
1923 dnl CF_DISABLE_GNAT_PROJECTS version: 1 updated: 2014/06/01 11:34:00
1924 dnl ------------------------
1925 AC_DEFUN([CF_DISABLE_GNAT_PROJECTS],[
1926 AC_MSG_CHECKING(if we want to use GNAT projects)
1927 CF_ARG_DISABLE(gnat-projects,
1928         [  --disable-gnat-projects test: disable GNAT projects even if usable],
1929         [enable_gnat_projects=no],
1930         [enable_gnat_projects=yes])
1931 AC_MSG_RESULT($enable_gnat_projects)
1932 ])dnl
1933 dnl ---------------------------------------------------------------------------
1934 dnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50
1935 dnl ----------------
1936 dnl Combine no-leak checks with the libraries or tools that are used for the
1937 dnl checks.
1938 AC_DEFUN([CF_DISABLE_LEAKS],[
1939
1940 AC_REQUIRE([CF_WITH_DMALLOC])
1941 AC_REQUIRE([CF_WITH_DBMALLOC])
1942 AC_REQUIRE([CF_WITH_VALGRIND])
1943
1944 AC_MSG_CHECKING(if you want to perform memory-leak testing)
1945 AC_ARG_ENABLE(leaks,
1946         [  --disable-leaks         test: free permanent memory, analyze leaks],
1947         [enable_leaks=$enableval],
1948         [enable_leaks=yes])
1949 dnl with_no_leaks is more readable...
1950 if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi
1951 AC_MSG_RESULT($with_no_leaks)
1952
1953 if test "$enable_leaks" = no ; then
1954         AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1955         AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1956 fi
1957 ])dnl
1958 dnl ---------------------------------------------------------------------------
1959 dnl CF_DISABLE_LIBTOOL_VERSION version: 3 updated: 2015/04/17 21:13:04
1960 dnl --------------------------
1961 dnl Check if we should use the libtool 1.5 feature "-version-number" instead of
1962 dnl the older "-version-info" feature.  The newer feature allows us to use
1963 dnl version numbering on shared libraries which make them compatible with
1964 dnl various systems.
1965 AC_DEFUN([CF_DISABLE_LIBTOOL_VERSION],
1966 [
1967 AC_MSG_CHECKING(if libtool -version-number should be used)
1968 CF_ARG_DISABLE(libtool-version,
1969         [  --disable-libtool-version  enable to use libtool's incompatible naming scheme],
1970         [cf_libtool_version=no],
1971         [cf_libtool_version=yes])
1972 AC_MSG_RESULT($cf_libtool_version)
1973
1974 if test "$cf_libtool_version" = yes ; then
1975         LIBTOOL_VERSION="-version-number"
1976 else
1977         LIBTOOL_VERSION="-version-info"
1978         case "x$VERSION" in
1979         (x)
1980                 AC_MSG_WARN(VERSION was not set)
1981                 ;;
1982         (x*.*.*)
1983                 ABI_VERSION="$VERSION"
1984                 CF_VERBOSE(ABI_VERSION: $ABI_VERSION)
1985                 ;;
1986         (x*:*:*)
1987                 ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'`
1988                 CF_VERBOSE(ABI_VERSION: $ABI_VERSION)
1989                 ;;
1990         (*)
1991                 AC_MSG_WARN(unexpected VERSION value: $VERSION)
1992                 ;;
1993         esac
1994 fi
1995
1996 AC_SUBST(ABI_VERSION)
1997 AC_SUBST(LIBTOOL_VERSION)
1998 ])dnl
1999 dnl ---------------------------------------------------------------------------
2000 dnl CF_DISABLE_RPATH_HACK version: 3 updated: 2021/01/05 20:14:44
2001 dnl ---------------------
2002 dnl The rpath-hack makes it simpler to build programs, particularly with the
2003 dnl *BSD ports which may have essential libraries in unusual places.  But it
2004 dnl can interfere with building an executable for the base system.  Use this
2005 dnl option in that case.
2006 AC_DEFUN([CF_DISABLE_RPATH_HACK],
2007 [
2008 AC_MSG_CHECKING(if rpath-hack should be disabled)
2009 CF_ARG_DISABLE(rpath-hack,
2010         [  --disable-rpath-hack    don't add rpath options for additional libraries],
2011         [enable_rpath_hack=no],
2012         [enable_rpath_hack=yes])
2013 dnl TODO - drop cf_disable_rpath_hack
2014 if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi
2015 AC_MSG_RESULT($cf_disable_rpath_hack)
2016
2017 if test "$enable_rpath_hack" = yes ; then
2018         CF_RPATH_HACK
2019 fi
2020 ])
2021 dnl ---------------------------------------------------------------------------
2022 dnl CF_ENABLE_BROKEN_LINKER version: 2 updated: 2021/01/02 17:09:14
2023 dnl -----------------------
2024 dnl Some linkers cannot reference a data-only object.  Cygwin used to be one.
2025 dnl This usually follows CF_LINK_DATAONLY, but is not required in case we need
2026 dnl an unconditional feature.
2027 AC_DEFUN([CF_ENABLE_BROKEN_LINKER],[
2028
2029 AC_MSG_CHECKING(if you want broken-linker support code)
2030 AC_ARG_ENABLE(broken_linker,
2031         [  --enable-broken_linker  compile with broken-linker support code],
2032         [with_broken_linker=$enableval],
2033         [with_broken_linker=no])
2034 AC_MSG_RESULT($with_broken_linker)
2035
2036 : "${BROKEN_LINKER:=0}"
2037 if test "x$with_broken_linker" = xyes ; then
2038         AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
2039         BROKEN_LINKER=1
2040 fi
2041 AC_SUBST(BROKEN_LINKER)
2042 ])dnl
2043 dnl ---------------------------------------------------------------------------
2044 dnl CF_ENABLE_PC_FILES version: 14 updated: 2021/10/17 11:12:47
2045 dnl ------------------
2046 dnl This is the "--enable-pc-files" option, which is available if there is a
2047 dnl pkg-config configuration on the local machine.
2048 AC_DEFUN([CF_ENABLE_PC_FILES],[
2049 AC_REQUIRE([CF_PKG_CONFIG])
2050 AC_REQUIRE([CF_WITH_PKG_CONFIG_LIBDIR])
2051
2052 if test "x$PKG_CONFIG" != xnone
2053 then
2054         AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG)
2055 else
2056         AC_MSG_CHECKING(if we should install .pc files)
2057 fi
2058
2059 AC_ARG_ENABLE(pc-files,
2060         [  --enable-pc-files       generate and install .pc files for pkg-config],
2061         [enable_pc_files=$enableval],
2062         [enable_pc_files=no])
2063 AC_MSG_RESULT($enable_pc_files)
2064
2065 if test "x$enable_pc_files" != xno
2066 then
2067         MAKE_PC_FILES=
2068         case "x$PKG_CONFIG_LIBDIR" in
2069         (xno|xnone|xyes)
2070                 AC_MSG_WARN(no PKG_CONFIG_LIBDIR was found)
2071                 ;;
2072         (*)
2073                 CF_PATH_SYNTAX(PKG_CONFIG_LIBDIR)
2074                 ;;
2075         esac
2076 else
2077         MAKE_PC_FILES="#"
2078 fi
2079 AC_SUBST(MAKE_PC_FILES)
2080 ])dnl
2081 dnl ---------------------------------------------------------------------------
2082 dnl CF_ENABLE_RPATH version: 2 updated: 2010/03/27 18:39:42
2083 dnl ---------------
2084 dnl Check if the rpath option should be used, setting cache variable
2085 dnl cf_cv_enable_rpath if so.
2086 AC_DEFUN([CF_ENABLE_RPATH],
2087 [
2088 AC_MSG_CHECKING(if rpath option should be used)
2089 AC_ARG_ENABLE(rpath,
2090 [  --enable-rpath          use rpath option when generating shared libraries],
2091 [cf_cv_enable_rpath=$enableval],
2092 [cf_cv_enable_rpath=no])
2093 AC_MSG_RESULT($cf_cv_enable_rpath)
2094 ])dnl
2095 dnl ---------------------------------------------------------------------------
2096 dnl CF_ENABLE_STRING_HACKS version: 6 updated: 2021/01/05 19:23:48
2097 dnl ----------------------
2098 dnl On a few platforms, the compiler and/or loader nags with untruthful
2099 dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
2100 dnl and implying that most uses of the recommended alternatives are correct.
2101 dnl
2102 dnl Factually speaking, no one has actually counted the number of uses of these
2103 dnl functions versus the total of incorrect uses.  Samples of a few thousand
2104 dnl instances are meaningless compared to the hundreds of millions of lines of
2105 dnl existing C code.
2106 dnl
2107 dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some
2108 dnl platforms, in implementations of varying quality.  Likewise, snprintf is
2109 dnl standard - but evolved through phases, and older implementations are likely
2110 dnl to yield surprising results, as documented in manpages on various systems.
2111 AC_DEFUN([CF_ENABLE_STRING_HACKS],
2112 [
2113 AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings)
2114 AC_ARG_ENABLE(string-hacks,
2115         [  --enable-string-hacks   work around bogus compiler/loader warnings],
2116         [enable_string_hacks=$enableval],
2117         [enable_string_hacks=no])
2118 AC_MSG_RESULT($enable_string_hacks)
2119
2120 if test "x$enable_string_hacks" = "xyes"; then
2121         AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings])
2122         AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
2123         AC_CHECK_FUNC(strlcat,[
2124                 AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
2125                 ],[
2126                 AC_CHECK_LIB(bsd,strlcat,[
2127                         CF_ADD_LIB(bsd)
2128                         AC_CHECK_HEADERS(bsd/string.h)
2129                         AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
2130                         ])
2131                 ])
2132         AC_CHECK_FUNCS( strlcpy snprintf )
2133 fi
2134 ])dnl
2135 dnl ---------------------------------------------------------------------------
2136 dnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50
2137 dnl ------------------
2138 dnl Configure-option to enable gcc warnings
2139 dnl
2140 dnl $1 = extra options to add, if supported
2141 dnl $2 = option for checking attributes.  By default, this is done when
2142 dnl      warnings are enabled.  For other values:
2143 dnl      yes: always do this, e.g., to use in generated library-headers
2144 dnl      no: never do this
2145 AC_DEFUN([CF_ENABLE_WARNINGS],[
2146 if test "$GCC" = yes || test "$GXX" = yes
2147 then
2148 CF_FIX_WARNINGS(CFLAGS)
2149 CF_FIX_WARNINGS(CPPFLAGS)
2150 CF_FIX_WARNINGS(LDFLAGS)
2151 AC_MSG_CHECKING(if you want to turn on gcc warnings)
2152 CF_ARG_ENABLE(warnings,
2153         [  --enable-warnings       test: turn on gcc compiler warnings],
2154         [enable_warnings=yes],
2155         [enable_warnings=no])
2156 AC_MSG_RESULT($enable_warnings)
2157 if test "$enable_warnings" = "yes"
2158 then
2159         ifelse($2,,[CF_GCC_ATTRIBUTES])
2160         CF_GCC_WARNINGS($1)
2161 fi
2162 ifelse($2,yes,[CF_GCC_ATTRIBUTES])
2163 fi
2164 ])dnl
2165 dnl ---------------------------------------------------------------------------
2166 dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39
2167 dnl --------
2168 dnl Check if 'errno' is declared in <errno.h>
2169 AC_DEFUN([CF_ERRNO],
2170 [
2171 CF_CHECK_ERRNO(errno)
2172 ])dnl
2173 dnl ---------------------------------------------------------------------------
2174 dnl CF_ETIP_DEFINES version: 6 updated: 2021/01/02 17:09:14
2175 dnl ---------------
2176 dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between
2177 dnl math.h and builtin.h, only for ncurses
2178 AC_DEFUN([CF_ETIP_DEFINES],
2179 [
2180 AC_MSG_CHECKING(for special defines needed for etip.h)
2181 cf_save_CXXFLAGS="$CXXFLAGS"
2182 cf_result="none"
2183
2184 # etip.h includes ncurses.h which includes ncurses_dll.h
2185 # But ncurses_dll.h is generated - fix here.
2186 test -d include || mkdir include
2187 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
2188
2189 for cf_math in "" MATH_H
2190 do
2191 for cf_excp in "" MATH_EXCEPTION
2192 do
2193         CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -Iinclude -I${srcdir}/include"
2194         test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
2195         test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
2196 AC_TRY_COMPILE([
2197 #include <etip.h.in>
2198 ],[],[
2199         test -n "$cf_math" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_math})
2200         test -n "$cf_excp" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_excp})
2201         cf_result="$cf_math $cf_excp"
2202         break 2
2203 ],[])
2204 done
2205 done
2206 AC_MSG_RESULT($cf_result)
2207 CXXFLAGS="$cf_save_CXXFLAGS"
2208 ])
2209 dnl ---------------------------------------------------------------------------
2210 dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42
2211 dnl ---------------
2212 dnl Find a library (specifically the linkage used in the code fragment),
2213 dnl searching for it if it is not already in the library path.
2214 dnl See also CF_ADD_SEARCHPATH.
2215 dnl
2216 dnl Parameters (4-on are optional):
2217 dnl     $1 = headers for library entrypoint
2218 dnl     $2 = code fragment for library entrypoint
2219 dnl     $3 = the library name without the "-l" option or ".so" suffix.
2220 dnl     $4 = action to perform if successful (default: update CPPFLAGS, etc)
2221 dnl     $5 = action to perform if not successful
2222 dnl     $6 = module name, if not the same as the library name
2223 dnl     $7 = extra libraries
2224 dnl
2225 dnl Sets these variables:
2226 dnl     $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found
2227 dnl     $cf_cv_header_path_$3 - include-directory if needed
2228 dnl     $cf_cv_library_path_$3 - library-directory if needed
2229 dnl     $cf_cv_library_file_$3 - library-file if needed, e.g., -l$3
2230 AC_DEFUN([CF_FIND_LINKAGE],[
2231
2232 # If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these
2233 # will be set on completion of the AC_TRY_LINK below.
2234 cf_cv_header_path_$3=
2235 cf_cv_library_path_$3=
2236
2237 CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)])
2238
2239 cf_save_LIBS="$LIBS"
2240
2241 AC_TRY_LINK([$1],[$2],[
2242         cf_cv_find_linkage_$3=yes
2243         cf_cv_header_path_$3=/usr/include
2244         cf_cv_library_path_$3=/usr/lib
2245 ],[
2246
2247 LIBS="-l$3 $7 $cf_save_LIBS"
2248
2249 AC_TRY_LINK([$1],[$2],[
2250         cf_cv_find_linkage_$3=yes
2251         cf_cv_header_path_$3=/usr/include
2252         cf_cv_library_path_$3=/usr/lib
2253         cf_cv_library_file_$3="-l$3"
2254 ],[
2255         cf_cv_find_linkage_$3=no
2256         LIBS="$cf_save_LIBS"
2257
2258         CF_VERBOSE(find linkage for $3 library)
2259         CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
2260
2261         cf_save_CPPFLAGS="$CPPFLAGS"
2262         cf_test_CPPFLAGS="$CPPFLAGS"
2263
2264         CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
2265         for cf_cv_header_path_$3 in $cf_search
2266         do
2267                 if test -d "$cf_cv_header_path_$3" ; then
2268                         CF_VERBOSE(... testing $cf_cv_header_path_$3)
2269                         CPPFLAGS="$cf_save_CPPFLAGS"
2270                         CF_APPEND_TEXT(CPPFLAGS,-I$cf_cv_header_path_$3)
2271                         AC_TRY_COMPILE([$1],[$2],[
2272                                 CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
2273                                 cf_cv_find_linkage_$3=maybe
2274                                 cf_test_CPPFLAGS="$CPPFLAGS"
2275                                 break],[
2276                                 CPPFLAGS="$cf_save_CPPFLAGS"
2277                                 ])
2278                 fi
2279         done
2280
2281         if test "$cf_cv_find_linkage_$3" = maybe ; then
2282
2283                 CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
2284
2285                 cf_save_LIBS="$LIBS"
2286                 cf_save_LDFLAGS="$LDFLAGS"
2287
2288                 ifelse([$6],,,[
2289                 CPPFLAGS="$cf_test_CPPFLAGS"
2290                 LIBS="-l$3 $7 $cf_save_LIBS"
2291                 AC_TRY_LINK([$1],[$2],[
2292                         CF_VERBOSE(... found $3 library in system)
2293                         cf_cv_find_linkage_$3=yes])
2294                         CPPFLAGS="$cf_save_CPPFLAGS"
2295                         LIBS="$cf_save_LIBS"
2296                         ])
2297
2298                 if test "$cf_cv_find_linkage_$3" != yes ; then
2299                         CF_LIBRARY_PATH(cf_search,$3)
2300                         for cf_cv_library_path_$3 in $cf_search
2301                         do
2302                                 if test -d "$cf_cv_library_path_$3" ; then
2303                                         CF_VERBOSE(... testing $cf_cv_library_path_$3)
2304                                         CPPFLAGS="$cf_test_CPPFLAGS"
2305                                         LIBS="-l$3 $7 $cf_save_LIBS"
2306                                         LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
2307                                         AC_TRY_LINK([$1],[$2],[
2308                                         CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
2309                                         cf_cv_find_linkage_$3=yes
2310                                         cf_cv_library_file_$3="-l$3"
2311                                         break],[
2312                                         CPPFLAGS="$cf_save_CPPFLAGS"
2313                                         LIBS="$cf_save_LIBS"
2314                                         LDFLAGS="$cf_save_LDFLAGS"
2315                                         ])
2316                                 fi
2317                         done
2318                         CPPFLAGS="$cf_save_CPPFLAGS"
2319                         LDFLAGS="$cf_save_LDFLAGS"
2320                 fi
2321
2322         else
2323                 cf_cv_find_linkage_$3=no
2324         fi
2325         ],$7)
2326 ])
2327
2328 LIBS="$cf_save_LIBS"
2329
2330 if test "$cf_cv_find_linkage_$3" = yes ; then
2331 ifelse([$4],,[
2332         CF_ADD_INCDIR($cf_cv_header_path_$3)
2333         CF_ADD_LIBDIR($cf_cv_library_path_$3)
2334         CF_ADD_LIB($3)
2335 ],[$4])
2336 else
2337 ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
2338 fi
2339 ])dnl
2340 dnl ---------------------------------------------------------------------------
2341 dnl CF_FIND_SUB_INCDIR version: 3 updated: 2021/01/01 13:31:04
2342 dnl ------------------
2343 dnl Find an include-directory with the given leaf-name.  This is useful for
2344 dnl example with FreeBSD ports, which use this convention to distinguish
2345 dnl different versions of the same port.
2346 AC_DEFUN([CF_FIND_SUB_INCDIR],[
2347         CF_SUBDIR_PATH(cf_search,$1,include)
2348         for cf_item in $cf_search
2349         do
2350                 case "$cf_item" in
2351                 (*/$1)
2352                         CF_ADD_INCDIR($cf_item)
2353                         ;;
2354                 esac
2355         done
2356 ])dnl
2357 dnl ---------------------------------------------------------------------------
2358 dnl CF_FIND_SUB_LIBDIR version: 3 updated: 2021/01/01 13:31:04
2359 dnl ------------------
2360 dnl Find a library-directory with the given leaf-name.  This is useful for
2361 dnl example with FreeBSD ports, which use this convention to distinguish
2362 dnl different versions of the same port.
2363 AC_DEFUN([CF_FIND_SUB_LIBDIR],[
2364         CF_SUBDIR_PATH(cf_search,$1,lib)
2365         for cf_item in $cf_search
2366         do
2367                 case "$cf_item" in
2368                 (*/$1)
2369                         CF_ADD_LIBDIR($cf_item)
2370                         ;;
2371                 esac
2372         done
2373 ])dnl
2374 dnl ---------------------------------------------------------------------------
2375 dnl CF_FIXUP_ADAFLAGS version: 2 updated: 2015/04/17 21:13:04
2376 dnl -----------------
2377 dnl make ADAFLAGS consistent with CFLAGS
2378 AC_DEFUN([CF_FIXUP_ADAFLAGS],[
2379         AC_MSG_CHECKING(optimization options for ADAFLAGS)
2380         case "$CFLAGS" in
2381         (*-g*)
2382                 CF_ADD_ADAFLAGS(-g)
2383                 ;;
2384         esac
2385         case "$CFLAGS" in
2386         (*-O*)
2387                 cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[[        ]].*//'`
2388                 CF_ADD_ADAFLAGS($cf_O_flag)
2389                 ;;
2390         esac
2391         AC_MSG_RESULT($ADAFLAGS)
2392 ])dnl
2393 dnl ---------------------------------------------------------------------------
2394 dnl CF_FIX_WARNINGS version: 3 updated: 2020/12/31 18:40:20
2395 dnl ---------------
2396 dnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc.  Any of gcc's
2397 dnl "-Werror" flags can interfere with configure-checks.  Those go into
2398 dnl EXTRA_CFLAGS.
2399 dnl
2400 dnl $1 = variable name to repair
2401 define([CF_FIX_WARNINGS],[
2402 if test "$GCC" = yes || test "$GXX" = yes
2403 then
2404         case [$]$1 in
2405         (*-Werror=*)
2406                 CF_VERBOSE(repairing $1: [$]$1)
2407                 cf_temp_flags=
2408                 for cf_temp_scan in [$]$1
2409                 do
2410                         case "x$cf_temp_scan" in
2411                         (x-Werror=*)
2412                                 CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan)
2413                                 ;;
2414                         (*)
2415                                 CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
2416                                 ;;
2417                         esac
2418                 done
2419                 $1="$cf_temp_flags"
2420                 CF_VERBOSE(... fixed [$]$1)
2421                 CF_VERBOSE(... extra $EXTRA_CFLAGS)
2422                 ;;
2423         esac
2424 fi
2425 AC_SUBST(EXTRA_CFLAGS)
2426 ])dnl
2427 dnl ---------------------------------------------------------------------------
2428 dnl CF_FOPEN_BIN_R version: 2 updated: 2019/12/31 08:53:54
2429 dnl --------------
2430 dnl Check if fopen works when the "b" (binary) flag is added to the mode
2431 dnl parameter.  POSIX ignores the "b", which c89 specified.  Some very old
2432 dnl systems do not accept it.
2433 AC_DEFUN([CF_FOPEN_BIN_R],[
2434 AC_CACHE_CHECK(if fopen accepts explicit binary mode,cf_cv_fopen_bin_r,[
2435         AC_TRY_RUN([
2436 #include <stdio.h>
2437 int main(void) {
2438         FILE *fp = fopen("conftest.tmp", "wb");
2439         int rc = 0;
2440         if (fp != 0) {
2441                 int p, q;
2442                 for (p = 0; p < 256; ++p) {
2443                         fputc(p, fp);
2444                 }
2445                 fclose(fp);
2446                 fp = fopen("conftest.tmp", "rb");
2447                 if (fp != 0) {
2448                         for (p = 0; p < 256; ++p) {
2449                                 q = fgetc(fp);
2450                                 if (q != p) {
2451                                         rc = 1;
2452                                         break;
2453                                 }
2454                         }
2455                 } else {
2456                         rc = 1;
2457                 }
2458         } else {
2459                 rc = 1;
2460         }
2461         ${cf_cv_main_return:-return} (rc);
2462 }
2463 ],
2464                 [cf_cv_fopen_bin_r=yes],
2465                 [cf_cv_fopen_bin_r=no],
2466                 [cf_cv_fopen_bin_r=unknown])
2467 ])
2468 test "x$cf_cv_fopen_bin_r" != xno && AC_DEFINE(USE_FOPEN_BIN_R,1,[Define to 1 if fopen accepts explicit binary mode])
2469 ])dnl
2470 dnl ---------------------------------------------------------------------------
2471 dnl CF_FORGET_TOOL version: 1 updated: 2013/04/06 18:03:09
2472 dnl --------------
2473 dnl Forget that we saw the given tool.
2474 AC_DEFUN([CF_FORGET_TOOL],[
2475 unset ac_cv_prog_ac_ct_$1
2476 unset ac_ct_$1
2477 unset $1
2478 ])dnl
2479 dnl ---------------------------------------------------------------------------
2480 dnl CF_FUNC_DLSYM version: 4 updated: 2015/09/12 14:46:44
2481 dnl -------------
2482 dnl Test for dlsym() and related functions, as well as libdl.
2483 dnl
2484 dnl Sets
2485 dnl     $cf_have_dlsym
2486 dnl     $cf_have_libdl
2487 AC_DEFUN([CF_FUNC_DLSYM],[
2488 cf_have_dlsym=no
2489 AC_CHECK_FUNC(dlsym,cf_have_dlsym=yes,[
2490
2491 cf_have_libdl=no
2492 AC_CHECK_LIB(dl,dlsym,[
2493         cf_have_dlsym=yes
2494         cf_have_libdl=yes])])
2495
2496 if test "$cf_have_dlsym" = yes ; then
2497         test "$cf_have_libdl" = yes && { CF_ADD_LIB(dl) }
2498
2499         AC_MSG_CHECKING(whether able to link to dl*() functions)
2500         AC_TRY_LINK([#include <dlfcn.h>],[
2501                 void *obj;
2502                 if ((obj = dlopen("filename", 0)) != 0) {
2503                         if (dlsym(obj, "symbolname") == 0) {
2504                         dlclose(obj);
2505                         }
2506                 }],[
2507                 AC_DEFINE(HAVE_LIBDL,1,[Define to 1 if we have dl library])],[
2508                 AC_MSG_ERROR(Cannot link test program for libdl)])
2509         AC_MSG_RESULT(ok)
2510 else
2511         AC_MSG_ERROR(Cannot find dlsym function)
2512 fi
2513 ])
2514 dnl ---------------------------------------------------------------------------
2515 dnl CF_FUNC_MEMMOVE version: 9 updated: 2017/01/21 11:06:25
2516 dnl ---------------
2517 dnl Check for memmove, or a bcopy that can handle overlapping copy.  If neither
2518 dnl is found, add our own version of memmove to the list of objects.
2519 AC_DEFUN([CF_FUNC_MEMMOVE],
2520 [
2521 AC_CHECK_FUNC(memmove,,[
2522 AC_CHECK_FUNC(bcopy,[
2523         AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[
2524                 AC_TRY_RUN([
2525 int main(void) {
2526         static char data[] = "abcdefghijklmnopqrstuwwxyz";
2527         char temp[40];
2528         bcopy(data, temp, sizeof(data));
2529         bcopy(temp+10, temp, 15);
2530         bcopy(temp+5, temp+15, 10);
2531         ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
2532 }
2533                 ],
2534                 [cf_cv_good_bcopy=yes],
2535                 [cf_cv_good_bcopy=no],
2536                 [cf_cv_good_bcopy=unknown])
2537                 ])
2538         ],[cf_cv_good_bcopy=no])
2539         if test "$cf_cv_good_bcopy" = yes ; then
2540                 AC_DEFINE(USE_OK_BCOPY,1,[Define to 1 to use bcopy when memmove is unavailable])
2541         else
2542                 AC_DEFINE(USE_MY_MEMMOVE,1,[Define to 1 to use replacement function when memmove is unavailable])
2543         fi
2544 ])])dnl
2545 dnl ---------------------------------------------------------------------------
2546 dnl CF_FUNC_NANOSLEEP version: 5 updated: 2017/01/21 11:06:25
2547 dnl -----------------
2548 dnl Check for existence of workable nanosleep() function.  Some systems, e.g.,
2549 dnl AIX 4.x, provide a non-working version.
2550 AC_DEFUN([CF_FUNC_NANOSLEEP],[
2551 AC_CACHE_CHECK(if nanosleep really works,cf_cv_func_nanosleep,[
2552 AC_TRY_RUN([
2553 #include <stdio.h>
2554 #include <errno.h>
2555 #include <time.h>
2556
2557 #ifdef HAVE_SYS_TIME_H
2558 #include <sys/time.h>
2559 #endif
2560
2561 int main(void) {
2562         struct timespec ts1, ts2;
2563         int code;
2564         ts1.tv_sec  = 0;
2565         ts1.tv_nsec = 750000000;
2566         ts2.tv_sec  = 0;
2567         ts2.tv_nsec = 0;
2568         errno = 0;
2569         code = nanosleep(&ts1, &ts2); /* on failure errno is ENOSYS. */
2570         ${cf_cv_main_return:-return}(code != 0);
2571 }
2572 ],
2573         [cf_cv_func_nanosleep=yes],
2574         [cf_cv_func_nanosleep=no],
2575         [cf_cv_func_nanosleep=unknown])])
2576
2577 test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP,1,[Define to 1 if we have nanosleep()])
2578 ])
2579 dnl ---------------------------------------------------------------------------
2580 dnl CF_FUNC_OPENPTY version: 6 updated: 2021/01/01 13:31:04
2581 dnl ---------------
2582 dnl Check for openpty() function, along with <pty.h> header.  It may need the
2583 dnl "util" library as well.
2584 AC_DEFUN([CF_FUNC_OPENPTY],
2585 [
2586 AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no)
2587 AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
2588         cf_save_LIBS="$LIBS"
2589         test "$cf_cv_lib_util" = yes && { CF_ADD_LIB(util) }
2590         for cf_header in pty.h libutil.h util.h
2591         do
2592         AC_TRY_LINK([
2593 #include <$cf_header>
2594 ],[
2595         int x = openpty((int *)0, (int *)0, (char *)0,
2596                                    (struct termios *)0, (struct winsize *)0);
2597 ],[
2598                 cf_cv_func_openpty=$cf_header
2599                 break
2600 ],[
2601                 cf_cv_func_openpty=no
2602 ])
2603         done
2604         LIBS="$cf_save_LIBS"
2605 ])
2606 ])dnl
2607 dnl ---------------------------------------------------------------------------
2608 dnl CF_FUNC_POLL version: 10 updated: 2021/01/04 19:13:57
2609 dnl ------------
2610 dnl See if the poll function really works.  Some platforms have poll(), but
2611 dnl it does not work for terminals or files.
2612 AC_DEFUN([CF_FUNC_POLL],[
2613 tty >/dev/null 2>&1 || { AC_CHECK_FUNCS(posix_openpt) }
2614 AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[
2615 AC_TRY_RUN([
2616 #include <stdlib.h>
2617 #include <stdio.h>
2618 #include <unistd.h>
2619 #include <fcntl.h>
2620 #ifdef HAVE_POLL_H
2621 #include <poll.h>
2622 #else
2623 #include <sys/poll.h>
2624 #endif
2625 int main(void) {
2626         struct pollfd myfds;
2627         int ret;
2628
2629         /* check for Darwin bug with respect to "devices" */
2630         myfds.fd = open("/dev/null", 1);        /* O_WRONLY */
2631         if (myfds.fd < 0)
2632                 myfds.fd = 0;
2633         myfds.events = POLLIN;
2634         myfds.revents = 0;
2635
2636         ret = poll(&myfds, 1, 100);
2637
2638         if (ret < 0 || (myfds.revents & POLLNVAL)) {
2639                 ret = -1;
2640         } else {
2641                 int fd = 0;
2642                 if (!isatty(fd)) {
2643                         fd = open("/dev/tty", 2);       /* O_RDWR */
2644                 }
2645 #ifdef HAVE_POSIX_OPENPT
2646                 if (fd < 0) {
2647                         fd = posix_openpt(O_RDWR);
2648                 }
2649 #endif
2650
2651                 if (fd >= 0) {
2652                         /* also check with standard input */
2653                         myfds.fd = fd;
2654                         myfds.events = POLLIN;
2655                         myfds.revents = 0;
2656                         ret = poll(&myfds, 1, 100);
2657                 } else {
2658                         ret = -1;
2659                 }
2660         }
2661         ${cf_cv_main_return:-return}(ret < 0);
2662 }],
2663         [cf_cv_working_poll=yes],
2664         [cf_cv_working_poll=no],
2665         [cf_cv_working_poll=unknown])])
2666 test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL,1,[Define to 1 if the poll function seems to work])
2667 ])dnl
2668 dnl ---------------------------------------------------------------------------
2669 dnl CF_FUNC_TERMIOS version: 3 updated: 2012/10/06 17:56:13
2670 dnl ---------------
2671 dnl Some old/broken variations define tcgetattr() only as a macro in
2672 dnl termio(s).h
2673 AC_DEFUN([CF_FUNC_TERMIOS],[
2674 AC_REQUIRE([CF_STRUCT_TERMIOS])
2675 AC_CACHE_CHECK(for tcgetattr, cf_cv_have_tcgetattr,[
2676 AC_TRY_LINK([
2677 #include <sys/types.h>
2678 #ifdef HAVE_UNISTD_H
2679 #include <unistd.h>
2680 #endif
2681 #ifdef HAVE_TERMIOS_H
2682 #include <termios.h>
2683 #define TTY struct termios
2684 #else
2685 #ifdef HAVE_TERMIO_H
2686 #include <termio.h>
2687 #define TTY struct termio
2688 #endif
2689 #endif
2690 ],[
2691 TTY foo;
2692 tcgetattr(1, &foo);],
2693 [cf_cv_have_tcgetattr=yes],
2694 [cf_cv_have_tcgetattr=no])])
2695 test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR,1,[Define to 1 if we have tcgetattr])
2696 ])dnl
2697 dnl ---------------------------------------------------------------------------
2698 dnl CF_FUNC_VSSCANF version: 7 updated: 2021/01/01 13:31:04
2699 dnl ---------------
2700 dnl Check for vsscanf() function, which is in c9x but generally not in earlier
2701 dnl versions of C.  It is in the GNU C library, and can often be simulated by
2702 dnl other functions.
2703 AC_DEFUN([CF_FUNC_VSSCANF],
2704 [
2705 AC_CACHE_CHECK(for vsscanf function or workaround,cf_cv_func_vsscanf,[
2706 AC_TRY_LINK([
2707 #include <stdarg.h>
2708 #include <stdio.h>],[
2709         va_list ap;
2710         vsscanf("from", "%d", ap)],[cf_cv_func_vsscanf=vsscanf],[
2711 AC_TRY_LINK([
2712 #include <stdarg.h>
2713 #include <stdio.h>],[
2714         FILE strbuf;
2715         char *str = "from";
2716
2717         strbuf._flag = _IOREAD;
2718         strbuf._ptr = strbuf._base = (unsigned char *) str;
2719         strbuf._cnt = strlen(str);
2720         strbuf._file = _NFILE;
2721         return (vfscanf(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=vfscanf],[
2722 AC_TRY_LINK([
2723 #include <stdarg.h>
2724 #include <stdio.h>],[
2725         FILE strbuf;
2726         char *str = "from";
2727
2728         strbuf._flag = _IOREAD;
2729         strbuf._ptr = strbuf._base = (unsigned char *) str;
2730         strbuf._cnt = strlen(str);
2731         strbuf._file = _NFILE;
2732         return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[
2733 cf_cv_func_vsscanf=no])])])])
2734
2735 case "$cf_cv_func_vsscanf" in
2736 (vsscanf) AC_DEFINE(HAVE_VSSCANF,1,[Define to 1 if we have vsscanf]);;
2737 (vfscanf) AC_DEFINE(HAVE_VFSCANF,1,[Define to 1 if we have vfscanf]);;
2738 (_doscan) AC_DEFINE(HAVE__DOSCAN,1,[Define to 1 if we have _doscan]);;
2739 esac
2740
2741 ])dnl
2742 dnl ---------------------------------------------------------------------------
2743 dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25
2744 dnl -----------------
2745 dnl Test for availability of useful gcc __attribute__ directives to quiet
2746 dnl compiler warnings.  Though useful, not all are supported -- and contrary
2747 dnl to documentation, unrecognized directives cause older compilers to barf.
2748 AC_DEFUN([CF_GCC_ATTRIBUTES],
2749 [AC_REQUIRE([AC_PROG_FGREP])dnl
2750 AC_REQUIRE([CF_C11_NORETURN])dnl
2751
2752 if test "$GCC" = yes || test "$GXX" = yes
2753 then
2754 cat > conftest.i <<EOF
2755 #ifndef GCC_PRINTF
2756 #define GCC_PRINTF 0
2757 #endif
2758 #ifndef GCC_SCANF
2759 #define GCC_SCANF 0
2760 #endif
2761 #ifndef GCC_NORETURN
2762 #define GCC_NORETURN /* nothing */
2763 #endif
2764 #ifndef GCC_UNUSED
2765 #define GCC_UNUSED /* nothing */
2766 #endif
2767 EOF
2768 if test "$GCC" = yes
2769 then
2770         AC_CHECKING([for $CC __attribute__ directives])
2771 cat > "conftest.$ac_ext" <<EOF
2772 #line __oline__ "${as_me:-configure}"
2773 #include "confdefs.h"
2774 #include "conftest.h"
2775 #include "conftest.i"
2776 #if     GCC_PRINTF
2777 #define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
2778 #else
2779 #define GCC_PRINTFLIKE(fmt,var) /*nothing*/
2780 #endif
2781 #if     GCC_SCANF
2782 #define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
2783 #else
2784 #define GCC_SCANFLIKE(fmt,var)  /*nothing*/
2785 #endif
2786 extern void wow(char *,...) GCC_SCANFLIKE(1,2);
2787 extern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2);
2788 extern GCC_NORETURN void foo(void);
2789 int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; }
2790 EOF
2791         cf_printf_attribute=no
2792         cf_scanf_attribute=no
2793         for cf_attribute in scanf printf unused noreturn
2794         do
2795                 CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
2796                 cf_directive="__attribute__(($cf_attribute))"
2797                 echo "checking for $CC $cf_directive" 1>&AC_FD_CC
2798
2799                 case "$cf_attribute" in
2800                 (printf)
2801                         cf_printf_attribute=yes
2802                         cat >conftest.h <<EOF
2803 #define GCC_$cf_ATTRIBUTE 1
2804 EOF
2805                         ;;
2806                 (scanf)
2807                         cf_scanf_attribute=yes
2808                         cat >conftest.h <<EOF
2809 #define GCC_$cf_ATTRIBUTE 1
2810 EOF
2811                         ;;
2812                 (*)
2813                         cat >conftest.h <<EOF
2814 #define GCC_$cf_ATTRIBUTE $cf_directive
2815 EOF
2816                         ;;
2817                 esac
2818
2819                 if AC_TRY_EVAL(ac_compile); then
2820                         test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
2821                         cat conftest.h >>confdefs.h
2822                         case "$cf_attribute" in
2823                         (noreturn)
2824                                 AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
2825                                 ;;
2826                         (printf)
2827                                 cf_value='/* nothing */'
2828                                 if test "$cf_printf_attribute" != no ; then
2829                                         cf_value='__attribute__((format(printf,fmt,var)))'
2830                                         AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
2831                                 fi
2832                                 AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
2833                                 ;;
2834                         (scanf)
2835                                 cf_value='/* nothing */'
2836                                 if test "$cf_scanf_attribute" != no ; then
2837                                         cf_value='__attribute__((format(scanf,fmt,var)))'
2838                                         AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
2839                                 fi
2840                                 AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
2841                                 ;;
2842                         (unused)
2843                                 AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
2844                                 ;;
2845                         esac
2846                 fi
2847         done
2848 else
2849         ${FGREP-fgrep} define conftest.i >>confdefs.h
2850 fi
2851 rm -rf ./conftest*
2852 fi
2853 ])dnl
2854 dnl ---------------------------------------------------------------------------
2855 dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
2856 dnl --------------
2857 dnl Find version of gcc, and (because icc/clang pretend to be gcc without being
2858 dnl compatible), attempt to determine if icc/clang is actually used.
2859 AC_DEFUN([CF_GCC_VERSION],[
2860 AC_REQUIRE([AC_PROG_CC])
2861 GCC_VERSION=none
2862 if test "$GCC" = yes ; then
2863         AC_MSG_CHECKING(version of $CC)
2864         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.]].*//'`"
2865         test -z "$GCC_VERSION" && GCC_VERSION=unknown
2866         AC_MSG_RESULT($GCC_VERSION)
2867 fi
2868 CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
2869 CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
2870 ])dnl
2871 dnl ---------------------------------------------------------------------------
2872 dnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59
2873 dnl ---------------
2874 dnl Check if the compiler supports useful warning options.  There's a few that
2875 dnl we don't use, simply because they're too noisy:
2876 dnl
2877 dnl     -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
2878 dnl     -Winline (usually not worthwhile)
2879 dnl     -Wredundant-decls (system headers make this too noisy)
2880 dnl     -Wtraditional (combines too many unrelated messages, only a few useful)
2881 dnl     -Wwrite-strings (too noisy, but should review occasionally).  This
2882 dnl             is enabled for ncurses using "--enable-const".
2883 dnl     -pedantic
2884 dnl
2885 dnl Parameter:
2886 dnl     $1 is an optional list of gcc warning flags that a particular
2887 dnl             application might want to use, e.g., "no-unused" for
2888 dnl             -Wno-unused
2889 dnl Special:
2890 dnl     If $with_ext_const is "yes", add a check for -Wwrite-strings
2891 dnl
2892 AC_DEFUN([CF_GCC_WARNINGS],
2893 [
2894 AC_REQUIRE([CF_GCC_VERSION])
2895 if test "x$have_x" = xyes; then CF_CONST_X_STRING fi
2896 cat > "conftest.$ac_ext" <<EOF
2897 #line __oline__ "${as_me:-configure}"
2898 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
2899 EOF
2900 if test "$INTEL_COMPILER" = yes
2901 then
2902 # The "-wdXXX" options suppress warnings:
2903 # remark #1419: external declaration in primary source file
2904 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
2905 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
2906 # remark #193: zero used for undefined preprocessing identifier
2907 # remark #593: variable "curs_sb_left_arrow" was set but never used
2908 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
2909 # remark #869: parameter "tw" was never referenced
2910 # remark #981: operands are evaluated in unspecified order
2911 # warning #279: controlling expression is constant
2912
2913         AC_CHECKING([for $CC warning options])
2914         cf_save_CFLAGS="$CFLAGS"
2915         EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
2916         for cf_opt in \
2917                 wd1419 \
2918                 wd1683 \
2919                 wd1684 \
2920                 wd193 \
2921                 wd593 \
2922                 wd279 \
2923                 wd810 \
2924                 wd869 \
2925                 wd981
2926         do
2927                 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
2928                 if AC_TRY_EVAL(ac_compile); then
2929                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
2930                         EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
2931                 fi
2932         done
2933         CFLAGS="$cf_save_CFLAGS"
2934 elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
2935 then
2936         AC_CHECKING([for $CC warning options])
2937         cf_save_CFLAGS="$CFLAGS"
2938         cf_warn_CONST=""
2939         test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
2940         cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
2941         test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
2942         for cf_opt in W Wall \
2943                 Wbad-function-cast \
2944                 Wcast-align \
2945                 Wcast-qual \
2946                 Wdeclaration-after-statement \
2947                 Wextra \
2948                 Winline \
2949                 Wmissing-declarations \
2950                 Wmissing-prototypes \
2951                 Wnested-externs \
2952                 Wpointer-arith \
2953                 Wshadow \
2954                 Wstrict-prototypes \
2955                 Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
2956         do
2957                 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
2958                 if AC_TRY_EVAL(ac_compile); then
2959                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
2960                         case "$cf_opt" in
2961                         (Winline)
2962                                 case "$GCC_VERSION" in
2963                                 ([[34]].*)
2964                                         CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
2965                                         continue;;
2966                                 esac
2967                                 ;;
2968                         (Wpointer-arith)
2969                                 case "$GCC_VERSION" in
2970                                 ([[12]].*)
2971                                         CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
2972                                         continue;;
2973                                 esac
2974                                 ;;
2975                         esac
2976                         EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
2977                 fi
2978         done
2979         CFLAGS="$cf_save_CFLAGS"
2980 fi
2981 rm -rf ./conftest*
2982
2983 AC_SUBST(EXTRA_CFLAGS)
2984 ])dnl
2985 dnl ---------------------------------------------------------------------------
2986 dnl CF_GETOPT_HEADER version: 8 updated: 2021/06/19 19:16:16
2987 dnl ----------------
2988 dnl Check for getopt's variables which are commonly defined in stdlib.h,
2989 dnl unistd.h or (nonstandard) in getopt.h
2990 AC_DEFUN([CF_GETOPT_HEADER],
2991 [
2992 AC_HAVE_HEADERS(unistd.h getopt.h)
2993 AC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[
2994 cf_cv_getopt_header=none
2995 for cf_header in stdio.h stdlib.h unistd.h getopt.h
2996 do
2997 AC_TRY_COMPILE([
2998 #include <$cf_header>],
2999 [int x = optind; char *y = optarg; (void)x; (void)y],
3000 [cf_cv_getopt_header=$cf_header
3001  break])
3002 done
3003 ])
3004 if test "$cf_cv_getopt_header" != none ; then
3005         AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header])
3006 fi
3007 if test "$cf_cv_getopt_header" = getopt.h ; then
3008         AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h])
3009 fi
3010 ])dnl
3011 dnl ---------------------------------------------------------------------------
3012 dnl CF_GNATPREP_OPT_T version: 1 updated: 2014/08/02 18:37:25
3013 dnl -----------------
3014 AC_DEFUN([CF_GNATPREP_OPT_T],[
3015 AC_CACHE_CHECK(if GNATPREP supports -T option,cf_cv_gnatprep_opt_t,[
3016 cf_cv_gnatprep_opt_t=no
3017 gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes
3018 ])
3019 test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS"
3020 AC_SUBST(GNATPREP_OPTS)
3021 ])dnl
3022 dnl ---------------------------------------------------------------------------
3023 dnl CF_GNAT_GENERICS version: 7 updated: 2021/01/01 13:31:04
3024 dnl ----------------
3025 AC_DEFUN([CF_GNAT_GENERICS],
3026 [
3027 AC_REQUIRE([CF_GNAT_VERSION])
3028
3029 AC_MSG_CHECKING(if GNAT supports generics)
3030 case "$cf_cv_gnat_version" in
3031 (3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|[[1-9]][[0-9]].[[0-9]]*|20[[0-9]][[0-9]])
3032         cf_gnat_generics=yes
3033         ;;
3034 (*)
3035         cf_gnat_generics=no
3036         ;;
3037 esac
3038 AC_MSG_RESULT($cf_gnat_generics)
3039
3040 if test "$cf_gnat_generics" = yes
3041 then
3042         cf_compile_generics=generics
3043         cf_generic_objects="\${GENOBJS}"
3044 else
3045         cf_compile_generics=
3046         cf_generic_objects=
3047 fi
3048
3049 AC_SUBST(cf_compile_generics)
3050 AC_SUBST(cf_generic_objects)
3051 ])dnl
3052 dnl ---------------------------------------------------------------------------
3053 dnl CF_GNAT_PROJECTS version: 13 updated: 2021/01/02 17:09:14
3054 dnl ----------------
3055 dnl GNAT projects are configured with ".gpr" project files.
3056 dnl GNAT libraries are a further development, using the project feature.
3057 AC_DEFUN([CF_GNAT_PROJECTS],
3058 [
3059 AC_REQUIRE([CF_GNAT_VERSION])
3060 AC_REQUIRE([CF_DISABLE_GNAT_PROJECTS])
3061
3062 cf_gnat_libraries=no
3063 cf_gnat_projects=no
3064
3065 if test "$enable_gnat_projects" != no ; then
3066 AC_MSG_CHECKING(if GNAT supports project files)
3067 case "$cf_cv_gnat_version" in
3068 (3.[[0-9]]*)
3069         ;;
3070 (*)
3071         case "$cf_cv_system_name" in
3072         (cygwin*|msys*)
3073                 ;;
3074         (*)
3075                 rm -rf ./conftest* ./*~conftest*
3076                 if mkdir conftest.src conftest.bin conftest.lib
3077                 then
3078                         cd conftest.src
3079                         rm -rf ./conftest* ./*~conftest*
3080                         cat >>library.gpr <<CF_EOF
3081 project Library is
3082   Kind := External ("LIB_KIND");
3083   for Library_Name use "ConfTest";
3084   for Object_Dir use ".";
3085   for Library_ALI_Dir use External("LIBRARY_DIR");
3086   for Library_Version use External ("SONAME");
3087   for Library_Kind use Kind;
3088   for Library_Dir use External("BUILD_DIR");
3089   Source_Dir := External ("SOURCE_DIR");
3090   for Source_Dirs use (Source_Dir);
3091 end Library;
3092 CF_EOF
3093                         cat >>confpackage.ads <<CF_EOF
3094 package ConfPackage is
3095    procedure conftest;
3096 end ConfPackage;
3097 CF_EOF
3098                         cat >>confpackage.adb <<CF_EOF
3099 with Text_IO;
3100 package body ConfPackage is
3101    procedure conftest is
3102    begin
3103       Text_IO.Put ("Hello World");
3104       Text_IO.New_Line;
3105    end conftest;
3106 end ConfPackage;
3107 CF_EOF
3108                         if ( "$cf_ada_make" $ADAFLAGS \
3109                                         -Plibrary.gpr \
3110                                         -XBUILD_DIR="`cd ../conftest.bin;pwd`" \
3111                                         -XLIBRARY_DIR="`cd ../conftest.lib;pwd`" \
3112                                         -XSOURCE_DIR="`pwd`" \
3113                                         -XSONAME=libConfTest.so.1 \
3114                                         -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then
3115                                 cf_gnat_projects=yes
3116                         fi
3117                         cd ..
3118                 fi
3119                 if test -f conftest.lib/confpackage.ali
3120                 then
3121                         cf_gnat_libraries=yes
3122                 fi
3123                 rm -rf ./conftest* ./*~conftest*
3124                 ;;
3125         esac
3126         ;;
3127 esac
3128 AC_MSG_RESULT($cf_gnat_projects)
3129 fi # enable_gnat_projects
3130
3131 if test "$cf_gnat_projects" = yes
3132 then
3133         AC_MSG_CHECKING(if GNAT supports libraries)
3134         AC_MSG_RESULT($cf_gnat_libraries)
3135 fi
3136
3137 USE_OLD_MAKERULES=""
3138 USE_GNAT_PROJECTS="#"
3139 USE_GNAT_MAKE_GPR="#"
3140 USE_GNAT_GPRBUILD="#"
3141
3142 if test "$cf_gnat_projects" = yes
3143 then
3144         USE_OLD_MAKERULES="#"
3145         USE_GNAT_PROJECTS=""
3146         if test "$cf_cv_VERSION_GPRBUILD" != no
3147         then
3148                 USE_GNAT_GPRBUILD=""
3149         elif test "$cf_cv_VERSION_GNATMAKE" != no
3150         then
3151                 USE_GNAT_MAKE_GPR=""
3152         else
3153                 AC_MSG_WARN(use old makefile rules since tools are missing)
3154         fi
3155 fi
3156
3157 if test "$cf_gnat_libraries" = yes
3158 then
3159         USE_GNAT_LIBRARIES=""
3160 else
3161         USE_GNAT_LIBRARIES="#"
3162 fi
3163
3164 AC_SUBST(USE_OLD_MAKERULES)
3165 AC_SUBST(USE_GNAT_PROJECTS)
3166 AC_SUBST(USE_GNAT_LIBRARIES)
3167 AC_SUBST(USE_GNAT_MAKE_GPR)
3168 AC_SUBST(USE_GNAT_GPRBUILD)
3169 ])dnl
3170 dnl ---------------------------------------------------------------------------
3171 dnl CF_GNAT_SIGINT version: 2 updated: 2021/01/01 13:31:04
3172 dnl --------------
3173 dnl Check if gnat supports SIGINT, and presumably tasking.  For the latter, it
3174 dnl is noted that gnat may compile a tasking unit even for configurations which
3175 dnl fail at runtime.
3176 AC_DEFUN([CF_GNAT_SIGINT],[
3177 AC_CACHE_CHECK(if GNAT supports SIGINT,cf_cv_gnat_sigint,[
3178 CF_GNAT_TRY_LINK([with Ada.Interrupts.Names;
3179
3180 package ConfTest is
3181
3182    pragma Warnings (Off);  --  the next pragma exists since 3.11p
3183    pragma Unreserve_All_Interrupts;
3184    pragma Warnings (On);
3185
3186    protected Process is
3187       procedure Stop;
3188       function Continue return Boolean;
3189       pragma Attach_Handler (Stop, Ada.Interrupts.Names.SIGINT);
3190    private
3191       Done : Boolean := False;
3192    end Process;
3193
3194 end ConfTest;],
3195 [package body ConfTest is
3196    protected body Process is
3197       procedure Stop is
3198       begin
3199          Done := True;
3200       end Stop;
3201       function Continue return Boolean is
3202       begin
3203          return not Done;
3204       end Continue;
3205    end Process;
3206 end ConfTest;],
3207         [cf_cv_gnat_sigint=yes],
3208         [cf_cv_gnat_sigint=no])])
3209
3210 if test "$cf_cv_gnat_sigint" = yes ; then
3211         USE_GNAT_SIGINT=""
3212 else
3213         USE_GNAT_SIGINT="#"
3214 fi
3215 AC_SUBST(USE_GNAT_SIGINT)
3216 ])dnl
3217 dnl ---------------------------------------------------------------------------
3218 dnl CF_GNAT_TRY_LINK version: 4 updated: 2021/01/01 13:31:04
3219 dnl ----------------
3220 dnl Verify that a test program compiles/links with GNAT.
3221 dnl $cf_ada_make is set to the program that compiles/links
3222 dnl $ADAFLAGS may be set to the GNAT flags.
3223 dnl
3224 dnl $1 is the text of the spec
3225 dnl $2 is the text of the body
3226 dnl $3 is the shell command to execute if successful
3227 dnl $4 is the shell command to execute if not successful
3228 AC_DEFUN([CF_GNAT_TRY_LINK],
3229 [
3230 rm -rf ./conftest* ./*~conftest*
3231 cat >>conftest.ads <<CF_EOF
3232 $1
3233 CF_EOF
3234 cat >>conftest.adb <<CF_EOF
3235 $2
3236 CF_EOF
3237 if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
3238 ifelse($3,,      :,[      $3])
3239 ifelse($4,,,[else
3240    $4])
3241 fi
3242 rm -rf ./conftest* ./*~conftest*
3243 ])dnl
3244 dnl ---------------------------------------------------------------------------
3245 dnl CF_GNAT_TRY_RUN version: 6 updated: 2021/01/01 13:31:04
3246 dnl ---------------
3247 dnl Verify that a test program compiles and runs with GNAT
3248 dnl $cf_ada_make is set to the program that compiles/links
3249 dnl $ADAFLAGS may be set to the GNAT flags.
3250 dnl
3251 dnl $1 is the text of the spec
3252 dnl $2 is the text of the body
3253 dnl $3 is the shell command to execute if successful
3254 dnl $4 is the shell command to execute if not successful
3255 AC_DEFUN([CF_GNAT_TRY_RUN],
3256 [
3257 rm -rf ./conftest* ./*~conftest*
3258 cat >>conftest.ads <<CF_EOF
3259 $1
3260 CF_EOF
3261 cat >>conftest.adb <<CF_EOF
3262 $2
3263 CF_EOF
3264 if ( "$cf_ada_make" $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
3265    if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then
3266 ifelse($3,,      :,[      $3])
3267 ifelse($4,,,[   else
3268       $4])
3269    fi
3270 ifelse($4,,,[else
3271    $4])
3272 fi
3273 rm -rf ./conftest* ./*~conftest*
3274 ])dnl
3275 dnl ---------------------------------------------------------------------------
3276 dnl CF_GNAT_VERSION version: 22 updated: 2019/12/31 08:53:54
3277 dnl ---------------
3278 dnl $1 = cache variable to update
3279 dnl $2 = program name
3280 dnl Verify version of GNAT or related tool
3281 AC_DEFUN([CF_GNAT_VERSION],
3282 [
3283 AC_CACHE_CHECK(for ifelse($2,,gnat,$2) version, cf_cv_gnat_version,[
3284 cf_cv_gnat_version=`ifelse($2,,${cf_ada_make:-gnatmake},$2) --version 2>&1 | \
3285         grep '[[0-9]].[[0-9]][[0-9]]*' |\
3286         sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'`
3287 ])
3288 test -z "$cf_cv_gnat_version" && cf_cv_gnat_version=no
3289 ifelse($1,,,[eval $1=$cf_cv_gnat_version; unset cf_cv_gnat_version])
3290 ])dnl
3291 dnl ---------------------------------------------------------------------------
3292 dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
3293 dnl -------------
3294 dnl Check if we must define _GNU_SOURCE to get a reasonable value for
3295 dnl _XOPEN_SOURCE, upon which many POSIX definitions depend.  This is a defect
3296 dnl (or misfeature) of glibc2, which breaks portability of many applications,
3297 dnl since it is interwoven with GNU extensions.
3298 dnl
3299 dnl Well, yes we could work around it...
3300 dnl
3301 dnl Parameters:
3302 dnl     $1 is the nominal value for _XOPEN_SOURCE
3303 AC_DEFUN([CF_GNU_SOURCE],
3304 [
3305 cf_gnu_xopen_source=ifelse($1,,500,$1)
3306
3307 AC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
3308 AC_TRY_COMPILE([#include <sys/types.h>],[
3309         #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
3310                 return 0;
3311         #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
3312                 return 0;
3313         #else
3314         #       error not GNU C library
3315         #endif],
3316         [cf_cv_gnu_library=yes],
3317         [cf_cv_gnu_library=no])
3318 ])
3319
3320 if test x$cf_cv_gnu_library = xyes; then
3321
3322         # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
3323         # was changed to help a little.  newlib incorporated the change about 4
3324         # years later.
3325         AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
3326                 cf_save="$CPPFLAGS"
3327                 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
3328                 AC_TRY_COMPILE([#include <sys/types.h>],[
3329                         #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
3330                                 return 0;
3331                         #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
3332                                 return 0;
3333                         #else
3334                         #       error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
3335                         #endif],
3336                         [cf_cv_gnu_library_219=yes],
3337                         [cf_cv_gnu_library_219=no])
3338                 CPPFLAGS="$cf_save"
3339         ])
3340
3341         if test "x$cf_cv_gnu_library_219" = xyes; then
3342                 cf_save="$CPPFLAGS"
3343                 AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
3344                         CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
3345                         AC_TRY_COMPILE([
3346                                 #include <limits.h>
3347                                 #include <sys/types.h>
3348                                 ],[
3349                                 #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
3350                                         return 0;
3351                                 #else
3352                                 #       error GNU C library is too old
3353                                 #endif],
3354                                 [cf_cv_gnu_dftsrc_219=yes],
3355                                 [cf_cv_gnu_dftsrc_219=no])
3356                         ])
3357                 test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
3358         else
3359                 cf_cv_gnu_dftsrc_219=maybe
3360         fi
3361
3362         if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
3363
3364                 AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
3365                 AC_TRY_COMPILE([#include <sys/types.h>],[
3366                         #ifndef _XOPEN_SOURCE
3367                         #error  expected _XOPEN_SOURCE to be defined
3368                         #endif],
3369                         [cf_cv_gnu_source=no],
3370                         [cf_save="$CPPFLAGS"
3371                          CF_ADD_CFLAGS(-D_GNU_SOURCE)
3372                          AC_TRY_COMPILE([#include <sys/types.h>],[
3373                                 #ifdef _XOPEN_SOURCE
3374                                 #error  expected _XOPEN_SOURCE to be undefined
3375                                 #endif],
3376                                 [cf_cv_gnu_source=no],
3377                                 [cf_cv_gnu_source=yes])
3378                         CPPFLAGS="$cf_save"
3379                         ])
3380                 ])
3381
3382                 if test "$cf_cv_gnu_source" = yes
3383                 then
3384                 AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
3385                         CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
3386                         AC_TRY_COMPILE([#include <sys/types.h>],[
3387                                 #ifdef _DEFAULT_SOURCE
3388                                 #error  expected _DEFAULT_SOURCE to be undefined
3389                                 #endif],
3390                                 [cf_cv_default_source=no],
3391                                 [cf_cv_default_source=yes])
3392                         ])
3393                         if test "$cf_cv_default_source" = yes
3394                         then
3395                                 CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
3396                         fi
3397                 fi
3398         fi
3399
3400 fi
3401 ])dnl
3402 dnl ---------------------------------------------------------------------------
3403 dnl CF_GPP_LIBRARY version: 13 updated: 2021/01/01 13:31:04
3404 dnl --------------
3405 dnl If we're trying to use g++, test if libg++ is installed (a rather common
3406 dnl problem :-).  If we have the compiler but no library, we'll be able to
3407 dnl configure, but won't be able to build the c++ demo program.
3408 AC_DEFUN([CF_GPP_LIBRARY],
3409 [
3410 cf_cxx_library=unknown
3411 case "$cf_cv_system_name" in
3412 (os2*)
3413         cf_gpp_libname=gpp
3414         ;;
3415 (*)
3416         cf_gpp_libname=g++
3417         ;;
3418 esac
3419 if test "$GXX" = yes; then
3420         AC_MSG_CHECKING([for lib$cf_gpp_libname])
3421         cf_save="$LIBS"
3422         CF_ADD_LIB($cf_gpp_libname)
3423         AC_TRY_LINK([
3424 #include <$cf_gpp_libname/builtin.h>
3425         ],
3426         [two_arg_error_handler_t foo2 = lib_error_handler],
3427         [cf_cxx_library=yes
3428          CF_ADD_LIB($cf_gpp_libname,CXXLIBS)
3429          if test "$cf_gpp_libname" = cpp ; then
3430             AC_DEFINE(HAVE_GPP_BUILTIN_H,1,[Define to 1 if we have gpp builtin.h])
3431          else
3432             AC_DEFINE(HAVE_GXX_BUILTIN_H,1,[Define to 1 if we have g++ builtin.h])
3433          fi],
3434         [AC_TRY_LINK([
3435 #include <builtin.h>
3436         ],
3437         [two_arg_error_handler_t foo2 = lib_error_handler],
3438         [cf_cxx_library=yes
3439          CF_ADD_LIB($cf_gpp_libname,CXXLIBS)
3440          AC_DEFINE(HAVE_BUILTIN_H,1,[Define to 1 if we have builtin.h])],
3441         [cf_cxx_library=no])])
3442         LIBS="$cf_save"
3443         AC_MSG_RESULT($cf_cxx_library)
3444 fi
3445 ])dnl
3446 dnl ---------------------------------------------------------------------------
3447 dnl CF_GXX_VERSION version: 8 updated: 2017/02/11 14:48:57
3448 dnl --------------
3449 dnl Check for version of g++
3450 AC_DEFUN([CF_GXX_VERSION],[
3451 AC_REQUIRE([AC_PROG_CPP])
3452 GXX_VERSION=none
3453 if test "$GXX" = yes; then
3454         AC_MSG_CHECKING(version of ${CXX:-g++})
3455         GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
3456         if test -z "$GXX_VERSION"
3457         then
3458                 GXX_VERSION=unknown
3459                 GXX=no
3460         fi
3461         AC_MSG_RESULT($GXX_VERSION)
3462 fi
3463 ])dnl
3464 dnl ---------------------------------------------------------------------------
3465 dnl CF_GXX_WARNINGS version: 11 updated: 2021/01/08 16:50:55
3466 dnl ---------------
3467 dnl Check if the compiler supports useful warning options.
3468 dnl
3469 dnl Most of gcc's options apply to g++, except:
3470 dnl     -Wbad-function-cast
3471 dnl     -Wmissing-declarations
3472 dnl     -Wnested-externs
3473 dnl
3474 dnl Omit a few (for now):
3475 dnl     -Winline
3476 dnl
3477 dnl Parameter:
3478 dnl     $1 is an optional list of g++ warning flags that a particular
3479 dnl             application might want to use, e.g., "no-unused" for
3480 dnl             -Wno-unused
3481 dnl Special:
3482 dnl     If $with_ext_const is "yes", add a check for -Wwrite-strings
3483 dnl
3484 AC_DEFUN([CF_GXX_WARNINGS],
3485 [
3486
3487 CF_INTEL_COMPILER(GXX,INTEL_CPLUSPLUS,CXXFLAGS)
3488 CF_CLANG_COMPILER(GXX,CLANG_CPLUSPLUS,CXXFLAGS)
3489
3490 AC_REQUIRE([CF_GXX_VERSION])
3491
3492 AC_LANG_SAVE
3493 AC_LANG_CPLUSPLUS
3494
3495 cat > conftest.$ac_ext <<EOF
3496 #line __oline__ "configure"
3497 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
3498 EOF
3499
3500 if test "$INTEL_CPLUSPLUS" = yes
3501 then
3502 # The "-wdXXX" options suppress warnings:
3503 # remark #1419: external declaration in primary source file
3504 # remark #1682: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
3505 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
3506 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
3507 # remark #193: zero used for undefined preprocessing identifier
3508 # remark #593: variable "curs_sb_left_arrow" was set but never used
3509 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
3510 # remark #869: parameter "tw" was never referenced
3511 # remark #981: operands are evaluated in unspecified order
3512 # warning #269: invalid format string conversion
3513
3514         AC_CHECKING([for $CC warning options])
3515         cf_save_CXXFLAGS="$CXXFLAGS"
3516         EXTRA_CXXFLAGS="-Wall"
3517         for cf_opt in \
3518                 wd1419 \
3519                 wd1682 \
3520                 wd1683 \
3521                 wd1684 \
3522                 wd193 \
3523                 wd279 \
3524                 wd593 \
3525                 wd810 \
3526                 wd869 \
3527                 wd981
3528         do
3529                 CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt"
3530                 if AC_TRY_EVAL(ac_compile); then
3531                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3532                         EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
3533                 fi
3534         done
3535         CXXFLAGS="$cf_save_CXXFLAGS"
3536
3537 elif test "$GXX" = yes
3538 then
3539         AC_CHECKING([for $CXX warning options])
3540         cf_save_CXXFLAGS="$CXXFLAGS"
3541         EXTRA_CXXFLAGS="-W -Wall"
3542         cf_gxx_extra_warnings=""
3543         test "$with_ext_const" = yes && cf_gxx_extra_warnings="Wwrite-strings"
3544         case "$GXX_VERSION" in
3545         ([[1-2]].*)
3546                 ;;
3547         (*)
3548                 cf_gxx_extra_warnings="$cf_gxx_extra_warnings Weffc++"
3549                 ;;
3550         esac
3551         for cf_opt in \
3552                 Wabi \
3553                 fabi-version=0 \
3554                 Wextra \
3555                 Wignored-qualifiers \
3556                 Wlogical-op \
3557                 Woverloaded-virtual \
3558                 Wsign-promo \
3559                 Wsynth \
3560                 Wold-style-cast \
3561                 Wcast-align \
3562                 Wcast-qual \
3563                 Wpointer-arith \
3564                 Wshadow \
3565                 Wundef $cf_gxx_extra_warnings $1
3566         do
3567                 CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt"
3568                 if AC_TRY_EVAL(ac_compile); then
3569                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
3570                         EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
3571                 else
3572                         test -n "$verbose" && AC_MSG_RESULT(... no -$cf_opt)
3573                 fi
3574         done
3575         CXXFLAGS="$cf_save_CXXFLAGS"
3576 fi
3577
3578 rm -rf ./conftest*
3579 AC_LANG_RESTORE
3580 AC_SUBST(EXTRA_CXXFLAGS)
3581 ])dnl
3582 dnl ---------------------------------------------------------------------------
3583 dnl CF_HASHED_DB version: 7 updated: 2015/04/18 08:56:57
3584 dnl ------------
3585 dnl Look for an instance of the Berkeley hashed database.
3586 dnl
3587 dnl $1 = optional parameter, to specify install-prefix for the database.
3588 AC_DEFUN([CF_HASHED_DB],
3589 [
3590 ifelse([$1],,,[
3591 case $1 in
3592 (yes|*able*)
3593         ;;
3594 (*)
3595         if test -d "$1" ; then
3596                 CF_ADD_INCDIR($1/include)
3597                 CF_ADD_LIBDIR($1/lib)
3598         else
3599                 case "$1" in
3600                 (./*|../*|/*)
3601                         AC_MSG_WARN(no such directory $1)
3602                         ;;
3603                 (*)
3604                         CF_FIND_SUB_INCDIR($1)
3605                         CF_FIND_SUB_LIBDIR($1)
3606                         ;;
3607                 esac
3608         fi
3609 esac
3610 ])
3611 AC_CHECK_HEADER(db.h,[
3612 CF_HASHED_DB_VERSION
3613 if test "$cf_cv_hashed_db_version" = unknown ; then
3614         AC_MSG_ERROR(Cannot determine version of db)
3615 else
3616         CF_HASHED_DB_LIBS
3617         if test "$cf_cv_hashed_db_libs" = unknown ; then
3618                 AC_MSG_ERROR(Cannot determine library for db)
3619         elif test "$cf_cv_hashed_db_libs" != default ; then
3620                 CF_ADD_LIB($cf_cv_hashed_db_libs)
3621         fi
3622 fi
3623 ],[
3624         AC_MSG_ERROR(Cannot find db.h)
3625 ])
3626 ])dnl
3627 dnl ---------------------------------------------------------------------------
3628 dnl CF_HASHED_DB_LIBS version: 10 updated: 2021/01/02 17:09:14
3629 dnl -----------------
3630 dnl Given that we have the header and version for hashed database, find the
3631 dnl library information.
3632 AC_DEFUN([CF_HASHED_DB_LIBS],
3633 [
3634 AC_CACHE_CHECK(for db libraries, cf_cv_hashed_db_libs,[
3635 cf_cv_hashed_db_libs=unknown
3636 for cf_db_libs in "" db$cf_cv_hashed_db_version db-$cf_cv_hashed_db_version db ''
3637 do
3638         cf_save_libs="$LIBS"
3639         if test -n "$cf_db_libs"; then
3640                 CF_ADD_LIB($cf_db_libs)
3641         fi
3642         CF_MSG_LOG(checking for library $cf_db_libs)
3643         AC_TRY_LINK([
3644 $ac_includes_default
3645 #include <db.h>
3646 ],[
3647         char *path = "/tmp/foo";
3648 #ifdef DB_VERSION_MAJOR
3649 #if DB_VERSION_MAJOR >= 4
3650         DB *result = 0;
3651         db_create(&result, NULL, 0);
3652         result->open(result,
3653                 NULL,
3654                 path,
3655                 path,
3656                 DB_HASH,
3657                 DB_CREATE,
3658                 0644);
3659 #elif DB_VERSION_MAJOR >= 3
3660         DB *result = 0;
3661         db_create(&result, NULL, 0);
3662         result->open(result,
3663                 path,
3664                 path,
3665                 DB_HASH,
3666                 DB_CREATE,
3667                 0644);
3668 #elif DB_VERSION_MAJOR >= 2
3669         DB *result = 0;
3670         db_open(path,
3671                 DB_HASH,
3672                 DB_CREATE,
3673                 0644,
3674                 (DB_ENV *) 0,
3675                 (DB_INFO *) 0,
3676                 &result);
3677 #endif /* DB_VERSION_MAJOR */
3678 #else
3679         DB *result = dbopen(path,
3680                      2,
3681                      0644,
3682                      DB_HASH,
3683                      0);
3684 #endif
3685         ${cf_cv_main_return:-return}(result != 0)
3686 ],[
3687         if test -n "$cf_db_libs" ; then
3688                 cf_cv_hashed_db_libs=$cf_db_libs
3689         else
3690                 cf_cv_hashed_db_libs=default
3691         fi
3692         LIBS="$cf_save_libs"
3693         break
3694 ])
3695         LIBS="$cf_save_libs"
3696 done
3697 ])
3698 ])dnl
3699 dnl ---------------------------------------------------------------------------
3700 dnl CF_HASHED_DB_VERSION version: 4 updated: 2014/04/12 16:47:01
3701 dnl --------------------
3702 dnl Given that we have the header file for hashed database, find the version
3703 dnl information.
3704 AC_DEFUN([CF_HASHED_DB_VERSION],
3705 [
3706 AC_CACHE_CHECK(for version of db, cf_cv_hashed_db_version,[
3707 cf_cv_hashed_db_version=unknown
3708
3709 for cf_db_version in 1 2 3 4 5 6
3710 do
3711         CF_MSG_LOG(checking for db version $cf_db_version)
3712         AC_TRY_COMPILE([
3713 $ac_includes_default
3714 #include <db.h>
3715
3716 #ifdef DB_VERSION_MAJOR
3717         /* db2 (DB_VERSION_MAJOR=2) has also DB_VERSION_MINOR, tested with 7 */
3718 #if $cf_db_version == DB_VERSION_MAJOR
3719         /* ok */
3720 #else
3721         make an error
3722 #endif
3723 #else
3724 #if $cf_db_version == 1
3725         /* ok: assuming this is DB 1.8.5 */
3726 #else
3727         make an error
3728 #endif
3729 #endif
3730 ],[DBT *foo = 0],[
3731         cf_cv_hashed_db_version=$cf_db_version
3732         break
3733         ])
3734 done
3735 ])
3736 ])dnl
3737 dnl ---------------------------------------------------------------------------
3738 dnl CF_HEADER_PATH version: 15 updated: 2021/01/01 13:31:04
3739 dnl --------------
3740 dnl Construct a search-list of directories for a nonstandard header-file
3741 dnl
3742 dnl Parameters
3743 dnl     $1 = the variable to return as result
3744 dnl     $2 = the package name
3745 AC_DEFUN([CF_HEADER_PATH],
3746 [
3747 $1=
3748
3749 # collect the current set of include-directories from compiler flags
3750 cf_header_path_list=""
3751 if test -n "${CFLAGS}${CPPFLAGS}" ; then
3752         for cf_header_path in $CPPFLAGS $CFLAGS
3753         do
3754                 case "$cf_header_path" in
3755                 (-I*)
3756                         cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
3757                         CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE)
3758                         cf_header_path_list="$cf_header_path_list [$]$1"
3759                         ;;
3760                 esac
3761         done
3762 fi
3763
3764 # add the variations for the package we are looking for
3765 CF_SUBDIR_PATH($1,$2,include)
3766
3767 test "$includedir" != NONE && \
3768 test "$includedir" != "/usr/include" && \
3769 test -d "$includedir" && {
3770         test -d "$includedir" &&    $1="[$]$1 $includedir"
3771         test -d "$includedir/$2" && $1="[$]$1 $includedir/$2"
3772 }
3773
3774 test "$oldincludedir" != NONE && \
3775 test "$oldincludedir" != "/usr/include" && \
3776 test -d "$oldincludedir" && {
3777         test -d "$oldincludedir"    && $1="[$]$1 $oldincludedir"
3778         test -d "$oldincludedir/$2" && $1="[$]$1 $oldincludedir/$2"
3779 }
3780
3781 $1="[$]$1 $cf_header_path_list"
3782 ])dnl
3783 dnl ---------------------------------------------------------------------------
3784 dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54
3785 dnl ---------------
3786 dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
3787 AC_DEFUN([CF_HELP_MESSAGE],
3788 [CF_ACVERSION_CHECK(2.53,[],[
3789 AC_DIVERT_HELP($1)])dnl
3790 ])dnl
3791 dnl ---------------------------------------------------------------------------
3792 dnl CF_INCLUDE_DIRS version: 10 updated: 2014/09/19 20:58:42
3793 dnl ---------------
3794 dnl Construct the list of include-options according to whether we're building
3795 dnl in the source directory or using '--srcdir=DIR' option.
3796 AC_DEFUN([CF_INCLUDE_DIRS],
3797 [
3798 if test "$srcdir" != "."; then
3799         CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
3800 fi
3801 CPPFLAGS="-I../include $CPPFLAGS"
3802 if test "$srcdir" != "."; then
3803         CPPFLAGS="-I\${srcdir} $CPPFLAGS"
3804 fi
3805 CPPFLAGS="-I. $CPPFLAGS"
3806 AC_SUBST(CPPFLAGS)
3807 ])dnl
3808 dnl ---------------------------------------------------------------------------
3809 dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21
3810 dnl ---------------
3811 dnl prompt for/fill-in useful install-program options
3812 AC_DEFUN([CF_INSTALL_OPTS],
3813 [
3814 CF_INSTALL_OPT_S
3815 CF_INSTALL_OPT_P
3816 CF_INSTALL_OPT_O
3817 ])dnl
3818 dnl ---------------------------------------------------------------------------
3819 dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42
3820 dnl ----------------
3821 dnl Almost all "install" programs default to the current user's ownership.
3822 dnl Almost - MINIX is an exception.
3823 AC_DEFUN([CF_INSTALL_OPT_O],
3824 [
3825 AC_MSG_CHECKING(if install needs to be told about ownership)
3826 case `$ac_config_guess` in
3827 (*minix)
3828         with_install_o=yes
3829         ;;
3830 (*)
3831         with_install_o=no
3832         ;;
3833 esac
3834
3835 AC_MSG_RESULT($with_install_o)
3836 if test "x$with_install_o" = xyes
3837 then
3838         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'`"
3839 else
3840         INSTALL_OPT_O=
3841 fi
3842
3843 AC_SUBST(INSTALL_OPT_O)
3844 ])dnl
3845 dnl ---------------------------------------------------------------------------
3846 dnl CF_INSTALL_OPT_P version: 3 updated: 2021/01/01 13:31:04
3847 dnl ----------------
3848 dnl Some install-programs accept a "-p" option to preserve file modification
3849 dnl timestamps.  That can be useful as an install option, as well as a way to
3850 dnl avoid the need for ranlib after copying a static archive.
3851 AC_DEFUN([CF_INSTALL_OPT_P],
3852 [
3853 : "${INSTALL:=install}"
3854 AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[
3855         rm -rf ./conftest*
3856         date >conftest.in
3857         mkdir conftest.out
3858         sleep 3
3859         if $INSTALL -p conftest.in conftest.out 2>/dev/null
3860         then
3861                 if test -f conftest.out/conftest.in
3862                 then
3863                         test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \
3864                         test conftest.out/conftest.in -nt conftest.in 2>conftest.err
3865                         if test -s conftest.err
3866                         then
3867                                 cf_cv_install_p=no
3868                         else
3869                                 cf_cv_install_p=yes
3870                         fi
3871                 else
3872                         cf_cv_install_p=no
3873                 fi
3874         else
3875                 cf_cv_install_p=no
3876         fi
3877         rm -rf ./conftest*
3878 ])
3879 ])dnl
3880 dnl ---------------------------------------------------------------------------
3881 dnl CF_INSTALL_OPT_S version: 3 updated: 2021/01/05 19:23:48
3882 dnl ----------------
3883 dnl By default, we should strip executables which are installed, but leave the
3884 dnl ability to suppress that for unit-testing.
3885 AC_DEFUN([CF_INSTALL_OPT_S],
3886 [
3887 AC_MSG_CHECKING(if you want to install stripped executables)
3888 CF_ARG_DISABLE(stripping,
3889         [  --disable-stripping     do not strip (debug info) installed executables],
3890         [enable_stripping=no],
3891         [enable_stripping=yes])
3892 AC_MSG_RESULT($enable_stripping)
3893
3894 if test "$enable_stripping" = yes
3895 then
3896         INSTALL_OPT_S="-s"
3897 else
3898         INSTALL_OPT_S=
3899 fi
3900 AC_SUBST(INSTALL_OPT_S)
3901 ])dnl
3902 dnl ---------------------------------------------------------------------------
3903 dnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59
3904 dnl -----------------
3905 dnl Check if the given compiler is really the Intel compiler for Linux.  It
3906 dnl tries to imitate gcc, but does not return an error when it finds a mismatch
3907 dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
3908 dnl
3909 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
3910 dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
3911 dnl the wrappers for gcc and g++ warnings.
3912 dnl
3913 dnl $1 = GCC (default) or GXX
3914 dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
3915 dnl $3 = CFLAGS (default) or CXXFLAGS
3916 AC_DEFUN([CF_INTEL_COMPILER],[
3917 AC_REQUIRE([AC_CANONICAL_HOST])
3918 ifelse([$2],,INTEL_COMPILER,[$2])=no
3919
3920 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
3921         case "$host_os" in
3922         (linux*|gnu*)
3923                 AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
3924                 cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
3925                 ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
3926                 AC_TRY_COMPILE([],[
3927 #ifdef __INTEL_COMPILER
3928 #else
3929 make an error
3930 #endif
3931 ],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
3932 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
3933 ],[])
3934                 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
3935                 AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
3936                 ;;
3937         esac
3938 fi
3939 ])dnl
3940 dnl ---------------------------------------------------------------------------
3941 dnl CF_ISASCII version: 4 updated: 2012/10/06 17:56:13
3942 dnl ----------
3943 dnl Check if we have either a function or macro for 'isascii()'.
3944 AC_DEFUN([CF_ISASCII],
3945 [
3946 AC_MSG_CHECKING(for isascii)
3947 AC_CACHE_VAL(cf_cv_have_isascii,[
3948         AC_TRY_LINK([#include <ctype.h>],[int x = isascii(' ')],
3949         [cf_cv_have_isascii=yes],
3950         [cf_cv_have_isascii=no])
3951 ])dnl
3952 AC_MSG_RESULT($cf_cv_have_isascii)
3953 test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII,1,[Define to 1 if we have isascii()])
3954 ])dnl
3955 dnl ---------------------------------------------------------------------------
3956 dnl CF_LARGEFILE version: 12 updated: 2020/03/19 20:23:48
3957 dnl ------------
3958 dnl Add checks for large file support.
3959 AC_DEFUN([CF_LARGEFILE],[
3960 ifdef([AC_FUNC_FSEEKO],[
3961         AC_SYS_LARGEFILE
3962         if test "$enable_largefile" != no ; then
3963         AC_FUNC_FSEEKO
3964
3965         # Normally we would collect these definitions in the config.h,
3966         # but (like _XOPEN_SOURCE), some environments rely on having these
3967         # defined before any of the system headers are included.  Another
3968         # case comes up with C++, e.g., on AIX the compiler compiles the
3969         # header files by themselves before looking at the body files it is
3970         # told to compile.  For ncurses, those header files do not include
3971         # the config.h
3972         if test "$ac_cv_sys_large_files" != no
3973         then
3974                 CF_APPEND_TEXT(CPPFLAGS,-D_LARGE_FILES)
3975         fi
3976         if test "$ac_cv_sys_largefile_source" != no
3977         then
3978                 CF_APPEND_TEXT(CPPFLAGS,-D_LARGEFILE_SOURCE)
3979         fi
3980         if test "$ac_cv_sys_file_offset_bits" != no
3981         then
3982                 CF_APPEND_TEXT(CPPFLAGS,-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits)
3983         fi
3984
3985         AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[
3986                 AC_TRY_COMPILE([
3987 #pragma GCC diagnostic error "-Wincompatible-pointer-types"
3988 #include <sys/types.h>
3989 #include <dirent.h>
3990                 ],[
3991                 /* if transitional largefile support is setup, this is true */
3992                 extern struct dirent64 * readdir(DIR *);
3993                 struct dirent64 *x = readdir((DIR *)0);
3994                 struct dirent *y = readdir((DIR *)0);
3995                 int z = x - y;
3996                 (void)z;
3997                 ],
3998                 [cf_cv_struct_dirent64=yes],
3999                 [cf_cv_struct_dirent64=no])
4000         ])
4001         test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Define to 1 if we have struct dirent64])
4002         fi
4003 ])
4004 ])
4005 dnl ---------------------------------------------------------------------------
4006 dnl CF_LDFLAGS_STATIC version: 14 updated: 2021/01/02 17:09:14
4007 dnl -----------------
4008 dnl Check for compiler/linker flags used to temporarily force usage of static
4009 dnl libraries.  This depends on the compiler and platform.  Use this to help
4010 dnl ensure that the linker picks up a given library based on its position in
4011 dnl the list of linker options and libraries.
4012 AC_DEFUN([CF_LDFLAGS_STATIC],[
4013
4014 if test "$GCC" = yes ; then
4015         case "$cf_cv_system_name" in
4016         (OS/2*|os2*|aix[[4]]*|solaris2.1[[0-9]]|darwin*)
4017                 LDFLAGS_STATIC=
4018                 LDFLAGS_SHARED=
4019                 ;;
4020         (*)     # normally, except when broken
4021                 LDFLAGS_STATIC=-static
4022                 LDFLAGS_SHARED=-dynamic
4023                 ;;
4024         esac
4025 else
4026         case "$cf_cv_system_name" in
4027         (aix[[4-7]]*)   # from ld manpage
4028                 LDFLAGS_STATIC=-bstatic
4029                 LDFLAGS_SHARED=-bdynamic
4030                 ;;
4031         (hpux*)         # from ld manpage for hpux10.20, hpux11.11
4032                 # We could also use just "archive" and "shared".
4033                 LDFLAGS_STATIC=-Wl,-a,archive_shared
4034                 LDFLAGS_SHARED=-Wl,-a,shared_archive
4035                 ;;
4036         (irix*)         # from ld manpage IRIX64
4037                 LDFLAGS_STATIC=-Bstatic
4038                 LDFLAGS_SHARED=-Bdynamic
4039                 ;;
4040         (osf[[45]]*)    # from ld manpage osf4.0d, osf5.1
4041                 # alternative "-oldstyle_liblookup" (not in cc manpage)
4042                 LDFLAGS_STATIC=-noso
4043                 LDFLAGS_SHARED=-so_archive
4044                 ;;
4045         (solaris2*)
4046                 LDFLAGS_STATIC=-Bstatic
4047                 LDFLAGS_SHARED=-Bdynamic
4048                 ;;
4049         esac
4050 fi
4051
4052 if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED"
4053 then
4054         AC_MSG_CHECKING(if linker supports switching between static/dynamic)
4055
4056         rm -f libconftest.a
4057         cat >conftest.$ac_ext <<EOF
4058 #line __oline__ "configure"
4059 #include <stdio.h>
4060 int cf_ldflags_static(FILE *fp) { return fflush(fp); }
4061 EOF
4062         if AC_TRY_EVAL(ac_compile) ; then
4063                 ( $AR $ARFLAGS libconftest.a conftest.o ) 2>&AC_FD_CC 1>/dev/null
4064                 ( eval $RANLIB libconftest.a ) 2>&AC_FD_CC >/dev/null
4065         fi
4066         rm -f conftest.*
4067
4068         cf_save_LIBS="$LIBS"
4069
4070         LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS"
4071         AC_TRY_LINK([
4072 #line __oline__ "configure"
4073 #include <stdio.h>
4074 int cf_ldflags_static(FILE *fp);
4075 ],[
4076         return cf_ldflags_static(stdin);
4077 ],[
4078         # some linkers simply ignore the -dynamic
4079         case x`file "conftest$ac_exeext" 2>/dev/null` in
4080         (*static*)
4081                 cf_ldflags_static=no
4082                 ;;
4083         (*)
4084                 cf_ldflags_static=yes
4085                 ;;
4086         esac
4087 ],[cf_ldflags_static=no])
4088
4089         rm -f libconftest.*
4090         LIBS="$cf_save_LIBS"
4091
4092         AC_MSG_RESULT($cf_ldflags_static)
4093
4094         if test "$cf_ldflags_static" != yes
4095         then
4096                 LDFLAGS_STATIC=
4097                 LDFLAGS_SHARED=
4098         fi
4099 else
4100         LDFLAGS_STATIC=
4101         LDFLAGS_SHARED=
4102 fi
4103
4104 AC_SUBST(LDFLAGS_STATIC)
4105 AC_SUBST(LDFLAGS_SHARED)
4106 ])
4107 dnl ---------------------------------------------------------------------------
4108 dnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04
4109 dnl ---------------
4110 dnl For the given system and compiler, find the compiler flags to pass to the
4111 dnl loader to use the "rpath" feature.
4112 AC_DEFUN([CF_LD_RPATH_OPT],
4113 [
4114 AC_REQUIRE([CF_CHECK_CACHE])
4115
4116 LD_RPATH_OPT=
4117 if test "x$cf_cv_enable_rpath" != xno
4118 then
4119         AC_MSG_CHECKING(for an rpath option)
4120         case "$cf_cv_system_name" in
4121         (irix*)
4122                 if test "$GCC" = yes; then
4123                         LD_RPATH_OPT="-Wl,-rpath,"
4124                 else
4125                         LD_RPATH_OPT="-rpath "
4126                 fi
4127                 ;;
4128         (linux*|gnu*|k*bsd*-gnu|freebsd*)
4129                 LD_RPATH_OPT="-Wl,-rpath,"
4130                 ;;
4131         (openbsd[[2-9]].*|mirbsd*)
4132                 LD_RPATH_OPT="-Wl,-rpath,"
4133                 ;;
4134         (dragonfly*)
4135                 LD_RPATH_OPT="-rpath "
4136                 ;;
4137         (netbsd*)
4138                 LD_RPATH_OPT="-Wl,-rpath,"
4139                 ;;
4140         (osf*|mls+*)
4141                 LD_RPATH_OPT="-rpath "
4142                 ;;
4143         (solaris2*)
4144                 LD_RPATH_OPT="-R"
4145                 ;;
4146         (*)
4147                 ;;
4148         esac
4149         AC_MSG_RESULT($LD_RPATH_OPT)
4150
4151         case "x$LD_RPATH_OPT" in
4152         (x-R*)
4153                 AC_MSG_CHECKING(if we need a space after rpath option)
4154                 cf_save_LIBS="$LIBS"
4155                 CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
4156                 AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
4157                 LIBS="$cf_save_LIBS"
4158                 AC_MSG_RESULT($cf_rpath_space)
4159                 test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
4160                 ;;
4161         esac
4162 fi
4163 ])dnl
4164 dnl ---------------------------------------------------------------------------
4165 dnl CF_LD_SEARCHPATH version: 3 updated: 2021/03/05 19:13:35
4166 dnl ----------------
4167 dnl Try to obtain the linker's search-path, for use in scripts.
4168 dnl
4169 dnl Ignore LD_LIBRARY_PATH, etc.
4170 AC_DEFUN([CF_LD_SEARCHPATH],[
4171 AC_CACHE_CHECK(for linker search path,cf_cv_ld_searchpath,[
4172
4173 if test "$cross_compiling" != yes ; then
4174
4175 # GNU binutils' ld does not involve permissions which may stop ldconfig.
4176 cf_pathlist=`ld --verbose 2>/dev/null | grep SEARCH_DIR | sed -e 's,SEARCH_DIR[[("=]][[("=]]*,,g' -e 's/"[[)]];//gp' | sort -u`
4177
4178 # The -NX options tell newer versions of Linux ldconfig to not attempt to
4179 # update the cache, which makes it run faster.
4180 test -z "$cf_pathlist" && \
4181         cf_pathlist=`(ldconfig -NX -v) 2>/dev/null | sed -e '/^[[       ]]/d' -e 's/:$//' | sort -u`
4182
4183 test -z "$cf_pathlist" &&
4184         cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e '/^[[        ]]/d' -e 's/:$//p' | sort -u`
4185
4186 # This works with OpenBSD 6.5, which lists only filenames
4187 test -z "$cf_pathlist" &&
4188         cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e 's,^Adding \(.*\)/.*[$],\1,p' | sort -u`
4189
4190 if test -z "$cf_pathlist"
4191 then
4192         # dyld default path with MacOS
4193         if test -f /usr/bin/otool && test "x`uname -s`" = xDarwin
4194         then
4195                 # do this to bypass check
4196                 cf_cv_ld_searchpath='$HOME/lib'
4197                 cf_pathlist="/usr/local/lib /lib /usr/lib"
4198         fi
4199 fi
4200
4201 if test -z "$cf_pathlist"
4202 then
4203         # Solaris is "SunOS"
4204         if test -f /usr/bin/isainfo && test "x`uname -s`" = xSunOS
4205         then
4206                 case x`(isainfo -b)` in
4207                 (x64)
4208                         cf_pathlist="$cf_pathlist /lib/64 /usr/lib/64"
4209                         ;;
4210                 (x32)
4211                         test -d /usr/ccs/lib && cf_pathlist="$cf_pathlist /usr/ccs/lib"
4212                         cf_pathlist="$cf_pathlist /lib /usr/lib"
4213                         ;;
4214                 (*)
4215                         AC_MSG_WARN(problem with Solaris architecture)
4216                         ;;
4217                 esac
4218         fi
4219 fi
4220
4221 if test -z "$cf_pathlist"
4222 then
4223         # HP-UX
4224         if test x"`uname -s`" = xHP-UX
4225         then
4226                 case x`getconf LONG_BIT` in
4227                 (x64)
4228                         cf_pathlist="/usr/lib/hpux64"
4229                         ;;
4230                 (x*)
4231                         cf_pathlist="/usr/lib/hpux32"
4232                         ;;
4233                 esac
4234         fi
4235 fi
4236
4237 fi
4238
4239 # If nothing else, assume it is conventional
4240 test -z "$cf_pathlist" && cf_pathlist="/usr/lib /lib"
4241
4242 # Finally, check that this is only directories
4243 for cf_path in [$]0 $cf_pathlist
4244 do
4245         if test -d "$cf_path"; then
4246                 test -n "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath="${cf_cv_ld_searchpath} "
4247                 cf_cv_ld_searchpath="${cf_cv_ld_searchpath}${cf_path}"
4248         fi
4249 done
4250
4251 # Ensure that it is nonempty
4252 test -z "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath=/usr/lib
4253 ])
4254
4255 LD_SEARCHPATH=`echo "$cf_cv_ld_searchpath"|sed -e 's/ /|/g'`
4256 AC_SUBST(LD_SEARCHPATH)
4257 ])dnl
4258 dnl ---------------------------------------------------------------------------
4259 dnl CF_LIBRARY_PATH version: 11 updated: 2021/01/01 13:31:04
4260 dnl ---------------
4261 dnl Construct a search-list of directories for a nonstandard library-file
4262 dnl
4263 dnl Parameters
4264 dnl     $1 = the variable to return as result
4265 dnl     $2 = the package name
4266 AC_DEFUN([CF_LIBRARY_PATH],
4267 [
4268 $1=
4269 cf_library_path_list=""
4270 if test -n "${LDFLAGS}${LIBS}" ; then
4271         for cf_library_path in $LDFLAGS $LIBS
4272         do
4273                 case "$cf_library_path" in
4274                 (-L*)
4275                         cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
4276                         CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE)
4277                         cf_library_path_list="$cf_library_path_list [$]$1"
4278                         ;;
4279                 esac
4280         done
4281 fi
4282
4283 CF_SUBDIR_PATH($1,$2,lib)
4284
4285 $1="$cf_library_path_list [$]$1"
4286 ])dnl
4287 dnl ---------------------------------------------------------------------------
4288 dnl CF_LIBTOOL_VERSION version: 1 updated: 2013/04/06 18:03:09
4289 dnl ------------------
4290 AC_DEFUN([CF_LIBTOOL_VERSION],[
4291 if test -n "$LIBTOOL" && test "$LIBTOOL" != none
4292 then
4293         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.]].*//'`
4294 else
4295         cf_cv_libtool_version=
4296 fi
4297 test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
4298 ])dnl
4299 dnl ---------------------------------------------------------------------------
4300 dnl CF_LIB_PREFIX version: 14 updated: 2021/01/01 13:31:04
4301 dnl -------------
4302 dnl Compute the library-prefix for the given host system
4303 dnl $1 = variable to set
4304 define([CF_LIB_PREFIX],
4305 [
4306         case "$cf_cv_system_name" in
4307         (OS/2*|os2*)
4308                 if test "$DFT_LWR_MODEL" = libtool; then
4309                         LIB_PREFIX='lib'
4310                 else
4311                         LIB_PREFIX=''
4312                 fi
4313                 ;;
4314         (*-msvc*)
4315                 LIB_PREFIX=''
4316                 ;;
4317         (*)     LIB_PREFIX='lib'
4318                 ;;
4319         esac
4320 ifelse($1,,,[$1=$LIB_PREFIX])
4321         AC_SUBST(LIB_PREFIX)
4322 ])dnl
4323 dnl ---------------------------------------------------------------------------
4324 dnl CF_LIB_RULES version: 97 updated: 2021/07/17 13:10:54
4325 dnl ------------
4326 dnl Append definitions and rules for the given models to the subdirectory
4327 dnl Makefiles, and the recursion rule for the top-level Makefile.  If the
4328 dnl subdirectory is a library-source directory, modify the Libs_To_Make list in
4329 dnl the corresponding makefile to list the models that we'll generate.
4330 dnl
4331 dnl For shared libraries, make a list of symbolic links to construct when
4332 dnl generating each library.  The convention used for Linux is the simplest
4333 dnl one:
4334 dnl     lib<name>.so    ->
4335 dnl     lib<name>.so.<major>    ->
4336 dnl     lib<name>.so.<maj>.<minor>
4337 dnl
4338 dnl Note: Libs_To_Make is mixed case, since it is not a pure autoconf variable.
4339 AC_DEFUN([CF_LIB_RULES],
4340 [AC_REQUIRE([AC_PROG_FGREP])dnl
4341 AC_REQUIRE([CF_MAKE_PHONY])dnl
4342
4343 cf_prefix=$LIB_PREFIX
4344 AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
4345
4346 case "$cf_cv_shlib_version" in
4347 (cygdll|msysdll|mingw|msvcdll)
4348         TINFO_NAME=$TINFO_ARG_SUFFIX
4349         TINFO_SUFFIX=.dll
4350         ;;
4351 esac
4352
4353 if test -n "$TINFO_SUFFIX" ; then
4354         case "$TINFO_SUFFIX" in
4355         (tw*)
4356                 TINFO_NAME="${TINFO_NAME}tw${EXTRA_SUFFIX}"
4357                 TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^tw'$EXTRA_SUFFIX'//'`
4358                 ;;
4359         (t*)
4360                 TINFO_NAME="${TINFO_NAME}t${EXTRA_SUFFIX}"
4361                 TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^t'$EXTRA_SUFFIX'//'`
4362                 ;;
4363         (w*)
4364                 TINFO_NAME="${TINFO_NAME}w${EXTRA_SUFFIX}"
4365                 TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^w'$EXTRA_SUFFIX'//'`
4366                 ;;
4367         esac
4368 fi
4369
4370 for cf_dir in $SRC_SUBDIRS
4371 do
4372         if test ! -d "$srcdir/$cf_dir" ; then
4373                 continue
4374         elif test -f "$srcdir/$cf_dir/modules" ; then
4375
4376                 SHARED_LIB=
4377                 Libs_To_Make=
4378                 cf_awk_program=
4379                 if test -n "${cf_cv_abi_version}" && test "x${cf_cv_abi_version}" != "x5"
4380                 then
4381                         cf_awk_program="$cf_awk_program\
4382 /deprecated in ABI${cf_cv_abi_version}/ { next; }\
4383 { sub(\"NCURSES([[WT]]+)?\", \"&${cf_cv_abi_version}\"); }\
4384 "
4385                 fi
4386
4387                 if test "x$WILDCARD_SYMS" = xno
4388                 then
4389                         cf_awk_program="$cf_awk_program\
4390 /[[     ]]_\\*;/ { skip=1; next; }\
4391 "
4392                 fi
4393
4394                 if test "x$cf_awk_program" != "x"
4395                 then
4396                         cat >>$cf_dir/Makefile <<CF_EOF
4397
4398 # Generated by CF_LIB_RULES
4399 resulting.map: $UNALTERED_SYMS
4400         $AWK 'BEGIN { skip = 1; last=""; } \
4401 $cf_awk_program \
4402 { if ( last != "" && ( skip == 0 || \[$]\[$]0 !~ /}/ ) ) { print last; }\
4403  skip = 0; last = \[$]\[$]0; } \
4404 END { print last; }' < "$UNALTERED_SYMS" >\[$]@
4405
4406 distclean::
4407         rm -f resulting.map
4408 CF_EOF
4409                 fi
4410
4411                 for cf_item in $cf_LIST_MODELS
4412                 do
4413                         CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf)
4414                         if test "$cf_dir" = "c++"
4415                         then
4416                                 CF_MAP_LIB_BASENAME(cf_libname,cxx)
4417                         else
4418                                 CF_MAP_LIB_BASENAME(cf_libname,$cf_dir)
4419                         fi
4420                         test -z "$cf_libname" && cf_libname="$cf_dir"
4421                         if test "$cf_item" = shared ; then
4422                                 if test -n "${LIB_SUFFIX}"
4423                                 then
4424                                         cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'`
4425                                 else
4426                                         cf_shared_suffix="$cf_suffix"
4427                                 fi
4428                                 if test "$cf_cv_do_symlinks" = yes ; then
4429                                         cf_version_name=
4430
4431                                         case "$cf_cv_shlib_version" in
4432                                         (rel)
4433                                                 cf_version_name=REL_VERSION
4434                                                 ;;
4435                                         (abi)
4436                                                 cf_version_name=ABI_VERSION
4437                                                 ;;
4438                                         esac
4439
4440                                         if test -n "$cf_version_name"
4441                                         then
4442                                                 case "$cf_cv_system_name" in
4443                                                 (darwin*)
4444                                                         # "w", etc?
4445                                                         cf_suffix="${USE_LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix"
4446                                                         ;;
4447                                                 (*)
4448                                                         cf_suffix="$cf_suffix"'.${'$cf_version_name'}'
4449                                                         ;;
4450                                                 esac
4451                                         fi
4452                                         if test -n "${USE_LIB_SUFFIX}"
4453                                         then
4454                                                 cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'`
4455                                         else
4456                                                 cf_shared_suffix="$cf_suffix"
4457                                         fi
4458                                 fi
4459                                 # cygwin needs import library, and has unique naming convention
4460                                 # use autodetected ${cf_prefix} for import lib and static lib, but
4461                                 # use 'cyg' prefix for shared lib.
4462                                 case "$cf_cv_shlib_version" in
4463                                 (cygdll)
4464                                         cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4465                                         cf_add_lib="../lib/cyg${cf_libname}${cf_cygsuf}"
4466                                         ;;
4467                                 (msysdll)
4468                                         cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4469                                         cf_add_lib="../lib/msys-${cf_libname}${cf_cygsuf}"
4470                                         ;;
4471                                 (mingw)
4472                                         cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4473                                         cf_add_lib="../lib/lib${cf_libname}${cf_cygsuf}"
4474                                         ;;
4475                                 (msvcdll)
4476                                         cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
4477                                         cf_add_lib="../lib/${cf_libname}${cf_cygsuf}"
4478                                         ;;
4479                                 (*)
4480                                         cf_add_lib=
4481                                         ;;
4482                                 esac
4483                                 if test -n "$cf_add_lib"
4484                                 then
4485                                         Libs_To_Make="$Libs_To_Make $cf_add_lib"
4486                                         continue
4487                                 fi
4488                         fi
4489                         cf_add_lib="../lib/${cf_prefix}${cf_libname}${cf_suffix}"
4490                         Libs_To_Make="$Libs_To_Make $cf_add_lib"
4491                 done
4492
4493                 if test "$cf_dir" = ncurses ; then
4494                         cf_subsets="$LIB_SUBSETS"
4495                         cf_r_parts="$cf_subsets"
4496                         cf_liblist="$Libs_To_Make"
4497
4498                         while test -n "$cf_r_parts"
4499                         do
4500                                 cf_l_parts=`echo "$cf_r_parts" |sed -e 's/ .*$//'`
4501                                 cf_r_parts=`echo "$cf_r_parts" |sed -e 's/^[[^ ]]* //'`
4502                                 if test "$cf_l_parts" != "$cf_r_parts" ; then
4503                                         cf_add_lib=
4504                                         case "$cf_l_parts" in
4505                                         (*termlib*)
4506                                                 cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g`
4507                                                 ;;
4508                                         (*ticlib*)
4509                                                 cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g`
4510                                                 ;;
4511                                         (*)
4512                                                 break
4513                                                 ;;
4514                                         esac
4515                                         if test -n "$cf_add_lib"; then
4516                                                 Libs_To_Make="$cf_add_lib $Libs_To_Make"
4517                                         fi
4518                                 else
4519                                         break
4520                                 fi
4521                         done
4522                 else
4523                         cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'`
4524                 fi
4525
4526                 if test "$cf_dir" = c++; then
4527                         if test "x$with_shared_cxx" != xyes && test -n "$cf_shared_suffix"; then
4528                                 cf_list=
4529                                 for cf_item in $Libs_To_Make
4530                                 do
4531                                         case "$cf_item" in
4532                                         (*.a)
4533                                                 ;;
4534                                         (*)
4535                                                 cf_item=`echo "$cf_item" | sed -e "s,"$cf_shared_suffix",.a,"`
4536                                                 ;;
4537                                         esac
4538                                         for cf_test in $cf_list
4539                                         do
4540                                                 if test "$cf_test" = "$cf_item"
4541                                                 then
4542                                                         cf_LIST_MODELS=`echo "$cf_LIST_MODELS" | sed -e 's/normal//'`
4543                                                         cf_item=
4544                                                         break
4545                                                 fi
4546                                         done
4547                                         test -n "$cf_item" && cf_list="$cf_list $cf_item"
4548                                 done
4549                                 Libs_To_Make="$cf_list"
4550                         fi
4551                 fi
4552
4553                 sed -e "s%@Libs_To_Make@%$Libs_To_Make%" \
4554                     -e "s%@SHARED_LIB@%$SHARED_LIB%" \
4555                         "$cf_dir/Makefile" >$cf_dir/Makefile.out
4556                 mv "$cf_dir/Makefile.out" "$cf_dir/Makefile"
4557
4558                 $AWK -f "$srcdir/mk-0th.awk" \
4559                         libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" ticlib="$TICS_LIB_SUFFIX" termlib="$TINFO_LIB_SUFFIX" \
4560                         "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile
4561
4562                 for cf_subset in $cf_subsets
4563                 do
4564                         cf_subdirs=
4565                         for cf_item in $cf_LIST_MODELS
4566                         do
4567
4568                         echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})"
4569                         CF_UPPER(cf_ITEM,$cf_item)
4570
4571                         CXX_MODEL=$cf_ITEM
4572                         if test "$CXX_MODEL" = SHARED; then
4573                                 case "$cf_cv_shlib_version" in
4574                                 (cygdll|msysdll|mingw|msvcdll)
4575                                         test "x$with_shared_cxx" = xno && CF_VERBOSE(overriding CXX_MODEL to SHARED)
4576                                         with_shared_cxx=yes
4577                                         ;;
4578                                 (*)
4579                                         test "x$with_shared_cxx" = xno && CXX_MODEL=NORMAL
4580                                         ;;
4581                                 esac
4582                         fi
4583
4584                         CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf)
4585                         CF_OBJ_SUBDIR($cf_item,cf_subdir)
4586
4587                         # Test for case where we build libtinfo with a different name.
4588                         cf_libname=$cf_dir
4589                         if test "$cf_dir" = ncurses ; then
4590                                 case "$cf_subset" in
4591                                 (*base*)
4592                                         cf_libname=${cf_libname}$USE_LIB_SUFFIX
4593                                         ;;
4594                                 (*termlib*)
4595                                         cf_libname=$TINFO_LIB_SUFFIX
4596                                         ;;
4597                                 (ticlib*)
4598                                         cf_libname=$TICS_LIB_SUFFIX
4599                                         ;;
4600                                 esac
4601                         elif test "$cf_dir" = c++ ; then
4602                                 CF_MAP_LIB_BASENAME(cf_libname,cxx)
4603                                 cf_libname=${cf_libname}$USE_LIB_SUFFIX
4604                         else
4605                                 CF_MAP_LIB_BASENAME(cf_libname,$cf_dir)
4606                                 cf_libname=${cf_libname}$USE_LIB_SUFFIX
4607                         fi
4608                         if test -n "${USE_ARG_SUFFIX}" ; then
4609                                 # undo $USE_LIB_SUFFIX add-on in CF_LIB_SUFFIX
4610                                 cf_suffix=`echo "$cf_suffix" |sed -e "s%^${USE_LIB_SUFFIX}%%"`
4611                         fi
4612
4613                         # These dependencies really are for development, not
4614                         # builds, but they are useful in porting, too.
4615                         cf_depend="../include/ncurses_cfg.h"
4616                         if test "$srcdir" = "."; then
4617                                 cf_reldir="."
4618                         else
4619                                 cf_reldir="\${srcdir}"
4620                         fi
4621
4622                         if test -f "$srcdir/$cf_dir/$cf_dir.priv.h" ; then
4623                                 cf_depend="$cf_depend $cf_reldir/$cf_dir.priv.h"
4624                         elif test -f "$srcdir/$cf_dir/curses.priv.h" ; then
4625                                 cf_depend="$cf_depend $cf_reldir/curses.priv.h"
4626                         fi
4627
4628                         cf_dir_suffix=
4629                         old_cf_suffix="$cf_suffix"
4630                         if test "$cf_cv_shlib_version_infix" = yes ; then
4631                         if test -n "$USE_LIB_SUFFIX" ; then
4632                                 case "$USE_LIB_SUFFIX" in
4633                                 (tw*)
4634                                         cf_libname=`echo "$cf_libname" | sed 's/tw'$EXTRA_SUFFIX'$//'`
4635                                         cf_suffix=`echo "$cf_suffix" | sed 's/^tw'$EXTRA_SUFFIX'//'`
4636                                         cf_dir_suffix=tw$EXTRA_SUFFIX
4637                                         ;;
4638                                 (t*)
4639                                         cf_libname=`echo "$cf_libname" | sed 's/t'$EXTRA_SUFFIX'$//'`
4640                                         cf_suffix=`echo "$cf_suffix" | sed 's/^t'$EXTRA_SUFFIX'//'`
4641                                         cf_dir_suffix=t$EXTRA_SUFFIX
4642                                         ;;
4643                                 (w*)
4644                                         cf_libname=`echo "$cf_libname" | sed 's/w'$EXTRA_SUFFIX'$//'`
4645                                         cf_suffix=`echo "$cf_suffix" | sed 's/^w'$EXTRA_SUFFIX'//'`
4646                                         cf_dir_suffix=w$EXTRA_SUFFIX
4647                                         ;;
4648                                 (*)
4649                                         cf_libname=`echo "$cf_libname" | sed 's/'$EXTRA_SUFFIX'$//'`
4650                                         cf_suffix=`echo "$cf_suffix" | sed 's/^'$EXTRA_SUFFIX'//'`
4651                                         cf_dir_suffix=$EXTRA_SUFFIX
4652                                         ;;
4653                                 esac
4654                         fi
4655                         fi
4656
4657                         $AWK -f "$srcdir/mk-1st.awk" \
4658                                 name=${cf_libname}${cf_dir_suffix} \
4659                                 traces=$LIB_TRACING \
4660                                 MODEL=$cf_ITEM \
4661                                 CXX_MODEL=$CXX_MODEL \
4662                                 LIB_SUFFIX=$LIB_SUFFIX \
4663                                 USE_LIB_SUFFIX=$USE_LIB_SUFFIX \
4664                                 make_phony="${cf_cv_make_PHONY:-no}" \
4665                                 model=$cf_subdir \
4666                                 prefix=$cf_prefix \
4667                                 suffix=$cf_suffix \
4668                                 subset=$cf_subset \
4669                                 driver=$cf_cv_term_driver \
4670                                 SymLink="$LN_S" \
4671                                 TermlibRoot=$TINFO_NAME \
4672                                 TermlibSuffix=$TINFO_SUFFIX \
4673                                 ShlibVer=$cf_cv_shlib_version \
4674                                 ShlibVerInfix=$cf_cv_shlib_version_infix \
4675                                 ReLink=${cf_cv_do_relink:-no} \
4676                                 ReRanlib=${cf_cv_do_reranlib:-yes} \
4677                                 DoLinks=$cf_cv_do_symlinks \
4678                                 rmSoLocs=$cf_cv_rm_so_locs \
4679                                 ldconfig="$LDCONFIG" \
4680                                 overwrite=$WITH_OVERWRITE \
4681                                 depend="$cf_depend" \
4682                                 host="$host" \
4683                                 libtool_version="$LIBTOOL_VERSION" \
4684                                 "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile
4685
4686                         cf_suffix="$old_cf_suffix"
4687
4688                         for cf_subdir2 in $cf_subdirs lib
4689                         do
4690                                 test "$cf_subdir" = "$cf_subdir2" && break
4691                         done
4692                         test "${cf_subset}.${cf_subdir2}" != "${cf_subset}.${cf_subdir}" && \
4693                         $AWK -f "$srcdir/mk-2nd.awk" \
4694                                 name=$cf_dir \
4695                                 traces=$LIB_TRACING \
4696                                 MODEL=$cf_ITEM \
4697                                 model=$cf_subdir \
4698                                 subset=$cf_subset \
4699                                 srcdir=$srcdir \
4700                                 echo=$WITH_ECHO \
4701                                 crenames=$cf_cv_prog_CC_c_o \
4702                                 cxxrenames=$cf_cv_prog_CXX_c_o \
4703                                 "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile
4704                         cf_subdirs="$cf_subdirs $cf_subdir"
4705                         done
4706                 done
4707         fi
4708
4709         echo '  ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@ )' >>Makefile
4710 done
4711
4712 echo >> Makefile
4713 echo '# generated by CF_LIB_RULES' >> Makefile
4714
4715 if test "x$cf_cv_make_PHONY" = xyes ; then
4716         cat >> Makefile <<-CF_EOF
4717
4718         .PHONY :        libs
4719         .PHONY :        lintlib
4720         .PHONY :        install.includes
4721         .PHONY :        uninstall.includes
4722         .PHONY :        install.libs
4723         .PHONY :        uninstall.libs
4724 CF_EOF
4725 fi
4726
4727 for cf_dir in $SRC_SUBDIRS
4728 do
4729         if test ! -d "$srcdir/$cf_dir" ; then
4730                 continue
4731         fi
4732
4733         if test -f "$cf_dir/Makefile" ; then
4734                 case "$cf_dir" in
4735                 (Ada95)
4736                         echo 'libs \' >> Makefile
4737                         echo 'install.libs \' >> Makefile
4738                         echo 'uninstall.libs ::' >> Makefile
4739                         echo '  ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@ )' >> Makefile
4740                         ;;
4741                 esac
4742         fi
4743
4744         if test -f "$srcdir/$cf_dir/modules" ; then
4745
4746                 if test "x$cf_cv_make_PHONY" = xyes ; then
4747                         cat >> Makefile <<-CF_EOF
4748
4749                         .PHONY :        install.$cf_dir
4750                         .PHONY :        uninstall.$cf_dir
4751 CF_EOF
4752                 fi
4753
4754                 echo >> Makefile
4755                 if test -f "$srcdir/$cf_dir/headers" ; then
4756 cat >> Makefile <<CF_EOF
4757 install.includes \\
4758 uninstall.includes \\
4759 CF_EOF
4760                 fi
4761
4762 cat >> Makefile <<CF_EOF
4763 lint \\
4764 libs \\
4765 lintlib \\
4766 install.libs \\
4767 uninstall.libs \\
4768 install.$cf_dir \\
4769 uninstall.$cf_dir ::
4770         ( cd "$cf_dir" && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4771 CF_EOF
4772         elif test -f "$srcdir/$cf_dir/headers" ; then
4773 cat >> Makefile <<CF_EOF
4774
4775 libs \\
4776 install.libs \\
4777 uninstall.libs \\
4778 install.includes \\
4779 uninstall.includes ::
4780         ( cd "$cf_dir" && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4781 CF_EOF
4782 fi
4783 done
4784
4785 if test "x$cf_cv_make_PHONY" = xyes ; then
4786         cat >> Makefile <<-CF_EOF
4787
4788         .PHONY :        install.data
4789         .PHONY :        uninstall.data
4790 CF_EOF
4791 fi
4792
4793 if test "x$cf_with_db_install" = xyes; then
4794 cat >> Makefile <<CF_EOF
4795
4796 install.libs uninstall.libs \\
4797 install.data uninstall.data ::
4798 $MAKE_TERMINFO  ( cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4799 CF_EOF
4800 else
4801 cat >> Makefile <<CF_EOF
4802
4803 install.libs uninstall.libs ::
4804         ( cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4805 CF_EOF
4806 fi
4807
4808 if test "x$cf_with_manpages" = xyes; then
4809
4810 if test "x$cf_cv_make_PHONY" = xyes ; then
4811         cat >> Makefile <<-CF_EOF
4812
4813         .PHONY :        install.man
4814         .PHONY :        uninstall.man
4815 CF_EOF
4816 fi
4817
4818 cat >> Makefile <<CF_EOF
4819
4820 install.man \\
4821 uninstall.man ::
4822         ( cd man && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4823 CF_EOF
4824 fi
4825
4826 cat >> Makefile <<CF_EOF
4827
4828 distclean ::
4829         rm -f config.cache config.log config.status Makefile include/ncurses_cfg.h
4830         rm -f headers.sh headers.sed mk_shared_lib.sh
4831         rm -f edit_man.* man_alias.*
4832         rm -rf \${DIRS_TO_MAKE}
4833 CF_EOF
4834
4835 # Special case: tack's manpage lives in its own directory.
4836 if test "x$cf_with_manpages" = xyes; then
4837 if test "x$cf_with_tack" = "xyes"; then
4838 cat >> Makefile <<CF_EOF
4839
4840 install.man \\
4841 uninstall.man ::
4842         ( cd tack && \${MAKE} \${TOP_MFLAGS} \[$]@ )
4843 CF_EOF
4844 fi
4845 fi
4846
4847 dnl If we're installing into a subdirectory of /usr/include, etc., we should
4848 dnl prepend the subdirectory's name to the "#include" paths.  It won't hurt
4849 dnl anything, and will make it more standardized.  It's awkward to decide this
4850 dnl at configuration because of quoting, so we'll simply make all headers
4851 dnl installed via a script that can do the right thing.
4852
4853 rm -f headers.sed headers.sh
4854
4855 dnl ( generating this script makes the makefiles a little tidier :-)
4856 echo creating headers.sh
4857 cat >headers.sh <<CF_EOF
4858 #! $SHELL
4859 # This shell script is generated by the 'configure' script.  It is invoked in a
4860 # subdirectory of the build tree.  It generates a sed-script in the parent
4861 # directory that is used to adjust includes for header files that reside in a
4862 # subdirectory of /usr/include, etc.
4863 PRG=""
4864 while test \[$]# != 3
4865 do
4866 PRG="\$PRG \[$]1"; shift
4867 done
4868 DST=\[$]1
4869 REF=\[$]2
4870 SRC=\[$]3
4871 TMPSRC=\${TMPDIR:-/tmp}/\`basename \$SRC\`\$\$
4872 TMPSED=\${TMPDIR:-/tmp}/headers.sed\$\$
4873 echo installing \$SRC in \$DST
4874 CF_EOF
4875
4876 if test "$WITH_CURSES_H" = yes; then
4877         cat >>headers.sh <<CF_EOF
4878 case \$DST in
4879 (/*/include/*)
4880         END=\`basename \$DST\`
4881         for i in \`cat \$REF/../*/headers |${FGREP-fgrep} -v "#"\`
4882         do
4883                 NAME=\`basename \$i\`
4884                 echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
4885         done
4886         ;;
4887 (*)
4888         echo "" >> \$TMPSED
4889         ;;
4890 esac
4891 CF_EOF
4892
4893 else
4894         cat >>headers.sh <<CF_EOF
4895 case \$DST in
4896 (/*/include/*)
4897         END=\`basename \$DST\`
4898         for i in \`cat \$REF/../*/headers |${FGREP-fgrep} -v "#"\`
4899         do
4900                 NAME=\`basename \$i\`
4901                 if test "\$NAME" = "curses.h"
4902                 then
4903                         echo "s/<curses.h>/<ncurses.h>/" >> \$TMPSED
4904                         NAME=ncurses.h
4905                 fi
4906                 echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
4907         done
4908         ;;
4909 (*)
4910         echo "s/<curses.h>/<ncurses.h>/" >> \$TMPSED
4911         ;;
4912 esac
4913 CF_EOF
4914 fi
4915 cat >>headers.sh <<CF_EOF
4916 rm -f \$TMPSRC
4917 sed -f \$TMPSED \$SRC > \$TMPSRC
4918 NAME=\`basename \$SRC\`
4919 CF_EOF
4920 if test "$WITH_CURSES_H" != yes; then
4921         cat >>headers.sh <<CF_EOF
4922 test "\$NAME" = "curses.h" && NAME=ncurses.h
4923 CF_EOF
4924 fi
4925 cat >>headers.sh <<CF_EOF
4926 # Just in case someone gzip'd manpages, remove the conflicting copy.
4927 test -f \$DST/\$NAME.gz && rm -f \$DST/\$NAME.gz
4928
4929 eval \$PRG \$TMPSRC \$DST/\$NAME
4930 rm -f \$TMPSRC \$TMPSED
4931 CF_EOF
4932
4933 chmod 0755 headers.sh
4934
4935 for cf_dir in $SRC_SUBDIRS
4936 do
4937         if test ! -d "$srcdir/$cf_dir" ; then
4938                 continue
4939         fi
4940
4941         if test -f "$srcdir/$cf_dir/headers" ; then
4942                 $AWK -f "$srcdir/mk-hdr.awk" \
4943                         subset="$LIB_SUBSETS" \
4944                         compat="$WITH_CURSES_H" \
4945                         "$srcdir/$cf_dir/headers" >>$cf_dir/Makefile
4946         fi
4947
4948         if test -f "$srcdir/$cf_dir/modules" ; then
4949                 if test "$cf_dir" != "c++" ; then
4950                         if test "x$cf_cv_make_PHONY" = xyes ; then
4951                                 cat >> $cf_dir/Makefile <<-CF_EOF
4952
4953                                 .PHONY :        depend
4954 CF_EOF
4955                         fi
4956
4957                         cat >>$cf_dir/Makefile <<"CF_EOF"
4958 depend : ${AUTO_SRC}
4959         makedepend -- ${CPPFLAGS} -- ${C_SRC}
4960
4961 # DO NOT DELETE THIS LINE -- make depend depends on it.
4962 CF_EOF
4963                 fi
4964         fi
4965 done
4966 AC_SUBST(Libs_To_Make)
4967 ])dnl
4968 dnl ---------------------------------------------------------------------------
4969 dnl CF_LIB_SONAME version: 9 updated: 2021/01/04 18:48:01
4970 dnl -------------
4971 dnl Find the and soname for the given shared library.  Set the cache variable
4972 dnl cf_cv_$3_soname to this, unless it is not found.  Then set the cache
4973 dnl variable to "unknown".
4974 dnl
4975 dnl $1 = headers
4976 dnl $2 = code
4977 dnl $3 = library name
4978 AC_DEFUN([CF_LIB_SONAME],
4979 [AC_REQUIRE([AC_PROG_FGREP])dnl
4980
4981 AC_CACHE_CHECK(for soname of $3 library,cf_cv_$3_soname,[
4982
4983 cf_cv_$3_soname=unknown
4984 if test "$cross_compiling" != yes ; then
4985 cat >conftest.$ac_ext <<CF_EOF
4986 $1
4987 int main(void)
4988 {
4989 $2
4990         ${cf_cv_main_return:-return}(0);
4991 }
4992 CF_EOF
4993 cf_save_LIBS="$LIBS"
4994         CF_ADD_LIB($3)
4995         if AC_TRY_EVAL(ac_compile) ; then
4996                 if AC_TRY_EVAL(ac_link) ; then
4997                         cf_cv_$3_soname="`ldd \"conftest$ac_exeext\" 2>/dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | ${FGREP-fgrep} lib$3.`"
4998                         test -z "$cf_cv_$3_soname" && cf_cv_$3_soname=unknown
4999                 fi
5000         fi
5001 rm -rf ./conftest*
5002 LIBS="$cf_save_LIBS"
5003 fi
5004 ])
5005 ])
5006 dnl ---------------------------------------------------------------------------
5007 dnl CF_LIB_SUFFIX version: 28 updated: 2021/01/01 16:53:59
5008 dnl -------------
5009 dnl Compute the library file-suffix from the given model name
5010 dnl $1 = model name
5011 dnl $2 = variable to set (the nominal library suffix)
5012 dnl $3 = dependency variable to set (actual filename)
5013 dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
5014 AC_DEFUN([CF_LIB_SUFFIX],
5015 [
5016         case X$1 in
5017         (Xlibtool)
5018                 $2='.la'
5019                 $3=[$]$2
5020                 ;;
5021         (Xdebug)
5022                 case "$cf_cv_system_name" in
5023                 (*-msvc*)
5024                         $2='_g.lib'
5025                         ;;
5026                 (*)
5027                         $2='_g.a'
5028                         ;;
5029                 esac
5030                 $3=[$]$2
5031                 ;;
5032         (Xprofile)
5033                 case "$cf_cv_system_name" in
5034                 (*-msvc*)
5035                         $2='_p.lib'
5036                         ;;
5037                 (*)
5038                         $2='_p.a'
5039                         ;;
5040                 esac
5041                 $3=[$]$2
5042                 ;;
5043         (Xshared)
5044                 case "$cf_cv_system_name" in
5045                 (aix[[5-7]]*)
5046                         $2='.so'
5047                         $3=[$]$2
5048                         ;;
5049                 (*-msvc*)
5050                         $2='.dll'
5051                         $3='.dll.lib'
5052                         ;;
5053                 (cygwin*|msys*|mingw*)
5054                         $2='.dll'
5055                         $3='.dll.a'
5056                         ;;
5057                 (darwin*)
5058                         $2='.dylib'
5059                         $3=[$]$2
5060                         ;;
5061                 (hpux*)
5062                         case "$target" in
5063                         (ia64*)
5064                                 $2='.so'
5065                                 $3=[$]$2
5066                                 ;;
5067                         (*)
5068                                 $2='.sl'
5069                                 $3=[$]$2
5070                                 ;;
5071                         esac
5072                         ;;
5073                 (*)
5074                         $2='.so'
5075                         $3=[$]$2
5076                         ;;
5077                 esac
5078                 ;;
5079         (*)
5080                 case "$target" in
5081                 (*-msvc*)
5082                         $2='.lib'
5083                         ;;
5084                 (*)
5085                         $2='.a'
5086                         ;;
5087                 esac
5088                 $3=[$]$2
5089                 ;;
5090         esac
5091         if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}"
5092         then
5093                 $2="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$2}"
5094                 $3="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$3}"
5095         fi
5096 ])dnl
5097 dnl ---------------------------------------------------------------------------
5098 dnl CF_LIB_TYPE version: 5 updated: 2015/04/17 21:13:04
5099 dnl -----------
5100 dnl Compute the string to append to -library from the given model name
5101 dnl $1 = model name
5102 dnl $2 = variable to set
5103 dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
5104 AC_DEFUN([CF_LIB_TYPE],
5105 [
5106         case $1 in
5107         (libtool) $2=''   ;;
5108         (normal)  $2=''   ;;
5109         (debug)   $2='_g' ;;
5110         (profile) $2='_p' ;;
5111         (shared)  $2=''   ;;
5112         esac
5113         test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
5114 ])dnl
5115 dnl ---------------------------------------------------------------------------
5116 dnl CF_LINK_DATAONLY version: 13 updated: 2020/02/08 15:59:30
5117 dnl ----------------
5118 dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
5119 dnl only data (i.e., no functions), for example NeXT.  On those systems we'll
5120 dnl have to provide wrappers for global tables to ensure they're linked
5121 dnl properly.
5122 AC_DEFUN([CF_LINK_DATAONLY],
5123 [
5124 AC_MSG_CHECKING([if data-only library module links])
5125 AC_CACHE_VAL(cf_cv_link_dataonly,[
5126         rm -f conftest.a
5127         cat >conftest.$ac_ext <<EOF
5128 #line __oline__ "configure"
5129 int     testdata[[3]] = { 123, 456, 789 };
5130 EOF
5131         if AC_TRY_EVAL(ac_compile) ; then
5132                 mv conftest.o data.o && \
5133                 ( $AR $ARFLAGS conftest.a data.o ) 2>&AC_FD_CC 1>/dev/null
5134         fi
5135         rm -f conftest.$ac_ext data.o
5136         cat >conftest.$ac_ext <<EOF
5137 #line __oline__ "configure"
5138 int     testfunc(void)
5139 {
5140 #if defined(NeXT)
5141         ${cf_cv_main_return:-return}(1);        /* I'm told this linker is broken */
5142 #else
5143         extern int testdata[[3]];
5144         return testdata[[0]] == 123
5145            &&  testdata[[1]] == 456
5146            &&  testdata[[2]] == 789;
5147 #endif
5148 }
5149 EOF
5150         if AC_TRY_EVAL(ac_compile); then
5151                 mv conftest.o func.o && \
5152                 ( $AR $ARFLAGS conftest.a func.o ) 2>&AC_FD_CC 1>/dev/null
5153         fi
5154         rm -f conftest.$ac_ext func.o
5155         ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null
5156         cf_saveLIBS="$LIBS"
5157         LIBS="conftest.a $LIBS"
5158         AC_TRY_RUN([
5159         int main(void)
5160         {
5161                 extern int testfunc();
5162                 ${cf_cv_main_return:-return} (!testfunc());
5163         }
5164         ],
5165         [cf_cv_link_dataonly=yes],
5166         [cf_cv_link_dataonly=no],
5167         [cf_cv_link_dataonly=unknown])
5168         LIBS="$cf_saveLIBS"
5169         ])
5170 AC_MSG_RESULT($cf_cv_link_dataonly)
5171
5172 if test "$cf_cv_link_dataonly" = no ; then
5173         AC_DEFINE(BROKEN_LINKER,1,[if data-only library module does not link])
5174         BROKEN_LINKER=1
5175 fi
5176 AC_SUBST(BROKEN_LINKER)
5177
5178 ])dnl
5179 dnl ---------------------------------------------------------------------------
5180 dnl CF_LINK_FUNCS version: 11 updated: 2021/04/18 14:08:47
5181 dnl -------------
5182 dnl Most Unix systems have both link and symlink, a few don't have symlink.
5183 dnl A few non-Unix systems implement symlink, but not link.
5184 dnl A few non-systems implement neither (or have nonfunctional versions).
5185 dnl
5186 dnl This allows for a 2-second difference in modification times to allow for
5187 dnl some marginal NFS implementations.
5188 AC_DEFUN([CF_LINK_FUNCS],
5189 [
5190 AC_CHECK_HEADERS( \
5191 unistd.h \
5192 )
5193 AC_CHECK_FUNCS( \
5194         remove \
5195         unlink )
5196
5197 if test "$cross_compiling" = yes ; then
5198         AC_CHECK_FUNCS( \
5199                 link \
5200                 symlink )
5201 else
5202         AC_CACHE_CHECK(if link/symlink functions work,cf_cv_link_funcs,[
5203                 cf_cv_link_funcs=
5204                 for cf_func in link symlink ; do
5205                         AC_TRY_RUN([
5206 #include <stdio.h>
5207 #include <sys/types.h>
5208 #include <sys/stat.h>
5209 #ifdef HAVE_UNISTD_H
5210 #include <unistd.h>
5211 #endif
5212 int main(void)
5213 {
5214         int fail = 0;
5215         char *src = "conftest.tmp";
5216         char *dst = "conftest.chk";
5217         struct stat src_sb, dst_sb;
5218         FILE *fp = fopen(src, "w");
5219         if (fp == 0) { fail = 3; } else {
5220                 fclose(fp); stat(src, &src_sb);
5221                 if ($cf_func(src, dst) < 0) {
5222                         fail = 1;
5223                 } else if (stat(dst, &dst_sb) < 0) {
5224                         fail = 2;
5225                 } else {
5226                         long diff = (dst_sb.st_mtime - src_sb.st_mtime);
5227                         if (diff < 0) diff = -diff;
5228                         if (diff > 2) fail = 3;
5229                 }
5230         }
5231 #ifdef HAVE_UNLINK
5232         unlink(dst); unlink(src);
5233 #else
5234         remove(dst); remove(src);
5235 #endif
5236         ${cf_cv_main_return:-return} (fail);
5237 }
5238                         ],[
5239                         cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
5240                         eval 'ac_cv_func_'$cf_func'=yes'],[
5241                         eval 'ac_cv_func_'$cf_func'=no'],[
5242                         eval 'ac_cv_func_'$cf_func'=error'])
5243                 done
5244                 test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
5245         ])
5246         test "$ac_cv_func_link"    = yes && AC_DEFINE(HAVE_LINK,1,[Define to 1 if we have link() function])
5247         test "$ac_cv_func_symlink" = yes && AC_DEFINE(HAVE_SYMLINK,1,[Define to 1 if we have symlink() function])
5248 fi
5249 ])dnl
5250 dnl ---------------------------------------------------------------------------
5251 dnl CF_MAKEFLAGS version: 21 updated: 2021/09/04 06:47:34
5252 dnl ------------
5253 dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make'
5254 dnl options to lower-levels.  It is very useful for "make -n" -- if we have it.
5255 dnl (GNU 'make' does both, something POSIX 'make', which happens to make the
5256 dnl ${MAKEFLAGS} variable incompatible because it adds the assignments :-)
5257 AC_DEFUN([CF_MAKEFLAGS],
5258 [AC_REQUIRE([AC_PROG_FGREP])dnl
5259
5260 AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[
5261         cf_cv_makeflags=''
5262         for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
5263         do
5264                 cat >cf_makeflags.tmp <<CF_EOF
5265 SHELL = $SHELL
5266 all :
5267         @ echo '.$cf_option'
5268 CF_EOF
5269                 cf_result=`${MAKE:-make} -k -f cf_makeflags.tmp 2>/dev/null | ${FGREP-fgrep} -v "ing directory" | sed -e 's,[[  ]]*$,,'`
5270                 case "$cf_result" in
5271                 (.*k|.*kw)
5272                         cf_result="`${MAKE:-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`"
5273                         case "$cf_result" in
5274                         (.*CC=*)        cf_cv_makeflags=
5275                                 ;;
5276                         (*)     cf_cv_makeflags=$cf_option
5277                                 ;;
5278                         esac
5279                         break
5280                         ;;
5281                 (.-)
5282                         ;;
5283                 (*)
5284                         CF_MSG_LOG(given option \"$cf_option\", no match \"$cf_result\")
5285                         ;;
5286                 esac
5287         done
5288         rm -f cf_makeflags.tmp
5289 ])
5290
5291 AC_SUBST(cf_cv_makeflags)
5292 ])dnl
5293 dnl ---------------------------------------------------------------------------
5294 dnl CF_MAKE_PHONY version: 3 updated: 2021/01/08 16:08:21
5295 dnl -------------
5296 dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which
5297 dnl acts as a placeholder.
5298 dnl
5299 dnl The ".PHONY" feature was proposed in 2011 here
5300 dnl     https://www.austingroupbugs.net/view.php?id=523
5301 dnl and is scheduled for release in P1003.1 Issue 8 (late 2022).
5302 dnl
5303 dnl This is not supported by SVr4 make (or SunOS 4, 4.3SD, etc), but works with
5304 dnl a few others (i.e., GNU make and the non-POSIX "BSD" make):
5305 dnl
5306 dnl + This is a GNU make feature (since April 1988, but in turn from binutils,
5307 dnl   date unspecified).
5308 dnl
5309 dnl + It was adopted in NetBSD make in June 1995.
5310 dnl
5311 dnl + The other BSD make programs are derived from the NetBSD make (and for
5312 dnl   that reason are not actually different "implementations").
5313 dnl
5314 dnl + Some features of NetBSD make were actually adapted from pmake, which
5315 dnl   began as a modified GNU make starting in 1993.
5316 dnl
5317 dnl + Version 3.8 of the dmake program in January 1992 also implemented this
5318 dnl   GNU make extension, but is less well known than the BSD make.
5319 AC_DEFUN([CF_MAKE_PHONY],[
5320 AC_CACHE_CHECK(for \".PHONY\" make-support, cf_cv_make_PHONY,[
5321         rm -rf conftest*
5322         (
5323                 mkdir conftest || exit 1
5324                 cd conftest
5325                 cat >makefile <<'CF_EOF'
5326 .PHONY: always
5327 DATA=0
5328 always: always.out
5329         @echo "** making [$]@ [$](DATA)"
5330 once: once.out
5331         @echo "** making [$]@ [$](DATA)"
5332 always.out:
5333         @echo "** making [$]@ [$](DATA)"
5334         echo [$](DATA) > [$]@
5335 once.out:
5336         @echo "** making [$]@ [$](DATA)"
5337         echo [$](DATA) > [$]@
5338 CF_EOF
5339                 for cf_data in 1 2 3
5340                 do
5341                         ${MAKE:-make} always DATA=$cf_data
5342                         ${MAKE:-make} once   DATA=$cf_data
5343                         ${MAKE:-make} -t always once
5344                         if test -f always ; then
5345                                 echo "no (case 1)" > ../conftest.tmp
5346                         elif test ! -f always.out ; then
5347                                 echo "no (case 2)" > ../conftest.tmp
5348                         elif test ! -f once.out ; then
5349                                 echo "no (case 3)" > ../conftest.tmp
5350                         elif ! cmp -s always.out once.out ; then
5351                                 echo "no (case 4)" > ../conftest.tmp
5352                                 diff always.out once.out
5353                         else
5354                                 cf_check="`cat always.out`"
5355                                 if test "x$cf_check" != "x$cf_data" ; then
5356                                         echo "no (case 5)" > ../conftest.tmp
5357                                 else
5358                                         echo yes > ../conftest.tmp
5359                                         rm -f ./*.out
5360                                         continue
5361                                 fi
5362                         fi
5363                         break
5364                 done
5365         ) >&AC_FD_CC 2>&1
5366         cf_cv_make_PHONY="`cat conftest.tmp`"
5367         rm -rf conftest*
5368 ])
5369 MAKE_NO_PHONY="#"
5370 MAKE_PHONY="#"
5371 test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY=
5372 test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY=
5373 AC_SUBST(MAKE_NO_PHONY)
5374 AC_SUBST(MAKE_PHONY)
5375 ])dnl
5376 dnl ---------------------------------------------------------------------------
5377 dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
5378 dnl ------------
5379 dnl Generate tags/TAGS targets for makefiles.  Do not generate TAGS if we have
5380 dnl a monocase filesystem.
5381 AC_DEFUN([CF_MAKE_TAGS],[
5382 AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
5383
5384 AC_CHECK_PROGS(CTAGS, exctags ctags)
5385 AC_CHECK_PROGS(ETAGS, exetags etags)
5386
5387 AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
5388
5389 if test "$cf_cv_mixedcase" = yes ; then
5390         AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
5391 else
5392         MAKE_UPPER_TAGS=no
5393 fi
5394
5395 if test "$MAKE_UPPER_TAGS" = yes ; then
5396         MAKE_UPPER_TAGS=
5397 else
5398         MAKE_UPPER_TAGS="#"
5399 fi
5400
5401 if test "$MAKE_LOWER_TAGS" = yes ; then
5402         MAKE_LOWER_TAGS=
5403 else
5404         MAKE_LOWER_TAGS="#"
5405 fi
5406
5407 AC_SUBST(CTAGS)
5408 AC_SUBST(ETAGS)
5409
5410 AC_SUBST(MAKE_UPPER_TAGS)
5411 AC_SUBST(MAKE_LOWER_TAGS)
5412 ])dnl
5413 dnl ---------------------------------------------------------------------------
5414 dnl CF_MANPAGE_FORMAT version: 15 updated: 2021/09/04 06:35:04
5415 dnl -----------------
5416 dnl Option to allow user to override automatic configuration of manpage format.
5417 dnl There are several special cases:
5418 dnl
5419 dnl     gzip - man checks for, can display gzip'd files
5420 dnl     compress - man checks for, can display compressed files
5421 dnl     BSDI - files in the cat-directories are suffixed ".0"
5422 dnl     formatted - installer should format (put files in cat-directory)
5423 dnl     catonly - installer should only format, e.g., for a turnkey system.
5424 dnl
5425 dnl There are other configurations which this macro does not test, e.g., HPUX's
5426 dnl compressed manpages (but uncompressed manpages are fine, and HPUX's naming
5427 dnl convention would not match our use).
5428 AC_DEFUN([CF_MANPAGE_FORMAT],
5429 [
5430 AC_REQUIRE([CF_PATHSEP])
5431 AC_MSG_CHECKING(format of man-pages)
5432
5433 AC_ARG_WITH(manpage-format,
5434         [  --with-manpage-format   specify manpage-format: gzip/compress/BSDI/normal and
5435                           optionally formatted/catonly, e.g., gzip,formatted],
5436         [MANPAGE_FORMAT=$withval],
5437         [MANPAGE_FORMAT=unknown])
5438
5439 test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown
5440 MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'`
5441
5442 cf_unknown=
5443
5444 case "$MANPAGE_FORMAT" in
5445 (unknown)
5446         if test -z "$MANPATH" ; then
5447                 MANPATH="/usr/man:/usr/share/man"
5448         fi
5449
5450         # look for the 'date' man-page (it is most likely to be installed!)
5451         MANPAGE_FORMAT=
5452         cf_preform="no"
5453         cf_catonly="yes"
5454         cf_example="date"
5455
5456         IFS="${IFS:-    }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
5457         for cf_dir in $MANPATH; do
5458                 test -z "$cf_dir" && cf_dir=/usr/man
5459                 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
5460                 do
5461                         cf_test=`echo "$cf_name" | sed -e 's/*//'`
5462                         if test "x$cf_test" = "x$cf_name" ; then
5463
5464                                 case "$cf_name" in
5465                                 (*.gz) MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
5466                                 (*.Z)  MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
5467                                 (*.0)  MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
5468                                 (*)    MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
5469                                 esac
5470
5471                                 case "$cf_name" in
5472                                 ($cf_dir/man*)
5473                                         cf_catonly=no
5474                                         ;;
5475                                 ($cf_dir/cat*)
5476                                         cf_preform=yes
5477                                         ;;
5478                                 esac
5479                                 break
5480                         fi
5481
5482                         # if we found a match in either man* or cat*, stop looking
5483                         if test -n "$MANPAGE_FORMAT" ; then
5484                                 cf_found=no
5485                                 test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
5486                                 test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
5487                                 case "$cf_name" in
5488                                 ($cf_dir/cat*)
5489                                         cf_found=yes
5490                                         ;;
5491                                 esac
5492                                 test "$cf_found" = yes && break
5493                         fi
5494                 done
5495                 # only check the first directory in $MANPATH where we find manpages
5496                 if test -n "$MANPAGE_FORMAT" ; then
5497                         break
5498                 fi
5499         done
5500         # if we did not find the example, just assume it is normal
5501         test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
5502         IFS="$ac_save_ifs"
5503         ;;
5504 (*)
5505         for cf_option in $MANPAGE_FORMAT; do
5506         case "$cf_option" in
5507         (gzip|compress|BSDI|normal|formatted|catonly)
5508                 ;;
5509         (*)
5510                 cf_unknown="$cf_unknown $cf_option"
5511                 ;;
5512         esac
5513         done
5514         ;;
5515 esac
5516
5517 AC_MSG_RESULT($MANPAGE_FORMAT)
5518 if test -n "$cf_unknown" ; then
5519         AC_MSG_WARN(Unexpected manpage-format $cf_unknown)
5520 fi
5521 ])dnl
5522 dnl ---------------------------------------------------------------------------
5523 dnl CF_MANPAGE_RENAMES version: 12 updated: 2021/01/01 16:53:59
5524 dnl ------------------
5525 dnl The Debian people have their own naming convention for manpages.  This
5526 dnl option lets us override the name of the file containing renaming, or
5527 dnl disable it altogether.
5528 AC_DEFUN([CF_MANPAGE_RENAMES],
5529 [
5530 AC_MSG_CHECKING(for manpage renaming)
5531
5532 AC_ARG_WITH(manpage-renames,
5533         [  --with-manpage-renames  specify manpage-renaming],
5534         [MANPAGE_RENAMES=$withval],
5535         [MANPAGE_RENAMES=yes])
5536
5537 case ".$MANPAGE_RENAMES" in
5538 (.no)
5539         ;;
5540 (.|.yes)
5541         # Debian 'man' program?
5542         if test -f /etc/debian_version ; then
5543                 MANPAGE_RENAMES=`cd "$srcdir" && pwd`/man/man_db.renames
5544         else
5545                 MANPAGE_RENAMES=no
5546         fi
5547         ;;
5548 esac
5549
5550 if test "$MANPAGE_RENAMES" != no ; then
5551         if test -f "$srcdir/man/$MANPAGE_RENAMES" ; then
5552                 MANPAGE_RENAMES=`cd "$srcdir/man" && pwd`/$MANPAGE_RENAMES
5553         elif test ! -f "$MANPAGE_RENAMES" ; then
5554                 AC_MSG_ERROR(not a filename: $MANPAGE_RENAMES)
5555         fi
5556
5557         test ! -d man && mkdir man
5558
5559         # Construct a sed-script to perform renaming within man-pages
5560         if test -n "$MANPAGE_RENAMES" ; then
5561                 test ! -d man && mkdir man
5562                 $SHELL "$srcdir/man/make_sed.sh" "$MANPAGE_RENAMES" >./edit_man.sed
5563         fi
5564 fi
5565
5566 AC_MSG_RESULT($MANPAGE_RENAMES)
5567 AC_SUBST(MANPAGE_RENAMES)
5568 ])dnl
5569 dnl ---------------------------------------------------------------------------
5570 dnl CF_MANPAGE_SYMLINKS version: 6 updated: 2015/04/17 21:13:04
5571 dnl -------------------
5572 dnl Some people expect each tool to make all aliases for manpages in the
5573 dnl man-directory.  This accommodates the older, less-capable implementations
5574 dnl of 'man', and is optional.
5575 AC_DEFUN([CF_MANPAGE_SYMLINKS],
5576 [
5577 AC_MSG_CHECKING(if manpage aliases will be installed)
5578
5579 AC_ARG_WITH(manpage-aliases,
5580         [  --with-manpage-aliases  specify manpage-aliases using .so],
5581         [MANPAGE_ALIASES=$withval],
5582         [MANPAGE_ALIASES=yes])
5583
5584 AC_MSG_RESULT($MANPAGE_ALIASES)
5585
5586 case "x$LN_S" in
5587 (xln*)
5588         cf_use_symlinks=yes
5589         ;;
5590 (*)
5591         cf_use_symlinks=no
5592         ;;
5593 esac
5594
5595 MANPAGE_SYMLINKS=no
5596 if test "$MANPAGE_ALIASES" = yes ; then
5597 AC_MSG_CHECKING(if manpage symlinks should be used)
5598
5599 AC_ARG_WITH(manpage-symlinks,
5600         [  --with-manpage-symlinks specify manpage-aliases using symlinks],
5601         [MANPAGE_SYMLINKS=$withval],
5602         [MANPAGE_SYMLINKS=$cf_use_symlinks])
5603
5604 if test "$$cf_use_symlinks" = no; then
5605 if test "$MANPAGE_SYMLINKS" = yes ; then
5606         AC_MSG_WARN(cannot make symlinks, will use .so files)
5607         MANPAGE_SYMLINKS=no
5608 fi
5609 fi
5610
5611 AC_MSG_RESULT($MANPAGE_SYMLINKS)
5612 fi
5613
5614 ])dnl
5615 dnl ---------------------------------------------------------------------------
5616 dnl CF_MANPAGE_TBL version: 3 updated: 2002/01/19 22:51:32
5617 dnl --------------
5618 dnl This option causes manpages to be run through tbl(1) to generate tables
5619 dnl correctly.
5620 AC_DEFUN([CF_MANPAGE_TBL],
5621 [
5622 AC_MSG_CHECKING(for manpage tbl)
5623
5624 AC_ARG_WITH(manpage-tbl,
5625         [  --with-manpage-tbl      specify manpage processing with tbl],
5626         [MANPAGE_TBL=$withval],
5627         [MANPAGE_TBL=no])
5628
5629 AC_MSG_RESULT($MANPAGE_TBL)
5630 ])dnl
5631 dnl ---------------------------------------------------------------------------
5632 dnl CF_MAN_PAGES version: 51 updated: 2021/01/05 16:29:19
5633 dnl ------------
5634 dnl Try to determine if the man-pages on the system are compressed, and if
5635 dnl so, what format is used.  Use this information to construct a script that
5636 dnl will install man-pages.
5637 AC_DEFUN([CF_MAN_PAGES],
5638 [
5639 CF_HELP_MESSAGE(Options to Specify How Manpages are Installed:)
5640 CF_MANPAGE_FORMAT
5641 CF_MANPAGE_RENAMES
5642 CF_MANPAGE_SYMLINKS
5643 CF_MANPAGE_TBL
5644
5645 if test "$prefix" = "NONE" ; then
5646         cf_prefix="$ac_default_prefix"
5647 else
5648         cf_prefix="$prefix"
5649 fi
5650
5651 case "$MANPAGE_FORMAT" in
5652 (*catonly*)
5653         cf_format=yes
5654         cf_inboth=no
5655         ;;
5656 (*formatted*)
5657         cf_format=yes
5658         cf_inboth=yes
5659         ;;
5660 (*)
5661         cf_format=no
5662         cf_inboth=no
5663         ;;
5664 esac
5665
5666 test ! -d man && mkdir man
5667
5668 cf_so_strip=
5669 cf_compress=
5670 case "$MANPAGE_FORMAT" in
5671 (*compress*)
5672         cf_so_strip="Z"
5673         cf_compress=compress
5674         ;;
5675 (*gzip*)
5676         cf_so_strip="gz"
5677         cf_compress=gzip
5678         ;;
5679 esac
5680
5681 cf_edit_man=./edit_man.sh
5682 cf_man_alias=`pwd`/man_alias.sed
5683
5684 cat >$cf_edit_man <<CF_EOF
5685 #! $SHELL
5686 # this script is generated by the configure-script CF_MAN_PAGES macro.
5687
5688 prefix="$cf_prefix"
5689 datarootdir="$datarootdir"
5690 datadir="$datadir"
5691
5692 NCURSES_MAJOR="$NCURSES_MAJOR"
5693 NCURSES_MINOR="$NCURSES_MINOR"
5694 NCURSES_PATCH="$NCURSES_PATCH"
5695
5696 NCURSES_OSPEED="$NCURSES_OSPEED"
5697 TERMINFO="$TERMINFO"
5698
5699 INSTALL="$INSTALL"
5700 INSTALL_DATA="$INSTALL_DATA"
5701
5702 transform="$program_transform_name"
5703
5704 TMP=\${TMPDIR:=/tmp}/man\$\$
5705 trap "rm -f \$TMP" 0 1 2 3 15
5706
5707 form=\[$]1
5708 shift || exit 1
5709
5710 verb=\[$]1
5711 shift || exit 1
5712
5713 mandir=\[$]1
5714 shift || exit 1
5715
5716 srcdir=\[$]1
5717 top_srcdir=\[$]srcdir/..
5718 shift || exit 1
5719
5720 if test "\$form" = normal ; then
5721         if test "$cf_format" = yes ; then
5722         if test "$cf_inboth" = no ; then
5723                 $SHELL "\[$]0" format "\$verb" "\$mandir" "\$srcdir" "\[$]@"
5724                 exit $?
5725         fi
5726         fi
5727         cf_subdir=\$mandir/man
5728         cf_tables=$MANPAGE_TBL
5729 else
5730         cf_subdir=\$mandir/cat
5731         cf_tables=yes
5732 fi
5733
5734 # process the list of source-files
5735 for i in "\[$]@" ; do
5736 case \$i in
5737 (*.orig|*.rej) ;;
5738 (*.[[0-9]]*)
5739         section=\`expr "\$i" : '.*\\.\\([[0-9]]\\)[[xm]]*'\`;
5740         if test "\$verb" = installing ; then
5741         if test ! -d "\$cf_subdir\${section}" ; then
5742                 mkdir -p "\$cf_subdir\$section"
5743         fi
5744         fi
5745
5746         # replace variables in man page
5747         if test ! -f "$cf_man_alias" ; then
5748 cat >>$cf_man_alias <<-CF_EOF2
5749                 s,@DATADIR@,\$datadir,g
5750                 s,@TERMINFO@,\${TERMINFO:="no default value"},g
5751                 s,@TERMINFO_DIRS@,\${TERMINFO_DIRS:="no default value"},g
5752                 s,@NCURSES_MAJOR@,\${NCURSES_MAJOR:="no default value"},g
5753                 s,@NCURSES_MINOR@,\${NCURSES_MINOR:="no default value"},g
5754                 s,@NCURSES_PATCH@,\${NCURSES_PATCH:="no default value"},g
5755                 s,@NCURSES_OSPEED@,\${NCURSES_OSPEED:="no default value"},g
5756 CF_EOF
5757         ifelse($1,,,[
5758         for cf_name in $1
5759         do
5760                 cf_NAME=`echo "$cf_name" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
5761                 cf_name=`echo "$cf_name" | sed "$program_transform_name"`
5762 cat >>$cf_edit_man <<-CF_EOF
5763                 s,@$cf_NAME@,$cf_name,g
5764 CF_EOF
5765         done
5766         ])
5767 cat >>$cf_edit_man <<CF_EOF
5768 CF_EOF2
5769                 echo "...made $cf_man_alias"
5770         fi
5771
5772         aliases=
5773         cf_source=\`basename "\$i"\`
5774         inalias=\$cf_source
5775         test ! -f "\$inalias" && inalias="\$srcdir/\$inalias"
5776         if test ! -f "\$inalias" ; then
5777                 echo ".. skipped \$cf_source"
5778                 continue
5779         fi
5780 CF_EOF
5781
5782 if test "$MANPAGE_ALIASES" != no ; then
5783 cat >>$cf_edit_man <<CF_EOF
5784         nCurses=ignore.3x
5785         test "$with_curses_h" = yes && nCurses=ncurses.3x
5786         aliases=\`sed -f "\$top_srcdir/man/manlinks.sed" "\$inalias" |sed -f "$cf_man_alias" | sort -u; test "\$inalias" = "\$nCurses" && echo curses\`
5787 CF_EOF
5788 fi
5789
5790 if test "$MANPAGE_RENAMES" = no ; then
5791 cat >>$cf_edit_man <<CF_EOF
5792         # perform program transformations for section 1 man pages
5793         if test \$section = 1 ; then
5794                 cf_target=\$cf_subdir\${section}/\`echo \$cf_source|sed "\${transform}"\`
5795         else
5796                 cf_target=\$cf_subdir\${section}/\$cf_source
5797         fi
5798 CF_EOF
5799 else
5800 cat >>$cf_edit_man <<CF_EOF
5801         cf_target=\`grep "^\$cf_source" $MANPAGE_RENAMES | $AWK '{print \[$]2}'\`
5802         if test -z "\$cf_target" ; then
5803                 echo "? missing rename for \$cf_source"
5804                 cf_target="\$cf_source"
5805         fi
5806         cf_target="\$cf_subdir\${section}/\${cf_target}"
5807
5808 CF_EOF
5809 fi
5810
5811 cat >>$cf_edit_man <<CF_EOF
5812         sed     -f "$cf_man_alias" \\
5813 CF_EOF
5814
5815 if test -f "$MANPAGE_RENAMES" ; then
5816 cat >>$cf_edit_man <<CF_EOF
5817                 < "\$i" | sed -f `pwd`/edit_man.sed >\$TMP
5818 CF_EOF
5819 else
5820 cat >>$cf_edit_man <<CF_EOF
5821                 < "\$i" >\$TMP
5822 CF_EOF
5823 fi
5824
5825 cat >>$cf_edit_man <<CF_EOF
5826 if test \$cf_tables = yes ; then
5827         tbl \$TMP >\$TMP.out
5828         mv \$TMP.out \$TMP
5829 fi
5830 CF_EOF
5831
5832 if test "$with_overwrite" != yes ; then
5833 cat >>$cf_edit_man <<CF_EOF
5834         sed -e "/\\#[    ]*include/s,<curses.h,<ncurses$LIB_SUFFIX/curses.h," < \$TMP >\$TMP.out
5835         mv \$TMP.out \$TMP
5836 CF_EOF
5837 fi
5838
5839 if test "$with_curses_h" != yes ; then
5840 cat >>$cf_edit_man <<CF_EOF
5841         sed -e "/\\#[    ]*include/s,curses.h,ncurses.h," < \$TMP >\$TMP.out
5842         mv \$TMP.out \$TMP
5843 CF_EOF
5844 fi
5845
5846 cat >>$cf_edit_man <<CF_EOF
5847         if test "\$form" = format ; then
5848                 nroff -man \$TMP >\$TMP.out
5849                 mv \$TMP.out \$TMP
5850         fi
5851 CF_EOF
5852
5853 if test -n "$cf_compress" ; then
5854 cat >>$cf_edit_man <<CF_EOF
5855         if test "\$verb" = installing ; then
5856         if ( "$cf_compress" -f \$TMP )
5857         then
5858                 mv \$TMP.$cf_so_strip \$TMP
5859         fi
5860         fi
5861         cf_target="\$cf_target.$cf_so_strip"
5862 CF_EOF
5863 fi
5864
5865 case "$MANPAGE_FORMAT" in
5866 (*BSDI*)
5867 cat >>$cf_edit_man <<CF_EOF
5868         if test "\$form" = format ; then
5869                 # BSDI installs only .0 suffixes in the cat directories
5870                 cf_target="\`echo \$cf_target|sed -e 's/\\.[[1-9]]\\+[[a-z]]*/.0/'\`"
5871         fi
5872 CF_EOF
5873   ;;
5874 esac
5875
5876 cat >>$cf_edit_man <<CF_EOF
5877         suffix=\`basename "\$cf_target" | sed -e 's%^[[^.]]*%%'\`
5878         if test "\$verb" = installing ; then
5879                 echo "\$verb \$cf_target"
5880                 \$INSTALL_DATA \$TMP "\$cf_target"
5881                 test -d "\$cf_subdir\${section}" &&
5882                 test -n "\$aliases" && (
5883                         cd "\$cf_subdir\${section}" && (
5884                                 cf_source=\`echo "\$cf_target" |sed -e 's%^.*/\\([[^/]][[^/]]*/[[^/]][[^/]]*$\\)%\\1%'\`
5885                                 test -n "$cf_so_strip" && cf_source=\`echo "\$cf_source" |sed -e 's%\\.$cf_so_strip\$%%'\`
5886                                 cf_target=\`basename "\$cf_target"\`
5887                                 for cf_alias in \$aliases
5888                                 do
5889                                         if test "\$section" = 1 ; then
5890                                                 cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\`
5891                                         fi
5892
5893                                         if test "$MANPAGE_SYMLINKS" = yes ; then
5894                                                 if test -f "\$cf_alias\${suffix}" ; then
5895                                                         if ( cmp -s "\$cf_target" "\$cf_alias\${suffix}" )
5896                                                         then
5897                                                                 continue
5898                                                         fi
5899                                                 fi
5900                                                 echo ".. \$verb alias \$cf_alias\${suffix}"
5901 CF_EOF
5902 case "x$LN_S" in
5903 (*-f)
5904 cat >>$cf_edit_man <<CF_EOF
5905                                                 $LN_S "\$cf_target" "\$cf_alias\${suffix}"
5906 CF_EOF
5907         ;;
5908 (*)
5909 cat >>$cf_edit_man <<CF_EOF
5910                                                 rm -f "\$cf_alias\${suffix}"
5911                                                 $LN_S "\$cf_target" "\$cf_alias\${suffix}"
5912 CF_EOF
5913         ;;
5914 esac
5915 cat >>$cf_edit_man <<CF_EOF
5916                                         elif test "\$cf_target" != "\$cf_alias\${suffix}" ; then
5917                                                 echo ".so \$cf_source" >\$TMP
5918 CF_EOF
5919 if test -n "$cf_compress" ; then
5920 cat >>$cf_edit_man <<CF_EOF
5921                                                 if test -n "$cf_so_strip" ; then
5922                                                         "$cf_compress" -f \$TMP
5923                                                         mv \$TMP.$cf_so_strip \$TMP
5924                                                 fi
5925 CF_EOF
5926 fi
5927 cat >>$cf_edit_man <<CF_EOF
5928                                                 echo ".. \$verb alias \$cf_alias\${suffix}"
5929                                                 rm -f "\$cf_alias\${suffix}"
5930                                                 \$INSTALL_DATA \$TMP "\$cf_alias\${suffix}"
5931                                         fi
5932                                 done
5933                         )
5934                 )
5935         elif test "\$verb" = removing ; then
5936                 test -f "\$cf_target" && (
5937                         echo "\$verb \$cf_target"
5938                         rm -f "\$cf_target"
5939                 )
5940                 test -d "\$cf_subdir\${section}" &&
5941                 test -n "\$aliases" && (
5942                         cd "\$cf_subdir\${section}" && (
5943                                 for cf_alias in \$aliases
5944                                 do
5945                                         if test "\$section" = 1 ; then
5946                                                 cf_alias=\`echo "\$cf_alias" |sed "\${transform}"\`
5947                                         fi
5948
5949                                         echo ".. \$verb alias \$cf_alias\${suffix}"
5950                                         rm -f "\$cf_alias\${suffix}"
5951                                 done
5952                         )
5953                 )
5954         else
5955 #               echo ".hy 0"
5956                 cat \$TMP
5957         fi
5958         ;;
5959 esac
5960 done
5961
5962 if test "$cf_inboth" = yes ; then
5963 if test "\$form" != format ; then
5964         $SHELL "\[$]0" format "\$verb" "\$mandir" "\$srcdir" "\[$]@"
5965 fi
5966 fi
5967
5968 exit 0
5969 CF_EOF
5970 chmod 755 "$cf_edit_man"
5971
5972 ])dnl
5973 dnl ---------------------------------------------------------------------------
5974 dnl CF_MAP_LIB_BASENAME version: 2 updated: 2021/01/02 17:09:14
5975 dnl -------------------
5976 dnl Convert a default-libname to the actual one used via CF_WITH_LIB_BASENAME.
5977 dnl
5978 dnl $1 = variable to set
5979 dnl $2 = default-libname
5980 AC_DEFUN([CF_MAP_LIB_BASENAME],[
5981 CF_UPPER(cf_map_lib_basename,$2)
5982 eval $1="\$${cf_map_lib_basename}_NAME"
5983 ])dnl
5984 dnl ---------------------------------------------------------------------------
5985 dnl CF_MATH_LIB version: 10 updated: 2020/12/31 18:40:20
5986 dnl -----------
5987 dnl Checks for libraries.  At least one UNIX system, Apple Macintosh
5988 dnl Rhapsody 5.5, does not have -lm.  We cannot use the simpler
5989 dnl AC_CHECK_LIB(m,sin), because that fails for C++.
5990 AC_DEFUN([CF_MATH_LIB],
5991 [
5992 AC_CACHE_CHECK(if -lm needed for math functions,
5993         cf_cv_need_libm,[
5994         AC_TRY_LINK([
5995         #include <stdio.h>
5996         #include <stdlib.h>
5997         #include <math.h>
5998         ],
5999         [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)],
6000         [cf_cv_need_libm=no],
6001         [cf_cv_need_libm=yes])])
6002 if test "$cf_cv_need_libm" = yes
6003 then
6004 ifelse($1,,[
6005         CF_ADD_LIB(m)
6006 ],[$1=-lm])
6007 fi
6008 ])
6009 dnl ---------------------------------------------------------------------------
6010 dnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59
6011 dnl ----------------------
6012 dnl Check if the file-system supports mixed-case filenames.  If we're able to
6013 dnl create a lowercase name and see it as uppercase, it doesn't support that.
6014 AC_DEFUN([CF_MIXEDCASE_FILENAMES],
6015 [
6016 AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
6017 if test "$cross_compiling" = yes ; then
6018         case "$target_alias" in
6019         (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*)
6020                 cf_cv_mixedcase=no
6021                 ;;
6022         (*)
6023                 cf_cv_mixedcase=yes
6024                 ;;
6025         esac
6026 else
6027         rm -f conftest CONFTEST
6028         echo test >conftest
6029         if test -f CONFTEST ; then
6030                 cf_cv_mixedcase=no
6031         else
6032                 cf_cv_mixedcase=yes
6033         fi
6034         rm -f conftest CONFTEST
6035 fi
6036 ])
6037 test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
6038 ])dnl
6039 dnl ---------------------------------------------------------------------------
6040 dnl CF_MKSTEMP version: 11 updated: 2021/01/01 13:31:04
6041 dnl ----------
6042 dnl Check for a working mkstemp.  This creates two files, checks that they are
6043 dnl successfully created and distinct (AmigaOS apparently fails on the last).
6044 AC_DEFUN([CF_MKSTEMP],[
6045 AC_CHECK_HEADERS( \
6046 unistd.h \
6047 )
6048 AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
6049 rm -rf ./conftest*
6050 AC_TRY_RUN([
6051 #include <sys/types.h>
6052 #ifdef HAVE_UNISTD_H
6053 #include <unistd.h>
6054 #endif
6055 #include <stdlib.h>
6056 #include <stdio.h>
6057 #include <string.h>
6058 #include <sys/stat.h>
6059 int main(void)
6060 {
6061         char *tmpl = "conftestXXXXXX";
6062         char name[2][80];
6063         int n;
6064         int result = 0;
6065         int fd;
6066         struct stat sb;
6067
6068         umask(077);
6069         for (n = 0; n < 2; ++n) {
6070                 strcpy(name[n], tmpl);
6071                 if ((fd = mkstemp(name[n])) >= 0) {
6072                         if (!strcmp(name[n], tmpl)
6073                          || stat(name[n], &sb) != 0
6074                          || (sb.st_mode & S_IFMT) != S_IFREG
6075                          || (sb.st_mode & 077) != 0) {
6076                                 result = 1;
6077                         }
6078                         close(fd);
6079                 }
6080         }
6081         if (result == 0
6082          && !strcmp(name[0], name[1]))
6083                 result = 1;
6084         ${cf_cv_main_return:-return}(result);
6085 }
6086 ],[cf_cv_func_mkstemp=yes
6087 ],[cf_cv_func_mkstemp=no
6088 ],[cf_cv_func_mkstemp=maybe])
6089 ])
6090 if test "x$cf_cv_func_mkstemp" = xmaybe ; then
6091         AC_CHECK_FUNC(mkstemp)
6092 fi
6093 if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then
6094         AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.])
6095 fi
6096 ])dnl
6097 dnl ---------------------------------------------------------------------------
6098 dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
6099 dnl ----------
6100 dnl Write a debug message to config.log, along with the line number in the
6101 dnl configure script.
6102 AC_DEFUN([CF_MSG_LOG],[
6103 echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
6104 ])dnl
6105 dnl ---------------------------------------------------------------------------
6106 dnl CF_NCURSES_ABI_6 version: 4 updated: 2021/01/01 13:31:04
6107 dnl ----------------
6108 dnl Set ncurses' ABI to 6 unless overridden by explicit configure option, and
6109 dnl warn about this.
6110 AC_DEFUN([CF_NCURSES_ABI_6],[
6111 if test "${with_abi_version+set}" != set; then
6112         case "$cf_cv_rel_version" in
6113         (5.*)
6114                 cf_cv_rel_version=6.0
6115                 cf_cv_abi_version=6
6116                 AC_MSG_WARN(overriding ABI version to $cf_cv_abi_version)
6117                 ;;
6118         esac
6119 fi
6120 ])dnl
6121 dnl ---------------------------------------------------------------------------
6122 dnl CF_NCURSES_WITH_ABI_VERSION version: 3 updated: 2021/01/01 13:31:04
6123 dnl ---------------------------
6124 dnl Allow ncurses's ABI to be overridden.  Generally this happens when a
6125 dnl packager has incremented the ABI past that used in the original package,
6126 dnl and wishes to keep doing this.
6127 dnl
6128 dnl $1 is the package name, if any, to derive a corresponding {package}_ABI
6129 dnl symbol.
6130 AC_DEFUN([CF_NCURSES_WITH_ABI_VERSION],[
6131 CF_WITH_ABI_VERSION($1)
6132 if test "x$cf_cv_abi_version" != "x$with_abi_version"
6133 then
6134         case "$cf_cv_rel_version" in
6135         (5.*)
6136                 cf_cv_rel_version=$with_abi_version.0
6137                 ;;
6138         esac
6139 fi
6140 ])dnl
6141 dnl ---------------------------------------------------------------------------
6142 dnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41
6143 dnl ------------------
6144 dnl see CF_WITH_NO_LEAKS
6145 dnl
6146 dnl $1 = option/name
6147 dnl $2 = help-text
6148 dnl $3 = symbol to define if the option is set
6149 dnl $4 = additional actions to take if the option is set
6150 AC_DEFUN([CF_NO_LEAKS_OPTION],[
6151 AC_MSG_CHECKING(if you want to use $1 for testing)
6152 AC_ARG_WITH($1,
6153         [$2],
6154         [case "x$withval" in
6155         (x|xno) ;;
6156         (*)
6157                 : "${with_cflags:=-g}"
6158                 : "${enable_leaks:=no}"
6159                 with_$1=yes
6160                 AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
6161          $4
6162 ])
6163                 ;;
6164         esac],
6165         [with_$1=])
6166 AC_MSG_RESULT(${with_$1:-no})
6167
6168 case ".$with_cflags" in
6169 (.*-g*)
6170         case .$CFLAGS in
6171         (.*-g*)
6172                 ;;
6173         (*)
6174                 CF_ADD_CFLAGS([-g])
6175                 ;;
6176         esac
6177         ;;
6178 esac
6179 ])dnl
6180 dnl ---------------------------------------------------------------------------
6181 dnl CF_NUMBER_SYNTAX version: 2 updated: 2015/04/17 21:13:04
6182 dnl ----------------
6183 dnl Check if the given variable is a number.  If not, report an error.
6184 dnl $1 is the variable
6185 dnl $2 is the message
6186 AC_DEFUN([CF_NUMBER_SYNTAX],[
6187 if test -n "$1" ; then
6188   case $1 in
6189   ([[0-9]]*)
6190         ;;
6191   (*)
6192         AC_MSG_ERROR($2 is not a number: $1)
6193         ;;
6194   esac
6195 else
6196   AC_MSG_ERROR($2 value is empty)
6197 fi
6198 ])dnl
6199 dnl ---------------------------------------------------------------------------
6200 dnl CF_OBJ_SUBDIR version: 8 updated: 2021/01/01 13:31:04
6201 dnl -------------
6202 dnl Compute the object-directory name from the given model name
6203 AC_DEFUN([CF_OBJ_SUBDIR],
6204 [
6205         case $1 in
6206         (libtool) $2='obj_lo'  ;;
6207         (normal)  $2='objects' ;;
6208         (debug)   $2='obj_g' ;;
6209         (profile) $2='obj_p' ;;
6210         (shared)
6211                 case "$cf_cv_system_name" in
6212                 (cygwin|msys)
6213                         $2='objects' ;;
6214                 (*)
6215                         $2='obj_s' ;;
6216                 esac
6217         esac
6218 ])dnl
6219 dnl ---------------------------------------------------------------------------
6220 dnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04
6221 dnl ----------
6222 dnl Provide a value for the $PATH and similar separator (or amend the value
6223 dnl as provided in autoconf 2.5x).
6224 AC_DEFUN([CF_PATHSEP],
6225 [
6226         AC_MSG_CHECKING(for PATH separator)
6227         case "$cf_cv_system_name" in
6228         (os2*)  PATH_SEPARATOR=';'  ;;
6229         (*)     ${PATH_SEPARATOR:=':'}  ;;
6230         esac
6231 ifelse([$1],,,[$1=$PATH_SEPARATOR])
6232         AC_SUBST(PATH_SEPARATOR)
6233         AC_MSG_RESULT($PATH_SEPARATOR)
6234 ])dnl
6235 dnl ---------------------------------------------------------------------------
6236 dnl CF_PATH_PROG version: 12 updated: 2021/01/02 09:31:20
6237 dnl ------------
6238 dnl Check for a given program, defining corresponding symbol.
6239 dnl     $1 = environment variable, which is suffixed by "_PATH" in the #define.
6240 dnl     $2 = program name to find.
6241 dnl     $3 = optional list of additional program names to test.
6242 dnl $4 = $PATH
6243 dnl
6244 dnl If there is more than one token in the result, #define the remaining tokens
6245 dnl to $1_ARGS.  We need this for 'install' in particular.
6246 dnl
6247 dnl FIXME: we should allow this to be overridden by environment variables
6248 dnl
6249 AC_DEFUN([CF_PATH_PROG],[
6250 AC_REQUIRE([CF_PATHSEP])
6251 test -z "[$]$1" && $1="$2"
6252 AC_PATH_PROGS($1,[$]$1 $2 ifelse($3,,,$3),[$]$1, ifelse($4,,,$4))
6253
6254 cf_path_prog=""
6255 cf_path_args=""
6256 IFS="${IFS:-    }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR"
6257 for cf_temp in $ac_cv_path_$1
6258 do
6259         if test -z "$cf_path_prog" ; then
6260                 if test "$with_full_paths" = yes ; then
6261                         CF_PATH_SYNTAX(cf_temp,break)
6262                         cf_path_prog="$cf_temp"
6263                 else
6264                         cf_path_prog="`basename "$cf_temp"`"
6265                 fi
6266         elif test -z "$cf_path_args" ; then
6267                 cf_path_args="$cf_temp"
6268         else
6269                 cf_path_args="$cf_path_args $cf_temp"
6270         fi
6271 done
6272 IFS="$cf_save_ifs"
6273
6274 if test -n "$cf_path_prog" ; then
6275         CF_MSG_LOG(defining path for ${cf_path_prog})
6276         AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog",Define to pathname $1)
6277         test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args",Define to provide args for $1)
6278 fi
6279 ])dnl
6280 dnl ---------------------------------------------------------------------------
6281 dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20
6282 dnl --------------
6283 dnl Check the argument to see that it looks like a pathname.  Rewrite it if it
6284 dnl begins with one of the prefix/exec_prefix variables, and then again if the
6285 dnl result begins with 'NONE'.  This is necessary to work around autoconf's
6286 dnl delayed evaluation of those symbols.
6287 AC_DEFUN([CF_PATH_SYNTAX],[
6288 if test "x$prefix" != xNONE; then
6289         cf_path_syntax="$prefix"
6290 else
6291         cf_path_syntax="$ac_default_prefix"
6292 fi
6293
6294 case ".[$]$1" in
6295 (.\[$]\(*\)*|.\'*\'*)
6296         ;;
6297 (..|./*|.\\*)
6298         ;;
6299 (.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
6300         ;;
6301 (.\[$]\{*prefix\}*|.\[$]\{*dir\}*)
6302         eval $1="[$]$1"
6303         case ".[$]$1" in
6304         (.NONE/*)
6305                 $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
6306                 ;;
6307         esac
6308         ;;
6309 (.no|.NONE/*)
6310         $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
6311         ;;
6312 (*)
6313         ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
6314         ;;
6315 esac
6316 ])dnl
6317 dnl ---------------------------------------------------------------------------
6318 dnl CF_PKG_CONFIG version: 12 updated: 2021/10/10 20:18:09
6319 dnl -------------
6320 dnl Check for the package-config program, unless disabled by command-line.
6321 dnl
6322 dnl Sets $PKG_CONFIG to the pathname of the pkg-config program.
6323 AC_DEFUN([CF_PKG_CONFIG],
6324 [
6325 AC_MSG_CHECKING(if you want to use pkg-config)
6326 AC_ARG_WITH(pkg-config,
6327         [  --with-pkg-config{=path} enable/disable use of pkg-config],
6328         [cf_pkg_config=$withval],
6329         [cf_pkg_config=yes])
6330 AC_MSG_RESULT($cf_pkg_config)
6331
6332 case "$cf_pkg_config" in
6333 (no)
6334         PKG_CONFIG=none
6335         ;;
6336 (yes)
6337         CF_ACVERSION_CHECK(2.52,
6338                 [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
6339                 [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
6340         ;;
6341 (*)
6342         PKG_CONFIG=$withval
6343         ;;
6344 esac
6345
6346 test -z "$PKG_CONFIG" && PKG_CONFIG=none
6347 if test "$PKG_CONFIG" != none ; then
6348         CF_PATH_SYNTAX(PKG_CONFIG)
6349 elif test "x$cf_pkg_config" != xno ; then
6350         AC_MSG_WARN(pkg-config is not installed)
6351 fi
6352
6353 AC_SUBST(PKG_CONFIG)
6354 ])dnl
6355 dnl ---------------------------------------------------------------------------
6356 dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
6357 dnl -----------------
6358 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
6359 dnl
6360 dnl     POSIX.1-1990                            _POSIX_SOURCE
6361 dnl     POSIX.1-1990 and                        _POSIX_SOURCE and
6362 dnl             POSIX.2-1992 C-Language                 _POSIX_C_SOURCE=2
6363 dnl             Bindings Option
6364 dnl     POSIX.1b-1993                           _POSIX_C_SOURCE=199309L
6365 dnl     POSIX.1c-1996                           _POSIX_C_SOURCE=199506L
6366 dnl     X/Open 2000                             _POSIX_C_SOURCE=200112L
6367 dnl
6368 dnl Parameters:
6369 dnl     $1 is the nominal value for _POSIX_C_SOURCE
6370 AC_DEFUN([CF_POSIX_C_SOURCE],
6371 [AC_REQUIRE([CF_POSIX_VISIBLE])dnl
6372
6373 if test "$cf_cv_posix_visible" = no; then
6374
6375 cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
6376
6377 cf_save_CFLAGS="$CFLAGS"
6378 cf_save_CPPFLAGS="$CPPFLAGS"
6379
6380 CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
6381 CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
6382
6383 AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
6384         CF_MSG_LOG(if the symbol is already defined go no further)
6385         AC_TRY_COMPILE([#include <sys/types.h>],[
6386 #ifndef _POSIX_C_SOURCE
6387 make an error
6388 #endif],
6389         [cf_cv_posix_c_source=no],
6390         [cf_want_posix_source=no
6391          case .$cf_POSIX_C_SOURCE in
6392          (.[[12]]??*)
6393                 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
6394                 ;;
6395          (.2)
6396                 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
6397                 cf_want_posix_source=yes
6398                 ;;
6399          (.*)
6400                 cf_want_posix_source=yes
6401                 ;;
6402          esac
6403          if test "$cf_want_posix_source" = yes ; then
6404                 AC_TRY_COMPILE([#include <sys/types.h>],[
6405 #ifdef _POSIX_SOURCE
6406 make an error
6407 #endif],[],
6408                 cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
6409          fi
6410          CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
6411          CFLAGS="$cf_trim_CFLAGS"
6412          CPPFLAGS="$cf_trim_CPPFLAGS"
6413          CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
6414          CF_MSG_LOG(if the second compile does not leave our definition intact error)
6415          AC_TRY_COMPILE([#include <sys/types.h>],[
6416 #ifndef _POSIX_C_SOURCE
6417 make an error
6418 #endif],,
6419          [cf_cv_posix_c_source=no])
6420          CFLAGS="$cf_save_CFLAGS"
6421          CPPFLAGS="$cf_save_CPPFLAGS"
6422         ])
6423 ])
6424
6425 if test "$cf_cv_posix_c_source" != no ; then
6426         CFLAGS="$cf_trim_CFLAGS"
6427         CPPFLAGS="$cf_trim_CPPFLAGS"
6428         CF_ADD_CFLAGS($cf_cv_posix_c_source)
6429 fi
6430
6431 fi # cf_cv_posix_visible
6432
6433 ])dnl
6434 dnl ---------------------------------------------------------------------------
6435 dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
6436 dnl ----------------
6437 dnl POSIX documents test-macros which an application may set before any system
6438 dnl headers are included to make features available.
6439 dnl
6440 dnl Some BSD platforms (originally FreeBSD, but copied by a few others)
6441 dnl diverged from POSIX in 2002 by setting symbols which make all of the most
6442 dnl recent features visible in the system header files unless the application
6443 dnl overrides the corresponding test-macros.  Doing that introduces portability
6444 dnl problems.
6445 dnl
6446 dnl This macro makes a special check for the symbols used for this, to avoid a
6447 dnl conflicting definition.
6448 AC_DEFUN([CF_POSIX_VISIBLE],
6449 [
6450 AC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
6451 AC_TRY_COMPILE([#include <stdio.h>],[
6452 #if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
6453         && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
6454         && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
6455         && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
6456 #error conflicting symbols found
6457 #endif
6458 ],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
6459 ])
6460 ])dnl
6461 dnl ---------------------------------------------------------------------------
6462 dnl CF_PREDEFINE version: 2 updated: 2010/05/26 16:44:57
6463 dnl ------------
6464 dnl Add definitions to CPPFLAGS to ensure they're predefined for all compiles.
6465 dnl
6466 dnl $1 = symbol to test
6467 dnl $2 = value (if any) to use for a predefinition
6468 AC_DEFUN([CF_PREDEFINE],
6469 [
6470 AC_MSG_CHECKING(if we must define $1)
6471 AC_TRY_COMPILE([#include <sys/types.h>
6472 ],[
6473 #ifndef $1
6474 make an error
6475 #endif],[cf_result=no],[cf_result=yes])
6476 AC_MSG_RESULT($cf_result)
6477
6478 if test "$cf_result" = yes ; then
6479         CPPFLAGS="$CPPFLAGS ifelse([$2],,-D$1,[-D$1=$2])"
6480 elif test "x$2" != "x" ; then
6481         AC_MSG_CHECKING(checking for compatible value versus $2)
6482         AC_TRY_COMPILE([#include <sys/types.h>
6483 ],[
6484 #if $1-$2 < 0
6485 make an error
6486 #endif],[cf_result=yes],[cf_result=no])
6487         AC_MSG_RESULT($cf_result)
6488         if test "$cf_result" = no ; then
6489                 # perhaps we can override it - try...
6490                 CPPFLAGS="$CPPFLAGS -D$1=$2"
6491         fi
6492 fi
6493 ])dnl
6494 dnl ---------------------------------------------------------------------------
6495 dnl CF_PRG_RULES version: 2 updated: 2021/01/01 13:31:04
6496 dnl ------------
6497 dnl Append definitions and rules for the given programs to the subdirectory
6498 dnl Makefiles, and the recursion rule for the top-level Makefile.
6499 dnl
6500 dnl parameters
6501 dnl     $1 = script to run
6502 dnl     $2 = list of subdirectories
6503 dnl
6504 dnl variables
6505 dnl     $AWK
6506 AC_DEFUN([CF_PRG_RULES],
6507 [
6508 for cf_dir in $2
6509 do
6510         if test ! -d "$srcdir/$cf_dir" ; then
6511                 continue
6512         elif test -f "$srcdir/$cf_dir/programs" ; then
6513                 $AWK -f $1 "$srcdir/$cf_dir/programs" >>$cf_dir/Makefile
6514         fi
6515 done
6516
6517 ])dnl
6518 dnl ---------------------------------------------------------------------------
6519 dnl CF_PROG_AR version: 1 updated: 2009/01/01 20:15:22
6520 dnl ----------
6521 dnl Check for archiver "ar".
6522 AC_DEFUN([CF_PROG_AR],[
6523 AC_CHECK_TOOL(AR, ar, ar)
6524 ])
6525 dnl ---------------------------------------------------------------------------
6526 dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59
6527 dnl -----------
6528 dnl Check for awk, ensure that the check found something.
6529 AC_DEFUN([CF_PROG_AWK],
6530 [
6531 AC_PROG_AWK
6532 test -z "$AWK" && AC_MSG_ERROR(No awk program found)
6533 ])dnl
6534 dnl ---------------------------------------------------------------------------
6535 dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
6536 dnl ----------
6537 dnl standard check for CC, plus followup sanity checks
6538 dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
6539 AC_DEFUN([CF_PROG_CC],[
6540 CF_ACVERSION_CHECK(2.53,
6541         [AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
6542          AC_REQUIRE([AC_PROG_CC])],
6543         [])
6544 ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
6545 CF_GCC_VERSION
6546 CF_ACVERSION_CHECK(2.52,
6547         [AC_PROG_CC_STDC],
6548         [CF_ANSI_CC_REQD])
6549 CF_CC_ENV_FLAGS
6550 ])dnl
6551 dnl ---------------------------------------------------------------------------
6552 dnl CF_PROG_CC_C_O version: 6 updated: 2021/01/01 13:31:04
6553 dnl --------------
6554 dnl Analogous to AC_PROG_CC_C_O, but more useful: tests only $CC, ensures that
6555 dnl the output file can be renamed, and allows for a shell variable that can
6556 dnl be used later.  The parameter is either CC or CXX.  The result is the
6557 dnl cache variable:
6558 dnl     $cf_cv_prog_CC_c_o
6559 dnl     $cf_cv_prog_CXX_c_o
6560 dnl
6561 dnl $1 = compiler
6562 dnl $2 = compiler options, if any
6563 AC_DEFUN([CF_PROG_CC_C_O],
6564 [AC_REQUIRE([AC_PROG_CC])dnl
6565 AC_MSG_CHECKING([whether [$]$1 understands -c and -o together])
6566 AC_CACHE_VAL(cf_cv_prog_$1_c_o,
6567 [
6568 cat > conftest.$ac_ext <<CF_EOF
6569 int main(void)
6570 {
6571         ${cf_cv_main_return:-return}(0);
6572 }
6573 CF_EOF
6574 # We do the test twice because some compilers refuse to overwrite an
6575 # existing .o file with -o, though they will create one.
6576 ac_try='[$]$1 $2 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC'
6577 if AC_TRY_EVAL(ac_try) &&
6578   test -f conftest2.$ac_objext && AC_TRY_EVAL(ac_try);
6579 then
6580   eval cf_cv_prog_$1_c_o=yes
6581 else
6582   eval cf_cv_prog_$1_c_o=no
6583 fi
6584 rm -rf ./conftest*
6585 ])dnl
6586 if test "$cf_cv_prog_$1_c_o" = yes; then
6587   AC_MSG_RESULT([yes])
6588 else
6589   AC_MSG_RESULT([no])
6590 fi
6591 ])dnl
6592 dnl ---------------------------------------------------------------------------
6593 dnl CF_PROG_GNAT version: 12 updated: 2021/01/02 17:09:14
6594 dnl ------------
6595 dnl Check for gnat/gnatmake/etc, ensure that the toolset is complete.
6596 AC_DEFUN([CF_PROG_GNAT],[
6597 for cf_prog_gnat in gnat gnatmake gprconfig gprbuild
6598 do
6599         CF_UPPER(cf_upper_prog_gnat,${cf_prog_gnat})
6600
6601         unset ac_cv_path_cf_TEMP_gnat
6602         unset cf_TEMP_gnat
6603         AC_PATH_PROG(cf_TEMP_gnat,$cf_prog_gnat,no)
6604         eval "cf_cv_PATH_$cf_upper_prog_gnat=[$]ac_cv_path_cf_TEMP_gnat"
6605
6606         if test "x$cf_TEMP_gnat" != xno; then
6607                 unset cf_cv_gnat_version
6608                 unset cf_TEMP_gnat
6609                 CF_GNAT_VERSION(cf_TEMP_gnat,$cf_prog_gnat)
6610         fi
6611         eval "cf_cv_VERSION_$cf_upper_prog_gnat=[$]cf_TEMP_gnat"
6612
6613         unset cf_TEMP_gnat
6614         unset cf_cv_gnat_version
6615         unset ac_cv_path_cf_TEMP_gnat
6616 done
6617
6618 if test "x$cf_cv_VERSION_GNATMAKE" = "xno"; then
6619         cf_ada_make=
6620         cf_cv_prog_gnat_correct=no
6621 else
6622         cf_ada_make=gnatmake
6623         if test "x$cf_cv_VERSION_GPRCONFIG" = "xno"; then
6624                 # gprconfig is newer than gnatmake; we can continue...
6625                 cf_ada_config="##"
6626         else
6627                 rm -rf ./conftest* ./*~conftest*
6628                 if mkdir conftest.src
6629                 then
6630                         cf_ada_config=""
6631                         cd conftest.src
6632                         for cf_gprconfig in Ada C
6633                         do
6634                                 AC_MSG_CHECKING(for gprconfig name for $cf_gprconfig)
6635                                 if test "$cf_gprconfig" = C
6636                                 then
6637                                         for cf_gprconfig_param in \
6638                                                 "$cf_gprconfig,,,,GNATGCC" \
6639                                                 "$cf_gprconfig,,,,GCC" \
6640                                                 "$cf_gprconfig"
6641                                         do
6642                                                 cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
6643                                                 test -n "$cf_gprconfig_value" && break
6644                                         done
6645                                 else
6646                                         cf_gprconfig_param=$cf_gprconfig
6647                                         cf_gprconfig_value=`echo s| gprconfig --config=$cf_gprconfig_param 2>&AC_FD_CC | ${AWK:-awk} '/^\*/{print [$]3;}' | head -n 1`
6648                                 fi
6649                                 if test -n "$cf_gprconfig_value"
6650                                 then
6651                                         eval "cf_ada_config_[$]cf_gprconfig=[$]cf_gprconfig_value"
6652                                         AC_MSG_RESULT($cf_gprconfig_value)
6653                                 else
6654                                         AC_MSG_RESULT(missing)
6655                                         cf_ada_config="#"
6656                                         break
6657                                 fi
6658                         done
6659                         cd ..
6660                         rm -rf ./conftest* ./*~conftest*
6661                 fi
6662         fi
6663         if test "x$cf_ada_config" != "x#"
6664         then
6665                 CF_GNAT_VERSION
6666                 CF_CHECK_GNAT_VERSION
6667                 AC_CHECK_PROG(M4_exists, m4, yes, no)
6668                 if test "$ac_cv_prog_M4_exists" = no; then
6669                         cf_cv_prog_gnat_correct=no
6670                         AC_MSG_WARN(Ada95 binding required program m4 not found. Ada95 binding disabled)
6671                 fi
6672                 if test "$cf_cv_prog_gnat_correct" = yes; then
6673                         AC_MSG_CHECKING(if GNAT works)
6674                         CF_GNAT_TRY_RUN([procedure conftest;],
6675 [with Text_IO;
6676 with GNAT.OS_Lib;
6677 procedure conftest is
6678 begin
6679    Text_IO.Put ("Hello World");
6680    Text_IO.New_Line;
6681    GNAT.OS_Lib.OS_Exit (0);
6682 end conftest;],
6683 [cf_cv_prog_gnat_correct=yes],
6684 [cf_cv_prog_gnat_correct=no])
6685                         AC_MSG_RESULT($cf_cv_prog_gnat_correct)
6686                 fi
6687         else
6688                 cf_cv_prog_gnat_correct=no
6689         fi
6690 fi
6691
6692 AC_SUBST(cf_ada_make)
6693 AC_SUBST(cf_ada_config)
6694 AC_SUBST(cf_ada_config_Ada)
6695 AC_SUBST(cf_ada_config_C)
6696 ])dnl
6697 dnl ---------------------------------------------------------------------------
6698 dnl CF_PROG_INSTALL version: 10 updated: 2021/01/04 19:33:05
6699 dnl ---------------
6700 dnl Force $INSTALL to be an absolute-path.  Otherwise, edit_man.sh and the
6701 dnl misc/tabset install won't work properly.  Usually this happens only when
6702 dnl using the fallback mkinstalldirs script
6703 AC_DEFUN([CF_PROG_INSTALL],
6704 [AC_PROG_INSTALL
6705 case $INSTALL in
6706 (/*)
6707         ;;
6708 (*)
6709         CF_DIRNAME(cf_dir,$INSTALL)
6710         test -z "$cf_dir" && cf_dir=.
6711         INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`"
6712         ;;
6713 esac
6714 ])dnl
6715 dnl ---------------------------------------------------------------------------
6716 dnl CF_PROG_LDCONFIG version: 5 updated: 2015/04/18 08:56:57
6717 dnl ----------------
6718 dnl Check for ldconfig, needed to fixup shared libraries that would be built
6719 dnl and then used in the install.
6720 AC_DEFUN([CF_PROG_LDCONFIG],[
6721 if test "$cross_compiling" = yes ; then
6722         LDCONFIG=:
6723 else
6724         case "$cf_cv_system_name" in
6725         (dragonfly*|mirbsd*|freebsd*)
6726                 test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
6727                 ;;
6728         (*) LDPATH=$PATH:/sbin:/usr/sbin
6729                 AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH)
6730                 ;;
6731         esac
6732 fi
6733 AC_SUBST(LDCONFIG)
6734 ])dnl
6735 dnl ---------------------------------------------------------------------------
6736 dnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37
6737 dnl ------------
6738 AC_DEFUN([CF_PROG_LINT],
6739 [
6740 AC_CHECK_PROGS(LINT, lint cppcheck splint)
6741 case "x$LINT" in
6742 (xcppcheck|x*/cppcheck)
6743         test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
6744         ;;
6745 esac
6746 AC_SUBST(LINT_OPTS)
6747 ])dnl
6748 dnl ---------------------------------------------------------------------------
6749 dnl CF_PROG_LN_S version: 2 updated: 2010/08/14 18:25:37
6750 dnl ------------
6751 dnl Combine checks for "ln -s" and "ln -sf", updating $LN_S to include "-f"
6752 dnl option if it is supported.
6753 AC_DEFUN([CF_PROG_LN_S],[
6754 AC_PROG_LN_S
6755 AC_MSG_CHECKING(if $LN_S -f options work)
6756
6757 rm -f conf$$.src conf$$dst
6758 echo >conf$$.dst
6759 echo first >conf$$.src
6760 if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then
6761         cf_prog_ln_sf=yes
6762 else
6763         cf_prog_ln_sf=no
6764 fi
6765 rm -f conf$$.dst conf$$src
6766 AC_MSG_RESULT($cf_prog_ln_sf)
6767
6768 test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
6769 ])dnl
6770 dnl ---------------------------------------------------------------------------
6771 dnl CF_REGEX version: 18 updated: 2021/01/01 16:53:59
6772 dnl --------
6773 dnl Attempt to determine if we've got one of the flavors of regular-expression
6774 dnl code that we can support.
6775 AC_DEFUN([CF_REGEX],
6776 [
6777
6778 cf_regex_func=no
6779 cf_regex_libs=
6780 case "$host_os" in
6781 (mingw*)
6782         # -lsystre -ltre -lintl -liconv
6783         AC_CHECK_LIB(systre,regcomp,[
6784                 AC_CHECK_LIB(iconv,libiconv_open,[CF_ADD_LIB(iconv)])
6785                 AC_CHECK_LIB(intl,libintl_gettext,[CF_ADD_LIB(intl)])
6786                 AC_CHECK_LIB(tre,tre_regcomp,[CF_ADD_LIB(tre)])
6787                 CF_ADD_LIB(systre)
6788                 cf_regex_func=regcomp
6789         ],[
6790                 AC_CHECK_LIB(gnurx,regcomp,[
6791                         CF_ADD_LIB(gnurx)
6792                         cf_regex_func=regcomp])
6793         ])
6794         ;;
6795 (*)
6796         cf_regex_libs="regex re"
6797         AC_CHECK_FUNC(regcomp,[cf_regex_func=regcomp],[
6798                 for cf_regex_lib in $cf_regex_libs
6799                 do
6800                         AC_CHECK_LIB($cf_regex_lib,regcomp,[
6801                                         CF_ADD_LIB($cf_regex_lib)
6802                                         cf_regex_func=regcomp
6803                                         break])
6804                 done
6805         ])
6806         ;;
6807 esac
6808
6809 if test "$cf_regex_func" = no ; then
6810         AC_CHECK_FUNC(compile,[cf_regex_func=compile],[
6811                 AC_CHECK_LIB(gen,compile,[
6812                                 CF_ADD_LIB(gen)
6813                                 cf_regex_func=compile])])
6814 fi
6815
6816 if test "$cf_regex_func" = no ; then
6817         AC_MSG_WARN(cannot find regular expression library)
6818 fi
6819
6820 AC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[
6821
6822 cf_cv_regex_hdrs=no
6823 case "$cf_regex_func" in
6824 (compile)
6825         for cf_regex_hdr in regexp.h regexpr.h
6826         do
6827                 AC_TRY_LINK([#include <$cf_regex_hdr>],[
6828                         char *p = compile("", "", "", 0);
6829                         int x = step("", "");
6830                         (void)p;
6831                         (void)x;
6832                 ],[
6833                         cf_cv_regex_hdrs=$cf_regex_hdr
6834                         break
6835                 ])
6836         done
6837         ;;
6838 (*)
6839         for cf_regex_hdr in regex.h
6840         do
6841                 AC_TRY_LINK([#include <sys/types.h>
6842 #include <$cf_regex_hdr>],[
6843                         regex_t *p = 0;
6844                         int x = regcomp(p, "", 0);
6845                         int y = regexec(p, "", 0, 0, 0);
6846                         (void)x;
6847                         (void)y;
6848                         regfree(p);
6849                 ],[
6850                         cf_cv_regex_hdrs=$cf_regex_hdr
6851                         break
6852                 ])
6853         done
6854         ;;
6855 esac
6856
6857 ])
6858
6859 case "$cf_cv_regex_hdrs" in
6860         (no)            AC_MSG_WARN(no regular expression header found) ;;
6861         (regex.h)       AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;;
6862         (regexp.h)      AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;;
6863         (regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;;
6864 esac
6865 ])dnl
6866 dnl ---------------------------------------------------------------------------
6867 dnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40
6868 dnl ----------------
6869 dnl Remove a given option from CFLAGS/CPPFLAGS
6870 dnl $1 = option to remove
6871 dnl $2 = variable to update
6872 dnl $3 = nonempty to allow verbose message
6873 define([CF_REMOVE_CFLAGS],
6874 [
6875 cf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'`
6876 while true
6877 do
6878         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'`
6879         test "[$]$2" != "$cf_old_cflag" || break
6880         ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)])
6881         $2="$cf_old_cflag"
6882 done
6883 ])dnl
6884 dnl ---------------------------------------------------------------------------
6885 dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
6886 dnl ----------------
6887 dnl Remove all -U and -D options that refer to the given symbol from a list
6888 dnl of C compiler options.  This works around the problem that not all
6889 dnl compilers process -U and -D options from left-to-right, so a -U option
6890 dnl cannot be used to cancel the effect of a preceding -D option.
6891 dnl
6892 dnl $1 = target (which could be the same as the source variable)
6893 dnl $2 = source (including '$')
6894 dnl $3 = symbol to remove
6895 define([CF_REMOVE_DEFINE],
6896 [
6897 $1=`echo "$2" | \
6898         sed     -e 's/-[[UD]]'"$3"'\(=[[^       ]]*\)\?[[       ]]/ /g' \
6899                 -e 's/-[[UD]]'"$3"'\(=[[^       ]]*\)\?[$]//g'`
6900 ])dnl
6901 dnl ---------------------------------------------------------------------------
6902 dnl CF_REMOVE_LIB version: 1 updated: 2007/02/17 14:11:52
6903 dnl -------------
6904 dnl Remove the given library from the symbol
6905 dnl
6906 dnl $1 = target (which could be the same as the source variable)
6907 dnl $2 = source (including '$')
6908 dnl $3 = library to remove
6909 define([CF_REMOVE_LIB],
6910 [
6911 # remove $3 library from $2
6912 $1=`echo "$2" | sed -e 's/-l$3[[        ]]//g' -e 's/-l$3[$]//'`
6913 ])dnl
6914 dnl ---------------------------------------------------------------------------
6915 dnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45
6916 dnl ---------------------
6917 dnl Restore flags saved in CF_SAVE_XTRA_FLAGS
6918 dnl $1 = name of current macro
6919 define([CF_RESTORE_XTRA_FLAGS],
6920 [
6921 LIBS="$cf_save_LIBS_$1"
6922 CFLAGS="$cf_save_CFLAGS_$1"
6923 CPPFLAGS="$cf_save_CPPFLAGS_$1"
6924 ])dnl
6925 dnl ---------------------------------------------------------------------------
6926 dnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50
6927 dnl -------------
6928 AC_DEFUN([CF_RPATH_HACK],
6929 [AC_REQUIRE([AC_PROG_FGREP])dnl
6930 AC_REQUIRE([CF_LD_RPATH_OPT])dnl
6931
6932 AC_MSG_CHECKING(for updated LDFLAGS)
6933 if test -n "$LD_RPATH_OPT" ; then
6934         AC_MSG_RESULT(maybe)
6935
6936         AC_CHECK_PROGS(cf_ldd_prog,ldd,no)
6937         cf_rpath_list="/usr/lib /lib"
6938         if test "$cf_ldd_prog" != no
6939         then
6940                 cf_rpath_oops=
6941
6942 AC_TRY_LINK([#include <stdio.h>],
6943                 [printf("Hello");],
6944                 [cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
6945                  cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[        ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`])
6946
6947                 # If we passed the link-test, but get a "not found" on a given library,
6948                 # this could be due to inept reconfiguration of gcc to make it only
6949                 # partly honor /usr/local/lib (or whatever).  Sometimes this behavior
6950                 # is intentional, e.g., installing gcc in /usr/bin and suppressing the
6951                 # /usr/local libraries.
6952                 if test -n "$cf_rpath_oops"
6953                 then
6954                         for cf_rpath_src in $cf_rpath_oops
6955                         do
6956                                 for cf_rpath_dir in \
6957                                         /usr/local \
6958                                         /usr/pkg \
6959                                         /opt/sfw
6960                                 do
6961                                         if test -f "$cf_rpath_dir/lib/$cf_rpath_src"
6962                                         then
6963                                                 CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src)
6964                                                 LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
6965                                                 break
6966                                         fi
6967                                 done
6968                         done
6969                 fi
6970         fi
6971
6972         CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS)
6973
6974         CF_RPATH_HACK_2(LDFLAGS)
6975         CF_RPATH_HACK_2(LIBS)
6976
6977         CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS)
6978 else
6979         AC_MSG_RESULT(no)
6980 fi
6981 AC_SUBST(EXTRA_LDFLAGS)
6982 ])dnl
6983 dnl ---------------------------------------------------------------------------
6984 dnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04
6985 dnl ---------------
6986 dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to
6987 dnl EXTRA_LDFLAGS for each -L option found.
6988 dnl
6989 dnl $cf_rpath_list contains a list of directories to ignore.
6990 dnl
6991 dnl $1 = variable name to update.  The LDFLAGS variable should be the only one,
6992 dnl      but LIBS often has misplaced -L options.
6993 AC_DEFUN([CF_RPATH_HACK_2],
6994 [
6995 CF_VERBOSE(...checking $1 [$]$1)
6996
6997 cf_rpath_dst=
6998 for cf_rpath_src in [$]$1
6999 do
7000         case "$cf_rpath_src" in
7001         (-L*)
7002
7003                 # check if this refers to a directory which we will ignore
7004                 cf_rpath_skip=no
7005                 if test -n "$cf_rpath_list"
7006                 then
7007                         for cf_rpath_item in $cf_rpath_list
7008                         do
7009                                 if test "x$cf_rpath_src" = "x-L$cf_rpath_item"
7010                                 then
7011                                         cf_rpath_skip=yes
7012                                         break
7013                                 fi
7014                         done
7015                 fi
7016
7017                 if test "$cf_rpath_skip" = no
7018                 then
7019                         # transform the option
7020                         if test "$LD_RPATH_OPT" = "-R " ; then
7021                                 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"`
7022                         else
7023                                 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"`
7024                         fi
7025
7026                         # if we have not already added this, add it now
7027                         cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"`
7028                         if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS"
7029                         then
7030                                 CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp)
7031                                 EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
7032                         fi
7033                 fi
7034                 ;;
7035         esac
7036         cf_rpath_dst="$cf_rpath_dst $cf_rpath_src"
7037 done
7038 $1=$cf_rpath_dst
7039
7040 CF_VERBOSE(...checked $1 [$]$1)
7041 AC_SUBST(EXTRA_LDFLAGS)
7042 ])dnl
7043 dnl ---------------------------------------------------------------------------
7044 dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44
7045 dnl ------------------
7046 dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers
7047 dnl and libraries which do not update those variables.
7048 dnl
7049 dnl $1 = name of current macro
7050 define([CF_SAVE_XTRA_FLAGS],
7051 [
7052 cf_save_LIBS_$1="$LIBS"
7053 cf_save_CFLAGS_$1="$CFLAGS"
7054 cf_save_CPPFLAGS_$1="$CPPFLAGS"
7055 LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}"
7056 for cf_X_CFLAGS in $X_CFLAGS
7057 do
7058         case "x$cf_X_CFLAGS" in
7059         x-[[IUD]]*)
7060                 CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS"
7061                 ;;
7062         *)
7063                 CFLAGS="$CFLAGS $cf_X_CFLAGS"
7064                 ;;
7065         esac
7066 done
7067 ])dnl
7068 dnl ---------------------------------------------------------------------------
7069 dnl CF_SHARED_OPTS version: 107 updated: 2021/09/04 06:47:34
7070 dnl --------------
7071 dnl --------------
7072 dnl Attempt to determine the appropriate CC/LD options for creating a shared
7073 dnl library.
7074 dnl
7075 dnl Notes:
7076 dnl a) ${LOCAL_LDFLAGS} is used to link executables that will run within
7077 dnl the build-tree, i.e., by making use of the libraries that are compiled in
7078 dnl $rel_builddir/lib We avoid compiling-in a $rel_builddir/lib path for the
7079 dnl shared library since that can lead to unexpected results at runtime.
7080 dnl b) ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared
7081 dnl libraries are compiled in ../../lib
7082 dnl
7083 dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure
7084 dnl to install symbolic links to the rel/abi versions of shared libraries.
7085 dnl
7086 dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi
7087 dnl version when making symbolic links.
7088 dnl
7089 dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library
7090 dnl version numbers are infix (ex: libncurses.<ver>.dylib) or postfix
7091 dnl (ex: libncurses.so.<ver>).
7092 dnl
7093 dnl Some loaders leave 'so_locations' lying around.  It is nice to clean up.
7094 AC_DEFUN([CF_SHARED_OPTS],
7095 [
7096         AC_REQUIRE([CF_LD_RPATH_OPT])
7097
7098         RM_SHARED_OPTS=
7099         LOCAL_LDFLAGS=
7100         LOCAL_LDFLAGS2=
7101         LD_SHARED_OPTS=
7102         INSTALL_LIB="-m 644"
7103         : ${rel_builddir:=.}
7104
7105         shlibdir=$libdir
7106         AC_SUBST(shlibdir)
7107
7108         MAKE_DLLS="#"
7109         AC_SUBST(MAKE_DLLS)
7110
7111         cf_cv_do_symlinks=no
7112         cf_ld_rpath_opt=
7113         test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
7114
7115         AC_MSG_CHECKING(if release/abi version should be used for shared libs)
7116         AC_ARG_WITH(shlib-version,
7117         [  --with-shlib-version=X  Specify rel or abi version for shared libs],
7118         [test -z "$withval" && withval=auto
7119         case "$withval" in
7120         (yes)
7121                 cf_cv_shlib_version=auto
7122                 ;;
7123         (rel|abi|auto)
7124                 cf_cv_shlib_version=$withval
7125                 ;;
7126         (*)
7127                 AC_MSG_RESULT($withval)
7128                 AC_MSG_ERROR([option value must be one of: rel, abi, or auto])
7129                 ;;
7130         esac
7131         ],[cf_cv_shlib_version=auto])
7132         AC_MSG_RESULT($cf_cv_shlib_version)
7133
7134         cf_cv_rm_so_locs=no
7135         cf_try_cflags=
7136
7137         # Some less-capable ports of gcc support only -fpic
7138         CC_SHARED_OPTS=
7139
7140         cf_try_fPIC=no
7141         if test "$GCC" = yes
7142         then
7143                 cf_try_fPIC=yes
7144         else
7145                 case "$cf_cv_system_name" in
7146                 (*linux*)       # e.g., PGI compiler
7147                         cf_try_fPIC=yes
7148                         ;;
7149                 esac
7150         fi
7151
7152         if test "$cf_try_fPIC" = yes
7153         then
7154                 AC_MSG_CHECKING(which $CC option to use)
7155                 cf_save_CFLAGS="$CFLAGS"
7156                 for CC_SHARED_OPTS in -fPIC -fpic ''
7157                 do
7158                         CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
7159                         AC_TRY_COMPILE([#include <stdio.h>],[int x = 1],[break],[])
7160                 done
7161                 AC_MSG_RESULT($CC_SHARED_OPTS)
7162                 CFLAGS="$cf_save_CFLAGS"
7163         fi
7164
7165         cf_cv_shlib_version_infix=no
7166
7167         case "$cf_cv_system_name" in
7168         (aix4.[3-9]*|aix[[5-7]]*)
7169                 if test "$GCC" = yes; then
7170                         CC_SHARED_OPTS='-Wl,-brtl'
7171                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
7172                 else
7173                         CC_SHARED_OPTS='-brtl'
7174                         # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall"
7175                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
7176                 fi
7177                 ;;
7178         (beos*)
7179                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
7180                 ;;
7181         (cygwin*)
7182                 CC_SHARED_OPTS=
7183                 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
7184                 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
7185                 cf_cv_shlib_version=cygdll
7186                 cf_cv_shlib_version_infix=cygdll
7187                 shlibdir=$bindir
7188                 MAKE_DLLS=
7189                 cat >mk_shared_lib.sh <<-CF_EOF
7190                 #!$SHELL
7191                 SHARED_LIB=\[$]1
7192                 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
7193                 shift
7194                 cat <<-EOF
7195                 Linking shared library
7196                 ** SHARED_LIB \[$]SHARED_LIB
7197                 ** IMPORT_LIB \[$]IMPORT_LIB
7198 EOF
7199                 exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
7200 CF_EOF
7201                 chmod +x mk_shared_lib.sh
7202                 ;;
7203         (msys*)
7204                 CC_SHARED_OPTS=
7205                 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
7206                 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
7207                 cf_cv_shlib_version=msysdll
7208                 cf_cv_shlib_version_infix=msysdll
7209                 shlibdir=$bindir
7210                 MAKE_DLLS=
7211                 cat >mk_shared_lib.sh <<-CF_EOF
7212                 #!$SHELL
7213                 SHARED_LIB=\[$]1
7214                 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
7215                 shift
7216                 cat <<-EOF
7217                 Linking shared library
7218                 ** SHARED_LIB \[$]SHARED_LIB
7219                 ** IMPORT_LIB \[$]IMPORT_LIB
7220 EOF
7221                 exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
7222 CF_EOF
7223                 chmod +x mk_shared_lib.sh
7224                 ;;
7225         (darwin*)
7226                 cf_try_cflags="no-cpp-precomp"
7227                 CC_SHARED_OPTS="-dynamic"
7228                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $[@]` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $[@]'
7229                 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
7230                 cf_cv_shlib_version_infix=yes
7231                 AC_CACHE_CHECK([if ld -search_paths_first works], cf_cv_ldflags_search_paths_first, [
7232                         cf_save_LDFLAGS=$LDFLAGS
7233                         LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
7234                         AC_TRY_LINK(, [int i;], cf_cv_ldflags_search_paths_first=yes, cf_cv_ldflags_search_paths_first=no)
7235                                 LDFLAGS=$cf_save_LDFLAGS])
7236                 if test "$cf_cv_ldflags_search_paths_first" = yes; then
7237                         LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
7238                 fi
7239                 ;;
7240         (haiku*)
7241                 CF_SHARED_SONAME
7242                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7243                 ;;
7244         (hpux[[7-8]]*)
7245                 # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
7246                 if test "$GCC" != yes; then
7247                         CC_SHARED_OPTS='+Z'
7248                 fi
7249                 MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $[@]'
7250                 INSTALL_LIB="-m 555"
7251                 ;;
7252         (hpux*)
7253                 # (tested with gcc 2.7.2 -- I don't have c89)
7254                 if test "$GCC" = yes; then
7255                         LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
7256                 else
7257                         CC_SHARED_OPTS='+Z'
7258                         LD_SHARED_OPTS='-Wl,+b,${libdir}'
7259                 fi
7260                 MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $[@]'
7261                 # HP-UX shared libraries must be executable, and should be
7262                 # readonly to exploit a quirk in the memory manager.
7263                 INSTALL_LIB="-m 555"
7264                 ;;
7265         (interix*)
7266                 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7267                 if test "$cf_cv_shlib_version" = rel; then
7268                         cf_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
7269                 else
7270                         cf_shared_soname='`basename $[@]`'
7271                 fi
7272                 CC_SHARED_OPTS=
7273                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $[@]'
7274                 ;;
7275         (irix*)
7276                 if test "$cf_cv_enable_rpath" = yes ; then
7277                         EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7278                 fi
7279                 # tested with IRIX 5.2 and 'cc'.
7280                 if test "$GCC" != yes; then
7281                         CC_SHARED_OPTS='-KPIC'
7282                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
7283                 else
7284                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $[@]` -o $[@]'
7285                 fi
7286                 cf_cv_rm_so_locs=yes
7287                 ;;
7288         (linux*|gnu*|k*bsd*-gnu)
7289                 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
7290                         LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
7291                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7292                 fi
7293                 if test "$cf_cv_enable_rpath" = yes ; then
7294                         EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7295                 fi
7296                 CF_SHARED_SONAME
7297                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7298                 ;;
7299         (mingw*msvc*)
7300                 cf_cv_shlib_version=msvcdll
7301                 cf_cv_shlib_version_infix=msvcdll
7302                 shlibdir=$bindir
7303                 MAKE_DLLS=
7304                 if test "$DFT_LWR_MODEL" = "shared" ; then
7305                         LOCAL_LDFLAGS="-link -dll"
7306                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7307                         EXTRA_LDFLAGS="-link -dll $EXTRA_LDFLAGS"
7308                 fi
7309                 CC_SHARED_OPTS=
7310                 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ ${LD} [$]{CFLAGS}'
7311                 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.lib"
7312                 cat >mk_shared_lib.sh <<-CF_EOF
7313                 #!$SHELL
7314                 SHARED_LIB=\[$]1
7315                 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.lib/'\`
7316                 shift
7317                 my_ld=\[$]1
7318                 shift
7319                 cat <<-EOF
7320                 Linking shared library
7321                 ** SHARED LIB \$SHARED_LIB
7322                 ** IMPORT_LIB \$IMPORT_LIB
7323 EOF
7324                 args=\$(echo \[$]* | sed -E "s#-l(\w*)#\1.dll.lib#g" | sed -E "s#-L(\w*)#-LIBPATH:\1#g")
7325                 exec \$my_ld -DLL -IMPLIB:"\${IMPORT_LIB}" -OUT:"\${SHARED_LIB}" ${LDFLAGS} \$args
7326                 mv "\${IMPORT_LIB}" "\${IMPORT_LIB}"
7327 CF_EOF
7328                 chmod +x mk_shared_lib.sh
7329                 cat >mk_prog.sh <<-CF_EOF
7330                 #!$SHELL
7331                 shift
7332                 # Ignore first argument (compiler) and use LD (link.exe) unconditionally
7333                 LD="[$]LD"
7334                 clopts=()
7335                 ldopts=("/subsystem:console")
7336                 libs=()
7337                 isdll=0
7338                 while test \[$]# -gt 0; do
7339                         case "\[$]1" in
7340                                 -link)
7341                                         # ignore -link argument
7342                                         ;;
7343                                 -M[[TD]] | -M[[TD]]d)
7344                                         # ignore runtime-library option
7345                                         ;;
7346                                 -dll)
7347                                         isdll=1
7348                                         ;;
7349                                 -W* | -w*)
7350                                         # ignore warnings
7351                                         ;;
7352                                 -D*)
7353                                         clopts+=("\[$]1")
7354                                         ;;
7355                                 -I*)
7356                                         clopts+=("\[$]1")
7357                                         ;;
7358                                 -l*)
7359                                         libs+=("\`echo \"\[$]1\" | sed \"s/^-l//\"\`")
7360                                         ;;
7361                                 -L*)
7362                                         ldopts+=("\`echo \"\[$]1\" | sed \"s/^-L/-LIBPATH:/\"\`")
7363                                         ;;
7364                                 *.obj | *.o)
7365                                         ldopts+=("\[$]1")
7366                                         ;;
7367                                 -Wl,*)
7368                                         for linkarg in \`echo '\[$]1' | sed -e 's/-Wl,//' -e 's/,/ /'\`; do
7369                                                 ldopts+=("\[$]{linkarg}")
7370                                         done
7371                                         ;;
7372                                 *.lib)
7373                                         ldopts+=("\[$]1")
7374                                         ;;
7375                                 -o)
7376                                         shift
7377                                         ldopts+=("-out:\[$]1")
7378                                         ;;
7379                                 *)
7380                                         clopts+=("\[$]1")
7381                                         ldopts+=("\[$]1")
7382                                         ;;
7383                         esac
7384                         shift
7385                 done
7386                 if [[ "\$isdll" -ne 0 ]]; then
7387                         for lib in \[$]{libs[[*]]}; do
7388                                 ldopts+=("\[$]lib.dll.lib")
7389                         done
7390                 else
7391                         for lib in \[$]{libs[[*]]}; do
7392                                 ldopts+=("\[$]lib.lib")
7393                         done
7394                 fi
7395                 cat <<-EOF
7396                 Creating program
7397                 ** ld options:   "\[$]{ldopts[[@]]}"
7398 EOF
7399                 exec \[$]LD \[$]{ldopts[[@]]}
7400 CF_EOF
7401                 chmod +x mk_prog.sh
7402                 LINK_PROGS="$SHELL ${rel_builddir}/mk_prog.sh"
7403                 LINK_TESTS="$SHELL ${rel_builddir}/mk_prog.sh"
7404                 ;;
7405         (mingw*)
7406                 cf_cv_shlib_version=mingw
7407                 cf_cv_shlib_version_infix=mingw
7408                 shlibdir=$bindir
7409                 MAKE_DLLS=
7410                 if test "$DFT_LWR_MODEL" = "shared" ; then
7411                         LOCAL_LDFLAGS="-Wl,--enable-auto-import"
7412                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7413                         EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
7414                 fi
7415                 CC_SHARED_OPTS=
7416                 MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
7417                 RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
7418                 cat >mk_shared_lib.sh <<-CF_EOF
7419                 #!$SHELL
7420                 SHARED_LIB=\[$]1
7421                 IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
7422                 shift
7423                 cat <<-EOF
7424                 Linking shared library
7425                 ** SHARED_LIB \[$]SHARED_LIB
7426                 ** IMPORT_LIB \[$]IMPORT_LIB
7427 EOF
7428                 exec \[$]* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
7429 CF_EOF
7430                 chmod +x mk_shared_lib.sh
7431                 ;;
7432         (openbsd[[2-9]].*|mirbsd*)
7433                 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
7434                         LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
7435                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7436                 fi
7437                 if test "$cf_cv_enable_rpath" = yes ; then
7438                         EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7439                 fi
7440                 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7441                 CF_SHARED_SONAME
7442                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7443                 ;;
7444         (nskJ*)
7445                 CC_SHARED_OPTS=
7446                 MK_SHARED_LIB='${LD} -Wshared -Weld=-export_all -o $[@]'
7447                 ;;
7448         (nskL*)
7449                 CC_SHARED_OPTS=
7450                 MK_SHARED_LIB='${LD} -Wshared -Wxld=-export_all -o $[@]'
7451                 ;;
7452         (nto-qnx*|openbsd*|freebsd[[12]].*)
7453                 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7454                 MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $[@]'
7455                 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7456                 ;;
7457         (dragonfly*|freebsd*)
7458                 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7459                 if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
7460                         LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
7461                         LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
7462                         EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7463                 fi
7464                 CF_SHARED_SONAME
7465                 MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
7466                 ;;
7467         (netbsd*)
7468                 CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
7469                 if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
7470                         LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
7471                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7472                         EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
7473                         if test "$cf_cv_shlib_version" = auto; then
7474                         if test -f /usr/libexec/ld.elf_so; then
7475                                 cf_cv_shlib_version=abi
7476                         else
7477                                 cf_cv_shlib_version=rel
7478                         fi
7479                         fi
7480                         CF_SHARED_SONAME
7481                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]'
7482                 else
7483                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -o $[@]'
7484                 fi
7485                 ;;
7486         (osf*|mls+*)
7487                 # tested with OSF/1 V3.2 and 'cc'
7488                 # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
7489                 # link with shared libs).
7490                 MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`'
7491                 case "$host_os" in
7492                 (osf4*)
7493                         MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
7494                         ;;
7495                 esac
7496                 MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]'
7497                 if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then
7498                         LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
7499                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7500                 fi
7501                 cf_cv_rm_so_locs=yes
7502                 ;;
7503         (sco3.2v5*)  # also uw2* and UW7: hops 13-Apr-98
7504                 # tested with osr5.0.5
7505                 if test "$GCC" != yes; then
7506                         CC_SHARED_OPTS='-belf -KPIC'
7507                 fi
7508                 MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@'
7509                 if test "$cf_cv_enable_rpath" = yes ; then
7510                         # only way is to set LD_RUN_PATH but no switch for it
7511                         RUN_PATH=$libdir
7512                 fi
7513                 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7514                 LINK_PROGS='LD_RUN_PATH=${libdir}'
7515                 LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
7516                 ;;
7517         (sunos4*)
7518                 # tested with SunOS 4.1.1 and gcc 2.7.0
7519                 if test "$GCC" != yes; then
7520                         CC_SHARED_OPTS='-KPIC'
7521                 fi
7522                 MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $[@]'
7523                 test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
7524                 ;;
7525         (solaris2*)
7526                 # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
7527                 # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3
7528                 if test "$DFT_LWR_MODEL" = "shared" ; then
7529                         LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
7530                         LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
7531                 fi
7532                 if test "$cf_cv_enable_rpath" = yes ; then
7533                         EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS"
7534                 fi
7535                 CF_SHARED_SONAME
7536                 if test "$GCC" != yes; then
7537                         cf_save_CFLAGS="$CFLAGS"
7538                         for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O
7539                         do
7540                                 CFLAGS="$cf_shared_opts $cf_save_CFLAGS"
7541                                 AC_TRY_COMPILE([#include <stdio.h>],[printf("Hello\\n");],[break])
7542                         done
7543                         CFLAGS="$cf_save_CFLAGS"
7544                         CC_SHARED_OPTS=$cf_shared_opts
7545                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $[@]'
7546                 else
7547                         MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]'
7548                 fi
7549                 ;;
7550         (sysv5uw7*|unix_sv*)
7551                 # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
7552                 if test "$GCC" != yes; then
7553                         CC_SHARED_OPTS='-KPIC'
7554                 fi
7555                 MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o [$]@'
7556                 ;;
7557         (*)
7558                 CC_SHARED_OPTS='unknown'
7559                 MK_SHARED_LIB='echo unknown'
7560                 ;;
7561         esac
7562
7563         # This works if the last tokens in $MK_SHARED_LIB are the -o target.
7564         case "$cf_cv_shlib_version" in
7565         (rel|abi)
7566                 case "$MK_SHARED_LIB" in
7567                 (*'-o $[@]')
7568                         test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
7569                         ;;
7570                 (*)
7571                         AC_MSG_WARN(ignored --with-shlib-version)
7572                         ;;
7573                 esac
7574                 ;;
7575         esac
7576
7577         if test -n "$cf_try_cflags"
7578         then
7579 cat > conftest.$ac_ext <<EOF
7580 #line __oline__ "${as_me:-configure}"
7581 #include <stdio.h>
7582 int main(int argc, char *argv[[]])
7583 {
7584         printf("hello\\n");
7585         return (argv[[argc-1]] == 0) ;
7586 }
7587 EOF
7588                 cf_save_CFLAGS="$CFLAGS"
7589                 for cf_opt in $cf_try_cflags
7590                 do
7591                         CFLAGS="$cf_save_CFLAGS -$cf_opt"
7592                         AC_MSG_CHECKING(if CFLAGS option -$cf_opt works)
7593                         if AC_TRY_EVAL(ac_compile); then
7594                                 AC_MSG_RESULT(yes)
7595                                 cf_save_CFLAGS="$CFLAGS"
7596                         else
7597                                 AC_MSG_RESULT(no)
7598                         fi
7599                 done
7600                 CFLAGS="$cf_save_CFLAGS"
7601         fi
7602
7603
7604         # RPATH_LIST is a colon-separated list of directories
7605         test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
7606         test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
7607
7608         test "$cf_cv_rm_so_locs" = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations"
7609
7610         CF_VERBOSE(CC_SHARED_OPTS: $CC_SHARED_OPTS)
7611         CF_VERBOSE(MK_SHARED_LIB:  $MK_SHARED_LIB)
7612
7613         AC_SUBST(CC_SHARED_OPTS)
7614         AC_SUBST(LD_RPATH_OPT)
7615         AC_SUBST(LD_SHARED_OPTS)
7616         AC_SUBST(MK_SHARED_LIB)
7617         AC_SUBST(RM_SHARED_OPTS)
7618
7619         AC_SUBST(LINK_PROGS)
7620         AC_SUBST(LINK_TESTS)
7621
7622         AC_SUBST(EXTRA_LDFLAGS)
7623         AC_SUBST(LOCAL_LDFLAGS)
7624         AC_SUBST(LOCAL_LDFLAGS2)
7625
7626         AC_SUBST(INSTALL_LIB)
7627         AC_SUBST(RPATH_LIST)
7628 ])dnl
7629 dnl ---------------------------------------------------------------------------
7630 dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43
7631 dnl ----------------
7632 dnl utility macro for CF_SHARED_OPTS, constructs "$cf_cv_shared_soname" for
7633 dnl substitution into MK_SHARED_LIB string for the "-soname" (or similar)
7634 dnl option.
7635 dnl
7636 dnl $1 is the default that should be used for "$cf_cv_shlib_version".
7637 dnl If missing, use "rel".
7638 define([CF_SHARED_SONAME],
7639 [
7640         test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=ifelse($1,,rel,$1)
7641         if test "$cf_cv_shlib_version" = rel; then
7642                 cf_cv_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
7643         else
7644                 cf_cv_shared_soname='`basename $[@]`'
7645         fi
7646 ])
7647 dnl ---------------------------------------------------------------------------
7648 dnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04
7649 dnl -----------
7650 dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
7651 dnl programs need this test).
7652 dnl
7653 dnl This is really a Mac OS X 10.4.3 workaround.  Defining _POSIX_C_SOURCE
7654 dnl forces SIGWINCH to be undefined (breaks xterm, ncurses).  Oddly, the struct
7655 dnl winsize declaration is left alone - we may revisit this if Apple choose to
7656 dnl break that part of the interface as well.
7657 AC_DEFUN([CF_SIGWINCH],
7658 [
7659 AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[
7660         AC_TRY_COMPILE([
7661 #include <sys/types.h>
7662 #include <sys/signal.h>
7663 ],[int x = SIGWINCH; (void)x],
7664         [cf_cv_define_sigwinch=yes],
7665         [AC_TRY_COMPILE([
7666 #undef _XOPEN_SOURCE
7667 #undef _POSIX_SOURCE
7668 #undef _POSIX_C_SOURCE
7669 #include <sys/types.h>
7670 #include <sys/signal.h>
7671 ],[int x = SIGWINCH; (void)x],
7672         [cf_cv_define_sigwinch=maybe],
7673         [cf_cv_define_sigwinch=no])
7674 ])
7675 ])
7676
7677 if test "$cf_cv_define_sigwinch" = maybe ; then
7678 AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[
7679 cf_cv_fixup_sigwinch=unknown
7680 cf_sigwinch=32
7681 while test "$cf_sigwinch" != 1
7682 do
7683         AC_TRY_COMPILE([
7684 #undef _XOPEN_SOURCE
7685 #undef _POSIX_SOURCE
7686 #undef _POSIX_C_SOURCE
7687 #include <sys/types.h>
7688 #include <sys/signal.h>
7689 ],[
7690 #if SIGWINCH != $cf_sigwinch
7691 make an error
7692 #endif
7693 int x = SIGWINCH; (void)x],
7694         [cf_cv_fixup_sigwinch=$cf_sigwinch
7695          break])
7696
7697 cf_sigwinch="`expr "$cf_sigwinch" - 1`"
7698 done
7699 ])
7700
7701         if test "$cf_cv_fixup_sigwinch" != unknown ; then
7702                 CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch"
7703         fi
7704 fi
7705 ])dnl
7706 dnl ---------------------------------------------------------------------------
7707 dnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47
7708 dnl ---------------
7709 dnl signal handler, but there are some gcc dependencies in that recommendation.
7710 dnl Try anyway.
7711 AC_DEFUN([CF_SIG_ATOMIC_T],
7712 [
7713 AC_MSG_CHECKING(for signal global datatype)
7714 AC_CACHE_VAL(cf_cv_sig_atomic_t,[
7715         for cf_type in \
7716                 "volatile sig_atomic_t" \
7717                 "sig_atomic_t" \
7718                 "int"
7719         do
7720         AC_TRY_COMPILE([
7721 #include <sys/types.h>
7722 #include <signal.h>
7723 #include <stdio.h>
7724
7725 extern $cf_type x;
7726 $cf_type x;
7727 static void handler(int sig)
7728 {
7729         (void)sig;
7730         x = 5;
7731 }],
7732                 [signal(SIGINT, handler);
7733                  x = 1],
7734                 [cf_cv_sig_atomic_t=$cf_type],
7735                 [cf_cv_sig_atomic_t=no])
7736                 test "$cf_cv_sig_atomic_t" != no && break
7737         done
7738         ])
7739 AC_MSG_RESULT($cf_cv_sig_atomic_t)
7740 test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
7741 ])dnl
7742 dnl ---------------------------------------------------------------------------
7743 dnl CF_SIZECHANGE version: 18 updated: 2021/09/04 06:35:04
7744 dnl -------------
7745 dnl Check for definitions & structures needed for window size-changing
7746 dnl
7747 dnl https://stackoverflow.com/questions/18878141/difference-between-structures-ttysize-and-winsize/50769952#50769952
7748 AC_DEFUN([CF_SIZECHANGE],
7749 [
7750 AC_REQUIRE([CF_STRUCT_TERMIOS])
7751 AC_CACHE_CHECK(declaration of size-change, cf_cv_sizechange,[
7752         cf_cv_sizechange=unknown
7753         cf_save_CPPFLAGS="$CPPFLAGS"
7754
7755 for cf_opts in "" "NEED_PTEM_H"
7756 do
7757
7758         CPPFLAGS="$cf_save_CPPFLAGS"
7759         if test -n "$cf_opts"
7760         then
7761                 CF_APPEND_TEXT(CPPFLAGS,-D$cf_opts)
7762         fi
7763         AC_TRY_COMPILE([#include <sys/types.h>
7764 #ifdef HAVE_TERMIOS_H
7765 #include <termios.h>
7766 #else
7767 #ifdef HAVE_TERMIO_H
7768 #include <termio.h>
7769 #endif
7770 #endif
7771
7772 #ifdef NEED_PTEM_H
7773 /* This is a workaround for SCO:  they neglected to define struct winsize in
7774  * termios.h -- it is only in termio.h and ptem.h
7775  */
7776 #include <sys/stream.h>
7777 #include <sys/ptem.h>
7778 #endif
7779
7780 #ifdef HAVE_SYS_IOCTL_H
7781 #include <sys/ioctl.h>
7782 #endif
7783 ],[
7784 #ifdef TIOCGSIZE
7785         struct ttysize win;     /* SunOS 3.0... */
7786         int y = win.ts_lines = 2;
7787         int x = win.ts_cols = 1;
7788         (void)y;
7789         (void)x;
7790 #else
7791 #ifdef TIOCGWINSZ
7792         struct winsize win;     /* everything else */
7793         int y = win.ws_row = 2;
7794         int x = win.ws_col = 1;
7795         (void)y;
7796         (void)x;
7797 #else
7798         no TIOCGSIZE or TIOCGWINSZ
7799 #endif /* TIOCGWINSZ */
7800 #endif /* TIOCGSIZE */
7801         ],
7802         [cf_cv_sizechange=yes],
7803         [cf_cv_sizechange=no])
7804
7805         CPPFLAGS="$cf_save_CPPFLAGS"
7806         if test "$cf_cv_sizechange" = yes ; then
7807                 echo "size-change succeeded ($cf_opts)" >&AC_FD_CC
7808                 test -n "$cf_opts" && cf_cv_sizechange="$cf_opts"
7809                 break
7810         fi
7811 done
7812 ])
7813 if test "$cf_cv_sizechange" != no ; then
7814         AC_DEFINE(HAVE_SIZECHANGE,1,[Define to 1 if sizechange declarations are provided])
7815         case "$cf_cv_sizechange" in
7816         (NEED*)
7817                 AC_DEFINE_UNQUOTED($cf_cv_sizechange )
7818                 ;;
7819         esac
7820 fi
7821 ])dnl
7822 dnl ---------------------------------------------------------------------------
7823 dnl CF_SRC_MODULES version: 33 updated: 2021/01/01 13:31:04
7824 dnl --------------
7825 dnl For each parameter, test if the source-directory exists, and if it contains
7826 dnl a 'modules' file.  If so, add to the list $cf_cv_src_modules which we'll
7827 dnl use in CF_LIB_RULES.
7828 dnl
7829 dnl This uses the configured value to make the lists SRC_SUBDIRS and
7830 dnl SUB_MAKEFILES which are used in the makefile-generation scheme.
7831 AC_DEFUN([CF_SRC_MODULES],
7832 [
7833 AC_REQUIRE([CF_CHECK_GNAT_VERSION])
7834 AC_MSG_CHECKING(for src modules)
7835
7836 # dependencies and linker-arguments for test-programs
7837 TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
7838 TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEP2"
7839 if test "$DFT_LWR_MODEL" = "libtool"; then
7840         TEST_ARGS="${TEST_DEPS}"
7841         TEST_ARG2="${TEST_DEP2}"
7842 else
7843         TEST_ARGS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS"
7844         TEST_ARG2="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARG2"
7845 fi
7846
7847 PC_MODULES_TO_MAKE="ncurses${USE_ARG_SUFFIX}"
7848 cf_cv_src_modules=
7849 for cf_dir in $1
7850 do
7851         if test -f "$srcdir/$cf_dir/modules" ; then
7852
7853                 # We may/may not have tack in the distribution, though the
7854                 # makefile is.
7855                 if test "$cf_dir" = tack ; then
7856                         if test "x$cf_with_tack" != "xyes"; then
7857                                 continue
7858                         fi
7859                 fi
7860
7861                 if test -z "$cf_cv_src_modules"; then
7862                         cf_cv_src_modules=$cf_dir
7863                 else
7864                         cf_cv_src_modules="$cf_cv_src_modules $cf_dir"
7865                 fi
7866
7867                 # Make the ncurses_cfg.h file record the library interface files as
7868                 # well.  These are header files that are the same name as their
7869                 # directory.  Ncurses is the only library that does not follow
7870                 # that pattern.
7871                 if test "$cf_dir" = tack ; then
7872                         continue
7873                 elif test -f "$srcdir/${cf_dir}/${cf_dir}.h" ; then
7874                         CF_UPPER(cf_have_include,$cf_dir)
7875                         AC_DEFINE_UNQUOTED(HAVE_${cf_have_include}_H)
7876                         AC_DEFINE_UNQUOTED(HAVE_LIB${cf_have_include})
7877                         CF_MAP_LIB_BASENAME(TEST_ROOT,$cf_dir)
7878                         TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TEST_ROOT}${DFT_DEP_SUFFIX} $TEST_DEPS"
7879                         TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TEST_ROOT}${DFT_DEP_SUFFIX} $TEST_DEP2"
7880                         if test "$DFT_LWR_MODEL" = "libtool"; then
7881                                 TEST_ARGS="${TEST_DEPS}"
7882                                 TEST_ARG2="${TEST_DEP2}"
7883                         else
7884                                 TEST_ARGS="-l${TEST_ROOT}${USE_ARG_SUFFIX} $TEST_ARGS"
7885                                 TEST_ARG2="-l${TEST_ROOT}${USE_ARG_SUFFIX} $TEST_ARG2"
7886                         fi
7887                         PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ${cf_dir}${USE_ARG_SUFFIX}"
7888                 fi
7889         fi
7890 done
7891 AC_MSG_RESULT($cf_cv_src_modules)
7892
7893 TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
7894 TEST_ARG2="-L${LIB_2ND} $TEST_ARG2"
7895
7896 AC_SUBST(TEST_ARGS)
7897 AC_SUBST(TEST_DEPS)
7898
7899 AC_SUBST(TEST_ARG2)
7900 AC_SUBST(TEST_DEP2)
7901
7902 SRC_SUBDIRS=
7903 if test "x$cf_with_manpages" != xno ; then
7904         SRC_SUBDIRS="$SRC_SUBDIRS man"
7905 fi
7906 SRC_SUBDIRS="$SRC_SUBDIRS include"
7907 for cf_dir in $cf_cv_src_modules
7908 do
7909         SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir"
7910 done
7911 if test "x$cf_with_tests" != "xno" ; then
7912         SRC_SUBDIRS="$SRC_SUBDIRS test"
7913 fi
7914 # always make this, to install the ncurses-config script
7915 SRC_SUBDIRS="$SRC_SUBDIRS misc"
7916 if test "$cf_with_cxx_binding" != no; then
7917         PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${USE_ARG_SUFFIX}"
7918         SRC_SUBDIRS="$SRC_SUBDIRS c++"
7919 fi
7920
7921 test "x$with_termlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TINFO_ARG_SUFFIX"
7922 test "x$with_ticlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TICS_ARG_SUFFIX"
7923
7924 AC_SUBST(PC_MODULES_TO_MAKE)
7925
7926 ADA_SUBDIRS=
7927 if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = xyes && test -f "$srcdir/Ada95/Makefile.in" ; then
7928         SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
7929         ADA_SUBDIRS="gen src"
7930         if test "x$cf_with_tests" != "xno" ; then
7931                 ADA_SUBDIRS="$ADA_SUBDIRS samples"
7932         fi
7933 fi
7934
7935 SUB_MAKEFILES=
7936 for cf_dir in $SRC_SUBDIRS
7937 do
7938         SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile"
7939 done
7940
7941 if test -n "$ADA_SUBDIRS"; then
7942         for cf_dir in $ADA_SUBDIRS
7943         do
7944                 SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile"
7945         done
7946         AC_SUBST(ADA_SUBDIRS)
7947 fi
7948 ])dnl
7949 dnl ---------------------------------------------------------------------------
7950 dnl CF_STDCPP_LIBRARY version: 12 updated: 2021/01/01 13:31:04
7951 dnl -----------------
7952 dnl Check for -lstdc++, which is GNU's standard C++ library.
7953 dnl If $CXXLIBS is set, add that to the libraries used for test-linking.
7954 dnl If -lstdc++ was not already added to $LIBS or $CXXLIBS, and is needed,
7955 dnl add it to $CXXLIBS.
7956 AC_DEFUN([CF_STDCPP_LIBRARY],
7957 [
7958 if test -n "$GXX" ; then
7959
7960         cf_save="$LIBS"
7961         LIBS="$LIBS $CXXLIBS"
7962         AC_MSG_CHECKING(if we already have C++ library)
7963         AC_TRY_LINK([
7964                         #include <iostream>],[
7965                         std::cout << "Hello World!" << std::endl;],
7966                 [cf_have_libstdcpp=yes],
7967                 [cf_have_libstdcpp=no])
7968         AC_MSG_RESULT($cf_have_libstdcpp)
7969         LIBS="$cf_save"
7970
7971         if test "$cf_have_libstdcpp" != yes
7972         then
7973                 case "$cf_cv_system_name" in
7974                 (os2*)
7975                         if test -z "`g++ -dM -E - < /dev/null | grep __KLIBC__`"; then
7976                                 cf_stdcpp_libname=stdcpp
7977                         else
7978                                 cf_stdcpp_libname=stdc++
7979                         fi
7980                         ;;
7981                 (*)
7982                         cf_stdcpp_libname=stdc++
7983                         ;;
7984                 esac
7985
7986                 AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[
7987                         cf_save="$LIBS"
7988                         LIBS="$LIBS $CXXLIBS"
7989                         CF_ADD_LIB($cf_stdcpp_libname)
7990                 AC_TRY_LINK([
7991                                 #include <iostream>],[
7992                                 std::cout << "Hello World!" << std::endl;],
7993                         [cf_cv_libstdcpp=yes],
7994                         [cf_cv_libstdcpp=no])
7995                         LIBS="$cf_save"
7996                 ])
7997                 test "$cf_cv_libstdcpp" = yes && { CF_ADD_LIB($cf_stdcpp_libname,CXXLIBS) }
7998         fi
7999 fi
8000 ])dnl
8001 dnl ---------------------------------------------------------------------------
8002 dnl CF_STRIP_G_OPT version: 4 updated: 2021/01/02 09:31:20
8003 dnl --------------
8004 dnl     Remove "-g" option from the compiler options
8005 AC_DEFUN([CF_STRIP_G_OPT],
8006 [$1=`echo "${$1}" | CF__SED_TRIMBLANKS(-e 's%-g %%' -e 's%-g$%%')`])dnl
8007 dnl ---------------------------------------------------------------------------
8008 dnl CF_STRUCT_SIGACTION version: 5 updated: 2012/10/06 17:56:13
8009 dnl -------------------
8010 dnl Check if we need _POSIX_SOURCE defined to use struct sigaction.  We'll only
8011 dnl do this if we've found the sigaction function.
8012 AC_DEFUN([CF_STRUCT_SIGACTION],[
8013 AC_REQUIRE([CF_XOPEN_SOURCE])
8014
8015 if test "$ac_cv_func_sigaction" = yes; then
8016 AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE)
8017 AC_TRY_COMPILE([
8018 #include <sys/types.h>
8019 #include <signal.h>],
8020         [struct sigaction act],
8021         [sigact_bad=no],
8022         [
8023 AC_TRY_COMPILE([
8024 #define _POSIX_SOURCE
8025 #include <sys/types.h>
8026 #include <signal.h>],
8027         [struct sigaction act],
8028         [sigact_bad=yes
8029          AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE])],
8030          [sigact_bad=unknown])])
8031 AC_MSG_RESULT($sigact_bad)
8032 fi
8033 ])dnl
8034 dnl ---------------------------------------------------------------------------
8035 dnl CF_STRUCT_TERMIOS version: 11 updated: 2020/03/19 20:46:13
8036 dnl -----------------
8037 dnl Some machines require _POSIX_SOURCE to completely define struct termios.
8038 AC_DEFUN([CF_STRUCT_TERMIOS],[
8039 AC_REQUIRE([CF_XOPEN_SOURCE])
8040
8041 AC_CHECK_HEADERS( \
8042 termio.h \
8043 termios.h \
8044 unistd.h \
8045 sys/ioctl.h \
8046 sys/termio.h \
8047 )
8048
8049 if test "$ac_cv_header_termios_h" = yes ; then
8050         case "$CFLAGS $CPPFLAGS" in
8051         (*-D_POSIX_SOURCE*)
8052                 termios_bad=dunno ;;
8053         (*)     termios_bad=maybe ;;
8054         esac
8055         if test "$termios_bad" = maybe ; then
8056         AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE)
8057         AC_TRY_COMPILE([#include <termios.h>],
8058                 [struct termios foo; int x = foo.c_iflag = 1; (void)x],
8059                 termios_bad=no, [
8060                 AC_TRY_COMPILE([
8061 #define _POSIX_SOURCE
8062 #include <termios.h>],
8063                         [struct termios foo; int x = foo.c_iflag = 2; (void)x],
8064                         termios_bad=unknown,
8065                         termios_bad=yes AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE]))
8066                         ])
8067         AC_MSG_RESULT($termios_bad)
8068         fi
8069 fi
8070 ])dnl
8071 dnl ---------------------------------------------------------------------------
8072 dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
8073 dnl --------------
8074 dnl Construct a search-list for a nonstandard header/lib-file
8075 dnl     $1 = the variable to return as result
8076 dnl     $2 = the package name
8077 dnl     $3 = the subdirectory, e.g., bin, include or lib
8078 AC_DEFUN([CF_SUBDIR_PATH],
8079 [
8080 $1=
8081
8082 CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
8083
8084 for cf_subdir_prefix in \
8085         /usr \
8086         /usr/local \
8087         /usr/pkg \
8088         /opt \
8089         /opt/local \
8090         [$]HOME
8091 do
8092         CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
8093 done
8094 ])dnl
8095 dnl ---------------------------------------------------------------------------
8096 dnl CF_SUBST_IF version: 2 updated: 2006/06/17 12:33:03
8097 dnl -----------
8098 dnl     Shorthand macro for substituting things that the user may override
8099 dnl     with an environment variable.
8100 dnl
8101 dnl     $1 = condition to pass to "test"
8102 dnl     $2 = environment variable
8103 dnl     $3 = value if the test succeeds
8104 dnl     $4 = value if the test fails
8105 AC_DEFUN([CF_SUBST_IF],
8106 [
8107 if test $1 ; then
8108         $2=$3
8109 ifelse($4,,,[else
8110         $2=$4])
8111 fi
8112 AC_SUBST($2)
8113 ])dnl
8114 dnl ---------------------------------------------------------------------------
8115 dnl CF_SUBST_NCURSES_VERSION version: 10 updated: 2021/01/04 18:48:01
8116 dnl ------------------------
8117 dnl Get the version-number for use in shared-library naming, etc.
8118 AC_DEFUN([CF_SUBST_NCURSES_VERSION],
8119 [AC_REQUIRE([AC_PROG_EGREP])dnl
8120
8121 NCURSES_MAJOR="`${EGREP-egrep} '^NCURSES_MAJOR[[        ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`"
8122 NCURSES_MINOR="`${EGREP-egrep} '^NCURSES_MINOR[[        ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`"
8123 NCURSES_PATCH="`${EGREP-egrep} '^NCURSES_PATCH[[        ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`"
8124 cf_cv_abi_version=${NCURSES_MAJOR}
8125 cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
8126 dnl Show the computed version, for logging
8127 cf_cv_timestamp=`date`
8128 AC_MSG_RESULT(Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp))
8129 dnl We need these values in the generated headers
8130 AC_SUBST(NCURSES_MAJOR)
8131 AC_SUBST(NCURSES_MINOR)
8132 AC_SUBST(NCURSES_PATCH)
8133 dnl We need these values in the generated makefiles
8134 AC_SUBST(cf_cv_rel_version)
8135 AC_SUBST(cf_cv_abi_version)
8136 AC_SUBST(cf_cv_builtin_bool)
8137 AC_SUBST(cf_cv_header_stdbool_h)
8138 AC_SUBST(cf_cv_type_of_bool)dnl
8139 ])dnl
8140 dnl ---------------------------------------------------------------------------
8141 dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57
8142 dnl ------------------
8143 dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
8144 dnl older SCO configurations.
8145 AC_DEFUN([CF_SYS_TIME_SELECT],
8146 [
8147 AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
8148 AC_CACHE_VAL(cf_cv_sys_time_select,[
8149 AC_TRY_COMPILE([
8150 #include <sys/types.h>
8151 #ifdef HAVE_SYS_TIME_H
8152 #include <sys/time.h>
8153 #endif
8154 #ifdef HAVE_SYS_SELECT_H
8155 #include <sys/select.h>
8156 #endif
8157 ],[],[cf_cv_sys_time_select=yes],
8158          [cf_cv_sys_time_select=no])
8159          ])
8160 AC_MSG_RESULT($cf_cv_sys_time_select)
8161 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>])
8162 ])dnl
8163 dnl ---------------------------------------------------------------------------
8164 dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32
8165 dnl ---------------
8166 dnl Define a top_builddir symbol, for applications that need an absolute path.
8167 AC_DEFUN([CF_TOP_BUILDDIR],
8168 [
8169 top_builddir=ifelse($1,,`pwd`,$1)
8170 AC_SUBST(top_builddir)
8171 ])dnl
8172 dnl ---------------------------------------------------------------------------
8173 dnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15
8174 dnl -----------------
8175 dnl This is a simple wrapper to use for pkg-config, for libraries which may be
8176 dnl available in that form.
8177 dnl
8178 dnl $1 = package name, which may be a shell variable
8179 dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS
8180 dnl $3 = logic to use if pkg-config does not have the package
8181 AC_DEFUN([CF_TRY_PKG_CONFIG],[
8182 AC_REQUIRE([CF_PKG_CONFIG])
8183
8184 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then
8185         CF_VERBOSE(found package $1)
8186         cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`"
8187         cf_pkgconfig_libs="`$PKG_CONFIG --libs   "$1" 2>/dev/null`"
8188         CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs)
8189         CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs)
8190         CF_ADD_CFLAGS($cf_pkgconfig_incs)
8191         CF_ADD_LIBS($cf_pkgconfig_libs)
8192         ifelse([$2],,:,[$2])
8193 else
8194         cf_pkgconfig_incs=
8195         cf_pkgconfig_libs=
8196         ifelse([$3],,:,[$3])
8197 fi
8198 ])
8199 dnl ---------------------------------------------------------------------------
8200 dnl CF_TRY_XOPEN_SOURCE version: 3 updated: 2021/08/28 15:20:37
8201 dnl -------------------
8202 dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
8203 dnl can define it successfully.
8204 AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
8205 AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
8206         AC_TRY_COMPILE([
8207 #include <stdlib.h>
8208 #include <string.h>
8209 #include <sys/types.h>
8210 ],[
8211 #ifndef _XOPEN_SOURCE
8212 make an error
8213 #endif],
8214         [cf_cv_xopen_source=no],
8215         [cf_save="$CPPFLAGS"
8216          CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
8217          AC_TRY_COMPILE([
8218 #include <stdlib.h>
8219 #include <string.h>
8220 #include <sys/types.h>
8221 ],[
8222 #ifdef _XOPEN_SOURCE
8223 make an error
8224 #endif],
8225         [cf_cv_xopen_source=no],
8226         [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
8227         CPPFLAGS="$cf_save"
8228         ])
8229 ])
8230
8231 if test "$cf_cv_xopen_source" != no ; then
8232         CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
8233         CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
8234         cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
8235         CF_APPEND_CFLAGS($cf_temp_xopen_source)
8236 fi
8237 ])
8238 dnl ---------------------------------------------------------------------------
8239 dnl CF_TYPEOF_CHTYPE version: 10 updated: 2017/01/21 11:06:25
8240 dnl ----------------
8241 dnl Determine the type we should use for chtype (and attr_t, which is treated
8242 dnl as the same thing).  We want around 32 bits, so on most machines want a
8243 dnl long, but on newer 64-bit machines, probably want an int.  If we're using
8244 dnl wide characters, we have to have a type compatible with that, as well.
8245 AC_DEFUN([CF_TYPEOF_CHTYPE],
8246 [
8247 AC_MSG_CHECKING([for type of chtype])
8248 AC_CACHE_VAL(cf_cv_typeof_chtype,[
8249                 AC_TRY_RUN([
8250 #define WANT_BITS 31
8251 #include <stdio.h>
8252 int main(void)
8253 {
8254         FILE *fp = fopen("cf_test.out", "w");
8255         if (fp != 0) {
8256                 char *result = "long";
8257                 if (sizeof(unsigned long) > sizeof(unsigned int)) {
8258                         int n;
8259                         unsigned int x, y;
8260                         for (n = 0; n < WANT_BITS; n++) {
8261                                 x = (1 << n);
8262                                 y = (x >> n);
8263                                 if (y != 1 || x == 0) {
8264                                         x = 0;
8265                                         break;
8266                                 }
8267                         }
8268                         /*
8269                          * If x is nonzero, an int is big enough for the bits
8270                          * that we want.
8271                          */
8272                         result = (x != 0) ? "int" : "long";
8273                 }
8274                 fputs(result, fp);
8275                 fclose(fp);
8276         }
8277         ${cf_cv_main_return:-return}(0);
8278 }
8279                 ],
8280                 [cf_cv_typeof_chtype=`cat cf_test.out`],
8281                 [cf_cv_typeof_chtype=long],
8282                 [cf_cv_typeof_chtype=long])
8283                 rm -f cf_test.out
8284         ])
8285 AC_MSG_RESULT($cf_cv_typeof_chtype)
8286
8287 AC_SUBST(cf_cv_typeof_chtype)
8288 AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype,[Define to actual type if needed for chtype])
8289 ])dnl
8290 dnl ---------------------------------------------------------------------------
8291 dnl CF_TYPE_SIGACTION version: 4 updated: 2012/10/06 17:56:13
8292 dnl -----------------
8293 dnl
8294 AC_DEFUN([CF_TYPE_SIGACTION],
8295 [
8296 AC_MSG_CHECKING([for type sigaction_t])
8297 AC_CACHE_VAL(cf_cv_type_sigaction,[
8298         AC_TRY_COMPILE([
8299 #include <signal.h>],
8300                 [sigaction_t x],
8301                 [cf_cv_type_sigaction=yes],
8302                 [cf_cv_type_sigaction=no])])
8303 AC_MSG_RESULT($cf_cv_type_sigaction)
8304 test "$cf_cv_type_sigaction" = yes && AC_DEFINE(HAVE_TYPE_SIGACTION,1,[Define to 1 if we have the sigaction_t type])
8305 ])dnl
8306 dnl ---------------------------------------------------------------------------
8307 dnl CF_UNSIGNED_LITERALS version: 2 updated: 1998/02/07 22:10:16
8308 dnl --------------------
8309 dnl Test if the compiler supports 'U' and 'L' suffixes.  Only old compilers
8310 dnl won't, but they're still there.
8311 AC_DEFUN([CF_UNSIGNED_LITERALS],
8312 [
8313 AC_MSG_CHECKING([if unsigned literals are legal])
8314 AC_CACHE_VAL(cf_cv_unsigned_literals,[
8315         AC_TRY_COMPILE([],[long x = 1L + 1UL + 1U + 1],
8316                 [cf_cv_unsigned_literals=yes],
8317                 [cf_cv_unsigned_literals=no])
8318         ])
8319 AC_MSG_RESULT($cf_cv_unsigned_literals)
8320 ])dnl
8321 dnl ---------------------------------------------------------------------------
8322 dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
8323 dnl --------
8324 dnl Make an uppercase version of a variable
8325 dnl $1=uppercase($2)
8326 AC_DEFUN([CF_UPPER],
8327 [
8328 $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
8329 ])dnl
8330 dnl ---------------------------------------------------------------------------
8331 dnl CF_UTF8_LIB version: 9 updated: 2021/05/19 19:35:25
8332 dnl -----------
8333 dnl Check for multibyte support, and if not found, utf8 compatibility library
8334 AC_DEFUN([CF_UTF8_LIB],
8335 [
8336 AC_HAVE_HEADERS(wchar.h)
8337 AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
8338         cf_save_LIBS="$LIBS"
8339         AC_TRY_LINK([
8340 #include <stdlib.h>
8341 #include <stdio.h>
8342 #ifdef HAVE_WCHAR_H
8343 #include <wchar.h>
8344 #endif
8345 ],[putwc(0,0);],
8346         [cf_cv_utf8_lib=yes],
8347         [CF_FIND_LINKAGE([
8348 #include <libutf8.h>],[putwc(0,0);],utf8,
8349                 [cf_cv_utf8_lib=add-on],
8350                 [cf_cv_utf8_lib=no])
8351 ])])
8352
8353 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
8354 # ncurses/ncursesw:
8355 if test "$cf_cv_utf8_lib" = "add-on" ; then
8356         AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h])
8357         CF_ADD_INCDIR($cf_cv_header_path_utf8)
8358         CF_ADD_LIBDIR($cf_cv_library_path_utf8)
8359         CF_ADD_LIBS($cf_cv_library_file_utf8)
8360 fi
8361 ])dnl
8362 dnl ---------------------------------------------------------------------------
8363 dnl CF_VA_COPY version: 6 updated: 2018/12/04 18:14:25
8364 dnl ----------
8365 dnl check for va_copy, part of stdarg.h starting with ISO C 1999.
8366 dnl Also, workaround for glibc's __va_copy, by checking for both.
8367 dnl Finally, try to accommodate pre-ISO C 1999 headers.
8368 AC_DEFUN([CF_VA_COPY],[
8369 AC_CACHE_CHECK(for va_copy, cf_cv_have_va_copy,[
8370 AC_TRY_LINK([
8371 #include <stdarg.h>
8372 ],[
8373         static va_list dst;
8374         static va_list src;
8375         va_copy(dst, src)],
8376         cf_cv_have_va_copy=yes,
8377         cf_cv_have_va_copy=no)])
8378
8379 if test "$cf_cv_have_va_copy" = yes;
8380 then
8381         AC_DEFINE(HAVE_VA_COPY,1,[Define to 1 if we have va_copy])
8382 else # !cf_cv_have_va_copy
8383
8384 AC_CACHE_CHECK(for __va_copy, cf_cv_have___va_copy,[
8385 AC_TRY_LINK([
8386 #include <stdarg.h>
8387 ],[
8388         static va_list dst;
8389         static va_list src;
8390         __va_copy(dst, src)],
8391         cf_cv_have___va_copy=yes,
8392         cf_cv_have___va_copy=no)])
8393
8394 if test "$cf_cv_have___va_copy" = yes
8395 then
8396         AC_DEFINE(HAVE___VA_COPY,1,[Define to 1 if we have __va_copy])
8397 else # !cf_cv_have___va_copy
8398
8399 AC_CACHE_CHECK(for __builtin_va_copy, cf_cv_have___builtin_va_copy,[
8400 AC_TRY_LINK([
8401 #include <stdarg.h>
8402 ],[
8403         static va_list dst;
8404         static va_list src;
8405         __builtin_va_copy(dst, src)],
8406         cf_cv_have___builtin_va_copy=yes,
8407         cf_cv_have___builtin_va_copy=no)])
8408
8409 test "$cf_cv_have___builtin_va_copy" = yes &&
8410         AC_DEFINE(HAVE___BUILTIN_VA_COPY,1,[Define to 1 if we have __builtin_va_copy])
8411
8412 fi # cf_cv_have___va_copy
8413
8414 fi # cf_cv_have_va_copy
8415
8416 case "${cf_cv_have_va_copy}${cf_cv_have___va_copy}${cf_cv_have___builtin_va_copy}" in
8417 (*yes*)
8418         ;;
8419
8420 (*)
8421         AC_CACHE_CHECK(if we can simply copy va_list, cf_cv_pointer_va_list,[
8422 AC_TRY_LINK([
8423 #include <stdarg.h>
8424 ],[
8425         va_list dst;
8426         va_list src;
8427         dst = src],
8428         cf_cv_pointer_va_list=yes,
8429         cf_cv_pointer_va_list=no)])
8430
8431         if test "$cf_cv_pointer_va_list" = no
8432         then
8433                 AC_CACHE_CHECK(if we can copy va_list indirectly, cf_cv_array_va_list,[
8434 AC_TRY_LINK([
8435 #include <stdarg.h>
8436 ],[
8437         va_list dst;
8438         va_list src;
8439         *dst = *src],
8440                         cf_cv_array_va_list=yes,
8441                         cf_cv_array_va_list=no)])
8442                 test "$cf_cv_array_va_list" = yes && AC_DEFINE(ARRAY_VA_LIST,1,[Define to 1 if we can copy va_list indirectly])
8443         fi
8444         ;;
8445 esac
8446 ])
8447 dnl ---------------------------------------------------------------------------
8448 dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
8449 dnl ----------
8450 dnl Use AC_VERBOSE w/o the warnings
8451 AC_DEFUN([CF_VERBOSE],
8452 [test -n "$verbose" && echo "   $1" 1>&AC_FD_MSG
8453 CF_MSG_LOG([$1])
8454 ])dnl
8455 dnl ---------------------------------------------------------------------------
8456 dnl CF_VERSION_INFO version: 8 updated: 2021/01/01 13:31:04
8457 dnl ---------------
8458 dnl Define several useful symbols derived from the VERSION file.  A separate
8459 dnl file is preferred to embedding the version numbers in various scripts.
8460 dnl (automake is a textbook-example of why the latter is a bad idea, but there
8461 dnl are others).
8462 dnl
8463 dnl The file contents are:
8464 dnl     libtool-version release-version patch-version
8465 dnl or
8466 dnl     release-version
8467 dnl where
8468 dnl     libtool-version (see ?) consists of 3 integers separated by '.'
8469 dnl     release-version consists of a major version and minor version
8470 dnl             separated by '.', optionally followed by a patch-version
8471 dnl             separated by '-'.  The minor version need not be an
8472 dnl             integer (but it is preferred).
8473 dnl     patch-version is an integer in the form yyyymmdd, so ifdef's and
8474 dnl             scripts can easily compare versions.
8475 dnl
8476 dnl If libtool is used, the first form is required, since CF_WITH_LIBTOOL
8477 dnl simply extracts the first field using 'cut -f1'.
8478 dnl
8479 dnl Optional parameters:
8480 dnl $1 = internal name for package
8481 dnl $2 = external name for package
8482 AC_DEFUN([CF_VERSION_INFO],
8483 [
8484 if test -f "$srcdir/VERSION" ; then
8485         AC_MSG_CHECKING(for package version)
8486
8487         # if there are not enough fields, cut returns the last one...
8488         cf_field1=`sed -e '2,$d' "$srcdir/VERSION" |cut -f1`
8489         cf_field2=`sed -e '2,$d' "$srcdir/VERSION" |cut -f2`
8490         cf_field3=`sed -e '2,$d' "$srcdir/VERSION" |cut -f3`
8491
8492         # this is how CF_BUNDLED_INTL uses $VERSION:
8493         VERSION="$cf_field1"
8494
8495         VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'`
8496         test -z "$VERSION_MAJOR" && AC_MSG_ERROR(missing major-version)
8497
8498         VERSION_MINOR=`echo "$cf_field2" | sed -e 's/^[[^.]]*\.//' -e 's/-.*//'`
8499         test -z "$VERSION_MINOR" && AC_MSG_ERROR(missing minor-version)
8500
8501         AC_MSG_RESULT(${VERSION_MAJOR}.${VERSION_MINOR})
8502
8503         AC_MSG_CHECKING(for package patch date)
8504         VERSION_PATCH=`echo "$cf_field3" | sed -e 's/^[[^-]]*-//'`
8505         case .$VERSION_PATCH in
8506         (.)
8507                 AC_MSG_ERROR(missing patch-date $VERSION_PATCH)
8508                 ;;
8509         (.[[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]])
8510                 ;;
8511         (*)
8512                 AC_MSG_ERROR(illegal patch-date $VERSION_PATCH)
8513                 ;;
8514         esac
8515         AC_MSG_RESULT($VERSION_PATCH)
8516 else
8517         AC_MSG_ERROR(did not find $srcdir/VERSION)
8518 fi
8519
8520 # show the actual data that we have for versions:
8521 CF_VERBOSE(ABI VERSION $VERSION)
8522 CF_VERBOSE(VERSION_MAJOR $VERSION_MAJOR)
8523 CF_VERBOSE(VERSION_MINOR $VERSION_MINOR)
8524 CF_VERBOSE(VERSION_PATCH $VERSION_PATCH)
8525
8526 AC_SUBST(VERSION)
8527 AC_SUBST(VERSION_MAJOR)
8528 AC_SUBST(VERSION_MINOR)
8529 AC_SUBST(VERSION_PATCH)
8530
8531 dnl if a package name is given, define its corresponding version info.  We
8532 dnl need the package name to ensure that the defined symbols are unique.
8533 ifelse($1,,,[
8534         cf_PACKAGE=$1
8535         PACKAGE=ifelse($2,,$1,$2)
8536         AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",[Define to the package-name])
8537         AC_SUBST(PACKAGE)
8538         CF_UPPER(cf_PACKAGE,$cf_PACKAGE)
8539         AC_DEFINE_UNQUOTED(${cf_PACKAGE}_VERSION,"${VERSION_MAJOR}.${VERSION_MINOR}")
8540         AC_DEFINE_UNQUOTED(${cf_PACKAGE}_PATCHDATE,${VERSION_PATCH})
8541 ])
8542 ])dnl
8543 dnl ---------------------------------------------------------------------------
8544 dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
8545 dnl -------------
8546 dnl Check if type wide-character type $1 is declared, and if so, which header
8547 dnl file is needed.  The second parameter is used to set a shell variable when
8548 dnl the type is not found.  The first parameter sets a shell variable for the
8549 dnl opposite sense.
8550 AC_DEFUN([CF_WCHAR_TYPE],
8551 [
8552 # This is needed on Tru64 5.0 to declare $1
8553 AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[
8554 AC_TRY_COMPILE([
8555 #include <stdlib.h>
8556 #include <stdarg.h>
8557 #include <stdio.h>
8558 #ifdef HAVE_LIBUTF8_H
8559 #include <libutf8.h>
8560 #endif],
8561         [$1 state],
8562         [cf_cv_$1=no],
8563         [AC_TRY_COMPILE([
8564 #include <stdlib.h>
8565 #include <stdarg.h>
8566 #include <stdio.h>
8567 #include <wchar.h>
8568 #ifdef HAVE_LIBUTF8_H
8569 #include <libutf8.h>
8570 #endif],
8571         [$1 value],
8572         [cf_cv_$1=yes],
8573         [cf_cv_$1=unknown])])])
8574
8575 if test "$cf_cv_$1" = yes ; then
8576         AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h])
8577         NEED_WCHAR_H=1
8578 fi
8579
8580 ifelse([$2],,,[
8581 # if we do not find $1 in either place, use substitution to provide a fallback.
8582 if test "$cf_cv_$1" = unknown ; then
8583         $2=1
8584 fi
8585 ])
8586 ifelse($3,,,[
8587 # if we find $1 in either place, use substitution to provide a fallback.
8588 if test "$cf_cv_$1" != unknown ; then
8589         $3=1
8590 fi
8591 ])
8592 ])dnl
8593 dnl ---------------------------------------------------------------------------
8594 dnl CF_WEAK_SYMBOLS version: 1 updated: 2008/08/16 19:18:06
8595 dnl ---------------
8596 dnl Check for compiler-support for weak symbols.
8597 dnl This works with "recent" gcc.
8598 AC_DEFUN([CF_WEAK_SYMBOLS],[
8599 AC_CACHE_CHECK(if $CC supports weak symbols,cf_cv_weak_symbols,[
8600
8601 AC_TRY_COMPILE([
8602 #include <stdio.h>],
8603 [
8604 #if defined(__GNUC__)
8605 #  if defined __USE_ISOC99
8606 #    define _cat_pragma(exp)    _Pragma(#exp)
8607 #    define _weak_pragma(exp)   _cat_pragma(weak name)
8608 #  else
8609 #    define _weak_pragma(exp)
8610 #  endif
8611 #  define _declare(name)        __extension__ extern __typeof__(name) name
8612 #  define weak_symbol(name)     _weak_pragma(name) _declare(name) __attribute__((weak))
8613 #endif
8614
8615 weak_symbol(fopen);
8616 ],[cf_cv_weak_symbols=yes],[cf_cv_weak_symbols=no])
8617 ])
8618 ])dnl
8619 dnl ---------------------------------------------------------------------------
8620 dnl CF_WITH_ABI_VERSION version: 4 updated: 2021/01/01 13:31:04
8621 dnl -------------------
8622 dnl Allow library's ABI to be overridden.  Generally this happens when a
8623 dnl packager has incremented the ABI past that used in the original package,
8624 dnl and wishes to keep doing this.
8625 dnl
8626 dnl $1 is the package name, if any, to derive a corresponding {package}_ABI
8627 dnl symbol.
8628 AC_DEFUN([CF_WITH_ABI_VERSION],[
8629 test -z "$cf_cv_abi_version" && cf_cv_abi_version=0
8630 AC_ARG_WITH(abi-version,
8631 [  --with-abi-version=XXX  override derived ABI version],[
8632         if test "x$cf_cv_abi_version" != "x$withval"
8633         then
8634                 AC_MSG_WARN(overriding ABI version $cf_cv_abi_version to $withval)
8635                 case "$cf_cv_rel_version" in
8636                 (5.*)
8637                         cf_cv_rel_version=$withval.0
8638                         ;;
8639                 (6.*)
8640                         cf_cv_rel_version=$withval.9    # FIXME: should be 10 as of 6.0 release
8641                         ;;
8642                 esac
8643         fi
8644         cf_cv_abi_version=$withval])
8645         CF_NUMBER_SYNTAX($cf_cv_abi_version,ABI version)
8646 ifelse($1,,,[
8647 $1_ABI=$cf_cv_abi_version
8648 ])
8649 ])dnl
8650 dnl ---------------------------------------------------------------------------
8651 dnl CF_WITH_ADA_COMPILER version: 2 updated: 2010/06/26 17:35:58
8652 dnl --------------------
8653 dnl Command-line option to specify the Ada95 compiler.
8654 AC_DEFUN([CF_WITH_ADA_COMPILER],[
8655 AC_MSG_CHECKING(for ada-compiler)
8656 AC_ARG_WITH(ada-compiler,
8657         [  --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)],
8658         [cf_ada_compiler=$withval],
8659         [cf_ada_compiler=gnatmake])
8660 AC_SUBST(cf_ada_compiler)
8661 AC_MSG_RESULT($cf_ada_compiler)
8662 ])dnl
8663 dnl ---------------------------------------------------------------------------
8664 dnl CF_WITH_ADA_INCLUDE version: 2 updated: 2010/06/26 17:35:58
8665 dnl -------------------
8666 dnl Command-line option to specify where Ada includes will install.
8667 AC_DEFUN([CF_WITH_ADA_INCLUDE],[
8668 AC_MSG_CHECKING(for ada-include)
8669 CF_WITH_PATH(ada-include,
8670    [  --with-ada-include=DIR  Ada includes are in DIR],
8671    ADA_INCLUDE,
8672    PREFIX/share/ada/adainclude,
8673    [$]prefix/share/ada/adainclude)
8674 AC_SUBST(ADA_INCLUDE)
8675 AC_MSG_RESULT($ADA_INCLUDE)
8676 ])dnl
8677 dnl ---------------------------------------------------------------------------
8678 dnl CF_WITH_ADA_LIBNAME version: 1 updated: 2019/09/07 18:59:41
8679 dnl -------------------
8680 dnl CF_WITH_ADA_LIBNAME
8681 dnl -------------------
8682 dnl Command-line option to specify how to name the resulting Ada library.
8683 dnl $1 = default value
8684 AC_DEFUN([CF_WITH_ADA_LIBNAME],[
8685 AC_MSG_CHECKING(for ada-libname)
8686 AC_ARG_WITH(ada-libname,
8687    [  --with-ada-libname=XXX  override default Ada library-name],
8688    ADA_LIBNAME=[$]withval,
8689    ADA_LIBNAME=$1)
8690 case "x$ADA_LIBNAME" in
8691 (x|xyes|xno)
8692         ADA_LIBNAME=$1
8693         ;;
8694 esac
8695 AC_SUBST(ADA_LIBNAME)
8696 AC_MSG_RESULT($ADA_LIBNAME)
8697 ])dnl
8698 dnl ---------------------------------------------------------------------------
8699 dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58
8700 dnl -------------------
8701 dnl Command-line option to specify where Ada objects will install.
8702 AC_DEFUN([CF_WITH_ADA_OBJECTS],[
8703 AC_MSG_CHECKING(for ada-objects)
8704 CF_WITH_PATH(ada-objects,
8705    [  --with-ada-objects=DIR  Ada objects are in DIR],
8706    ADA_OBJECTS,
8707    PREFIX/lib/ada/adalib,
8708    [$]prefix/lib/ada/adalib)
8709 AC_SUBST(ADA_OBJECTS)
8710 AC_MSG_RESULT($ADA_OBJECTS)
8711 ])dnl
8712 dnl ---------------------------------------------------------------------------
8713 dnl CF_WITH_ADA_SHAREDLIB version: 5 updated: 2018/07/21 19:10:35
8714 dnl ---------------------
8715 dnl Command-line option to specify if an Ada95 shared-library should be built,
8716 dnl and optionally what its soname should be.
8717 AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[
8718 AC_REQUIRE([CF_GNAT_PROJECTS])
8719 AC_MSG_CHECKING(if an Ada95 shared-library should be built)
8720 AC_ARG_WITH(ada-sharedlib,
8721         [  --with-ada-sharedlib=soname build shared-library (requires GNAT projects)],
8722         [with_ada_sharedlib=$withval],
8723         [with_ada_sharedlib=no])
8724 AC_MSG_RESULT($with_ada_sharedlib)
8725
8726 if test "x$with_ada_sharedlib" != xno
8727 then
8728         if test "x$cf_gnat_projects" != xyes
8729         then
8730                 AC_MSG_WARN(disabling shared-library since GNAT projects are not supported)
8731                 with_ada_sharedlib=no
8732         fi
8733 fi
8734
8735 ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
8736 MAKE_ADA_SHAREDLIB="#"
8737
8738 if test "x$with_ada_sharedlib" != xno
8739 then
8740         MAKE_ADA_SHAREDLIB=
8741         if test "x$with_ada_sharedlib" != xyes
8742         then
8743                 ADA_SHAREDLIB="$with_ada_sharedlib"
8744         fi
8745 fi
8746
8747 AC_SUBST(ADA_SHAREDLIB)
8748 AC_SUBST(MAKE_ADA_SHAREDLIB)
8749 ])dnl
8750 dnl ---------------------------------------------------------------------------
8751 dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
8752 dnl ----------------
8753 dnl Configure-option for dbmalloc.  The optional parameter is used to override
8754 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
8755 AC_DEFUN([CF_WITH_DBMALLOC],[
8756 CF_NO_LEAKS_OPTION(dbmalloc,
8757         [  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
8758         [USE_DBMALLOC])
8759
8760 if test "$with_dbmalloc" = yes ; then
8761         AC_CHECK_HEADER(dbmalloc.h,
8762                 [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
8763 fi
8764 ])dnl
8765 dnl ---------------------------------------------------------------------------
8766 dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
8767 dnl ---------------
8768 dnl Configure-option for dmalloc.  The optional parameter is used to override
8769 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
8770 AC_DEFUN([CF_WITH_DMALLOC],[
8771 CF_NO_LEAKS_OPTION(dmalloc,
8772         [  --with-dmalloc          test: use Gray Watson's dmalloc library],
8773         [USE_DMALLOC])
8774
8775 if test "$with_dmalloc" = yes ; then
8776         AC_CHECK_HEADER(dmalloc.h,
8777                 [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
8778 fi
8779 ])dnl
8780 dnl ---------------------------------------------------------------------------
8781 dnl CF_WITH_EXPORT_SYMS version: 3 updated: 2014/12/20 19:16:08
8782 dnl -------------------
8783 dnl Use this with libtool to specify the list of symbols that may be exported.
8784 dnl The input file contains one symbol per line; comments work with "#".
8785 dnl
8786 dnl $1 = basename of the ".sym" file (default $PACKAGE)
8787 AC_DEFUN([CF_WITH_EXPORT_SYMS],
8788 [
8789 AC_MSG_CHECKING(if exported-symbols file should be used)
8790 AC_ARG_WITH(export-syms,
8791         [  --with-export-syms=XXX  limit exported symbols using libtool],
8792         [with_export_syms=$withval],
8793         [with_export_syms=no])
8794 if test "x$with_export_syms" = xyes
8795 then
8796         with_export_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).sym'
8797         AC_SUBST(PACKAGE)
8798 fi
8799 AC_MSG_RESULT($with_export_syms)
8800 if test "x$with_export_syms" != xno
8801 then
8802         EXPORT_SYMS="-export-symbols $with_export_syms"
8803         AC_SUBST(EXPORT_SYMS)
8804 fi
8805 ])dnl
8806 dnl ---------------------------------------------------------------------------
8807 dnl CF_WITH_GPM version: 10 updated: 2017/04/29 18:32:18
8808 dnl -----------
8809 dnl
8810 dnl The option parameter (if neither yes/no) is assumed to be the name of
8811 dnl the gpm library, e.g., for dynamic loading.
8812 AC_DEFUN([CF_WITH_GPM],
8813 [
8814 AC_MSG_CHECKING(if you want to link with the GPM mouse library)
8815 AC_ARG_WITH(gpm,
8816         [  --with-gpm              use Alessandro Rubini's GPM library],
8817         [with_gpm=$withval],
8818         [with_gpm=maybe])
8819 AC_MSG_RESULT($with_gpm)
8820
8821 if test "$with_gpm" != no ; then
8822         AC_CHECK_HEADER(gpm.h,[
8823                 AC_DEFINE(HAVE_GPM_H,1,[Define to 1 if we have gpm.h header])
8824                 if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then
8825                         CF_VERBOSE(assuming we really have GPM library)
8826                         AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library])
8827                         with_gpm=yes
8828                 else
8829                         AC_CHECK_LIB(gpm,Gpm_Open,[with_gpm=yes],[
8830                                 if test "$with_gpm" = maybe; then
8831                                         AC_MSG_WARN(Cannot link with GPM library)
8832                                         with_gpm=no
8833                                 else
8834                                         AC_MSG_ERROR(Cannot link with GPM library)
8835                                 fi
8836                         ])
8837                 fi
8838         ],[
8839                 test "$with_gpm" != maybe && AC_MSG_WARN(Cannot find GPM header)
8840                 with_gpm=no
8841         ])
8842 fi
8843 ])
8844 dnl ---------------------------------------------------------------------------
8845 dnl CF_WITH_LIBTOOL version: 36 updated: 2021/01/01 13:31:04
8846 dnl ---------------
8847 dnl Provide a configure option to incorporate libtool.  Define several useful
8848 dnl symbols for the makefile rules.
8849 dnl
8850 dnl The reference to AC_PROG_LIBTOOL does not normally work, since it uses
8851 dnl macros from libtool.m4 which is in the aclocal directory of automake.
8852 dnl Following is a simple script which turns on the AC_PROG_LIBTOOL macro.
8853 dnl But that still does not work properly since the macro is expanded outside
8854 dnl the CF_WITH_LIBTOOL macro:
8855 dnl
8856 dnl     #!/bin/sh
8857 dnl     ACLOCAL=`aclocal --print-ac-dir`
8858 dnl     if test -z "$ACLOCAL" ; then
8859 dnl             echo cannot find aclocal directory
8860 dnl             exit 1
8861 dnl     elif test ! -f $ACLOCAL/libtool.m4 ; then
8862 dnl             echo cannot find libtool.m4 file
8863 dnl             exit 1
8864 dnl     fi
8865 dnl
8866 dnl     LOCAL=aclocal.m4
8867 dnl     ORIG=aclocal.m4.orig
8868 dnl
8869 dnl     trap "mv $ORIG $LOCAL" 0 1 2 3 15
8870 dnl     rm -f $ORIG
8871 dnl     mv $LOCAL $ORIG
8872 dnl
8873 dnl     # sed the LIBTOOL= assignment to omit the current directory?
8874 dnl     sed -e 's/^LIBTOOL=.*/LIBTOOL=${LIBTOOL:-libtool}/' $ACLOCAL/libtool.m4 >>$LOCAL
8875 dnl     cat $ORIG >>$LOCAL
8876 dnl
8877 dnl     autoconf-257 $*
8878 dnl
8879 AC_DEFUN([CF_WITH_LIBTOOL],
8880 [
8881 AC_REQUIRE([CF_DISABLE_LIBTOOL_VERSION])
8882 ifdef([AC_PROG_LIBTOOL],,[
8883 LIBTOOL=
8884 ])
8885 # common library maintenance symbols that are convenient for libtool scripts:
8886 LIB_CREATE='${AR} -cr'
8887 LIB_OBJECT='${OBJECTS}'
8888 LIB_SUFFIX=.a
8889 LIB_PREP="$RANLIB"
8890
8891 # symbols used to prop libtool up to enable it to determine what it should be
8892 # doing:
8893 LIB_CLEAN=
8894 LIB_COMPILE=
8895 LIB_LINK='${CC}'
8896 LIB_INSTALL=
8897 LIB_UNINSTALL=
8898
8899 AC_MSG_CHECKING(if you want to build libraries with libtool)
8900 AC_ARG_WITH(libtool,
8901         [  --with-libtool          generate libraries with libtool],
8902         [with_libtool=$withval],
8903         [with_libtool=no])
8904 AC_MSG_RESULT($with_libtool)
8905 if test "$with_libtool" != "no"; then
8906 ifdef([AC_PROG_LIBTOOL],[
8907         # missing_content_AC_PROG_LIBTOOL{{
8908         AC_PROG_LIBTOOL
8909         # missing_content_AC_PROG_LIBTOOL}}
8910 ],[
8911         if test "$with_libtool" != "yes" ; then
8912                 CF_PATH_SYNTAX(with_libtool)
8913                 LIBTOOL=$with_libtool
8914         else
8915                 AC_CHECK_TOOLS(LIBTOOL,[libtool glibtool],none)
8916                 CF_LIBTOOL_VERSION
8917                 if test -z "$cf_cv_libtool_version" && test "$LIBTOOL" = libtool
8918                 then
8919                         CF_FORGET_TOOL(LIBTOOL)
8920                         AC_CHECK_TOOLS(LIBTOOL,[glibtool],none)
8921                         CF_LIBTOOL_VERSION
8922                 fi
8923         fi
8924         if test -z "$LIBTOOL" ; then
8925                 AC_MSG_ERROR(Cannot find libtool)
8926         fi
8927 ])dnl
8928         LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${libdir} ${LIBTOOL_VERSION} `cut -f1 ${top_srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o'
8929         LIB_OBJECT='${OBJECTS:.o=.lo}'
8930         LIB_SUFFIX=.la
8931         LIB_CLEAN='${LIBTOOL} --mode=clean'
8932         LIB_COMPILE='${LIBTOOL} --mode=compile'
8933         LIB_LINK='${LIBTOOL} --mode=link ${CC} ${LIBTOOL_OPTS}'
8934         LIB_INSTALL='${LIBTOOL} --mode=install'
8935         LIB_UNINSTALL='${LIBTOOL} --mode=uninstall'
8936         LIB_PREP=:
8937
8938         CF_CHECK_LIBTOOL_VERSION
8939
8940         # special hack to add -no-undefined (which libtool should do for itself)
8941         LT_UNDEF=
8942         case "$cf_cv_system_name" in
8943         (cygwin*|msys*|mingw32*|os2*|uwin*|aix[[4-7]])
8944                 LT_UNDEF=-no-undefined
8945                 ;;
8946         esac
8947         AC_SUBST([LT_UNDEF])
8948
8949         # special hack to add --tag option for C++ compiler
8950         case "$cf_cv_libtool_version" in
8951         (1.[[5-9]]*|[[2-9]].[[0-9.a-z]]*)
8952                 LIBTOOL_CXX="$LIBTOOL --tag=CXX"
8953                 LIBTOOL="$LIBTOOL --tag=CC"
8954                 ;;
8955         (*)
8956                 LIBTOOL_CXX="$LIBTOOL"
8957                 ;;
8958         esac
8959 else
8960         LIBTOOL=""
8961         LIBTOOL_CXX=""
8962 fi
8963
8964 test -z "$LIBTOOL" && ECHO_LT=
8965
8966 AC_SUBST(LIBTOOL)
8967 AC_SUBST(LIBTOOL_CXX)
8968 AC_SUBST(LIBTOOL_OPTS)
8969
8970 AC_SUBST(LIB_CREATE)
8971 AC_SUBST(LIB_OBJECT)
8972 AC_SUBST(LIB_SUFFIX)
8973 AC_SUBST(LIB_PREP)
8974
8975 AC_SUBST(LIB_CLEAN)
8976 AC_SUBST(LIB_COMPILE)
8977 AC_SUBST(LIB_LINK)
8978 AC_SUBST(LIB_INSTALL)
8979 AC_SUBST(LIB_UNINSTALL)
8980
8981 ])dnl
8982 dnl ---------------------------------------------------------------------------
8983 dnl CF_WITH_LIBTOOL_OPTS version: 4 updated: 2015/04/17 21:13:04
8984 dnl --------------------
8985 dnl Allow user to pass additional libtool options into the library creation
8986 dnl and link steps.  The main use for this is to do something like
8987 dnl     ./configure --with-libtool-opts=-static
8988 dnl to get the same behavior as automake-flavored
8989 dnl     ./configure --enable-static
8990 AC_DEFUN([CF_WITH_LIBTOOL_OPTS],[
8991 AC_MSG_CHECKING(for additional libtool options)
8992 AC_ARG_WITH(libtool-opts,
8993         [  --with-libtool-opts=XXX specify additional libtool options],
8994         [with_libtool_opts=$withval],
8995         [with_libtool_opts=no])
8996 AC_MSG_RESULT($with_libtool_opts)
8997
8998 case .$with_libtool_opts in
8999 (.yes|.no|.)
9000         ;;
9001 (*)
9002         LIBTOOL_OPTS="$LIBTOOL_OPTS $with_libtool_opts"
9003         ;;
9004 esac
9005
9006 AC_SUBST(LIBTOOL_OPTS)
9007 ])dnl
9008 dnl ---------------------------------------------------------------------------
9009 dnl CF_WITH_LIB_BASENAME version: 1 updated: 2020/03/07 20:05:14
9010 dnl --------------------
9011 dnl Allow for overriding the basename of a library, i.e., the part to which
9012 dnl prefixes/suffixes are attached.
9013 dnl
9014 dnl $1 = variable to set
9015 dnl $2 = option name
9016 dnl $3 = default basename for library, if omitted use $2
9017 AC_DEFUN([CF_WITH_LIB_BASENAME],
9018 [
9019 AC_MSG_CHECKING(for desired basename for $2 library)
9020 AC_ARG_WITH($2-libname,
9021         [  --with-$2-libname=XXX override ifelse($3,,$2,$3) basename of library],
9022         [with_lib_basename=$withval],
9023         [with_lib_basename=ifelse($3,,$2,$3)])
9024 $1="$with_lib_basename"
9025
9026 case "x[$]$1" in
9027 (x|xno|xnone|xyes)
9028         $1=ifelse($3,,$2,$3)
9029         ;;
9030 (*)
9031         ;;
9032 esac
9033
9034 AC_MSG_RESULT([$]$1)
9035 AC_SUBST($1)
9036 ])dnl
9037 dnl ---------------------------------------------------------------------------
9038 dnl CF_WITH_LIB_PREFIX version: 2 updated: 2021/01/01 16:53:59
9039 dnl ------------------
9040 dnl Allow the library-prefix to be overridden.  OS/2 EMX originally had no
9041 dnl "lib" prefix, e.g., because it used the dll naming convention.
9042 dnl
9043 dnl $1 = variable to set
9044 AC_DEFUN([CF_WITH_LIB_PREFIX],
9045 [
9046 AC_MSG_CHECKING(if you want to have a library-prefix)
9047 AC_ARG_WITH(lib-prefix,
9048         [  --with-lib-prefix       override library-prefix],
9049         [with_lib_prefix=$withval],
9050         [with_lib_prefix=auto])
9051 AC_MSG_RESULT($with_lib_prefix)
9052
9053 if test "$with_lib_prefix" = auto
9054 then
9055         CF_LIB_PREFIX($1)
9056 elif test "$with_lib_prefix" = no
9057 then
9058         LIB_PREFIX=
9059 else
9060         LIB_PREFIX=$with_lib_prefix
9061 fi
9062 ])dnl
9063 dnl ---------------------------------------------------------------------------
9064 dnl CF_WITH_PATH version: 12 updated: 2021/09/04 06:35:04
9065 dnl ------------
9066 dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just
9067 dnl defaulting to yes/no.
9068 dnl
9069 dnl $1 = option name
9070 dnl $2 = help-text
9071 dnl $3 = environment variable to set
9072 dnl $4 = default value, shown in the help-message, must be a constant
9073 dnl $5 = default value, if it is an expression & cannot be in the help-message
9074 dnl
9075 AC_DEFUN([CF_WITH_PATH],
9076 [AC_ARG_WITH($1,[$2 ](default: ifelse([$4],,empty,[$4])),,
9077 ifelse([$4],,[withval="${$3}"],[withval="${$3:-ifelse([$5],,[$4],[$5])}"]))dnl
9078 if ifelse([$5],,true,[test -n "$5"]) ; then
9079 CF_PATH_SYNTAX(withval)
9080 fi
9081 eval $3="$withval"
9082 AC_SUBST($3)dnl
9083 ])dnl
9084 dnl ---------------------------------------------------------------------------
9085 dnl CF_WITH_PATHLIST version: 13 updated: 2021/09/04 06:35:04
9086 dnl ----------------
9087 dnl Process an option specifying a list of colon-separated paths.
9088 dnl
9089 dnl $1 = option name
9090 dnl $2 = help-text
9091 dnl $3 = environment variable to set
9092 dnl $4 = default value, shown in the help-message, must be a constant
9093 dnl $5 = default value, if it is an expression & cannot be in the help-message
9094 dnl $6 = flag to tell if we want to define or substitute
9095 dnl
9096 AC_DEFUN([CF_WITH_PATHLIST],[
9097 AC_REQUIRE([CF_PATHSEP])
9098 AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
9099 ifelse($4,,[withval=${$3}],[withval=${$3:-ifelse($5,,$4,$5)}]))dnl
9100
9101 IFS="${IFS:-    }"; ac_save_ifs="$IFS"; IFS="${PATH_SEPARATOR}"
9102 cf_dst_path=
9103 for cf_src_path in $withval
9104 do
9105   CF_PATH_SYNTAX(cf_src_path)
9106   test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR"
9107   cf_dst_path="${cf_dst_path}${cf_src_path}"
9108 done
9109 IFS="$ac_save_ifs"
9110
9111 ifelse($6,define,[
9112 # Strip single quotes from the value, e.g., when it was supplied as a literal
9113 # for $4 or $5.
9114 case "$cf_dst_path" in
9115 (\'*)
9116   cf_dst_path="`echo "$cf_dst_path" |sed -e s/\'// -e s/\'\$//`"
9117   ;;
9118 esac
9119 cf_dst_path=`echo "$cf_dst_path" | sed -e 's/\\\\/\\\\\\\\/g'`
9120 ])
9121
9122 # This may use the prefix/exec_prefix symbols which will only yield "NONE"
9123 # so we have to check/work around.  We do prefer the result of "eval"...
9124 eval cf_dst_eval="$cf_dst_path"
9125 case "x$cf_dst_eval" in
9126 (xNONE*)
9127         $3=$cf_dst_path
9128         ;;
9129 (*)
9130         $3="$cf_dst_eval"
9131         ;;
9132 esac
9133 AC_SUBST($3)dnl
9134
9135 ])dnl
9136 dnl ---------------------------------------------------------------------------
9137 dnl CF_WITH_PATH_PROG version: 1 updated: 2019/06/30 19:44:43
9138 dnl -----------------
9139 dnl Check for a given program, like CF_PATH_PROG, but allow override using a
9140 dnl "--with-xxx" option.
9141 dnl
9142 dnl Parameters:
9143 dnl             $1 = environment variable to set/update
9144 dnl             $2 = program name
9145 dnl             $3 = help-text
9146 dnl             $4 = $PATH
9147 AC_DEFUN([CF_WITH_PATH_PROG],[
9148 AC_ARG_WITH($2-path,
9149         [  --with-$2-path=XXX     specify path of $2 ifelse($3,,,$3)],
9150         [AC_MSG_CHECKING(for $2 program ifelse($3,,,$3))
9151                 $1=$withval
9152                 AC_MSG_RESULT([$]$1)
9153                 CF_PATH_SYNTAX($1)
9154         ],
9155         [CF_PATH_PROG($1,$2,,ifelse($4,,,$4))
9156                 if test -z "[$]$1"
9157                 then
9158                         AC_MSG_WARN(no $2 program found ifelse($3,,,$3))
9159                 fi
9160         ])
9161 ])
9162 dnl ---------------------------------------------------------------------------
9163 dnl CF_WITH_PCRE2 version: 6 updated: 2021/08/11 20:35:34
9164 dnl -------------
9165 dnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is
9166 dnl available and the user requests it.  Assume the application will otherwise
9167 dnl use the POSIX interface.
9168 dnl
9169 dnl TODO allow $withval to specify package location
9170 AC_DEFUN([CF_WITH_PCRE2],
9171 [
9172 AC_REQUIRE([CF_PKG_CONFIG])
9173
9174 AC_MSG_CHECKING(if you want to use PCRE2 for regular-expressions)
9175 AC_ARG_WITH(pcre2,
9176         [  --with-pcre2            use PCRE2 for regular-expressions])
9177 test -z "$with_pcre2" && with_pcre2=no
9178 AC_MSG_RESULT($with_pcre2)
9179
9180 if test "x$with_pcre2" != xno ; then
9181         cf_with_pcre2_ok=no
9182         for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre
9183         do
9184                 CF_TRY_PKG_CONFIG($cf_with_pcre2,[cf_with_pcre2_ok=yes; break])
9185         done
9186         cf_with_pcre2_ok=yes || AC_MSG_ERROR(Cannot find PCRE2 library)
9187
9188         AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library])
9189
9190         # if pkgconfig gave no results, look for the libraries directly
9191         case "$LIBS" in
9192         (*pcre2-posix*|*pcreposix*)
9193                 ;;
9194         (*)
9195                 AC_CHECK_LIB(pcre2-posix,regcomp,[
9196                         CF_ADD_LIB(pcre2-posix)],
9197                         [AC_CHECK_LIB(pcreposix,regcomp,[
9198                          CF_ADD_LIB(pcreposix)
9199                         ],[AC_MSG_ERROR(Cannot find PCRE2 POSIX library)])])
9200                 ;;
9201         esac
9202
9203         # either way, check for the library header files
9204         AC_CHECK_HEADERS(pcre2posix.h pcreposix.h)
9205         AC_CHECK_FUNCS(PCRE2regcomp)
9206 fi
9207 ])dnl
9208 dnl ---------------------------------------------------------------------------
9209 dnl CF_WITH_PKG_CONFIG_LIBDIR version: 13 updated: 2021/10/17 11:12:47
9210 dnl -------------------------
9211 dnl Allow the choice of the pkg-config library directory to be overridden.
9212 dnl
9213 dnl pkg-config uses a search-list built from these colon-separated lists of
9214 dnl directories:
9215 dnl a) $PKG_CONFIG_PATH (tested first, added if set)
9216 dnl b) $PKG_CONFIG_LIBDIR (tested second, added if set)
9217 dnl c) builtin-list (added if $PKG_CONFIG_LIBDIR is not set)
9218 dnl
9219 dnl pkgconf (used with some systems such as FreeBSD in place of pkg-config)
9220 dnl optionally ignores $PKG_CONFIG_LIBDIR.
9221 AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[
9222
9223 case "$PKG_CONFIG" in
9224 (no|none|yes)
9225         AC_MSG_CHECKING(for pkg-config library directory)
9226         ;;
9227 (*)
9228         AC_MSG_CHECKING(for $PKG_CONFIG library directory)
9229         ;;
9230 esac
9231
9232 cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[[  ]]*,,'`
9233 AC_ARG_WITH(pkg-config-libdir,
9234         [  --with-pkg-config-libdir=XXX use given directory for installing pc-files],
9235         [cf_search_path=$withval],
9236         [test "x$PKG_CONFIG" != xnone && cf_search_path=yes])
9237
9238 case x$cf_search_path in
9239 (x/*)
9240         ;;
9241 (xyes)
9242         cf_search_path=
9243         CF_VERBOSE(auto...)
9244         # Look for the library directory using the same prefix as the executable
9245         AC_MSG_CHECKING(for search-list)
9246         if test "x$PKG_CONFIG" = xnone
9247         then
9248                 cf_path=$prefix
9249         else
9250                 cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`
9251                 cf_search_path=`
9252                 "$PKG_CONFIG" --debug --exists no-such-package 2>&1 | awk "\
9253 /^Scanning directory #[1-9][0-9]* '.*'$/{ \
9254         sub(\"^[[^']]*'\",\"\"); \
9255         sub(\"'.*\",\"\"); \
9256         printf \" %s\", \\[$]0; } \
9257 /trying path:/{
9258         sub(\"^.* trying path: \",\"\");
9259         sub(\" for no-such-package.*$\",\"\");
9260         printf \" %s\", \\[$]0;
9261 }
9262 { next; } \
9263 "`
9264         fi
9265
9266         if test -z "$cf_search_path"
9267         then
9268                 # If you don't like using the default architecture, you have to specify
9269                 # the intended library directory and corresponding compiler/linker
9270                 # options.
9271                 #
9272                 # This case allows for Debian's 2014-flavor of multiarch, along with
9273                 # the most common variations before that point.  Some other variants
9274                 # spell the directory differently, e.g., "pkg-config", and put it in
9275                 # unusual places.
9276                 #
9277                 # pkg-config has always been poorly standardized, which is ironic...
9278                 case x`(arch) 2>/dev/null` in
9279                 (*64)
9280                         cf_test_path="\
9281                                 $cf_path/lib/*64-linux-gnu \
9282                                 $cf_path/share \
9283                                 $cf_path/lib64 \
9284                                 $cf_path/lib32 \
9285                                 $cf_path/lib"
9286                         ;;
9287                 (*)
9288                         cf_test_path="\
9289                                 $cf_path/lib/*-linux-gnu \
9290                                 $cf_path/share \
9291                                 $cf_path/lib32 \
9292                                 $cf_path/lib \
9293                                 $cf_path/libdata"
9294                         ;;
9295                 esac
9296                 for cf_config in $cf_test_path
9297                 do
9298                         test -d "$cf_config/pkgconfig" && cf_search_path="$cf_search_path $cf_config/pkgconfig"
9299                 done
9300         fi
9301
9302         AC_MSG_RESULT($cf_search_path)
9303
9304         ;;
9305 (*)
9306         ;;
9307 esac
9308
9309 AC_MSG_CHECKING(for first directory)
9310 cf_pkg_config_path=none
9311 for cf_config in $cf_search_path
9312 do
9313         if test -d "$cf_config"
9314         then
9315                 cf_pkg_config_path=$cf_config
9316                 break
9317         fi
9318 done
9319 AC_MSG_RESULT($cf_pkg_config_path)
9320
9321 if test "x$cf_pkg_config_path" != xnone ; then
9322         # limit this to the first directory found
9323         PKG_CONFIG_LIBDIR="$cf_pkg_config_path"
9324 fi
9325
9326 AC_SUBST(PKG_CONFIG_LIBDIR)
9327 ])dnl
9328 dnl ---------------------------------------------------------------------------
9329 dnl CF_WITH_PTHREAD version: 7 updated: 2015/04/18 08:56:57
9330 dnl ---------------
9331 dnl Check for POSIX thread library.
9332 AC_DEFUN([CF_WITH_PTHREAD],
9333 [
9334 AC_MSG_CHECKING(if you want to link with the pthread library)
9335 AC_ARG_WITH(pthread,
9336         [  --with-pthread          use POSIX thread library],
9337         [with_pthread=$withval],
9338         [with_pthread=no])
9339 AC_MSG_RESULT($with_pthread)
9340
9341 if test "$with_pthread" != no ; then
9342         AC_CHECK_HEADER(pthread.h,[
9343         AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header])
9344
9345         for cf_lib_pthread in pthread c_r
9346         do
9347             AC_MSG_CHECKING(if we can link with the $cf_lib_pthread library)
9348             cf_save_LIBS="$LIBS"
9349             CF_ADD_LIB($cf_lib_pthread)
9350             AC_TRY_LINK([
9351 #include <pthread.h>
9352 ],[
9353                 int rc = pthread_create(0,0,0,0);
9354                 int r2 = pthread_mutexattr_settype(0, 0);
9355 ],[with_pthread=yes],[with_pthread=no])
9356             LIBS="$cf_save_LIBS"
9357             AC_MSG_RESULT($with_pthread)
9358             test "$with_pthread" = yes && break
9359         done
9360
9361         if test "$with_pthread" = yes ; then
9362             CF_ADD_LIB($cf_lib_pthread)
9363             AC_DEFINE(HAVE_LIBPTHREADS,1,[Define to 1 if we have pthreads library])
9364         else
9365             AC_MSG_ERROR(Cannot link with pthread library)
9366         fi
9367         ])
9368 fi
9369 ])
9370 dnl ---------------------------------------------------------------------------
9371 dnl CF_WITH_REL_VERSION version: 1 updated: 2003/09/20 18:12:49
9372 dnl -------------------
9373 dnl Allow library's release-version to be overridden.  Generally this happens when a
9374 dnl packager has incremented the release-version past that used in the original package,
9375 dnl and wishes to keep doing this.
9376 dnl
9377 dnl $1 is the package name, if any, to derive corresponding {package}_MAJOR
9378 dnl and {package}_MINOR symbols
9379 dnl symbol.
9380 AC_DEFUN([CF_WITH_REL_VERSION],[
9381 test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0
9382 AC_ARG_WITH(rel-version,
9383 [  --with-rel-version=XXX  override derived release version],
9384 [AC_MSG_WARN(overriding release version $cf_cv_rel_version to $withval)
9385  cf_cv_rel_version=$withval])
9386 ifelse($1,,[
9387  CF_NUMBER_SYNTAX($cf_cv_rel_version,Release version)
9388 ],[
9389  $1_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'`
9390  $1_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[[^.]]*//' -e 's/^\.//' -e 's/\..*//'`
9391  CF_NUMBER_SYNTAX([$]$1_MAJOR,Release major-version)
9392  CF_NUMBER_SYNTAX([$]$1_MINOR,Release minor-version)
9393 ])
9394 ])dnl
9395 dnl ---------------------------------------------------------------------------
9396 dnl CF_WITH_SYSMOUSE version: 3 updated: 2012/10/06 17:56:13
9397 dnl ----------------
9398 dnl If we can compile with sysmouse, make it available unless it is not wanted.
9399 AC_DEFUN([CF_WITH_SYSMOUSE],[
9400 # not everyone has "test -c"
9401 if test -c /dev/sysmouse 2>/dev/null ; then
9402 AC_MSG_CHECKING(if you want to use sysmouse)
9403 AC_ARG_WITH(sysmouse,
9404         [  --with-sysmouse         use sysmouse (FreeBSD console)],
9405         [cf_with_sysmouse=$withval],
9406         [cf_with_sysmouse=maybe])
9407         if test "$cf_with_sysmouse" != no ; then
9408         AC_TRY_COMPILE([
9409 #include <osreldate.h>
9410 #if (__FreeBSD_version >= 400017)
9411 #include <sys/consio.h>
9412 #include <sys/fbio.h>
9413 #else
9414 #include <machine/console.h>
9415 #endif
9416 ],[
9417         struct mouse_info the_mouse;
9418         ioctl(0, CONS_MOUSECTL, &the_mouse);
9419 ],[cf_with_sysmouse=yes],[cf_with_sysmouse=no])
9420         fi
9421 AC_MSG_RESULT($cf_with_sysmouse)
9422 test "$cf_with_sysmouse" = yes && AC_DEFINE(USE_SYSMOUSE,1,[Define to 1 if we can/should use the sysmouse interface])
9423 fi
9424 ])dnl
9425 dnl ---------------------------------------------------------------------------
9426 dnl CF_WITH_SYSTYPE version: 1 updated: 2013/01/26 16:26:12
9427 dnl ---------------
9428 dnl For testing, override the derived host system-type which is used to decide
9429 dnl things such as the linker commands used to build shared libraries.  This is
9430 dnl normally chosen automatically based on the type of system which you are
9431 dnl building on.  We use it for testing the configure script.
9432 dnl
9433 dnl This is different from the --host option: it is used only for testing parts
9434 dnl of the configure script which would not be reachable with --host since that
9435 dnl relies on the build environment being real, rather than mocked up.
9436 AC_DEFUN([CF_WITH_SYSTYPE],[
9437 CF_CHECK_CACHE([AC_CANONICAL_SYSTEM])
9438 AC_ARG_WITH(system-type,
9439         [  --with-system-type=XXX  test: override derived host system-type],
9440 [AC_MSG_WARN(overriding system type to $withval)
9441         cf_cv_system_name=$withval
9442         host_os=$withval
9443 ])
9444 ])dnl
9445 dnl ---------------------------------------------------------------------------
9446 dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
9447 dnl ----------------
9448 AC_DEFUN([CF_WITH_VALGRIND],[
9449 CF_NO_LEAKS_OPTION(valgrind,
9450         [  --with-valgrind         test: use valgrind],
9451         [USE_VALGRIND])
9452 ])dnl
9453 dnl ---------------------------------------------------------------------------
9454 dnl CF_WITH_VERSIONED_SYMS version: 10 updated: 2021/01/04 18:48:01
9455 dnl ----------------------
9456 dnl Use this when building shared library with ELF, to markup symbols with the
9457 dnl version identifier from the given input file.  Generally that identifier is
9458 dnl the same as the SONAME at which the symbol was first introduced.
9459 dnl
9460 dnl $1 = basename of the ".map" file (default $PACKAGE)
9461 AC_DEFUN([CF_WITH_VERSIONED_SYMS],
9462 [AC_REQUIRE([AC_PROG_FGREP])dnl
9463 AC_REQUIRE([AC_PROG_EGREP])dnl
9464
9465 AC_MSG_CHECKING(if versioned-symbols file should be used)
9466 AC_ARG_WITH(versioned-syms,
9467         [  --with-versioned-syms=X markup versioned symbols using ld],
9468         [with_versioned_syms=$withval],
9469         [with_versioned_syms=no])
9470 case "x$with_versioned_syms" in
9471 (xyes)
9472         with_versioned_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).map'
9473         AC_SUBST(PACKAGE)
9474         ;;
9475 (xno)
9476         ;;
9477 (x/*)
9478         test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms)
9479         ;;
9480 (*)
9481         test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms)
9482         with_versioned_syms=`pwd`/"$with_versioned_syms"
9483         ;;
9484 esac
9485 AC_MSG_RESULT($with_versioned_syms)
9486
9487 RESULTING_SYMS=
9488 VERSIONED_SYMS=
9489 WILDCARD_SYMS=
9490
9491 if test "x$with_versioned_syms" != xno
9492 then
9493         RESULTING_SYMS=$with_versioned_syms
9494         case "x$MK_SHARED_LIB" in
9495         (*-Wl,*)
9496                 VERSIONED_SYMS="-Wl,--version-script,\${RESULTING_SYMS}"
9497                 MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-Wl,%\\[$]{VERSIONED_SYMS} -Wl,%"`
9498                 CF_VERBOSE(MK_SHARED_LIB:  $MK_SHARED_LIB)
9499                 ;;
9500         (*-dy\ *)
9501                 VERSIONED_SYMS="-Wl,-M,\${RESULTING_SYMS}"
9502                 MK_SHARED_LIB=`echo "$MK_SHARED_LIB" | sed -e "s%-dy%\\[$]{VERSIONED_SYMS} -dy%"`
9503                 CF_VERBOSE(MK_SHARED_LIB:  $MK_SHARED_LIB)
9504                 ;;
9505         (*)
9506                 AC_MSG_WARN(this system does not support versioned-symbols)
9507                 ;;
9508         esac
9509
9510         # Linux ld can selectively override scope, e.g., of symbols beginning with
9511         # "_" by first declaring some as global, and then using a wildcard to
9512         # declare the others as local.  Some other loaders cannot do this.  Check
9513         # by constructing a (very) simple shared library and inspecting its
9514         # symbols.
9515         if test "x$VERSIONED_SYMS" != "x"
9516         then
9517                 AC_MSG_CHECKING(if wildcards can be used to selectively omit symbols)
9518                 WILDCARD_SYMS=no
9519
9520                 # make sources
9521                 rm -f conftest.*
9522
9523                 cat >conftest.ver <<EOF
9524 module_1.0 {
9525 global:
9526         globalf1;
9527 local:
9528         localf1;
9529 };
9530 module_2.0 {
9531 global:
9532         globalf2;
9533 local:
9534         localf2;
9535         _*;
9536 } module_1.0;
9537 submodule_1.0 {
9538 global:
9539         subglobalf1;
9540         _ismissing;
9541 local:
9542         sublocalf1;
9543 };
9544 submodule_2.0 {
9545 global:
9546         subglobalf2;
9547 local:
9548         sublocalf2;
9549         _*;
9550 } submodule_1.0;
9551 EOF
9552                 cat >conftest.$ac_ext <<EOF
9553 #line __oline__ "configure"
9554 int     _ismissing(void) { return 1; }
9555 int     _localf1(void) { return 1; }
9556 int     _localf2(void) { return 2; }
9557 int     globalf1(void) { return 1; }
9558 int     globalf2(void) { return 2; }
9559 int     _sublocalf1(void) { return 1; }
9560 int     _sublocalf2(void) { return 2; }
9561 int     subglobalf1(void) { return 1; }
9562 int     subglobalf2(void) { return 2; }
9563 EOF
9564                 cat >conftest.mk <<EOF
9565 CC=${CC}
9566 CFLAGS=${CFLAGS}
9567 CPPFLAGS=${CPPFLAGS}
9568 LDFLAGS=${LDFLAGS}
9569 LIBS=${LIBS}
9570 VERSIONED_SYMS=${VERSIONED_SYMS}
9571 RESULTING_SYMS=conftest.ver
9572 MK_SHARED_LIB=${MK_SHARED_LIB}
9573 conftest.so: conftest.$ac_cv_objext
9574                 \$(MK_SHARED_LIB) conftest.$ac_cv_objext
9575 EOF
9576
9577                 # compile source, make library
9578                 if make -f conftest.mk 2>&AC_FD_CC >/dev/null
9579                 then
9580                         # test for missing symbol in either Data or Text section
9581                         cf_missing="`nm -P conftest.so 2>&AC_FD_CC |${FGREP-fgrep} _ismissing | ${EGREP-egrep} '[[      ]][[DT]][[      ]]'`"
9582                         test -n "$cf_missing" && WILDCARD_SYMS=yes
9583                 fi
9584                 AC_MSG_RESULT($WILDCARD_SYMS)
9585                 rm -f conftest.*
9586         fi
9587 fi
9588 AC_SUBST(RESULTING_SYMS)
9589 AC_SUBST(VERSIONED_SYMS)
9590 AC_SUBST(WILDCARD_SYMS)
9591 ])dnl
9592 dnl ---------------------------------------------------------------------------
9593 dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54
9594 dnl ---------------
9595 dnl Handle configure option "--with-x11-rgb", setting these shell
9596 dnl variables:
9597 dnl
9598 dnl $RGB_PATH is the option value, used for finding the X11 rgb file.
9599 dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given.
9600 dnl
9601 dnl Most Linux's use this:
9602 dnl     /usr/share/X11/rgb.txt
9603 dnl Debian uses this:
9604 dnl     /etc/X11/rgb.txt
9605 dnl DragonFlyBSD ports uses this:
9606 dnl     /usr/pkg/lib/X11/rgb.txt
9607 dnl FreeBSD ports use these:
9608 dnl     /usr/local/lib/X11/rgb.txt
9609 dnl     /usr/local/share/X11/rgb.txt
9610 dnl Mandriva has these:
9611 dnl     /usr/lib/X11/rgb.txt
9612 dnl     /usr/lib64/X11/rgb.txt
9613 dnl NetBSD has these
9614 dnl     /usr/X11R7/lib/X11/rgb.txt
9615 dnl OpenSolaris uses
9616 dnl     32-bit:
9617 dnl     /usr/X11/etc/X11/rgb.txt
9618 dnl     /usr/X11/share/X11/rgb.txt
9619 dnl     /usr/X11/lib/X11/rgb.txt
9620 dnl OSX uses
9621 dnl             /opt/local/share/X11/rgb.txt (MacPorts)
9622 dnl             /opt/X11/share/X11/rgb.txt (non-ports)
9623 dnl     64-bit:
9624 dnl     /usr/X11/etc/X11/rgb.txt
9625 dnl     /usr/X11/share/X11/rgb.txt (perhaps)
9626 dnl     /usr/X11/lib/amd64/X11/rgb.txt
9627 dnl Solaris10 uses (in this order):
9628 dnl     /usr/openwin/lib/X11/rgb.txt
9629 dnl     /usr/X11/lib/X11/rgb.txt
9630 AC_DEFUN([CF_WITH_X11_RGB],[
9631 AC_MSG_CHECKING(for X11 rgb file)
9632 AC_ARG_WITH(x11-rgb,
9633         [  --with-x11-rgb=FILE   file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)],
9634         [RGB_PATH=$withval],
9635         [RGB_PATH=auto])
9636
9637 if test "x[$]RGB_PATH" = xauto
9638 then
9639         RGB_PATH='${exec_prefix}/lib/X11/rgb.txt'
9640         for cf_path in \
9641                 /opt/local/share/X11/rgb.txt \
9642                 /opt/X11/share/X11/rgb.txt \
9643                 /usr/share/X11/rgb.txt \
9644                 /usr/X11/share/X11/rgb.txt \
9645                 /usr/X11/lib/X11/rgb.txt \
9646                 /usr/lib/X11/rgb.txt \
9647                 /etc/X11/rgb.txt \
9648                 /usr/pkg/lib/X11/rgb.txt \
9649                 /usr/X11R7/lib/X11/rgb.txt \
9650                 /usr/X11R6/lib/X11/rgb.txt \
9651                 /usr/X11R5/lib/X11/rgb.txt \
9652                 /usr/X11R4/lib/X11/rgb.txt \
9653                 /usr/local/lib/X11/rgb.txt \
9654                 /usr/local/share/X11/rgb.txt \
9655                 /usr/lib64/X11/rgb.txt
9656         do
9657                 if test -f "$cf_path" ; then
9658                         RGB_PATH="$cf_path"
9659                         break
9660                 fi
9661         done
9662 else
9663         cf_path=$RGB_PATH
9664         CF_PATH_SYNTAX(cf_path)
9665 fi
9666
9667 AC_MSG_RESULT($RGB_PATH)
9668 AC_SUBST(RGB_PATH)
9669 AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt])
9670
9671 no_x11_rgb=
9672 if test "$RGB_PATH" = no
9673 then
9674         no_x11_rgb="#"
9675 fi
9676 AC_SUBST(no_x11_rgb)
9677 ])dnl
9678 dnl ---------------------------------------------------------------------------
9679 dnl CF_XOPEN_SOURCE version: 59 updated: 2021/08/28 15:20:37
9680 dnl ---------------
9681 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
9682 dnl or adapt to the vendor's definitions to get equivalent functionality,
9683 dnl without losing the common non-POSIX features.
9684 dnl
9685 dnl Parameters:
9686 dnl     $1 is the nominal value for _XOPEN_SOURCE
9687 dnl     $2 is the nominal value for _POSIX_C_SOURCE
9688 AC_DEFUN([CF_XOPEN_SOURCE],[
9689 AC_REQUIRE([AC_CANONICAL_HOST])
9690 AC_REQUIRE([CF_POSIX_VISIBLE])
9691
9692 if test "$cf_cv_posix_visible" = no; then
9693
9694 cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
9695 cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
9696 cf_xopen_source=
9697
9698 case "$host_os" in
9699 (aix[[4-7]]*)
9700         cf_xopen_source="-D_ALL_SOURCE"
9701         ;;
9702 (msys)
9703         cf_XOPEN_SOURCE=600
9704         ;;
9705 (darwin[[0-8]].*)
9706         cf_xopen_source="-D_APPLE_C_SOURCE"
9707         ;;
9708 (darwin*)
9709         cf_xopen_source="-D_DARWIN_C_SOURCE"
9710         cf_XOPEN_SOURCE=
9711         ;;
9712 (freebsd*|dragonfly*|midnightbsd*)
9713         # 5.x headers associate
9714         #       _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
9715         #       _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
9716         cf_POSIX_C_SOURCE=200112L
9717         cf_XOPEN_SOURCE=600
9718         cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
9719         ;;
9720 (hpux11*)
9721         cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
9722         ;;
9723 (hpux*)
9724         cf_xopen_source="-D_HPUX_SOURCE"
9725         ;;
9726 (irix[[56]].*)
9727         cf_xopen_source="-D_SGI_SOURCE"
9728         cf_XOPEN_SOURCE=
9729         ;;
9730 (linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
9731         CF_GNU_SOURCE($cf_XOPEN_SOURCE)
9732         ;;
9733 (minix*)
9734         cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
9735         ;;
9736 (mirbsd*)
9737         # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
9738         cf_XOPEN_SOURCE=
9739         CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
9740         ;;
9741 (netbsd*)
9742         cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
9743         ;;
9744 (openbsd[[6-9]]*)
9745         # OpenBSD 6.x has broken locale support, both compile-time and runtime.
9746         # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
9747         # Abusing the conformance level is a workaround.
9748         AC_MSG_WARN(this system does not provide usable locale support)
9749         cf_xopen_source="-D_BSD_SOURCE"
9750         cf_XOPEN_SOURCE=700
9751         ;;
9752 (openbsd[[4-5]]*)
9753         # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
9754         cf_xopen_source="-D_BSD_SOURCE"
9755         cf_XOPEN_SOURCE=600
9756         ;;
9757 (openbsd*)
9758         # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
9759         ;;
9760 (osf[[45]]*)
9761         cf_xopen_source="-D_OSF_SOURCE"
9762         ;;
9763 (nto-qnx*)
9764         cf_xopen_source="-D_QNX_SOURCE"
9765         ;;
9766 (sco*)
9767         # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
9768         ;;
9769 (solaris2.*)
9770         cf_xopen_source="-D__EXTENSIONS__"
9771         cf_cv_xopen_source=broken
9772         ;;
9773 (sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
9774         cf_XOPEN_SOURCE=
9775         cf_POSIX_C_SOURCE=
9776         ;;
9777 (*)
9778         CF_TRY_XOPEN_SOURCE
9779         CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
9780         ;;
9781 esac
9782
9783 if test -n "$cf_xopen_source" ; then
9784         CF_APPEND_CFLAGS($cf_xopen_source,true)
9785 fi
9786
9787 dnl In anything but the default case, we may have system-specific setting
9788 dnl which is still not guaranteed to provide all of the entrypoints that
9789 dnl _XOPEN_SOURCE would yield.
9790 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
9791         AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
9792         AC_TRY_COMPILE([#include <stdlib.h>],[
9793 #ifndef _XOPEN_SOURCE
9794 make an error
9795 #endif],
9796         [cf_XOPEN_SOURCE_set=yes],
9797         [cf_XOPEN_SOURCE_set=no])
9798         AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
9799         if test "$cf_XOPEN_SOURCE_set" = yes
9800         then
9801                 AC_TRY_COMPILE([#include <stdlib.h>],[
9802 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
9803 make an error
9804 #endif],
9805                 [cf_XOPEN_SOURCE_set_ok=yes],
9806                 [cf_XOPEN_SOURCE_set_ok=no])
9807                 if test "$cf_XOPEN_SOURCE_set_ok" = no
9808                 then
9809                         AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
9810                 fi
9811         else
9812                 CF_TRY_XOPEN_SOURCE
9813         fi
9814 fi
9815 fi # cf_cv_posix_visible
9816 ])
9817 dnl ---------------------------------------------------------------------------
9818 dnl CF__SED_TRIMBLANKS version: 1 updated: 2021/01/02 09:31:20
9819 dnl ------------------
9820 dnl Trim something using sed, then trim extra whitespace
9821 dnl $1 = extra parameters, e.g., in CF_STRIP_G_OPT
9822 define([CF__SED_TRIMBLANKS],[sed ifelse($1,,,[$1] )-e 's%[[     ]]% %g' -e 's% [[ ]]*% %g' -e 's%^ %%' -e 's% [$]%%'])dnl