1dnl $Id: aclocal.m4,v 1.42 2017/02/01 10:12:21 tom Exp $ 2dnl Macros for byacc configure script (Thomas E. Dickey) 3dnl --------------------------------------------------------------------------- 4dnl Copyright 2004-2016,2017 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: 10 updated: 2017/01/21 11:12:16 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_CHECK_HEADERS( \ 812unistd.h \ 813) 814AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[ 815rm -rf conftest* 816AC_TRY_RUN([ 817#include <sys/types.h> 818#ifdef HAVE_UNISTD_H 819#include <unistd.h> 820#endif 821#include <stdlib.h> 822#include <stdio.h> 823#include <string.h> 824#include <sys/stat.h> 825int main(void) 826{ 827 char *tmpl = "conftestXXXXXX"; 828 char name[2][80]; 829 int n; 830 int result = 0; 831 int fd; 832 struct stat sb; 833 834 umask(077); 835 for (n = 0; n < 2; ++n) { 836 strcpy(name[n], tmpl); 837 if ((fd = mkstemp(name[n])) >= 0) { 838 if (!strcmp(name[n], tmpl) 839 || stat(name[n], &sb) != 0 840 || (sb.st_mode & S_IFMT) != S_IFREG 841 || (sb.st_mode & 077) != 0) { 842 result = 1; 843 } 844 close(fd); 845 } 846 } 847 if (result == 0 848 && !strcmp(name[0], name[1])) 849 result = 1; 850 ${cf_cv_main_return:-return}(result); 851} 852],[cf_cv_func_mkstemp=yes 853],[cf_cv_func_mkstemp=no 854],[cf_cv_func_mkstemp=maybe]) 855]) 856if test "x$cf_cv_func_mkstemp" = xmaybe ; then 857 AC_CHECK_FUNC(mkstemp) 858fi 859if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then 860 AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.]) 861fi 862])dnl 863dnl --------------------------------------------------------------------------- 864dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 865dnl ---------- 866dnl Write a debug message to config.log, along with the line number in the 867dnl configure script. 868AC_DEFUN([CF_MSG_LOG],[ 869echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC 870])dnl 871dnl --------------------------------------------------------------------------- 872dnl CF_NO_LEAKS_OPTION version: 6 updated: 2015/04/12 15:39:00 873dnl ------------------ 874dnl see CF_WITH_NO_LEAKS 875AC_DEFUN([CF_NO_LEAKS_OPTION],[ 876AC_MSG_CHECKING(if you want to use $1 for testing) 877AC_ARG_WITH($1, 878 [$2], 879 [AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[ 880 $4 881]) 882 : ${with_cflags:=-g} 883 : ${with_no_leaks:=yes} 884 with_$1=yes], 885 [with_$1=]) 886AC_MSG_RESULT(${with_$1:-no}) 887 888case .$with_cflags in 889(.*-g*) 890 case .$CFLAGS in 891 (.*-g*) 892 ;; 893 (*) 894 CF_ADD_CFLAGS([-g]) 895 ;; 896 esac 897 ;; 898esac 899])dnl 900dnl --------------------------------------------------------------------------- 901dnl CF_PATH_SYNTAX version: 16 updated: 2015/04/18 08:56:57 902dnl -------------- 903dnl Check the argument to see that it looks like a pathname. Rewrite it if it 904dnl begins with one of the prefix/exec_prefix variables, and then again if the 905dnl result begins with 'NONE'. This is necessary to work around autoconf's 906dnl delayed evaluation of those symbols. 907AC_DEFUN([CF_PATH_SYNTAX],[ 908if test "x$prefix" != xNONE; then 909 cf_path_syntax="$prefix" 910else 911 cf_path_syntax="$ac_default_prefix" 912fi 913 914case ".[$]$1" in 915(.\[$]\(*\)*|.\'*\'*) 916 ;; 917(..|./*|.\\*) 918 ;; 919(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX 920 ;; 921(.\[$]{*prefix}*|.\[$]{*dir}*) 922 eval $1="[$]$1" 923 case ".[$]$1" in 924 (.NONE/*) 925 $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` 926 ;; 927 esac 928 ;; 929(.no|.NONE/*) 930 $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` 931 ;; 932(*) 933 ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) 934 ;; 935esac 936])dnl 937dnl --------------------------------------------------------------------------- 938dnl CF_POSIX_C_SOURCE version: 9 updated: 2015/04/12 15:39:00 939dnl ----------------- 940dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. 941dnl 942dnl POSIX.1-1990 _POSIX_SOURCE 943dnl POSIX.1-1990 and _POSIX_SOURCE and 944dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 945dnl Bindings Option 946dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L 947dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L 948dnl X/Open 2000 _POSIX_C_SOURCE=200112L 949dnl 950dnl Parameters: 951dnl $1 is the nominal value for _POSIX_C_SOURCE 952AC_DEFUN([CF_POSIX_C_SOURCE], 953[ 954cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) 955 956cf_save_CFLAGS="$CFLAGS" 957cf_save_CPPFLAGS="$CPPFLAGS" 958 959CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) 960CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE) 961 962AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ 963 CF_MSG_LOG(if the symbol is already defined go no further) 964 AC_TRY_COMPILE([#include <sys/types.h>],[ 965#ifndef _POSIX_C_SOURCE 966make an error 967#endif], 968 [cf_cv_posix_c_source=no], 969 [cf_want_posix_source=no 970 case .$cf_POSIX_C_SOURCE in 971 (.[[12]]??*) 972 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 973 ;; 974 (.2) 975 cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 976 cf_want_posix_source=yes 977 ;; 978 (.*) 979 cf_want_posix_source=yes 980 ;; 981 esac 982 if test "$cf_want_posix_source" = yes ; then 983 AC_TRY_COMPILE([#include <sys/types.h>],[ 984#ifdef _POSIX_SOURCE 985make an error 986#endif],[], 987 cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE") 988 fi 989 CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE) 990 CFLAGS="$cf_trim_CFLAGS" 991 CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source" 992 CF_MSG_LOG(if the second compile does not leave our definition intact error) 993 AC_TRY_COMPILE([#include <sys/types.h>],[ 994#ifndef _POSIX_C_SOURCE 995make an error 996#endif],, 997 [cf_cv_posix_c_source=no]) 998 CFLAGS="$cf_save_CFLAGS" 999 CPPFLAGS="$cf_save_CPPFLAGS" 1000 ]) 1001]) 1002 1003if test "$cf_cv_posix_c_source" != no ; then 1004 CFLAGS="$cf_trim_CFLAGS" 1005 CPPFLAGS="$cf_trim_CPPFLAGS" 1006 CF_ADD_CFLAGS($cf_cv_posix_c_source) 1007fi 1008 1009])dnl 1010dnl --------------------------------------------------------------------------- 1011dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59 1012dnl ----------- 1013dnl Check for awk, ensure that the check found something. 1014AC_DEFUN([CF_PROG_AWK], 1015[ 1016AC_PROG_AWK 1017test -z "$AWK" && AC_MSG_ERROR(No awk program found) 1018])dnl 1019dnl --------------------------------------------------------------------------- 1020dnl CF_PROG_CC version: 4 updated: 2014/07/12 18:57:58 1021dnl ---------- 1022dnl standard check for CC, plus followup sanity checks 1023dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name 1024AC_DEFUN([CF_PROG_CC],[ 1025ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)]) 1026CF_GCC_VERSION 1027CF_ACVERSION_CHECK(2.52, 1028 [AC_PROG_CC_STDC], 1029 [CF_ANSI_CC_REQD]) 1030CF_CC_ENV_FLAGS 1031])dnl 1032dnl --------------------------------------------------------------------------- 1033dnl CF_PROG_GROFF version: 2 updated: 2015/07/04 11:16:27 1034dnl ------------- 1035dnl Check if groff is available, for cases (such as html output) where nroff 1036dnl is not enough. 1037AC_DEFUN([CF_PROG_GROFF],[ 1038AC_PATH_PROG(GROFF_PATH,groff,no) 1039AC_PATH_PROG(NROFF_PATH,nroff,no) 1040if test "x$GROFF_PATH" = xno 1041then 1042 NROFF_NOTE= 1043 GROFF_NOTE="#" 1044else 1045 NROFF_NOTE="#" 1046 GROFF_NOTE= 1047fi 1048AC_SUBST(GROFF_NOTE) 1049AC_SUBST(NROFF_NOTE) 1050])dnl 1051dnl --------------------------------------------------------------------------- 1052dnl CF_PROG_LINT version: 3 updated: 2016/05/22 15:25:54 1053dnl ------------ 1054AC_DEFUN([CF_PROG_LINT], 1055[ 1056AC_CHECK_PROGS(LINT, lint cppcheck splint) 1057AC_SUBST(LINT_OPTS) 1058])dnl 1059dnl --------------------------------------------------------------------------- 1060dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 1061dnl ---------------- 1062dnl Remove all -U and -D options that refer to the given symbol from a list 1063dnl of C compiler options. This works around the problem that not all 1064dnl compilers process -U and -D options from left-to-right, so a -U option 1065dnl cannot be used to cancel the effect of a preceding -D option. 1066dnl 1067dnl $1 = target (which could be the same as the source variable) 1068dnl $2 = source (including '$') 1069dnl $3 = symbol to remove 1070define([CF_REMOVE_DEFINE], 1071[ 1072$1=`echo "$2" | \ 1073 sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ 1074 -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` 1075])dnl 1076dnl --------------------------------------------------------------------------- 1077dnl CF_TRY_XOPEN_SOURCE version: 1 updated: 2011/10/30 17:09:50 1078dnl ------------------- 1079dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we 1080dnl can define it successfully. 1081AC_DEFUN([CF_TRY_XOPEN_SOURCE],[ 1082AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ 1083 AC_TRY_COMPILE([ 1084#include <stdlib.h> 1085#include <string.h> 1086#include <sys/types.h> 1087],[ 1088#ifndef _XOPEN_SOURCE 1089make an error 1090#endif], 1091 [cf_cv_xopen_source=no], 1092 [cf_save="$CPPFLAGS" 1093 CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" 1094 AC_TRY_COMPILE([ 1095#include <stdlib.h> 1096#include <string.h> 1097#include <sys/types.h> 1098],[ 1099#ifdef _XOPEN_SOURCE 1100make an error 1101#endif], 1102 [cf_cv_xopen_source=no], 1103 [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) 1104 CPPFLAGS="$cf_save" 1105 ]) 1106]) 1107 1108if test "$cf_cv_xopen_source" != no ; then 1109 CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) 1110 CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) 1111 cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" 1112 CF_ADD_CFLAGS($cf_temp_xopen_source) 1113fi 1114]) 1115dnl --------------------------------------------------------------------------- 1116dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 1117dnl -------- 1118dnl Make an uppercase version of a variable 1119dnl $1=uppercase($2) 1120AC_DEFUN([CF_UPPER], 1121[ 1122$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` 1123])dnl 1124dnl --------------------------------------------------------------------------- 1125dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 1126dnl ---------- 1127dnl Use AC_VERBOSE w/o the warnings 1128AC_DEFUN([CF_VERBOSE], 1129[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG 1130CF_MSG_LOG([$1]) 1131])dnl 1132dnl --------------------------------------------------------------------------- 1133dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 1134dnl ---------------- 1135dnl Configure-option for dbmalloc. The optional parameter is used to override 1136dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 1137AC_DEFUN([CF_WITH_DBMALLOC],[ 1138CF_NO_LEAKS_OPTION(dbmalloc, 1139 [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], 1140 [USE_DBMALLOC]) 1141 1142if test "$with_dbmalloc" = yes ; then 1143 AC_CHECK_HEADER(dbmalloc.h, 1144 [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) 1145fi 1146])dnl 1147dnl --------------------------------------------------------------------------- 1148dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 1149dnl --------------- 1150dnl Configure-option for dmalloc. The optional parameter is used to override 1151dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 1152AC_DEFUN([CF_WITH_DMALLOC],[ 1153CF_NO_LEAKS_OPTION(dmalloc, 1154 [ --with-dmalloc test: use Gray Watson's dmalloc library], 1155 [USE_DMALLOC]) 1156 1157if test "$with_dmalloc" = yes ; then 1158 AC_CHECK_HEADER(dmalloc.h, 1159 [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) 1160fi 1161])dnl 1162dnl --------------------------------------------------------------------------- 1163dnl CF_WITH_MAN2HTML version: 5 updated: 2015/08/20 04:51:36 1164dnl ---------------- 1165dnl Check for man2html and groff. Optionally prefer man2html over groff. 1166dnl Generate a shell script which hides the differences between the two. 1167dnl 1168dnl We name that "man2html.tmp". 1169dnl 1170dnl The shell script can be removed later, e.g., using "make distclean". 1171AC_DEFUN([CF_WITH_MAN2HTML],[ 1172AC_REQUIRE([CF_PROG_GROFF]) 1173 1174AC_MSG_CHECKING(for program to convert manpage to html) 1175AC_ARG_WITH(man2html, 1176 [ --with-man2html=XXX use XXX rather than groff], 1177 [cf_man2html=$withval], 1178 [cf_man2html=$GROFF_PATH]) 1179 1180cf_with_groff=no 1181 1182case $cf_man2html in 1183(yes) 1184 AC_MSG_RESULT(man2html) 1185 AC_PATH_PROG(cf_man2html,man2html,no) 1186 ;; 1187(no|groff|*/groff*) 1188 cf_with_groff=yes 1189 cf_man2html=$GROFF_PATH 1190 AC_MSG_RESULT($cf_man2html) 1191 ;; 1192(*) 1193 AC_MSG_RESULT($cf_man2html) 1194 ;; 1195esac 1196 1197MAN2HTML_TEMP="man2html.tmp" 1198 cat >$MAN2HTML_TEMP <<CF_EOF 1199#!$SHELL 1200# Temporary script generated by CF_WITH_MAN2HTML 1201# Convert inputs to html, sending result to standard output. 1202# 1203# Parameters: 1204# \${1} = rootname of file to convert 1205# \${2} = suffix of file to convert, e.g., "1" 1206# \${3} = macros to use, e.g., "man" 1207# 1208ROOT=\[$]1 1209TYPE=\[$]2 1210MACS=\[$]3 1211 1212unset LANG 1213unset LC_ALL 1214unset LC_CTYPE 1215unset LANGUAGE 1216GROFF_NO_SGR=stupid 1217export GROFF_NO_SGR 1218 1219CF_EOF 1220 1221if test "x$cf_with_groff" = xyes 1222then 1223 MAN2HTML_NOTE="$GROFF_NOTE" 1224 MAN2HTML_PATH="$GROFF_PATH" 1225 cat >>$MAN2HTML_TEMP <<CF_EOF 1226$SHELL -c "tbl \${ROOT}.\${TYPE} | $GROFF_PATH -P -o0 -I\${ROOT}_ -Thtml -\${MACS}" 1227CF_EOF 1228else 1229 MAN2HTML_NOTE="" 1230 CF_PATH_SYNTAX(cf_man2html) 1231 MAN2HTML_PATH="$cf_man2html" 1232 AC_MSG_CHECKING(for $cf_man2html top/bottom margins) 1233 1234 # for this example, expect 3 lines of content, the remainder is head/foot 1235 cat >conftest.in <<CF_EOF 1236.TH HEAD1 HEAD2 HEAD3 HEAD4 HEAD5 1237.SH SECTION 1238MARKER 1239CF_EOF 1240 1241 LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C nroff -man conftest.in >conftest.out 1242 1243 cf_man2html_1st=`fgrep -n MARKER conftest.out |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'` 1244 cf_man2html_top=`expr $cf_man2html_1st - 2` 1245 cf_man2html_bot=`wc -l conftest.out |sed -e 's/[[^0-9]]//g'` 1246 cf_man2html_bot=`expr $cf_man2html_bot - 2 - $cf_man2html_top` 1247 cf_man2html_top_bot="-topm=$cf_man2html_top -botm=$cf_man2html_bot" 1248 1249 AC_MSG_RESULT($cf_man2html_top_bot) 1250 1251 AC_MSG_CHECKING(for pagesize to use) 1252 for cf_block in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1253 do 1254 cat >>conftest.in <<CF_EOF 1255.nf 12560 12571 12582 12593 12604 12615 12626 12637 12648 12659 1266CF_EOF 1267 done 1268 1269 LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C nroff -man conftest.in >conftest.out 1270 cf_man2html_page=`fgrep -n HEAD1 conftest.out |tail -n 1 |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'` 1271 test -z "$cf_man2html_page" && cf_man2html_page=99999 1272 test "$cf_man2html_page" -gt 100 && cf_man2html_page=99999 1273 1274 rm -rf conftest* 1275 AC_MSG_RESULT($cf_man2html_page) 1276 1277 cat >>$MAN2HTML_TEMP <<CF_EOF 1278: \${MAN2HTML_PATH=$MAN2HTML_PATH} 1279MAN2HTML_OPTS="\$MAN2HTML_OPTS -index -title="\$ROOT\(\$TYPE\)" -compress -pgsize $cf_man2html_page" 1280case \${TYPE} in 1281(ms) 1282 tbl \${ROOT}.\${TYPE} | nroff -\${MACS} | \$MAN2HTML_PATH -topm=0 -botm=0 \$MAN2HTML_OPTS 1283 ;; 1284(*) 1285 tbl \${ROOT}.\${TYPE} | nroff -\${MACS} | \$MAN2HTML_PATH $cf_man2html_top_bot \$MAN2HTML_OPTS 1286 ;; 1287esac 1288CF_EOF 1289fi 1290 1291chmod 700 $MAN2HTML_TEMP 1292 1293AC_SUBST(MAN2HTML_NOTE) 1294AC_SUBST(MAN2HTML_PATH) 1295AC_SUBST(MAN2HTML_TEMP) 1296])dnl 1297dnl --------------------------------------------------------------------------- 1298dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21 1299dnl ---------------- 1300AC_DEFUN([CF_WITH_VALGRIND],[ 1301CF_NO_LEAKS_OPTION(valgrind, 1302 [ --with-valgrind test: use valgrind], 1303 [USE_VALGRIND]) 1304])dnl 1305dnl --------------------------------------------------------------------------- 1306dnl CF_WITH_WARNINGS version: 5 updated: 2004/07/23 14:40:34 1307dnl ---------------- 1308dnl Combine the checks for gcc features into a configure-script option 1309dnl 1310dnl Parameters: 1311dnl $1 - see CF_GCC_WARNINGS 1312AC_DEFUN([CF_WITH_WARNINGS], 1313[ 1314if ( test "$GCC" = yes || test "$GXX" = yes ) 1315then 1316AC_MSG_CHECKING(if you want to check for gcc warnings) 1317AC_ARG_WITH(warnings, 1318 [ --with-warnings test: turn on gcc warnings], 1319 [cf_opt_with_warnings=$withval], 1320 [cf_opt_with_warnings=no]) 1321AC_MSG_RESULT($cf_opt_with_warnings) 1322if test "$cf_opt_with_warnings" != no ; then 1323 CF_GCC_ATTRIBUTES 1324 CF_GCC_WARNINGS([$1]) 1325fi 1326fi 1327])dnl 1328dnl --------------------------------------------------------------------------- 1329dnl CF_XOPEN_SOURCE version: 52 updated: 2016/08/27 12:21:42 1330dnl --------------- 1331dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions, 1332dnl or adapt to the vendor's definitions to get equivalent functionality, 1333dnl without losing the common non-POSIX features. 1334dnl 1335dnl Parameters: 1336dnl $1 is the nominal value for _XOPEN_SOURCE 1337dnl $2 is the nominal value for _POSIX_C_SOURCE 1338AC_DEFUN([CF_XOPEN_SOURCE],[ 1339AC_REQUIRE([AC_CANONICAL_HOST]) 1340 1341cf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) 1342cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) 1343cf_xopen_source= 1344 1345case $host_os in 1346(aix[[4-7]]*) 1347 cf_xopen_source="-D_ALL_SOURCE" 1348 ;; 1349(msys) 1350 cf_XOPEN_SOURCE=600 1351 ;; 1352(darwin[[0-8]].*) 1353 cf_xopen_source="-D_APPLE_C_SOURCE" 1354 ;; 1355(darwin*) 1356 cf_xopen_source="-D_DARWIN_C_SOURCE" 1357 cf_XOPEN_SOURCE= 1358 ;; 1359(freebsd*|dragonfly*) 1360 # 5.x headers associate 1361 # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L 1362 # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L 1363 cf_POSIX_C_SOURCE=200112L 1364 cf_XOPEN_SOURCE=600 1365 cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" 1366 ;; 1367(hpux11*) 1368 cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" 1369 ;; 1370(hpux*) 1371 cf_xopen_source="-D_HPUX_SOURCE" 1372 ;; 1373(irix[[56]].*) 1374 cf_xopen_source="-D_SGI_SOURCE" 1375 cf_XOPEN_SOURCE= 1376 ;; 1377(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) 1378 CF_GNU_SOURCE 1379 ;; 1380(minix*) 1381 cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... 1382 ;; 1383(mirbsd*) 1384 # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types 1385 cf_XOPEN_SOURCE= 1386 CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 1387 ;; 1388(netbsd*) 1389 cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw 1390 ;; 1391(openbsd[[4-9]]*) 1392 # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw 1393 cf_xopen_source="-D_BSD_SOURCE" 1394 cf_XOPEN_SOURCE=600 1395 ;; 1396(openbsd*) 1397 # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw 1398 ;; 1399(osf[[45]]*) 1400 cf_xopen_source="-D_OSF_SOURCE" 1401 ;; 1402(nto-qnx*) 1403 cf_xopen_source="-D_QNX_SOURCE" 1404 ;; 1405(sco*) 1406 # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer 1407 ;; 1408(solaris2.*) 1409 cf_xopen_source="-D__EXTENSIONS__" 1410 cf_cv_xopen_source=broken 1411 ;; 1412(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) 1413 cf_XOPEN_SOURCE= 1414 cf_POSIX_C_SOURCE= 1415 ;; 1416(*) 1417 CF_TRY_XOPEN_SOURCE 1418 CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 1419 ;; 1420esac 1421 1422if test -n "$cf_xopen_source" ; then 1423 CF_ADD_CFLAGS($cf_xopen_source,true) 1424fi 1425 1426dnl In anything but the default case, we may have system-specific setting 1427dnl which is still not guaranteed to provide all of the entrypoints that 1428dnl _XOPEN_SOURCE would yield. 1429if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then 1430 AC_MSG_CHECKING(if _XOPEN_SOURCE really is set) 1431 AC_TRY_COMPILE([#include <stdlib.h>],[ 1432#ifndef _XOPEN_SOURCE 1433make an error 1434#endif], 1435 [cf_XOPEN_SOURCE_set=yes], 1436 [cf_XOPEN_SOURCE_set=no]) 1437 AC_MSG_RESULT($cf_XOPEN_SOURCE_set) 1438 if test $cf_XOPEN_SOURCE_set = yes 1439 then 1440 AC_TRY_COMPILE([#include <stdlib.h>],[ 1441#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE 1442make an error 1443#endif], 1444 [cf_XOPEN_SOURCE_set_ok=yes], 1445 [cf_XOPEN_SOURCE_set_ok=no]) 1446 if test $cf_XOPEN_SOURCE_set_ok = no 1447 then 1448 AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) 1449 fi 1450 else 1451 CF_TRY_XOPEN_SOURCE 1452 fi 1453fi 1454]) 1455