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