]> ncurses.scripts.mit.edu Git - ncurses.git/blob - test/aclocal.m4
ncurses 6.0 - patch 20161217
[ncurses.git] / test / aclocal.m4
1 dnl***************************************************************************
2 dnl Copyright (c) 2003-2015,2016 Free Software Foundation, Inc.              *
3 dnl                                                                          *
4 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
5 dnl copy of this software and associated documentation files (the            *
6 dnl "Software"), to deal in the Software without restriction, including      *
7 dnl without limitation the rights to use, copy, modify, merge, publish,      *
8 dnl distribute, distribute with modifications, sublicense, and/or sell       *
9 dnl copies of the Software, and to permit persons to whom the Software is    *
10 dnl furnished to do so, subject to the following conditions:                 *
11 dnl                                                                          *
12 dnl The above copyright notice and this permission notice shall be included  *
13 dnl in all copies or substantial portions of the Software.                   *
14 dnl                                                                          *
15 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
16 dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
17 dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
18 dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
19 dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
20 dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
21 dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
22 dnl                                                                          *
23 dnl Except as contained in this notice, the name(s) of the above copyright   *
24 dnl holders shall not be used in advertising or otherwise to promote the     *
25 dnl sale, use or other dealings in this Software without prior written       *
26 dnl authorization.                                                           *
27 dnl***************************************************************************
28 dnl
29 dnl $Id: aclocal.m4,v 1.136 2016/10/08 21:36:55 tom Exp $
30 dnl
31 dnl Author: Thomas E. Dickey
32 dnl
33 dnl Macros used in NCURSES test programs 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 http://invisible-island.net/autoconf/ for additional information.
40 dnl
41 dnl ---------------------------------------------------------------------------
42 dnl ---------------------------------------------------------------------------
43 dnl AM_LANGINFO_CODESET version: 4 updated: 2015/04/18 08:56:57
44 dnl -------------------
45 dnl Inserted as requested by gettext 0.10.40
46 dnl File from /usr/share/aclocal
47 dnl codeset.m4
48 dnl ====================
49 dnl serial AM1
50 dnl
51 dnl From Bruno Haible.
52 AC_DEFUN([AM_LANGINFO_CODESET],
53 [
54 AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
55         [AC_TRY_LINK([#include <langinfo.h>],
56         [char* cs = nl_langinfo(CODESET);],
57         am_cv_langinfo_codeset=yes,
58         am_cv_langinfo_codeset=no)
59         ])
60         if test $am_cv_langinfo_codeset = yes; then
61                 AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
62                 [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
63         fi
64 ])dnl
65 dnl ---------------------------------------------------------------------------
66 dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
67 dnl ------------------
68 dnl Conditionally generate script according to whether we're using a given autoconf.
69 dnl
70 dnl $1 = version to compare against
71 dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
72 dnl $3 = code to use if AC_ACVERSION is older than $1.
73 define([CF_ACVERSION_CHECK],
74 [
75 ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
76 ifdef([m4_version_compare],
77 [m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
78 [CF_ACVERSION_COMPARE(
79 AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
80 AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
81 dnl ---------------------------------------------------------------------------
82 dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
83 dnl --------------------
84 dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
85 dnl                      MAJOR2, MINOR2, TERNARY2,
86 dnl                      PRINTABLE2, not FOUND, FOUND)
87 define([CF_ACVERSION_COMPARE],
88 [ifelse(builtin([eval], [$2 < $5]), 1,
89 [ifelse([$8], , ,[$8])],
90 [ifelse([$9], , ,[$9])])])dnl
91 dnl ---------------------------------------------------------------------------
92 dnl CF_ADD_CFLAGS version: 12 updated: 2015/04/12 15:39:00
93 dnl -------------
94 dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
95 dnl The second parameter if given makes this macro verbose.
96 dnl
97 dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
98 dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
99 dnl confused by the quotes (which require backslashes to keep them usable).
100 AC_DEFUN([CF_ADD_CFLAGS],
101 [
102 cf_fix_cppflags=no
103 cf_new_cflags=
104 cf_new_cppflags=
105 cf_new_extra_cppflags=
106
107 for cf_add_cflags in $1
108 do
109 case $cf_fix_cppflags in
110 (no)
111         case $cf_add_cflags in
112         (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
113                 case $cf_add_cflags in
114                 (-D*)
115                         cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
116
117                         test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
118                                 && test -z "${cf_tst_cflags}" \
119                                 && cf_fix_cppflags=yes
120
121                         if test $cf_fix_cppflags = yes ; then
122                                 cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
123                                 continue
124                         elif test "${cf_tst_cflags}" = "\"'" ; then
125                                 cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
126                                 continue
127                         fi
128                         ;;
129                 esac
130                 case "$CPPFLAGS" in
131                 (*$cf_add_cflags)
132                         ;;
133                 (*)
134                         case $cf_add_cflags in
135                         (-D*)
136                                 cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
137                                 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
138                                 ;;
139                         esac
140                         cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
141                         ;;
142                 esac
143                 ;;
144         (*)
145                 cf_new_cflags="$cf_new_cflags $cf_add_cflags"
146                 ;;
147         esac
148         ;;
149 (yes)
150         cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
151
152         cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'`
153
154         test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
155                 && test -z "${cf_tst_cflags}" \
156                 && cf_fix_cppflags=no
157         ;;
158 esac
159 done
160
161 if test -n "$cf_new_cflags" ; then
162         ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
163         CFLAGS="$CFLAGS $cf_new_cflags"
164 fi
165
166 if test -n "$cf_new_cppflags" ; then
167         ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
168         CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
169 fi
170
171 if test -n "$cf_new_extra_cppflags" ; then
172         ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
173         EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
174 fi
175
176 AC_SUBST(EXTRA_CPPFLAGS)
177
178 ])dnl
179 dnl ---------------------------------------------------------------------------
180 dnl CF_ADD_INCDIR version: 14 updated: 2015/05/25 20:53:04
181 dnl -------------
182 dnl Add an include-directory to $CPPFLAGS.  Don't add /usr/include, since it's
183 dnl redundant.  We don't normally need to add -I/usr/local/include for gcc,
184 dnl but old versions (and some misinstalled ones) need that.  To make things
185 dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to
186 dnl the include-path).
187 AC_DEFUN([CF_ADD_INCDIR],
188 [
189 if test -n "$1" ; then
190   for cf_add_incdir in $1
191   do
192         while test $cf_add_incdir != /usr/include
193         do
194           if test -d $cf_add_incdir
195           then
196                 cf_have_incdir=no
197                 if test -n "$CFLAGS$CPPFLAGS" ; then
198                   # a loop is needed to ensure we can add subdirs of existing dirs
199                   for cf_test_incdir in $CFLAGS $CPPFLAGS ; do
200                         if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then
201                           cf_have_incdir=yes; break
202                         fi
203                   done
204                 fi
205
206                 if test "$cf_have_incdir" = no ; then
207                   if test "$cf_add_incdir" = /usr/local/include ; then
208                         if test "$GCC" = yes
209                         then
210                           cf_save_CPPFLAGS=$CPPFLAGS
211                           CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
212                           AC_TRY_COMPILE([#include <stdio.h>],
213                                   [printf("Hello")],
214                                   [],
215                                   [cf_have_incdir=yes])
216                           CPPFLAGS=$cf_save_CPPFLAGS
217                         fi
218                   fi
219                 fi
220
221                 if test "$cf_have_incdir" = no ; then
222                   CF_VERBOSE(adding $cf_add_incdir to include-path)
223                   ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir"
224
225                   cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'`
226                   test "$cf_top_incdir" = "$cf_add_incdir" && break
227                   cf_add_incdir="$cf_top_incdir"
228                 else
229                   break
230                 fi
231           else
232                 break
233           fi
234         done
235   done
236 fi
237 ])dnl
238 dnl ---------------------------------------------------------------------------
239 dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05
240 dnl ----------
241 dnl Add a library, used to enforce consistency.
242 dnl
243 dnl $1 = library to add, without the "-l"
244 dnl $2 = variable to update (default $LIBS)
245 AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl
246 dnl ---------------------------------------------------------------------------
247 dnl CF_ADD_LIBDIR version: 10 updated: 2015/04/18 08:56:57
248 dnl -------------
249 dnl     Adds to the library-path
250 dnl
251 dnl     Some machines have trouble with multiple -L options.
252 dnl
253 dnl $1 is the (list of) directory(s) to add
254 dnl $2 is the optional name of the variable to update (default LDFLAGS)
255 dnl
256 AC_DEFUN([CF_ADD_LIBDIR],
257 [
258 if test -n "$1" ; then
259         for cf_add_libdir in $1
260         do
261                 if test $cf_add_libdir = /usr/lib ; then
262                         :
263                 elif test -d $cf_add_libdir
264                 then
265                         cf_have_libdir=no
266                         if test -n "$LDFLAGS$LIBS" ; then
267                                 # a loop is needed to ensure we can add subdirs of existing dirs
268                                 for cf_test_libdir in $LDFLAGS $LIBS ; do
269                                         if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then
270                                                 cf_have_libdir=yes; break
271                                         fi
272                                 done
273                         fi
274                         if test "$cf_have_libdir" = no ; then
275                                 CF_VERBOSE(adding $cf_add_libdir to library-path)
276                                 ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])"
277                         fi
278                 fi
279         done
280 fi
281 ])dnl
282 dnl ---------------------------------------------------------------------------
283 dnl CF_ADD_LIBS version: 2 updated: 2014/07/13 14:33:27
284 dnl -----------
285 dnl Add one or more libraries, used to enforce consistency.  Libraries are
286 dnl prepended to an existing list, since their dependencies are assumed to
287 dnl already exist in the list.
288 dnl
289 dnl $1 = libraries to add, with the "-l", etc.
290 dnl $2 = variable to update (default $LIBS)
291 AC_DEFUN([CF_ADD_LIBS],[
292 cf_add_libs="$1"
293 # Filter out duplicates - this happens with badly-designed ".pc" files...
294 for cf_add_1lib in [$]ifelse($2,,LIBS,[$2])
295 do
296         for cf_add_2lib in $cf_add_libs
297         do
298                 if test "x$cf_add_1lib" = "x$cf_add_2lib"
299                 then
300                         cf_add_1lib=
301                         break
302                 fi
303         done
304         test -n "$cf_add_1lib" && cf_add_libs="$cf_add_libs $cf_add_1lib"
305 done
306 ifelse($2,,LIBS,[$2])="$cf_add_libs"
307 ])dnl
308 dnl ---------------------------------------------------------------------------
309 dnl CF_ADD_LIB_AFTER version: 3 updated: 2013/07/09 21:27:22
310 dnl ----------------
311 dnl Add a given library after another, e.g., following the one it satisfies a
312 dnl dependency for.
313 dnl
314 dnl $1 = the first library
315 dnl $2 = its dependency
316 AC_DEFUN([CF_ADD_LIB_AFTER],[
317 CF_VERBOSE(...before $LIBS)
318 LIBS=`echo "$LIBS" | sed -e "s/[[       ]][[    ]]*/ /g" -e "s%$1 %$1 $2 %" -e 's%  % %g'`
319 CF_VERBOSE(...after  $LIBS)
320 ])dnl
321 dnl ---------------------------------------------------------------------------
322 dnl CF_ADD_SUBDIR_PATH version: 4 updated: 2013/10/08 17:47:05
323 dnl ------------------
324 dnl Append to a search-list for a nonstandard header/lib-file
325 dnl     $1 = the variable to return as result
326 dnl     $2 = the package name
327 dnl     $3 = the subdirectory, e.g., bin, include or lib
328 dnl $4 = the directory under which we will test for subdirectories
329 dnl $5 = a directory that we do not want $4 to match
330 AC_DEFUN([CF_ADD_SUBDIR_PATH],
331 [
332 test "x$4" != "x$5" && \
333 test -d "$4" && \
334 ifelse([$5],NONE,,[(test -z "$5" || test x$5 = xNONE || test "x$4" != "x$5") &&]) {
335         test -n "$verbose" && echo "    ... testing for $3-directories under $4"
336         test -d $4/$3 &&          $1="[$]$1 $4/$3"
337         test -d $4/$3/$2 &&       $1="[$]$1 $4/$3/$2"
338         test -d $4/$3/$2/$3 &&    $1="[$]$1 $4/$3/$2/$3"
339         test -d $4/$2/$3 &&       $1="[$]$1 $4/$2/$3"
340         test -d $4/$2/$3/$2 &&    $1="[$]$1 $4/$2/$3/$2"
341 }
342 ])dnl
343 dnl ---------------------------------------------------------------------------
344 dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
345 dnl --------------
346 dnl Allow user to disable a normally-on option.
347 AC_DEFUN([CF_ARG_DISABLE],
348 [CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
349 dnl ---------------------------------------------------------------------------
350 dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31
351 dnl -------------
352 dnl Allow user to enable a normally-off option.
353 AC_DEFUN([CF_ARG_ENABLE],
354 [CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
355 dnl ---------------------------------------------------------------------------
356 dnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14
357 dnl -------------
358 dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
359 dnl values.
360 dnl
361 dnl Parameters:
362 dnl $1 = option name
363 dnl $2 = help-string
364 dnl $3 = action to perform if option is not default
365 dnl $4 = action if perform if option is default
366 dnl $5 = default option value (either 'yes' or 'no')
367 AC_DEFUN([CF_ARG_OPTION],
368 [AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
369         if test "$enableval" != "$5" ; then
370 ifelse([$3],,[    :]dnl
371 ,[    $3]) ifelse([$4],,,[
372         else
373                 $4])
374         fi],[enableval=$5 ifelse([$4],,,[
375         $4
376 ])dnl
377 ])])dnl
378 dnl ---------------------------------------------------------------------------
379 dnl CF_CC_ENV_FLAGS version: 6 updated: 2016/08/29 20:57:00
380 dnl ---------------
381 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
382 dnl into CC.  This will not help with broken scripts that wrap the compiler
383 dnl with options, but eliminates a more common category of user confusion.
384 dnl
385 dnl In particular, it addresses the problem of being able to run the C
386 dnl preprocessor in a consistent manner.
387 dnl
388 dnl Caveat: this also disallows blanks in the pathname for the compiler, but
389 dnl the nuisance of having inconsistent settings for compiler and preprocessor
390 dnl outweighs that limitation.
391 AC_DEFUN([CF_CC_ENV_FLAGS],
392 [
393 # This should have been defined by AC_PROG_CC
394 : ${CC:=cc}
395
396 AC_MSG_CHECKING(\$CC variable)
397 case "$CC" in
398 (*[[\ \ ]]-*)
399         AC_MSG_RESULT(broken)
400         AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options)
401         # humor him...
402         cf_flags=`echo "$CC" | sed -e 's/^.*[[  ]]\(-[[^        ]]\)/\1/'`
403         CC=`echo "$CC " | sed -e 's/[[  ]]-[[^  ]].*$//' -e 's/[[       ]]*$//'`
404         for cf_arg in $cf_flags
405         do
406                 case "x$cf_arg" in
407                 (x-[[IUDfgOW]]*)
408                         CF_ADD_CFLAGS($cf_flags)
409                         ;;
410                 (*)
411                         CC="$CC $cf_arg"
412                         ;;
413                 esac
414         done
415         CF_VERBOSE(resulting CC: '$CC')
416         CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
417         CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
418         ;;
419 (*)
420         AC_MSG_RESULT(ok)
421         ;;
422 esac
423 ])dnl
424 dnl ---------------------------------------------------------------------------
425 dnl CF_CHECK_CACHE version: 12 updated: 2012/10/02 20:55:03
426 dnl --------------
427 dnl Check if we're accidentally using a cache from a different machine.
428 dnl Derive the system name, as a check for reusing the autoconf cache.
429 dnl
430 dnl If we've packaged config.guess and config.sub, run that (since it does a
431 dnl better job than uname).  Normally we'll use AC_CANONICAL_HOST, but allow
432 dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
433 dnl which is useful in cross-compiles.
434 dnl
435 dnl Note: we would use $ac_config_sub, but that is one of the places where
436 dnl autoconf 2.5x broke compatibility with autoconf 2.13
437 AC_DEFUN([CF_CHECK_CACHE],
438 [
439 if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
440         ifelse([$1],,[AC_CANONICAL_HOST],[$1])
441         system_name="$host_os"
442 else
443         system_name="`(uname -s -r) 2>/dev/null`"
444         if test -z "$system_name" ; then
445                 system_name="`(hostname) 2>/dev/null`"
446         fi
447 fi
448 test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
449 AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
450
451 test -z "$system_name" && system_name="$cf_cv_system_name"
452 test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
453
454 if test ".$system_name" != ".$cf_cv_system_name" ; then
455         AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
456         AC_MSG_ERROR("Please remove config.cache and try again.")
457 fi
458 ])dnl
459 dnl ---------------------------------------------------------------------------
460 dnl CF_CHECK_CFLAGS version: 3 updated: 2014/07/22 05:32:57
461 dnl ---------------
462 dnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from
463 dnl a build-configuration such as imake.  These have the pitfall that they
464 dnl often contain compiler-specific options which we cannot use, mixed with
465 dnl preprocessor options that we usually can.
466 AC_DEFUN([CF_CHECK_CFLAGS],
467 [
468 CF_VERBOSE(checking additions to CFLAGS)
469 cf_check_cflags="$CFLAGS"
470 cf_check_cppflags="$CPPFLAGS"
471 CF_ADD_CFLAGS($1,yes)
472 if test "x$cf_check_cflags" != "x$CFLAGS" ; then
473 AC_TRY_LINK([#include <stdio.h>],[printf("Hello world");],,
474         [CF_VERBOSE(test-compile failed.  Undoing change to \$CFLAGS)
475          if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then
476                  CF_VERBOSE(but keeping change to \$CPPFLAGS)
477          fi
478          CFLAGS="$cf_check_flags"])
479 fi
480 ])dnl
481 dnl ---------------------------------------------------------------------------
482 dnl CF_CHECK_CURSES_LIB version: 1 updated: 2015/04/25 20:53:11
483 dnl -------------------
484 dnl $1 = nominal library name, used also for header lookup
485 dnl $2 = suffix to append to library name
486 dnl $3 = function to check for using AC_CHECK_LIB
487 AC_DEFUN([CF_CHECK_CURSES_LIB],
488 [
489 AC_CHECK_LIB($1$2,$3,[
490 CF_UPPER(cf_upper,have_lib$1)
491 CF_ADD_LIBS(-l$1$2)
492 AC_DEFINE_UNQUOTED($cf_upper,1)])
493 ])dnl
494 dnl ---------------------------------------------------------------------------
495 dnl CF_CLANG_COMPILER version: 2 updated: 2013/11/19 19:23:35
496 dnl -----------------
497 dnl Check if the given compiler is really clang.  clang's C driver defines
498 dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
499 dnl not ignore some gcc options.
500 dnl
501 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
502 dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
503 dnl the wrappers for gcc and g++ warnings.
504 dnl
505 dnl $1 = GCC (default) or GXX
506 dnl $2 = CLANG_COMPILER (default)
507 dnl $3 = CFLAGS (default) or CXXFLAGS
508 AC_DEFUN([CF_CLANG_COMPILER],[
509 ifelse([$2],,CLANG_COMPILER,[$2])=no
510
511 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
512         AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
513         cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
514         ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -Qunused-arguments"
515         AC_TRY_COMPILE([],[
516 #ifdef __clang__
517 #else
518 make an error
519 #endif
520 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
521 cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
522 ],[])
523         ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
524         AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
525 fi
526 ])
527 dnl ---------------------------------------------------------------------------
528 dnl CF_CURSES_ACS_MAP version: 7 updated: 2012/10/06 16:39:58
529 dnl -----------------
530 dnl Check for likely values of acs_map[]:
531 AC_DEFUN([CF_CURSES_ACS_MAP],
532 [
533 AC_REQUIRE([CF_NCURSES_WRAP_PREFIX])dnl
534 AC_CACHE_CHECK(for alternate character set array, cf_cv_curses_acs_map,[
535 cf_cv_curses_acs_map=unknown
536 for name in acs_map _acs_map __acs_map ${NCURSES_WRAP_PREFIX}acs_map
537 do
538 AC_TRY_LINK([
539 #include <${cf_cv_ncurses_header:-curses.h}>
540 ],[
541 $name['k'] = ACS_PLUS
542 ],[cf_cv_curses_acs_map=$name; break])
543 done
544 ])
545
546 test "$cf_cv_curses_acs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_ACS_ARRAY,$cf_cv_curses_acs_map,[Define as needed to override ncurses prefix _nc_])
547 ])
548 dnl ---------------------------------------------------------------------------
549 dnl CF_CURSES_CHECK_DATA version: 5 updated: 2014/07/19 18:41:17
550 dnl --------------------
551 dnl Check if curses.h defines the given data/variable.
552 dnl Use this after CF_NCURSES_CONFIG or CF_CURSES_CONFIG.
553 AC_DEFUN([CF_CURSES_CHECK_DATA],
554 [
555 AC_MSG_CHECKING(for data $1 declaration in ${cf_cv_ncurses_header:-curses.h})
556
557 AC_TRY_COMPILE(CF__CURSES_HEAD,[
558 void *foo = &($1)
559 ],cf_result=yes,cf_result=no)
560 AC_MSG_RESULT($cf_result)
561
562 if test $cf_result = yes ; then
563         CF_UPPER(cf_result,have_curses_data_$1)
564         AC_DEFINE_UNQUOTED($cf_result)
565 else
566         AC_MSG_CHECKING(for data $1 in library)
567         # BSD linkers insist on making weak linkage, but resolve at runtime.
568         AC_TRY_RUN(CF__CURSES_HEAD
569 [
570 extern char $1;
571 int main(void)
572 {
573         void *foo = &($1);
574         fprintf(stderr, "testing linkage of $1:%p\n", foo);
575         ${cf_cv_main_return:-return}(foo == 0);
576 }],[cf_result=yes],[cf_result=no],[
577         # cross-compiling
578         AC_TRY_LINK(CF__CURSES_HEAD
579 [extern char $1;],[
580         do {
581                 void *foo = &($1);
582                 fprintf(stderr, "testing linkage of $1:%p\n", foo);
583                 ${cf_cv_main_return:-return}(foo == 0);
584         } while (0)
585 ],[cf_result=yes],[cf_result=no])
586 ])
587         AC_MSG_RESULT($cf_result)
588         if test $cf_result = yes ; then
589                 CF_UPPER(cf_result,decl_curses_data_$1)
590                 AC_DEFINE_UNQUOTED($cf_result)
591         fi
592 fi
593 ])dnl
594 dnl ---------------------------------------------------------------------------
595 dnl CF_CURSES_CHECK_TYPE version: 4 updated: 2012/10/06 16:39:58
596 dnl --------------------
597 dnl Check if curses.h defines the given type
598 AC_DEFUN([CF_CURSES_CHECK_TYPE],
599 [
600 AC_MSG_CHECKING(for type $1 in ${cf_cv_ncurses_header:-curses.h})
601 AC_TRY_COMPILE([
602 #ifndef _XOPEN_SOURCE_EXTENDED
603 #define _XOPEN_SOURCE_EXTENDED
604 #endif
605 #include <${cf_cv_ncurses_header:-curses.h}>],[
606 $1 foo
607 ],cf_result=yes,cf_result=no)
608 AC_MSG_RESULT($cf_result)
609 if test $cf_result = yes ; then
610         CF_UPPER(cf_result,have_type_$1)
611         AC_DEFINE_UNQUOTED($cf_result,1,[Define to 1 if we have type $1])
612 else
613         AC_DEFINE_UNQUOTED($1,$2,[Define to appropriate type if $1 is not declared])
614 fi
615 ])dnl
616 dnl ---------------------------------------------------------------------------
617 dnl CF_CURSES_CONFIG version: 2 updated: 2006/10/29 11:06:27
618 dnl ----------------
619 dnl Tie together the configure-script macros for curses.  It may be ncurses,
620 dnl but unless asked, we do not make a special search for ncurses.  However,
621 dnl still check for the ncurses version number, for use in other macros.
622 AC_DEFUN([CF_CURSES_CONFIG],
623 [
624 CF_CURSES_CPPFLAGS
625 CF_NCURSES_VERSION
626 CF_CURSES_LIBS
627 ])dnl
628 dnl ---------------------------------------------------------------------------
629 dnl CF_CURSES_CPPFLAGS version: 12 updated: 2015/04/15 19:08:48
630 dnl ------------------
631 dnl Look for the curses headers.
632 AC_DEFUN([CF_CURSES_CPPFLAGS],[
633
634 AC_CACHE_CHECK(for extra include directories,cf_cv_curses_incdir,[
635 cf_cv_curses_incdir=no
636 case $host_os in
637 (hpux10.*)
638         if test "x$cf_cv_screen" = "xcurses_colr"
639         then
640                 test -d /usr/include/curses_colr && \
641                 cf_cv_curses_incdir="-I/usr/include/curses_colr"
642         fi
643         ;;
644 (sunos3*|sunos4*)
645         if test "x$cf_cv_screen" = "xcurses_5lib"
646         then
647                 test -d /usr/5lib && \
648                 test -d /usr/5include && \
649                 cf_cv_curses_incdir="-I/usr/5include"
650         fi
651         ;;
652 esac
653 ])
654 test "$cf_cv_curses_incdir" != no && CPPFLAGS="$CPPFLAGS $cf_cv_curses_incdir"
655
656 CF_CURSES_HEADER
657 CF_TERM_HEADER
658 ])dnl
659 dnl ---------------------------------------------------------------------------
660 dnl CF_CURSES_FUNCS version: 18 updated: 2014/07/19 18:44:41
661 dnl ---------------
662 dnl Curses-functions are a little complicated, since a lot of them are macros.
663 AC_DEFUN([CF_CURSES_FUNCS],
664 [
665 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
666 AC_REQUIRE([CF_XOPEN_CURSES])
667 AC_REQUIRE([CF_CURSES_TERM_H])
668 AC_REQUIRE([CF_CURSES_UNCTRL_H])
669 for cf_func in $1
670 do
671         CF_UPPER(cf_tr_func,$cf_func)
672         AC_MSG_CHECKING(for ${cf_func})
673         CF_MSG_LOG(${cf_func})
674         AC_CACHE_VAL(cf_cv_func_$cf_func,[
675                 eval cf_result='$ac_cv_func_'$cf_func
676                 if test ".$cf_result" != ".no"; then
677                         AC_TRY_LINK(CF__CURSES_HEAD,
678                         [
679 #ifndef ${cf_func}
680 long foo = (long)(&${cf_func});
681 fprintf(stderr, "testing linkage of $cf_func:%p\n", foo);
682 if (foo + 1234 > 5678)
683         ${cf_cv_main_return:-return}(foo);
684 #endif
685                         ],
686                         [cf_result=yes],
687                         [cf_result=no])
688                 fi
689                 eval 'cf_cv_func_'$cf_func'=$cf_result'
690         ])
691         # use the computed/retrieved cache-value:
692         eval 'cf_result=$cf_cv_func_'$cf_func
693         AC_MSG_RESULT($cf_result)
694         if test $cf_result != no; then
695                 AC_DEFINE_UNQUOTED(HAVE_${cf_tr_func})
696         fi
697 done
698 ])dnl
699 dnl ---------------------------------------------------------------------------
700 dnl CF_CURSES_HEADER version: 5 updated: 2015/04/23 20:35:30
701 dnl ----------------
702 dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
703 dnl variations of ncurses' installs.
704 dnl
705 dnl $1 = ncurses when looking for ncurses, or is empty
706 AC_DEFUN([CF_CURSES_HEADER],[
707 AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[
708 cf_cv_ncurses_header=none
709 for cf_header in \
710         ncurses.h ifelse($1,,,[$1/ncurses.h]) \
711         curses.h ifelse($1,,,[$1/curses.h]) ifelse($1,,[ncurses/ncurses.h ncurses/curses.h])
712 do
713 AC_TRY_COMPILE([#include <${cf_header}>],
714         [initscr(); tgoto("?", 0,0)],
715         [cf_cv_ncurses_header=$cf_header; break],[])
716 done
717 ])
718
719 if test "$cf_cv_ncurses_header" = none ; then
720         AC_MSG_ERROR(No curses header-files found)
721 fi
722
723 # cheat, to get the right #define's for HAVE_NCURSES_H, etc.
724 AC_CHECK_HEADERS($cf_cv_ncurses_header)
725 ])dnl
726 dnl ---------------------------------------------------------------------------
727 dnl CF_CURSES_LIBS version: 39 updated: 2015/05/10 19:52:14
728 dnl --------------
729 dnl Look for the curses libraries.  Older curses implementations may require
730 dnl termcap/termlib to be linked as well.  Call CF_CURSES_CPPFLAGS first.
731 AC_DEFUN([CF_CURSES_LIBS],[
732
733 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
734 AC_MSG_CHECKING(if we have identified curses libraries)
735 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
736         [initscr(); tgoto("?", 0,0)],
737         cf_result=yes,
738         cf_result=no)
739 AC_MSG_RESULT($cf_result)
740
741 if test "$cf_result" = no ; then
742 case $host_os in
743 (freebsd*)
744         AC_CHECK_LIB(mytinfo,tgoto,[CF_ADD_LIBS(-lmytinfo)])
745         ;;
746 (hpux10.*)
747         # Looking at HPUX 10.20, the Hcurses library is the oldest (1997), cur_colr
748         # next (1998), and xcurses "newer" (2000).  There is no header file for
749         # Hcurses; the subdirectory curses_colr has the headers (curses.h and
750         # term.h) for cur_colr
751         if test "x$cf_cv_screen" = "xcurses_colr"
752         then
753                 AC_CHECK_LIB(cur_colr,initscr,[
754                         CF_ADD_LIBS(-lcur_colr)
755                         ac_cv_func_initscr=yes
756                         ],[
757                 AC_CHECK_LIB(Hcurses,initscr,[
758                         # HP's header uses __HP_CURSES, but user claims _HP_CURSES.
759                         CF_ADD_LIBS(-lHcurses)
760                         CPPFLAGS="$CPPFLAGS -D__HP_CURSES -D_HP_CURSES"
761                         ac_cv_func_initscr=yes
762                         ])])
763         fi
764         ;;
765 (linux*)
766         case `arch 2>/dev/null` in
767         (x86_64)
768                 if test -d /lib64
769                 then
770                         CF_ADD_LIBDIR(/lib64)
771                 else
772                         CF_ADD_LIBDIR(/lib)
773                 fi
774                 ;;
775         (*)
776                 CF_ADD_LIBDIR(/lib)
777                 ;;
778         esac
779         ;;
780 (sunos3*|sunos4*)
781         if test "x$cf_cv_screen" = "xcurses_5lib"
782         then
783                 if test -d /usr/5lib ; then
784                         CF_ADD_LIBDIR(/usr/5lib)
785                         CF_ADD_LIBS(-lcurses -ltermcap)
786                 fi
787         fi
788         ac_cv_func_initscr=yes
789         ;;
790 esac
791
792 if test ".$ac_cv_func_initscr" != .yes ; then
793         cf_save_LIBS="$LIBS"
794
795         if test ".${cf_cv_ncurses_version:-no}" != .no
796         then
797                 cf_check_list="ncurses curses cursesX"
798         else
799                 cf_check_list="cursesX curses ncurses"
800         fi
801
802         # Check for library containing tgoto.  Do this before curses library
803         # because it may be needed to link the test-case for initscr.
804         if test "x$cf_term_lib" = x
805         then
806                 AC_CHECK_FUNC(tgoto,[cf_term_lib=predefined],[
807                         for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown
808                         do
809                                 AC_CHECK_LIB($cf_term_lib,tgoto,[break])
810                         done
811                 ])
812         fi
813
814         # Check for library containing initscr
815         test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS"
816         if test "x$cf_curs_lib" = x
817         then
818                 for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown
819                 do
820                         AC_CHECK_LIB($cf_curs_lib,initscr,[break])
821                 done
822         fi
823         test $cf_curs_lib = unknown && AC_MSG_ERROR(no curses library found)
824
825         LIBS="-l$cf_curs_lib $cf_save_LIBS"
826         if test "$cf_term_lib" = unknown ; then
827                 AC_MSG_CHECKING(if we can link with $cf_curs_lib library)
828                 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
829                         [initscr()],
830                         [cf_result=yes],
831                         [cf_result=no])
832                 AC_MSG_RESULT($cf_result)
833                 test $cf_result = no && AC_MSG_ERROR(Cannot link curses library)
834         elif test "$cf_curs_lib" = "$cf_term_lib" ; then
835                 :
836         elif test "$cf_term_lib" != predefined ; then
837                 AC_MSG_CHECKING(if we need both $cf_curs_lib and $cf_term_lib libraries)
838                 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
839                         [initscr(); tgoto((char *)0, 0, 0);],
840                         [cf_result=no],
841                         [
842                         LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS"
843                         AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
844                                 [initscr()],
845                                 [cf_result=yes],
846                                 [cf_result=error])
847                         ])
848                 AC_MSG_RESULT($cf_result)
849         fi
850 fi
851 fi
852
853 ])dnl
854 dnl ---------------------------------------------------------------------------
855 dnl CF_CURSES_TERM_H version: 11 updated: 2015/04/15 19:08:48
856 dnl ----------------
857 dnl SVr4 curses should have term.h as well (where it puts the definitions of
858 dnl the low-level interface).  This may not be true in old/broken implementations,
859 dnl as well as in misconfigured systems (e.g., gcc configured for Solaris 2.4
860 dnl running with Solaris 2.5.1).
861 AC_DEFUN([CF_CURSES_TERM_H],
862 [
863 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
864
865 AC_CACHE_CHECK(for term.h, cf_cv_term_header,[
866
867 # If we found <ncurses/curses.h>, look for <ncurses/term.h>, but always look
868 # for <term.h> if we do not find the variant.
869
870 cf_header_list="term.h ncurses/term.h ncursesw/term.h"
871
872 case ${cf_cv_ncurses_header:-curses.h} in
873 (*/*)
874         cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`term.h
875         cf_header_list="$cf_header_item $cf_header_list"
876         ;;
877 esac
878
879 for cf_header in $cf_header_list
880 do
881         AC_TRY_COMPILE([
882 #include <${cf_cv_ncurses_header:-curses.h}>
883 #include <${cf_header}>],
884         [WINDOW *x],
885         [cf_cv_term_header=$cf_header
886          break],
887         [cf_cv_term_header=no])
888 done
889
890 case $cf_cv_term_header in
891 (no)
892         # If curses is ncurses, some packagers still mess it up by trying to make
893         # us use GNU termcap.  This handles the most common case.
894         for cf_header in ncurses/term.h ncursesw/term.h
895         do
896                 AC_TRY_COMPILE([
897 #include <${cf_cv_ncurses_header:-curses.h}>
898 #ifdef NCURSES_VERSION
899 #include <${cf_header}>
900 #else
901 make an error
902 #endif],
903                         [WINDOW *x],
904                         [cf_cv_term_header=$cf_header
905                          break],
906                         [cf_cv_term_header=no])
907         done
908         ;;
909 esac
910 ])
911
912 case $cf_cv_term_header in
913 (term.h)
914         AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
915         ;;
916 (ncurses/term.h)
917         AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
918         ;;
919 (ncursesw/term.h)
920         AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
921         ;;
922 esac
923 ])dnl
924 dnl ---------------------------------------------------------------------------
925 dnl CF_CURSES_UNCTRL_H version: 4 updated: 2015/04/15 19:08:48
926 dnl ------------------
927 dnl Any X/Open curses implementation must have unctrl.h, but ncurses packages
928 dnl may put it in a subdirectory (along with ncurses' other headers, of
929 dnl course).  Packages which put the headers in inconsistent locations are
930 dnl broken).
931 AC_DEFUN([CF_CURSES_UNCTRL_H],
932 [
933 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
934
935 AC_CACHE_CHECK(for unctrl.h, cf_cv_unctrl_header,[
936
937 # If we found <ncurses/curses.h>, look for <ncurses/unctrl.h>, but always look
938 # for <unctrl.h> if we do not find the variant.
939
940 cf_header_list="unctrl.h ncurses/unctrl.h ncursesw/unctrl.h"
941
942 case ${cf_cv_ncurses_header:-curses.h} in
943 (*/*)
944         cf_header_item=`echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%\..*%%' -e 's%/.*%/%'`unctrl.h
945         cf_header_list="$cf_header_item $cf_header_list"
946         ;;
947 esac
948
949 for cf_header in $cf_header_list
950 do
951         AC_TRY_COMPILE([
952 #include <${cf_cv_ncurses_header:-curses.h}>
953 #include <${cf_header}>],
954         [WINDOW *x],
955         [cf_cv_unctrl_header=$cf_header
956          break],
957         [cf_cv_unctrl_header=no])
958 done
959 ])
960
961 case $cf_cv_unctrl_header in
962 (no)
963         AC_MSG_WARN(unctrl.h header not found)
964         ;;
965 esac
966
967 case $cf_cv_unctrl_header in
968 (unctrl.h)
969         AC_DEFINE(HAVE_UNCTRL_H,1,[Define to 1 if we have unctrl.h])
970         ;;
971 (ncurses/unctrl.h)
972         AC_DEFINE(HAVE_NCURSES_UNCTRL_H,1,[Define to 1 if we have ncurses/unctrl.h])
973         ;;
974 (ncursesw/unctrl.h)
975         AC_DEFINE(HAVE_NCURSESW_UNCTRL_H,1,[Define to 1 if we have ncursesw/unctrl.h])
976         ;;
977 esac
978 ])dnl
979 dnl ---------------------------------------------------------------------------
980 dnl CF_CURSES_WACS_MAP version: 6 updated: 2012/10/06 08:57:51
981 dnl ------------------
982 dnl Check for likely values of wacs_map[].
983 AC_DEFUN([CF_CURSES_WACS_MAP],
984 [
985 AC_CACHE_CHECK(for wide alternate character set array, cf_cv_curses_wacs_map,[
986         cf_cv_curses_wacs_map=unknown
987         for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char
988         do
989         AC_TRY_LINK([
990 #ifndef _XOPEN_SOURCE_EXTENDED
991 #define _XOPEN_SOURCE_EXTENDED
992 #endif
993 #include <${cf_cv_ncurses_header:-curses.h}>],
994         [void *foo = &($name['k'])],
995         [cf_cv_curses_wacs_map=$name
996          break])
997         done])
998
999 test "$cf_cv_curses_wacs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_WACS_ARRAY,$cf_cv_curses_wacs_map,[Define to name of (n)curses wide-character array])
1000 ])dnl
1001 dnl ---------------------------------------------------------------------------
1002 dnl CF_CURSES_WACS_SYMBOLS version: 2 updated: 2012/10/06 08:57:51
1003 dnl ----------------------
1004 dnl Do a check to see if the WACS_xxx constants are defined compatibly with
1005 dnl X/Open Curses.  In particular, NetBSD's implementation of the WACS_xxx
1006 dnl constants is broken since those constants do not point to cchar_t's.
1007 AC_DEFUN([CF_CURSES_WACS_SYMBOLS],
1008 [
1009 AC_REQUIRE([CF_CURSES_WACS_MAP])
1010
1011 AC_CACHE_CHECK(for wide alternate character constants, cf_cv_curses_wacs_symbols,[
1012 cf_cv_curses_wacs_symbols=no
1013 if test "$cf_cv_curses_wacs_map" != unknown
1014 then
1015         AC_TRY_LINK([
1016 #ifndef _XOPEN_SOURCE_EXTENDED
1017 #define _XOPEN_SOURCE_EXTENDED
1018 #endif
1019 #include <${cf_cv_ncurses_header:-curses.h}>],
1020         [cchar_t *foo = WACS_PLUS;
1021          $cf_cv_curses_wacs_map['k'] = *WACS_PLUS],
1022         [cf_cv_curses_wacs_symbols=yes])
1023 else
1024         AC_TRY_LINK([
1025 #ifndef _XOPEN_SOURCE_EXTENDED
1026 #define _XOPEN_SOURCE_EXTENDED
1027 #endif
1028 #include <${cf_cv_ncurses_header:-curses.h}>],
1029         [cchar_t *foo = WACS_PLUS],
1030         [cf_cv_curses_wacs_symbols=yes])
1031 fi
1032 ])
1033
1034 test "$cf_cv_curses_wacs_symbols" != no && AC_DEFINE(CURSES_WACS_SYMBOLS,1,[Define to 1 if (n)curses supports wide-character WACS_ symbols])
1035 ])dnl
1036 dnl ---------------------------------------------------------------------------
1037 dnl CF_DIRNAME version: 4 updated: 2002/12/21 19:25:52
1038 dnl ----------
1039 dnl "dirname" is not portable, so we fake it with a shell script.
1040 AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl
1041 dnl ---------------------------------------------------------------------------
1042 dnl CF_DISABLE_ECHO version: 13 updated: 2015/04/18 08:56:57
1043 dnl ---------------
1044 dnl You can always use "make -n" to see the actual options, but it's hard to
1045 dnl pick out/analyze warning messages when the compile-line is long.
1046 dnl
1047 dnl Sets:
1048 dnl     ECHO_LT - symbol to control if libtool is verbose
1049 dnl     ECHO_LD - symbol to prefix "cc -o" lines
1050 dnl     RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
1051 dnl     SHOW_CC - symbol to put before explicit "cc -c" lines
1052 dnl     ECHO_CC - symbol to put before any "cc" line
1053 dnl
1054 AC_DEFUN([CF_DISABLE_ECHO],[
1055 AC_MSG_CHECKING(if you want to see long compiling messages)
1056 CF_ARG_DISABLE(echo,
1057         [  --disable-echo          do not display "compiling" commands],
1058         [
1059         ECHO_LT='--silent'
1060         ECHO_LD='@echo linking [$]@;'
1061         RULE_CC='@echo compiling [$]<'
1062         SHOW_CC='@echo compiling [$]@'
1063         ECHO_CC='@'
1064 ],[
1065         ECHO_LT=''
1066         ECHO_LD=''
1067         RULE_CC=''
1068         SHOW_CC=''
1069         ECHO_CC=''
1070 ])
1071 AC_MSG_RESULT($enableval)
1072 AC_SUBST(ECHO_LT)
1073 AC_SUBST(ECHO_LD)
1074 AC_SUBST(RULE_CC)
1075 AC_SUBST(SHOW_CC)
1076 AC_SUBST(ECHO_CC)
1077 ])dnl
1078 dnl ---------------------------------------------------------------------------
1079 dnl CF_DISABLE_LEAKS version: 7 updated: 2012/10/02 20:55:03
1080 dnl ----------------
1081 dnl Combine no-leak checks with the libraries or tools that are used for the
1082 dnl checks.
1083 AC_DEFUN([CF_DISABLE_LEAKS],[
1084
1085 AC_REQUIRE([CF_WITH_DMALLOC])
1086 AC_REQUIRE([CF_WITH_DBMALLOC])
1087 AC_REQUIRE([CF_WITH_VALGRIND])
1088
1089 AC_MSG_CHECKING(if you want to perform memory-leak testing)
1090 AC_ARG_ENABLE(leaks,
1091         [  --disable-leaks         test: free permanent memory, analyze leaks],
1092         [if test "x$enableval" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi],
1093         : ${with_no_leaks:=no})
1094 AC_MSG_RESULT($with_no_leaks)
1095
1096 if test "$with_no_leaks" = yes ; then
1097         AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1098         AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
1099 fi
1100 ])dnl
1101 dnl ---------------------------------------------------------------------------
1102 dnl CF_DISABLE_RPATH_HACK version: 2 updated: 2011/02/13 13:31:33
1103 dnl ---------------------
1104 dnl The rpath-hack makes it simpler to build programs, particularly with the
1105 dnl *BSD ports which may have essential libraries in unusual places.  But it
1106 dnl can interfere with building an executable for the base system.  Use this
1107 dnl option in that case.
1108 AC_DEFUN([CF_DISABLE_RPATH_HACK],
1109 [
1110 AC_MSG_CHECKING(if rpath-hack should be disabled)
1111 CF_ARG_DISABLE(rpath-hack,
1112         [  --disable-rpath-hack    don't add rpath options for additional libraries],
1113         [cf_disable_rpath_hack=yes],
1114         [cf_disable_rpath_hack=no])
1115 AC_MSG_RESULT($cf_disable_rpath_hack)
1116 if test "$cf_disable_rpath_hack" = no ; then
1117         CF_RPATH_HACK
1118 fi
1119 ])
1120 dnl ---------------------------------------------------------------------------
1121 dnl CF_ENABLE_STRING_HACKS version: 5 updated: 2016/10/08 17:34:11
1122 dnl ----------------------
1123 dnl On a few platforms, the compiler and/or loader nags with untruthful
1124 dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
1125 dnl and implying that most uses of the recommended alternatives are correct.
1126 dnl
1127 dnl Factually speaking, no one has actually counted the number of uses of these
1128 dnl functions versus the total of incorrect uses.  Samples of a few thousand
1129 dnl instances are meaningless compared to the hundreds of millions of lines of
1130 dnl existing C code.
1131 dnl
1132 dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some
1133 dnl platforms, in implementations of varying quality.  Likewise, snprintf is
1134 dnl standard - but evolved through phases, and older implementations are likely
1135 dnl to yield surprising results, as documented in manpages on various systems.
1136 AC_DEFUN([CF_ENABLE_STRING_HACKS],
1137 [
1138 AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings)
1139 AC_ARG_ENABLE(string-hacks,
1140         [  --enable-string-hacks   work around bogus compiler/loader warnings],
1141         [with_string_hacks=$enableval],
1142         [with_string_hacks=no])
1143 AC_MSG_RESULT($with_string_hacks)
1144
1145 if test "x$with_string_hacks" = "xyes"; then
1146         AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings])
1147         AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
1148         AC_CHECK_FUNC(strlcat,[
1149                 AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
1150                 ],[
1151                 AC_CHECK_LIB(bsd,strlcat,[
1152                         CF_ADD_LIB(bsd)
1153                         AC_CHECK_HEADERS(bsd/string.h)
1154                         AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function])
1155                         ])
1156                 ])
1157         AC_CHECK_FUNCS( strlcpy snprintf )
1158 fi
1159 ])dnl
1160 dnl ---------------------------------------------------------------------------
1161 dnl CF_ENABLE_WARNINGS version: 4 updated: 2009/07/26 17:53:03
1162 dnl ------------------
1163 dnl Configure-option to enable gcc warnings
1164 AC_DEFUN([CF_ENABLE_WARNINGS],[
1165 if ( test "$GCC" = yes || test "$GXX" = yes )
1166 then
1167 AC_MSG_CHECKING(if you want to turn on gcc warnings)
1168 CF_ARG_ENABLE(warnings,
1169         [  --enable-warnings       test: turn on gcc compiler warnings],
1170         [with_warnings=yes],
1171         [with_warnings=no])
1172 AC_MSG_RESULT($with_warnings)
1173 if test "$with_warnings" = "yes"
1174 then
1175         CF_GCC_ATTRIBUTES
1176         CF_GCC_WARNINGS
1177 fi
1178 fi
1179 ])dnl
1180 dnl ---------------------------------------------------------------------------
1181 dnl CF_FIND_LIBRARY version: 9 updated: 2008/03/23 14:48:54
1182 dnl ---------------
1183 dnl Look for a non-standard library, given parameters for AC_TRY_LINK.  We
1184 dnl prefer a standard location, and use -L options only if we do not find the
1185 dnl library in the standard library location(s).
1186 dnl     $1 = library name
1187 dnl     $2 = library class, usually the same as library name
1188 dnl     $3 = includes
1189 dnl     $4 = code fragment to compile/link
1190 dnl     $5 = corresponding function-name
1191 dnl     $6 = flag, nonnull if failure should not cause an error-exit
1192 dnl
1193 dnl Sets the variable "$cf_libdir" as a side-effect, so we can see if we had
1194 dnl to use a -L option.
1195 AC_DEFUN([CF_FIND_LIBRARY],
1196 [
1197         eval 'cf_cv_have_lib_'$1'=no'
1198         cf_libdir=""
1199         AC_CHECK_FUNC($5,
1200                 eval 'cf_cv_have_lib_'$1'=yes',[
1201                 cf_save_LIBS="$LIBS"
1202                 AC_MSG_CHECKING(for $5 in -l$1)
1203                 LIBS="-l$1 $LIBS"
1204                 AC_TRY_LINK([$3],[$4],
1205                         [AC_MSG_RESULT(yes)
1206                          eval 'cf_cv_have_lib_'$1'=yes'
1207                         ],
1208                         [AC_MSG_RESULT(no)
1209                         CF_LIBRARY_PATH(cf_search,$2)
1210                         for cf_libdir in $cf_search
1211                         do
1212                                 AC_MSG_CHECKING(for -l$1 in $cf_libdir)
1213                                 LIBS="-L$cf_libdir -l$1 $cf_save_LIBS"
1214                                 AC_TRY_LINK([$3],[$4],
1215                                         [AC_MSG_RESULT(yes)
1216                                          eval 'cf_cv_have_lib_'$1'=yes'
1217                                          break],
1218                                         [AC_MSG_RESULT(no)
1219                                          LIBS="$cf_save_LIBS"])
1220                         done
1221                         ])
1222                 ])
1223 eval 'cf_found_library=[$]cf_cv_have_lib_'$1
1224 ifelse($6,,[
1225 if test $cf_found_library = no ; then
1226         AC_MSG_ERROR(Cannot link $1 library)
1227 fi
1228 ])
1229 ])dnl
1230 dnl ---------------------------------------------------------------------------
1231 dnl CF_FIND_LINKAGE version: 20 updated: 2015/04/18 08:56:57
1232 dnl ---------------
1233 dnl Find a library (specifically the linkage used in the code fragment),
1234 dnl searching for it if it is not already in the library path.
1235 dnl See also CF_ADD_SEARCHPATH.
1236 dnl
1237 dnl Parameters (4-on are optional):
1238 dnl     $1 = headers for library entrypoint
1239 dnl     $2 = code fragment for library entrypoint
1240 dnl     $3 = the library name without the "-l" option or ".so" suffix.
1241 dnl     $4 = action to perform if successful (default: update CPPFLAGS, etc)
1242 dnl     $5 = action to perform if not successful
1243 dnl     $6 = module name, if not the same as the library name
1244 dnl     $7 = extra libraries
1245 dnl
1246 dnl Sets these variables:
1247 dnl     $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found
1248 dnl     $cf_cv_header_path_$3 - include-directory if needed
1249 dnl     $cf_cv_library_path_$3 - library-directory if needed
1250 dnl     $cf_cv_library_file_$3 - library-file if needed, e.g., -l$3
1251 AC_DEFUN([CF_FIND_LINKAGE],[
1252
1253 # If the linkage is not already in the $CPPFLAGS/$LDFLAGS configuration, these
1254 # will be set on completion of the AC_TRY_LINK below.
1255 cf_cv_header_path_$3=
1256 cf_cv_library_path_$3=
1257
1258 CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)])
1259
1260 cf_save_LIBS="$LIBS"
1261
1262 AC_TRY_LINK([$1],[$2],[
1263         cf_cv_find_linkage_$3=yes
1264         cf_cv_header_path_$3=/usr/include
1265         cf_cv_library_path_$3=/usr/lib
1266 ],[
1267
1268 LIBS="-l$3 $7 $cf_save_LIBS"
1269
1270 AC_TRY_LINK([$1],[$2],[
1271         cf_cv_find_linkage_$3=yes
1272         cf_cv_header_path_$3=/usr/include
1273         cf_cv_library_path_$3=/usr/lib
1274         cf_cv_library_file_$3="-l$3"
1275 ],[
1276         cf_cv_find_linkage_$3=no
1277         LIBS="$cf_save_LIBS"
1278
1279         CF_VERBOSE(find linkage for $3 library)
1280         CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)])
1281
1282         cf_save_CPPFLAGS="$CPPFLAGS"
1283         cf_test_CPPFLAGS="$CPPFLAGS"
1284
1285         CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6]))
1286         for cf_cv_header_path_$3 in $cf_search
1287         do
1288                 if test -d $cf_cv_header_path_$3 ; then
1289                         CF_VERBOSE(... testing $cf_cv_header_path_$3)
1290                         CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_$3"
1291                         AC_TRY_COMPILE([$1],[$2],[
1292                                 CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3)
1293                                 cf_cv_find_linkage_$3=maybe
1294                                 cf_test_CPPFLAGS="$CPPFLAGS"
1295                                 break],[
1296                                 CPPFLAGS="$cf_save_CPPFLAGS"
1297                                 ])
1298                 fi
1299         done
1300
1301         if test "$cf_cv_find_linkage_$3" = maybe ; then
1302
1303                 CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)])
1304
1305                 cf_save_LIBS="$LIBS"
1306                 cf_save_LDFLAGS="$LDFLAGS"
1307
1308                 ifelse([$6],,,[
1309                 CPPFLAGS="$cf_test_CPPFLAGS"
1310                 LIBS="-l$3 $7 $cf_save_LIBS"
1311                 AC_TRY_LINK([$1],[$2],[
1312                         CF_VERBOSE(... found $3 library in system)
1313                         cf_cv_find_linkage_$3=yes])
1314                         CPPFLAGS="$cf_save_CPPFLAGS"
1315                         LIBS="$cf_save_LIBS"
1316                         ])
1317
1318                 if test "$cf_cv_find_linkage_$3" != yes ; then
1319                         CF_LIBRARY_PATH(cf_search,$3)
1320                         for cf_cv_library_path_$3 in $cf_search
1321                         do
1322                                 if test -d $cf_cv_library_path_$3 ; then
1323                                         CF_VERBOSE(... testing $cf_cv_library_path_$3)
1324                                         CPPFLAGS="$cf_test_CPPFLAGS"
1325                                         LIBS="-l$3 $7 $cf_save_LIBS"
1326                                         LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_$3"
1327                                         AC_TRY_LINK([$1],[$2],[
1328                                         CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3)
1329                                         cf_cv_find_linkage_$3=yes
1330                                         cf_cv_library_file_$3="-l$3"
1331                                         break],[
1332                                         CPPFLAGS="$cf_save_CPPFLAGS"
1333                                         LIBS="$cf_save_LIBS"
1334                                         LDFLAGS="$cf_save_LDFLAGS"
1335                                         ])
1336                                 fi
1337                         done
1338                         CPPFLAGS="$cf_save_CPPFLAGS"
1339                         LDFLAGS="$cf_save_LDFLAGS"
1340                 fi
1341
1342         else
1343                 cf_cv_find_linkage_$3=no
1344         fi
1345         ],$7)
1346 ])
1347
1348 LIBS="$cf_save_LIBS"
1349
1350 if test "$cf_cv_find_linkage_$3" = yes ; then
1351 ifelse([$4],,[
1352         CF_ADD_INCDIR($cf_cv_header_path_$3)
1353         CF_ADD_LIBDIR($cf_cv_library_path_$3)
1354         CF_ADD_LIB($3)
1355 ],[$4])
1356 else
1357 ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
1358 fi
1359 ])dnl
1360 dnl ---------------------------------------------------------------------------
1361 dnl CF_FUNC_CURSES_VERSION version: 6 updated: 2012/10/06 16:39:58
1362 dnl ----------------------
1363 dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS.
1364 dnl It's a character string "SVR4", not documented.
1365 AC_DEFUN([CF_FUNC_CURSES_VERSION],
1366 [
1367 AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
1368 AC_TRY_RUN([
1369 #include <${cf_cv_ncurses_header:-curses.h}>
1370 int main()
1371 {
1372         char temp[1024];
1373         sprintf(temp, "%s\n", curses_version());
1374         ${cf_cv_main_return:-return}(0);
1375 }]
1376 ,[cf_cv_func_curses_version=yes]
1377 ,[cf_cv_func_curses_version=no]
1378 ,[cf_cv_func_curses_version=unknown])
1379 rm -f core])
1380 test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 if we have curses_version function])
1381 ])
1382 dnl ---------------------------------------------------------------------------
1383 dnl CF_FUNC_OPENPTY version: 5 updated: 2015/09/12 14:46:50
1384 dnl ---------------
1385 dnl Check for openpty() function, along with <pty.h> header.  It may need the
1386 dnl "util" library as well.
1387 AC_DEFUN([CF_FUNC_OPENPTY],
1388 [
1389 AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no)
1390 AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
1391         cf_save_LIBS="$LIBS"
1392         test $cf_cv_lib_util = yes && { CF_ADD_LIB(util) }
1393         for cf_header in pty.h libutil.h util.h
1394         do
1395         AC_TRY_LINK([
1396 #include <$cf_header>
1397 ],[
1398         int x = openpty((int *)0, (int *)0, (char *)0,
1399                                    (struct termios *)0, (struct winsize *)0);
1400 ],[
1401                 cf_cv_func_openpty=$cf_header
1402                 break
1403 ],[
1404                 cf_cv_func_openpty=no
1405 ])
1406         done
1407         LIBS="$cf_save_LIBS"
1408 ])
1409 ])dnl
1410 dnl ---------------------------------------------------------------------------
1411 dnl CF_GCC_ATTRIBUTES version: 17 updated: 2015/04/12 15:39:00
1412 dnl -----------------
1413 dnl Test for availability of useful gcc __attribute__ directives to quiet
1414 dnl compiler warnings.  Though useful, not all are supported -- and contrary
1415 dnl to documentation, unrecognized directives cause older compilers to barf.
1416 AC_DEFUN([CF_GCC_ATTRIBUTES],
1417 [
1418 if test "$GCC" = yes
1419 then
1420 cat > conftest.i <<EOF
1421 #ifndef GCC_PRINTF
1422 #define GCC_PRINTF 0
1423 #endif
1424 #ifndef GCC_SCANF
1425 #define GCC_SCANF 0
1426 #endif
1427 #ifndef GCC_NORETURN
1428 #define GCC_NORETURN /* nothing */
1429 #endif
1430 #ifndef GCC_UNUSED
1431 #define GCC_UNUSED /* nothing */
1432 #endif
1433 EOF
1434 if test "$GCC" = yes
1435 then
1436         AC_CHECKING([for $CC __attribute__ directives])
1437 cat > conftest.$ac_ext <<EOF
1438 #line __oline__ "${as_me:-configure}"
1439 #include "confdefs.h"
1440 #include "conftest.h"
1441 #include "conftest.i"
1442 #if     GCC_PRINTF
1443 #define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
1444 #else
1445 #define GCC_PRINTFLIKE(fmt,var) /*nothing*/
1446 #endif
1447 #if     GCC_SCANF
1448 #define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
1449 #else
1450 #define GCC_SCANFLIKE(fmt,var)  /*nothing*/
1451 #endif
1452 extern void wow(char *,...) GCC_SCANFLIKE(1,2);
1453 extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
1454 extern void foo(void) GCC_NORETURN;
1455 int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { return 0; }
1456 EOF
1457         cf_printf_attribute=no
1458         cf_scanf_attribute=no
1459         for cf_attribute in scanf printf unused noreturn
1460         do
1461                 CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
1462                 cf_directive="__attribute__(($cf_attribute))"
1463                 echo "checking for $CC $cf_directive" 1>&AC_FD_CC
1464
1465                 case $cf_attribute in
1466                 (printf)
1467                         cf_printf_attribute=yes
1468                         cat >conftest.h <<EOF
1469 #define GCC_$cf_ATTRIBUTE 1
1470 EOF
1471                         ;;
1472                 (scanf)
1473                         cf_scanf_attribute=yes
1474                         cat >conftest.h <<EOF
1475 #define GCC_$cf_ATTRIBUTE 1
1476 EOF
1477                         ;;
1478                 (*)
1479                         cat >conftest.h <<EOF
1480 #define GCC_$cf_ATTRIBUTE $cf_directive
1481 EOF
1482                         ;;
1483                 esac
1484
1485                 if AC_TRY_EVAL(ac_compile); then
1486                         test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
1487                         cat conftest.h >>confdefs.h
1488                         case $cf_attribute in
1489                         (noreturn)
1490                                 AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
1491                                 ;;
1492                         (printf)
1493                                 cf_value='/* nothing */'
1494                                 if test "$cf_printf_attribute" != no ; then
1495                                         cf_value='__attribute__((format(printf,fmt,var)))'
1496                                         AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
1497                                 fi
1498                                 AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
1499                                 ;;
1500                         (scanf)
1501                                 cf_value='/* nothing */'
1502                                 if test "$cf_scanf_attribute" != no ; then
1503                                         cf_value='__attribute__((format(scanf,fmt,var)))'
1504                                         AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
1505                                 fi
1506                                 AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
1507                                 ;;
1508                         (unused)
1509                                 AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
1510                                 ;;
1511                         esac
1512                 fi
1513         done
1514 else
1515         fgrep define conftest.i >>confdefs.h
1516 fi
1517 rm -rf conftest*
1518 fi
1519 ])dnl
1520 dnl ---------------------------------------------------------------------------
1521 dnl CF_GCC_VERSION version: 7 updated: 2012/10/18 06:46:33
1522 dnl --------------
1523 dnl Find version of gcc
1524 AC_DEFUN([CF_GCC_VERSION],[
1525 AC_REQUIRE([AC_PROG_CC])
1526 GCC_VERSION=none
1527 if test "$GCC" = yes ; then
1528         AC_MSG_CHECKING(version of $CC)
1529         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.]].*//'`"
1530         test -z "$GCC_VERSION" && GCC_VERSION=unknown
1531         AC_MSG_RESULT($GCC_VERSION)
1532 fi
1533 ])dnl
1534 dnl ---------------------------------------------------------------------------
1535 dnl CF_GCC_WARNINGS version: 32 updated: 2015/04/12 15:39:00
1536 dnl ---------------
1537 dnl Check if the compiler supports useful warning options.  There's a few that
1538 dnl we don't use, simply because they're too noisy:
1539 dnl
1540 dnl     -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
1541 dnl     -Wredundant-decls (system headers make this too noisy)
1542 dnl     -Wtraditional (combines too many unrelated messages, only a few useful)
1543 dnl     -Wwrite-strings (too noisy, but should review occasionally).  This
1544 dnl             is enabled for ncurses using "--enable-const".
1545 dnl     -pedantic
1546 dnl
1547 dnl Parameter:
1548 dnl     $1 is an optional list of gcc warning flags that a particular
1549 dnl             application might want to use, e.g., "no-unused" for
1550 dnl             -Wno-unused
1551 dnl Special:
1552 dnl     If $with_ext_const is "yes", add a check for -Wwrite-strings
1553 dnl
1554 AC_DEFUN([CF_GCC_WARNINGS],
1555 [
1556 AC_REQUIRE([CF_GCC_VERSION])
1557 CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
1558 CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
1559
1560 cat > conftest.$ac_ext <<EOF
1561 #line __oline__ "${as_me:-configure}"
1562 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
1563 EOF
1564
1565 if test "$INTEL_COMPILER" = yes
1566 then
1567 # The "-wdXXX" options suppress warnings:
1568 # remark #1419: external declaration in primary source file
1569 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
1570 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
1571 # remark #193: zero used for undefined preprocessing identifier
1572 # remark #593: variable "curs_sb_left_arrow" was set but never used
1573 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
1574 # remark #869: parameter "tw" was never referenced
1575 # remark #981: operands are evaluated in unspecified order
1576 # warning #279: controlling expression is constant
1577
1578         AC_CHECKING([for $CC warning options])
1579         cf_save_CFLAGS="$CFLAGS"
1580         EXTRA_CFLAGS="-Wall"
1581         for cf_opt in \
1582                 wd1419 \
1583                 wd1683 \
1584                 wd1684 \
1585                 wd193 \
1586                 wd593 \
1587                 wd279 \
1588                 wd810 \
1589                 wd869 \
1590                 wd981
1591         do
1592                 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
1593                 if AC_TRY_EVAL(ac_compile); then
1594                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
1595                         EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
1596                 fi
1597         done
1598         CFLAGS="$cf_save_CFLAGS"
1599
1600 elif test "$GCC" = yes
1601 then
1602         AC_CHECKING([for $CC warning options])
1603         cf_save_CFLAGS="$CFLAGS"
1604         EXTRA_CFLAGS=
1605         cf_warn_CONST=""
1606         test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
1607         cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
1608         test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
1609         for cf_opt in W Wall \
1610                 Wbad-function-cast \
1611                 Wcast-align \
1612                 Wcast-qual \
1613                 Wdeclaration-after-statement \
1614                 Wextra \
1615                 Winline \
1616                 Wmissing-declarations \
1617                 Wmissing-prototypes \
1618                 Wnested-externs \
1619                 Wpointer-arith \
1620                 Wshadow \
1621                 Wstrict-prototypes \
1622                 Wundef $cf_gcc_warnings $cf_warn_CONST $1
1623         do
1624                 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
1625                 if AC_TRY_EVAL(ac_compile); then
1626                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
1627                         case $cf_opt in
1628                         (Wcast-qual)
1629                                 CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
1630                                 ;;
1631                         (Winline)
1632                                 case $GCC_VERSION in
1633                                 ([[34]].*)
1634                                         CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
1635                                         continue;;
1636                                 esac
1637                                 ;;
1638                         (Wpointer-arith)
1639                                 case $GCC_VERSION in
1640                                 ([[12]].*)
1641                                         CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
1642                                         continue;;
1643                                 esac
1644                                 ;;
1645                         esac
1646                         EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
1647                 fi
1648         done
1649         CFLAGS="$cf_save_CFLAGS"
1650 fi
1651 rm -rf conftest*
1652
1653 AC_SUBST(EXTRA_CFLAGS)
1654 ])dnl
1655 dnl ---------------------------------------------------------------------------
1656 dnl CF_GETOPT_HEADER version: 6 updated: 2014/07/22 14:45:54
1657 dnl ----------------
1658 dnl Check for getopt's variables which are commonly defined in stdlib.h,
1659 dnl unistd.h or (nonstandard) in getopt.h
1660 AC_DEFUN([CF_GETOPT_HEADER],
1661 [
1662 AC_HAVE_HEADERS(unistd.h getopt.h)
1663 AC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[
1664 cf_cv_getopt_header=none
1665 for cf_header in stdio.h stdlib.h unistd.h getopt.h
1666 do
1667 AC_TRY_COMPILE([
1668 #include <$cf_header>],
1669 [int x = optind; char *y = optarg],
1670 [cf_cv_getopt_header=$cf_header
1671  break])
1672 done
1673 ])
1674 if test $cf_cv_getopt_header != none ; then
1675         AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header])
1676 fi
1677 if test $cf_cv_getopt_header = getopt.h ; then
1678         AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h])
1679 fi
1680 ])dnl
1681 dnl ---------------------------------------------------------------------------
1682 dnl CF_GNU_SOURCE version: 7 updated: 2016/08/05 05:15:37
1683 dnl -------------
1684 dnl Check if we must define _GNU_SOURCE to get a reasonable value for
1685 dnl _XOPEN_SOURCE, upon which many POSIX definitions depend.  This is a defect
1686 dnl (or misfeature) of glibc2, which breaks portability of many applications,
1687 dnl since it is interwoven with GNU extensions.
1688 dnl
1689 dnl Well, yes we could work around it...
1690 AC_DEFUN([CF_GNU_SOURCE],
1691 [
1692 AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
1693 AC_TRY_COMPILE([#include <sys/types.h>],[
1694 #ifndef _XOPEN_SOURCE
1695 make an error
1696 #endif],
1697         [cf_cv_gnu_source=no],
1698         [cf_save="$CPPFLAGS"
1699          CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
1700          AC_TRY_COMPILE([#include <sys/types.h>],[
1701 #ifdef _XOPEN_SOURCE
1702 make an error
1703 #endif],
1704         [cf_cv_gnu_source=no],
1705         [cf_cv_gnu_source=yes])
1706         CPPFLAGS="$cf_save"
1707         ])
1708 ])
1709
1710 if test "$cf_cv_gnu_source" = yes
1711 then
1712 AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
1713 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
1714         AC_TRY_COMPILE([#include <sys/types.h>],[
1715 #ifdef _DEFAULT_SOURCE
1716 make an error
1717 #endif],
1718                 [cf_cv_default_source=no],
1719                 [cf_cv_default_source=yes])
1720         ])
1721 test "$cf_cv_default_source" = yes && CPPFLAGS="$CPPFLAGS -D_DEFAULT_SOURCE"
1722 fi
1723 ])dnl
1724 dnl ---------------------------------------------------------------------------
1725 dnl CF_HEADER_PATH version: 13 updated: 2015/04/15 19:08:48
1726 dnl --------------
1727 dnl Construct a search-list of directories for a nonstandard header-file
1728 dnl
1729 dnl Parameters
1730 dnl     $1 = the variable to return as result
1731 dnl     $2 = the package name
1732 AC_DEFUN([CF_HEADER_PATH],
1733 [
1734 $1=
1735
1736 # collect the current set of include-directories from compiler flags
1737 cf_header_path_list=""
1738 if test -n "${CFLAGS}${CPPFLAGS}" ; then
1739         for cf_header_path in $CPPFLAGS $CFLAGS
1740         do
1741                 case $cf_header_path in
1742                 (-I*)
1743                         cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
1744                         CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE)
1745                         cf_header_path_list="$cf_header_path_list [$]$1"
1746                         ;;
1747                 esac
1748         done
1749 fi
1750
1751 # add the variations for the package we are looking for
1752 CF_SUBDIR_PATH($1,$2,include)
1753
1754 test "$includedir" != NONE && \
1755 test "$includedir" != "/usr/include" && \
1756 test -d "$includedir" && {
1757         test -d $includedir &&    $1="[$]$1 $includedir"
1758         test -d $includedir/$2 && $1="[$]$1 $includedir/$2"
1759 }
1760
1761 test "$oldincludedir" != NONE && \
1762 test "$oldincludedir" != "/usr/include" && \
1763 test -d "$oldincludedir" && {
1764         test -d $oldincludedir    && $1="[$]$1 $oldincludedir"
1765         test -d $oldincludedir/$2 && $1="[$]$1 $oldincludedir/$2"
1766 }
1767
1768 $1="[$]$1 $cf_header_path_list"
1769 ])dnl
1770 dnl ---------------------------------------------------------------------------
1771 dnl CF_HELP_MESSAGE version: 3 updated: 1998/01/14 10:56:23
1772 dnl ---------------
1773 dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
1774 AC_DEFUN([CF_HELP_MESSAGE],
1775 [AC_DIVERT_HELP([$1])dnl
1776 ])dnl
1777 dnl ---------------------------------------------------------------------------
1778 dnl CF_INHERIT_SCRIPT version: 2 updated: 2003/03/01 23:50:42
1779 dnl -----------------
1780 dnl If we do not have a given script, look for it in the parent directory.
1781 AC_DEFUN([CF_INHERIT_SCRIPT],
1782 [
1783 test -f $1 || ( test -f ../$1 && cp ../$1 ./ )
1784 ])dnl
1785 dnl ---------------------------------------------------------------------------
1786 dnl CF_INTEL_COMPILER version: 7 updated: 2015/04/12 15:39:00
1787 dnl -----------------
1788 dnl Check if the given compiler is really the Intel compiler for Linux.  It
1789 dnl tries to imitate gcc, but does not return an error when it finds a mismatch
1790 dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
1791 dnl
1792 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
1793 dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
1794 dnl the wrappers for gcc and g++ warnings.
1795 dnl
1796 dnl $1 = GCC (default) or GXX
1797 dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
1798 dnl $3 = CFLAGS (default) or CXXFLAGS
1799 AC_DEFUN([CF_INTEL_COMPILER],[
1800 AC_REQUIRE([AC_CANONICAL_HOST])
1801 ifelse([$2],,INTEL_COMPILER,[$2])=no
1802
1803 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
1804         case $host_os in
1805         (linux*|gnu*)
1806                 AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
1807                 cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
1808                 ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
1809                 AC_TRY_COMPILE([],[
1810 #ifdef __INTEL_COMPILER
1811 #else
1812 make an error
1813 #endif
1814 ],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
1815 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
1816 ],[])
1817                 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
1818                 AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
1819                 ;;
1820         esac
1821 fi
1822 ])dnl
1823 dnl ---------------------------------------------------------------------------
1824 dnl CF_LD_RPATH_OPT version: 7 updated: 2016/02/20 18:01:19
1825 dnl ---------------
1826 dnl For the given system and compiler, find the compiler flags to pass to the
1827 dnl loader to use the "rpath" feature.
1828 AC_DEFUN([CF_LD_RPATH_OPT],
1829 [
1830 AC_REQUIRE([CF_CHECK_CACHE])
1831
1832 LD_RPATH_OPT=
1833 AC_MSG_CHECKING(for an rpath option)
1834 case $cf_cv_system_name in
1835 (irix*)
1836         if test "$GCC" = yes; then
1837                 LD_RPATH_OPT="-Wl,-rpath,"
1838         else
1839                 LD_RPATH_OPT="-rpath "
1840         fi
1841         ;;
1842 (linux*|gnu*|k*bsd*-gnu|freebsd*)
1843         LD_RPATH_OPT="-Wl,-rpath,"
1844         ;;
1845 (openbsd[[2-9]].*|mirbsd*)
1846         LD_RPATH_OPT="-Wl,-rpath,"
1847         ;;
1848 (dragonfly*)
1849         LD_RPATH_OPT="-rpath "
1850         ;;
1851 (netbsd*)
1852         LD_RPATH_OPT="-Wl,-rpath,"
1853         ;;
1854 (osf*|mls+*)
1855         LD_RPATH_OPT="-rpath "
1856         ;;
1857 (solaris2*)
1858         LD_RPATH_OPT="-R"
1859         ;;
1860 (*)
1861         ;;
1862 esac
1863 AC_MSG_RESULT($LD_RPATH_OPT)
1864
1865 case "x$LD_RPATH_OPT" in
1866 (x-R*)
1867         AC_MSG_CHECKING(if we need a space after rpath option)
1868         cf_save_LIBS="$LIBS"
1869         CF_ADD_LIBS(${LD_RPATH_OPT}$libdir)
1870         AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes)
1871         LIBS="$cf_save_LIBS"
1872         AC_MSG_RESULT($cf_rpath_space)
1873         test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
1874         ;;
1875 esac
1876 ])dnl
1877 dnl ---------------------------------------------------------------------------
1878 dnl CF_LIBRARY_PATH version: 10 updated: 2015/04/15 19:08:48
1879 dnl ---------------
1880 dnl Construct a search-list of directories for a nonstandard library-file
1881 dnl
1882 dnl Parameters
1883 dnl     $1 = the variable to return as result
1884 dnl     $2 = the package name
1885 AC_DEFUN([CF_LIBRARY_PATH],
1886 [
1887 $1=
1888 cf_library_path_list=""
1889 if test -n "${LDFLAGS}${LIBS}" ; then
1890         for cf_library_path in $LDFLAGS $LIBS
1891         do
1892                 case $cf_library_path in
1893                 (-L*)
1894                         cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
1895                         CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE)
1896                         cf_library_path_list="$cf_library_path_list [$]$1"
1897                         ;;
1898                 esac
1899         done
1900 fi
1901
1902 CF_SUBDIR_PATH($1,$2,lib)
1903
1904 $1="$cf_library_path_list [$]$1"
1905 ])dnl
1906 dnl ---------------------------------------------------------------------------
1907 dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
1908 dnl ------------
1909 dnl Generate tags/TAGS targets for makefiles.  Do not generate TAGS if we have
1910 dnl a monocase filesystem.
1911 AC_DEFUN([CF_MAKE_TAGS],[
1912 AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
1913
1914 AC_CHECK_PROGS(CTAGS, exctags ctags)
1915 AC_CHECK_PROGS(ETAGS, exetags etags)
1916
1917 AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
1918
1919 if test "$cf_cv_mixedcase" = yes ; then
1920         AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
1921 else
1922         MAKE_UPPER_TAGS=no
1923 fi
1924
1925 if test "$MAKE_UPPER_TAGS" = yes ; then
1926         MAKE_UPPER_TAGS=
1927 else
1928         MAKE_UPPER_TAGS="#"
1929 fi
1930
1931 if test "$MAKE_LOWER_TAGS" = yes ; then
1932         MAKE_LOWER_TAGS=
1933 else
1934         MAKE_LOWER_TAGS="#"
1935 fi
1936
1937 AC_SUBST(CTAGS)
1938 AC_SUBST(ETAGS)
1939
1940 AC_SUBST(MAKE_UPPER_TAGS)
1941 AC_SUBST(MAKE_LOWER_TAGS)
1942 ])dnl
1943 dnl ---------------------------------------------------------------------------
1944 dnl CF_MATH_LIB version: 8 updated: 2010/05/29 16:31:02
1945 dnl -----------
1946 dnl Checks for libraries.  At least one UNIX system, Apple Macintosh
1947 dnl Rhapsody 5.5, does not have -lm.  We cannot use the simpler
1948 dnl AC_CHECK_LIB(m,sin), because that fails for C++.
1949 AC_DEFUN([CF_MATH_LIB],
1950 [
1951 AC_CACHE_CHECK(if -lm needed for math functions,
1952         cf_cv_need_libm,[
1953         AC_TRY_LINK([
1954         #include <stdio.h>
1955         #include <math.h>
1956         ],
1957         [double x = rand(); printf("result = %g\n", ]ifelse([$2],,sin(x),$2)[)],
1958         [cf_cv_need_libm=no],
1959         [cf_cv_need_libm=yes])])
1960 if test "$cf_cv_need_libm" = yes
1961 then
1962 ifelse($1,,[
1963         CF_ADD_LIB(m)
1964 ],[$1=-lm])
1965 fi
1966 ])
1967 dnl ---------------------------------------------------------------------------
1968 dnl CF_MIXEDCASE_FILENAMES version: 7 updated: 2015/04/12 15:39:00
1969 dnl ----------------------
1970 dnl Check if the file-system supports mixed-case filenames.  If we're able to
1971 dnl create a lowercase name and see it as uppercase, it doesn't support that.
1972 AC_DEFUN([CF_MIXEDCASE_FILENAMES],
1973 [
1974 AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
1975 if test "$cross_compiling" = yes ; then
1976         case $target_alias in
1977         (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*)
1978                 cf_cv_mixedcase=no
1979                 ;;
1980         (*)
1981                 cf_cv_mixedcase=yes
1982                 ;;
1983         esac
1984 else
1985         rm -f conftest CONFTEST
1986         echo test >conftest
1987         if test -f CONFTEST ; then
1988                 cf_cv_mixedcase=no
1989         else
1990                 cf_cv_mixedcase=yes
1991         fi
1992         rm -f conftest CONFTEST
1993 fi
1994 ])
1995 test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
1996 ])dnl
1997 dnl ---------------------------------------------------------------------------
1998 dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
1999 dnl ----------
2000 dnl Write a debug message to config.log, along with the line number in the
2001 dnl configure script.
2002 AC_DEFUN([CF_MSG_LOG],[
2003 echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
2004 ])dnl
2005 dnl ---------------------------------------------------------------------------
2006 dnl CF_NCURSES_CC_CHECK version: 4 updated: 2007/07/29 10:39:05
2007 dnl -------------------
2008 dnl Check if we can compile with ncurses' header file
2009 dnl $1 is the cache variable to set
2010 dnl $2 is the header-file to include
2011 dnl $3 is the root name (ncurses or ncursesw)
2012 AC_DEFUN([CF_NCURSES_CC_CHECK],[
2013         AC_TRY_COMPILE([
2014 ]ifelse($3,ncursesw,[
2015 #define _XOPEN_SOURCE_EXTENDED
2016 #undef  HAVE_LIBUTF8_H  /* in case we used CF_UTF8_LIB */
2017 #define HAVE_LIBUTF8_H  /* to force ncurses' header file to use cchar_t */
2018 ])[
2019 #include <$2>],[
2020 #ifdef NCURSES_VERSION
2021 ]ifelse($3,ncursesw,[
2022 #ifndef WACS_BSSB
2023         make an error
2024 #endif
2025 ])[
2026 printf("%s\n", NCURSES_VERSION);
2027 #else
2028 #ifdef __NCURSES_H
2029 printf("old\n");
2030 #else
2031         make an error
2032 #endif
2033 #endif
2034         ]
2035         ,[$1=$2]
2036         ,[$1=no])
2037 ])dnl
2038 dnl ---------------------------------------------------------------------------
2039 dnl CF_NCURSES_CONFIG version: 17 updated: 2015/07/07 04:22:07
2040 dnl -----------------
2041 dnl Tie together the configure-script macros for ncurses, preferring these in
2042 dnl order:
2043 dnl a) ".pc" files for pkg-config, using $NCURSES_CONFIG_PKG
2044 dnl b) the "-config" script from ncurses, using $NCURSES_CONFIG
2045 dnl c) just plain libraries
2046 dnl
2047 dnl $1 is the root library name (default: "ncurses")
2048 AC_DEFUN([CF_NCURSES_CONFIG],[
2049 AC_REQUIRE([CF_PKG_CONFIG])
2050 cf_ncuconfig_root=ifelse($1,,ncurses,$1)
2051 cf_have_ncuconfig=no
2052
2053 if test "x${PKG_CONFIG:=none}" != xnone; then
2054         AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root)
2055         if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then
2056                 AC_MSG_RESULT(yes)
2057
2058                 AC_MSG_CHECKING(if the $cf_ncuconfig_root package files work)
2059                 cf_have_ncuconfig=unknown
2060
2061                 cf_save_CPPFLAGS="$CPPFLAGS"
2062                 cf_save_LIBS="$LIBS"
2063
2064                 CPPFLAGS="$CPPFLAGS `$PKG_CONFIG --cflags $cf_ncuconfig_root`"
2065                 CF_ADD_LIBS(`$PKG_CONFIG --libs $cf_ncuconfig_root`)
2066
2067                 AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
2068                         [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);],
2069                         [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}>
2070                                 int main(void)
2071                                 { char *xx = curses_version(); return (xx == 0); }],
2072                                 [cf_have_ncuconfig=yes],
2073                                 [cf_have_ncuconfig=no],
2074                                 [cf_have_ncuconfig=maybe])],
2075                         [cf_have_ncuconfig=no])
2076                 AC_MSG_RESULT($cf_have_ncuconfig)
2077                 test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes
2078                 if test "$cf_have_ncuconfig" != "yes"
2079                 then
2080                         CPPFLAGS="$cf_save_CPPFLAGS"
2081                         LIBS="$cf_save_LIBS"
2082                         NCURSES_CONFIG_PKG=none
2083                 else
2084                         AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2085                         NCURSES_CONFIG_PKG=$cf_ncuconfig_root
2086                 fi
2087
2088         else
2089                 AC_MSG_RESULT(no)
2090                 NCURSES_CONFIG_PKG=none
2091         fi
2092 else
2093         NCURSES_CONFIG_PKG=none
2094 fi
2095
2096 if test "x$cf_have_ncuconfig" = "xno"; then
2097         echo "Looking for ${cf_ncuconfig_root}-config"
2098
2099         CF_ACVERSION_CHECK(2.52,
2100                 [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncuconfig_root}-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)],
2101                 [AC_PATH_PROGS(NCURSES_CONFIG,  ${cf_ncuconfig_root}-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)])
2102
2103         if test "$NCURSES_CONFIG" != none ; then
2104
2105                 CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`"
2106                 CF_ADD_LIBS(`$NCURSES_CONFIG --libs`)
2107
2108                 # even with config script, some packages use no-override for curses.h
2109                 CF_CURSES_HEADER(ifelse($1,,ncurses,$1))
2110
2111                 dnl like CF_NCURSES_CPPFLAGS
2112                 AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2113
2114                 dnl like CF_NCURSES_LIBS
2115                 CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root)
2116                 AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
2117
2118                 dnl like CF_NCURSES_VERSION
2119                 cf_cv_ncurses_version=`$NCURSES_CONFIG --version`
2120
2121         else
2122
2123                 CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1))
2124                 CF_NCURSES_LIBS(ifelse($1,,ncurses,$1))
2125
2126         fi
2127 else
2128         NCURSES_CONFIG=none
2129 fi
2130 ])dnl
2131 dnl ---------------------------------------------------------------------------
2132 dnl CF_NCURSES_CPPFLAGS version: 21 updated: 2012/10/06 08:57:51
2133 dnl -------------------
2134 dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting
2135 dnl the CPPFLAGS variable so we can include its header.
2136 dnl
2137 dnl The header files may be installed as either curses.h, or ncurses.h (would
2138 dnl be obsolete, except that some packagers prefer this name to distinguish it
2139 dnl from a "native" curses implementation).  If not installed for overwrite,
2140 dnl the curses.h file would be in an ncurses subdirectory (e.g.,
2141 dnl /usr/include/ncurses), but someone may have installed overwriting the
2142 dnl vendor's curses.  Only very old versions (pre-1.9.2d, the first autoconf'd
2143 dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in
2144 dnl the header.
2145 dnl
2146 dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header
2147 dnl is already in the include-path, don't even bother with this, since we cannot
2148 dnl easily determine which file it is.  In this case, it has to be <curses.h>.
2149 dnl
2150 dnl The optional parameter gives the root name of the library, in case it is
2151 dnl not installed as the default curses library.  That is how the
2152 dnl wide-character version of ncurses is installed.
2153 AC_DEFUN([CF_NCURSES_CPPFLAGS],
2154 [AC_REQUIRE([CF_WITH_CURSES_DIR])
2155
2156 AC_PROVIDE([CF_CURSES_CPPFLAGS])dnl
2157 cf_ncuhdr_root=ifelse($1,,ncurses,$1)
2158
2159 test -n "$cf_cv_curses_dir" && \
2160 test "$cf_cv_curses_dir" != "no" && { \
2161   CF_ADD_INCDIR($cf_cv_curses_dir/include/$cf_ncuhdr_root)
2162 }
2163
2164 AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[
2165         cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h"
2166         ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h"
2167         for cf_header in $cf_header_list
2168         do
2169                 CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1)
2170                 test "$cf_cv_ncurses_h" != no && break
2171         done
2172 ])
2173
2174 CF_NCURSES_HEADER
2175 CF_TERM_HEADER
2176
2177 # some applications need this, but should check for NCURSES_VERSION
2178 AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2179
2180 CF_NCURSES_VERSION
2181 ])dnl
2182 dnl ---------------------------------------------------------------------------
2183 dnl CF_NCURSES_EXT_FUNCS version: 4 updated: 2012/10/06 16:39:58
2184 dnl --------------------
2185 dnl Since 2007/11/17, ncurses has defined NCURSES_EXT_FUNCS; earlier versions
2186 dnl may provide these functions.  Define the symbol if it is not defined, and
2187 dnl if it is valid.
2188 AC_DEFUN([CF_NCURSES_EXT_FUNCS],
2189 [
2190 AC_CACHE_CHECK(for ncurses extended functions,cf_cv_ncurses_ext_funcs,[
2191 AC_TRY_COMPILE([
2192 #include <${cf_cv_ncurses_header:-curses.h}>],
2193 [
2194 int x = NCURSES_EXT_FUNCS
2195 ],[cf_cv_ncurses_ext_funcs=defined],[
2196 AC_TRY_LINK([
2197 #include <${cf_cv_ncurses_header:-curses.h}>],
2198 [
2199         (void) assume_default_colors (0, 0);
2200         (void) curses_version ();
2201         (void) define_key (0, 0);
2202         (void) is_term_resized (0, 0);
2203         (void) key_defined (0);
2204         (void) keybound (0, 0);
2205         (void) keyok (0, 0);
2206         (void) resize_term (0, 0);
2207         (void) resizeterm (0, 0);
2208         (void) use_default_colors ();
2209         (void) use_extended_names (0);
2210         (void) wresize (0, 0, 0);],
2211         [cf_cv_ncurses_ext_funcs=yes],
2212         [cf_cv_ncurses_ext_funcs=no])
2213 ])
2214 ])
2215 test "$cf_cv_ncurses_ext_funcs" = yes && AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 if we have ncurses extensions])
2216 ])dnl
2217 dnl ---------------------------------------------------------------------------
2218 dnl CF_NCURSES_HEADER version: 4 updated: 2015/04/15 19:08:48
2219 dnl -----------------
2220 dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common
2221 dnl variations of ncurses' installs.
2222 dnl
2223 dnl See also CF_CURSES_HEADER, which sets the same cache variable.
2224 AC_DEFUN([CF_NCURSES_HEADER],[
2225
2226 if test "$cf_cv_ncurses_h" != no ; then
2227         cf_cv_ncurses_header=$cf_cv_ncurses_h
2228 else
2229
2230 AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[
2231         test -n "$verbose" && echo
2232         CF_HEADER_PATH(cf_search,$cf_ncuhdr_root)
2233         test -n "$verbose" && echo search path $cf_search
2234         cf_save2_CPPFLAGS="$CPPFLAGS"
2235         for cf_incdir in $cf_search
2236         do
2237                 CF_ADD_INCDIR($cf_incdir)
2238                 for cf_header in \
2239                         ncurses.h \
2240                         curses.h
2241                 do
2242                         CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1)
2243                         if test "$cf_cv_ncurses_h2" != no ; then
2244                                 cf_cv_ncurses_h2=$cf_incdir/$cf_header
2245                                 test -n "$verbose" && echo $ac_n "      ... found $ac_c" 1>&AC_FD_MSG
2246                                 break
2247                         fi
2248                         test -n "$verbose" && echo "    ... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG
2249                 done
2250                 CPPFLAGS="$cf_save2_CPPFLAGS"
2251                 test "$cf_cv_ncurses_h2" != no && break
2252         done
2253         test "$cf_cv_ncurses_h2" = no && AC_MSG_ERROR(not found)
2254         ])
2255
2256         CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2)
2257         cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2`
2258         if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then
2259                 cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header
2260         fi
2261         CF_ADD_INCDIR($cf_1st_incdir)
2262
2263 fi
2264
2265 # Set definitions to allow ifdef'ing for ncurses.h
2266
2267 case $cf_cv_ncurses_header in
2268 (*ncurses.h)
2269         AC_DEFINE(HAVE_NCURSES_H,1,[Define to 1 if we have ncurses.h])
2270         ;;
2271 esac
2272
2273 case $cf_cv_ncurses_header in
2274 (ncurses/curses.h|ncurses/ncurses.h)
2275         AC_DEFINE(HAVE_NCURSES_NCURSES_H,1,[Define to 1 if we have ncurses/ncurses.h])
2276         ;;
2277 (ncursesw/curses.h|ncursesw/ncurses.h)
2278         AC_DEFINE(HAVE_NCURSESW_NCURSES_H,1,[Define to 1 if we have ncursesw/ncurses.h])
2279         ;;
2280 esac
2281
2282 ])dnl
2283 dnl ---------------------------------------------------------------------------
2284 dnl CF_NCURSES_LIBS version: 17 updated: 2015/04/15 19:08:48
2285 dnl ---------------
2286 dnl Look for the ncurses library.  This is a little complicated on Linux,
2287 dnl because it may be linked with the gpm (general purpose mouse) library.
2288 dnl Some distributions have gpm linked with (bsd) curses, which makes it
2289 dnl unusable with ncurses.  However, we don't want to link with gpm unless
2290 dnl ncurses has a dependency, since gpm is normally set up as a shared library,
2291 dnl and the linker will record a dependency.
2292 dnl
2293 dnl The optional parameter gives the root name of the library, in case it is
2294 dnl not installed as the default curses library.  That is how the
2295 dnl wide-character version of ncurses is installed.
2296 AC_DEFUN([CF_NCURSES_LIBS],
2297 [AC_REQUIRE([CF_NCURSES_CPPFLAGS])
2298
2299 cf_nculib_root=ifelse($1,,ncurses,$1)
2300         # This works, except for the special case where we find gpm, but
2301         # ncurses is in a nonstandard location via $LIBS, and we really want
2302         # to link gpm.
2303 cf_ncurses_LIBS=""
2304 cf_ncurses_SAVE="$LIBS"
2305 AC_CHECK_LIB(gpm,Gpm_Open,
2306         [AC_CHECK_LIB(gpm,initscr,
2307                 [LIBS="$cf_ncurses_SAVE"],
2308                 [cf_ncurses_LIBS="-lgpm"])])
2309
2310 case $host_os in
2311 (freebsd*)
2312         # This is only necessary if you are linking against an obsolete
2313         # version of ncurses (but it should do no harm, since it's static).
2314         if test "$cf_nculib_root" = ncurses ; then
2315                 AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"])
2316         fi
2317         ;;
2318 esac
2319
2320 CF_ADD_LIBS($cf_ncurses_LIBS)
2321
2322 if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
2323 then
2324         CF_ADD_LIBS(-l$cf_nculib_root)
2325 else
2326         CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root,
2327                 [#include <${cf_cv_ncurses_header:-curses.h}>],
2328                 [initscr()],
2329                 initscr)
2330 fi
2331
2332 if test -n "$cf_ncurses_LIBS" ; then
2333         AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS)
2334         cf_ncurses_SAVE="$LIBS"
2335         for p in $cf_ncurses_LIBS ; do
2336                 q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"`
2337                 if test "$q" != "$LIBS" ; then
2338                         LIBS="$q"
2339                 fi
2340         done
2341         AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>],
2342                 [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);],
2343                 [AC_MSG_RESULT(yes)],
2344                 [AC_MSG_RESULT(no)
2345                  LIBS="$cf_ncurses_SAVE"])
2346 fi
2347
2348 CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root)
2349 AC_DEFINE_UNQUOTED($cf_nculib_ROOT)
2350 ])dnl
2351 dnl ---------------------------------------------------------------------------
2352 dnl CF_NCURSES_PTHREADS version: 2 updated: 2016/04/22 05:07:41
2353 dnl -------------------
2354 dnl Use this followup check to ensure that we link with pthreads if ncurses
2355 dnl uses it.
2356 AC_DEFUN([CF_NCURSES_PTHREADS],[
2357 : ${cf_nculib_root:=ifelse($1,,ncurses,$1)}
2358 AC_CHECK_LIB($cf_nculib_root,_nc_init_pthreads,
2359         cf_cv_ncurses_pthreads=yes,
2360         cf_cv_ncurses_pthreads=no)
2361 if test "$cf_cv_ncurses_pthreads" = yes
2362 then
2363         CF_ADD_LIBS(-lpthread)
2364 fi
2365 ])dnl
2366 dnl ---------------------------------------------------------------------------
2367 dnl CF_NCURSES_VERSION version: 14 updated: 2012/10/06 08:57:51
2368 dnl ------------------
2369 dnl Check for the version of ncurses, to aid in reporting bugs, etc.
2370 dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS.  We don't use
2371 dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi.
2372 AC_DEFUN([CF_NCURSES_VERSION],
2373 [
2374 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
2375 AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[
2376         cf_cv_ncurses_version=no
2377         cf_tempfile=out$$
2378         rm -f $cf_tempfile
2379         AC_TRY_RUN([
2380 #include <${cf_cv_ncurses_header:-curses.h}>
2381 #include <stdio.h>
2382 int main()
2383 {
2384         FILE *fp = fopen("$cf_tempfile", "w");
2385 #ifdef NCURSES_VERSION
2386 # ifdef NCURSES_VERSION_PATCH
2387         fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH);
2388 # else
2389         fprintf(fp, "%s\n", NCURSES_VERSION);
2390 # endif
2391 #else
2392 # ifdef __NCURSES_H
2393         fprintf(fp, "old\n");
2394 # else
2395         make an error
2396 # endif
2397 #endif
2398         ${cf_cv_main_return:-return}(0);
2399 }],[
2400         cf_cv_ncurses_version=`cat $cf_tempfile`],,[
2401
2402         # This will not work if the preprocessor splits the line after the
2403         # Autoconf token.  The 'unproto' program does that.
2404         cat > conftest.$ac_ext <<EOF
2405 #include <${cf_cv_ncurses_header:-curses.h}>
2406 #undef Autoconf
2407 #ifdef NCURSES_VERSION
2408 Autoconf NCURSES_VERSION
2409 #else
2410 #ifdef __NCURSES_H
2411 Autoconf "old"
2412 #endif
2413 ;
2414 #endif
2415 EOF
2416         cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out"
2417         AC_TRY_EVAL(cf_try)
2418         if test -f conftest.out ; then
2419                 cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%'`
2420                 test -n "$cf_out" && cf_cv_ncurses_version="$cf_out"
2421                 rm -f conftest.out
2422         fi
2423 ])
2424         rm -f $cf_tempfile
2425 ])
2426 test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries])
2427 ])dnl
2428 dnl ---------------------------------------------------------------------------
2429 dnl CF_NCURSES_WRAP_PREFIX version: 1 updated: 2009/03/28 16:08:10
2430 dnl ----------------------
2431 dnl Check for ncurses "wrap-prefix" used for public variables which have been
2432 dnl wrapped with a function to help with concurrency control.
2433 AC_DEFUN([CF_NCURSES_WRAP_PREFIX],
2434 [
2435 AC_MSG_CHECKING(for ncurses wrap-prefix)
2436 AC_ARG_WITH(ncurses-wrap-prefix,
2437         [  --with-ncurses-wrap-prefix naming-prefix for ncurses wrapped-variables],
2438         [NCURSES_WRAP_PREFIX=$withval],
2439         [NCURSES_WRAP_PREFIX=_nc_])
2440 AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
2441
2442 AC_SUBST(NCURSES_WRAP_PREFIX)
2443 ])
2444 dnl ---------------------------------------------------------------------------
2445 dnl CF_NETBSD_FORM_H version: 2 updated: 2012/10/06 16:39:58
2446 dnl ----------------
2447 dnl Check for NetBSD's form.h, which is incompatible with SVr4 and ncurses.
2448 dnl Some workarounds are needed in client programs to allow them to compile.
2449 AC_DEFUN([CF_NETBSD_FORM_H],[
2450 AC_CACHE_CHECK(for NetBSD form.h,cf_cv_netbsd_form_h,[
2451 AC_TRY_COMPILE([
2452 #include <${cf_cv_ncurses_header:-curses.h}>
2453 #include <form.h>
2454 ],[
2455         FORM *form;
2456         int y = current_field(form)->cursor_ypos;
2457         int x = current_field(form)->cursor_xpos;
2458 ],[cf_cv_netbsd_form_h=yes
2459 ],[cf_cv_netbsd_form_h=no])
2460 ])
2461
2462 test "$cf_cv_netbsd_form_h" = yes && AC_DEFINE(HAVE_NETBSD_FORM_H,1,[Define to 1 if we appear to be using NetBSD form.h])
2463 ])dnl
2464 dnl ---------------------------------------------------------------------------
2465 dnl CF_NETBSD_MENU_H version: 2 updated: 2012/10/06 16:39:58
2466 dnl ----------------
2467 dnl Check for NetBSD's menu.h, which is incompatible with SVr4 and ncurses.
2468 dnl Some workarounds are needed in client programs to allow them to compile.
2469 AC_DEFUN([CF_NETBSD_MENU_H],[
2470 AC_CACHE_CHECK(for NetBSD menu.h,cf_cv_netbsd_menu_h,[
2471 AC_TRY_COMPILE([
2472 #include <${cf_cv_ncurses_header:-curses.h}>
2473 #include <menu.h>
2474 ],[
2475         MENU *menu;
2476         int y = menu->max_item_width;
2477 ],[cf_cv_netbsd_menu_h=yes
2478 ],[cf_cv_netbsd_menu_h=no])
2479 ])
2480
2481 test "$cf_cv_netbsd_menu_h" = yes && AC_DEFINE(HAVE_NETBSD_MENU_H,1,[Define to 1 if we appear to be using NetBSD menu.h])
2482 ])dnl
2483 dnl ---------------------------------------------------------------------------
2484 dnl CF_NO_LEAKS_OPTION version: 6 updated: 2015/04/12 15:39:00
2485 dnl ------------------
2486 dnl see CF_WITH_NO_LEAKS
2487 AC_DEFUN([CF_NO_LEAKS_OPTION],[
2488 AC_MSG_CHECKING(if you want to use $1 for testing)
2489 AC_ARG_WITH($1,
2490         [$2],
2491         [AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
2492          $4
2493 ])
2494         : ${with_cflags:=-g}
2495         : ${with_no_leaks:=yes}
2496          with_$1=yes],
2497         [with_$1=])
2498 AC_MSG_RESULT(${with_$1:-no})
2499
2500 case .$with_cflags in
2501 (.*-g*)
2502         case .$CFLAGS in
2503         (.*-g*)
2504                 ;;
2505         (*)
2506                 CF_ADD_CFLAGS([-g])
2507                 ;;
2508         esac
2509         ;;
2510 esac
2511 ])dnl
2512 dnl ---------------------------------------------------------------------------
2513 dnl CF_PATH_SYNTAX version: 16 updated: 2015/04/18 08:56:57
2514 dnl --------------
2515 dnl Check the argument to see that it looks like a pathname.  Rewrite it if it
2516 dnl begins with one of the prefix/exec_prefix variables, and then again if the
2517 dnl result begins with 'NONE'.  This is necessary to work around autoconf's
2518 dnl delayed evaluation of those symbols.
2519 AC_DEFUN([CF_PATH_SYNTAX],[
2520 if test "x$prefix" != xNONE; then
2521         cf_path_syntax="$prefix"
2522 else
2523         cf_path_syntax="$ac_default_prefix"
2524 fi
2525
2526 case ".[$]$1" in
2527 (.\[$]\(*\)*|.\'*\'*)
2528         ;;
2529 (..|./*|.\\*)
2530         ;;
2531 (.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
2532         ;;
2533 (.\[$]{*prefix}*|.\[$]{*dir}*)
2534         eval $1="[$]$1"
2535         case ".[$]$1" in
2536         (.NONE/*)
2537                 $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
2538                 ;;
2539         esac
2540         ;;
2541 (.no|.NONE/*)
2542         $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
2543         ;;
2544 (*)
2545         ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
2546         ;;
2547 esac
2548 ])dnl
2549 dnl ---------------------------------------------------------------------------
2550 dnl CF_PDCURSES_X11 version: 13 updated: 2012/10/06 16:39:58
2551 dnl ---------------
2552 dnl Configure for PDCurses' X11 library
2553 AC_DEFUN([CF_PDCURSES_X11],[
2554 AC_REQUIRE([CF_X_ATHENA])
2555
2556 CF_ACVERSION_CHECK(2.52,
2557         [AC_CHECK_TOOLS(XCURSES_CONFIG, xcurses-config, none)],
2558         [AC_PATH_PROGS(XCURSES_CONFIG, xcurses-config, none)])
2559
2560 if test "$XCURSES_CONFIG" != none ; then
2561
2562 CPPFLAGS="$CPPFLAGS `$XCURSES_CONFIG --cflags`"
2563 CF_ADD_LIBS(`$XCURSES_CONFIG --libs`)
2564
2565 cf_cv_lib_XCurses=yes
2566
2567 else
2568
2569 LDFLAGS="$LDFLAGS $X_LIBS"
2570 CF_CHECK_CFLAGS($X_CFLAGS)
2571 AC_CHECK_LIB(X11,XOpenDisplay,
2572         [CF_ADD_LIBS(-lX11)],,
2573         [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])
2574 AC_CACHE_CHECK(for XCurses library,cf_cv_lib_XCurses,[
2575 CF_ADD_LIBS(-lXCurses)
2576 AC_TRY_LINK([
2577 #include <xcurses.h>
2578 char *XCursesProgramName = "test";
2579 ],[XCursesExit();],
2580 [cf_cv_lib_XCurses=yes],
2581 [cf_cv_lib_XCurses=no])
2582 ])
2583
2584 fi
2585
2586 if test $cf_cv_lib_XCurses = yes ; then
2587         AC_DEFINE(UNIX,1,[Define to 1 if using PDCurses on Unix])
2588         AC_DEFINE(XCURSES,1,[Define to 1 if using PDCurses on Unix])
2589         AC_CHECK_HEADER(xcurses.h, AC_DEFINE(HAVE_XCURSES,1,[Define to 1 if using PDCurses on Unix]))
2590 else
2591         AC_MSG_ERROR(Cannot link with XCurses)
2592 fi
2593 ])dnl
2594 dnl ---------------------------------------------------------------------------
2595 dnl CF_PKG_CONFIG version: 10 updated: 2015/04/26 18:06:58
2596 dnl -------------
2597 dnl Check for the package-config program, unless disabled by command-line.
2598 AC_DEFUN([CF_PKG_CONFIG],
2599 [
2600 AC_MSG_CHECKING(if you want to use pkg-config)
2601 AC_ARG_WITH(pkg-config,
2602         [  --with-pkg-config{=path} enable/disable use of pkg-config],
2603         [cf_pkg_config=$withval],
2604         [cf_pkg_config=yes])
2605 AC_MSG_RESULT($cf_pkg_config)
2606
2607 case $cf_pkg_config in
2608 (no)
2609         PKG_CONFIG=none
2610         ;;
2611 (yes)
2612         CF_ACVERSION_CHECK(2.52,
2613                 [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
2614                 [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
2615         ;;
2616 (*)
2617         PKG_CONFIG=$withval
2618         ;;
2619 esac
2620
2621 test -z "$PKG_CONFIG" && PKG_CONFIG=none
2622 if test "$PKG_CONFIG" != none ; then
2623         CF_PATH_SYNTAX(PKG_CONFIG)
2624 elif test "x$cf_pkg_config" != xno ; then
2625         AC_MSG_WARN(pkg-config is not installed)
2626 fi
2627
2628 AC_SUBST(PKG_CONFIG)
2629 ])dnl
2630 dnl ---------------------------------------------------------------------------
2631 dnl CF_POSIX_C_SOURCE version: 9 updated: 2015/04/12 15:39:00
2632 dnl -----------------
2633 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
2634 dnl
2635 dnl     POSIX.1-1990                            _POSIX_SOURCE
2636 dnl     POSIX.1-1990 and                        _POSIX_SOURCE and
2637 dnl             POSIX.2-1992 C-Language                 _POSIX_C_SOURCE=2
2638 dnl             Bindings Option
2639 dnl     POSIX.1b-1993                           _POSIX_C_SOURCE=199309L
2640 dnl     POSIX.1c-1996                           _POSIX_C_SOURCE=199506L
2641 dnl     X/Open 2000                             _POSIX_C_SOURCE=200112L
2642 dnl
2643 dnl Parameters:
2644 dnl     $1 is the nominal value for _POSIX_C_SOURCE
2645 AC_DEFUN([CF_POSIX_C_SOURCE],
2646 [
2647 cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
2648
2649 cf_save_CFLAGS="$CFLAGS"
2650 cf_save_CPPFLAGS="$CPPFLAGS"
2651
2652 CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
2653 CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
2654
2655 AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
2656         CF_MSG_LOG(if the symbol is already defined go no further)
2657         AC_TRY_COMPILE([#include <sys/types.h>],[
2658 #ifndef _POSIX_C_SOURCE
2659 make an error
2660 #endif],
2661         [cf_cv_posix_c_source=no],
2662         [cf_want_posix_source=no
2663          case .$cf_POSIX_C_SOURCE in
2664          (.[[12]]??*)
2665                 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
2666                 ;;
2667          (.2)
2668                 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
2669                 cf_want_posix_source=yes
2670                 ;;
2671          (.*)
2672                 cf_want_posix_source=yes
2673                 ;;
2674          esac
2675          if test "$cf_want_posix_source" = yes ; then
2676                 AC_TRY_COMPILE([#include <sys/types.h>],[
2677 #ifdef _POSIX_SOURCE
2678 make an error
2679 #endif],[],
2680                 cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
2681          fi
2682          CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
2683          CFLAGS="$cf_trim_CFLAGS"
2684          CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
2685          CF_MSG_LOG(if the second compile does not leave our definition intact error)
2686          AC_TRY_COMPILE([#include <sys/types.h>],[
2687 #ifndef _POSIX_C_SOURCE
2688 make an error
2689 #endif],,
2690          [cf_cv_posix_c_source=no])
2691          CFLAGS="$cf_save_CFLAGS"
2692          CPPFLAGS="$cf_save_CPPFLAGS"
2693         ])
2694 ])
2695
2696 if test "$cf_cv_posix_c_source" != no ; then
2697         CFLAGS="$cf_trim_CFLAGS"
2698         CPPFLAGS="$cf_trim_CPPFLAGS"
2699         CF_ADD_CFLAGS($cf_cv_posix_c_source)
2700 fi
2701
2702 ])dnl
2703 dnl ---------------------------------------------------------------------------
2704 dnl CF_PRG_RULES version: 1 updated: 2006/06/03 11:45:08
2705 dnl ------------
2706 dnl Append definitions and rules for the given programs to the subdirectory
2707 dnl Makefiles, and the recursion rule for the top-level Makefile.
2708 dnl
2709 dnl parameters
2710 dnl     $1 = script to run
2711 dnl     $2 = list of subdirectories
2712 dnl
2713 dnl variables
2714 dnl     $AWK
2715 AC_DEFUN([CF_PRG_RULES],
2716 [
2717 for cf_dir in $2
2718 do
2719         if test ! -d $srcdir/$cf_dir; then
2720                 continue
2721         elif test -f $srcdir/$cf_dir/programs; then
2722                 $AWK -f $1 $srcdir/$cf_dir/programs >>$cf_dir/Makefile
2723         fi
2724 done
2725
2726 ])dnl
2727 dnl ---------------------------------------------------------------------------
2728 dnl CF_PROG_CC version: 4 updated: 2014/07/12 18:57:58
2729 dnl ----------
2730 dnl standard check for CC, plus followup sanity checks
2731 dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
2732 AC_DEFUN([CF_PROG_CC],[
2733 ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
2734 CF_GCC_VERSION
2735 CF_ACVERSION_CHECK(2.52,
2736         [AC_PROG_CC_STDC],
2737         [CF_ANSI_CC_REQD])
2738 CF_CC_ENV_FLAGS
2739 ])dnl
2740 dnl ---------------------------------------------------------------------------
2741 dnl CF_PROG_INSTALL version: 7 updated: 2015/04/18 08:56:57
2742 dnl ---------------
2743 dnl Force $INSTALL to be an absolute-path.  Otherwise, edit_man.sh and the
2744 dnl misc/tabset install won't work properly.  Usually this happens only when
2745 dnl using the fallback mkinstalldirs script
2746 AC_DEFUN([CF_PROG_INSTALL],
2747 [AC_PROG_INSTALL
2748 case $INSTALL in
2749 (/*)
2750         ;;
2751 (*)
2752         CF_DIRNAME(cf_dir,$INSTALL)
2753         test -z "$cf_dir" && cf_dir=.
2754         INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
2755         ;;
2756 esac
2757 ])dnl
2758 dnl ---------------------------------------------------------------------------
2759 dnl CF_PROG_LINT version: 3 updated: 2016/05/22 15:25:54
2760 dnl ------------
2761 AC_DEFUN([CF_PROG_LINT],
2762 [
2763 AC_CHECK_PROGS(LINT, lint cppcheck splint)
2764 AC_SUBST(LINT_OPTS)
2765 ])dnl
2766 dnl ---------------------------------------------------------------------------
2767 dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
2768 dnl ----------------
2769 dnl Remove all -U and -D options that refer to the given symbol from a list
2770 dnl of C compiler options.  This works around the problem that not all
2771 dnl compilers process -U and -D options from left-to-right, so a -U option
2772 dnl cannot be used to cancel the effect of a preceding -D option.
2773 dnl
2774 dnl $1 = target (which could be the same as the source variable)
2775 dnl $2 = source (including '$')
2776 dnl $3 = symbol to remove
2777 define([CF_REMOVE_DEFINE],
2778 [
2779 $1=`echo "$2" | \
2780         sed     -e 's/-[[UD]]'"$3"'\(=[[^       ]]*\)\?[[       ]]/ /g' \
2781                 -e 's/-[[UD]]'"$3"'\(=[[^       ]]*\)\?[$]//g'`
2782 ])dnl
2783 dnl ---------------------------------------------------------------------------
2784 dnl CF_RPATH_HACK version: 11 updated: 2013/09/01 13:02:00
2785 dnl -------------
2786 AC_DEFUN([CF_RPATH_HACK],
2787 [
2788 AC_REQUIRE([CF_LD_RPATH_OPT])
2789 AC_MSG_CHECKING(for updated LDFLAGS)
2790 if test -n "$LD_RPATH_OPT" ; then
2791         AC_MSG_RESULT(maybe)
2792
2793         AC_CHECK_PROGS(cf_ldd_prog,ldd,no)
2794         cf_rpath_list="/usr/lib /lib"
2795         if test "$cf_ldd_prog" != no
2796         then
2797                 cf_rpath_oops=
2798
2799 AC_TRY_LINK([#include <stdio.h>],
2800                 [printf("Hello");],
2801                 [cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
2802                  cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[[     ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`])
2803
2804                 # If we passed the link-test, but get a "not found" on a given library,
2805                 # this could be due to inept reconfiguration of gcc to make it only
2806                 # partly honor /usr/local/lib (or whatever).  Sometimes this behavior
2807                 # is intentional, e.g., installing gcc in /usr/bin and suppressing the
2808                 # /usr/local libraries.
2809                 if test -n "$cf_rpath_oops"
2810                 then
2811                         for cf_rpath_src in $cf_rpath_oops
2812                         do
2813                                 for cf_rpath_dir in \
2814                                         /usr/local \
2815                                         /usr/pkg \
2816                                         /opt/sfw
2817                                 do
2818                                         if test -f $cf_rpath_dir/lib/$cf_rpath_src
2819                                         then
2820                                                 CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src)
2821                                                 LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
2822                                                 break
2823                                         fi
2824                                 done
2825                         done
2826                 fi
2827         fi
2828
2829         CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS)
2830
2831         CF_RPATH_HACK_2(LDFLAGS)
2832         CF_RPATH_HACK_2(LIBS)
2833
2834         CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS)
2835 else
2836         AC_MSG_RESULT(no)
2837 fi
2838 AC_SUBST(EXTRA_LDFLAGS)
2839 ])dnl
2840 dnl ---------------------------------------------------------------------------
2841 dnl CF_RPATH_HACK_2 version: 7 updated: 2015/04/12 15:39:00
2842 dnl ---------------
2843 dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to
2844 dnl EXTRA_LDFLAGS for each -L option found.
2845 dnl
2846 dnl $cf_rpath_list contains a list of directories to ignore.
2847 dnl
2848 dnl $1 = variable name to update.  The LDFLAGS variable should be the only one,
2849 dnl      but LIBS often has misplaced -L options.
2850 AC_DEFUN([CF_RPATH_HACK_2],
2851 [
2852 CF_VERBOSE(...checking $1 [$]$1)
2853
2854 cf_rpath_dst=
2855 for cf_rpath_src in [$]$1
2856 do
2857         case $cf_rpath_src in
2858         (-L*)
2859
2860                 # check if this refers to a directory which we will ignore
2861                 cf_rpath_skip=no
2862                 if test -n "$cf_rpath_list"
2863                 then
2864                         for cf_rpath_item in $cf_rpath_list
2865                         do
2866                                 if test "x$cf_rpath_src" = "x-L$cf_rpath_item"
2867                                 then
2868                                         cf_rpath_skip=yes
2869                                         break
2870                                 fi
2871                         done
2872                 fi
2873
2874                 if test "$cf_rpath_skip" = no
2875                 then
2876                         # transform the option
2877                         if test "$LD_RPATH_OPT" = "-R " ; then
2878                                 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"`
2879                         else
2880                                 cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"`
2881                         fi
2882
2883                         # if we have not already added this, add it now
2884                         cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"`
2885                         if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS"
2886                         then
2887                                 CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp)
2888                                 EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
2889                         fi
2890                 fi
2891                 ;;
2892         esac
2893         cf_rpath_dst="$cf_rpath_dst $cf_rpath_src"
2894 done
2895 $1=$cf_rpath_dst
2896
2897 CF_VERBOSE(...checked $1 [$]$1)
2898 AC_SUBST(EXTRA_LDFLAGS)
2899 ])dnl
2900 dnl ---------------------------------------------------------------------------
2901 dnl CF_SIGWINCH version: 1 updated: 2006/04/02 16:41:09
2902 dnl -----------
2903 dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all
2904 dnl programs need this test).
2905 dnl
2906 dnl This is really a MacOS X 10.4.3 workaround.  Defining _POSIX_C_SOURCE
2907 dnl forces SIGWINCH to be undefined (breaks xterm, ncurses).  Oddly, the struct
2908 dnl winsize declaration is left alone - we may revisit this if Apple choose to
2909 dnl break that part of the interface as well.
2910 AC_DEFUN([CF_SIGWINCH],
2911 [
2912 AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[
2913         AC_TRY_COMPILE([
2914 #include <sys/types.h>
2915 #include <sys/signal.h>
2916 ],[int x = SIGWINCH],
2917         [cf_cv_define_sigwinch=yes],
2918         [AC_TRY_COMPILE([
2919 #undef _XOPEN_SOURCE
2920 #undef _POSIX_SOURCE
2921 #undef _POSIX_C_SOURCE
2922 #include <sys/types.h>
2923 #include <sys/signal.h>
2924 ],[int x = SIGWINCH],
2925         [cf_cv_define_sigwinch=maybe],
2926         [cf_cv_define_sigwinch=no])
2927 ])
2928 ])
2929
2930 if test "$cf_cv_define_sigwinch" = maybe ; then
2931 AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[
2932 cf_cv_fixup_sigwinch=unknown
2933 cf_sigwinch=32
2934 while test $cf_sigwinch != 1
2935 do
2936         AC_TRY_COMPILE([
2937 #undef _XOPEN_SOURCE
2938 #undef _POSIX_SOURCE
2939 #undef _POSIX_C_SOURCE
2940 #include <sys/types.h>
2941 #include <sys/signal.h>
2942 ],[
2943 #if SIGWINCH != $cf_sigwinch
2944 make an error
2945 #endif
2946 int x = SIGWINCH],
2947         [cf_cv_fixup_sigwinch=$cf_sigwinch
2948          break])
2949
2950 cf_sigwinch=`expr $cf_sigwinch - 1`
2951 done
2952 ])
2953
2954         if test "$cf_cv_fixup_sigwinch" != unknown ; then
2955                 CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch"
2956         fi
2957 fi
2958 ])dnl
2959 dnl ---------------------------------------------------------------------------
2960 dnl CF_SIG_ATOMIC_T version: 3 updated: 2012/10/04 20:12:20
2961 dnl ---------------
2962 dnl signal handler, but there are some gcc depedencies in that recommendation.
2963 dnl Try anyway.
2964 AC_DEFUN([CF_SIG_ATOMIC_T],
2965 [
2966 AC_MSG_CHECKING(for signal global datatype)
2967 AC_CACHE_VAL(cf_cv_sig_atomic_t,[
2968         for cf_type in \
2969                 "volatile sig_atomic_t" \
2970                 "sig_atomic_t" \
2971                 "int"
2972         do
2973         AC_TRY_COMPILE([
2974 #include <sys/types.h>
2975 #include <signal.h>
2976 #include <stdio.h>
2977
2978 extern $cf_type x;
2979 $cf_type x;
2980 static void handler(int sig)
2981 {
2982         x = 5;
2983 }],
2984                 [signal(SIGINT, handler);
2985                  x = 1],
2986                 [cf_cv_sig_atomic_t=$cf_type],
2987                 [cf_cv_sig_atomic_t=no])
2988                 test "$cf_cv_sig_atomic_t" != no && break
2989         done
2990         ])
2991 AC_MSG_RESULT($cf_cv_sig_atomic_t)
2992 test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
2993 ])dnl
2994 dnl ---------------------------------------------------------------------------
2995 dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06
2996 dnl --------------
2997 dnl Construct a search-list for a nonstandard header/lib-file
2998 dnl     $1 = the variable to return as result
2999 dnl     $2 = the package name
3000 dnl     $3 = the subdirectory, e.g., bin, include or lib
3001 AC_DEFUN([CF_SUBDIR_PATH],
3002 [
3003 $1=
3004
3005 CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE)
3006
3007 for cf_subdir_prefix in \
3008         /usr \
3009         /usr/local \
3010         /usr/pkg \
3011         /opt \
3012         /opt/local \
3013         [$]HOME
3014 do
3015         CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix)
3016 done
3017 ])dnl
3018 dnl ---------------------------------------------------------------------------
3019 dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57
3020 dnl ------------------
3021 dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
3022 dnl older SCO configurations.
3023 AC_DEFUN([CF_SYS_TIME_SELECT],
3024 [
3025 AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
3026 AC_CACHE_VAL(cf_cv_sys_time_select,[
3027 AC_TRY_COMPILE([
3028 #include <sys/types.h>
3029 #ifdef HAVE_SYS_TIME_H
3030 #include <sys/time.h>
3031 #endif
3032 #ifdef HAVE_SYS_SELECT_H
3033 #include <sys/select.h>
3034 #endif
3035 ],[],[cf_cv_sys_time_select=yes],
3036          [cf_cv_sys_time_select=no])
3037          ])
3038 AC_MSG_RESULT($cf_cv_sys_time_select)
3039 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>])
3040 ])dnl
3041 dnl ---------------------------------------------------------------------------
3042 dnl CF_TERM_HEADER version: 4 updated: 2015/04/15 19:08:48
3043 dnl --------------
3044 dnl Look for term.h, which is part of X/Open curses.  It defines the interface
3045 dnl to terminfo database.  Usually it is in the same include-path as curses.h,
3046 dnl but some packagers change this, breaking various applications.
3047 AC_DEFUN([CF_TERM_HEADER],[
3048 AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[
3049 case ${cf_cv_ncurses_header} in
3050 (*/ncurses.h|*/ncursesw.h)
3051         cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'`
3052         ;;
3053 (*)
3054         cf_term_header=term.h
3055         ;;
3056 esac
3057
3058 for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h"
3059 do
3060 AC_TRY_COMPILE([#include <stdio.h>
3061 #include <${cf_cv_ncurses_header:-curses.h}>
3062 #include <$cf_test>
3063 ],[int x = auto_left_margin],[
3064         cf_cv_term_header="$cf_test"],[
3065         cf_cv_term_header=unknown
3066         ])
3067         test "$cf_cv_term_header" != unknown && break
3068 done
3069 ])
3070
3071 # Set definitions to allow ifdef'ing to accommodate subdirectories
3072
3073 case $cf_cv_term_header in
3074 (*term.h)
3075         AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h])
3076         ;;
3077 esac
3078
3079 case $cf_cv_term_header in
3080 (ncurses/term.h)
3081         AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h])
3082         ;;
3083 (ncursesw/term.h)
3084         AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h])
3085         ;;
3086 esac
3087 ])dnl
3088 dnl ---------------------------------------------------------------------------
3089 dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32
3090 dnl ---------------
3091 dnl Define a top_builddir symbol, for applications that need an absolute path.
3092 AC_DEFUN([CF_TOP_BUILDDIR],
3093 [
3094 top_builddir=ifelse($1,,`pwd`,$1)
3095 AC_SUBST(top_builddir)
3096 ])dnl
3097 dnl ---------------------------------------------------------------------------
3098 dnl CF_TPUTS_PROTO version: 3 updated: 2015/04/17 21:26:14
3099 dnl --------------
3100 dnl Check for type of function-pointer passed to tputs.  Some old
3101 dnl implementations used functions that had different prototypes, making it
3102 dnl hard to compile portable programs using tputs.
3103 AC_DEFUN([CF_TPUTS_PROTO],[
3104 CF_CURSES_FUNCS(tputs)
3105 if test x$cf_cv_func_tputs = xyes
3106 then
3107         cf_done=no
3108         for cf_arg in int char
3109         do
3110                 for cf_ret in int void
3111                 do
3112                         if test $cf_ret = void
3113                         then
3114                                 cf_return="/* nothing */"
3115                         else
3116                                 cf_return="return value"
3117                         fi
3118                         AC_TRY_COMPILE([
3119 #include <${cf_cv_ncurses_header:-curses.h}>
3120 #include <$cf_cv_term_header>
3121
3122 static $cf_ret outc($cf_arg value) { $cf_return; }
3123 ],[
3124         tputs("hello", 0, outc);
3125         ${cf_cv_main_return:-return}(0);
3126 ],[
3127                 CF_VERBOSE([prototype $cf_ret func($cf_arg value)])
3128                 cat >>confdefs.h <<EOF
3129 #define TPUTS_ARG               $cf_arg
3130 #define TPUTS_PROTO(func,value) $cf_ret func(TPUTS_ARG value)
3131 #define TPUTS_RETURN(value)     $cf_return
3132 EOF
3133                 cf_done=yes
3134                 break
3135 ])
3136                 done
3137                 test $cf_done = yes && break
3138         done
3139 fi
3140 ])dnl
3141 dnl ---------------------------------------------------------------------------
3142 dnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00
3143 dnl --------------
3144 dnl Trim extra base X libraries added as a workaround for inconsistent library
3145 dnl dependencies returned by "new" pkg-config files.
3146 AC_DEFUN([CF_TRIM_X_LIBS],[
3147         for cf_trim_lib in Xmu Xt X11
3148         do
3149                 case "$LIBS" in
3150                 (*-l$cf_trim_lib\ *-l$cf_trim_lib*)
3151                         LIBS=`echo "$LIBS " | sed -e 's/  / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'`
3152                         CF_VERBOSE(..trimmed $LIBS)
3153                         ;;
3154                 esac
3155         done
3156 ])
3157 dnl ---------------------------------------------------------------------------
3158 dnl CF_TRY_PKG_CONFIG version: 5 updated: 2013/07/06 21:27:06
3159 dnl -----------------
3160 dnl This is a simple wrapper to use for pkg-config, for libraries which may be
3161 dnl available in that form.
3162 dnl
3163 dnl $1 = package name
3164 dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS
3165 dnl $3 = logic to use if pkg-config does not have the package
3166 AC_DEFUN([CF_TRY_PKG_CONFIG],[
3167 AC_REQUIRE([CF_PKG_CONFIG])
3168
3169 if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists $1; then
3170         CF_VERBOSE(found package $1)
3171         cf_pkgconfig_incs="`$PKG_CONFIG --cflags $1 2>/dev/null`"
3172         cf_pkgconfig_libs="`$PKG_CONFIG --libs   $1 2>/dev/null`"
3173         CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs)
3174         CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs)
3175         CF_ADD_CFLAGS($cf_pkgconfig_incs)
3176         CF_ADD_LIBS($cf_pkgconfig_libs)
3177         ifelse([$2],,:,[$2])
3178 else
3179         cf_pkgconfig_incs=
3180         cf_pkgconfig_libs=
3181         ifelse([$3],,:,[$3])
3182 fi
3183 ])
3184 dnl ---------------------------------------------------------------------------
3185 dnl CF_TRY_XOPEN_SOURCE version: 1 updated: 2011/10/30 17:09:50
3186 dnl -------------------
3187 dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
3188 dnl can define it successfully.
3189 AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
3190 AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
3191         AC_TRY_COMPILE([
3192 #include <stdlib.h>
3193 #include <string.h>
3194 #include <sys/types.h>
3195 ],[
3196 #ifndef _XOPEN_SOURCE
3197 make an error
3198 #endif],
3199         [cf_cv_xopen_source=no],
3200         [cf_save="$CPPFLAGS"
3201          CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
3202          AC_TRY_COMPILE([
3203 #include <stdlib.h>
3204 #include <string.h>
3205 #include <sys/types.h>
3206 ],[
3207 #ifdef _XOPEN_SOURCE
3208 make an error
3209 #endif],
3210         [cf_cv_xopen_source=no],
3211         [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
3212         CPPFLAGS="$cf_save"
3213         ])
3214 ])
3215
3216 if test "$cf_cv_xopen_source" != no ; then
3217         CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
3218         CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
3219         cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
3220         CF_ADD_CFLAGS($cf_temp_xopen_source)
3221 fi
3222 ])
3223 dnl ---------------------------------------------------------------------------
3224 dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
3225 dnl --------
3226 dnl Make an uppercase version of a variable
3227 dnl $1=uppercase($2)
3228 AC_DEFUN([CF_UPPER],
3229 [
3230 $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
3231 ])dnl
3232 dnl ---------------------------------------------------------------------------
3233 dnl CF_UTF8_LIB version: 8 updated: 2012/10/06 08:57:51
3234 dnl -----------
3235 dnl Check for multibyte support, and if not found, utf8 compatibility library
3236 AC_DEFUN([CF_UTF8_LIB],
3237 [
3238 AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
3239         cf_save_LIBS="$LIBS"
3240         AC_TRY_LINK([
3241 #include <stdlib.h>],[putwc(0,0);],
3242         [cf_cv_utf8_lib=yes],
3243         [CF_FIND_LINKAGE([
3244 #include <libutf8.h>],[putwc(0,0);],utf8,
3245                 [cf_cv_utf8_lib=add-on],
3246                 [cf_cv_utf8_lib=no])
3247 ])])
3248
3249 # HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
3250 # ncurses/ncursesw:
3251 if test "$cf_cv_utf8_lib" = "add-on" ; then
3252         AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h])
3253         CF_ADD_INCDIR($cf_cv_header_path_utf8)
3254         CF_ADD_LIBDIR($cf_cv_library_path_utf8)
3255         CF_ADD_LIBS($cf_cv_library_file_utf8)
3256 fi
3257 ])dnl
3258 dnl ---------------------------------------------------------------------------
3259 dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
3260 dnl ----------
3261 dnl Use AC_VERBOSE w/o the warnings
3262 AC_DEFUN([CF_VERBOSE],
3263 [test -n "$verbose" && echo "   $1" 1>&AC_FD_MSG
3264 CF_MSG_LOG([$1])
3265 ])dnl
3266 dnl ---------------------------------------------------------------------------
3267 dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
3268 dnl -------------
3269 dnl Check if type wide-character type $1 is declared, and if so, which header
3270 dnl file is needed.  The second parameter is used to set a shell variable when
3271 dnl the type is not found.  The first parameter sets a shell variable for the
3272 dnl opposite sense.
3273 AC_DEFUN([CF_WCHAR_TYPE],
3274 [
3275 # This is needed on Tru64 5.0 to declare $1
3276 AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[
3277 AC_TRY_COMPILE([
3278 #include <stdlib.h>
3279 #include <stdarg.h>
3280 #include <stdio.h>
3281 #ifdef HAVE_LIBUTF8_H
3282 #include <libutf8.h>
3283 #endif],
3284         [$1 state],
3285         [cf_cv_$1=no],
3286         [AC_TRY_COMPILE([
3287 #include <stdlib.h>
3288 #include <stdarg.h>
3289 #include <stdio.h>
3290 #include <wchar.h>
3291 #ifdef HAVE_LIBUTF8_H
3292 #include <libutf8.h>
3293 #endif],
3294         [$1 value],
3295         [cf_cv_$1=yes],
3296         [cf_cv_$1=unknown])])])
3297
3298 if test "$cf_cv_$1" = yes ; then
3299         AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h])
3300         NEED_WCHAR_H=1
3301 fi
3302
3303 ifelse([$2],,,[
3304 # if we do not find $1 in either place, use substitution to provide a fallback.
3305 if test "$cf_cv_$1" = unknown ; then
3306         $2=1
3307 fi
3308 ])
3309 ifelse($3,,,[
3310 # if we find $1 in either place, use substitution to provide a fallback.
3311 if test "$cf_cv_$1" != unknown ; then
3312         $3=1
3313 fi
3314 ])
3315 ])dnl
3316 dnl ---------------------------------------------------------------------------
3317 dnl CF_WITH_CURSES_DIR version: 3 updated: 2010/11/20 17:02:38
3318 dnl ------------------
3319 dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses
3320 dnl libraries.
3321 AC_DEFUN([CF_WITH_CURSES_DIR],[
3322
3323 AC_MSG_CHECKING(for specific curses-directory)
3324 AC_ARG_WITH(curses-dir,
3325         [  --with-curses-dir=DIR   directory in which (n)curses is installed],
3326         [cf_cv_curses_dir=$withval],
3327         [cf_cv_curses_dir=no])
3328 AC_MSG_RESULT($cf_cv_curses_dir)
3329
3330 if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" )
3331 then
3332         CF_PATH_SYNTAX(withval)
3333         if test -d "$cf_cv_curses_dir"
3334         then
3335                 CF_ADD_INCDIR($cf_cv_curses_dir/include)
3336                 CF_ADD_LIBDIR($cf_cv_curses_dir/lib)
3337         fi
3338 fi
3339 ])dnl
3340 dnl ---------------------------------------------------------------------------
3341 dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
3342 dnl ----------------
3343 dnl Configure-option for dbmalloc.  The optional parameter is used to override
3344 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
3345 AC_DEFUN([CF_WITH_DBMALLOC],[
3346 CF_NO_LEAKS_OPTION(dbmalloc,
3347         [  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
3348         [USE_DBMALLOC])
3349
3350 if test "$with_dbmalloc" = yes ; then
3351         AC_CHECK_HEADER(dbmalloc.h,
3352                 [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
3353 fi
3354 ])dnl
3355 dnl ---------------------------------------------------------------------------
3356 dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
3357 dnl ---------------
3358 dnl Configure-option for dmalloc.  The optional parameter is used to override
3359 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
3360 AC_DEFUN([CF_WITH_DMALLOC],[
3361 CF_NO_LEAKS_OPTION(dmalloc,
3362         [  --with-dmalloc          test: use Gray Watson's dmalloc library],
3363         [USE_DMALLOC])
3364
3365 if test "$with_dmalloc" = yes ; then
3366         AC_CHECK_HEADER(dmalloc.h,
3367                 [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
3368 fi
3369 ])dnl
3370 dnl ---------------------------------------------------------------------------
3371 dnl CF_WITH_NCURSES_ETC version: 5 updated: 2016/02/20 19:23:20
3372 dnl -------------------
3373 dnl Use this macro for programs which use any variant of "curses", e.g.,
3374 dnl "ncurses", and "PDCurses".  Programs that can use curses and some unrelated
3375 dnl library (such as slang) should use a "--with-screen=XXX" option.
3376 dnl
3377 dnl This does not use AC_DEFUN, because that would tell autoconf to run each
3378 dnl of the macros inside this one - before this macro.
3379 define([CF_WITH_NCURSES_ETC],[
3380 CF_WITH_CURSES_DIR
3381
3382 cf_cv_screen=curses
3383
3384 AC_MSG_CHECKING(for specified curses library type)
3385 AC_ARG_WITH(screen,
3386         [  --with-screen=XXX       use specified curses-libraries],
3387         [cf_cv_screen=$withval],[
3388
3389 AC_ARG_WITH(ncursesw,
3390         [  --with-ncursesw         use wide ncurses-libraries],
3391         [cf_cv_screen=ncursesw],[
3392
3393 AC_ARG_WITH(ncurses,
3394         [  --with-ncurses          use ncurses-libraries],
3395         [cf_cv_screen=ncurses],[
3396
3397 AC_ARG_WITH(pdcurses,
3398         [  --with-pdcurses         compile/link with pdcurses X11 library],
3399         [cf_cv_screen=pdcurses],[
3400
3401 AC_ARG_WITH(curses-colr,
3402         [  --with-curses-colr      compile/link with HPUX 10.x color-curses],
3403         [cf_cv_screen=curses_colr],[
3404
3405 AC_ARG_WITH(curses-5lib,
3406         [  --with-curses-5lib      compile/link with SunOS 5lib curses],
3407         [cf_cv_screen=curses_5lib])])])])])])
3408
3409 AC_MSG_RESULT($cf_cv_screen)
3410
3411 case $cf_cv_screen in
3412 (curses|curses_*)
3413         CF_CURSES_CONFIG
3414         ;;
3415 (ncursesw*)
3416         CF_UTF8_LIB
3417         CF_NCURSES_CONFIG($cf_cv_screen)
3418         ;;
3419 (ncurses*)
3420         CF_NCURSES_CONFIG($cf_cv_screen)
3421         ;;
3422 (pdcurses)
3423         CF_PDCURSES_X11
3424         ;;
3425 (*)
3426         AC_MSG_ERROR(unexpected screen-value: $cf_cv_screen)
3427         ;;
3428 esac
3429
3430 CF_NCURSES_PTHREADS($cf_cv_screen)
3431
3432 ])dnl
3433 dnl ---------------------------------------------------------------------------
3434 dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
3435 dnl ----------------
3436 AC_DEFUN([CF_WITH_VALGRIND],[
3437 CF_NO_LEAKS_OPTION(valgrind,
3438         [  --with-valgrind         test: use valgrind],
3439         [USE_VALGRIND])
3440 ])dnl
3441 dnl ---------------------------------------------------------------------------
3442 dnl CF_XOPEN_CURSES version: 13 updated: 2015/12/12 20:59:52
3443 dnl ---------------
3444 dnl Test if we should define X/Open source for curses, needed on Digital Unix
3445 dnl 4.x, to see the extended functions, but breaks on IRIX 6.x.
3446 dnl
3447 dnl The getbegyx() check is needed for HPUX, which omits legacy macros such
3448 dnl as getbegy().  The latter is better design, but the former is standard.
3449 AC_DEFUN([CF_XOPEN_CURSES],
3450 [
3451 AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl
3452 AC_CACHE_CHECK(definition to turn on extended curses functions,cf_cv_need_xopen_extension,[
3453 cf_cv_need_xopen_extension=unknown
3454 AC_TRY_LINK([
3455 #include <stdlib.h>
3456 #include <${cf_cv_ncurses_header:-curses.h}>],[
3457 #if defined(NCURSES_VERSION_PATCH)
3458 #if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403)
3459         make an error
3460 #endif
3461 #endif
3462 #ifdef NCURSES_VERSION
3463         cchar_t check;
3464         int check2 = curs_set((int)sizeof(check));
3465 #endif
3466         long x = winnstr(stdscr, "", 0);
3467         int x1, y1;
3468         getbegyx(stdscr, y1, x1)],
3469         [cf_cv_need_xopen_extension=none],
3470         [
3471         for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR
3472         do
3473                 AC_TRY_LINK([
3474 #define $cf_try_xopen_extension 1
3475 #include <stdlib.h>
3476 #include <${cf_cv_ncurses_header:-curses.h}>],[
3477 #ifdef NCURSES_VERSION
3478                 cchar_t check;
3479                 int check2 = curs_set((int)sizeof(check));
3480 #endif
3481                 long x = winnstr(stdscr, "", 0);
3482                 int x1, y1;
3483                 getbegyx(stdscr, y1, x1)],
3484                 [cf_cv_need_xopen_extension=$cf_try_xopen_extension; break])
3485         done
3486         ])
3487 ])
3488
3489 case $cf_cv_need_xopen_extension in
3490 (*_*)
3491         CPPFLAGS="$CPPFLAGS -D$cf_cv_need_xopen_extension"
3492         ;;
3493 esac
3494
3495 ])dnl
3496 dnl ---------------------------------------------------------------------------
3497 dnl CF_XOPEN_SOURCE version: 52 updated: 2016/08/27 12:21:42
3498 dnl ---------------
3499 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
3500 dnl or adapt to the vendor's definitions to get equivalent functionality,
3501 dnl without losing the common non-POSIX features.
3502 dnl
3503 dnl Parameters:
3504 dnl     $1 is the nominal value for _XOPEN_SOURCE
3505 dnl     $2 is the nominal value for _POSIX_C_SOURCE
3506 AC_DEFUN([CF_XOPEN_SOURCE],[
3507 AC_REQUIRE([AC_CANONICAL_HOST])
3508
3509 cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
3510 cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
3511 cf_xopen_source=
3512
3513 case $host_os in
3514 (aix[[4-7]]*)
3515         cf_xopen_source="-D_ALL_SOURCE"
3516         ;;
3517 (msys)
3518         cf_XOPEN_SOURCE=600
3519         ;;
3520 (darwin[[0-8]].*)
3521         cf_xopen_source="-D_APPLE_C_SOURCE"
3522         ;;
3523 (darwin*)
3524         cf_xopen_source="-D_DARWIN_C_SOURCE"
3525         cf_XOPEN_SOURCE=
3526         ;;
3527 (freebsd*|dragonfly*)
3528         # 5.x headers associate
3529         #       _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
3530         #       _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
3531         cf_POSIX_C_SOURCE=200112L
3532         cf_XOPEN_SOURCE=600
3533         cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
3534         ;;
3535 (hpux11*)
3536         cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
3537         ;;
3538 (hpux*)
3539         cf_xopen_source="-D_HPUX_SOURCE"
3540         ;;
3541 (irix[[56]].*)
3542         cf_xopen_source="-D_SGI_SOURCE"
3543         cf_XOPEN_SOURCE=
3544         ;;
3545 (linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
3546         CF_GNU_SOURCE
3547         ;;
3548 (minix*)
3549         cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
3550         ;;
3551 (mirbsd*)
3552         # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
3553         cf_XOPEN_SOURCE=
3554         CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
3555         ;;
3556 (netbsd*)
3557         cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
3558         ;;
3559 (openbsd[[4-9]]*)
3560         # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
3561         cf_xopen_source="-D_BSD_SOURCE"
3562         cf_XOPEN_SOURCE=600
3563         ;;
3564 (openbsd*)
3565         # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
3566         ;;
3567 (osf[[45]]*)
3568         cf_xopen_source="-D_OSF_SOURCE"
3569         ;;
3570 (nto-qnx*)
3571         cf_xopen_source="-D_QNX_SOURCE"
3572         ;;
3573 (sco*)
3574         # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
3575         ;;
3576 (solaris2.*)
3577         cf_xopen_source="-D__EXTENSIONS__"
3578         cf_cv_xopen_source=broken
3579         ;;
3580 (sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
3581         cf_XOPEN_SOURCE=
3582         cf_POSIX_C_SOURCE=
3583         ;;
3584 (*)
3585         CF_TRY_XOPEN_SOURCE
3586         CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
3587         ;;
3588 esac
3589
3590 if test -n "$cf_xopen_source" ; then
3591         CF_ADD_CFLAGS($cf_xopen_source,true)
3592 fi
3593
3594 dnl In anything but the default case, we may have system-specific setting
3595 dnl which is still not guaranteed to provide all of the entrypoints that
3596 dnl _XOPEN_SOURCE would yield.
3597 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
3598         AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
3599         AC_TRY_COMPILE([#include <stdlib.h>],[
3600 #ifndef _XOPEN_SOURCE
3601 make an error
3602 #endif],
3603         [cf_XOPEN_SOURCE_set=yes],
3604         [cf_XOPEN_SOURCE_set=no])
3605         AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
3606         if test $cf_XOPEN_SOURCE_set = yes
3607         then
3608                 AC_TRY_COMPILE([#include <stdlib.h>],[
3609 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
3610 make an error
3611 #endif],
3612                 [cf_XOPEN_SOURCE_set_ok=yes],
3613                 [cf_XOPEN_SOURCE_set_ok=no])
3614                 if test $cf_XOPEN_SOURCE_set_ok = no
3615                 then
3616                         AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
3617                 fi
3618         else
3619                 CF_TRY_XOPEN_SOURCE
3620         fi
3621 fi
3622 ])
3623 dnl ---------------------------------------------------------------------------
3624 dnl CF_X_ATHENA version: 23 updated: 2015/04/12 15:39:00
3625 dnl -----------
3626 dnl Check for Xaw (Athena) libraries
3627 dnl
3628 dnl Sets $cf_x_athena according to the flavor of Xaw which is used.
3629 AC_DEFUN([CF_X_ATHENA],
3630 [
3631 cf_x_athena=${cf_x_athena:-Xaw}
3632
3633 AC_MSG_CHECKING(if you want to link with Xaw 3d library)
3634 withval=
3635 AC_ARG_WITH(Xaw3d,
3636         [  --with-Xaw3d            link with Xaw 3d library])
3637 if test "$withval" = yes ; then
3638         cf_x_athena=Xaw3d
3639         AC_MSG_RESULT(yes)
3640 else
3641         AC_MSG_RESULT(no)
3642 fi
3643
3644 AC_MSG_CHECKING(if you want to link with Xaw 3d xft library)
3645 withval=
3646 AC_ARG_WITH(Xaw3dxft,
3647         [  --with-Xaw3dxft         link with Xaw 3d xft library])
3648 if test "$withval" = yes ; then
3649         cf_x_athena=Xaw3dxft
3650         AC_MSG_RESULT(yes)
3651 else
3652         AC_MSG_RESULT(no)
3653 fi
3654
3655 AC_MSG_CHECKING(if you want to link with neXT Athena library)
3656 withval=
3657 AC_ARG_WITH(neXtaw,
3658         [  --with-neXtaw           link with neXT Athena library])
3659 if test "$withval" = yes ; then
3660         cf_x_athena=neXtaw
3661         AC_MSG_RESULT(yes)
3662 else
3663         AC_MSG_RESULT(no)
3664 fi
3665
3666 AC_MSG_CHECKING(if you want to link with Athena-Plus library)
3667 withval=
3668 AC_ARG_WITH(XawPlus,
3669         [  --with-XawPlus          link with Athena-Plus library])
3670 if test "$withval" = yes ; then
3671         cf_x_athena=XawPlus
3672         AC_MSG_RESULT(yes)
3673 else
3674         AC_MSG_RESULT(no)
3675 fi
3676
3677 cf_x_athena_lib=""
3678
3679 if test "$PKG_CONFIG" != none ; then
3680         cf_athena_list=
3681         test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6"
3682         for cf_athena_pkg in \
3683                 $cf_athena_list \
3684                 ${cf_x_athena} \
3685                 ${cf_x_athena}-devel \
3686                 lib${cf_x_athena} \
3687                 lib${cf_x_athena}-devel
3688         do
3689                 CF_TRY_PKG_CONFIG($cf_athena_pkg,[
3690                         cf_x_athena_lib="$cf_pkgconfig_libs"
3691                         CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
3692                         AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
3693
3694                         CF_TRIM_X_LIBS
3695
3696 AC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[
3697 AC_TRY_LINK([
3698 #include <X11/Xmu/CharSet.h>
3699 ],[
3700 int check = XmuCompareISOLatin1("big", "small")
3701 ],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])])
3702
3703                         if test "$cf_cv_xaw_compat" = no
3704                         then
3705                                 # workaround for broken ".pc" files...
3706                                 case "$cf_x_athena_lib" in
3707                                 (*-lXmu*)
3708                                         ;;
3709                                 (*)
3710                                         CF_VERBOSE(work around broken package)
3711                                         cf_save_xmu="$LIBS"
3712                                         cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'`
3713                                         CF_TRY_PKG_CONFIG(xmu,[
3714                                                         LIBS="$cf_save_xmu"
3715                                                         CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs)
3716                                                 ],[
3717                                                         CF_ADD_LIB_AFTER($cf_first_lib,-lXmu)
3718                                                 ])
3719                                         CF_TRIM_X_LIBS
3720                                         ;;
3721                                 esac
3722                         fi
3723
3724                         break])
3725         done
3726 fi
3727
3728 if test -z "$cf_x_athena_lib" ; then
3729         CF_X_EXT
3730         CF_X_TOOLKIT
3731         CF_X_ATHENA_CPPFLAGS($cf_x_athena)
3732         CF_X_ATHENA_LIBS($cf_x_athena)
3733 fi
3734 ])dnl
3735 dnl ---------------------------------------------------------------------------
3736 dnl CF_X_ATHENA_CPPFLAGS version: 5 updated: 2010/05/26 17:35:30
3737 dnl --------------------
3738 dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
3739 dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
3740 AC_DEFUN([CF_X_ATHENA_CPPFLAGS],
3741 [
3742 cf_x_athena_root=ifelse([$1],,Xaw,[$1])
3743 cf_x_athena_inc=""
3744
3745 for cf_path in default \
3746         /usr/contrib/X11R6 \
3747         /usr/contrib/X11R5 \
3748         /usr/lib/X11R5 \
3749         /usr/local
3750 do
3751         if test -z "$cf_x_athena_inc" ; then
3752                 cf_save="$CPPFLAGS"
3753                 cf_test=X11/$cf_x_athena_root/SimpleMenu.h
3754                 if test $cf_path != default ; then
3755                         CPPFLAGS="$cf_save -I$cf_path/include"
3756                         AC_MSG_CHECKING(for $cf_test in $cf_path)
3757                 else
3758                         AC_MSG_CHECKING(for $cf_test)
3759                 fi
3760                 AC_TRY_COMPILE([
3761 #include <X11/Intrinsic.h>
3762 #include <$cf_test>],[],
3763                         [cf_result=yes],
3764                         [cf_result=no])
3765                 AC_MSG_RESULT($cf_result)
3766                 if test "$cf_result" = yes ; then
3767                         cf_x_athena_inc=$cf_path
3768                         break
3769                 else
3770                         CPPFLAGS="$cf_save"
3771                 fi
3772         fi
3773 done
3774
3775 if test -z "$cf_x_athena_inc" ; then
3776         AC_MSG_WARN(
3777 [Unable to successfully find Athena header files with test program])
3778 elif test "$cf_x_athena_inc" != default ; then
3779         CPPFLAGS="$CPPFLAGS -I$cf_x_athena_inc"
3780 fi
3781 ])
3782 dnl ---------------------------------------------------------------------------
3783 dnl CF_X_ATHENA_LIBS version: 12 updated: 2011/07/17 19:55:02
3784 dnl ----------------
3785 dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of
3786 dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw.
3787 AC_DEFUN([CF_X_ATHENA_LIBS],
3788 [AC_REQUIRE([CF_X_TOOLKIT])
3789 cf_x_athena_root=ifelse([$1],,Xaw,[$1])
3790 cf_x_athena_lib=""
3791
3792 for cf_path in default \
3793         /usr/contrib/X11R6 \
3794         /usr/contrib/X11R5 \
3795         /usr/lib/X11R5 \
3796         /usr/local
3797 do
3798         for cf_lib in \
3799                 ${cf_x_athena_root} \
3800                 ${cf_x_athena_root}7 \
3801                 ${cf_x_athena_root}6
3802         do
3803         for cf_libs in \
3804                 "-l$cf_lib -lXmu" \
3805                 "-l$cf_lib -lXpm -lXmu" \
3806                 "-l${cf_lib}_s -lXmu_s"
3807         do
3808                 if test -z "$cf_x_athena_lib" ; then
3809                         cf_save="$LIBS"
3810                         cf_test=XawSimpleMenuAddGlobalActions
3811                         if test $cf_path != default ; then
3812                                 CF_ADD_LIBS(-L$cf_path/lib $cf_libs)
3813                                 AC_MSG_CHECKING(for $cf_libs in $cf_path)
3814                         else
3815                                 CF_ADD_LIBS($cf_libs)
3816                                 AC_MSG_CHECKING(for $cf_test in $cf_libs)
3817                         fi
3818                         AC_TRY_LINK([
3819 #include <X11/Intrinsic.h>
3820 #include <X11/$cf_x_athena_root/SimpleMenu.h>
3821 ],[
3822 $cf_test((XtAppContext) 0)],
3823                                 [cf_result=yes],
3824                                 [cf_result=no])
3825                         AC_MSG_RESULT($cf_result)
3826                         if test "$cf_result" = yes ; then
3827                                 cf_x_athena_lib="$cf_libs"
3828                                 break
3829                         fi
3830                         LIBS="$cf_save"
3831                 fi
3832         done # cf_libs
3833                 test -n "$cf_x_athena_lib" && break
3834         done # cf_lib
3835 done
3836
3837 if test -z "$cf_x_athena_lib" ; then
3838         AC_MSG_ERROR(
3839 [Unable to successfully link Athena library (-l$cf_x_athena_root) with test program])
3840 fi
3841
3842 CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena)
3843 AC_DEFINE_UNQUOTED($cf_x_athena_LIBS)
3844 ])
3845 dnl ---------------------------------------------------------------------------
3846 dnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05
3847 dnl --------
3848 AC_DEFUN([CF_X_EXT],[
3849 CF_TRY_PKG_CONFIG(Xext,,[
3850         AC_CHECK_LIB(Xext,XextCreateExtension,
3851                 [CF_ADD_LIB(Xext)])])
3852 ])dnl
3853 dnl ---------------------------------------------------------------------------
3854 dnl CF_X_TOOLKIT version: 23 updated: 2015/04/12 15:39:00
3855 dnl ------------
3856 dnl Check for X Toolkit libraries
3857 AC_DEFUN([CF_X_TOOLKIT],
3858 [
3859 AC_REQUIRE([AC_PATH_XTRA])
3860 AC_REQUIRE([CF_CHECK_CACHE])
3861
3862 # OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new), and (and
3863 # in some cases has installed dummy files in the former, other cases replaced
3864 # it with a link to the new location).  This complicates the configure script.
3865 # Check for that pitfall, and recover using pkg-config
3866 #
3867 # If none of these are set, the configuration is almost certainly broken.
3868 if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}"
3869 then
3870         CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)])
3871         CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)])
3872         CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)])
3873         CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)])
3874 fi
3875
3876 cf_have_X_LIBS=no
3877
3878 CF_TRY_PKG_CONFIG(xt,[
3879
3880         case "x$LIBS" in
3881         (*-lX11*)
3882                 ;;
3883         (*)
3884 # we have an "xt" package, but it may omit Xt's dependency on X11
3885 AC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[
3886 AC_TRY_LINK([
3887 #include <X11/Xlib.h>
3888 ],[
3889         int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0);
3890         int rc2 = XClearWindow((Display*) 0, (Window) 0);
3891         int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0);
3892         int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0);
3893 ],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])])
3894                 if test "$cf_cv_xt_x11_compat" = no
3895                 then
3896                         CF_VERBOSE(work around broken X11 dependency)
3897                         # 2010/11/19 - good enough until a working Xt on Xcb is delivered.
3898                         CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)])
3899                 fi
3900                 ;;
3901         esac
3902
3903 AC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[
3904 AC_TRY_LINK([
3905 #include <X11/Shell.h>
3906 ],[int num = IceConnectionNumber(0)
3907 ],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])])
3908
3909         if test "$cf_cv_xt_ice_compat" = no
3910         then
3911                 # workaround for broken ".pc" files used for X Toolkit.
3912                 case "x$X_PRE_LIBS" in
3913                 (*-lICE*)
3914                         case "x$LIBS" in
3915                         (*-lICE*)
3916                                 ;;
3917                         (*)
3918                                 CF_VERBOSE(work around broken ICE dependency)
3919                                 CF_TRY_PKG_CONFIG(ice,
3920                                         [CF_TRY_PKG_CONFIG(sm)],
3921                                         [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)])
3922                                 ;;
3923                         esac
3924                         ;;
3925                 esac
3926         fi
3927
3928         cf_have_X_LIBS=yes
3929 ],[
3930
3931         LDFLAGS="$X_LIBS $LDFLAGS"
3932         CF_CHECK_CFLAGS($X_CFLAGS)
3933
3934         AC_CHECK_FUNC(XOpenDisplay,,[
3935         AC_CHECK_LIB(X11,XOpenDisplay,
3936                 [CF_ADD_LIB(X11)],,
3937                 [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])])
3938
3939         AC_CHECK_FUNC(XtAppInitialize,,[
3940         AC_CHECK_LIB(Xt, XtAppInitialize,
3941                 [AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library])
3942                  cf_have_X_LIBS=Xt
3943                  LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS"],,
3944                 [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])])
3945 ])
3946
3947 if test $cf_have_X_LIBS = no ; then
3948         AC_MSG_WARN(
3949 [Unable to successfully link X Toolkit library (-lXt) with
3950 test program.  You will have to check and add the proper libraries by hand
3951 to makefile.])
3952 fi
3953 ])dnl
3954 dnl ---------------------------------------------------------------------------
3955 dnl CF__CURSES_HEAD version: 2 updated: 2010/10/23 15:54:49
3956 dnl ---------------
3957 dnl Define a reusable chunk which includes <curses.h> and <term.h> when they
3958 dnl are both available.
3959 define([CF__CURSES_HEAD],[
3960 #ifdef HAVE_XCURSES
3961 #include <xcurses.h>
3962 char * XCursesProgramName = "test";
3963 #else
3964 #include <${cf_cv_ncurses_header:-curses.h}>
3965 #if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H)
3966 #include <ncursesw/term.h>
3967 #elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H)
3968 #include <ncurses/term.h>
3969 #elif defined(HAVE_TERM_H)
3970 #include <term.h>
3971 #endif
3972 #endif
3973 ])