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