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