]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - contrib/byacc/aclocal.m4
MFC r368207,368607:
[FreeBSD/stable/10.git] / contrib / byacc / aclocal.m4
1 dnl $Id: aclocal.m4,v 1.37 2014/10/04 16:40:06 tom Exp $
2 dnl Macros for byacc configure script (Thomas E. Dickey)
3 dnl ---------------------------------------------------------------------------
4 dnl Copyright 2004-2013,2014 Thomas E. Dickey
5 dnl 
6 dnl Permission is hereby granted, free of charge, to any person obtaining a
7 dnl copy of this software and associated documentation files (the
8 dnl "Software"), to deal in the Software without restriction, including
9 dnl without limitation the rights to use, copy, modify, merge, publish,
10 dnl distribute, distribute with modifications, sublicense, and/or sell
11 dnl copies of the Software, and to permit persons to whom the Software is
12 dnl furnished to do so, subject to the following conditions:
13 dnl 
14 dnl The above copyright notice and this permission notice shall be included
15 dnl in all copies or portions of the Software.
16 dnl 
17 dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19 dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20 dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
21 dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
22 dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
23 dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 dnl 
25 dnl Except as contained in this notice, the name(s) of the above copyright
26 dnl holders shall not be used in advertising or otherwise to promote the
27 dnl sale, use or other dealings in this Software without prior written
28 dnl authorization.
29 dnl ---------------------------------------------------------------------------
30 dnl ---------------------------------------------------------------------------
31 dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
32 dnl ------------------
33 dnl Conditionally generate script according to whether we're using a given autoconf.
34 dnl
35 dnl $1 = version to compare against
36 dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
37 dnl $3 = code to use if AC_ACVERSION is older than $1.
38 define([CF_ACVERSION_CHECK],
39 [
40 ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
41 ifdef([m4_version_compare],
42 [m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
43 [CF_ACVERSION_COMPARE(
44 AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
45 AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
46 dnl ---------------------------------------------------------------------------
47 dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
48 dnl --------------------
49 dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
50 dnl                      MAJOR2, MINOR2, TERNARY2,
51 dnl                      PRINTABLE2, not FOUND, FOUND)
52 define([CF_ACVERSION_COMPARE],
53 [ifelse(builtin([eval], [$2 < $5]), 1,
54 [ifelse([$8], , ,[$8])],
55 [ifelse([$9], , ,[$9])])])dnl
56 dnl ---------------------------------------------------------------------------
57 dnl CF_ADD_CFLAGS version: 11 updated: 2014/07/22 05:32:57
58 dnl -------------
59 dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
60 dnl The second parameter if given makes this macro verbose.
61 dnl
62 dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
63 dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
64 dnl confused by the quotes (which require backslashes to keep them usable).
65 AC_DEFUN([CF_ADD_CFLAGS],
66 [
67 cf_fix_cppflags=no
68 cf_new_cflags=
69 cf_new_cppflags=
70 cf_new_extra_cppflags=
71
72 for cf_add_cflags in $1
73 do
74 case $cf_fix_cppflags in
75 no)
76         case $cf_add_cflags in #(vi
77         -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
78                 case $cf_add_cflags in
79                 -D*)
80                         cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
81
82                         test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
83                                 && test -z "${cf_tst_cflags}" \
84                                 && cf_fix_cppflags=yes
85
86                         if test $cf_fix_cppflags = yes ; then
87                                 cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
88                                 continue
89                         elif test "${cf_tst_cflags}" = "\"'" ; then
90                                 cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
91                                 continue
92                         fi
93                         ;;
94                 esac
95                 case "$CPPFLAGS" in
96                 *$cf_add_cflags) #(vi
97                         ;;
98                 *) #(vi
99                         case $cf_add_cflags in #(vi
100                         -D*)
101                                 cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
102                                 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
103                                 ;;
104                         esac
105                         cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
106                         ;;
107                 esac
108                 ;;
109         *)
110                 cf_new_cflags="$cf_new_cflags $cf_add_cflags"
111                 ;;
112         esac
113         ;;
114 yes)
115         cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
116
117         cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'`
118
119         test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
120                 && test -z "${cf_tst_cflags}" \
121                 && cf_fix_cppflags=no
122         ;;
123 esac
124 done
125
126 if test -n "$cf_new_cflags" ; then
127         ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
128         CFLAGS="$CFLAGS $cf_new_cflags"
129 fi
130
131 if test -n "$cf_new_cppflags" ; then
132         ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
133         CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
134 fi
135
136 if test -n "$cf_new_extra_cppflags" ; then
137         ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
138         EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
139 fi
140
141 AC_SUBST(EXTRA_CPPFLAGS)
142
143 ])dnl
144 dnl ---------------------------------------------------------------------------
145 dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
146 dnl --------------
147 dnl Allow user to disable a normally-on option.
148 AC_DEFUN([CF_ARG_DISABLE],
149 [CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
150 dnl ---------------------------------------------------------------------------
151 dnl CF_ARG_OPTION version: 4 updated: 2010/05/26 05:38:42
152 dnl -------------
153 dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
154 dnl values.
155 dnl
156 dnl Parameters:
157 dnl $1 = option name
158 dnl $2 = help-string
159 dnl $3 = action to perform if option is not default
160 dnl $4 = action if perform if option is default
161 dnl $5 = default option value (either 'yes' or 'no')
162 AC_DEFUN([CF_ARG_OPTION],
163 [AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
164   if test "$enableval" != "$5" ; then
165 ifelse([$3],,[    :]dnl
166 ,[    $3]) ifelse([$4],,,[
167   else
168     $4])
169   fi],[enableval=$5 ifelse([$4],,,[
170   $4
171 ])dnl
172   ])])dnl
173 dnl ---------------------------------------------------------------------------
174 dnl CF_CC_ENV_FLAGS version: 1 updated: 2012/10/03 05:25:49
175 dnl ---------------
176 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
177 dnl into CC.  This will not help with broken scripts that wrap the compiler with
178 dnl options, but eliminates a more common category of user confusion.
179 AC_DEFUN([CF_CC_ENV_FLAGS],
180 [
181 # This should have been defined by AC_PROG_CC
182 : ${CC:=cc}
183
184 AC_MSG_CHECKING(\$CC variable)
185 case "$CC" in #(vi
186 *[[\ \  ]]-[[IUD]]*)
187         AC_MSG_RESULT(broken)
188         AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options)
189         # humor him...
190         cf_flags=`echo "$CC" | sed -e 's/^[[^   ]]*[[   ]]//'`
191         CC=`echo "$CC" | sed -e 's/[[   ]].*//'`
192         CF_ADD_CFLAGS($cf_flags)
193         ;;
194 *)
195         AC_MSG_RESULT(ok)
196         ;;
197 esac
198 ])dnl
199 dnl ---------------------------------------------------------------------------
200 dnl CF_CHECK_CACHE version: 12 updated: 2012/10/02 20:55:03
201 dnl --------------
202 dnl Check if we're accidentally using a cache from a different machine.
203 dnl Derive the system name, as a check for reusing the autoconf cache.
204 dnl
205 dnl If we've packaged config.guess and config.sub, run that (since it does a
206 dnl better job than uname).  Normally we'll use AC_CANONICAL_HOST, but allow
207 dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
208 dnl which is useful in cross-compiles.
209 dnl
210 dnl Note: we would use $ac_config_sub, but that is one of the places where
211 dnl autoconf 2.5x broke compatibility with autoconf 2.13
212 AC_DEFUN([CF_CHECK_CACHE],
213 [
214 if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
215         ifelse([$1],,[AC_CANONICAL_HOST],[$1])
216         system_name="$host_os"
217 else
218         system_name="`(uname -s -r) 2>/dev/null`"
219         if test -z "$system_name" ; then
220                 system_name="`(hostname) 2>/dev/null`"
221         fi
222 fi
223 test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
224 AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
225
226 test -z "$system_name" && system_name="$cf_cv_system_name"
227 test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
228
229 if test ".$system_name" != ".$cf_cv_system_name" ; then
230         AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
231         AC_MSG_ERROR("Please remove config.cache and try again.")
232 fi
233 ])dnl
234 dnl ---------------------------------------------------------------------------
235 dnl CF_CLANG_COMPILER version: 2 updated: 2013/11/19 19:23:35
236 dnl -----------------
237 dnl Check if the given compiler is really clang.  clang's C driver defines
238 dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
239 dnl not ignore some gcc options.
240 dnl
241 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
242 dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
243 dnl the wrappers for gcc and g++ warnings.
244 dnl
245 dnl $1 = GCC (default) or GXX
246 dnl $2 = CLANG_COMPILER (default)
247 dnl $3 = CFLAGS (default) or CXXFLAGS
248 AC_DEFUN([CF_CLANG_COMPILER],[
249 ifelse([$2],,CLANG_COMPILER,[$2])=no
250
251 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
252         AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
253         cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
254         ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -Qunused-arguments"
255         AC_TRY_COMPILE([],[
256 #ifdef __clang__
257 #else
258 make an error
259 #endif
260 ],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
261 cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
262 ],[])
263         ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
264         AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
265 fi
266 ])
267 dnl ---------------------------------------------------------------------------
268 dnl CF_DISABLE_ECHO version: 12 updated: 2012/10/06 16:30:28
269 dnl ---------------
270 dnl You can always use "make -n" to see the actual options, but it's hard to
271 dnl pick out/analyze warning messages when the compile-line is long.
272 dnl
273 dnl Sets:
274 dnl     ECHO_LT - symbol to control if libtool is verbose
275 dnl     ECHO_LD - symbol to prefix "cc -o" lines
276 dnl     RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
277 dnl     SHOW_CC - symbol to put before explicit "cc -c" lines
278 dnl     ECHO_CC - symbol to put before any "cc" line
279 dnl
280 AC_DEFUN([CF_DISABLE_ECHO],[
281 AC_MSG_CHECKING(if you want to see long compiling messages)
282 CF_ARG_DISABLE(echo,
283         [  --disable-echo          do not display "compiling" commands],
284         [
285     ECHO_LT='--silent'
286     ECHO_LD='@echo linking [$]@;'
287     RULE_CC='@echo compiling [$]<'
288     SHOW_CC='@echo compiling [$]@'
289     ECHO_CC='@'
290 ],[
291     ECHO_LT=''
292     ECHO_LD=''
293     RULE_CC=''
294     SHOW_CC=''
295     ECHO_CC=''
296 ])
297 AC_MSG_RESULT($enableval)
298 AC_SUBST(ECHO_LT)
299 AC_SUBST(ECHO_LD)
300 AC_SUBST(RULE_CC)
301 AC_SUBST(SHOW_CC)
302 AC_SUBST(ECHO_CC)
303 ])dnl
304 dnl ---------------------------------------------------------------------------
305 dnl CF_DISABLE_LEAKS version: 7 updated: 2012/10/02 20:55:03
306 dnl ----------------
307 dnl Combine no-leak checks with the libraries or tools that are used for the
308 dnl checks.
309 AC_DEFUN([CF_DISABLE_LEAKS],[
310
311 AC_REQUIRE([CF_WITH_DMALLOC])
312 AC_REQUIRE([CF_WITH_DBMALLOC])
313 AC_REQUIRE([CF_WITH_VALGRIND])
314
315 AC_MSG_CHECKING(if you want to perform memory-leak testing)
316 AC_ARG_ENABLE(leaks,
317         [  --disable-leaks         test: free permanent memory, analyze leaks],
318         [if test "x$enableval" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi],
319         : ${with_no_leaks:=no})
320 AC_MSG_RESULT($with_no_leaks)
321
322 if test "$with_no_leaks" = yes ; then
323         AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
324         AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
325 fi
326 ])dnl
327 dnl ---------------------------------------------------------------------------
328 dnl CF_GCC_ATTRIBUTES version: 16 updated: 2012/10/02 20:55:03
329 dnl -----------------
330 dnl Test for availability of useful gcc __attribute__ directives to quiet
331 dnl compiler warnings.  Though useful, not all are supported -- and contrary
332 dnl to documentation, unrecognized directives cause older compilers to barf.
333 AC_DEFUN([CF_GCC_ATTRIBUTES],
334 [
335 if test "$GCC" = yes
336 then
337 cat > conftest.i <<EOF
338 #ifndef GCC_PRINTF
339 #define GCC_PRINTF 0
340 #endif
341 #ifndef GCC_SCANF
342 #define GCC_SCANF 0
343 #endif
344 #ifndef GCC_NORETURN
345 #define GCC_NORETURN /* nothing */
346 #endif
347 #ifndef GCC_UNUSED
348 #define GCC_UNUSED /* nothing */
349 #endif
350 EOF
351 if test "$GCC" = yes
352 then
353         AC_CHECKING([for $CC __attribute__ directives])
354 cat > conftest.$ac_ext <<EOF
355 #line __oline__ "${as_me:-configure}"
356 #include "confdefs.h"
357 #include "conftest.h"
358 #include "conftest.i"
359 #if     GCC_PRINTF
360 #define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
361 #else
362 #define GCC_PRINTFLIKE(fmt,var) /*nothing*/
363 #endif
364 #if     GCC_SCANF
365 #define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
366 #else
367 #define GCC_SCANFLIKE(fmt,var)  /*nothing*/
368 #endif
369 extern void wow(char *,...) GCC_SCANFLIKE(1,2);
370 extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
371 extern void foo(void) GCC_NORETURN;
372 int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { return 0; }
373 EOF
374         cf_printf_attribute=no
375         cf_scanf_attribute=no
376         for cf_attribute in scanf printf unused noreturn
377         do
378                 CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
379                 cf_directive="__attribute__(($cf_attribute))"
380                 echo "checking for $CC $cf_directive" 1>&AC_FD_CC
381
382                 case $cf_attribute in #(vi
383                 printf) #(vi
384                         cf_printf_attribute=yes
385                         cat >conftest.h <<EOF
386 #define GCC_$cf_ATTRIBUTE 1
387 EOF
388                         ;;
389                 scanf) #(vi
390                         cf_scanf_attribute=yes
391                         cat >conftest.h <<EOF
392 #define GCC_$cf_ATTRIBUTE 1
393 EOF
394                         ;;
395                 *) #(vi
396                         cat >conftest.h <<EOF
397 #define GCC_$cf_ATTRIBUTE $cf_directive
398 EOF
399                         ;;
400                 esac
401
402                 if AC_TRY_EVAL(ac_compile); then
403                         test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
404                         cat conftest.h >>confdefs.h
405                         case $cf_attribute in #(vi
406                         noreturn) #(vi
407                                 AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
408                                 ;;
409                         printf) #(vi
410                                 cf_value='/* nothing */'
411                                 if test "$cf_printf_attribute" != no ; then
412                                         cf_value='__attribute__((format(printf,fmt,var)))'
413                                         AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
414                                 fi
415                                 AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
416                                 ;;
417                         scanf) #(vi
418                                 cf_value='/* nothing */'
419                                 if test "$cf_scanf_attribute" != no ; then
420                                         cf_value='__attribute__((format(scanf,fmt,var)))'
421                                         AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
422                                 fi
423                                 AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
424                                 ;;
425                         unused) #(vi
426                                 AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
427                                 ;;
428                         esac
429                 fi
430         done
431 else
432         fgrep define conftest.i >>confdefs.h
433 fi
434 rm -rf conftest*
435 fi
436 ])dnl
437 dnl ---------------------------------------------------------------------------
438 dnl CF_GCC_VERSION version: 7 updated: 2012/10/18 06:46:33
439 dnl --------------
440 dnl Find version of gcc
441 AC_DEFUN([CF_GCC_VERSION],[
442 AC_REQUIRE([AC_PROG_CC])
443 GCC_VERSION=none
444 if test "$GCC" = yes ; then
445         AC_MSG_CHECKING(version of $CC)
446         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.]].*//'`"
447         test -z "$GCC_VERSION" && GCC_VERSION=unknown
448         AC_MSG_RESULT($GCC_VERSION)
449 fi
450 ])dnl
451 dnl ---------------------------------------------------------------------------
452 dnl CF_GCC_WARNINGS version: 31 updated: 2013/11/19 19:23:35
453 dnl ---------------
454 dnl Check if the compiler supports useful warning options.  There's a few that
455 dnl we don't use, simply because they're too noisy:
456 dnl
457 dnl     -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
458 dnl     -Wredundant-decls (system headers make this too noisy)
459 dnl     -Wtraditional (combines too many unrelated messages, only a few useful)
460 dnl     -Wwrite-strings (too noisy, but should review occasionally).  This
461 dnl             is enabled for ncurses using "--enable-const".
462 dnl     -pedantic
463 dnl
464 dnl Parameter:
465 dnl     $1 is an optional list of gcc warning flags that a particular
466 dnl             application might want to use, e.g., "no-unused" for
467 dnl             -Wno-unused
468 dnl Special:
469 dnl     If $with_ext_const is "yes", add a check for -Wwrite-strings
470 dnl
471 AC_DEFUN([CF_GCC_WARNINGS],
472 [
473 AC_REQUIRE([CF_GCC_VERSION])
474 CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
475 CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
476
477 cat > conftest.$ac_ext <<EOF
478 #line __oline__ "${as_me:-configure}"
479 int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
480 EOF
481
482 if test "$INTEL_COMPILER" = yes
483 then
484 # The "-wdXXX" options suppress warnings:
485 # remark #1419: external declaration in primary source file
486 # remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
487 # remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
488 # remark #193: zero used for undefined preprocessing identifier
489 # remark #593: variable "curs_sb_left_arrow" was set but never used
490 # remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
491 # remark #869: parameter "tw" was never referenced
492 # remark #981: operands are evaluated in unspecified order
493 # warning #279: controlling expression is constant
494
495         AC_CHECKING([for $CC warning options])
496         cf_save_CFLAGS="$CFLAGS"
497         EXTRA_CFLAGS="-Wall"
498         for cf_opt in \
499                 wd1419 \
500                 wd1683 \
501                 wd1684 \
502                 wd193 \
503                 wd593 \
504                 wd279 \
505                 wd810 \
506                 wd869 \
507                 wd981
508         do
509                 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
510                 if AC_TRY_EVAL(ac_compile); then
511                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
512                         EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
513                 fi
514         done
515         CFLAGS="$cf_save_CFLAGS"
516
517 elif test "$GCC" = yes
518 then
519         AC_CHECKING([for $CC warning options])
520         cf_save_CFLAGS="$CFLAGS"
521         EXTRA_CFLAGS=
522         cf_warn_CONST=""
523         test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
524         cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
525         test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
526         for cf_opt in W Wall \
527                 Wbad-function-cast \
528                 Wcast-align \
529                 Wcast-qual \
530                 Wdeclaration-after-statement \
531                 Wextra \
532                 Winline \
533                 Wmissing-declarations \
534                 Wmissing-prototypes \
535                 Wnested-externs \
536                 Wpointer-arith \
537                 Wshadow \
538                 Wstrict-prototypes \
539                 Wundef $cf_gcc_warnings $cf_warn_CONST $1
540         do
541                 CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
542                 if AC_TRY_EVAL(ac_compile); then
543                         test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
544                         case $cf_opt in #(vi
545                         Wcast-qual) #(vi
546                                 CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
547                                 ;;
548                         Winline) #(vi
549                                 case $GCC_VERSION in
550                                 [[34]].*)
551                                         CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
552                                         continue;;
553                                 esac
554                                 ;;
555                         Wpointer-arith) #(vi
556                                 case $GCC_VERSION in
557                                 [[12]].*)
558                                         CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
559                                         continue;;
560                                 esac
561                                 ;;
562                         esac
563                         EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
564                 fi
565         done
566         CFLAGS="$cf_save_CFLAGS"
567 fi
568 rm -rf conftest*
569
570 AC_SUBST(EXTRA_CFLAGS)
571 ])dnl
572 dnl ---------------------------------------------------------------------------
573 dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07
574 dnl -------------
575 dnl Check if we must define _GNU_SOURCE to get a reasonable value for
576 dnl _XOPEN_SOURCE, upon which many POSIX definitions depend.  This is a defect
577 dnl (or misfeature) of glibc2, which breaks portability of many applications,
578 dnl since it is interwoven with GNU extensions.
579 dnl
580 dnl Well, yes we could work around it...
581 AC_DEFUN([CF_GNU_SOURCE],
582 [
583 AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
584 AC_TRY_COMPILE([#include <sys/types.h>],[
585 #ifndef _XOPEN_SOURCE
586 make an error
587 #endif],
588         [cf_cv_gnu_source=no],
589         [cf_save="$CPPFLAGS"
590          CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
591          AC_TRY_COMPILE([#include <sys/types.h>],[
592 #ifdef _XOPEN_SOURCE
593 make an error
594 #endif],
595         [cf_cv_gnu_source=no],
596         [cf_cv_gnu_source=yes])
597         CPPFLAGS="$cf_save"
598         ])
599 ])
600 test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
601 ])dnl
602 dnl ---------------------------------------------------------------------------
603 dnl CF_INTEL_COMPILER version: 6 updated: 2014/03/17 13:13:07
604 dnl -----------------
605 dnl Check if the given compiler is really the Intel compiler for Linux.  It
606 dnl tries to imitate gcc, but does not return an error when it finds a mismatch
607 dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
608 dnl
609 dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
610 dnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
611 dnl the wrappers for gcc and g++ warnings.
612 dnl
613 dnl $1 = GCC (default) or GXX
614 dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
615 dnl $3 = CFLAGS (default) or CXXFLAGS
616 AC_DEFUN([CF_INTEL_COMPILER],[
617 AC_REQUIRE([AC_CANONICAL_HOST])
618 ifelse([$2],,INTEL_COMPILER,[$2])=no
619
620 if test "$ifelse([$1],,[$1],GCC)" = yes ; then
621         case $host_os in
622         linux*|gnu*)
623                 AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
624                 cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
625                 ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
626                 AC_TRY_COMPILE([],[
627 #ifdef __INTEL_COMPILER
628 #else
629 make an error
630 #endif
631 ],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
632 cf_save_CFLAGS="$cf_save_CFLAGS -we147"
633 ],[])
634                 ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
635                 AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
636                 ;;
637         esac
638 fi
639 ])dnl
640 dnl ---------------------------------------------------------------------------
641 dnl CF_MAKE_DOCS version: 3 updated: 2014/01/05 13:21:25
642 dnl ------------
643 dnl $1 = name(s) to generate rules for
644 dnl $2 = suffix of corresponding manpages used as input.
645 define([CF_MAKE_DOCS],[
646 test -z "$cf_make_docs" && cf_make_docs=0
647
648 cf_output=makefile
649 test -f "$cf_output" || cf_output=Makefile
650
651 if test "$cf_make_docs" = 0
652 then
653 cat >>$cf_output <<"CF_EOF"
654 ################################################################################
655 .SUFFIXES : .html .$2 .man .ps .pdf .txt
656
657 .$2.html :
658         GROFF_NO_SGR=stupid [$](SHELL) -c "tbl [$]*.$2 | groff -P -o0 -I$*_ -Thtml -man" >[$]@
659
660 .$2.ps :
661         [$](SHELL) -c "tbl [$]*.$2 | groff -man" >[$]@
662
663 .$2.txt :
664         GROFF_NO_SGR=stupid [$](SHELL) -c "tbl [$]*.$2 | nroff -Tascii -man | col -bx" >[$]@
665
666 .ps.pdf :
667         ps2pdf [$]*.ps
668
669 CF_EOF
670         cf_make_docs=1
671 fi
672
673 for cf_name in $1
674 do
675 cat >>$cf_output <<CF_EOF
676 ################################################################################
677 docs-$cf_name \\
678 docs :: $cf_name.html \\
679         $cf_name.pdf \\
680         $cf_name.ps \\
681         $cf_name.txt
682
683 clean \\
684 docs-clean ::
685         rm -f $cf_name.html $cf_name.pdf $cf_name.ps $cf_name.txt
686
687 $cf_name.html : $cf_name.\$2
688 $cf_name.pdf : $cf_name.ps
689 $cf_name.ps : $cf_name.\$2
690 $cf_name.txt : $cf_name.\$2
691 CF_EOF
692 done
693 ])dnl
694 dnl ---------------------------------------------------------------------------
695 dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
696 dnl ------------
697 dnl Generate tags/TAGS targets for makefiles.  Do not generate TAGS if we have
698 dnl a monocase filesystem.
699 AC_DEFUN([CF_MAKE_TAGS],[
700 AC_REQUIRE([CF_MIXEDCASE_FILENAMES])
701
702 AC_CHECK_PROGS(CTAGS, exctags ctags)
703 AC_CHECK_PROGS(ETAGS, exetags etags)
704
705 AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
706
707 if test "$cf_cv_mixedcase" = yes ; then
708         AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
709 else
710         MAKE_UPPER_TAGS=no
711 fi
712
713 if test "$MAKE_UPPER_TAGS" = yes ; then
714         MAKE_UPPER_TAGS=
715 else
716         MAKE_UPPER_TAGS="#"
717 fi
718
719 if test "$MAKE_LOWER_TAGS" = yes ; then
720         MAKE_LOWER_TAGS=
721 else
722         MAKE_LOWER_TAGS="#"
723 fi
724
725 AC_SUBST(CTAGS)
726 AC_SUBST(ETAGS)
727
728 AC_SUBST(MAKE_UPPER_TAGS)
729 AC_SUBST(MAKE_LOWER_TAGS)
730 ])dnl
731 dnl ---------------------------------------------------------------------------
732 dnl CF_MIXEDCASE_FILENAMES version: 6 updated: 2013/10/08 17:47:05
733 dnl ----------------------
734 dnl Check if the file-system supports mixed-case filenames.  If we're able to
735 dnl create a lowercase name and see it as uppercase, it doesn't support that.
736 AC_DEFUN([CF_MIXEDCASE_FILENAMES],
737 [
738 AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
739 if test "$cross_compiling" = yes ; then
740         case $target_alias in #(vi
741         *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi
742                 cf_cv_mixedcase=no
743                 ;;
744         *)
745                 cf_cv_mixedcase=yes
746                 ;;
747         esac
748 else
749         rm -f conftest CONFTEST
750         echo test >conftest
751         if test -f CONFTEST ; then
752                 cf_cv_mixedcase=no
753         else
754                 cf_cv_mixedcase=yes
755         fi
756         rm -f conftest CONFTEST
757 fi
758 ])
759 test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
760 ])dnl
761 dnl ---------------------------------------------------------------------------
762 dnl CF_MKSTEMP version: 9 updated: 2012/10/03 04:34:49
763 dnl ----------
764 dnl Check for a working mkstemp.  This creates two files, checks that they are
765 dnl successfully created and distinct (AmigaOS apparently fails on the last).
766 AC_DEFUN([CF_MKSTEMP],[
767 AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
768 rm -rf conftest*
769 AC_TRY_RUN([
770 #include <sys/types.h>
771 #include <stdlib.h>
772 #include <stdio.h>
773 #include <string.h>
774 #include <sys/stat.h>
775 int main()
776 {
777         char *tmpl = "conftestXXXXXX";
778         char name[2][80];
779         int n;
780         int result = 0;
781         int fd;
782         struct stat sb;
783
784         umask(077);
785         for (n = 0; n < 2; ++n) {
786                 strcpy(name[n], tmpl);
787                 if ((fd = mkstemp(name[n])) >= 0) {
788                         if (!strcmp(name[n], tmpl)
789                          || stat(name[n], &sb) != 0
790                          || (sb.st_mode & S_IFMT) != S_IFREG
791                          || (sb.st_mode & 077) != 0) {
792                                 result = 1;
793                         }
794                         close(fd);
795                 }
796         }
797         if (result == 0
798          && !strcmp(name[0], name[1]))
799                 result = 1;
800         ${cf_cv_main_return:-return}(result);
801 }
802 ],[cf_cv_func_mkstemp=yes
803 ],[cf_cv_func_mkstemp=no
804 ],[cf_cv_func_mkstemp=maybe])
805 ])
806 if test "x$cf_cv_func_mkstemp" = xmaybe ; then
807         AC_CHECK_FUNC(mkstemp)
808 fi
809 if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then
810         AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.])
811 fi
812 ])dnl
813 dnl ---------------------------------------------------------------------------
814 dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
815 dnl ----------
816 dnl Write a debug message to config.log, along with the line number in the
817 dnl configure script.
818 AC_DEFUN([CF_MSG_LOG],[
819 echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
820 ])dnl
821 dnl ---------------------------------------------------------------------------
822 dnl CF_NO_LEAKS_OPTION version: 5 updated: 2012/10/02 20:55:03
823 dnl ------------------
824 dnl see CF_WITH_NO_LEAKS
825 AC_DEFUN([CF_NO_LEAKS_OPTION],[
826 AC_MSG_CHECKING(if you want to use $1 for testing)
827 AC_ARG_WITH($1,
828         [$2],
829         [AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
830          $4
831 ])
832         : ${with_cflags:=-g}
833         : ${with_no_leaks:=yes}
834          with_$1=yes],
835         [with_$1=])
836 AC_MSG_RESULT(${with_$1:-no})
837
838 case .$with_cflags in #(vi
839 .*-g*)
840         case .$CFLAGS in #(vi
841         .*-g*) #(vi
842                 ;;
843         *)
844                 CF_ADD_CFLAGS([-g])
845                 ;;
846         esac
847         ;;
848 esac
849 ])dnl
850 dnl ---------------------------------------------------------------------------
851 dnl CF_POSIX_C_SOURCE version: 8 updated: 2010/05/26 05:38:42
852 dnl -----------------
853 dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
854 dnl
855 dnl     POSIX.1-1990                            _POSIX_SOURCE
856 dnl     POSIX.1-1990 and                        _POSIX_SOURCE and
857 dnl             POSIX.2-1992 C-Language                 _POSIX_C_SOURCE=2
858 dnl             Bindings Option
859 dnl     POSIX.1b-1993                           _POSIX_C_SOURCE=199309L
860 dnl     POSIX.1c-1996                           _POSIX_C_SOURCE=199506L
861 dnl     X/Open 2000                             _POSIX_C_SOURCE=200112L
862 dnl
863 dnl Parameters:
864 dnl     $1 is the nominal value for _POSIX_C_SOURCE
865 AC_DEFUN([CF_POSIX_C_SOURCE],
866 [
867 cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
868
869 cf_save_CFLAGS="$CFLAGS"
870 cf_save_CPPFLAGS="$CPPFLAGS"
871
872 CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
873 CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
874
875 AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
876         CF_MSG_LOG(if the symbol is already defined go no further)
877         AC_TRY_COMPILE([#include <sys/types.h>],[
878 #ifndef _POSIX_C_SOURCE
879 make an error
880 #endif],
881         [cf_cv_posix_c_source=no],
882         [cf_want_posix_source=no
883          case .$cf_POSIX_C_SOURCE in #(vi
884          .[[12]]??*) #(vi
885                 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
886                 ;;
887          .2) #(vi
888                 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
889                 cf_want_posix_source=yes
890                 ;;
891          .*)
892                 cf_want_posix_source=yes
893                 ;;
894          esac
895          if test "$cf_want_posix_source" = yes ; then
896                 AC_TRY_COMPILE([#include <sys/types.h>],[
897 #ifdef _POSIX_SOURCE
898 make an error
899 #endif],[],
900                 cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
901          fi
902          CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
903          CFLAGS="$cf_trim_CFLAGS"
904          CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
905          CF_MSG_LOG(if the second compile does not leave our definition intact error)
906          AC_TRY_COMPILE([#include <sys/types.h>],[
907 #ifndef _POSIX_C_SOURCE
908 make an error
909 #endif],,
910          [cf_cv_posix_c_source=no])
911          CFLAGS="$cf_save_CFLAGS"
912          CPPFLAGS="$cf_save_CPPFLAGS"
913         ])
914 ])
915
916 if test "$cf_cv_posix_c_source" != no ; then
917         CFLAGS="$cf_trim_CFLAGS"
918         CPPFLAGS="$cf_trim_CPPFLAGS"
919         CF_ADD_CFLAGS($cf_cv_posix_c_source)
920 fi
921
922 ])dnl
923 dnl ---------------------------------------------------------------------------
924 dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59
925 dnl -----------
926 dnl Check for awk, ensure that the check found something.
927 AC_DEFUN([CF_PROG_AWK],
928 [
929 AC_PROG_AWK
930 test -z "$AWK" && AC_MSG_ERROR(No awk program found)
931 ])dnl
932 dnl ---------------------------------------------------------------------------
933 dnl CF_PROG_CC version: 4 updated: 2014/07/12 18:57:58
934 dnl ----------
935 dnl standard check for CC, plus followup sanity checks
936 dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
937 AC_DEFUN([CF_PROG_CC],[
938 ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
939 CF_GCC_VERSION
940 CF_ACVERSION_CHECK(2.52,
941         [AC_PROG_CC_STDC],
942         [CF_ANSI_CC_REQD])
943 CF_CC_ENV_FLAGS
944 ])dnl
945 dnl ---------------------------------------------------------------------------
946 dnl CF_PROG_LINT version: 2 updated: 2009/08/12 04:43:14
947 dnl ------------
948 AC_DEFUN([CF_PROG_LINT],
949 [
950 AC_CHECK_PROGS(LINT, tdlint lint alint splint lclint)
951 AC_SUBST(LINT_OPTS)
952 ])dnl
953 dnl ---------------------------------------------------------------------------
954 dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
955 dnl ----------------
956 dnl Remove all -U and -D options that refer to the given symbol from a list
957 dnl of C compiler options.  This works around the problem that not all
958 dnl compilers process -U and -D options from left-to-right, so a -U option
959 dnl cannot be used to cancel the effect of a preceding -D option.
960 dnl
961 dnl $1 = target (which could be the same as the source variable)
962 dnl $2 = source (including '$')
963 dnl $3 = symbol to remove
964 define([CF_REMOVE_DEFINE],
965 [
966 $1=`echo "$2" | \
967         sed     -e 's/-[[UD]]'"$3"'\(=[[^       ]]*\)\?[[       ]]/ /g' \
968                 -e 's/-[[UD]]'"$3"'\(=[[^       ]]*\)\?[$]//g'`
969 ])dnl
970 dnl ---------------------------------------------------------------------------
971 dnl CF_TRY_XOPEN_SOURCE version: 1 updated: 2011/10/30 17:09:50
972 dnl -------------------
973 dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
974 dnl can define it successfully.
975 AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
976 AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
977         AC_TRY_COMPILE([
978 #include <stdlib.h>
979 #include <string.h>
980 #include <sys/types.h>
981 ],[
982 #ifndef _XOPEN_SOURCE
983 make an error
984 #endif],
985         [cf_cv_xopen_source=no],
986         [cf_save="$CPPFLAGS"
987          CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
988          AC_TRY_COMPILE([
989 #include <stdlib.h>
990 #include <string.h>
991 #include <sys/types.h>
992 ],[
993 #ifdef _XOPEN_SOURCE
994 make an error
995 #endif],
996         [cf_cv_xopen_source=no],
997         [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
998         CPPFLAGS="$cf_save"
999         ])
1000 ])
1001
1002 if test "$cf_cv_xopen_source" != no ; then
1003         CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
1004         CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
1005         cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
1006         CF_ADD_CFLAGS($cf_temp_xopen_source)
1007 fi
1008 ])
1009 dnl ---------------------------------------------------------------------------
1010 dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
1011 dnl --------
1012 dnl Make an uppercase version of a variable
1013 dnl $1=uppercase($2)
1014 AC_DEFUN([CF_UPPER],
1015 [
1016 $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
1017 ])dnl
1018 dnl ---------------------------------------------------------------------------
1019 dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
1020 dnl ----------
1021 dnl Use AC_VERBOSE w/o the warnings
1022 AC_DEFUN([CF_VERBOSE],
1023 [test -n "$verbose" && echo "   $1" 1>&AC_FD_MSG
1024 CF_MSG_LOG([$1])
1025 ])dnl
1026 dnl ---------------------------------------------------------------------------
1027 dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
1028 dnl ----------------
1029 dnl Configure-option for dbmalloc.  The optional parameter is used to override
1030 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
1031 AC_DEFUN([CF_WITH_DBMALLOC],[
1032 CF_NO_LEAKS_OPTION(dbmalloc,
1033         [  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
1034         [USE_DBMALLOC])
1035
1036 if test "$with_dbmalloc" = yes ; then
1037         AC_CHECK_HEADER(dbmalloc.h,
1038                 [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
1039 fi
1040 ])dnl
1041 dnl ---------------------------------------------------------------------------
1042 dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
1043 dnl ---------------
1044 dnl Configure-option for dmalloc.  The optional parameter is used to override
1045 dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
1046 AC_DEFUN([CF_WITH_DMALLOC],[
1047 CF_NO_LEAKS_OPTION(dmalloc,
1048         [  --with-dmalloc          test: use Gray Watson's dmalloc library],
1049         [USE_DMALLOC])
1050
1051 if test "$with_dmalloc" = yes ; then
1052         AC_CHECK_HEADER(dmalloc.h,
1053                 [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
1054 fi
1055 ])dnl
1056 dnl ---------------------------------------------------------------------------
1057 dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
1058 dnl ----------------
1059 AC_DEFUN([CF_WITH_VALGRIND],[
1060 CF_NO_LEAKS_OPTION(valgrind,
1061         [  --with-valgrind         test: use valgrind],
1062         [USE_VALGRIND])
1063 ])dnl
1064 dnl ---------------------------------------------------------------------------
1065 dnl CF_WITH_WARNINGS version: 5 updated: 2004/07/23 14:40:34
1066 dnl ----------------
1067 dnl Combine the checks for gcc features into a configure-script option
1068 dnl
1069 dnl Parameters:
1070 dnl     $1 - see CF_GCC_WARNINGS
1071 AC_DEFUN([CF_WITH_WARNINGS],
1072 [
1073 if ( test "$GCC" = yes || test "$GXX" = yes )
1074 then
1075 AC_MSG_CHECKING(if you want to check for gcc warnings)
1076 AC_ARG_WITH(warnings,
1077         [  --with-warnings         test: turn on gcc warnings],
1078         [cf_opt_with_warnings=$withval],
1079         [cf_opt_with_warnings=no])
1080 AC_MSG_RESULT($cf_opt_with_warnings)
1081 if test "$cf_opt_with_warnings" != no ; then
1082         CF_GCC_ATTRIBUTES
1083         CF_GCC_WARNINGS([$1])
1084 fi
1085 fi
1086 ])dnl
1087 dnl ---------------------------------------------------------------------------
1088 dnl CF_XOPEN_SOURCE version: 48 updated: 2014/09/01 12:29:14
1089 dnl ---------------
1090 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
1091 dnl or adapt to the vendor's definitions to get equivalent functionality,
1092 dnl without losing the common non-POSIX features.
1093 dnl
1094 dnl Parameters:
1095 dnl     $1 is the nominal value for _XOPEN_SOURCE
1096 dnl     $2 is the nominal value for _POSIX_C_SOURCE
1097 AC_DEFUN([CF_XOPEN_SOURCE],[
1098 AC_REQUIRE([AC_CANONICAL_HOST])
1099
1100 cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
1101 cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
1102 cf_xopen_source=
1103
1104 case $host_os in #(vi
1105 aix[[4-7]]*) #(vi
1106         cf_xopen_source="-D_ALL_SOURCE"
1107         ;;
1108 cygwin|msys) #(vi
1109         cf_XOPEN_SOURCE=600
1110         ;;
1111 darwin[[0-8]].*) #(vi
1112         cf_xopen_source="-D_APPLE_C_SOURCE"
1113         ;;
1114 darwin*) #(vi
1115         cf_xopen_source="-D_DARWIN_C_SOURCE"
1116         cf_XOPEN_SOURCE=
1117         ;;
1118 freebsd*|dragonfly*) #(vi
1119         # 5.x headers associate
1120         #       _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
1121         #       _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
1122         cf_POSIX_C_SOURCE=200112L
1123         cf_XOPEN_SOURCE=600
1124         cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
1125         ;;
1126 hpux11*) #(vi
1127         cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
1128         ;;
1129 hpux*) #(vi
1130         cf_xopen_source="-D_HPUX_SOURCE"
1131         ;;
1132 irix[[56]].*) #(vi
1133         cf_xopen_source="-D_SGI_SOURCE"
1134         cf_XOPEN_SOURCE=
1135         ;;
1136 linux*|gnu*|mint*|k*bsd*-gnu) #(vi
1137         CF_GNU_SOURCE
1138         ;;
1139 minix*) #(vi
1140         cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
1141         ;;
1142 mirbsd*) #(vi
1143         # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
1144         cf_XOPEN_SOURCE=
1145         CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
1146         ;;
1147 netbsd*) #(vi
1148         cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
1149         ;;
1150 openbsd[[4-9]]*) #(vi
1151         # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
1152         cf_xopen_source="-D_BSD_SOURCE"
1153         cf_XOPEN_SOURCE=600
1154         ;;
1155 openbsd*) #(vi
1156         # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
1157         ;;
1158 osf[[45]]*) #(vi
1159         cf_xopen_source="-D_OSF_SOURCE"
1160         ;;
1161 nto-qnx*) #(vi
1162         cf_xopen_source="-D_QNX_SOURCE"
1163         ;;
1164 sco*) #(vi
1165         # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
1166         ;;
1167 solaris2.*) #(vi
1168         cf_xopen_source="-D__EXTENSIONS__"
1169         cf_cv_xopen_source=broken
1170         ;;
1171 sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
1172         cf_XOPEN_SOURCE=
1173         cf_POSIX_C_SOURCE=
1174         ;;
1175 *)
1176         CF_TRY_XOPEN_SOURCE
1177         CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
1178         ;;
1179 esac
1180
1181 if test -n "$cf_xopen_source" ; then
1182         CF_ADD_CFLAGS($cf_xopen_source,true)
1183 fi
1184
1185 dnl In anything but the default case, we may have system-specific setting
1186 dnl which is still not guaranteed to provide all of the entrypoints that
1187 dnl _XOPEN_SOURCE would yield.
1188 if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
1189         AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
1190         AC_TRY_COMPILE([#include <stdlib.h>],[
1191 #ifndef _XOPEN_SOURCE
1192 make an error
1193 #endif],
1194         [cf_XOPEN_SOURCE_set=yes],
1195         [cf_XOPEN_SOURCE_set=no])
1196         AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
1197         if test $cf_XOPEN_SOURCE_set = yes
1198         then
1199                 AC_TRY_COMPILE([#include <stdlib.h>],[
1200 #if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
1201 make an error
1202 #endif],
1203                 [cf_XOPEN_SOURCE_set_ok=yes],
1204                 [cf_XOPEN_SOURCE_set_ok=no])
1205                 if test $cf_XOPEN_SOURCE_set_ok = no
1206                 then
1207                         AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
1208                 fi
1209         else
1210                 CF_TRY_XOPEN_SOURCE
1211         fi
1212 fi
1213 ])