aclocal.m4 revision 5104ee6e
15104ee6eSmrgdnl $XTermId: aclocal.m4,v 1.533 2024/12/21 13:44:12 tom Exp $ 2d522f475Smrgdnl 3d522f475Smrgdnl --------------------------------------------------------------------------- 4d522f475Smrgdnl 504b94745Smrgdnl Copyright 1997-2023,2024 by Thomas E. Dickey 6d522f475Smrgdnl 7d522f475Smrgdnl All Rights Reserved 8d522f475Smrgdnl 920d2c4d2Smrgdnl Permission is hereby granted, free of charge, to any person obtaining a 1020d2c4d2Smrgdnl copy of this software and associated documentation files (the 1120d2c4d2Smrgdnl "Software"), to deal in the Software without restriction, including 1220d2c4d2Smrgdnl without limitation the rights to use, copy, modify, merge, publish, 1320d2c4d2Smrgdnl distribute, sublicense, and/or sell copies of the Software, and to 1420d2c4d2Smrgdnl permit persons to whom the Software is furnished to do so, subject to 1520d2c4d2Smrgdnl the following conditions: 160bd37d32Smrgdnl 1720d2c4d2Smrgdnl The above copyright notice and this permission notice shall be included 1820d2c4d2Smrgdnl in all copies or substantial portions of the Software. 190bd37d32Smrgdnl 2020d2c4d2Smrgdnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 2120d2c4d2Smrgdnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2220d2c4d2Smrgdnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 2320d2c4d2Smrgdnl IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY 2420d2c4d2Smrgdnl CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 2520d2c4d2Smrgdnl TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2620d2c4d2Smrgdnl SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 270bd37d32Smrgdnl 2820d2c4d2Smrgdnl Except as contained in this notice, the name(s) of the above copyright 2920d2c4d2Smrgdnl holders shall not be used in advertising or otherwise to promote the 3020d2c4d2Smrgdnl sale, use or other dealings in this Software without prior written 3120d2c4d2Smrgdnl authorization. 32d522f475Smrgdnl 33d522f475Smrgdnl --------------------------------------------------------------------------- 3420d2c4d2Smrgdnl See 35f2e35a3aSmrgdnl https://invisible-island.net/autoconf/autoconf.html 36f2e35a3aSmrgdnl https://invisible-island.net/autoconf/my-autoconf.html 3720d2c4d2Smrgdnl --------------------------------------------------------------------------- 38d522f475Smrgdnl --------------------------------------------------------------------------- 395307cd1aSmrgdnl AM_LANGINFO_CODESET version: 7 updated: 2023/01/11 04:05:23 40d522f475Smrgdnl ------------------- 41d522f475Smrgdnl Inserted as requested by gettext 0.10.40 42d522f475Smrgdnl File from /usr/share/aclocal 43d522f475Smrgdnl codeset.m4 44d522f475Smrgdnl ==================== 45d522f475Smrgdnl serial AM1 46d522f475Smrgdnl 47d522f475Smrgdnl From Bruno Haible. 48d522f475SmrgAC_DEFUN([AM_LANGINFO_CODESET], 49d522f475Smrg[ 502e4f8982SmrgAC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, 515307cd1aSmrg [AC_TRY_LINK([ 525307cd1aSmrg$ac_includes_default 535307cd1aSmrg#include <langinfo.h>], 54f2e35a3aSmrg [char* cs = nl_langinfo(CODESET); (void)cs], 552e4f8982Smrg am_cv_langinfo_codeset=yes, 562e4f8982Smrg am_cv_langinfo_codeset=no) 572e4f8982Smrg ]) 58f2e35a3aSmrg if test "$am_cv_langinfo_codeset" = yes; then 592e4f8982Smrg AC_DEFINE(HAVE_LANGINFO_CODESET, 1, 602e4f8982Smrg [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) 612e4f8982Smrg fi 62d522f475Smrg])dnl 63d522f475Smrgdnl --------------------------------------------------------------------------- 6401037d57Smrgdnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49 65e39b573cSmrgdnl ------------------ 66e39b573cSmrgdnl Conditionally generate script according to whether we're using a given autoconf. 67e39b573cSmrgdnl 68e39b573cSmrgdnl $1 = version to compare against 69e39b573cSmrgdnl $2 = code to use if AC_ACVERSION is at least as high as $1. 70e39b573cSmrgdnl $3 = code to use if AC_ACVERSION is older than $1. 710bd37d32Smrgdefine([CF_ACVERSION_CHECK], 72e39b573cSmrg[ 7301037d57Smrgifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl 74e39b573cSmrgifdef([m4_version_compare], 75e39b573cSmrg[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])], 76e39b573cSmrg[CF_ACVERSION_COMPARE( 77e39b573cSmrgAC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])), 78e39b573cSmrgAC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl 79e39b573cSmrgdnl --------------------------------------------------------------------------- 800bd37d32Smrgdnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53 81e39b573cSmrgdnl -------------------- 82e39b573cSmrgdnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1, 83e39b573cSmrgdnl MAJOR2, MINOR2, TERNARY2, 84e39b573cSmrgdnl PRINTABLE2, not FOUND, FOUND) 850bd37d32Smrgdefine([CF_ACVERSION_COMPARE], 86e39b573cSmrg[ifelse(builtin([eval], [$2 < $5]), 1, 87e39b573cSmrg[ifelse([$8], , ,[$8])], 88e39b573cSmrg[ifelse([$9], , ,[$9])])])dnl 89e39b573cSmrgdnl --------------------------------------------------------------------------- 90f2e35a3aSmrgdnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15 91d522f475Smrgdnl ------------- 92d522f475Smrgdnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS 93f2e35a3aSmrgdnl $1 = flags to add 94f2e35a3aSmrgdnl $2 = if given makes this macro verbose. 95d522f475Smrgdnl 96d522f475Smrgdnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, 97d522f475Smrgdnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily 98d522f475Smrgdnl confused by the quotes (which require backslashes to keep them usable). 99d522f475SmrgAC_DEFUN([CF_ADD_CFLAGS], 100d522f475Smrg[ 101d522f475Smrgcf_fix_cppflags=no 102d522f475Smrgcf_new_cflags= 103d522f475Smrgcf_new_cppflags= 104d522f475Smrgcf_new_extra_cppflags= 105d522f475Smrg 106d522f475Smrgfor cf_add_cflags in $1 107d522f475Smrgdo 108f2e35a3aSmrgcase "$cf_fix_cppflags" in 10901037d57Smrg(no) 110f2e35a3aSmrg case "$cf_add_cflags" in 11101037d57Smrg (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) 112f2e35a3aSmrg case "$cf_add_cflags" in 11301037d57Smrg (-D*) 114f2e35a3aSmrg cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'` 115d522f475Smrg 11601037d57Smrg test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ 11720d2c4d2Smrg && test -z "${cf_tst_cflags}" \ 11820d2c4d2Smrg && cf_fix_cppflags=yes 119d522f475Smrg 120f2e35a3aSmrg if test "$cf_fix_cppflags" = yes ; then 121913cc679Smrg CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 122d522f475Smrg continue 123d522f475Smrg elif test "${cf_tst_cflags}" = "\"'" ; then 124913cc679Smrg CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 125d522f475Smrg continue 126d522f475Smrg fi 127d522f475Smrg ;; 128d522f475Smrg esac 129d522f475Smrg case "$CPPFLAGS" in 13001037d57Smrg (*$cf_add_cflags) 131d522f475Smrg ;; 13201037d57Smrg (*) 133f2e35a3aSmrg case "$cf_add_cflags" in 13401037d57Smrg (-D*) 13520d2c4d2Smrg cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` 13620d2c4d2Smrg CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) 13720d2c4d2Smrg ;; 13820d2c4d2Smrg esac 139913cc679Smrg CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags) 140d522f475Smrg ;; 141d522f475Smrg esac 142d522f475Smrg ;; 14301037d57Smrg (*) 144913cc679Smrg CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags) 145d522f475Smrg ;; 146d522f475Smrg esac 147d522f475Smrg ;; 14801037d57Smrg(yes) 149913cc679Smrg CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 150d522f475Smrg 151f2e35a3aSmrg cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'` 152d522f475Smrg 15301037d57Smrg test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ 15420d2c4d2Smrg && test -z "${cf_tst_cflags}" \ 15520d2c4d2Smrg && cf_fix_cppflags=no 156d522f475Smrg ;; 157d522f475Smrgesac 158d522f475Smrgdone 159d522f475Smrg 160d522f475Smrgif test -n "$cf_new_cflags" ; then 16120d2c4d2Smrg ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) 162913cc679Smrg CF_APPEND_TEXT(CFLAGS,$cf_new_cflags) 163d522f475Smrgfi 164d522f475Smrg 165d522f475Smrgif test -n "$cf_new_cppflags" ; then 16620d2c4d2Smrg ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) 167913cc679Smrg CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags) 168d522f475Smrgfi 169d522f475Smrg 170d522f475Smrgif test -n "$cf_new_extra_cppflags" ; then 17120d2c4d2Smrg ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) 172913cc679Smrg CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags) 173d522f475Smrgfi 174d522f475Smrg 175d522f475SmrgAC_SUBST(EXTRA_CPPFLAGS) 176d522f475Smrg 177d522f475Smrg])dnl 178d522f475Smrgdnl --------------------------------------------------------------------------- 17920d2c4d2Smrgdnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 18020d2c4d2Smrgdnl ---------- 18120d2c4d2Smrgdnl Add a library, used to enforce consistency. 18220d2c4d2Smrgdnl 18320d2c4d2Smrgdnl $1 = library to add, without the "-l" 18420d2c4d2Smrgdnl $2 = variable to update (default $LIBS) 18520d2c4d2SmrgAC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl 18620d2c4d2Smrgdnl --------------------------------------------------------------------------- 187f2e35a3aSmrgdnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33 18820d2c4d2Smrgdnl ----------- 18901037d57Smrgdnl Add one or more libraries, used to enforce consistency. Libraries are 19001037d57Smrgdnl prepended to an existing list, since their dependencies are assumed to 19101037d57Smrgdnl already exist in the list. 19220d2c4d2Smrgdnl 19320d2c4d2Smrgdnl $1 = libraries to add, with the "-l", etc. 19420d2c4d2Smrgdnl $2 = variable to update (default $LIBS) 19501037d57SmrgAC_DEFUN([CF_ADD_LIBS],[ 196f2e35a3aSmrgcf_add_libs="[$]ifelse($2,,LIBS,[$2])" 197f2e35a3aSmrg# reverse order 198f2e35a3aSmrgcf_add_0lib= 199f2e35a3aSmrgfor cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done 200f2e35a3aSmrg# filter duplicates 201f2e35a3aSmrgfor cf_add_1lib in $cf_add_0lib; do 202f2e35a3aSmrg for cf_add_2lib in $cf_add_libs; do 203f2e35a3aSmrg if test "x$cf_add_1lib" = "x$cf_add_2lib"; then 20401037d57Smrg cf_add_1lib= 20501037d57Smrg break 20601037d57Smrg fi 20701037d57Smrg done 208f2e35a3aSmrg test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" 20901037d57Smrgdone 21001037d57Smrgifelse($2,,LIBS,[$2])="$cf_add_libs" 21101037d57Smrg])dnl 21220d2c4d2Smrgdnl --------------------------------------------------------------------------- 213e0a2b6dfSmrgdnl CF_ADD_LIB_AFTER version: 3 updated: 2013/07/09 21:27:22 2146879286fSmrgdnl ---------------- 2156879286fSmrgdnl Add a given library after another, e.g., following the one it satisfies a 2166879286fSmrgdnl dependency for. 2176879286fSmrgdnl 2186879286fSmrgdnl $1 = the first library 2196879286fSmrgdnl $2 = its dependency 2206879286fSmrgAC_DEFUN([CF_ADD_LIB_AFTER],[ 2216879286fSmrgCF_VERBOSE(...before $LIBS) 222e0a2b6dfSmrgLIBS=`echo "$LIBS" | sed -e "s/[[ ]][[ ]]*/ /g" -e "s%$1 %$1 $2 %" -e 's% % %g'` 2236879286fSmrgCF_VERBOSE(...after $LIBS) 2246879286fSmrg])dnl 2256879286fSmrgdnl --------------------------------------------------------------------------- 226a5ae21e4Smrgdnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40 227a5ae21e4Smrgdnl ---------------- 228a5ae21e4Smrgdnl Use CF_ADD_CFLAGS after first checking for potential redefinitions. 229a5ae21e4Smrgdnl $1 = flags to add 230a5ae21e4Smrgdnl $2 = if given makes this macro verbose. 231a5ae21e4Smrgdefine([CF_APPEND_CFLAGS], 232a5ae21e4Smrg[ 233a5ae21e4Smrgfor cf_add_cflags in $1 234a5ae21e4Smrgdo 235a5ae21e4Smrg case "x$cf_add_cflags" in 236a5ae21e4Smrg (x-[[DU]]*) 237a5ae21e4Smrg CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2]) 238a5ae21e4Smrg CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2]) 239a5ae21e4Smrg ;; 240a5ae21e4Smrg esac 241a5ae21e4Smrg CF_ADD_CFLAGS([$cf_add_cflags],[$2]) 242a5ae21e4Smrgdone 243a5ae21e4Smrg])dnl 244a5ae21e4Smrgdnl --------------------------------------------------------------------------- 245913cc679Smrgdnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55 246913cc679Smrgdnl -------------- 247913cc679Smrgdnl use this macro for appending text without introducing an extra blank at 248913cc679Smrgdnl the beginning 249913cc679Smrgdefine([CF_APPEND_TEXT], 250913cc679Smrg[ 251913cc679Smrg test -n "[$]$1" && $1="[$]$1 " 252913cc679Smrg $1="[$]{$1}$2" 253913cc679Smrg])dnl 254913cc679Smrgdnl --------------------------------------------------------------------------- 255d522f475Smrgdnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 256d522f475Smrgdnl -------------- 257d522f475Smrgdnl Allow user to disable a normally-on option. 258d522f475SmrgAC_DEFUN([CF_ARG_DISABLE], 259d522f475Smrg[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl 260d522f475Smrgdnl --------------------------------------------------------------------------- 261d522f475Smrgdnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31 262d522f475Smrgdnl ------------- 263d522f475Smrgdnl Allow user to enable a normally-off option. 264d522f475SmrgAC_DEFUN([CF_ARG_ENABLE], 265d522f475Smrg[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl 266d522f475Smrgdnl --------------------------------------------------------------------------- 2672e4f8982Smrgdnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14 268d522f475Smrgdnl ------------- 269d522f475Smrgdnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus 270d522f475Smrgdnl values. 271d522f475Smrgdnl 272d522f475Smrgdnl Parameters: 273d522f475Smrgdnl $1 = option name 274d522f475Smrgdnl $2 = help-string 275d522f475Smrgdnl $3 = action to perform if option is not default 276d522f475Smrgdnl $4 = action if perform if option is default 277d522f475Smrgdnl $5 = default option value (either 'yes' or 'no') 278d522f475SmrgAC_DEFUN([CF_ARG_OPTION], 27920d2c4d2Smrg[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes) 2802e4f8982Smrg if test "$enableval" != "$5" ; then 28120d2c4d2Smrgifelse([$3],,[ :]dnl 28220d2c4d2Smrg,[ $3]) ifelse([$4],,,[ 2832e4f8982Smrg else 2842e4f8982Smrg $4]) 2852e4f8982Smrg fi],[enableval=$5 ifelse([$4],,,[ 2862e4f8982Smrg $4 287d522f475Smrg])dnl 2882e4f8982Smrg])])dnl 289d522f475Smrgdnl --------------------------------------------------------------------------- 2905307cd1aSmrgdnl CF_C11_NORETURN version: 4 updated: 2023/02/18 17:41:25 291ad37e533Smrgdnl --------------- 292ad37e533SmrgAC_DEFUN([CF_C11_NORETURN], 293ad37e533Smrg[ 294ad37e533SmrgAC_MSG_CHECKING(if you want to use C11 _Noreturn feature) 295ad37e533SmrgCF_ARG_ENABLE(stdnoreturn, 296ad37e533Smrg [ --enable-stdnoreturn enable C11 _Noreturn feature for diagnostics], 297ad37e533Smrg [enable_stdnoreturn=yes], 298ad37e533Smrg [enable_stdnoreturn=no]) 299ad37e533SmrgAC_MSG_RESULT($enable_stdnoreturn) 300ad37e533Smrg 301ad37e533Smrgif test $enable_stdnoreturn = yes; then 302ad37e533SmrgAC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn, 303ad37e533Smrg [AC_TRY_COMPILE([ 3045307cd1aSmrg$ac_includes_default 305ad37e533Smrg#include <stdnoreturn.h> 306ae137402Smrgstatic _Noreturn void giveup(void) { exit(0); } 307ad37e533Smrg ], 308ad37e533Smrg [if (feof(stdin)) giveup()], 309ad37e533Smrg cf_cv_c11_noreturn=yes, 310ad37e533Smrg cf_cv_c11_noreturn=no) 311ad37e533Smrg ]) 312ad37e533Smrgelse 313ad37e533Smrg cf_cv_c11_noreturn=no, 314ad37e533Smrgfi 315ad37e533Smrg 316ad37e533Smrgif test "$cf_cv_c11_noreturn" = yes; then 317ae137402Smrg AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working]) 318ad37e533Smrg AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported]) 319ad37e533Smrg HAVE_STDNORETURN_H=1 320ad37e533Smrgelse 321ad37e533Smrg HAVE_STDNORETURN_H=0 322ad37e533Smrgfi 323ad37e533Smrg 324ad37e533SmrgAC_SUBST(HAVE_STDNORETURN_H) 325ae137402SmrgAC_SUBST(STDC_NORETURN) 326ad37e533Smrg])dnl 327ad37e533Smrgdnl --------------------------------------------------------------------------- 3285307cd1aSmrgdnl CF_CC_ENV_FLAGS version: 11 updated: 2023/02/20 11:15:46 3290bd37d32Smrgdnl --------------- 3300bd37d32Smrgdnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content 331913cc679Smrgdnl into CC. This will not help with broken scripts that wrap the compiler 332913cc679Smrgdnl with options, but eliminates a more common category of user confusion. 333913cc679Smrgdnl 334913cc679Smrgdnl In particular, it addresses the problem of being able to run the C 335913cc679Smrgdnl preprocessor in a consistent manner. 3362e4f8982Smrgdnl 3372e4f8982Smrgdnl Caveat: this also disallows blanks in the pathname for the compiler, but 3382e4f8982Smrgdnl the nuisance of having inconsistent settings for compiler and preprocessor 3392e4f8982Smrgdnl outweighs that limitation. 3400bd37d32SmrgAC_DEFUN([CF_CC_ENV_FLAGS], 3410bd37d32Smrg[ 3420bd37d32Smrg# This should have been defined by AC_PROG_CC 343f2e35a3aSmrg: "${CC:=cc}" 344f2e35a3aSmrg 345f2e35a3aSmrgAC_MSG_CHECKING(\$CFLAGS variable) 346f2e35a3aSmrgcase "x$CFLAGS" in 347f2e35a3aSmrg(*-[[IUD]]*) 348f2e35a3aSmrg AC_MSG_RESULT(broken) 349f2e35a3aSmrg AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options) 350f2e35a3aSmrg cf_flags="$CFLAGS" 351f2e35a3aSmrg CFLAGS= 352f2e35a3aSmrg for cf_arg in $cf_flags 353f2e35a3aSmrg do 354f2e35a3aSmrg CF_ADD_CFLAGS($cf_arg) 355f2e35a3aSmrg done 356f2e35a3aSmrg ;; 357f2e35a3aSmrg(*) 358f2e35a3aSmrg AC_MSG_RESULT(ok) 359f2e35a3aSmrg ;; 360f2e35a3aSmrgesac 3610bd37d32Smrg 3620bd37d32SmrgAC_MSG_CHECKING(\$CC variable) 36301037d57Smrgcase "$CC" in 3642e4f8982Smrg(*[[\ \ ]]-*) 3650bd37d32Smrg AC_MSG_RESULT(broken) 366f2e35a3aSmrg AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options) 3670bd37d32Smrg # humor him... 368913cc679Smrg cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'` 3695307cd1aSmrg cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"` 370913cc679Smrg CC="$cf_prog" 371913cc679Smrg for cf_arg in $cf_flags 372913cc679Smrg do 373913cc679Smrg case "x$cf_arg" in 374913cc679Smrg (x-[[IUDfgOW]]*) 375913cc679Smrg CF_ADD_CFLAGS($cf_arg) 376913cc679Smrg ;; 377913cc679Smrg (*) 378913cc679Smrg CC="$CC $cf_arg" 379913cc679Smrg ;; 380913cc679Smrg esac 381913cc679Smrg done 3822e4f8982Smrg CF_VERBOSE(resulting CC: '$CC') 3832e4f8982Smrg CF_VERBOSE(resulting CFLAGS: '$CFLAGS') 3842e4f8982Smrg CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS') 3850bd37d32Smrg ;; 38601037d57Smrg(*) 3870bd37d32Smrg AC_MSG_RESULT(ok) 3880bd37d32Smrg ;; 3890bd37d32Smrgesac 3900bd37d32Smrg])dnl 3910bd37d32Smrgdnl --------------------------------------------------------------------------- 392f2e35a3aSmrgdnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15 393d522f475Smrgdnl -------------- 394d522f475Smrgdnl Check if we're accidentally using a cache from a different machine. 395d522f475Smrgdnl Derive the system name, as a check for reusing the autoconf cache. 396d522f475Smrgdnl 397d522f475Smrgdnl If we've packaged config.guess and config.sub, run that (since it does a 398d522f475Smrgdnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow 399d522f475Smrgdnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM 400d522f475Smrgdnl which is useful in cross-compiles. 401d522f475Smrgdnl 402d522f475Smrgdnl Note: we would use $ac_config_sub, but that is one of the places where 403d522f475Smrgdnl autoconf 2.5x broke compatibility with autoconf 2.13 404d522f475SmrgAC_DEFUN([CF_CHECK_CACHE], 405d522f475Smrg[ 406f2e35a3aSmrgif test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then 407d522f475Smrg ifelse([$1],,[AC_CANONICAL_HOST],[$1]) 408d522f475Smrg system_name="$host_os" 409d522f475Smrgelse 410d522f475Smrg system_name="`(uname -s -r) 2>/dev/null`" 411d522f475Smrg if test -z "$system_name" ; then 412d522f475Smrg system_name="`(hostname) 2>/dev/null`" 413d522f475Smrg fi 414d522f475Smrgfi 4150bd37d32Smrgtest -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.]) 416d522f475SmrgAC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) 417d522f475Smrg 418d522f475Smrgtest -z "$system_name" && system_name="$cf_cv_system_name" 419d522f475Smrgtest -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) 420d522f475Smrg 421d522f475Smrgif test ".$system_name" != ".$cf_cv_system_name" ; then 422d522f475Smrg AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) 423d522f475Smrg AC_MSG_ERROR("Please remove config.cache and try again.") 424d522f475Smrgfi 425d522f475Smrg])dnl 426d522f475Smrgdnl --------------------------------------------------------------------------- 427f2e35a3aSmrgdnl CF_CHECK_CFLAGS version: 4 updated: 2021/01/02 19:22:58 428d522f475Smrgdnl --------------- 429d522f475Smrgdnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from 430d522f475Smrgdnl a build-configuration such as imake. These have the pitfall that they 431d522f475Smrgdnl often contain compiler-specific options which we cannot use, mixed with 432d522f475Smrgdnl preprocessor options that we usually can. 433d522f475SmrgAC_DEFUN([CF_CHECK_CFLAGS], 434d522f475Smrg[ 435d522f475SmrgCF_VERBOSE(checking additions to CFLAGS) 436d522f475Smrgcf_check_cflags="$CFLAGS" 437d522f475Smrgcf_check_cppflags="$CPPFLAGS" 438d522f475SmrgCF_ADD_CFLAGS($1,yes) 43901037d57Smrgif test "x$cf_check_cflags" != "x$CFLAGS" ; then 440d522f475SmrgAC_TRY_LINK([#include <stdio.h>],[printf("Hello world");],, 441d522f475Smrg [CF_VERBOSE(test-compile failed. Undoing change to \$CFLAGS) 44201037d57Smrg if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then 443d522f475Smrg CF_VERBOSE(but keeping change to \$CPPFLAGS) 444d522f475Smrg fi 445f2e35a3aSmrg CFLAGS="$cf_check_cflags"]) 446d522f475Smrgfi 447d522f475Smrg])dnl 448d522f475Smrgdnl --------------------------------------------------------------------------- 4495307cd1aSmrgdnl CF_CHECK_ERRNO version: 14 updated: 2023/02/18 17:41:25 450d522f475Smrgdnl -------------- 451d522f475Smrgdnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g., 452d522f475Smrgdnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it 453d522f475Smrgdnl ourselves. 454d522f475Smrgdnl 455d522f475Smrgdnl $1 = the name to check 4562eaa94a1Schristosdnl $2 = the assumed type 457d522f475SmrgAC_DEFUN([CF_CHECK_ERRNO], 458d522f475Smrg[ 459d522f475SmrgAC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[ 4602e4f8982Smrg AC_TRY_COMPILE([ 4615307cd1aSmrg$ac_includes_default 462d522f475Smrg#include <errno.h> ], 463f2e35a3aSmrg ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1; (void)x, 4642e4f8982Smrg [cf_cv_dcl_$1=yes], 4652e4f8982Smrg [cf_cv_dcl_$1=no]) 466d522f475Smrg]) 467d522f475Smrg 468d522f475Smrgif test "$cf_cv_dcl_$1" = no ; then 4692e4f8982Smrg CF_UPPER(cf_result,decl_$1) 4702e4f8982Smrg AC_DEFINE_UNQUOTED($cf_result) 471d522f475Smrgfi 472d522f475Smrg 473d522f475Smrg# It's possible (for near-UNIX clones) that the data doesn't exist 47420d2c4d2SmrgCF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2])) 475d522f475Smrg])dnl 476d522f475Smrgdnl --------------------------------------------------------------------------- 477a5ae21e4Smrgdnl CF_CHECK_EXTERN_DATA version: 5 updated: 2021/09/04 06:35:04 478d522f475Smrgdnl -------------------- 479d522f475Smrgdnl Check for existence of external data in the current set of libraries. If 480a5ae21e4Smrgdnl we can modify it, it is real enough. 481d522f475Smrgdnl $1 = the name to check 482d522f475Smrgdnl $2 = its type 483d522f475SmrgAC_DEFUN([CF_CHECK_EXTERN_DATA], 484d522f475Smrg[ 485d522f475SmrgAC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[ 4862e4f8982Smrg AC_TRY_LINK([ 487d522f475Smrg#undef $1 488d522f475Smrgextern $2 $1; 489d522f475Smrg], 4902e4f8982Smrg [$1 = 2], 4912e4f8982Smrg [cf_cv_have_$1=yes], 4922e4f8982Smrg [cf_cv_have_$1=no]) 493d522f475Smrg]) 494d522f475Smrg 495d522f475Smrgif test "$cf_cv_have_$1" = yes ; then 4962e4f8982Smrg CF_UPPER(cf_result,have_$1) 4972e4f8982Smrg AC_DEFINE_UNQUOTED($cf_result) 498d522f475Smrgfi 499d522f475Smrg 500d522f475Smrg])dnl 501d522f475Smrgdnl --------------------------------------------------------------------------- 5025307cd1aSmrgdnl CF_CLANG_COMPILER version: 9 updated: 2023/02/18 17:41:25 5030bd37d32Smrgdnl ----------------- 5040bd37d32Smrgdnl Check if the given compiler is really clang. clang's C driver defines 5050bd37d32Smrgdnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does 5060bd37d32Smrgdnl not ignore some gcc options. 5070bd37d32Smrgdnl 5080bd37d32Smrgdnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to 5090bd37d32Smrgdnl ensure that it is not mistaken for gcc/g++. It is normally invoked from 5100bd37d32Smrgdnl the wrappers for gcc and g++ warnings. 5110bd37d32Smrgdnl 5120bd37d32Smrgdnl $1 = GCC (default) or GXX 513e0a2b6dfSmrgdnl $2 = CLANG_COMPILER (default) 5140bd37d32Smrgdnl $3 = CFLAGS (default) or CXXFLAGS 5150bd37d32SmrgAC_DEFUN([CF_CLANG_COMPILER],[ 5160bd37d32Smrgifelse([$2],,CLANG_COMPILER,[$2])=no 5170bd37d32Smrg 5180bd37d32Smrgif test "$ifelse([$1],,[$1],GCC)" = yes ; then 5190bd37d32Smrg AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler) 5200bd37d32Smrg cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" 5210bd37d32Smrg AC_TRY_COMPILE([],[ 5220bd37d32Smrg#ifdef __clang__ 5230bd37d32Smrg#else 5245307cd1aSmrg#error __clang__ is not defined 5250bd37d32Smrg#endif 5260bd37d32Smrg],[ifelse([$2],,CLANG_COMPILER,[$2])=yes 5270bd37d32Smrg],[]) 5280bd37d32Smrg ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" 5290bd37d32Smrg AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2])) 5300bd37d32Smrgfi 531f2e35a3aSmrg 532f2e35a3aSmrgCLANG_VERSION=none 533f2e35a3aSmrg 534f2e35a3aSmrgif test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then 535f2e35a3aSmrg case "$CC" in 536f2e35a3aSmrg (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]]) 537f2e35a3aSmrg AC_MSG_WARN(replacing broken compiler alias $CC) 538f2e35a3aSmrg CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`" 539f2e35a3aSmrg CC=clang 540f2e35a3aSmrg ;; 541f2e35a3aSmrg esac 542f2e35a3aSmrg 543f2e35a3aSmrg AC_MSG_CHECKING(version of $CC) 544f2e35a3aSmrg 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.]].*//'`" 545f2e35a3aSmrg test -z "$CLANG_VERSION" && CLANG_VERSION=unknown 546f2e35a3aSmrg AC_MSG_RESULT($CLANG_VERSION) 547f2e35a3aSmrg 548f2e35a3aSmrg for cf_clang_opt in \ 549f2e35a3aSmrg -Qunused-arguments \ 550f2e35a3aSmrg -Wno-error=implicit-function-declaration 551f2e35a3aSmrg do 552f2e35a3aSmrg AC_MSG_CHECKING(if option $cf_clang_opt works) 553f2e35a3aSmrg cf_save_CFLAGS="$CFLAGS" 554f2e35a3aSmrg CFLAGS="$CFLAGS $cf_clang_opt" 555f2e35a3aSmrg AC_TRY_LINK([ 556f2e35a3aSmrg #include <stdio.h>],[ 557f2e35a3aSmrg printf("hello!\\n");],[ 558f2e35a3aSmrg cf_clang_optok=yes],[ 559f2e35a3aSmrg cf_clang_optok=no]) 560f2e35a3aSmrg AC_MSG_RESULT($cf_clang_optok) 561f2e35a3aSmrg CFLAGS="$cf_save_CFLAGS" 562f2e35a3aSmrg if test "$cf_clang_optok" = yes; then 563f2e35a3aSmrg CF_VERBOSE(adding option $cf_clang_opt) 564f2e35a3aSmrg CF_APPEND_TEXT(CFLAGS,$cf_clang_opt) 565f2e35a3aSmrg fi 566f2e35a3aSmrg done 567f2e35a3aSmrgfi 5680bd37d32Smrg]) 5690bd37d32Smrgdnl --------------------------------------------------------------------------- 5705104ee6eSmrgdnl CF_CONST_X_STRING version: 9 updated: 2024/12/04 03:49:57 571f2e35a3aSmrgdnl ----------------- 572f2e35a3aSmrgdnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most 573f2e35a3aSmrgdnl character-strings. 574f2e35a3aSmrgdnl 575f2e35a3aSmrgdnl It is ambiguous because the specification accommodated the pre-ANSI 576f2e35a3aSmrgdnl compilers bundled by more than one vendor in lieu of providing a standard C 577f2e35a3aSmrgdnl compiler other than by costly add-ons. Because of this, the specification 578f2e35a3aSmrgdnl did not take into account the use of const for telling the compiler that 579f2e35a3aSmrgdnl string literals would be in readonly memory. 580f2e35a3aSmrgdnl 581f2e35a3aSmrgdnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to 582f2e35a3aSmrgdnl let the compiler decide how to represent Xt's strings which were #define'd. 583f2e35a3aSmrgdnl That does not solve the problem of using the block of Xt's strings which 584f2e35a3aSmrgdnl are compiled into the library (and is less efficient than one might want). 585f2e35a3aSmrgdnl 586f2e35a3aSmrgdnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both 587f2e35a3aSmrgdnl when compiling the library and compiling using the library, to tell the 588f2e35a3aSmrgdnl compiler that String is const. 589f2e35a3aSmrgAC_DEFUN([CF_CONST_X_STRING], 590f2e35a3aSmrg[ 591f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 592f2e35a3aSmrg 593f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING]) 594f2e35a3aSmrg 595f2e35a3aSmrgAC_TRY_COMPILE( 596f2e35a3aSmrg[ 5975104ee6eSmrg$ac_includes_default 598f2e35a3aSmrg#include <X11/Intrinsic.h> 599f2e35a3aSmrg], 600ae137402Smrg[String foo = malloc(1); free((void*)foo)],[ 601f2e35a3aSmrg 602f2e35a3aSmrgAC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[ 603f2e35a3aSmrg AC_TRY_COMPILE( 604f2e35a3aSmrg [ 60504b94745Smrg#undef _CONST_X_STRING 606f2e35a3aSmrg#define _CONST_X_STRING /* X11R7.8 (perhaps) */ 607f2e35a3aSmrg#undef XTSTRINGDEFINES /* X11R5 and later */ 6085104ee6eSmrg$ac_includes_default 609f2e35a3aSmrg#include <X11/Intrinsic.h> 610f2e35a3aSmrg ],[String foo = malloc(1); *foo = 0],[ 611f2e35a3aSmrg cf_cv_const_x_string=no 612f2e35a3aSmrg ],[ 613f2e35a3aSmrg cf_cv_const_x_string=yes 614f2e35a3aSmrg ]) 615f2e35a3aSmrg]) 616f2e35a3aSmrg 617f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING]) 618f2e35a3aSmrg 619f2e35a3aSmrgcase "$cf_cv_const_x_string" in 620f2e35a3aSmrg(no) 621f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES) 622f2e35a3aSmrg ;; 623f2e35a3aSmrg(*) 624f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING) 625f2e35a3aSmrg ;; 626f2e35a3aSmrgesac 627f2e35a3aSmrg 628f2e35a3aSmrg]) 629f2e35a3aSmrg])dnl 630f2e35a3aSmrgdnl --------------------------------------------------------------------------- 631e39b573cSmrgdnl CF_DISABLE_DESKTOP version: 2 updated: 2011/04/22 05:17:37 632e39b573cSmrgdnl ------------------ 633e39b573cSmrgdnl Handle a configure option "--disable-desktop", which sets a shell 634e39b573cSmrgdnl variable $desktop_utils to a "#" if the feature is not wanted, or to an 635e39b573cSmrgdnl empty string if enabled. The variable is used to substitute in front of 636e39b573cSmrgdnl corresponding makefile-rules. 637e39b573cSmrgdnl 638e39b573cSmrgdnl It also tells the configure script to substitute the environment variable 639e39b573cSmrgdnl $DESKTOP_FLAGS, which can be used by external scripts to customize the 640e39b573cSmrgdnl invocation of desktop-file-util. 641e39b573cSmrgdnl 642e39b573cSmrgdnl $1 = program name 643e39b573cSmrgAC_DEFUN([CF_DISABLE_DESKTOP],[ 644e39b573cSmrg# Comment-out the install-desktop rule if the desktop-utils are not found. 645e39b573cSmrgAC_MSG_CHECKING(if you want to install desktop files) 646e39b573cSmrgCF_ARG_OPTION(desktop, 647e39b573cSmrg [ --disable-desktop disable install of $1 desktop files], 648e39b573cSmrg [enable_desktop=$enableval], 649e39b573cSmrg [enable_desktop=$enableval],yes) 650e39b573cSmrgAC_MSG_RESULT($enable_desktop) 651e39b573cSmrg 652e39b573cSmrgdesktop_utils= 653e39b573cSmrgif test "$enable_desktop" = yes ; then 654e39b573cSmrgAC_CHECK_PROG(desktop_utils,desktop-file-install,yes,no) 655e39b573cSmrgfi 656e39b573cSmrg 657e39b573cSmrgtest "$desktop_utils" = yes && desktop_utils= || desktop_utils="#" 658e39b573cSmrgAC_SUBST(DESKTOP_FLAGS) 659e39b573cSmrg]) 660e39b573cSmrgdnl --------------------------------------------------------------------------- 661a5ae21e4Smrgdnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04 662d522f475Smrgdnl --------------- 663a5ae21e4Smrgdnl You can always use "make -n" to see the actual options, but it is hard to 664d522f475Smrgdnl pick out/analyze warning messages when the compile-line is long. 665d522f475Smrgdnl 666d522f475Smrgdnl Sets: 667d522f475Smrgdnl ECHO_LT - symbol to control if libtool is verbose 668d522f475Smrgdnl ECHO_LD - symbol to prefix "cc -o" lines 669d522f475Smrgdnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o) 670d522f475Smrgdnl SHOW_CC - symbol to put before explicit "cc -c" lines 671d522f475Smrgdnl ECHO_CC - symbol to put before any "cc" line 672d522f475Smrgdnl 673d522f475SmrgAC_DEFUN([CF_DISABLE_ECHO],[ 674d522f475SmrgAC_MSG_CHECKING(if you want to see long compiling messages) 675d522f475SmrgCF_ARG_DISABLE(echo, 6760bd37d32Smrg [ --disable-echo do not display "compiling" commands], 677d522f475Smrg [ 6782e4f8982Smrg ECHO_LT='--silent' 6792e4f8982Smrg ECHO_LD='@echo linking [$]@;' 6802e4f8982Smrg RULE_CC='@echo compiling [$]<' 6812e4f8982Smrg SHOW_CC='@echo compiling [$]@' 6822e4f8982Smrg ECHO_CC='@' 683d522f475Smrg],[ 6842e4f8982Smrg ECHO_LT='' 6852e4f8982Smrg ECHO_LD='' 6862e4f8982Smrg RULE_CC='' 6872e4f8982Smrg SHOW_CC='' 6882e4f8982Smrg ECHO_CC='' 689d522f475Smrg]) 690d522f475SmrgAC_MSG_RESULT($enableval) 691d522f475SmrgAC_SUBST(ECHO_LT) 692d522f475SmrgAC_SUBST(ECHO_LD) 693d522f475SmrgAC_SUBST(RULE_CC) 694d522f475SmrgAC_SUBST(SHOW_CC) 695d522f475SmrgAC_SUBST(ECHO_CC) 696d522f475Smrg])dnl 697d522f475Smrgdnl --------------------------------------------------------------------------- 698ae137402Smrgdnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50 6990bd37d32Smrgdnl ---------------- 7000bd37d32Smrgdnl Combine no-leak checks with the libraries or tools that are used for the 7010bd37d32Smrgdnl checks. 7020bd37d32SmrgAC_DEFUN([CF_DISABLE_LEAKS],[ 7030bd37d32Smrg 7040bd37d32SmrgAC_REQUIRE([CF_WITH_DMALLOC]) 7050bd37d32SmrgAC_REQUIRE([CF_WITH_DBMALLOC]) 7060bd37d32SmrgAC_REQUIRE([CF_WITH_VALGRIND]) 7070bd37d32Smrg 7080bd37d32SmrgAC_MSG_CHECKING(if you want to perform memory-leak testing) 7090bd37d32SmrgAC_ARG_ENABLE(leaks, 7100bd37d32Smrg [ --disable-leaks test: free permanent memory, analyze leaks], 711ae137402Smrg [enable_leaks=$enableval], 712f2e35a3aSmrg [enable_leaks=yes]) 713ae137402Smrgdnl with_no_leaks is more readable... 714f2e35a3aSmrgif test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi 7150bd37d32SmrgAC_MSG_RESULT($with_no_leaks) 7160bd37d32Smrg 717f2e35a3aSmrgif test "$enable_leaks" = no ; then 7180bd37d32Smrg AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) 7190bd37d32Smrg AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) 7200bd37d32Smrgfi 7210bd37d32Smrg])dnl 7220bd37d32Smrgdnl --------------------------------------------------------------------------- 723f2e35a3aSmrgdnl CF_DISABLE_RPATH_HACK version: 3 updated: 2021/01/05 20:14:44 72420d2c4d2Smrgdnl --------------------- 72520d2c4d2Smrgdnl The rpath-hack makes it simpler to build programs, particularly with the 72620d2c4d2Smrgdnl *BSD ports which may have essential libraries in unusual places. But it 72720d2c4d2Smrgdnl can interfere with building an executable for the base system. Use this 72820d2c4d2Smrgdnl option in that case. 72920d2c4d2SmrgAC_DEFUN([CF_DISABLE_RPATH_HACK], 73020d2c4d2Smrg[ 731a1f3da82SmrgAC_MSG_CHECKING(if rpath-hack should be disabled) 73220d2c4d2SmrgCF_ARG_DISABLE(rpath-hack, 73320d2c4d2Smrg [ --disable-rpath-hack don't add rpath options for additional libraries], 734f2e35a3aSmrg [enable_rpath_hack=no], 735f2e35a3aSmrg [enable_rpath_hack=yes]) 736f2e35a3aSmrgdnl TODO - drop cf_disable_rpath_hack 737f2e35a3aSmrgif test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi 73820d2c4d2SmrgAC_MSG_RESULT($cf_disable_rpath_hack) 739f2e35a3aSmrg 740f2e35a3aSmrgif test "$enable_rpath_hack" = yes ; then 74120d2c4d2Smrg CF_RPATH_HACK 74220d2c4d2Smrgfi 74320d2c4d2Smrg]) 74420d2c4d2Smrgdnl --------------------------------------------------------------------------- 745f2e35a3aSmrgdnl CF_ENABLE_NARROWPROTO version: 6 updated: 2020/12/31 18:40:20 746d522f475Smrgdnl --------------------- 747d522f475Smrgdnl If this is not set properly, Xaw's scrollbars will not work. 748d522f475Smrgdnl The so-called "modular" configuration for X.org omits most of the 749d522f475Smrgdnl configure checks that would be needed to provide compatibility with 750d522f475Smrgdnl older X builds. This one breaks things noticeably. 751d522f475SmrgAC_DEFUN([CF_ENABLE_NARROWPROTO], 752d522f475Smrg[ 753d522f475SmrgAC_MSG_CHECKING(if you want narrow prototypes for X libraries) 754d522f475Smrg 75501037d57Smrgcase `$ac_config_guess` in 756f2e35a3aSmrg(*freebsd*|*gnu*|*irix5*|*irix6*|*netbsd*|*openbsd*|*qnx*|*sco*|*sgi*) 757d522f475Smrg cf_default_narrowproto=yes 758d522f475Smrg ;; 75901037d57Smrg(*) 760d522f475Smrg cf_default_narrowproto=no 761d522f475Smrg ;; 762d522f475Smrgesac 763d522f475Smrg 764d522f475SmrgCF_ARG_OPTION(narrowproto, 765d522f475Smrg [ --enable-narrowproto enable narrow prototypes for X libraries], 766d522f475Smrg [enable_narrowproto=$enableval], 767d522f475Smrg [enable_narrowproto=$cf_default_narrowproto], 768d522f475Smrg [$cf_default_narrowproto]) 769d522f475SmrgAC_MSG_RESULT($enable_narrowproto) 770d522f475Smrg]) 771d522f475Smrgdnl --------------------------------------------------------------------------- 772f2e35a3aSmrgdnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50 773f2e35a3aSmrgdnl ------------------ 774f2e35a3aSmrgdnl Configure-option to enable gcc warnings 775f2e35a3aSmrgdnl 776f2e35a3aSmrgdnl $1 = extra options to add, if supported 777f2e35a3aSmrgdnl $2 = option for checking attributes. By default, this is done when 778f2e35a3aSmrgdnl warnings are enabled. For other values: 779f2e35a3aSmrgdnl yes: always do this, e.g., to use in generated library-headers 780f2e35a3aSmrgdnl no: never do this 781f2e35a3aSmrgAC_DEFUN([CF_ENABLE_WARNINGS],[ 782f2e35a3aSmrgif test "$GCC" = yes || test "$GXX" = yes 783f2e35a3aSmrgthen 784f2e35a3aSmrgCF_FIX_WARNINGS(CFLAGS) 785f2e35a3aSmrgCF_FIX_WARNINGS(CPPFLAGS) 786f2e35a3aSmrgCF_FIX_WARNINGS(LDFLAGS) 787f2e35a3aSmrgAC_MSG_CHECKING(if you want to turn on gcc warnings) 788f2e35a3aSmrgCF_ARG_ENABLE(warnings, 789f2e35a3aSmrg [ --enable-warnings test: turn on gcc compiler warnings], 790f2e35a3aSmrg [enable_warnings=yes], 791f2e35a3aSmrg [enable_warnings=no]) 792f2e35a3aSmrgAC_MSG_RESULT($enable_warnings) 793f2e35a3aSmrgif test "$enable_warnings" = "yes" 794f2e35a3aSmrgthen 795f2e35a3aSmrg ifelse($2,,[CF_GCC_ATTRIBUTES]) 796f2e35a3aSmrg CF_GCC_WARNINGS($1) 797f2e35a3aSmrgfi 798f2e35a3aSmrgifelse($2,yes,[CF_GCC_ATTRIBUTES]) 799f2e35a3aSmrgfi 800f2e35a3aSmrg])dnl 801f2e35a3aSmrgdnl --------------------------------------------------------------------------- 802d522f475Smrgdnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39 803d522f475Smrgdnl -------- 804d522f475Smrgdnl Check if 'errno' is declared in <errno.h> 805d522f475SmrgAC_DEFUN([CF_ERRNO], 806d522f475Smrg[ 807d522f475SmrgCF_CHECK_ERRNO(errno) 808d522f475Smrg])dnl 809d522f475Smrgdnl --------------------------------------------------------------------------- 8104419d26bSmrgdnl CF_FIX_WARNINGS version: 4 updated: 2021/12/16 18:22:31 811f2e35a3aSmrgdnl --------------- 812f2e35a3aSmrgdnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc. Any of gcc's 813f2e35a3aSmrgdnl "-Werror" flags can interfere with configure-checks. Those go into 814f2e35a3aSmrgdnl EXTRA_CFLAGS. 815f2e35a3aSmrgdnl 816f2e35a3aSmrgdnl $1 = variable name to repair 817f2e35a3aSmrgdefine([CF_FIX_WARNINGS],[ 818f2e35a3aSmrgif test "$GCC" = yes || test "$GXX" = yes 819f2e35a3aSmrgthen 820f2e35a3aSmrg case [$]$1 in 821f2e35a3aSmrg (*-Werror=*) 822f2e35a3aSmrg cf_temp_flags= 823f2e35a3aSmrg for cf_temp_scan in [$]$1 824f2e35a3aSmrg do 825f2e35a3aSmrg case "x$cf_temp_scan" in 8264419d26bSmrg (x-Werror=format*) 8274419d26bSmrg CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) 8284419d26bSmrg ;; 829f2e35a3aSmrg (x-Werror=*) 830f2e35a3aSmrg CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan) 831f2e35a3aSmrg ;; 832f2e35a3aSmrg (*) 833f2e35a3aSmrg CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) 834f2e35a3aSmrg ;; 835f2e35a3aSmrg esac 836f2e35a3aSmrg done 8374419d26bSmrg if test "x[$]$1" != "x$cf_temp_flags" 8384419d26bSmrg then 8394419d26bSmrg CF_VERBOSE(repairing $1: [$]$1) 8404419d26bSmrg $1="$cf_temp_flags" 8414419d26bSmrg CF_VERBOSE(... fixed [$]$1) 8424419d26bSmrg CF_VERBOSE(... extra $EXTRA_CFLAGS) 8434419d26bSmrg fi 844f2e35a3aSmrg ;; 845f2e35a3aSmrg esac 846f2e35a3aSmrgfi 847f2e35a3aSmrgAC_SUBST(EXTRA_CFLAGS) 848f2e35a3aSmrg])dnl 849f2e35a3aSmrgdnl --------------------------------------------------------------------------- 85004b94745Smrgdnl CF_FUNC_GETTIME version: 3 updated: 2024/05/11 13:40:02 85104b94745Smrgdnl --------------- 85204b94745Smrgdnl Check for gettimeofday or clock_gettime. In 2023, the former is still more 85304b94745Smrgdnl widely supported, but "deprecated" (2008), so we will use the latter if it 85404b94745Smrgdnl is available, to reduce compiler warnings. 85504b94745SmrgAC_DEFUN([CF_FUNC_GETTIME],[ 85604b94745Smrgcf_save_libs="$LIBS" 85704b94745SmrgAC_CHECK_FUNC(clock_gettime, 85804b94745Smrg cf_cv_test_clock_gettime=yes, 85904b94745Smrg AC_CHECK_LIB(rt, clock_gettime, 86004b94745Smrg [LIBS="-lrt $LIBS" 86104b94745Smrg cf_cv_test_clock_gettime=yes], 86204b94745Smrg cf_cv_test_clock_gettime=no)) 86304b94745Smrg 86404b94745Smrgif test "$cf_cv_test_clock_gettime" = yes ; then 86504b94745SmrgAC_CACHE_CHECK(if clock_gettime links,cf_cv_func_clock_gettime,[ 86604b94745Smrg AC_TRY_LINK([ 86704b94745Smrg$ac_includes_default 86804b94745Smrg#include <time.h> 86904b94745Smrg ], 87004b94745Smrg [struct timespec ts; 87104b94745Smrg int rc = clock_gettime(CLOCK_REALTIME, &ts) 87204b94745Smrg + clock_gettime(CLOCK_MONOTONIC, &ts); 87304b94745Smrg (void) rc; (void)ts], 87404b94745Smrg [cf_cv_func_clock_gettime=yes], 87504b94745Smrg [cf_cv_func_clock_gettime=no]) 87604b94745Smrg]) 87704b94745Smrgelse 87804b94745Smrg cf_cv_func_clock_gettime=no 87904b94745Smrgfi 88004b94745Smrg 88104b94745Smrgif test "$cf_cv_func_clock_gettime" = yes 88204b94745Smrgthen 88304b94745Smrg AC_DEFINE(HAVE_CLOCK_GETTIME,1,[Define to 1 if we have clock_gettime function]) 88404b94745Smrgelse 88504b94745SmrgAC_CHECK_FUNC(gettimeofday, 88604b94745Smrg AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[ 88704b94745Smrg 88804b94745SmrgAC_CHECK_LIB(bsd, gettimeofday, 88904b94745Smrg AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]) 89004b94745Smrg CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday 89104b94745Smrgfi 89204b94745Smrg])dnl 89304b94745Smrgdnl --------------------------------------------------------------------------- 894f2e35a3aSmrgdnl CF_FUNC_GRANTPT version: 15 updated: 2020/12/31 18:40:20 895d522f475Smrgdnl --------------- 8960bd37d32Smrgdnl Check for grantpt versus openpty, as well as functions that "should" be 8970bd37d32Smrgdnl available if grantpt is available. 8980bd37d32SmrgAC_DEFUN([CF_FUNC_GRANTPT],[ 8990bd37d32Smrg 9000bd37d32SmrgAC_CHECK_HEADERS( \ 9010bd37d32Smrgstropts.h \ 9020bd37d32Smrg) 9030bd37d32Smrg 9040bd37d32Smrgcf_func_grantpt="grantpt ptsname" 905f2e35a3aSmrgcf_prefer_openpt=no 90601037d57Smrgcase $host_os in 90701037d57Smrg(darwin[[0-9]].*) 9080bd37d32Smrg ;; 909f2e35a3aSmrg(openbsd[[0-9]].*) 910f2e35a3aSmrg # The POSIX entrypoints exist, but have never worked. 911f2e35a3aSmrg ;; 912f2e35a3aSmrg(linux*) 913f2e35a3aSmrg cf_func_grantpt="$cf_func_grantpt posix_openpt" 914f2e35a3aSmrg cf_prefer_openpt=yes 915f2e35a3aSmrg ;; 91601037d57Smrg(*) 9170bd37d32Smrg cf_func_grantpt="$cf_func_grantpt posix_openpt" 9180bd37d32Smrg ;; 9190bd37d32Smrgesac 9200bd37d32Smrg 9210bd37d32SmrgAC_CHECK_FUNCS($cf_func_grantpt) 9220bd37d32Smrg 9230bd37d32Smrgcf_grantpt_opts= 9240bd37d32Smrgif test "x$ac_cv_func_grantpt" = "xyes" ; then 9250bd37d32Smrg AC_MSG_CHECKING(if grantpt really works) 9260bd37d32Smrg AC_TRY_LINK(CF__GRANTPT_HEAD,CF__GRANTPT_BODY,[ 9270bd37d32Smrg AC_TRY_RUN(CF__GRANTPT_HEAD 9280bd37d32Smrgint main(void) 9290bd37d32Smrg{ 9300bd37d32SmrgCF__GRANTPT_BODY 931d522f475Smrg} 9320bd37d32Smrg, 9330bd37d32Smrg,ac_cv_func_grantpt=no 9340bd37d32Smrg,ac_cv_func_grantpt=maybe) 9350bd37d32Smrg ],ac_cv_func_grantpt=no) 9360bd37d32Smrg AC_MSG_RESULT($ac_cv_func_grantpt) 9370bd37d32Smrg 9380bd37d32Smrg if test "x$ac_cv_func_grantpt" != "xno" ; then 9390bd37d32Smrg 9400bd37d32Smrg if test "x$ac_cv_func_grantpt" = "xyes" ; then 9410bd37d32Smrg AC_MSG_CHECKING(for pty features) 9420bd37d32Smrgdnl if we have no stropts.h, skip the checks for streams modules 9430bd37d32Smrg if test "x$ac_cv_header_stropts_h" = xyes 9440bd37d32Smrg then 9450bd37d32Smrg cf_pty_this=0 9460bd37d32Smrg else 9470bd37d32Smrg cf_pty_this=3 9480bd37d32Smrg fi 9490bd37d32Smrg 9500bd37d32Smrg cf_pty_defines= 9510bd37d32Smrg while test $cf_pty_this != 6 9520bd37d32Smrg do 9530bd37d32Smrg 9540bd37d32Smrg cf_pty_feature= 955f2e35a3aSmrg cf_pty_next="`expr $cf_pty_this + 1`" 9560bd37d32Smrg CF_MSG_LOG(pty feature test $cf_pty_next:5) 9570bd37d32Smrg AC_TRY_RUN(#define CONFTEST $cf_pty_this 9580bd37d32Smrg$cf_pty_defines 9590bd37d32SmrgCF__GRANTPT_HEAD 9600bd37d32Smrgint main(void) 9610bd37d32Smrg{ 9620bd37d32SmrgCF__GRANTPT_BODY 9630bd37d32Smrg} 9640bd37d32Smrg, 9650bd37d32Smrg[ 96601037d57Smrg case $cf_pty_next in 96701037d57Smrg (1) # - streams 9680bd37d32Smrg cf_pty_feature=ptem 9690bd37d32Smrg ;; 97001037d57Smrg (2) # - streams 9710bd37d32Smrg cf_pty_feature=ldterm 9720bd37d32Smrg ;; 97301037d57Smrg (3) # - streams 9740bd37d32Smrg cf_pty_feature=ttcompat 9750bd37d32Smrg ;; 97601037d57Smrg (4) 9770bd37d32Smrg cf_pty_feature=pty_isatty 9780bd37d32Smrg ;; 97901037d57Smrg (5) 9800bd37d32Smrg cf_pty_feature=pty_tcsetattr 9810bd37d32Smrg ;; 98201037d57Smrg (6) 9830bd37d32Smrg cf_pty_feature=tty_tcsetattr 9840bd37d32Smrg ;; 9850bd37d32Smrg esac 9860bd37d32Smrg],[ 98701037d57Smrg case $cf_pty_next in 98801037d57Smrg (1|2|3) 9890bd37d32Smrg CF_MSG_LOG(skipping remaining streams features $cf_pty_this..2) 9900bd37d32Smrg cf_pty_next=3 9910bd37d32Smrg ;; 9920bd37d32Smrg esac 9930bd37d32Smrg]) 9940bd37d32Smrg if test -n "$cf_pty_feature" 9950bd37d32Smrg then 9960bd37d32Smrg cf_pty_defines="$cf_pty_defines 9970bd37d32Smrg#define CONFTEST_$cf_pty_feature 1 9980bd37d32Smrg" 9990bd37d32Smrg cf_grantpt_opts="$cf_grantpt_opts $cf_pty_feature" 10000bd37d32Smrg fi 10010bd37d32Smrg 10020bd37d32Smrg cf_pty_this=$cf_pty_next 10030bd37d32Smrg done 10040bd37d32Smrg AC_MSG_RESULT($cf_grantpt_opts) 10050bd37d32Smrg cf_grantpt_opts=`echo "$cf_grantpt_opts" | sed -e 's/ isatty//'` 10060bd37d32Smrg fi 1007d522f475Smrg fi 10080bd37d32Smrgfi 10090bd37d32Smrg 10100bd37d32Smrgdnl If we found grantpt, but no features, e.g., for streams or if we are not 10110bd37d32Smrgdnl able to use tcsetattr, then give openpty a try. In particular, Darwin 10.7 10120bd37d32Smrgdnl has a more functional openpty than posix_openpt. 10130bd37d32Smrgdnl 10140bd37d32Smrgdnl There is no configure run-test for openpty, since older implementations do 10150bd37d32Smrgdnl not always run properly as a non-root user. For that reason, we also allow 10160bd37d32Smrgdnl the configure script to suppress this check entirely with $disable_openpty. 1017f2e35a3aSmrgif test "x$cf_prefer_posix_openpt" = "xyes" && test "x$ac_cv_func_posix_openpt" = "xyes" ; then 1018f2e35a3aSmrg CF_VERBOSE(prefer posix_openpt over openpty) 1019f2e35a3aSmrgelif test "x$disable_openpty" != "xyes" || test -z "$cf_grantpt_opts" ; then 10200bd37d32Smrg AC_CHECK_LIB(util, openpty, [cf_have_openpty=yes],[cf_have_openpty=no]) 10210bd37d32Smrg if test "$cf_have_openpty" = yes ; then 10220bd37d32Smrg ac_cv_func_grantpt=no 10230bd37d32Smrg LIBS="-lutil $LIBS" 10240bd37d32Smrg AC_DEFINE(HAVE_OPENPTY,1,[Define to 1 if you have the openpty function]) 10250bd37d32Smrg AC_CHECK_HEADERS( \ 10260bd37d32Smrg util.h \ 10270bd37d32Smrg libutil.h \ 10280bd37d32Smrg pty.h \ 10290bd37d32Smrg ) 10300bd37d32Smrg fi 10310bd37d32Smrgfi 10320bd37d32Smrg 10330bd37d32Smrgdnl If we did not settle on using openpty, fill in the definitions for grantpt. 10340bd37d32Smrgif test "x$ac_cv_func_grantpt" != xno 10350bd37d32Smrgthen 10360bd37d32Smrg CF_VERBOSE(will rely upon grantpt) 10370bd37d32Smrg AC_DEFINE(HAVE_WORKING_GRANTPT,1,[Define to 1 if the grantpt function seems to work]) 10380bd37d32Smrg for cf_feature in $cf_grantpt_opts 10390bd37d32Smrg do 10400bd37d32Smrg cf_feature=`echo "$cf_feature" | sed -e 's/ //g'` 10410bd37d32Smrg CF_UPPER(cf_FEATURE,$cf_feature) 10420bd37d32Smrg AC_DEFINE_UNQUOTED(HAVE_GRANTPT_$cf_FEATURE) 10430bd37d32Smrg done 10440bd37d32Smrgelif test "x$cf_have_openpty" = xno 10450bd37d32Smrgthen 10460bd37d32Smrg CF_VERBOSE(will rely upon BSD-pseudoterminals) 10470bd37d32Smrgelse 10480bd37d32Smrg CF_VERBOSE(will rely upon openpty) 10490bd37d32Smrgfi 10500bd37d32Smrg])dnl 1051d522f475Smrgdnl --------------------------------------------------------------------------- 105204b94745Smrgdnl CF_FUNC_STRFTIME version: 2 updated: 2023/12/01 20:44:51 105304b94745Smrgdnl ---------------- 105404b94745SmrgAC_DEFUN([CF_FUNC_STRFTIME], 105504b94745Smrg[ 105604b94745SmrgAC_CACHE_CHECK(for strftime function,cf_cv_func_strftime,[ 105704b94745SmrgAC_TRY_LINK([ 105804b94745Smrg$ac_includes_default 105904b94745Smrg#include <time.h> 106004b94745Smrg],[ 106104b94745Smrg time_t now = time((time_t*)0); 106204b94745Smrg struct tm *tm = localtime(&now); 106304b94745Smrg char buffer[80]; 106404b94745Smrg size_t result = strftime(buffer, sizeof(buffer), "%c", tm); 106504b94745Smrg 106604b94745Smrg (void)result; 106704b94745Smrg (void)buffer; 106804b94745Smrg],[cf_cv_func_strftime=yes],[cf_cv_func_strftime=no]) 106904b94745Smrg]) 107004b94745Smrg 107104b94745Smrgtest "$cf_cv_func_strftime" = yes && AC_DEFINE(HAVE_STRFTIME,1,[Define to 1 to indicate that strftime function is present]) 107204b94745Smrg])dnl 107304b94745Smrgdnl --------------------------------------------------------------------------- 107404b94745Smrgdnl CF_FUNC_TGETENT version: 27 updated: 2023/12/01 17:22:50 1075d522f475Smrgdnl --------------- 1076d522f475Smrgdnl Check for tgetent function in termcap library. If we cannot find this, 1077d522f475Smrgdnl we'll use the $LINES and $COLUMNS environment variables to pass screen 1078d522f475Smrgdnl size information to subprocesses. (We cannot use terminfo's compatibility 1079d522f475Smrgdnl function, since it cannot provide the termcap-format data). 1080d522f475Smrgdnl 1081d522f475Smrgdnl If the --disable-full-tgetent option is given, we'll settle for the first 1082d522f475Smrgdnl tgetent function we find. Since the search list in that case does not 1083d522f475Smrgdnl include the termcap library, that allows us to default to terminfo. 1084d522f475SmrgAC_DEFUN([CF_FUNC_TGETENT], 1085d522f475Smrg[ 1086d522f475Smrg# compute a reasonable value for $TERM to give tgetent(), since we may be 1087d522f475Smrg# running in 'screen', which sets $TERMCAP to a specific entry that is not 1088d522f475Smrg# necessarily in /etc/termcap - unsetenv is not portable, so we cannot simply 1089d522f475Smrg# discard $TERMCAP. 1090d522f475Smrgcf_TERMVAR=vt100 1091e39b573cSmrgif test -n "$TERMCAP" 1092e39b573cSmrgthen 1093e39b573cSmrg cf_TERMCAP=`echo "$TERMCAP" | tr '\n' ' ' | sed -e 's/^..|//' -e 's/|.*//'` 109401037d57Smrg case "$cf_TERMCAP" in 109501037d57Smrg (screen*.*) 1096e39b573cSmrg ;; 109701037d57Smrg (*) 1098e39b573cSmrg cf_TERMVAR="$cf_TERMCAP" 1099e39b573cSmrg ;; 1100e39b573cSmrg esac 1101e39b573cSmrgfi 1102d522f475Smrgtest -z "$cf_TERMVAR" && cf_TERMVAR=vt100 1103d522f475Smrg 1104f2e35a3aSmrg# BSD termcap used no header file 1105f2e35a3aSmrg# SVr4 provided termcap prototypes as a legacy feature in term.h 1106f2e35a3aSmrg# GNU termcap provided termcap prototypes in termcap.h 1107f2e35a3aSmrg# ncurses provides termcap prototypes in both term.h and termcap.h 1108f2e35a3aSmrg# 1109f2e35a3aSmrg# The terminfo-based termcap interfaces do not provide a full tgetent (i.e., do 1110f2e35a3aSmrg# not return the text of the termcap entry in the buffer), but as a special 1111f2e35a3aSmrg# case, FreeBSD provides ncurses' termcap.h with a modified termcap reader that 1112f2e35a3aSmrg# returns the termcap text. 1113f2e35a3aSmrgAC_CHECK_HEADERS(termcap.h) 1114f2e35a3aSmrg 11155307cd1aSmrgcf_termcap_h="\ 11165307cd1aSmrg#ifdef HAVE_TERMCAP_H 11175307cd1aSmrg#include <termcap.h> 11185307cd1aSmrg#else 11195307cd1aSmrgextern int tgetent(char *, const char *); 11205307cd1aSmrg#endif" 11215307cd1aSmrg 1122d522f475SmrgAC_MSG_CHECKING(if we want full tgetent function) 1123d522f475SmrgCF_ARG_DISABLE(full-tgetent, 1124d522f475Smrg [ --disable-full-tgetent disable check for full tgetent function], 1125d522f475Smrg cf_full_tgetent=no, 1126d522f475Smrg cf_full_tgetent=yes,yes) 1127d522f475SmrgAC_MSG_RESULT($cf_full_tgetent) 1128d522f475Smrg 1129d522f475Smrgif test "$cf_full_tgetent" = yes ; then 1130d522f475Smrg cf_test_message="full tgetent" 1131d522f475Smrgelse 1132d522f475Smrg cf_test_message="tgetent" 1133d522f475Smrgfi 1134d522f475Smrg 1135d522f475SmrgAC_CACHE_CHECK(for $cf_test_message function,cf_cv_lib_tgetent,[ 1136d522f475Smrgcf_save_LIBS="$LIBS" 1137d522f475Smrgcf_cv_lib_tgetent=no 11385307cd1aSmrgcf_TERMLIB="termlib ncursesw ncurses curses" 1139d522f475Smrgif test "$cf_full_tgetent" = yes ; then 11405307cd1aSmrg cf_TERMLIB="otermcap termcap $cf_TERMLIB" 1141d522f475Smrg cf_TERMTST="buffer[[0]] == 0" 1142d522f475Smrgelse 11435307cd1aSmrg cf_TERMLIB="tinfow tinfo $cf_TERMLIB" 1144d522f475Smrg cf_TERMTST="0" 1145d522f475Smrgfi 1146d522f475Smrgfor cf_termlib in '' $cf_TERMLIB ; do 1147d522f475Smrg LIBS="$cf_save_LIBS" 11482e4f8982Smrg test -n "$cf_termlib" && { CF_ADD_LIB($cf_termlib) } 1149d522f475Smrg AC_TRY_RUN([ 11505307cd1aSmrg$cf_termcap_h 11515307cd1aSmrg 1152d522f475Smrg/* terminfo implementations ignore the buffer argument, making it useless for 1153d522f475Smrg * the xterm application, which uses this information to make a new TERMCAP 1154d522f475Smrg * environment variable. 1155d522f475Smrg */ 1156f2e35a3aSmrgint main(void) 1157d522f475Smrg{ 1158d522f475Smrg char buffer[1024]; 1159d522f475Smrg buffer[0] = 0; 1160d522f475Smrg tgetent(buffer, "$cf_TERMVAR"); 1161d522f475Smrg ${cf_cv_main_return:-return} ($cf_TERMTST); }], 1162d522f475Smrg [echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&AC_FD_CC 1163d522f475Smrg if test -n "$cf_termlib" ; then 1164d522f475Smrg cf_cv_lib_tgetent="-l$cf_termlib" 1165d522f475Smrg else 1166d522f475Smrg cf_cv_lib_tgetent=yes 1167d522f475Smrg fi 1168d522f475Smrg break], 1169d522f475Smrg [echo "no, there is no termcap/tgetent in $cf_termlib" 1>&AC_FD_CC], 1170d522f475Smrg [echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&AC_FD_CC]) 1171d522f475Smrgdone 1172d522f475SmrgLIBS="$cf_save_LIBS" 1173d522f475Smrg]) 1174d522f475Smrg 1175d522f475Smrg# If we found a working tgetent(), set LIBS and check for termcap.h. 1176d522f475Smrg# (LIBS cannot be set inside AC_CACHE_CHECK; the commands there should 1177d522f475Smrg# not have side effects other than setting the cache variable, because 1178d522f475Smrg# they are not executed when a cached value exists.) 1179e39b573cSmrgif test "x$cf_cv_lib_tgetent" != xno ; then 11802e4f8982Smrg test "x$cf_cv_lib_tgetent" != xyes && { CF_ADD_LIBS($cf_cv_lib_tgetent) } 11810bd37d32Smrg AC_DEFINE(USE_TERMCAP,1,[Define 1 to indicate that working tgetent is found]) 118220d2c4d2Smrg if test "$cf_full_tgetent" = no ; then 118320d2c4d2Smrg AC_TRY_COMPILE([ 1184d522f475Smrg#include <termcap.h>],[ 1185d522f475Smrg#ifdef NCURSES_VERSION 118604b94745Smrg#error do not use ncurses termcap.h 1187d522f475Smrg#endif],[AC_DEFINE(HAVE_TERMCAP_H)]) 118820d2c4d2Smrg fi 1189d522f475Smrgelse 1190d522f475Smrg # If we didn't find a tgetent() that supports the buffer 1191d522f475Smrg # argument, look again to see whether we can find even 1192d522f475Smrg # a crippled one. A crippled tgetent() is still useful to 1193d522f475Smrg # validate values for the TERM environment variable given to 1194d522f475Smrg # child processes. 1195d522f475Smrg AC_CACHE_CHECK(for partial tgetent function,cf_cv_lib_part_tgetent,[ 1196d522f475Smrg cf_cv_lib_part_tgetent=no 1197d522f475Smrg for cf_termlib in $cf_TERMLIB ; do 1198d522f475Smrg LIBS="$cf_save_LIBS -l$cf_termlib" 11995307cd1aSmrg AC_TRY_LINK([$cf_termcap_h],[tgetent(0, "$cf_TERMVAR")], 1200d522f475Smrg [echo "there is a terminfo/tgetent in $cf_termlib" 1>&AC_FD_CC 1201d522f475Smrg cf_cv_lib_part_tgetent="-l$cf_termlib" 1202d522f475Smrg break]) 1203d522f475Smrg done 1204d522f475Smrg LIBS="$cf_save_LIBS" 1205d522f475Smrg ]) 1206d522f475Smrg 1207d522f475Smrg if test "$cf_cv_lib_part_tgetent" != no ; then 120820d2c4d2Smrg CF_ADD_LIBS($cf_cv_lib_part_tgetent) 1209d522f475Smrg # If this is linking against ncurses, we'll trigger the 1210d522f475Smrg # ifdef in resize.c that turns the termcap stuff back off. 12110bd37d32Smrg AC_DEFINE(USE_TERMINFO,1,[Define to 1 to indicate that terminfo provides the tgetent interface]) 1212d522f475Smrg fi 1213d522f475Smrgfi 1214d522f475Smrg])dnl 1215d522f475Smrgdnl --------------------------------------------------------------------------- 1216ad37e533Smrgdnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25 1217d522f475Smrgdnl ----------------- 1218d522f475Smrgdnl Test for availability of useful gcc __attribute__ directives to quiet 1219d522f475Smrgdnl compiler warnings. Though useful, not all are supported -- and contrary 1220d522f475Smrgdnl to documentation, unrecognized directives cause older compilers to barf. 1221d522f475SmrgAC_DEFUN([CF_GCC_ATTRIBUTES], 1222f2e35a3aSmrg[AC_REQUIRE([AC_PROG_FGREP])dnl 1223ad37e533SmrgAC_REQUIRE([CF_C11_NORETURN])dnl 1224f2e35a3aSmrg 1225f2e35a3aSmrgif test "$GCC" = yes || test "$GXX" = yes 1226d522f475Smrgthen 1227d522f475Smrgcat > conftest.i <<EOF 1228d522f475Smrg#ifndef GCC_PRINTF 1229d522f475Smrg#define GCC_PRINTF 0 1230d522f475Smrg#endif 1231d522f475Smrg#ifndef GCC_SCANF 1232d522f475Smrg#define GCC_SCANF 0 1233d522f475Smrg#endif 1234d522f475Smrg#ifndef GCC_NORETURN 1235d522f475Smrg#define GCC_NORETURN /* nothing */ 1236d522f475Smrg#endif 1237d522f475Smrg#ifndef GCC_UNUSED 1238d522f475Smrg#define GCC_UNUSED /* nothing */ 1239d522f475Smrg#endif 1240d522f475SmrgEOF 1241d522f475Smrgif test "$GCC" = yes 1242d522f475Smrgthen 1243d522f475Smrg AC_CHECKING([for $CC __attribute__ directives]) 1244f2e35a3aSmrgcat > "conftest.$ac_ext" <<EOF 12456879286fSmrg#line __oline__ "${as_me:-configure}" 12465307cd1aSmrg#include <stdio.h> 1247d522f475Smrg#include "confdefs.h" 1248d522f475Smrg#include "conftest.h" 1249d522f475Smrg#include "conftest.i" 1250d522f475Smrg#if GCC_PRINTF 1251d522f475Smrg#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) 1252d522f475Smrg#else 1253d522f475Smrg#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ 1254d522f475Smrg#endif 1255d522f475Smrg#if GCC_SCANF 1256d522f475Smrg#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) 1257d522f475Smrg#else 1258d522f475Smrg#define GCC_SCANFLIKE(fmt,var) /*nothing*/ 1259d522f475Smrg#endif 1260d522f475Smrgextern void wow(char *,...) GCC_SCANFLIKE(1,2); 1261ad37e533Smrgextern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2); 1262ad37e533Smrgextern GCC_NORETURN void foo(void); 1263f2e35a3aSmrgint main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; } 1264d522f475SmrgEOF 126520d2c4d2Smrg cf_printf_attribute=no 126620d2c4d2Smrg cf_scanf_attribute=no 1267d522f475Smrg for cf_attribute in scanf printf unused noreturn 1268d522f475Smrg do 1269d522f475Smrg CF_UPPER(cf_ATTRIBUTE,$cf_attribute) 1270d522f475Smrg cf_directive="__attribute__(($cf_attribute))" 1271d522f475Smrg echo "checking for $CC $cf_directive" 1>&AC_FD_CC 127220d2c4d2Smrg 1273f2e35a3aSmrg case "$cf_attribute" in 127401037d57Smrg (printf) 127520d2c4d2Smrg cf_printf_attribute=yes 127620d2c4d2Smrg cat >conftest.h <<EOF 1277d522f475Smrg#define GCC_$cf_ATTRIBUTE 1 1278d522f475SmrgEOF 1279d522f475Smrg ;; 128001037d57Smrg (scanf) 128120d2c4d2Smrg cf_scanf_attribute=yes 128220d2c4d2Smrg cat >conftest.h <<EOF 128320d2c4d2Smrg#define GCC_$cf_ATTRIBUTE 1 128420d2c4d2SmrgEOF 128520d2c4d2Smrg ;; 128601037d57Smrg (*) 128720d2c4d2Smrg cat >conftest.h <<EOF 1288d522f475Smrg#define GCC_$cf_ATTRIBUTE $cf_directive 1289d522f475SmrgEOF 1290d522f475Smrg ;; 1291d522f475Smrg esac 129220d2c4d2Smrg 1293d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1294d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute) 1295d522f475Smrg cat conftest.h >>confdefs.h 1296f2e35a3aSmrg case "$cf_attribute" in 129701037d57Smrg (noreturn) 12980bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc]) 12990bd37d32Smrg ;; 130001037d57Smrg (printf) 13010bd37d32Smrg cf_value='/* nothing */' 13020bd37d32Smrg if test "$cf_printf_attribute" != no ; then 13030bd37d32Smrg cf_value='__attribute__((format(printf,fmt,var)))' 13040bd37d32Smrg AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.]) 130520d2c4d2Smrg fi 13060bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc]) 130720d2c4d2Smrg ;; 130801037d57Smrg (scanf) 13090bd37d32Smrg cf_value='/* nothing */' 13100bd37d32Smrg if test "$cf_scanf_attribute" != no ; then 13110bd37d32Smrg cf_value='__attribute__((format(scanf,fmt,var)))' 13120bd37d32Smrg AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.]) 131320d2c4d2Smrg fi 13140bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc]) 13150bd37d32Smrg ;; 131601037d57Smrg (unused) 13170bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc]) 131820d2c4d2Smrg ;; 131920d2c4d2Smrg esac 1320d522f475Smrg fi 1321d522f475Smrg done 1322d522f475Smrgelse 1323f2e35a3aSmrg ${FGREP-fgrep} define conftest.i >>confdefs.h 1324d522f475Smrgfi 1325f2e35a3aSmrgrm -rf ./conftest* 1326d522f475Smrgfi 1327d522f475Smrg])dnl 1328d522f475Smrgdnl --------------------------------------------------------------------------- 132904b94745Smrgdnl CF_GCC_VERSION version: 9 updated: 2023/03/05 14:30:13 1330d522f475Smrgdnl -------------- 1331f2e35a3aSmrgdnl Find version of gcc, and (because icc/clang pretend to be gcc without being 1332f2e35a3aSmrgdnl compatible), attempt to determine if icc/clang is actually used. 1333d522f475SmrgAC_DEFUN([CF_GCC_VERSION],[ 1334d522f475SmrgAC_REQUIRE([AC_PROG_CC]) 1335d522f475SmrgGCC_VERSION=none 1336d522f475Smrgif test "$GCC" = yes ; then 1337d522f475Smrg AC_MSG_CHECKING(version of $CC) 133804b94745Smrg GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" 1339d522f475Smrg test -z "$GCC_VERSION" && GCC_VERSION=unknown 1340d522f475Smrg AC_MSG_RESULT($GCC_VERSION) 1341d522f475Smrgfi 1342f2e35a3aSmrgCF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) 1343f2e35a3aSmrgCF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS) 1344d522f475Smrg])dnl 1345d522f475Smrgdnl --------------------------------------------------------------------------- 13465104ee6eSmrgdnl CF_GCC_WARNINGS version: 43 updated: 2024/12/21 08:44:12 1347d522f475Smrgdnl --------------- 1348d522f475Smrgdnl Check if the compiler supports useful warning options. There's a few that 1349d522f475Smrgdnl we don't use, simply because they're too noisy: 1350d522f475Smrgdnl 1351d522f475Smrgdnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) 1352f2e35a3aSmrgdnl -Winline (usually not worthwhile) 1353d522f475Smrgdnl -Wredundant-decls (system headers make this too noisy) 1354d522f475Smrgdnl -Wtraditional (combines too many unrelated messages, only a few useful) 1355d522f475Smrgdnl -Wwrite-strings (too noisy, but should review occasionally). This 1356d522f475Smrgdnl is enabled for ncurses using "--enable-const". 1357d522f475Smrgdnl -pedantic 1358d522f475Smrgdnl 1359d522f475Smrgdnl Parameter: 1360d522f475Smrgdnl $1 is an optional list of gcc warning flags that a particular 1361d522f475Smrgdnl application might want to use, e.g., "no-unused" for 1362d522f475Smrgdnl -Wno-unused 1363d522f475Smrgdnl Special: 1364d522f475Smrgdnl If $with_ext_const is "yes", add a check for -Wwrite-strings 1365d522f475Smrgdnl 1366d522f475SmrgAC_DEFUN([CF_GCC_WARNINGS], 1367d522f475Smrg[ 1368d522f475SmrgAC_REQUIRE([CF_GCC_VERSION]) 1369f2e35a3aSmrgif test "x$have_x" = xyes; then CF_CONST_X_STRING fi 1370f2e35a3aSmrgcat > "conftest.$ac_ext" <<EOF 13716879286fSmrg#line __oline__ "${as_me:-configure}" 1372d522f475Smrgint main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; } 1373d522f475SmrgEOF 1374d522f475Smrgif test "$INTEL_COMPILER" = yes 1375d522f475Smrgthen 1376d522f475Smrg# The "-wdXXX" options suppress warnings: 1377d522f475Smrg# remark #1419: external declaration in primary source file 1378d522f475Smrg# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem) 1379d522f475Smrg# remark #1684: conversion from pointer to same-sized integral type (potential portability problem) 1380d522f475Smrg# remark #193: zero used for undefined preprocessing identifier 1381d522f475Smrg# remark #593: variable "curs_sb_left_arrow" was set but never used 1382d522f475Smrg# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits 1383d522f475Smrg# remark #869: parameter "tw" was never referenced 1384d522f475Smrg# remark #981: operands are evaluated in unspecified order 1385956cc18dSsnj# warning #279: controlling expression is constant 1386d522f475Smrg 1387d522f475Smrg AC_CHECKING([for $CC warning options]) 1388d522f475Smrg cf_save_CFLAGS="$CFLAGS" 1389f2e35a3aSmrg EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" 1390d522f475Smrg for cf_opt in \ 1391d522f475Smrg wd1419 \ 1392d522f475Smrg wd1683 \ 1393d522f475Smrg wd1684 \ 1394d522f475Smrg wd193 \ 1395d522f475Smrg wd593 \ 1396956cc18dSsnj wd279 \ 1397d522f475Smrg wd810 \ 1398d522f475Smrg wd869 \ 1399d522f475Smrg wd981 1400d522f475Smrg do 1401d522f475Smrg CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" 1402d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1403d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) 1404d522f475Smrg EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" 1405d522f475Smrg fi 1406d522f475Smrg done 1407d522f475Smrg CFLAGS="$cf_save_CFLAGS" 1408f2e35a3aSmrgelif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" 1409d522f475Smrgthen 1410d522f475Smrg AC_CHECKING([for $CC warning options]) 1411d522f475Smrg cf_save_CFLAGS="$CFLAGS" 1412d522f475Smrg cf_warn_CONST="" 1413d522f475Smrg test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" 1414e0a2b6dfSmrg cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" 1415e0a2b6dfSmrg test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= 141620d2c4d2Smrg for cf_opt in W Wall \ 1417d522f475Smrg Wbad-function-cast \ 1418d522f475Smrg Wcast-align \ 1419d522f475Smrg Wcast-qual \ 1420e0a2b6dfSmrg Wdeclaration-after-statement \ 1421e0a2b6dfSmrg Wextra \ 1422d522f475Smrg Winline \ 1423d522f475Smrg Wmissing-declarations \ 1424d522f475Smrg Wmissing-prototypes \ 1425d522f475Smrg Wnested-externs \ 1426d522f475Smrg Wpointer-arith \ 1427d522f475Smrg Wshadow \ 1428d522f475Smrg Wstrict-prototypes \ 1429f2e35a3aSmrg Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1 1430d522f475Smrg do 1431d522f475Smrg CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" 1432d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1433d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) 1434f2e35a3aSmrg case "$cf_opt" in 143501037d57Smrg (Winline) 1436f2e35a3aSmrg case "$GCC_VERSION" in 143701037d57Smrg ([[34]].*) 1438d522f475Smrg CF_VERBOSE(feature is broken in gcc $GCC_VERSION) 1439d522f475Smrg continue;; 1440d522f475Smrg esac 1441d522f475Smrg ;; 144201037d57Smrg (Wpointer-arith) 1443f2e35a3aSmrg case "$GCC_VERSION" in 144401037d57Smrg ([[12]].*) 14450bd37d32Smrg CF_VERBOSE(feature is broken in gcc $GCC_VERSION) 14460bd37d32Smrg continue;; 14470bd37d32Smrg esac 14480bd37d32Smrg ;; 1449d522f475Smrg esac 1450d522f475Smrg EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" 1451d522f475Smrg fi 1452d522f475Smrg done 1453d522f475Smrg CFLAGS="$cf_save_CFLAGS" 1454d522f475Smrgfi 1455f2e35a3aSmrgrm -rf ./conftest* 1456d522f475Smrg 1457d522f475SmrgAC_SUBST(EXTRA_CFLAGS) 1458d522f475Smrg])dnl 1459d522f475Smrgdnl --------------------------------------------------------------------------- 14605104ee6eSmrgdnl CF_GLOB_FULLPATH version: 2 updated: 2024/08/03 12:34:02 14615104ee6eSmrgdnl ---------------- 14625104ee6eSmrgdnl Use this in case-statements to check for pathname syntax, i.e., absolute 14635104ee6eSmrgdnl pathnames. The "x" is assumed since we provide an alternate form for DOS. 14645104ee6eSmrgAC_DEFUN([CF_GLOB_FULLPATH],[ 14655104ee6eSmrgAC_REQUIRE([CF_WITH_SYSTYPE])dnl 14665104ee6eSmrgcase "$cf_cv_system_name" in 14675104ee6eSmrg(cygwin*|msys*|mingw32*|mingw64|os2*) 14685104ee6eSmrg GLOB_FULLPATH_POSIX='/*' 14695104ee6eSmrg GLOB_FULLPATH_OTHER='[[a-zA-Z]]:[[\\/]]*' 14705104ee6eSmrg ;; 14715104ee6eSmrg(*) 14725104ee6eSmrg GLOB_FULLPATH_POSIX='/*' 14735104ee6eSmrg GLOB_FULLPATH_OTHER=$GLOB_FULLPATH_POSIX 14745104ee6eSmrg ;; 14755104ee6eSmrgesac 14765104ee6eSmrgAC_SUBST(GLOB_FULLPATH_POSIX) 14775104ee6eSmrgAC_SUBST(GLOB_FULLPATH_OTHER) 14785104ee6eSmrg])dnl 14795104ee6eSmrgdnl --------------------------------------------------------------------------- 1480f2e35a3aSmrgdnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41 1481d522f475Smrgdnl ------------- 1482d522f475Smrgdnl Check if we must define _GNU_SOURCE to get a reasonable value for 1483d522f475Smrgdnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect 1484d522f475Smrgdnl (or misfeature) of glibc2, which breaks portability of many applications, 1485d522f475Smrgdnl since it is interwoven with GNU extensions. 1486d522f475Smrgdnl 1487d522f475Smrgdnl Well, yes we could work around it... 1488f2e35a3aSmrgdnl 1489f2e35a3aSmrgdnl Parameters: 1490f2e35a3aSmrgdnl $1 is the nominal value for _XOPEN_SOURCE 1491d522f475SmrgAC_DEFUN([CF_GNU_SOURCE], 1492d522f475Smrg[ 1493f2e35a3aSmrgcf_gnu_xopen_source=ifelse($1,,500,$1) 1494f2e35a3aSmrg 1495f2e35a3aSmrgAC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[ 1496d522f475SmrgAC_TRY_COMPILE([#include <sys/types.h>],[ 1497f2e35a3aSmrg #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 1498f2e35a3aSmrg return 0; 1499f2e35a3aSmrg #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 1500f2e35a3aSmrg return 0; 1501f2e35a3aSmrg #else 1502f2e35a3aSmrg # error not GNU C library 1503f2e35a3aSmrg #endif], 1504f2e35a3aSmrg [cf_cv_gnu_library=yes], 1505f2e35a3aSmrg [cf_cv_gnu_library=no]) 1506d522f475Smrg]) 1507913cc679Smrg 1508f2e35a3aSmrgif test x$cf_cv_gnu_library = xyes; then 1509f2e35a3aSmrg 1510f2e35a3aSmrg # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE 1511f2e35a3aSmrg # was changed to help a little. newlib incorporated the change about 4 1512f2e35a3aSmrg # years later. 1513f2e35a3aSmrg AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[ 1514f2e35a3aSmrg cf_save="$CPPFLAGS" 1515f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) 1516f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1517f2e35a3aSmrg #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2) 1518f2e35a3aSmrg return 0; 1519f2e35a3aSmrg #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3) 1520f2e35a3aSmrg return 0; 1521f2e35a3aSmrg #else 1522f2e35a3aSmrg # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old 1523f2e35a3aSmrg #endif], 1524f2e35a3aSmrg [cf_cv_gnu_library_219=yes], 1525f2e35a3aSmrg [cf_cv_gnu_library_219=no]) 1526f2e35a3aSmrg CPPFLAGS="$cf_save" 1527913cc679Smrg ]) 1528f2e35a3aSmrg 1529f2e35a3aSmrg if test "x$cf_cv_gnu_library_219" = xyes; then 1530f2e35a3aSmrg cf_save="$CPPFLAGS" 1531f2e35a3aSmrg AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[ 1532f2e35a3aSmrg CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source) 1533f2e35a3aSmrg AC_TRY_COMPILE([ 1534f2e35a3aSmrg #include <limits.h> 1535f2e35a3aSmrg #include <sys/types.h> 1536f2e35a3aSmrg ],[ 1537f2e35a3aSmrg #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) 1538f2e35a3aSmrg return 0; 1539f2e35a3aSmrg #else 1540f2e35a3aSmrg # error GNU C library is too old 1541f2e35a3aSmrg #endif], 1542f2e35a3aSmrg [cf_cv_gnu_dftsrc_219=yes], 1543f2e35a3aSmrg [cf_cv_gnu_dftsrc_219=no]) 1544f2e35a3aSmrg ]) 1545f2e35a3aSmrg test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" 1546f2e35a3aSmrg else 1547f2e35a3aSmrg cf_cv_gnu_dftsrc_219=maybe 1548f2e35a3aSmrg fi 1549f2e35a3aSmrg 1550f2e35a3aSmrg if test "x$cf_cv_gnu_dftsrc_219" != xyes; then 1551f2e35a3aSmrg 1552f2e35a3aSmrg AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[ 1553f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1554f2e35a3aSmrg #ifndef _XOPEN_SOURCE 1555f2e35a3aSmrg #error expected _XOPEN_SOURCE to be defined 1556f2e35a3aSmrg #endif], 1557f2e35a3aSmrg [cf_cv_gnu_source=no], 1558f2e35a3aSmrg [cf_save="$CPPFLAGS" 1559f2e35a3aSmrg CF_ADD_CFLAGS(-D_GNU_SOURCE) 1560f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1561f2e35a3aSmrg #ifdef _XOPEN_SOURCE 1562f2e35a3aSmrg #error expected _XOPEN_SOURCE to be undefined 1563f2e35a3aSmrg #endif], 1564f2e35a3aSmrg [cf_cv_gnu_source=no], 1565f2e35a3aSmrg [cf_cv_gnu_source=yes]) 1566f2e35a3aSmrg CPPFLAGS="$cf_save" 1567f2e35a3aSmrg ]) 1568f2e35a3aSmrg ]) 1569f2e35a3aSmrg 1570f2e35a3aSmrg if test "$cf_cv_gnu_source" = yes 1571f2e35a3aSmrg then 1572f2e35a3aSmrg AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[ 1573f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE) 1574f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1575f2e35a3aSmrg #ifdef _DEFAULT_SOURCE 1576f2e35a3aSmrg #error expected _DEFAULT_SOURCE to be undefined 1577f2e35a3aSmrg #endif], 1578f2e35a3aSmrg [cf_cv_default_source=no], 1579f2e35a3aSmrg [cf_cv_default_source=yes]) 1580f2e35a3aSmrg ]) 1581f2e35a3aSmrg if test "$cf_cv_default_source" = yes 1582f2e35a3aSmrg then 1583f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) 1584f2e35a3aSmrg fi 1585f2e35a3aSmrg fi 1586f2e35a3aSmrg fi 1587f2e35a3aSmrg 1588913cc679Smrgfi 1589d522f475Smrg])dnl 1590d522f475Smrgdnl --------------------------------------------------------------------------- 1591f2e35a3aSmrgdnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54 1592d522f475Smrgdnl --------------- 1593d522f475Smrgdnl Insert text into the help-message, for readability, from AC_ARG_WITH. 1594d522f475SmrgAC_DEFUN([CF_HELP_MESSAGE], 1595f2e35a3aSmrg[CF_ACVERSION_CHECK(2.53,[],[ 1596f2e35a3aSmrgAC_DIVERT_HELP($1)])dnl 1597d522f475Smrg])dnl 1598d522f475Smrgdnl --------------------------------------------------------------------------- 1599f2e35a3aSmrgdnl CF_IMAKE_CFLAGS version: 34 updated: 2020/12/31 18:40:20 1600d522f475Smrgdnl --------------- 1601d522f475Smrgdnl Use imake to obtain compiler flags. We could, in principle, write tests to 1602d522f475Smrgdnl get these, but if imake is properly configured there is no point in doing 1603d522f475Smrgdnl this. 1604d522f475Smrgdnl 1605d522f475Smrgdnl Parameters (used in constructing a sample Imakefile): 1606d522f475Smrgdnl $1 = optional value to append to $IMAKE_CFLAGS 1607d522f475Smrgdnl $2 = optional value to append to $IMAKE_LOADFLAGS 1608d522f475SmrgAC_DEFUN([CF_IMAKE_CFLAGS], 1609d522f475Smrg[ 1610d522f475SmrgAC_PATH_PROGS(IMAKE,xmkmf imake) 1611d522f475Smrg 1612d522f475Smrgif test -n "$IMAKE" ; then 1613d522f475Smrg 161401037d57Smrgcase $IMAKE in 161501037d57Smrg(*/imake) 161601037d57Smrg cf_imake_opts="-DUseInstalled=YES" 1617d522f475Smrg ;; 161801037d57Smrg(*/util/xmkmf) 1619d522f475Smrg # A single parameter tells xmkmf where the config-files are: 1620f2e35a3aSmrg cf_imake_opts="`echo "$IMAKE"|sed -e s,/config/util/xmkmf,,`" 1621d522f475Smrg ;; 162201037d57Smrg(*) 1623d522f475Smrg cf_imake_opts= 1624d522f475Smrg ;; 1625d522f475Smrgesac 1626d522f475Smrg 1627d522f475Smrg# If it's installed properly, imake (or its wrapper, xmkmf) will point to the 1628d522f475Smrg# config directory. 1629d522f475Smrgif mkdir conftestdir; then 1630d522f475Smrg CDPATH=; export CDPATH 1631f2e35a3aSmrg cf_makefile=`cd "$srcdir" || exit;pwd`/Imakefile 1632d522f475Smrg cd conftestdir 1633d522f475Smrg 1634d522f475Smrg cat >fix_cflags.sed <<'CF_EOF' 1635d522f475Smrgs/\\//g 1636d522f475Smrgs/[[ ]][[ ]]*/ /g 1637d522f475Smrgs/"//g 1638d522f475Smrg:pack 1639d522f475Smrgs/\(=[[^ ]][[^ ]]*\) \([[^-]]\)/\1 \2/g 1640d522f475Smrgt pack 1641d522f475Smrgs/\(-D[[a-zA-Z0-9_]][[a-zA-Z0-9_]]*\)=\([[^\'0-9 ]][[^ ]]*\)/\1='\\"\2\\"'/g 1642d522f475Smrgs/^IMAKE[[ ]]/IMAKE_CFLAGS="/ 1643d522f475Smrgs/ / /g 1644d522f475Smrgs/$/"/ 1645d522f475SmrgCF_EOF 1646d522f475Smrg 1647d522f475Smrg cat >fix_lflags.sed <<'CF_EOF' 1648d522f475Smrgs/^IMAKE[[ ]]*/IMAKE_LOADFLAGS="/ 1649d522f475Smrgs/$/"/ 1650d522f475SmrgCF_EOF 1651d522f475Smrg 1652d522f475Smrg echo >./Imakefile 1653f2e35a3aSmrg test -f "$cf_makefile" && cat "$cf_makefile" >>./Imakefile 1654d522f475Smrg 1655d522f475Smrg cat >> ./Imakefile <<'CF_EOF' 1656d522f475Smrgfindstddefs: 165720d2c4d2Smrg @echo IMAKE ${ALLDEFINES}ifelse([$1],,,[ $1]) | sed -f fix_cflags.sed 165820d2c4d2Smrg @echo IMAKE ${EXTRA_LOAD_FLAGS}ifelse([$2],,,[ $2]) | sed -f fix_lflags.sed 1659d522f475SmrgCF_EOF 1660d522f475Smrg 1661f2e35a3aSmrg if ( $IMAKE "$cf_imake_opts" 1>/dev/null 2>&AC_FD_CC && test -f Makefile) 1662d522f475Smrg then 1663d522f475Smrg CF_VERBOSE(Using $IMAKE $cf_imake_opts) 1664d522f475Smrg else 1665d522f475Smrg # sometimes imake doesn't have the config path compiled in. Find it. 1666d522f475Smrg cf_config= 1667d522f475Smrg for cf_libpath in $X_LIBS $LIBS ; do 1668f2e35a3aSmrg case "$cf_libpath" in 166901037d57Smrg (-L*) 1670f2e35a3aSmrg cf_libpath=`echo ".$cf_libpath" | sed -e 's/^...//'` 1671f2e35a3aSmrg cf_libpath="$cf_libpath/X11/config" 1672f2e35a3aSmrg if test -d "$cf_libpath" ; then 1673f2e35a3aSmrg cf_config="$cf_libpath" 1674d522f475Smrg break 1675d522f475Smrg fi 1676d522f475Smrg ;; 1677d522f475Smrg esac 1678d522f475Smrg done 1679d522f475Smrg if test -z "$cf_config" ; then 1680d522f475Smrg AC_MSG_WARN(Could not find imake config-directory) 1681d522f475Smrg else 1682d522f475Smrg cf_imake_opts="$cf_imake_opts -I$cf_config" 1683f2e35a3aSmrg if ( "$IMAKE" -v "$cf_imake_opts" 2>&AC_FD_CC) 1684d522f475Smrg then 1685d522f475Smrg CF_VERBOSE(Using $IMAKE $cf_config) 1686d522f475Smrg else 1687d522f475Smrg AC_MSG_WARN(Cannot run $IMAKE) 1688d522f475Smrg fi 1689d522f475Smrg fi 1690d522f475Smrg fi 1691d522f475Smrg 1692d522f475Smrg # GNU make sometimes prints "make[1]: Entering...", which 1693d522f475Smrg # would confuse us. 1694f2e35a3aSmrg eval "`make findstddefs 2>/dev/null | grep -v make`" 1695d522f475Smrg 1696d522f475Smrg cd .. 1697d522f475Smrg rm -rf conftestdir 1698d522f475Smrg 1699d522f475Smrg # We use ${ALLDEFINES} rather than ${STD_DEFINES} because the former 1700d522f475Smrg # declares XTFUNCPROTO there. However, some vendors (e.g., SGI) have 1701d522f475Smrg # modified it to support site.cf, adding a kludge for the /usr/include 1702d522f475Smrg # directory. Try to filter that out, otherwise gcc won't find its 1703d522f475Smrg # headers. 1704d522f475Smrg if test -n "$GCC" ; then 1705d522f475Smrg if test -n "$IMAKE_CFLAGS" ; then 1706d522f475Smrg cf_nostdinc="" 1707d522f475Smrg cf_std_incl="" 1708d522f475Smrg cf_cpp_opts="" 1709d522f475Smrg for cf_opt in $IMAKE_CFLAGS 1710d522f475Smrg do 1711d522f475Smrg case "$cf_opt" in 171201037d57Smrg (-nostdinc) 1713d522f475Smrg cf_nostdinc="$cf_opt" 1714d522f475Smrg ;; 171501037d57Smrg (-I/usr/include) 1716d522f475Smrg cf_std_incl="$cf_opt" 1717d522f475Smrg ;; 171801037d57Smrg (*) 1719d522f475Smrg cf_cpp_opts="$cf_cpp_opts $cf_opt" 1720d522f475Smrg ;; 1721d522f475Smrg esac 1722d522f475Smrg done 1723d522f475Smrg if test -z "$cf_nostdinc" ; then 1724d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts $cf_std_incl" 1725d522f475Smrg elif test -z "$cf_std_incl" ; then 1726d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts $cf_nostdinc" 1727d522f475Smrg else 1728d522f475Smrg CF_VERBOSE(suppressed \"$cf_nostdinc\" and \"$cf_std_incl\") 1729d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts" 1730d522f475Smrg fi 1731d522f475Smrg fi 1732d522f475Smrg fi 1733d522f475Smrgfi 1734d522f475Smrg 1735d522f475Smrg# Some imake configurations define PROJECTROOT with an empty value. Remove 1736d522f475Smrg# the empty definition. 1737d522f475Smrgcase $IMAKE_CFLAGS in 173801037d57Smrg(*-DPROJECTROOT=/*) 1739d522f475Smrg ;; 174001037d57Smrg(*) 1741d522f475Smrg IMAKE_CFLAGS=`echo "$IMAKE_CFLAGS" |sed -e "s,-DPROJECTROOT=[[ ]], ,"` 1742d522f475Smrg ;; 1743d522f475Smrgesac 1744d522f475Smrg 1745d522f475Smrgfi 1746d522f475Smrg 1747d522f475SmrgCF_VERBOSE(IMAKE_CFLAGS $IMAKE_CFLAGS) 1748d522f475SmrgCF_VERBOSE(IMAKE_LOADFLAGS $IMAKE_LOADFLAGS) 1749d522f475Smrg 1750d522f475SmrgAC_SUBST(IMAKE_CFLAGS) 1751d522f475SmrgAC_SUBST(IMAKE_LOADFLAGS) 1752d522f475Smrg])dnl 1753d522f475Smrgdnl --------------------------------------------------------------------------- 1754ae137402Smrgdnl CF_INPUT_METHOD version: 5 updated: 2021/06/07 17:39:17 1755d522f475Smrgdnl --------------- 1756d522f475Smrgdnl Check if the X libraries support input-method 1757d522f475SmrgAC_DEFUN([CF_INPUT_METHOD], 1758d522f475Smrg[ 1759d522f475SmrgAC_CACHE_CHECK([if X libraries support input-method],cf_cv_input_method,[ 1760d522f475SmrgAC_TRY_LINK([ 1761d522f475Smrg#include <X11/IntrinsicP.h> 1762d522f475Smrg#include <X11/Xatom.h> 1763d522f475Smrg#include <X11/Xutil.h> 1764d522f475Smrg#include <X11/Xmu/Atoms.h> 1765d522f475Smrg#include <X11/Xmu/Converters.h> 1766d522f475Smrg#include <X11/Xaw/XawImP.h> 1767d522f475Smrg],[ 1768d522f475Smrg{ 1769d522f475Smrg XIM xim; 1770d522f475Smrg XIMStyles *xim_styles = 0; 1771d522f475Smrg XIMStyle input_style; 1772ae137402Smrg Widget w = XtCreateWidget("none", (WidgetClass)0, None, (ArgList)0, 0); 1773d522f475Smrg 1774d522f475Smrg XSetLocaleModifiers("@im=none"); 1775d522f475Smrg xim = XOpenIM(XtDisplay(w), NULL, NULL, NULL); 1776d522f475Smrg XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL); 1777d522f475Smrg XCloseIM(xim); 1778d522f475Smrg input_style = (XIMPreeditNothing | XIMStatusNothing); 1779f2e35a3aSmrg (void)xim_styles; 1780f2e35a3aSmrg (void)input_style; 1781d522f475Smrg} 1782d522f475Smrg], 1783d522f475Smrg[cf_cv_input_method=yes], 1784d522f475Smrg[cf_cv_input_method=no])]) 1785d522f475Smrg])dnl 1786d522f475Smrgdnl --------------------------------------------------------------------------- 17875307cd1aSmrgdnl CF_INTEL_COMPILER version: 9 updated: 2023/02/18 17:41:25 1788d522f475Smrgdnl ----------------- 1789d522f475Smrgdnl Check if the given compiler is really the Intel compiler for Linux. It 1790d522f475Smrgdnl tries to imitate gcc, but does not return an error when it finds a mismatch 1791d522f475Smrgdnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. 1792d522f475Smrgdnl 1793d522f475Smrgdnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to 1794d522f475Smrgdnl ensure that it is not mistaken for gcc/g++. It is normally invoked from 1795d522f475Smrgdnl the wrappers for gcc and g++ warnings. 1796d522f475Smrgdnl 1797d522f475Smrgdnl $1 = GCC (default) or GXX 1798d522f475Smrgdnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS 1799d522f475Smrgdnl $3 = CFLAGS (default) or CXXFLAGS 1800d522f475SmrgAC_DEFUN([CF_INTEL_COMPILER],[ 18010bd37d32SmrgAC_REQUIRE([AC_CANONICAL_HOST]) 180220d2c4d2Smrgifelse([$2],,INTEL_COMPILER,[$2])=no 1803d522f475Smrg 180420d2c4d2Smrgif test "$ifelse([$1],,[$1],GCC)" = yes ; then 1805f2e35a3aSmrg case "$host_os" in 180601037d57Smrg (linux*|gnu*) 180720d2c4d2Smrg AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler) 180820d2c4d2Smrg cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" 180920d2c4d2Smrg ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc" 1810d522f475Smrg AC_TRY_COMPILE([],[ 1811d522f475Smrg#ifdef __INTEL_COMPILER 1812d522f475Smrg#else 18135307cd1aSmrg#error __INTEL_COMPILER is not defined 1814d522f475Smrg#endif 181520d2c4d2Smrg],[ifelse([$2],,INTEL_COMPILER,[$2])=yes 1816894e0ac8Smrgcf_save_CFLAGS="$cf_save_CFLAGS -we147" 1817d522f475Smrg],[]) 181820d2c4d2Smrg ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" 181920d2c4d2Smrg AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) 1820d522f475Smrg ;; 1821d522f475Smrg esac 1822d522f475Smrgfi 1823d522f475Smrg])dnl 1824d522f475Smrgdnl --------------------------------------------------------------------------- 182504b94745Smrgdnl CF_LASTLOG version: 8 updated: 2023/12/01 17:22:50 1826d522f475Smrgdnl ---------- 1827d522f475Smrgdnl Check for header defining _PATH_LASTLOG, or failing that, see if the lastlog 1828d522f475Smrgdnl file exists. 1829d522f475SmrgAC_DEFUN([CF_LASTLOG], 1830d522f475Smrg[ 1831d522f475SmrgAC_CHECK_HEADERS(lastlog.h paths.h) 1832d522f475SmrgAC_CACHE_CHECK(for lastlog path,cf_cv_path_lastlog,[ 1833d522f475SmrgAC_TRY_COMPILE([ 1834d522f475Smrg#include <sys/types.h> 1835d522f475Smrg#ifdef HAVE_LASTLOG_H 1836d522f475Smrg#include <lastlog.h> 1837d522f475Smrg#else 1838d522f475Smrg#ifdef HAVE_PATHS_H 1839d522f475Smrg#include <paths.h> 1840d522f475Smrg#endif 184104b94745Smrg#endif],[static char path[] = _PATH_LASTLOG; (void)path], 1842d522f475Smrg [cf_cv_path_lastlog="_PATH_LASTLOG"], 1843d522f475Smrg [if test -f /usr/adm/lastlog ; then 1844d522f475Smrg cf_cv_path_lastlog=/usr/adm/lastlog 1845d522f475Smrg else 1846d522f475Smrg cf_cv_path_lastlog=no 1847d522f475Smrg fi]) 1848d522f475Smrg]) 1849f2e35a3aSmrgtest "$cf_cv_path_lastlog" != no && AC_DEFINE(USE_LASTLOG,1,[Define to 1 if we can define lastlog pathname]) 1850d522f475Smrg])dnl 1851d522f475Smrgdnl --------------------------------------------------------------------------- 1852f2e35a3aSmrgdnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04 185320d2c4d2Smrgdnl --------------- 185420d2c4d2Smrgdnl For the given system and compiler, find the compiler flags to pass to the 185520d2c4d2Smrgdnl loader to use the "rpath" feature. 185620d2c4d2SmrgAC_DEFUN([CF_LD_RPATH_OPT], 185720d2c4d2Smrg[ 185820d2c4d2SmrgAC_REQUIRE([CF_CHECK_CACHE]) 185920d2c4d2Smrg 186020d2c4d2SmrgLD_RPATH_OPT= 1861f2e35a3aSmrgif test "x$cf_cv_enable_rpath" != xno 1862f2e35a3aSmrgthen 1863f2e35a3aSmrg AC_MSG_CHECKING(for an rpath option) 1864f2e35a3aSmrg case "$cf_cv_system_name" in 1865f2e35a3aSmrg (irix*) 1866f2e35a3aSmrg if test "$GCC" = yes; then 1867f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1868f2e35a3aSmrg else 1869f2e35a3aSmrg LD_RPATH_OPT="-rpath " 1870f2e35a3aSmrg fi 1871f2e35a3aSmrg ;; 1872f2e35a3aSmrg (linux*|gnu*|k*bsd*-gnu|freebsd*) 187320d2c4d2Smrg LD_RPATH_OPT="-Wl,-rpath," 1874f2e35a3aSmrg ;; 1875f2e35a3aSmrg (openbsd[[2-9]].*|mirbsd*) 1876f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1877f2e35a3aSmrg ;; 1878f2e35a3aSmrg (dragonfly*) 187920d2c4d2Smrg LD_RPATH_OPT="-rpath " 1880f2e35a3aSmrg ;; 1881f2e35a3aSmrg (netbsd*) 1882f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1883f2e35a3aSmrg ;; 1884f2e35a3aSmrg (osf*|mls+*) 1885f2e35a3aSmrg LD_RPATH_OPT="-rpath " 1886f2e35a3aSmrg ;; 1887f2e35a3aSmrg (solaris2*) 1888f2e35a3aSmrg LD_RPATH_OPT="-R" 1889f2e35a3aSmrg ;; 1890f2e35a3aSmrg (*) 1891f2e35a3aSmrg ;; 1892f2e35a3aSmrg esac 1893f2e35a3aSmrg AC_MSG_RESULT($LD_RPATH_OPT) 1894f2e35a3aSmrg 1895f2e35a3aSmrg case "x$LD_RPATH_OPT" in 1896f2e35a3aSmrg (x-R*) 1897f2e35a3aSmrg AC_MSG_CHECKING(if we need a space after rpath option) 1898f2e35a3aSmrg cf_save_LIBS="$LIBS" 1899f2e35a3aSmrg CF_ADD_LIBS(${LD_RPATH_OPT}$libdir) 1900f2e35a3aSmrg AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes) 1901f2e35a3aSmrg LIBS="$cf_save_LIBS" 1902f2e35a3aSmrg AC_MSG_RESULT($cf_rpath_space) 1903f2e35a3aSmrg test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " 1904f2e35a3aSmrg ;; 1905f2e35a3aSmrg esac 1906f2e35a3aSmrgfi 190720d2c4d2Smrg])dnl 190820d2c4d2Smrgdnl --------------------------------------------------------------------------- 19096879286fSmrgdnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 191020d2c4d2Smrgdnl ------------ 191120d2c4d2Smrgdnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have 191220d2c4d2Smrgdnl a monocase filesystem. 191320d2c4d2SmrgAC_DEFUN([CF_MAKE_TAGS],[ 191420d2c4d2SmrgAC_REQUIRE([CF_MIXEDCASE_FILENAMES]) 191520d2c4d2Smrg 191620d2c4d2SmrgAC_CHECK_PROGS(CTAGS, exctags ctags) 191720d2c4d2SmrgAC_CHECK_PROGS(ETAGS, exetags etags) 191820d2c4d2Smrg 19196879286fSmrgAC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) 192020d2c4d2Smrg 192120d2c4d2Smrgif test "$cf_cv_mixedcase" = yes ; then 19226879286fSmrg AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) 192320d2c4d2Smrgelse 192420d2c4d2Smrg MAKE_UPPER_TAGS=no 192520d2c4d2Smrgfi 192620d2c4d2Smrg 192720d2c4d2Smrgif test "$MAKE_UPPER_TAGS" = yes ; then 192820d2c4d2Smrg MAKE_UPPER_TAGS= 192920d2c4d2Smrgelse 193020d2c4d2Smrg MAKE_UPPER_TAGS="#" 193120d2c4d2Smrgfi 193220d2c4d2Smrg 193320d2c4d2Smrgif test "$MAKE_LOWER_TAGS" = yes ; then 193420d2c4d2Smrg MAKE_LOWER_TAGS= 193520d2c4d2Smrgelse 193620d2c4d2Smrg MAKE_LOWER_TAGS="#" 193720d2c4d2Smrgfi 193820d2c4d2Smrg 193920d2c4d2SmrgAC_SUBST(CTAGS) 194020d2c4d2SmrgAC_SUBST(ETAGS) 194120d2c4d2Smrg 194220d2c4d2SmrgAC_SUBST(MAKE_UPPER_TAGS) 194320d2c4d2SmrgAC_SUBST(MAKE_LOWER_TAGS) 194420d2c4d2Smrg])dnl 194520d2c4d2Smrgdnl --------------------------------------------------------------------------- 19465307cd1aSmrgdnl CF_MATH_LIB version: 11 updated: 2022/07/27 19:01:48 1947894e0ac8Smrgdnl ----------- 1948894e0ac8Smrgdnl Checks for libraries. At least one UNIX system, Apple Macintosh 1949894e0ac8Smrgdnl Rhapsody 5.5, does not have -lm. We cannot use the simpler 1950894e0ac8Smrgdnl AC_CHECK_LIB(m,sin), because that fails for C++. 1951894e0ac8SmrgAC_DEFUN([CF_MATH_LIB], 1952894e0ac8Smrg[ 1953894e0ac8SmrgAC_CACHE_CHECK(if -lm needed for math functions, 1954894e0ac8Smrg cf_cv_need_libm,[ 1955894e0ac8Smrg AC_TRY_LINK([ 19565307cd1aSmrg #include <stdio.h> 19575307cd1aSmrg #include <stdlib.h> 19585307cd1aSmrg #include <math.h> 1959894e0ac8Smrg ], 1960f2e35a3aSmrg [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)], 1961894e0ac8Smrg [cf_cv_need_libm=no], 1962894e0ac8Smrg [cf_cv_need_libm=yes])]) 19635307cd1aSmrg 1964894e0ac8Smrgif test "$cf_cv_need_libm" = yes 1965894e0ac8Smrgthen 19665307cd1aSmrg 19675307cd1aSmrg cf_save_LIBS="$LIBS" 19685307cd1aSmrg LIBS="$LIBS -lm" 19695307cd1aSmrg AC_CACHE_CHECK(if -lm is available for math functions, 19705307cd1aSmrg cf_cv_have_libm,[ 19715307cd1aSmrg AC_TRY_LINK([ 19725307cd1aSmrg #include <stdio.h> 19735307cd1aSmrg #include <stdlib.h> 19745307cd1aSmrg #include <math.h> 19755307cd1aSmrg ], 19765307cd1aSmrg [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)], 19775307cd1aSmrg [cf_cv_have_libm=yes], 19785307cd1aSmrg [cf_cv_have_libm=no])]) 19795307cd1aSmrg LIBS="$cf_save_LIBS" 19805307cd1aSmrg 19815307cd1aSmrg if test "$cf_cv_have_libm" = yes 19825307cd1aSmrg then 19835307cd1aSmrg ifelse($1,,[CF_ADD_LIB(m)],[$1=-lm]) 19845307cd1aSmrg fi 19855307cd1aSmrgelse 19865307cd1aSmrg cf_cv_have_libm=yes 19875307cd1aSmrgfi 19885307cd1aSmrg 19895307cd1aSmrgif test "$cf_cv_have_libm" = yes 19905307cd1aSmrgthen 19915307cd1aSmrg AC_DEFINE(HAVE_MATH_FUNCS,1,[Define to 1 if math functions are available]) 1992894e0ac8Smrgfi 1993894e0ac8Smrg]) 1994894e0ac8Smrgdnl --------------------------------------------------------------------------- 1995f2e35a3aSmrgdnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59 199620d2c4d2Smrgdnl ---------------------- 199720d2c4d2Smrgdnl Check if the file-system supports mixed-case filenames. If we're able to 199820d2c4d2Smrgdnl create a lowercase name and see it as uppercase, it doesn't support that. 199920d2c4d2SmrgAC_DEFUN([CF_MIXEDCASE_FILENAMES], 200020d2c4d2Smrg[ 200120d2c4d2SmrgAC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ 200220d2c4d2Smrgif test "$cross_compiling" = yes ; then 2003f2e35a3aSmrg case "$target_alias" in 2004f2e35a3aSmrg (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) 200520d2c4d2Smrg cf_cv_mixedcase=no 200620d2c4d2Smrg ;; 200701037d57Smrg (*) 200820d2c4d2Smrg cf_cv_mixedcase=yes 200920d2c4d2Smrg ;; 201020d2c4d2Smrg esac 201120d2c4d2Smrgelse 201220d2c4d2Smrg rm -f conftest CONFTEST 201320d2c4d2Smrg echo test >conftest 201420d2c4d2Smrg if test -f CONFTEST ; then 201520d2c4d2Smrg cf_cv_mixedcase=no 201620d2c4d2Smrg else 201720d2c4d2Smrg cf_cv_mixedcase=yes 201820d2c4d2Smrg fi 201920d2c4d2Smrg rm -f conftest CONFTEST 202020d2c4d2Smrgfi 202120d2c4d2Smrg]) 20220bd37d32Smrgtest "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.]) 202320d2c4d2Smrg])dnl 202420d2c4d2Smrgdnl --------------------------------------------------------------------------- 202504b94745Smrgdnl CF_MKSTEMP version: 13 updated: 2023/12/01 17:22:50 20265307cd1aSmrgdnl ---------- 20275307cd1aSmrgdnl Check for a working mkstemp. This creates two files, checks that they are 20285307cd1aSmrgdnl successfully created and distinct (AmigaOS apparently fails on the last). 20295307cd1aSmrgAC_DEFUN([CF_MKSTEMP],[ 20305307cd1aSmrgAC_CHECK_HEADERS( \ 20315307cd1aSmrgunistd.h \ 20325307cd1aSmrg) 20335307cd1aSmrgAC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[ 20345307cd1aSmrgrm -rf ./conftest* 20355307cd1aSmrgAC_TRY_RUN([ 20365307cd1aSmrg$ac_includes_default 20375307cd1aSmrg 20385307cd1aSmrgint main(void) 20395307cd1aSmrg{ 204004b94745Smrg static char tmpl[] = "conftestXXXXXX"; 20415307cd1aSmrg char name[2][80]; 20425307cd1aSmrg int n; 20435307cd1aSmrg int result = 0; 20445307cd1aSmrg int fd; 20455307cd1aSmrg struct stat sb; 20465307cd1aSmrg 20475307cd1aSmrg umask(077); 20485307cd1aSmrg for (n = 0; n < 2; ++n) { 20495307cd1aSmrg strcpy(name[n], tmpl); 20505307cd1aSmrg if ((fd = mkstemp(name[n])) >= 0) { 20515307cd1aSmrg if (!strcmp(name[n], tmpl) 20525307cd1aSmrg || stat(name[n], &sb) != 0 20535307cd1aSmrg || (sb.st_mode & S_IFMT) != S_IFREG 20545307cd1aSmrg || (sb.st_mode & 077) != 0) { 20555307cd1aSmrg result = 1; 20565307cd1aSmrg } 20575307cd1aSmrg close(fd); 20585307cd1aSmrg } 20595307cd1aSmrg } 20605307cd1aSmrg if (result == 0 20615307cd1aSmrg && !strcmp(name[0], name[1])) 20625307cd1aSmrg result = 1; 20635307cd1aSmrg ${cf_cv_main_return:-return}(result); 20645307cd1aSmrg} 20655307cd1aSmrg],[cf_cv_func_mkstemp=yes 20665307cd1aSmrg],[cf_cv_func_mkstemp=no 20675307cd1aSmrg],[cf_cv_func_mkstemp=maybe]) 20685307cd1aSmrg]) 20695307cd1aSmrgif test "x$cf_cv_func_mkstemp" = xmaybe ; then 20705307cd1aSmrg AC_CHECK_FUNC(mkstemp) 20715307cd1aSmrgfi 20725307cd1aSmrgif test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then 20735307cd1aSmrg AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.]) 20745307cd1aSmrgfi 20755307cd1aSmrg])dnl 20765307cd1aSmrgdnl --------------------------------------------------------------------------- 20776879286fSmrgdnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 2078d522f475Smrgdnl ---------- 2079d522f475Smrgdnl Write a debug message to config.log, along with the line number in the 2080d522f475Smrgdnl configure script. 2081d522f475SmrgAC_DEFUN([CF_MSG_LOG],[ 20826879286fSmrgecho "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC 2083d522f475Smrg])dnl 2084d522f475Smrgdnl --------------------------------------------------------------------------- 2085a5ae21e4Smrgdnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41 20860bd37d32Smrgdnl ------------------ 20870bd37d32Smrgdnl see CF_WITH_NO_LEAKS 2088a5ae21e4Smrgdnl 2089a5ae21e4Smrgdnl $1 = option/name 2090a5ae21e4Smrgdnl $2 = help-text 2091a5ae21e4Smrgdnl $3 = symbol to define if the option is set 2092a5ae21e4Smrgdnl $4 = additional actions to take if the option is set 20930bd37d32SmrgAC_DEFUN([CF_NO_LEAKS_OPTION],[ 20940bd37d32SmrgAC_MSG_CHECKING(if you want to use $1 for testing) 20950bd37d32SmrgAC_ARG_WITH($1, 20960bd37d32Smrg [$2], 2097a5ae21e4Smrg [case "x$withval" in 2098a5ae21e4Smrg (x|xno) ;; 2099a5ae21e4Smrg (*) 2100a5ae21e4Smrg : "${with_cflags:=-g}" 2101a5ae21e4Smrg : "${enable_leaks:=no}" 2102a5ae21e4Smrg with_$1=yes 2103a5ae21e4Smrg AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[ 21040bd37d32Smrg $4 21050bd37d32Smrg]) 2106a5ae21e4Smrg ;; 2107a5ae21e4Smrg esac], 21080bd37d32Smrg [with_$1=]) 21090bd37d32SmrgAC_MSG_RESULT(${with_$1:-no}) 21100bd37d32Smrg 2111f2e35a3aSmrgcase ".$with_cflags" in 211201037d57Smrg(.*-g*) 211301037d57Smrg case .$CFLAGS in 211401037d57Smrg (.*-g*) 21150bd37d32Smrg ;; 211601037d57Smrg (*) 21170bd37d32Smrg CF_ADD_CFLAGS([-g]) 21180bd37d32Smrg ;; 21190bd37d32Smrg esac 21200bd37d32Smrg ;; 21210bd37d32Smrgesac 21220bd37d32Smrg])dnl 21230bd37d32Smrgdnl --------------------------------------------------------------------------- 2124f2e35a3aSmrgdnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04 2125956cc18dSsnjdnl ---------- 21260bd37d32Smrgdnl Provide a value for the $PATH and similar separator (or amend the value 21270bd37d32Smrgdnl as provided in autoconf 2.5x). 2128956cc18dSsnjAC_DEFUN([CF_PATHSEP], 2129956cc18dSsnj[ 21300bd37d32Smrg AC_MSG_CHECKING(for PATH separator) 2131f2e35a3aSmrg case "$cf_cv_system_name" in 213201037d57Smrg (os2*) PATH_SEPARATOR=';' ;; 213301037d57Smrg (*) ${PATH_SEPARATOR:=':'} ;; 2134956cc18dSsnj esac 213520d2c4d2Smrgifelse([$1],,,[$1=$PATH_SEPARATOR]) 2136956cc18dSsnj AC_SUBST(PATH_SEPARATOR) 21370bd37d32Smrg AC_MSG_RESULT($PATH_SEPARATOR) 2138956cc18dSsnj])dnl 2139956cc18dSsnjdnl --------------------------------------------------------------------------- 2140f2e35a3aSmrgdnl CF_PATH_PROG version: 12 updated: 2021/01/02 09:31:20 2141d522f475Smrgdnl ------------ 2142d522f475Smrgdnl Check for a given program, defining corresponding symbol. 2143d522f475Smrgdnl $1 = environment variable, which is suffixed by "_PATH" in the #define. 2144d522f475Smrgdnl $2 = program name to find. 2145d522f475Smrgdnl $3 = optional list of additional program names to test. 2146f2e35a3aSmrgdnl $4 = $PATH 2147d522f475Smrgdnl 2148d522f475Smrgdnl If there is more than one token in the result, #define the remaining tokens 2149d522f475Smrgdnl to $1_ARGS. We need this for 'install' in particular. 2150d522f475Smrgdnl 2151d522f475Smrgdnl FIXME: we should allow this to be overridden by environment variables 2152d522f475Smrgdnl 2153d522f475SmrgAC_DEFUN([CF_PATH_PROG],[ 2154956cc18dSsnjAC_REQUIRE([CF_PATHSEP]) 2155f2e35a3aSmrgtest -z "[$]$1" && $1="$2" 2156f2e35a3aSmrgAC_PATH_PROGS($1,[$]$1 $2 ifelse($3,,,$3),[$]$1, ifelse($4,,,$4)) 2157d522f475Smrg 2158d522f475Smrgcf_path_prog="" 2159d522f475Smrgcf_path_args="" 21606879286fSmrgIFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR" 2161d522f475Smrgfor cf_temp in $ac_cv_path_$1 2162d522f475Smrgdo 2163d522f475Smrg if test -z "$cf_path_prog" ; then 2164d522f475Smrg if test "$with_full_paths" = yes ; then 2165d522f475Smrg CF_PATH_SYNTAX(cf_temp,break) 2166d522f475Smrg cf_path_prog="$cf_temp" 2167d522f475Smrg else 2168f2e35a3aSmrg cf_path_prog="`basename "$cf_temp"`" 2169d522f475Smrg fi 2170d522f475Smrg elif test -z "$cf_path_args" ; then 2171d522f475Smrg cf_path_args="$cf_temp" 2172d522f475Smrg else 2173d522f475Smrg cf_path_args="$cf_path_args $cf_temp" 2174d522f475Smrg fi 2175d522f475Smrgdone 2176d522f475SmrgIFS="$cf_save_ifs" 2177d522f475Smrg 2178d522f475Smrgif test -n "$cf_path_prog" ; then 2179d522f475Smrg CF_MSG_LOG(defining path for ${cf_path_prog}) 21800bd37d32Smrg AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog",Define to pathname $1) 21810bd37d32Smrg test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args",Define to provide args for $1) 2182d522f475Smrgfi 2183d522f475Smrg])dnl 2184d522f475Smrgdnl --------------------------------------------------------------------------- 21855104ee6eSmrgdnl CF_PATH_SYNTAX version: 19 updated: 2024/08/03 13:08:58 2186d522f475Smrgdnl -------------- 2187d522f475Smrgdnl Check the argument to see that it looks like a pathname. Rewrite it if it 2188d522f475Smrgdnl begins with one of the prefix/exec_prefix variables, and then again if the 2189d522f475Smrgdnl result begins with 'NONE'. This is necessary to work around autoconf's 2190d522f475Smrgdnl delayed evaluation of those symbols. 2191d522f475SmrgAC_DEFUN([CF_PATH_SYNTAX],[ 21925104ee6eSmrgAC_REQUIRE([CF_GLOB_FULLPATH])dnl 21935104ee6eSmrg 2194d522f475Smrgif test "x$prefix" != xNONE; then 21952e4f8982Smrg cf_path_syntax="$prefix" 2196d522f475Smrgelse 21972e4f8982Smrg cf_path_syntax="$ac_default_prefix" 2198d522f475Smrgfi 2199d522f475Smrg 22005104ee6eSmrgcase "x[$]$1" in 22015104ee6eSmrg(x\[$]\(*\)*|x\'*\'*) 22022e4f8982Smrg ;; 22035104ee6eSmrg(x.|x$GLOB_FULLPATH_POSIX|x$GLOB_FULLPATH_OTHER) 22042e4f8982Smrg ;; 22055104ee6eSmrg(x\[$]\{*prefix\}*|x\[$]\{*dir\}*) 22062e4f8982Smrg eval $1="[$]$1" 22075104ee6eSmrg case "x[$]$1" in 22085104ee6eSmrg (xNONE/*) 2209f2e35a3aSmrg $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` 22102e4f8982Smrg ;; 22112e4f8982Smrg esac 22122e4f8982Smrg ;; 22135104ee6eSmrg(xno|xNONE/*) 2214f2e35a3aSmrg $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` 22152e4f8982Smrg ;; 221601037d57Smrg(*) 22172e4f8982Smrg ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) 22182e4f8982Smrg ;; 2219d522f475Smrgesac 2220d522f475Smrg])dnl 2221d522f475Smrgdnl --------------------------------------------------------------------------- 222204b94745Smrgdnl CF_PKG_CONFIG version: 13 updated: 2023/10/28 11:59:01 2223956cc18dSsnjdnl ------------- 2224956cc18dSsnjdnl Check for the package-config program, unless disabled by command-line. 22254419d26bSmrgdnl 22264419d26bSmrgdnl Sets $PKG_CONFIG to the pathname of the pkg-config program. 2227956cc18dSsnjAC_DEFUN([CF_PKG_CONFIG], 2228956cc18dSsnj[ 2229956cc18dSsnjAC_MSG_CHECKING(if you want to use pkg-config) 2230956cc18dSsnjAC_ARG_WITH(pkg-config, 223104b94745Smrg [[ --with-pkg-config[=CMD] enable/disable use of pkg-config and its name CMD]], 2232956cc18dSsnj [cf_pkg_config=$withval], 2233956cc18dSsnj [cf_pkg_config=yes]) 2234956cc18dSsnjAC_MSG_RESULT($cf_pkg_config) 2235956cc18dSsnj 2236f2e35a3aSmrgcase "$cf_pkg_config" in 223701037d57Smrg(no) 2238956cc18dSsnj PKG_CONFIG=none 2239956cc18dSsnj ;; 224001037d57Smrg(yes) 2241e39b573cSmrg CF_ACVERSION_CHECK(2.52, 2242e39b573cSmrg [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)], 2243e39b573cSmrg [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)]) 2244956cc18dSsnj ;; 224501037d57Smrg(*) 2246956cc18dSsnj PKG_CONFIG=$withval 2247956cc18dSsnj ;; 2248956cc18dSsnjesac 2249956cc18dSsnj 2250956cc18dSsnjtest -z "$PKG_CONFIG" && PKG_CONFIG=none 2251956cc18dSsnjif test "$PKG_CONFIG" != none ; then 2252956cc18dSsnj CF_PATH_SYNTAX(PKG_CONFIG) 22532e4f8982Smrgelif test "x$cf_pkg_config" != xno ; then 225401037d57Smrg AC_MSG_WARN(pkg-config is not installed) 2255956cc18dSsnjfi 2256956cc18dSsnj 2257956cc18dSsnjAC_SUBST(PKG_CONFIG) 2258956cc18dSsnj])dnl 2259956cc18dSsnjdnl --------------------------------------------------------------------------- 22605307cd1aSmrgdnl CF_POSIX_C_SOURCE version: 12 updated: 2023/02/18 17:41:25 2261d522f475Smrgdnl ----------------- 2262d522f475Smrgdnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. 2263d522f475Smrgdnl 2264d522f475Smrgdnl POSIX.1-1990 _POSIX_SOURCE 2265d522f475Smrgdnl POSIX.1-1990 and _POSIX_SOURCE and 2266d522f475Smrgdnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 2267d522f475Smrgdnl Bindings Option 2268d522f475Smrgdnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L 2269d522f475Smrgdnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L 2270d522f475Smrgdnl X/Open 2000 _POSIX_C_SOURCE=200112L 2271d522f475Smrgdnl 2272d522f475Smrgdnl Parameters: 2273d522f475Smrgdnl $1 is the nominal value for _POSIX_C_SOURCE 2274d522f475SmrgAC_DEFUN([CF_POSIX_C_SOURCE], 2275f2e35a3aSmrg[AC_REQUIRE([CF_POSIX_VISIBLE])dnl 2276f2e35a3aSmrg 2277f2e35a3aSmrgif test "$cf_cv_posix_visible" = no; then 2278f2e35a3aSmrg 227920d2c4d2Smrgcf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) 2280d522f475Smrg 2281d522f475Smrgcf_save_CFLAGS="$CFLAGS" 2282d522f475Smrgcf_save_CPPFLAGS="$CPPFLAGS" 2283d522f475Smrg 2284d522f475SmrgCF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) 2285d522f475SmrgCF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE) 2286d522f475Smrg 2287d522f475SmrgAC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ 2288d522f475Smrg CF_MSG_LOG(if the symbol is already defined go no further) 2289d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2290d522f475Smrg#ifndef _POSIX_C_SOURCE 22915307cd1aSmrg#error _POSIX_C_SOURCE is not defined 2292d522f475Smrg#endif], 2293d522f475Smrg [cf_cv_posix_c_source=no], 2294d522f475Smrg [cf_want_posix_source=no 229501037d57Smrg case .$cf_POSIX_C_SOURCE in 229601037d57Smrg (.[[12]]??*) 2297d522f475Smrg cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 2298d522f475Smrg ;; 229901037d57Smrg (.2) 2300d522f475Smrg cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 2301d522f475Smrg cf_want_posix_source=yes 2302d522f475Smrg ;; 230301037d57Smrg (.*) 2304d522f475Smrg cf_want_posix_source=yes 2305d522f475Smrg ;; 2306d522f475Smrg esac 2307d522f475Smrg if test "$cf_want_posix_source" = yes ; then 2308d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2309d522f475Smrg#ifdef _POSIX_SOURCE 23105307cd1aSmrg#error _POSIX_SOURCE is defined 2311d522f475Smrg#endif],[], 2312d522f475Smrg cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE") 2313d522f475Smrg fi 2314d522f475Smrg CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE) 2315d522f475Smrg CFLAGS="$cf_trim_CFLAGS" 2316f2e35a3aSmrg CPPFLAGS="$cf_trim_CPPFLAGS" 2317f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source) 2318d522f475Smrg CF_MSG_LOG(if the second compile does not leave our definition intact error) 2319d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2320d522f475Smrg#ifndef _POSIX_C_SOURCE 23215307cd1aSmrg#error _POSIX_C_SOURCE is not defined 2322d522f475Smrg#endif],, 2323d522f475Smrg [cf_cv_posix_c_source=no]) 2324d522f475Smrg CFLAGS="$cf_save_CFLAGS" 2325d522f475Smrg CPPFLAGS="$cf_save_CPPFLAGS" 2326d522f475Smrg ]) 2327d522f475Smrg]) 2328d522f475Smrg 2329d522f475Smrgif test "$cf_cv_posix_c_source" != no ; then 2330d522f475Smrg CFLAGS="$cf_trim_CFLAGS" 2331d522f475Smrg CPPFLAGS="$cf_trim_CPPFLAGS" 233220d2c4d2Smrg CF_ADD_CFLAGS($cf_cv_posix_c_source) 2333d522f475Smrgfi 2334d522f475Smrg 2335f2e35a3aSmrgfi # cf_cv_posix_visible 2336f2e35a3aSmrg 2337d522f475Smrg])dnl 2338d522f475Smrgdnl --------------------------------------------------------------------------- 233904b94745Smrgdnl CF_POSIX_SAVED_IDS version: 12 updated: 2023/12/03 19:55:51 2340d522f475Smrgdnl ------------------ 2341d522f475Smrgdnl 2342d522f475Smrgdnl Check first if saved-ids are always supported. Some systems 2343d522f475Smrgdnl may require runtime checks. 2344d522f475SmrgAC_DEFUN([CF_POSIX_SAVED_IDS], 2345d522f475Smrg[ 2346d522f475SmrgAC_CHECK_HEADERS( \ 2347d522f475Smrgsys/param.h \ 2348d522f475Smrg) 2349d522f475Smrg 2350d522f475SmrgAC_CACHE_CHECK(if POSIX saved-ids are supported,cf_cv_posix_saved_ids,[ 2351d522f475SmrgAC_TRY_LINK( 2352d522f475Smrg[ 2353d522f475Smrg#include <unistd.h> 2354d522f475Smrg#ifdef HAVE_SYS_PARAM_H 2355d522f475Smrg#include <sys/param.h> /* this may define "BSD" */ 2356d522f475Smrg#endif 2357d522f475Smrg],[ 2358d522f475Smrg#if defined(_POSIX_SAVED_IDS) && (_POSIX_SAVED_IDS > 0) 235904b94745Smrg int (*my_seteuid)(uid_t) = seteuid; 236004b94745Smrg int x = my_seteuid(geteuid()); 2361f2e35a3aSmrg (void)x; 2362d522f475Smrg#elif defined(BSD) && (BSD >= 199103) 2363d522f475Smrg/* The BSD's may implement the runtime check - and it fails. 2364d522f475Smrg * However, saved-ids work almost like POSIX (close enough for most uses). 2365d522f475Smrg */ 2366d522f475Smrg#else 236704b94745Smrg#error no saved-ids found 2368d522f475Smrg#endif 2369d522f475Smrg],[cf_cv_posix_saved_ids=yes 2370d522f475Smrg],[ 2371d522f475SmrgAC_TRY_RUN([ 23725307cd1aSmrg$ac_includes_default 23735307cd1aSmrg 2374f2e35a3aSmrgint main(void) 2375d522f475Smrg{ 2376d522f475Smrg void *p = (void *) seteuid; 2377d522f475Smrg long code = sysconf(_SC_SAVED_IDS); 2378f2e35a3aSmrg (void)p; 2379d522f475Smrg ${cf_cv_main_return:-return} ((code > 0) ? 0 : 1); 2380d522f475Smrg}], 2381d522f475Smrg cf_cv_posix_saved_ids=yes, 2382d522f475Smrg cf_cv_posix_saved_ids=no, 2383d522f475Smrg cf_cv_posix_saved_ids=unknown) 2384d522f475Smrg]) 2385d522f475Smrg]) 2386d522f475Smrg 23870bd37d32Smrgtest "$cf_cv_posix_saved_ids" = yes && AC_DEFINE(HAVE_POSIX_SAVED_IDS,1,[Define to 1 if POSIX saved-ids are supported]) 2388d522f475Smrg]) 2389d522f475Smrgdnl --------------------------------------------------------------------------- 2390f2e35a3aSmrgdnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17 2391f2e35a3aSmrgdnl ---------------- 2392f2e35a3aSmrgdnl POSIX documents test-macros which an application may set before any system 2393f2e35a3aSmrgdnl headers are included to make features available. 2394f2e35a3aSmrgdnl 2395f2e35a3aSmrgdnl Some BSD platforms (originally FreeBSD, but copied by a few others) 2396f2e35a3aSmrgdnl diverged from POSIX in 2002 by setting symbols which make all of the most 2397f2e35a3aSmrgdnl recent features visible in the system header files unless the application 2398f2e35a3aSmrgdnl overrides the corresponding test-macros. Doing that introduces portability 2399f2e35a3aSmrgdnl problems. 2400f2e35a3aSmrgdnl 2401f2e35a3aSmrgdnl This macro makes a special check for the symbols used for this, to avoid a 2402f2e35a3aSmrgdnl conflicting definition. 2403f2e35a3aSmrgAC_DEFUN([CF_POSIX_VISIBLE], 2404f2e35a3aSmrg[ 2405f2e35a3aSmrgAC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[ 2406f2e35a3aSmrgAC_TRY_COMPILE([#include <stdio.h>],[ 2407f2e35a3aSmrg#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \ 2408f2e35a3aSmrg && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \ 2409f2e35a3aSmrg && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \ 2410f2e35a3aSmrg && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0) 2411f2e35a3aSmrg#error conflicting symbols found 2412f2e35a3aSmrg#endif 2413f2e35a3aSmrg],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes]) 2414f2e35a3aSmrg]) 2415f2e35a3aSmrg])dnl 2416f2e35a3aSmrgdnl --------------------------------------------------------------------------- 24175307cd1aSmrgdnl CF_POSIX_WAIT version: 5 updated: 2023/01/05 19:26:07 2418d522f475Smrgdnl ------------- 2419d522f475Smrgdnl Check for POSIX wait support 2420d522f475SmrgAC_DEFUN([CF_POSIX_WAIT], 2421d522f475Smrg[ 2422d522f475SmrgAC_REQUIRE([AC_HEADER_SYS_WAIT]) 2423d522f475SmrgAC_CACHE_CHECK(for POSIX wait functions,cf_cv_posix_wait,[ 2424d522f475SmrgAC_TRY_LINK([ 24255307cd1aSmrg$ac_includes_default 24265307cd1aSmrg 2427d522f475Smrg#ifdef HAVE_SYS_WAIT_H 2428d522f475Smrg#include <sys/wait.h> 2429d522f475Smrg#endif 2430d522f475Smrg],[ 2431d522f475Smrg int stat_loc; 2432d522f475Smrg pid_t pid = waitpid(-1, &stat_loc, WNOHANG|WUNTRACED); 2433d522f475Smrg pid_t pid2 = wait(&stat_loc); 2434f2e35a3aSmrg (void)pid; 2435f2e35a3aSmrg (void)pid2; 2436d522f475Smrg], 2437d522f475Smrg[cf_cv_posix_wait=yes], 2438d522f475Smrg[cf_cv_posix_wait=no]) 2439d522f475Smrg]) 24400bd37d32Smrgtest "$cf_cv_posix_wait" = yes && AC_DEFINE(USE_POSIX_WAIT,1,[Define to 1 if we have POSIX wait functions]) 2441d522f475Smrg])dnl 2442d522f475Smrgdnl --------------------------------------------------------------------------- 2443f2e35a3aSmrgdnl CF_PROCFS_CWD version: 4 updated: 2020/12/31 18:40:20 2444d522f475Smrgdnl ------------- 2445d522f475Smrgdnl Find /proc tree (may be in a different place) which implements the "cwd" 2446d522f475Smrgdnl link. 2447d522f475SmrgAC_DEFUN([CF_PROCFS_CWD],[ 2448d522f475SmrgAC_CACHE_CHECK(for proc tree with cwd-support,cf_cv_procfs_cwd,[ 2449d522f475Smrgcf_cv_procfs_cwd=no 2450d522f475Smrgfor cf_path in /proc /compat/linux/proc /usr/compat/linux/proc 2451d522f475Smrgdo 2452f2e35a3aSmrg if test -d "$cf_path" && \ 2453f2e35a3aSmrg test -d "$cf_path"/$$ && \ 2454f2e35a3aSmrg { test -d "$cf_path"/$$/cwd || \ 2455f2e35a3aSmrg test -L "$cf_path"/$$/cwd; }; then 2456f2e35a3aSmrg cf_cv_procfs_cwd="$cf_path" 2457d522f475Smrg break 2458d522f475Smrg fi 2459d522f475Smrgdone 2460d522f475Smrg]) 2461d522f475Smrg])dnl 2462d522f475Smrgdnl --------------------------------------------------------------------------- 2463f2e35a3aSmrgdnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54 24640bd37d32Smrgdnl ---------- 24650bd37d32Smrgdnl standard check for CC, plus followup sanity checks 24660bd37d32Smrgdnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name 24670bd37d32SmrgAC_DEFUN([CF_PROG_CC],[ 2468f2e35a3aSmrgCF_ACVERSION_CHECK(2.53, 2469f2e35a3aSmrg [AC_MSG_WARN(this will incorrectly handle gnatgcc choice) 2470f2e35a3aSmrg AC_REQUIRE([AC_PROG_CC])], 2471f2e35a3aSmrg []) 24720bd37d32Smrgifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)]) 24730bd37d32SmrgCF_GCC_VERSION 24740bd37d32SmrgCF_ACVERSION_CHECK(2.52, 24750bd37d32Smrg [AC_PROG_CC_STDC], 24760bd37d32Smrg [CF_ANSI_CC_REQD]) 247701037d57SmrgCF_CC_ENV_FLAGS 2478d522f475Smrg])dnl 2479d522f475Smrgdnl --------------------------------------------------------------------------- 2480f2e35a3aSmrgdnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19 24810bd37d32Smrgdnl ------------- 24820bd37d32Smrgdnl Check if groff is available, for cases (such as html output) where nroff 24830bd37d32Smrgdnl is not enough. 24840bd37d32SmrgAC_DEFUN([CF_PROG_GROFF],[ 24850bd37d32SmrgAC_PATH_PROG(GROFF_PATH,groff,no) 2486f2e35a3aSmrgAC_PATH_PROGS(NROFF_PATH,nroff mandoc,no) 2487f2e35a3aSmrgAC_PATH_PROG(TBL_PATH,tbl,cat) 24880bd37d32Smrgif test "x$GROFF_PATH" = xno 24890bd37d32Smrgthen 24900bd37d32Smrg NROFF_NOTE= 24910bd37d32Smrg GROFF_NOTE="#" 24920bd37d32Smrgelse 24930bd37d32Smrg NROFF_NOTE="#" 24940bd37d32Smrg GROFF_NOTE= 24950bd37d32Smrgfi 24960bd37d32SmrgAC_SUBST(GROFF_NOTE) 24970bd37d32SmrgAC_SUBST(NROFF_NOTE) 2498d522f475Smrg])dnl 2499d522f475Smrgdnl --------------------------------------------------------------------------- 25005104ee6eSmrgdnl CF_PROG_LINT version: 7 updated: 2024/11/30 14:37:45 25012e4f8982Smrgdnl ------------ 25022e4f8982SmrgAC_DEFUN([CF_PROG_LINT], 25032e4f8982Smrg[ 25042e4f8982SmrgAC_CHECK_PROGS(LINT, lint cppcheck splint) 2505f2e35a3aSmrgcase "x$LINT" in 25065104ee6eSmrg(xlint|x*/lint) # NetBSD 10 25075104ee6eSmrg test -z "$LINT_OPTS" && LINT_OPTS="-chapbrxzgFS -v -Ac11" 25085104ee6eSmrg ;; 2509f2e35a3aSmrg(xcppcheck|x*/cppcheck) 25105104ee6eSmrg test -z "$LINT_OPTS" && LINT_OPTS="--enable=all -D__CPPCHECK__" 2511f2e35a3aSmrg ;; 2512f2e35a3aSmrgesac 25132e4f8982SmrgAC_SUBST(LINT_OPTS) 25145307cd1aSmrgAC_SUBST(LINT_LIBS) 25152e4f8982Smrg])dnl 25162e4f8982Smrgdnl --------------------------------------------------------------------------- 25175104ee6eSmrgdnl CF_REGEX version: 19 updated: 2024/12/14 16:09:34 2518d522f475Smrgdnl -------- 2519d522f475Smrgdnl Attempt to determine if we've got one of the flavors of regular-expression 2520d522f475Smrgdnl code that we can support. 2521d522f475SmrgAC_DEFUN([CF_REGEX], 2522d522f475Smrg[ 252320d2c4d2Smrg 252420d2c4d2Smrgcf_regex_func=no 2525f2e35a3aSmrgcf_regex_libs= 2526f2e35a3aSmrgcase "$host_os" in 252701037d57Smrg(mingw*) 2528f2e35a3aSmrg # -lsystre -ltre -lintl -liconv 2529f2e35a3aSmrg AC_CHECK_LIB(systre,regcomp,[ 2530f2e35a3aSmrg AC_CHECK_LIB(iconv,libiconv_open,[CF_ADD_LIB(iconv)]) 2531f2e35a3aSmrg AC_CHECK_LIB(intl,libintl_gettext,[CF_ADD_LIB(intl)]) 2532f2e35a3aSmrg AC_CHECK_LIB(tre,tre_regcomp,[CF_ADD_LIB(tre)]) 2533f2e35a3aSmrg CF_ADD_LIB(systre) 2534f2e35a3aSmrg cf_regex_func=regcomp 2535f2e35a3aSmrg ],[ 2536f2e35a3aSmrg AC_CHECK_LIB(gnurx,regcomp,[ 2537f2e35a3aSmrg CF_ADD_LIB(gnurx) 2538f2e35a3aSmrg cf_regex_func=regcomp]) 2539f2e35a3aSmrg ]) 2540f2e35a3aSmrg ;; 2541f2e35a3aSmrg(*) 2542f2e35a3aSmrg cf_regex_libs="regex re" 2543f2e35a3aSmrg AC_CHECK_FUNC(regcomp,[cf_regex_func=regcomp],[ 2544f2e35a3aSmrg for cf_regex_lib in $cf_regex_libs 2545f2e35a3aSmrg do 2546f2e35a3aSmrg AC_CHECK_LIB($cf_regex_lib,regcomp,[ 2547f2e35a3aSmrg CF_ADD_LIB($cf_regex_lib) 2548f2e35a3aSmrg cf_regex_func=regcomp 2549f2e35a3aSmrg break]) 2550f2e35a3aSmrg done 2551f2e35a3aSmrg ]) 25526879286fSmrg ;; 25536879286fSmrgesac 25546879286fSmrg 255520d2c4d2Smrgif test "$cf_regex_func" = no ; then 255620d2c4d2Smrg AC_CHECK_FUNC(compile,[cf_regex_func=compile],[ 255720d2c4d2Smrg AC_CHECK_LIB(gen,compile,[ 255820d2c4d2Smrg CF_ADD_LIB(gen) 255920d2c4d2Smrg cf_regex_func=compile])]) 256020d2c4d2Smrgfi 256120d2c4d2Smrg 256220d2c4d2Smrgif test "$cf_regex_func" = no ; then 256320d2c4d2Smrg AC_MSG_WARN(cannot find regular expression library) 256420d2c4d2Smrgfi 256520d2c4d2Smrg 256620d2c4d2SmrgAC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[ 256720d2c4d2Smrg 256820d2c4d2Smrgcf_cv_regex_hdrs=no 2569f2e35a3aSmrgcase "$cf_regex_func" in 257001037d57Smrg(compile) 257120d2c4d2Smrg for cf_regex_hdr in regexp.h regexpr.h 257220d2c4d2Smrg do 257320d2c4d2Smrg AC_TRY_LINK([#include <$cf_regex_hdr>],[ 257420d2c4d2Smrg char *p = compile("", "", "", 0); 2575d522f475Smrg int x = step("", ""); 2576f2e35a3aSmrg (void)p; 2577f2e35a3aSmrg (void)x; 257820d2c4d2Smrg ],[ 257920d2c4d2Smrg cf_cv_regex_hdrs=$cf_regex_hdr 258020d2c4d2Smrg break 258120d2c4d2Smrg ]) 258220d2c4d2Smrg done 258320d2c4d2Smrg ;; 258401037d57Smrg(*) 258520d2c4d2Smrg for cf_regex_hdr in regex.h 258620d2c4d2Smrg do 258720d2c4d2Smrg AC_TRY_LINK([#include <sys/types.h> 25885104ee6eSmrg#include <stdio.h> 258920d2c4d2Smrg#include <$cf_regex_hdr>],[ 25905104ee6eSmrg regex_t *p = NULL; 259120d2c4d2Smrg int x = regcomp(p, "", 0); 259220d2c4d2Smrg int y = regexec(p, "", 0, 0, 0); 2593f2e35a3aSmrg (void)x; 2594f2e35a3aSmrg (void)y; 259520d2c4d2Smrg regfree(p); 259620d2c4d2Smrg ],[ 259720d2c4d2Smrg cf_cv_regex_hdrs=$cf_regex_hdr 259820d2c4d2Smrg break 259920d2c4d2Smrg ]) 260020d2c4d2Smrg done 260120d2c4d2Smrg ;; 260220d2c4d2Smrgesac 260320d2c4d2Smrg 2604d522f475Smrg]) 260520d2c4d2Smrg 2606f2e35a3aSmrgcase "$cf_cv_regex_hdrs" in 26072e4f8982Smrg (no) AC_MSG_WARN(no regular expression header found) ;; 26082e4f8982Smrg (regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;; 26092e4f8982Smrg (regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;; 26102e4f8982Smrg (regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;; 2611d522f475Smrgesac 2612d522f475Smrg])dnl 2613d522f475Smrgdnl --------------------------------------------------------------------------- 2614a5ae21e4Smrgdnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40 2615a5ae21e4Smrgdnl ---------------- 2616a5ae21e4Smrgdnl Remove a given option from CFLAGS/CPPFLAGS 2617a5ae21e4Smrgdnl $1 = option to remove 2618a5ae21e4Smrgdnl $2 = variable to update 2619a5ae21e4Smrgdnl $3 = nonempty to allow verbose message 2620a5ae21e4Smrgdefine([CF_REMOVE_CFLAGS], 2621a5ae21e4Smrg[ 2622a5ae21e4Smrgcf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'` 2623a5ae21e4Smrgwhile true 2624a5ae21e4Smrgdo 2625a5ae21e4Smrg 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'` 2626a5ae21e4Smrg test "[$]$2" != "$cf_old_cflag" || break 2627a5ae21e4Smrg ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)]) 2628a5ae21e4Smrg $2="$cf_old_cflag" 2629a5ae21e4Smrgdone 2630a5ae21e4Smrg])dnl 2631a5ae21e4Smrgdnl --------------------------------------------------------------------------- 263220d2c4d2Smrgdnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 2633d522f475Smrgdnl ---------------- 2634d522f475Smrgdnl Remove all -U and -D options that refer to the given symbol from a list 2635d522f475Smrgdnl of C compiler options. This works around the problem that not all 2636d522f475Smrgdnl compilers process -U and -D options from left-to-right, so a -U option 2637d522f475Smrgdnl cannot be used to cancel the effect of a preceding -D option. 2638d522f475Smrgdnl 2639d522f475Smrgdnl $1 = target (which could be the same as the source variable) 2640d522f475Smrgdnl $2 = source (including '$') 2641d522f475Smrgdnl $3 = symbol to remove 2642d522f475Smrgdefine([CF_REMOVE_DEFINE], 2643d522f475Smrg[ 2644d522f475Smrg$1=`echo "$2" | \ 264520d2c4d2Smrg sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ 264620d2c4d2Smrg -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` 264720d2c4d2Smrg])dnl 264820d2c4d2Smrgdnl --------------------------------------------------------------------------- 2649f2e35a3aSmrgdnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45 2650f2e35a3aSmrgdnl --------------------- 2651f2e35a3aSmrgdnl Restore flags saved in CF_SAVE_XTRA_FLAGS 2652f2e35a3aSmrgdnl $1 = name of current macro 2653f2e35a3aSmrgdefine([CF_RESTORE_XTRA_FLAGS], 2654f2e35a3aSmrg[ 2655f2e35a3aSmrgLIBS="$cf_save_LIBS_$1" 2656f2e35a3aSmrgCFLAGS="$cf_save_CFLAGS_$1" 2657f2e35a3aSmrgCPPFLAGS="$cf_save_CPPFLAGS_$1" 2658f2e35a3aSmrg])dnl 2659f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2660f2e35a3aSmrgdnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50 266120d2c4d2Smrgdnl ------------- 266220d2c4d2SmrgAC_DEFUN([CF_RPATH_HACK], 2663f2e35a3aSmrg[AC_REQUIRE([AC_PROG_FGREP])dnl 2664f2e35a3aSmrgAC_REQUIRE([CF_LD_RPATH_OPT])dnl 2665f2e35a3aSmrg 266620d2c4d2SmrgAC_MSG_CHECKING(for updated LDFLAGS) 266720d2c4d2Smrgif test -n "$LD_RPATH_OPT" ; then 266820d2c4d2Smrg AC_MSG_RESULT(maybe) 266920d2c4d2Smrg 267020d2c4d2Smrg AC_CHECK_PROGS(cf_ldd_prog,ldd,no) 267120d2c4d2Smrg cf_rpath_list="/usr/lib /lib" 267220d2c4d2Smrg if test "$cf_ldd_prog" != no 267320d2c4d2Smrg then 2674a1f3da82Smrg cf_rpath_oops= 2675a1f3da82Smrg 267620d2c4d2SmrgAC_TRY_LINK([#include <stdio.h>], 267720d2c4d2Smrg [printf("Hello");], 2678f2e35a3aSmrg [cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq` 2679f2e35a3aSmrg cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`]) 2680a1f3da82Smrg 2681a1f3da82Smrg # If we passed the link-test, but get a "not found" on a given library, 2682a1f3da82Smrg # this could be due to inept reconfiguration of gcc to make it only 2683a1f3da82Smrg # partly honor /usr/local/lib (or whatever). Sometimes this behavior 2684a1f3da82Smrg # is intentional, e.g., installing gcc in /usr/bin and suppressing the 2685a1f3da82Smrg # /usr/local libraries. 2686a1f3da82Smrg if test -n "$cf_rpath_oops" 2687a1f3da82Smrg then 2688a1f3da82Smrg for cf_rpath_src in $cf_rpath_oops 2689a1f3da82Smrg do 2690a1f3da82Smrg for cf_rpath_dir in \ 2691a1f3da82Smrg /usr/local \ 2692a1f3da82Smrg /usr/pkg \ 2693a1f3da82Smrg /opt/sfw 2694a1f3da82Smrg do 2695f2e35a3aSmrg if test -f "$cf_rpath_dir/lib/$cf_rpath_src" 2696a1f3da82Smrg then 2697a1f3da82Smrg CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src) 2698a1f3da82Smrg LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" 2699a1f3da82Smrg break 2700a1f3da82Smrg fi 2701a1f3da82Smrg done 2702a1f3da82Smrg done 2703a1f3da82Smrg fi 270420d2c4d2Smrg fi 270520d2c4d2Smrg 270620d2c4d2Smrg CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS) 270720d2c4d2Smrg 270820d2c4d2Smrg CF_RPATH_HACK_2(LDFLAGS) 270920d2c4d2Smrg CF_RPATH_HACK_2(LIBS) 271020d2c4d2Smrg 271120d2c4d2Smrg CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS) 2712e0a2b6dfSmrgelse 2713e0a2b6dfSmrg AC_MSG_RESULT(no) 271420d2c4d2Smrgfi 271520d2c4d2SmrgAC_SUBST(EXTRA_LDFLAGS) 271620d2c4d2Smrg])dnl 271720d2c4d2Smrgdnl --------------------------------------------------------------------------- 2718f2e35a3aSmrgdnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04 271920d2c4d2Smrgdnl --------------- 272020d2c4d2Smrgdnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to 272120d2c4d2Smrgdnl EXTRA_LDFLAGS for each -L option found. 272220d2c4d2Smrgdnl 272320d2c4d2Smrgdnl $cf_rpath_list contains a list of directories to ignore. 272420d2c4d2Smrgdnl 272520d2c4d2Smrgdnl $1 = variable name to update. The LDFLAGS variable should be the only one, 272620d2c4d2Smrgdnl but LIBS often has misplaced -L options. 272720d2c4d2SmrgAC_DEFUN([CF_RPATH_HACK_2], 272820d2c4d2Smrg[ 272920d2c4d2SmrgCF_VERBOSE(...checking $1 [$]$1) 273020d2c4d2Smrg 273120d2c4d2Smrgcf_rpath_dst= 273220d2c4d2Smrgfor cf_rpath_src in [$]$1 273320d2c4d2Smrgdo 2734f2e35a3aSmrg case "$cf_rpath_src" in 273501037d57Smrg (-L*) 273620d2c4d2Smrg 273720d2c4d2Smrg # check if this refers to a directory which we will ignore 273820d2c4d2Smrg cf_rpath_skip=no 273920d2c4d2Smrg if test -n "$cf_rpath_list" 274020d2c4d2Smrg then 274120d2c4d2Smrg for cf_rpath_item in $cf_rpath_list 274220d2c4d2Smrg do 274320d2c4d2Smrg if test "x$cf_rpath_src" = "x-L$cf_rpath_item" 274420d2c4d2Smrg then 274520d2c4d2Smrg cf_rpath_skip=yes 274620d2c4d2Smrg break 274720d2c4d2Smrg fi 274820d2c4d2Smrg done 274920d2c4d2Smrg fi 275020d2c4d2Smrg 275120d2c4d2Smrg if test "$cf_rpath_skip" = no 275220d2c4d2Smrg then 275320d2c4d2Smrg # transform the option 275420d2c4d2Smrg if test "$LD_RPATH_OPT" = "-R " ; then 275520d2c4d2Smrg cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` 275620d2c4d2Smrg else 275720d2c4d2Smrg cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` 275820d2c4d2Smrg fi 275920d2c4d2Smrg 276020d2c4d2Smrg # if we have not already added this, add it now 276120d2c4d2Smrg cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` 276220d2c4d2Smrg if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" 276320d2c4d2Smrg then 276420d2c4d2Smrg CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp) 276520d2c4d2Smrg EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" 276620d2c4d2Smrg fi 276720d2c4d2Smrg fi 276820d2c4d2Smrg ;; 276920d2c4d2Smrg esac 277020d2c4d2Smrg cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" 277120d2c4d2Smrgdone 277220d2c4d2Smrg$1=$cf_rpath_dst 277320d2c4d2Smrg 277420d2c4d2SmrgCF_VERBOSE(...checked $1 [$]$1) 277520d2c4d2SmrgAC_SUBST(EXTRA_LDFLAGS) 2776d522f475Smrg])dnl 2777d522f475Smrgdnl --------------------------------------------------------------------------- 2778f2e35a3aSmrgdnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44 2779f2e35a3aSmrgdnl ------------------ 2780f2e35a3aSmrgdnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers 2781f2e35a3aSmrgdnl and libraries which do not update those variables. 2782f2e35a3aSmrgdnl 2783f2e35a3aSmrgdnl $1 = name of current macro 2784f2e35a3aSmrgdefine([CF_SAVE_XTRA_FLAGS], 2785f2e35a3aSmrg[ 2786f2e35a3aSmrgcf_save_LIBS_$1="$LIBS" 2787f2e35a3aSmrgcf_save_CFLAGS_$1="$CFLAGS" 2788f2e35a3aSmrgcf_save_CPPFLAGS_$1="$CPPFLAGS" 2789f2e35a3aSmrgLIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" 2790f2e35a3aSmrgfor cf_X_CFLAGS in $X_CFLAGS 2791f2e35a3aSmrgdo 2792f2e35a3aSmrg case "x$cf_X_CFLAGS" in 2793f2e35a3aSmrg x-[[IUD]]*) 2794f2e35a3aSmrg CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" 2795f2e35a3aSmrg ;; 2796f2e35a3aSmrg *) 2797f2e35a3aSmrg CFLAGS="$CFLAGS $cf_X_CFLAGS" 2798f2e35a3aSmrg ;; 2799f2e35a3aSmrg esac 2800f2e35a3aSmrgdone 2801f2e35a3aSmrg])dnl 2802f2e35a3aSmrgdnl --------------------------------------------------------------------------- 28035307cd1aSmrgdnl CF_SETITIMER version: 1 updated: 2023/01/25 19:55:24 28045307cd1aSmrgdnl ------------ 28055307cd1aSmrgAC_DEFUN([CF_SETITIMER], 28065307cd1aSmrg[ 28075307cd1aSmrgAC_CACHE_CHECK(if setitimer is available,cf_cv_func_setitimer,[ 28085307cd1aSmrgAC_TRY_COMPILE([ 28095307cd1aSmrg$ac_includes_default 28105307cd1aSmrg#include <sys/time.h> 28115307cd1aSmrg],[ 28125307cd1aSmrg struct itimerval it; 28135307cd1aSmrg memset(&it, 0, sizeof(struct itimerval)); 28145307cd1aSmrg it.it_value.tv_sec = 1; 28155307cd1aSmrg setitimer(ITIMER_REAL, &it, NULL); 28165307cd1aSmrg], 28175307cd1aSmrg[cf_cv_func_setitimer=yes], 28185307cd1aSmrg[cf_cv_func_setitimer=no]) 28195307cd1aSmrg]) 28205307cd1aSmrgtest "$cf_cv_func_setitimer" != no && AC_DEFINE(HAVE_SETITIMER,1,[Define to 1 if setitimer is available]) 28215307cd1aSmrg])dnl 28225307cd1aSmrgdnl --------------------------------------------------------------------------- 28235307cd1aSmrgdnl CF_SIGWINCH version: 7 updated: 2023/02/18 17:41:25 2824d522f475Smrgdnl ----------- 2825d522f475Smrgdnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all 2826d522f475Smrgdnl programs need this test). 2827d522f475Smrgdnl 2828f2e35a3aSmrgdnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE 2829d522f475Smrgdnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct 2830d522f475Smrgdnl winsize declaration is left alone - we may revisit this if Apple choose to 2831d522f475Smrgdnl break that part of the interface as well. 2832d522f475SmrgAC_DEFUN([CF_SIGWINCH], 2833d522f475Smrg[ 2834d522f475SmrgAC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[ 2835d522f475Smrg AC_TRY_COMPILE([ 2836d522f475Smrg#include <sys/types.h> 2837d522f475Smrg#include <sys/signal.h> 2838f2e35a3aSmrg],[int x = SIGWINCH; (void)x], 2839d522f475Smrg [cf_cv_define_sigwinch=yes], 2840d522f475Smrg [AC_TRY_COMPILE([ 2841d522f475Smrg#undef _XOPEN_SOURCE 2842d522f475Smrg#undef _POSIX_SOURCE 2843d522f475Smrg#undef _POSIX_C_SOURCE 2844d522f475Smrg#include <sys/types.h> 2845d522f475Smrg#include <sys/signal.h> 2846f2e35a3aSmrg],[int x = SIGWINCH; (void)x], 2847d522f475Smrg [cf_cv_define_sigwinch=maybe], 2848d522f475Smrg [cf_cv_define_sigwinch=no]) 2849d522f475Smrg]) 2850d522f475Smrg]) 2851d522f475Smrg 2852d522f475Smrgif test "$cf_cv_define_sigwinch" = maybe ; then 2853d522f475SmrgAC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[ 2854d522f475Smrgcf_cv_fixup_sigwinch=unknown 2855d522f475Smrgcf_sigwinch=32 2856f2e35a3aSmrgwhile test "$cf_sigwinch" != 1 2857d522f475Smrgdo 2858d522f475Smrg AC_TRY_COMPILE([ 2859d522f475Smrg#undef _XOPEN_SOURCE 2860d522f475Smrg#undef _POSIX_SOURCE 2861d522f475Smrg#undef _POSIX_C_SOURCE 2862d522f475Smrg#include <sys/types.h> 2863d522f475Smrg#include <sys/signal.h> 2864d522f475Smrg],[ 2865d522f475Smrg#if SIGWINCH != $cf_sigwinch 28665307cd1aSmrg#error SIGWINCH is not $cf_sigwinch 2867d522f475Smrg#endif 2868f2e35a3aSmrgint x = SIGWINCH; (void)x], 2869d522f475Smrg [cf_cv_fixup_sigwinch=$cf_sigwinch 2870d522f475Smrg break]) 2871d522f475Smrg 2872f2e35a3aSmrgcf_sigwinch="`expr "$cf_sigwinch" - 1`" 2873d522f475Smrgdone 2874d522f475Smrg]) 2875d522f475Smrg 2876d522f475Smrg if test "$cf_cv_fixup_sigwinch" != unknown ; then 2877d522f475Smrg CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" 2878d522f475Smrg fi 2879d522f475Smrgfi 2880d522f475Smrg])dnl 2881d522f475Smrgdnl --------------------------------------------------------------------------- 2882f2e35a3aSmrgdnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47 2883d522f475Smrgdnl --------------- 2884f2e35a3aSmrgdnl signal handler, but there are some gcc dependencies in that recommendation. 2885d522f475Smrgdnl Try anyway. 2886d522f475SmrgAC_DEFUN([CF_SIG_ATOMIC_T], 2887d522f475Smrg[ 2888d522f475SmrgAC_MSG_CHECKING(for signal global datatype) 2889d522f475SmrgAC_CACHE_VAL(cf_cv_sig_atomic_t,[ 2890d522f475Smrg for cf_type in \ 2891d522f475Smrg "volatile sig_atomic_t" \ 2892d522f475Smrg "sig_atomic_t" \ 2893d522f475Smrg "int" 2894d522f475Smrg do 2895d522f475Smrg AC_TRY_COMPILE([ 2896d522f475Smrg#include <sys/types.h> 2897d522f475Smrg#include <signal.h> 2898d522f475Smrg#include <stdio.h> 2899d522f475Smrg 2900d522f475Smrgextern $cf_type x; 2901d522f475Smrg$cf_type x; 2902d522f475Smrgstatic void handler(int sig) 2903d522f475Smrg{ 2904f2e35a3aSmrg (void)sig; 2905d522f475Smrg x = 5; 2906d522f475Smrg}], 2907d522f475Smrg [signal(SIGINT, handler); 2908d522f475Smrg x = 1], 2909d522f475Smrg [cf_cv_sig_atomic_t=$cf_type], 2910d522f475Smrg [cf_cv_sig_atomic_t=no]) 2911d522f475Smrg test "$cf_cv_sig_atomic_t" != no && break 2912d522f475Smrg done 2913d522f475Smrg ]) 2914d522f475SmrgAC_MSG_RESULT($cf_cv_sig_atomic_t) 29150bd37d32Smrgtest "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype]) 2916d522f475Smrg])dnl 2917d522f475Smrgdnl --------------------------------------------------------------------------- 29185307cd1aSmrgdnl CF_STRUCT_LASTLOG version: 4 updated: 2023/01/05 17:56:31 2919d522f475Smrgdnl ----------------- 2920d522f475Smrgdnl Check for header defining struct lastlog, ensure that its .ll_time member 2921d522f475Smrgdnl is compatible with time(). 2922d522f475SmrgAC_DEFUN([CF_STRUCT_LASTLOG], 2923d522f475Smrg[ 2924d522f475SmrgAC_CHECK_HEADERS(lastlog.h) 2925d522f475SmrgAC_CACHE_CHECK(for struct lastlog,cf_cv_struct_lastlog,[ 2926d522f475SmrgAC_TRY_RUN([ 29275307cd1aSmrg$ac_includes_default 29285307cd1aSmrg 2929d522f475Smrg#include <time.h> 2930d522f475Smrg#include <lastlog.h> 2931d522f475Smrg 2932f2e35a3aSmrgint main(void) 2933d522f475Smrg{ 2934d522f475Smrg struct lastlog data; 2935d522f475Smrg return (sizeof(data.ll_time) != sizeof(time_t)); 2936d522f475Smrg}],[ 2937d522f475Smrgcf_cv_struct_lastlog=yes],[ 2938d522f475Smrgcf_cv_struct_lastlog=no],[ 2939d522f475Smrgcf_cv_struct_lastlog=unknown])]) 2940d522f475Smrg 29410bd37d32Smrgtest $cf_cv_struct_lastlog != no && AC_DEFINE(USE_STRUCT_LASTLOG,1,[Define to 1 if we have struct lastlog]) 2942d522f475Smrg])dnl 2943d522f475Smrgdnl --------------------------------------------------------------------------- 294404b94745Smrgdnl CF_SVR4 version: 6 updated: 2023/12/01 17:22:50 2945d522f475Smrgdnl ------- 2946d522f475Smrgdnl Check if this is an SVR4 system. We need the definition for xterm 2947d522f475SmrgAC_DEFUN([CF_SVR4], 2948d522f475Smrg[ 2949d522f475SmrgAC_CHECK_LIB(elf, elf_begin,[ 2950d522f475SmrgAC_CACHE_CHECK(if this is an SVR4 system, cf_cv_svr4,[ 2951d522f475SmrgAC_TRY_COMPILE([ 29520bd37d32Smrg#if defined(__CYGWIN__) 295304b94745Smrg#error Cygwin is not SVr4 29540bd37d32Smrg#endif 2955d522f475Smrg#include <elf.h> 2956d522f475Smrg#include <sys/termio.h> 2957d522f475Smrg],[ 2958d522f475Smrgstatic struct termio d_tio; 2959d522f475Smrg d_tio.c_cc[VINTR] = 0; 2960d522f475Smrg d_tio.c_cc[VQUIT] = 0; 2961d522f475Smrg d_tio.c_cc[VERASE] = 0; 2962d522f475Smrg d_tio.c_cc[VKILL] = 0; 2963d522f475Smrg d_tio.c_cc[VEOF] = 0; 2964d522f475Smrg d_tio.c_cc[VEOL] = 0; 2965d522f475Smrg d_tio.c_cc[VMIN] = 0; 2966d522f475Smrg d_tio.c_cc[VTIME] = 0; 2967d522f475Smrg d_tio.c_cc[VLNEXT] = 0; 2968d522f475Smrg], 2969d522f475Smrg[cf_cv_svr4=yes], 2970d522f475Smrg[cf_cv_svr4=no]) 2971d522f475Smrg]) 2972d522f475Smrg]) 29730bd37d32Smrgtest "$cf_cv_svr4" = yes && AC_DEFINE(SVR4,1,[Define to 1 if this is an SVR4 system]) 2974d522f475Smrg])dnl 2975d522f475Smrgdnl --------------------------------------------------------------------------- 2976f2e35a3aSmrgdnl CF_SYSV version: 16 updated: 2020/01/11 16:46:44 2977d522f475Smrgdnl ------- 2978d522f475Smrgdnl Check if this is a SYSV platform, e.g., as used in <X11/Xos.h>, and whether 2979d522f475Smrgdnl defining it will be helpful. The following features are used to check: 2980d522f475Smrgdnl 2981d522f475Smrgdnl a) bona-fide SVSV doesn't use const for sys_errlist[]. Since this is a 2982d522f475Smrgdnl legacy (pre-ANSI) feature, const should not apply. Modern systems only 2983d522f475Smrgdnl declare strerror(). Xos.h declares the legacy form of str_errlist[], and 2984d522f475Smrgdnl a compile-time error will result from trying to assign to a const array. 2985d522f475Smrgdnl 2986d522f475Smrgdnl b) compile with headers that exist on SYSV hosts. 2987d522f475Smrgdnl 2988d522f475Smrgdnl c) compile with type definitions that differ on SYSV hosts from standard C. 2989d522f475SmrgAC_DEFUN([CF_SYSV], 2990d522f475Smrg[ 2991f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 2992f2e35a3aSmrg 2993f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_SYSV]) 2994f2e35a3aSmrg 2995d522f475SmrgAC_CHECK_HEADERS( \ 2996d522f475Smrgtermios.h \ 2997d522f475Smrgstdlib.h \ 2998d522f475SmrgX11/Intrinsic.h \ 2999d522f475Smrg) 3000d522f475Smrg 3001d522f475SmrgAC_REQUIRE([CF_SYS_ERRLIST]) 3002d522f475Smrg 3003d522f475SmrgAC_CACHE_CHECK(if we should define SYSV,cf_cv_sysv,[ 3004d522f475SmrgAC_TRY_COMPILE([ 3005d522f475Smrg#undef SYSV 3006d522f475Smrg#define SYSV 1 /* get Xos.h to declare sys_errlist[] */ 3007d522f475Smrg#ifdef HAVE_STDLIB_H 3008d522f475Smrg#include <stdlib.h> /* look for wchar_t */ 3009d522f475Smrg#endif 3010d522f475Smrg#ifdef HAVE_X11_INTRINSIC_H 3011d522f475Smrg#include <X11/Intrinsic.h> /* Intrinsic.h has other traps... */ 3012d522f475Smrg#endif 30130bd37d32Smrg#ifdef HAVE_TERMIOS_H /* needed for HPUX 10.20 */ 30140bd37d32Smrg#include <termios.h> 30150bd37d32Smrg#define STRUCT_TERMIOS struct termios 30160bd37d32Smrg#else 30170bd37d32Smrg#define STRUCT_TERMIOS struct termio 30180bd37d32Smrg#endif 3019d522f475Smrg#include <curses.h> 3020d522f475Smrg#include <term.h> /* eliminate most BSD hacks */ 3021d522f475Smrg#include <errno.h> /* declare sys_errlist on older systems */ 3022d522f475Smrg#include <sys/termio.h> /* eliminate most of the remaining ones */ 3023d522f475Smrg],[ 3024d522f475Smrgstatic STRUCT_TERMIOS d_tio; 3025d522f475Smrg d_tio.c_cc[VINTR] = 0; 3026d522f475Smrg d_tio.c_cc[VQUIT] = 0; 3027d522f475Smrg d_tio.c_cc[VERASE] = 0; 3028d522f475Smrg d_tio.c_cc[VKILL] = 0; 3029d522f475Smrg d_tio.c_cc[VEOF] = 0; 3030d522f475Smrg d_tio.c_cc[VEOL] = 0; 3031d522f475Smrg d_tio.c_cc[VMIN] = 0; 3032d522f475Smrg d_tio.c_cc[VTIME] = 0; 3033d522f475Smrg#if defined(HAVE_SYS_ERRLIST) && !defined(DECL_SYS_ERRLIST) 3034d522f475Smrgsys_errlist[0] = ""; /* Cygwin mis-declares this */ 3035d522f475Smrg#endif 3036d522f475Smrg], 3037d522f475Smrg[cf_cv_sysv=yes], 3038d522f475Smrg[cf_cv_sysv=no]) 3039d522f475Smrg]) 30400bd37d32Smrgtest "$cf_cv_sysv" = yes && AC_DEFINE(SYSV,1,[Define to 1 if this is an SYSV system]) 3041f2e35a3aSmrg 3042f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_SYSV]) 3043d522f475Smrg])dnl 3044d522f475Smrgdnl --------------------------------------------------------------------------- 3045f2e35a3aSmrgdnl CF_SYSV_UTMP version: 7 updated: 2021/01/02 09:31:20 3046d522f475Smrgdnl ------------ 3047d522f475Smrgdnl Check if this is a SYSV flavor of UTMP 3048d522f475SmrgAC_DEFUN([CF_SYSV_UTMP], 3049d522f475Smrg[ 3050d522f475SmrgAC_CACHE_CHECK(if $cf_cv_have_utmp is SYSV flavor,cf_cv_sysv_utmp,[ 3051d522f475Smrgtest "$cf_cv_have_utmp" = "utmp" && cf_prefix="ut" || cf_prefix="utx" 3052d522f475SmrgAC_TRY_LINK([ 3053d522f475Smrg#include <sys/types.h> 3054d522f475Smrg#include <${cf_cv_have_utmp}.h>],[ 3055d522f475Smrgstruct $cf_cv_have_utmp x; 3056d522f475Smrg set${cf_prefix}ent (); 3057d522f475Smrg get${cf_prefix}id(&x); 3058d522f475Smrg put${cf_prefix}line(&x); 3059d522f475Smrg end${cf_prefix}ent();], 3060d522f475Smrg [cf_cv_sysv_utmp=yes], 3061d522f475Smrg [cf_cv_sysv_utmp=no]) 3062d522f475Smrg]) 3063f2e35a3aSmrgtest "$cf_cv_sysv_utmp" = yes && AC_DEFINE(USE_SYSV_UTMP,1,[Define to 1 if utmp is SYSV flavor]) 3064d522f475Smrg])dnl 3065d522f475Smrgdnl --------------------------------------------------------------------------- 3066d522f475Smrgdnl CF_SYS_ERRLIST version: 6 updated: 2001/12/30 13:03:23 3067d522f475Smrgdnl -------------- 3068d522f475Smrgdnl Check for declaration of sys_nerr and sys_errlist in one of stdio.h and 3069d522f475Smrgdnl errno.h. Declaration of sys_errlist on BSD4.4 interferes with our 3070d522f475Smrgdnl declaration. Reported by Keith Bostic. 3071d522f475SmrgAC_DEFUN([CF_SYS_ERRLIST], 3072d522f475Smrg[ 3073d522f475Smrg CF_CHECK_ERRNO(sys_nerr) 3074d522f475Smrg CF_CHECK_ERRNO(sys_errlist) 3075d522f475Smrg])dnl 3076d522f475Smrgdnl --------------------------------------------------------------------------- 3077f2e35a3aSmrgdnl CF_TERMIOS_TYPES version: 2 updated: 2020/03/10 18:53:47 3078f2e35a3aSmrgdnl ---------------- 3079f2e35a3aSmrgdnl https://pubs.opengroup.org/onlinepubs/009695399/basedefs/termios.h.html 3080f2e35a3aSmrgdnl says that tcflag_t, speed_t and cc_t are typedef'd. If they are not, 3081f2e35a3aSmrgdnl fallback to historical values. 3082f2e35a3aSmrgAC_DEFUN([CF_TERMIOS_TYPES],[ 3083f2e35a3aSmrg 3084f2e35a3aSmrgAC_CACHE_CHECK(for termios type tcflag_t, cf_cv_havetype_tcflag_t,[ 3085f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 3086f2e35a3aSmrg tcflag_t x = 0; (void)x], 3087f2e35a3aSmrg [cf_cv_havetype_tcflag_t=yes], 3088f2e35a3aSmrg [cf_cv_havetype_tcflag_t=no]) 3089f2e35a3aSmrg]) 3090f2e35a3aSmrgtest "$cf_cv_havetype_tcflag_t" = no && AC_DEFINE(tcflag_t,unsigned long,[Define usable value of tcflag_t if not declared]) 3091f2e35a3aSmrg 3092f2e35a3aSmrgAC_CACHE_CHECK(for termios type speed_t, cf_cv_havetype_speed_t,[ 3093f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 3094f2e35a3aSmrg speed_t x = 0; (void)x], 3095f2e35a3aSmrg [cf_cv_havetype_speed_t=yes], 3096f2e35a3aSmrg [cf_cv_havetype_speed_t=no]) 3097f2e35a3aSmrg]) 3098f2e35a3aSmrgtest "$cf_cv_havetype_speed_t" = no && AC_DEFINE(speed_t,unsigned short,[Define usable value of speed_t if not declared]) 3099f2e35a3aSmrg 3100f2e35a3aSmrgAC_CACHE_CHECK(for termios type cc_t, cf_cv_havetype_cc_t,[ 3101f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 3102f2e35a3aSmrg cc_t x = 0; (void)x], 3103f2e35a3aSmrg [cf_cv_havetype_cc_t=yes], 3104f2e35a3aSmrg [cf_cv_havetype_cc_t=no]) 3105f2e35a3aSmrg]) 3106f2e35a3aSmrgtest "$cf_cv_havetype_cc_t" = no && AC_DEFINE(cc_t,unsigned char,[Define usable value of cc_t if not declared]) 3107f2e35a3aSmrg])dnl 3108f2e35a3aSmrgdnl --------------------------------------------------------------------------- 3109f2e35a3aSmrgdnl CF_TERMIO_C_ISPEED version: 4 updated: 2020/03/10 18:53:47 3110d522f475Smrgdnl ------------------ 3111d522f475Smrgdnl Check for SGI's broken redefinition of baud rates introduced in IRIX 6.5 3112d522f475Smrgdnl (there doesn't appear to be a useful predefined symbol). 3113d522f475SmrgAC_DEFUN([CF_TERMIO_C_ISPEED], 3114d522f475Smrg[ 3115d522f475SmrgAC_CACHE_CHECK(for IRIX 6.5 baud-rate redefinitions,cf_cv_termio_c_ispeed,[ 3116d522f475SmrgAC_TRY_COMPILE([ 3117d522f475Smrg#include <sys/types.h> 3118d522f475Smrg#include <sys/termio.h>],[ 3119d522f475Smrgstruct termio foo; 3120d522f475Smrgfoo.c_ispeed = B38400; 3121d522f475Smrgfoo.c_ospeed = B9600; 3122f2e35a3aSmrg(void)foo; 3123d522f475Smrg],[cf_cv_termio_c_ispeed=yes 3124d522f475Smrg],[cf_cv_termio_c_ispeed=no]) 3125d522f475Smrg]) 31260bd37d32Smrgtest "$cf_cv_termio_c_ispeed" = yes && AC_DEFINE(HAVE_TERMIO_C_ISPEED,1,[define 1 if we have IRIX 6.5 baud-rate redefinitions]) 3127d522f475Smrg])dnl 3128d522f475Smrgdnl --------------------------------------------------------------------------- 312901037d57Smrgdnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00 3130e0a2b6dfSmrgdnl -------------- 3131e0a2b6dfSmrgdnl Trim extra base X libraries added as a workaround for inconsistent library 3132e0a2b6dfSmrgdnl dependencies returned by "new" pkg-config files. 3133e0a2b6dfSmrgAC_DEFUN([CF_TRIM_X_LIBS],[ 3134e0a2b6dfSmrg for cf_trim_lib in Xmu Xt X11 3135e0a2b6dfSmrg do 3136e0a2b6dfSmrg case "$LIBS" in 313701037d57Smrg (*-l$cf_trim_lib\ *-l$cf_trim_lib*) 3138e0a2b6dfSmrg LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'` 3139e0a2b6dfSmrg CF_VERBOSE(..trimmed $LIBS) 3140e0a2b6dfSmrg ;; 3141e0a2b6dfSmrg esac 3142e0a2b6dfSmrg done 3143e0a2b6dfSmrg]) 3144e0a2b6dfSmrgdnl --------------------------------------------------------------------------- 3145f2e35a3aSmrgdnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15 314620d2c4d2Smrgdnl ----------------- 314720d2c4d2Smrgdnl This is a simple wrapper to use for pkg-config, for libraries which may be 314820d2c4d2Smrgdnl available in that form. 314920d2c4d2Smrgdnl 3150f2e35a3aSmrgdnl $1 = package name, which may be a shell variable 315120d2c4d2Smrgdnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS 315220d2c4d2Smrgdnl $3 = logic to use if pkg-config does not have the package 315320d2c4d2SmrgAC_DEFUN([CF_TRY_PKG_CONFIG],[ 315420d2c4d2SmrgAC_REQUIRE([CF_PKG_CONFIG]) 315520d2c4d2Smrg 3156f2e35a3aSmrgif test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then 315720d2c4d2Smrg CF_VERBOSE(found package $1) 3158f2e35a3aSmrg cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`" 3159f2e35a3aSmrg cf_pkgconfig_libs="`$PKG_CONFIG --libs "$1" 2>/dev/null`" 316020d2c4d2Smrg CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs) 316120d2c4d2Smrg CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs) 316220d2c4d2Smrg CF_ADD_CFLAGS($cf_pkgconfig_incs) 316320d2c4d2Smrg CF_ADD_LIBS($cf_pkgconfig_libs) 316420d2c4d2Smrg ifelse([$2],,:,[$2]) 316520d2c4d2Smrgelse 3166e0a2b6dfSmrg cf_pkgconfig_incs= 3167e0a2b6dfSmrg cf_pkgconfig_libs= 316820d2c4d2Smrg ifelse([$3],,:,[$3]) 316920d2c4d2Smrgfi 317020d2c4d2Smrg]) 317120d2c4d2Smrgdnl --------------------------------------------------------------------------- 31725307cd1aSmrgdnl CF_TRY_XOPEN_SOURCE version: 4 updated: 2022/09/10 15:16:16 31730bd37d32Smrgdnl ------------------- 31740bd37d32Smrgdnl If _XOPEN_SOURCE is not defined in the compile environment, check if we 31750bd37d32Smrgdnl can define it successfully. 31760bd37d32SmrgAC_DEFUN([CF_TRY_XOPEN_SOURCE],[ 31770bd37d32SmrgAC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ 31785307cd1aSmrg AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY, 31790bd37d32Smrg [cf_cv_xopen_source=no], 31800bd37d32Smrg [cf_save="$CPPFLAGS" 3181f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE) 31825307cd1aSmrg AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY, 31835307cd1aSmrg [cf_cv_xopen_source=no], 31845307cd1aSmrg [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) 31855307cd1aSmrg CPPFLAGS="$cf_save" 31860bd37d32Smrg ]) 31870bd37d32Smrg]) 31880bd37d32Smrg 31890bd37d32Smrgif test "$cf_cv_xopen_source" != no ; then 31900bd37d32Smrg CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) 31910bd37d32Smrg CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) 31920bd37d32Smrg cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" 3193a5ae21e4Smrg CF_APPEND_CFLAGS($cf_temp_xopen_source) 31940bd37d32Smrgfi 31950bd37d32Smrg]) 31960bd37d32Smrgdnl --------------------------------------------------------------------------- 319704b94745Smrgdnl CF_TTY_GROUP version: 17 updated: 2023/12/01 17:22:50 3198d522f475Smrgdnl ------------ 3199d522f475Smrgdnl Check if the system has a tty-group defined. This is used in xterm when 3200d522f475Smrgdnl setting pty ownership. 3201f2e35a3aSmrgdnl 3202f2e35a3aSmrgdnl The check relies upon running a test-program, which calls ttyname. If this 3203f2e35a3aSmrgdnl is run in batch mode, or if autoconf uses shell functions, the extra layer 3204f2e35a3aSmrgdnl of eval/call may close stdin, making calls to ttyname fail. To work around 3205f2e35a3aSmrgdnl that, fall back to "/dev/tty". 3206d522f475SmrgAC_DEFUN([CF_TTY_GROUP], 3207f2e35a3aSmrg[AC_REQUIRE([AC_PROG_EGREP])dnl 3208d522f475SmrgAC_MSG_CHECKING(for explicit tty group name) 3209d522f475SmrgAC_ARG_WITH(tty-group, 321004b94745Smrg [[ --with-tty-group[=XXX] use XXX for the tty-group]], 3211d522f475Smrg [cf_tty_group=$withval], 3212d522f475Smrg [cf_tty_group=auto...]) 3213d522f475Smrgtest -z "$cf_tty_group" && cf_tty_group=auto... 3214d522f475Smrgtest "$cf_tty_group" = yes && cf_tty_group=auto... 3215d522f475SmrgAC_MSG_RESULT($cf_tty_group) 3216d522f475Smrg 3217d522f475Smrgif test "$cf_tty_group" = "auto..." ; then 3218d522f475SmrgAC_CACHE_CHECK(for tty group name,cf_cv_tty_group_name,[ 3219d522f475Smrg 3220d522f475Smrg# If we are configuring as root, it is hard to get a clue about the tty group. 3221d522f475Smrg# But we'll guess based on how our connection is set up - assuming it is done 3222d522f475Smrg# properly. 3223d522f475Smrg 3224f2e35a3aSmrgcf_uid="`id | sed -e 's/^[^=]*=//' -e 's/(.*$//'`" 3225d522f475Smrg# )vi 3226d522f475Smrgif test "$cf_uid" != 0 ; then 3227d522f475Smrgcf_cv_tty_group_name= 3228f2e35a3aSmrgcf_tty_name="`tty`" 3229d522f475Smrgtest "$cf_tty_name" = "not a tty" && cf_tty_name=/dev/tty 3230d522f475Smrgtest -z "$cf_tty_name" && cf_tty_name=/dev/tty 3231d522f475Smrgif test -c "$cf_tty_name" 3232d522f475Smrgthen 3233f2e35a3aSmrg cf_option="-lL" 3234d522f475Smrg 3235d522f475Smrg # Expect listing to have fields like this: 3236d522f475Smrg #-rwxrwxrwx 1 user group 34293 Jul 18 16:29 pathname 3237f2e35a3aSmrg ls $cf_option "$cf_tty_name" >conftest.out 3238d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out 3239d522f475Smrg if test -z "$cf_rest" ; then 3240f2e35a3aSmrg cf_option="${cf_option}g" 3241f2e35a3aSmrg ls "$cf_option" "$cf_tty_name" >conftest.out 3242d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out 3243d522f475Smrg fi 3244d522f475Smrg rm -f conftest.out 3245d522f475Smrg cf_cv_tty_group_name=$cf_grp 3246d522f475Smrgfi 3247d522f475Smrgfi 3248d522f475Smrg 3249d522f475Smrg# If we cannot deduce the tty group, fall back on hardcoded cases 3250d522f475Smrg 3251d522f475Smrgif test -z "$cf_cv_tty_group_name" 3252d522f475Smrgthen 325301037d57Smrgcase $host_os in 325401037d57Smrg(osf*) 3255d522f475Smrg cf_cv_tty_group_name="terminal" 3256d522f475Smrg ;; 325701037d57Smrg(*) 3258d522f475Smrg cf_cv_tty_group_name="unknown" 3259f2e35a3aSmrg if ( ${EGREP-egrep} '^tty:' /etc/group 2>/dev/null 1>/dev/null ) then 3260d522f475Smrg cf_cv_tty_group_name="tty" 3261d522f475Smrg fi 3262d522f475Smrg ;; 3263d522f475Smrgesac 3264d522f475Smrgfi 3265d522f475Smrg]) 3266d522f475Smrgcf_tty_group="$cf_cv_tty_group_name" 3267d522f475Smrgelse 3268d522f475Smrg # if configure option, always do this 32690bd37d32Smrg AC_DEFINE(USE_TTY_GROUP,1,[Define to 1 if we have a tty groupname]) 3270d522f475Smrgfi 3271d522f475Smrg 32720bd37d32SmrgAC_DEFINE_UNQUOTED(TTY_GROUP_NAME,"$cf_tty_group",[Define to the name use for tty group]) 3273d522f475Smrg 3274d522f475Smrg# This is only a double-check that the group-name we obtained above really 3275d522f475Smrg# does apply to the device. We cannot perform this test if we are in batch 3276d522f475Smrg# mode, or if we are cross-compiling. 3277d522f475Smrg 3278d522f475SmrgAC_CACHE_CHECK(if we may use the $cf_tty_group group,cf_cv_tty_group,[ 3279f2e35a3aSmrgcf_tty_name="`tty`" 3280d522f475Smrgif test "$cf_tty_name" != "not a tty" 3281d522f475Smrgthen 3282d522f475SmrgAC_TRY_RUN([ 32835307cd1aSmrg$ac_includes_default 32845307cd1aSmrg 3285d522f475Smrg#include <grp.h> 32865307cd1aSmrg 3287f2e35a3aSmrgint main(void) 3288d522f475Smrg{ 328904b94745Smrg static char default_tty[] = "/dev/tty"; 3290d522f475Smrg struct stat sb; 3291f2e35a3aSmrg struct group *ttygrp; 3292f2e35a3aSmrg int fd; 3293f2e35a3aSmrg char *name; 3294d522f475Smrg 3295f2e35a3aSmrg for (fd = 0; fd < 3; ++fd) { 3296f2e35a3aSmrg if ((name = ttyname(fd)) != 0) 3297f2e35a3aSmrg break; 3298f2e35a3aSmrg } 3299f2e35a3aSmrg if (name == 0) 330004b94745Smrg name = default_tty; 3301f2e35a3aSmrg 3302f2e35a3aSmrg ttygrp = getgrnam(TTY_GROUP_NAME); 3303d522f475Smrg endgrent(); 3304f2e35a3aSmrg 3305d522f475Smrg if (ttygrp != 0 3306d522f475Smrg && name != 0 3307d522f475Smrg && stat(name, &sb) == 0 3308d522f475Smrg && sb.st_gid != getgid() 3309d522f475Smrg && sb.st_gid == ttygrp->gr_gid) { 3310d522f475Smrg ${cf_cv_main_return:-return} (0); 3311d522f475Smrg } 3312d522f475Smrg ${cf_cv_main_return:-return} (1); 3313d522f475Smrg} 3314d522f475Smrg ], 3315d522f475Smrg [cf_cv_tty_group=yes], 3316d522f475Smrg [cf_cv_tty_group=no], 3317d522f475Smrg [cf_cv_tty_group=unknown]) 3318d522f475Smrgelif test "$cross_compiling" = yes; then 3319d522f475Smrg cf_cv_tty_group=unknown 3320d522f475Smrgelse 3321d522f475Smrg cf_cv_tty_group=yes 3322d522f475Smrgfi 3323d522f475Smrg]) 3324d522f475Smrg 3325d522f475Smrgif test $cf_cv_tty_group = no ; then 3326d522f475Smrg AC_MSG_WARN(Cannot use $cf_tty_group group) 3327d522f475Smrgelse 3328d522f475Smrg AC_DEFINE(USE_TTY_GROUP) 3329d522f475Smrgfi 3330d522f475Smrg])dnl 3331d522f475Smrgdnl --------------------------------------------------------------------------- 3332f2e35a3aSmrgdnl CF_TYPE_CC_T version: 3 updated: 2020/03/10 18:53:47 33330bd37d32Smrgdnl ------------ 33340bd37d32Smrgdnl Check for cc_t type, used in termio. 33350bd37d32SmrgAC_DEFUN([CF_TYPE_CC_T], 33360bd37d32Smrg[ 33370bd37d32SmrgAC_MSG_CHECKING(for cc_t in <termios.h> or <termio.h>) 33380bd37d32SmrgAC_CACHE_VAL(cf_cv_type_cc_t,[ 33390bd37d32Smrg AC_TRY_COMPILE([ 33400bd37d32Smrg#include <sys/types.h> 33410bd37d32Smrg#if defined(HAVE_TERMIOS_H) 33420bd37d32Smrg#include <termios.h> 33430bd37d32Smrg#else 33440bd37d32Smrg#include <termio.h> 33450bd37d32Smrg#include <sys/ioctl.h> 33460bd37d32Smrg#endif 33470bd37d32Smrg], 3348f2e35a3aSmrg [cc_t x; (void)x], 33490bd37d32Smrg [cf_cv_type_cc_t=yes], 33500bd37d32Smrg [cf_cv_type_cc_t=no]) 33510bd37d32Smrg ]) 33520bd37d32SmrgAC_MSG_RESULT($cf_cv_type_cc_t) 33530bd37d32Smrgtest $cf_cv_type_cc_t = no && AC_DEFINE(cc_t, unsigned char,[Define to cc_t type used in termio]) 33540bd37d32Smrg])dnl 33550bd37d32Smrgdnl --------------------------------------------------------------------------- 33560bd37d32Smrgdnl CF_TYPE_FD_MASK version: 3 updated: 2012/10/04 06:57:36 3357d522f475Smrgdnl --------------- 3358d522f475Smrgdnl Check for the declaration of fd_mask, which is like fd_set, associated 3359d522f475Smrgdnl with select(). The check for fd_set should have pulled in this as well, 3360d522f475Smrgdnl but there is a special case for Mac OS X, possibly other BSD-derived 3361d522f475Smrgdnl platforms. 3362d522f475SmrgAC_DEFUN([CF_TYPE_FD_MASK], 3363d522f475Smrg[ 3364d522f475SmrgAC_REQUIRE([CF_TYPE_FD_SET]) 3365d522f475Smrg 3366d522f475SmrgAC_CACHE_CHECK(for declaration of fd_mask,cf_cv_type_fd_mask,[ 3367d522f475Smrg if test x$cf_cv_type_fd_set = xX11/Xpoll.h ; then 3368d522f475Smrg AC_TRY_COMPILE([ 3369d522f475Smrg#include <X11/Xpoll.h>],[fd_mask x],, 3370d522f475Smrg [CF_MSG_LOG(if we must define CSRG_BASED) 3371d522f475Smrg# Xosdefs.h on Mac OS X may not define this (but it should). 3372d522f475Smrg AC_TRY_COMPILE([ 3373d522f475Smrg#define CSRG_BASED 3374d522f475Smrg#include <X11/Xpoll.h>],[fd_mask x], 3375d522f475Smrg cf_cv_type_fd_mask=CSRG_BASED)]) 3376d522f475Smrg else 3377d522f475Smrg cf_cv_type_fd_mask=$cf_cv_type_fd_set 3378d522f475Smrg fi 3379d522f475Smrg]) 3380d522f475Smrgif test x$cf_cv_type_fd_mask = xCSRG_BASED ; then 33810bd37d32Smrg AC_DEFINE(CSRG_BASED,1,[Define to 1 if needed for declaring fd_mask()]) 3382d522f475Smrgfi 3383d522f475Smrg])dnl 3384d522f475Smrgdnl --------------------------------------------------------------------------- 3385f2e35a3aSmrgdnl CF_TYPE_FD_SET version: 6 updated: 2020/03/10 18:53:47 3386d522f475Smrgdnl -------------- 3387d522f475Smrgdnl Check for the declaration of fd_set. Some platforms declare it in 3388d522f475Smrgdnl <sys/types.h>, and some in <sys/select.h>, which requires <sys/types.h>. 3389d522f475Smrgdnl Finally, if we are using this for an X application, Xpoll.h may include 3390d522f475Smrgdnl <sys/select.h>, so we don't want to do it twice. 3391d522f475SmrgAC_DEFUN([CF_TYPE_FD_SET], 3392d522f475Smrg[ 3393d522f475SmrgAC_CHECK_HEADERS(X11/Xpoll.h) 3394d522f475Smrg 3395d522f475SmrgAC_CACHE_CHECK(for declaration of fd_set,cf_cv_type_fd_set, 3396d522f475Smrg [CF_MSG_LOG(sys/types alone) 3397d522f475SmrgAC_TRY_COMPILE([ 3398d522f475Smrg#include <sys/types.h>], 3399f2e35a3aSmrg [fd_set x; (void)x], 3400d522f475Smrg [cf_cv_type_fd_set=sys/types.h], 3401d522f475Smrg [CF_MSG_LOG(X11/Xpoll.h) 3402d522f475SmrgAC_TRY_COMPILE([ 3403d522f475Smrg#ifdef HAVE_X11_XPOLL_H 3404d522f475Smrg#include <X11/Xpoll.h> 3405d522f475Smrg#endif], 3406f2e35a3aSmrg [fd_set x; (void)x], 3407d522f475Smrg [cf_cv_type_fd_set=X11/Xpoll.h], 3408d522f475Smrg [CF_MSG_LOG(sys/select.h) 3409d522f475SmrgAC_TRY_COMPILE([ 3410d522f475Smrg#include <sys/types.h> 3411d522f475Smrg#include <sys/select.h>], 3412f2e35a3aSmrg [fd_set x; (void)x], 3413d522f475Smrg [cf_cv_type_fd_set=sys/select.h], 3414d522f475Smrg [cf_cv_type_fd_set=unknown])])])]) 3415d522f475Smrgif test $cf_cv_type_fd_set = sys/select.h ; then 34160bd37d32Smrg AC_DEFINE(USE_SYS_SELECT_H,1,[Define to 1 to include sys/select.h to declare fd_set]) 3417d522f475Smrgfi 3418d522f475Smrg]) 3419d522f475Smrgdnl --------------------------------------------------------------------------- 34205307cd1aSmrgdnl CF_TYPE_NFDS_T version: 1 updated: 2023/02/26 20:20:10 34215307cd1aSmrgdnl -------------- 34225307cd1aSmrgdnl Check for nfds_t type, used in poll. 34235307cd1aSmrgAC_DEFUN([CF_TYPE_NFDS_T], 34245307cd1aSmrg[ 34255307cd1aSmrgAC_MSG_CHECKING(for nfds_t in <poll.h>) 34265307cd1aSmrgAC_CACHE_VAL(cf_cv_type_nfds_t,[ 34275307cd1aSmrg AC_TRY_COMPILE([ 34285307cd1aSmrg$ac_includes_default 34295307cd1aSmrg#include <poll.h> 34305307cd1aSmrg], 34315307cd1aSmrg [nfds_t x; (void)x], 34325307cd1aSmrg [cf_cv_type_nfds_t=yes], 34335307cd1aSmrg [cf_cv_type_nfds_t=no]) 34345307cd1aSmrg ]) 34355307cd1aSmrgAC_MSG_RESULT($cf_cv_type_nfds_t) 34365307cd1aSmrgtest $cf_cv_type_nfds_t = no && AC_DEFINE(nfds_t, unsigned,[Define to nfds_t type used in poll]) 34375307cd1aSmrg])dnl 34385307cd1aSmrgdnl --------------------------------------------------------------------------- 3439e39b573cSmrgdnl CF_UNDO_CFLAGS version: 1 updated: 2011/07/02 09:27:51 3440e39b573cSmrgdnl -------------- 3441e39b573cSmrgdnl Remove flags from $CFLAGS or similar shell variable using sed. 3442e39b573cSmrgdnl $1 = variable 3443e39b573cSmrgdnl $2 = message 3444e39b573cSmrgdnl $3 = pattern to remove 3445e39b573cSmrgAC_DEFUN([CF_UNDO_CFLAGS], 3446e39b573cSmrg[ 3447e39b573cSmrg CF_VERBOSE(removing $2 flags from $1) 3448e39b573cSmrg $1=`echo "[$]$1" | sed -e 's/$3//'` 3449e39b573cSmrg CF_VERBOSE(...result [$]$1) 3450e39b573cSmrg])dnl 3451e39b573cSmrgdnl --------------------------------------------------------------------------- 3452d522f475Smrgdnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 3453d522f475Smrgdnl -------- 3454d522f475Smrgdnl Make an uppercase version of a variable 3455d522f475Smrgdnl $1=uppercase($2) 3456d522f475SmrgAC_DEFUN([CF_UPPER], 3457d522f475Smrg[ 3458d522f475Smrg$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` 3459d522f475Smrg])dnl 3460d522f475Smrgdnl --------------------------------------------------------------------------- 34610bd37d32Smrgdnl CF_UTEMPTER version: 4 updated: 2012/10/04 20:12:20 3462d522f475Smrgdnl ----------- 3463d522f475Smrgdnl Try to link with utempter library 3464d522f475SmrgAC_DEFUN([CF_UTEMPTER], 3465d522f475Smrg[ 3466d522f475SmrgAC_CACHE_CHECK(if we can link with utempter library,cf_cv_have_utempter,[ 3467d522f475Smrgcf_save_LIBS="$LIBS" 346820d2c4d2SmrgCF_ADD_LIB(utempter) 3469d522f475SmrgAC_TRY_LINK([ 3470d522f475Smrg#include <utempter.h> 3471d522f475Smrg],[ 3472d522f475Smrg addToUtmp("/dev/tty", 0, 1); 3473d522f475Smrg removeFromUtmp(); 3474d522f475Smrg],[ 3475d522f475Smrg cf_cv_have_utempter=yes],[ 3476d522f475Smrg cf_cv_have_utempter=no]) 3477d522f475SmrgLIBS="$cf_save_LIBS" 3478d522f475Smrg]) 3479d522f475Smrgif test "$cf_cv_have_utempter" = yes ; then 34800bd37d32Smrg AC_DEFINE(USE_UTEMPTER,1,[Define to 1 if we can/should link with utempter]) 348120d2c4d2Smrg CF_ADD_LIB(utempter) 3482d522f475Smrgfi 3483d522f475Smrg])dnl 3484d522f475Smrgdnl --------------------------------------------------------------------------- 3485f2e35a3aSmrgdnl CF_UTMP version: 12 updated: 2021/01/02 09:31:20 3486d522f475Smrgdnl ------- 3487d522f475Smrgdnl Check for UTMP/UTMPX headers 3488d522f475SmrgAC_DEFUN([CF_UTMP], 3489d522f475Smrg[ 3490d522f475SmrgAC_REQUIRE([CF_LASTLOG]) 3491d522f475Smrg 3492d522f475SmrgAC_CACHE_CHECK(for utmp implementation,cf_cv_have_utmp,[ 3493d522f475Smrg cf_cv_have_utmp=no 3494d522f475Smrgfor cf_header in utmpx utmp ; do 3495d522f475Smrgcf_utmp_includes=" 3496d522f475Smrg#include <sys/types.h> 3497d522f475Smrg#include <${cf_header}.h> 3498d522f475Smrg#define getutent getutxent 3499d522f475Smrg#ifdef USE_LASTLOG 3500d522f475Smrg#include <lastlog.h> /* may conflict with utmpx.h on Linux */ 3501d522f475Smrg#endif 3502d522f475Smrg" 3503d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3504d522f475Smrg [struct $cf_header x; 3505d522f475Smrg char *name = x.ut_name; /* utmp.h and compatible definitions */ 3506f2e35a3aSmrg (void)x; 3507f2e35a3aSmrg (void)name; 3508d522f475Smrg ], 3509d522f475Smrg [cf_cv_have_utmp=$cf_header 3510d522f475Smrg break], 3511d522f475Smrg [ 3512d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3513d522f475Smrg [struct $cf_header x; 3514d522f475Smrg char *name = x.ut_user; /* utmpx.h must declare this */ 3515f2e35a3aSmrg (void)x; 3516f2e35a3aSmrg (void)name; 3517d522f475Smrg ], 3518d522f475Smrg [cf_cv_have_utmp=$cf_header 3519d522f475Smrg break 3520d522f475Smrg ])]) 3521d522f475Smrgdone 3522d522f475Smrg]) 3523d522f475Smrg 3524f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 35250bd37d32Smrg AC_DEFINE(HAVE_UTMP,1,[Define to 1 if the utmp interface is available]) 3526f2e35a3aSmrg test "$cf_cv_have_utmp" = utmpx && AC_DEFINE(UTMPX_FOR_UTMP,1,[Define if we have utmpx interface]) 3527d522f475Smrg CF_UTMP_UT_HOST 3528d522f475Smrg CF_UTMP_UT_SYSLEN 3529d522f475Smrg CF_UTMP_UT_NAME 3530d522f475Smrg CF_UTMP_UT_XSTATUS 3531d522f475Smrg CF_UTMP_UT_XTIME 3532d522f475Smrg CF_UTMP_UT_SESSION 3533d522f475Smrg CF_SYSV_UTMP 3534d522f475Smrgfi 3535d522f475Smrg])dnl 3536d522f475Smrgdnl --------------------------------------------------------------------------- 3537f2e35a3aSmrgdnl CF_UTMP_GROUP version: 2 updated: 2020/12/31 10:54:15 3538d522f475Smrgdnl ------------- 3539d522f475Smrgdnl Find the utmp/utmpx file and determine its group to allow setgid programs 3540d522f475Smrgdnl to manipulate it, e.g., when there is no intermediary. 3541d522f475SmrgAC_DEFUN([CF_UTMP_GROUP],[ 3542d522f475SmrgAC_REQUIRE([CF_UTMP]) 3543d522f475Smrgif test $cf_cv_have_utmp != no ; then 3544d522f475SmrgAC_CACHE_CHECK(for utmp/utmpx group,cf_cv_utmp_group,[ 3545d522f475Smrgfor cf_utmp_path in /var/adm /var/run 3546d522f475Smrgdo 3547d522f475Smrg for cf_utmp_file in utmpx utmp 3548d522f475Smrg do 3549d522f475Smrg if test -f $cf_utmp_path/$cf_utmp_file 3550d522f475Smrg then 3551d522f475Smrg cf_cv_utmp_group=root 3552d522f475Smrg 3553f2e35a3aSmrg cf_option="-lL" 3554d522f475Smrg 3555d522f475Smrg # Expect listing to have fields like this: 3556d522f475Smrg #-r--r--r-- 1 user group 34293 Jul 18 16:29 pathname 3557f2e35a3aSmrg ls "$cf_option" "$cf_utmp_path/$cf_utmp_file" >conftest 3558d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest 3559d522f475Smrg if test -z "$cf_rest" ; then 3560f2e35a3aSmrg cf_option="${cf_option}g" 3561f2e35a3aSmrg ls "$cf_option" "$cf_utmp_path/$cf_utmp_file" >conftest 3562d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest 3563d522f475Smrg fi 3564d522f475Smrg rm -f conftest 3565d522f475Smrg 3566d522f475Smrg # If we have a pathname, and the date fields look right, assume we've 3567d522f475Smrg # captured the group as well. 3568d522f475Smrg if test -n "$cf_rest" ; then 3569d522f475Smrg cf_test=`echo "${cf_date2}${cf_date3}" | sed -e 's/[[0-9:]]//g'` 3570d522f475Smrg if test -z "$cf_test" ; then 3571d522f475Smrg cf_cv_utmp_group=$cf_grp; 3572d522f475Smrg fi 3573d522f475Smrg fi 3574d522f475Smrg break 3575d522f475Smrg fi 3576d522f475Smrg done 3577d522f475Smrg test -n "$cf_cv_utmp_group" && break 3578d522f475Smrgdone 3579d522f475Smrg]) 3580d522f475Smrgelse 3581d522f475Smrg AC_MSG_ERROR(cannot find utmp group) 3582d522f475Smrgfi 3583d522f475Smrg])dnl 3584d522f475Smrgdnl --------------------------------------------------------------------------- 3585f2e35a3aSmrgdnl CF_UTMP_UT_HOST version: 10 updated: 2021/01/02 09:31:20 3586d522f475Smrgdnl --------------- 3587d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_host member 3588d522f475SmrgAC_DEFUN([CF_UTMP_UT_HOST], 3589d522f475Smrg[ 3590f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3591d522f475SmrgAC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_host is declared) 3592d522f475SmrgAC_CACHE_VAL(cf_cv_have_utmp_ut_host,[ 3593d522f475Smrg AC_TRY_COMPILE([ 3594d522f475Smrg#include <sys/types.h> 3595d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3596f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3597f2e35a3aSmrg char *y = &x.ut_host[0]; 3598f2e35a3aSmrg (void)x; 3599f2e35a3aSmrg (void)y], 3600d522f475Smrg [cf_cv_have_utmp_ut_host=yes], 3601d522f475Smrg [cf_cv_have_utmp_ut_host=no]) 3602d522f475Smrg ]) 3603d522f475SmrgAC_MSG_RESULT($cf_cv_have_utmp_ut_host) 3604f2e35a3aSmrgtest "$cf_cv_have_utmp_ut_host" != no && AC_DEFINE(HAVE_UTMP_UT_HOST,1,[Define to 1 if UTMP/UTMPX struct defines ut_host member]) 3605d522f475Smrgfi 3606d522f475Smrg])dnl 3607d522f475Smrgdnl --------------------------------------------------------------------------- 3608f2e35a3aSmrgdnl CF_UTMP_UT_NAME version: 8 updated: 2021/01/02 09:31:20 3609d522f475Smrgdnl --------------- 3610d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_name member 3611d522f475SmrgAC_DEFUN([CF_UTMP_UT_NAME], 3612d522f475Smrg[ 3613f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3614d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_name is declared,cf_cv_have_utmp_ut_name,[ 3615d522f475Smrg cf_cv_have_utmp_ut_name=no 3616d522f475Smrgcf_utmp_includes=" 3617d522f475Smrg#include <sys/types.h> 3618d522f475Smrg#include <${cf_cv_have_utmp}.h> 3619d522f475Smrg#define getutent getutxent 3620d522f475Smrg#ifdef USE_LASTLOG 3621d522f475Smrg#include <lastlog.h> /* may conflict with utmpx.h on Linux */ 3622d522f475Smrg#endif 3623d522f475Smrg" 3624d522f475Smrgfor cf_header in ut_name ut_user ; do 3625d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3626d522f475Smrg [struct $cf_cv_have_utmp x; 3627d522f475Smrg char *name = x.$cf_header; 3628f2e35a3aSmrg (void)x; 3629f2e35a3aSmrg (void)name; 3630d522f475Smrg ], 3631d522f475Smrg [cf_cv_have_utmp_ut_name=$cf_header 3632d522f475Smrg break]) 3633d522f475Smrgdone 3634d522f475Smrg]) 3635d522f475Smrg 3636f2e35a3aSmrgcase "$cf_cv_have_utmp_ut_name" in 363701037d57Smrg(no) 3638d522f475Smrg AC_MSG_ERROR(Cannot find declaration for ut.ut_name) 3639d522f475Smrg ;; 364001037d57Smrg(ut_user) 36410bd37d32Smrg AC_DEFINE(ut_name,ut_user,[Define to rename UTMP/UTMPX struct ut_name member]) 3642d522f475Smrg ;; 3643d522f475Smrgesac 3644d522f475Smrgfi 3645d522f475Smrg])dnl 3646d522f475Smrgdnl --------------------------------------------------------------------------- 3647ae137402Smrgdnl CF_UTMP_UT_SESSION version: 9 updated: 2021/06/07 17:39:17 3648d522f475Smrgdnl ------------------ 3649d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_session member 3650d522f475SmrgAC_DEFUN([CF_UTMP_UT_SESSION], 3651d522f475Smrg[ 3652f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3653d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_session is declared, cf_cv_have_utmp_ut_session,[ 3654d522f475Smrg AC_TRY_COMPILE([ 3655d522f475Smrg#include <sys/types.h> 3656d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3657ae137402Smrg [static struct $cf_cv_have_utmp x; 3658f2e35a3aSmrg long y = x.ut_session; 3659f2e35a3aSmrg (void)x; 3660f2e35a3aSmrg (void)y], 3661d522f475Smrg [cf_cv_have_utmp_ut_session=yes], 3662d522f475Smrg [cf_cv_have_utmp_ut_session=no]) 3663d522f475Smrg]) 3664f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_session" != no ; then 36650bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_SESSION,1,[Define to 1 if UTMP/UTMPX struct defines ut_session member]) 3666d522f475Smrgfi 3667d522f475Smrgfi 3668d522f475Smrg])dnl 3669d522f475Smrgdnl --------------------------------------------------------------------------- 3670f2e35a3aSmrgdnl CF_UTMP_UT_SYSLEN version: 4 updated: 2021/01/02 09:31:20 3671d522f475Smrgdnl ----------------- 3672d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_syslen member 3673d522f475SmrgAC_DEFUN([CF_UTMP_UT_SYSLEN], 3674d522f475Smrg[ 3675f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3676d522f475SmrgAC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_syslen is declared) 3677d522f475SmrgAC_CACHE_VAL(cf_cv_have_utmp_ut_syslen,[ 3678d522f475Smrg AC_TRY_COMPILE([ 3679d522f475Smrg#include <sys/types.h> 3680d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3681f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3682f2e35a3aSmrg int y = x.ut_syslen; 3683f2e35a3aSmrg (void)x; 3684f2e35a3aSmrg (void)y], 3685d522f475Smrg [cf_cv_have_utmp_ut_syslen=yes], 3686d522f475Smrg [cf_cv_have_utmp_ut_syslen=no]) 3687d522f475Smrg ]) 3688d522f475SmrgAC_MSG_RESULT($cf_cv_have_utmp_ut_syslen) 3689f2e35a3aSmrgtest "$cf_cv_have_utmp_ut_syslen" != no && AC_DEFINE(HAVE_UTMP_UT_SYSLEN,1,[Define to 1 if UTMP/UTMPX struct defines ut_syslen member]) 3690d522f475Smrgfi 3691d522f475Smrg])dnl 3692d522f475Smrgdnl --------------------------------------------------------------------------- 3693f2e35a3aSmrgdnl CF_UTMP_UT_XSTATUS version: 6 updated: 2021/01/02 09:31:20 3694d522f475Smrgdnl ------------------ 3695d522f475Smrgdnl Check for known variants on the UTMP/UTMPX struct's exit-status as reported 3696d522f475Smrgdnl by various people: 3697d522f475Smrgdnl 3698d522f475Smrgdnl ut_exit.__e_exit (HPUX 11 - David Ellement, also in glibc2) 3699d522f475Smrgdnl ut_exit.e_exit (SVR4) 3700d522f475Smrgdnl ut_exit.ut_e_exit (os390 - Greg Smith) 3701d522f475Smrgdnl ut_exit.ut_exit (Tru64 4.0f - Jeremie Petit, 4.0e - Tomas Vanhala) 3702d522f475Smrgdnl 3703d522f475Smrgdnl Note: utmp_xstatus is not a conventional compatibility definition in the 3704d522f475Smrgdnl system header files. 3705d522f475SmrgAC_DEFUN([CF_UTMP_UT_XSTATUS], 3706d522f475Smrg[ 3707f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3708d522f475SmrgAC_CACHE_CHECK(for exit-status in $cf_cv_have_utmp,cf_cv_have_utmp_ut_xstatus,[ 3709d522f475Smrgfor cf_result in \ 3710d522f475Smrg ut_exit.__e_exit \ 3711d522f475Smrg ut_exit.e_exit \ 3712d522f475Smrg ut_exit.ut_e_exit \ 3713d522f475Smrg ut_exit.ut_exit 3714d522f475Smrgdo 3715d522f475SmrgAC_TRY_COMPILE([ 3716d522f475Smrg#include <sys/types.h> 3717d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3718f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3719f2e35a3aSmrg long y = x.$cf_result = 0; 3720f2e35a3aSmrg (void)x; 3721f2e35a3aSmrg (void)y], 3722d522f475Smrg [cf_cv_have_utmp_ut_xstatus=$cf_result 3723d522f475Smrg break], 3724d522f475Smrg [cf_cv_have_utmp_ut_xstatus=no]) 3725d522f475Smrgdone 3726d522f475Smrg]) 3727f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_xstatus" != no ; then 37280bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_XSTATUS,1,[Define to 1 if UTMP/UTMPX has exit-status member]) 37290bd37d32Smrg AC_DEFINE_UNQUOTED(ut_xstatus,$cf_cv_have_utmp_ut_xstatus,[Define if needed to rename member ut_xstatus of UTMP/UTMPX]) 3730d522f475Smrgfi 3731d522f475Smrgfi 3732d522f475Smrg])dnl 3733d522f475Smrgdnl --------------------------------------------------------------------------- 3734f2e35a3aSmrgdnl CF_UTMP_UT_XTIME version: 11 updated: 2021/01/02 09:31:20 3735d522f475Smrgdnl ---------------- 3736d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_xtime member 3737d522f475SmrgAC_DEFUN([CF_UTMP_UT_XTIME], 3738d522f475Smrg[ 3739f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3740d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_xtime is declared, cf_cv_have_utmp_ut_xtime,[ 3741d522f475Smrg AC_TRY_COMPILE([ 3742d522f475Smrg#include <sys/types.h> 3743d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3744f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3745f2e35a3aSmrg long y = x.ut_xtime = 0; 3746f2e35a3aSmrg (void)x; 3747f2e35a3aSmrg (void)y], 3748d522f475Smrg [cf_cv_have_utmp_ut_xtime=yes], 3749d522f475Smrg [AC_TRY_COMPILE([ 3750d522f475Smrg#include <sys/types.h> 3751d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3752f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3753f2e35a3aSmrg long y = x.ut_tv.tv_sec; 3754f2e35a3aSmrg (void)x; 3755f2e35a3aSmrg (void)y], 3756d522f475Smrg [cf_cv_have_utmp_ut_xtime=define], 3757d522f475Smrg [cf_cv_have_utmp_ut_xtime=no]) 3758d522f475Smrg ]) 3759d522f475Smrg]) 3760f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_xtime" != no ; then 37610bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_XTIME,1,[Define to 1 if UTMP/UTMPX struct defines ut_xtime member]) 3762f2e35a3aSmrg if test "$cf_cv_have_utmp_ut_xtime" = define ; then 37630bd37d32Smrg AC_DEFINE(ut_xtime,ut_tv.tv_sec,[Define if needed to alternate name for utmpx.ut_xtime member]) 3764d522f475Smrg fi 3765d522f475Smrgfi 3766d522f475Smrgfi 3767d522f475Smrg])dnl 3768d522f475Smrgdnl --------------------------------------------------------------------------- 3769d522f475Smrgdnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 3770d522f475Smrgdnl ---------- 3771d522f475Smrgdnl Use AC_VERBOSE w/o the warnings 3772d522f475SmrgAC_DEFUN([CF_VERBOSE], 3773d522f475Smrg[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG 3774d522f475SmrgCF_MSG_LOG([$1]) 3775d522f475Smrg])dnl 3776d522f475Smrgdnl --------------------------------------------------------------------------- 377701037d57Smrgdnl CF_WITH_APP_CLASS version: 3 updated: 2015/04/12 15:39:00 3778e39b573cSmrgdnl ----------------- 3779e39b573cSmrgdnl Handle configure option "--with-app-class", setting the $APP_CLASS 3780e39b573cSmrgdnl variable, used for X resources. 3781e39b573cSmrgdnl 3782e39b573cSmrgdnl $1 = default value. 37830bd37d32SmrgAC_DEFUN([CF_WITH_APP_CLASS],[ 3784e39b573cSmrgAC_MSG_CHECKING(for X applications class) 3785e39b573cSmrgAC_ARG_WITH(app-class, 3786e39b573cSmrg [ --with-app-class=XXX override X applications class (default $1)], 3787e39b573cSmrg [APP_CLASS=$withval], 3788e39b573cSmrg [APP_CLASS=$1]) 3789e39b573cSmrg 379001037d57Smrgcase x$APP_CLASS in 379101037d57Smrg(*[[/@,%]]*) 3792e39b573cSmrg AC_MSG_WARN(X applications class cannot contain punctuation) 3793e39b573cSmrg APP_CLASS=$1 3794e39b573cSmrg ;; 379501037d57Smrg(x[[A-Z]]*) 3796e39b573cSmrg ;; 379701037d57Smrg(*) 3798e39b573cSmrg AC_MSG_WARN([X applications class must start with capital, ignoring $APP_CLASS]) 3799e39b573cSmrg APP_CLASS=$1 3800e39b573cSmrg ;; 3801e39b573cSmrgesac 3802e39b573cSmrg 3803e39b573cSmrgAC_MSG_RESULT($APP_CLASS) 3804e39b573cSmrg 3805e39b573cSmrgAC_SUBST(APP_CLASS) 3806e39b573cSmrg])dnl 3807e39b573cSmrgdnl --------------------------------------------------------------------------- 380801037d57Smrgdnl CF_WITH_APP_DEFAULTS version: 6 updated: 2015/01/02 09:05:50 3809e39b573cSmrgdnl -------------------- 3810e39b573cSmrgdnl Handle configure option "--with-app-defaults", setting these shell 3811e39b573cSmrgdnl variables: 38120bd37d32Smrgdnl 38130bd37d32Smrgdnl $APPSDIR is the option value, used for installing app-defaults files. 3814e39b573cSmrgdnl $no_appsdir is a "#" (comment) if "--without-app-defaults" is given. 38150bd37d32Smrgdnl 38160bd37d32Smrgdnl Most Linux's use this: 38170bd37d32Smrgdnl /usr/share/X11/app-defaults 38180bd37d32Smrgdnl Debian uses this: 38190bd37d32Smrgdnl /etc/X11/app-defaults 38200bd37d32Smrgdnl DragonFlyBSD ports uses this: 38210bd37d32Smrgdnl /usr/pkg/lib/X11/app-defaults 38220bd37d32Smrgdnl FreeBSD ports use these: 38230bd37d32Smrgdnl /usr/local/lib/X11/app-defaults 38240bd37d32Smrgdnl /usr/local/share/X11/app-defaults 38250bd37d32Smrgdnl Mandriva has these: 38260bd37d32Smrgdnl /usr/lib/X11/app-defaults 38270bd37d32Smrgdnl /usr/lib64/X11/app-defaults 38280bd37d32Smrgdnl NetBSD has these 38290bd37d32Smrgdnl /usr/X11R7/lib/X11/app-defaults 38300bd37d32Smrgdnl OpenSolaris uses 38310bd37d32Smrgdnl 32-bit: 38320bd37d32Smrgdnl /usr/X11/etc/X11/app-defaults 38330bd37d32Smrgdnl /usr/X11/share/X11/app-defaults 38340bd37d32Smrgdnl /usr/X11/lib/X11/app-defaults 383501037d57Smrgdnl OSX uses 383601037d57Smrgdnl /opt/local/share/X11/app-defaults (MacPorts) 383701037d57Smrgdnl /opt/X11/share/X11/app-defaults (non-ports) 38380bd37d32Smrgdnl 64-bit: 38390bd37d32Smrgdnl /usr/X11/etc/X11/app-defaults 38400bd37d32Smrgdnl /usr/X11/share/X11/app-defaults (I mkdir'd this) 38410bd37d32Smrgdnl /usr/X11/lib/amd64/X11/app-defaults 38420bd37d32Smrgdnl Solaris10 uses (in this order): 38430bd37d32Smrgdnl /usr/openwin/lib/X11/app-defaults 38440bd37d32Smrgdnl /usr/X11/lib/X11/app-defaults 38450bd37d32SmrgAC_DEFUN([CF_WITH_APP_DEFAULTS],[ 3846e39b573cSmrgAC_MSG_CHECKING(for directory to install resource files) 38470bd37d32SmrgAC_ARG_WITH(app-defaults, 38480bd37d32Smrg [ --with-app-defaults=DIR directory in which to install resource files (EPREFIX/lib/X11/app-defaults)], 38490bd37d32Smrg [APPSDIR=$withval], 38500bd37d32Smrg [APPSDIR='${exec_prefix}/lib/X11/app-defaults']) 38510bd37d32Smrg 38520bd37d32Smrgif test "x[$]APPSDIR" = xauto 38530bd37d32Smrgthen 38540bd37d32Smrg APPSDIR='${exec_prefix}/lib/X11/app-defaults' 38550bd37d32Smrg for cf_path in \ 385601037d57Smrg /opt/local/share/X11/app-defaults \ 385701037d57Smrg /opt/X11/share/X11/app-defaults \ 38580bd37d32Smrg /usr/share/X11/app-defaults \ 38590bd37d32Smrg /usr/X11/share/X11/app-defaults \ 38600bd37d32Smrg /usr/X11/lib/X11/app-defaults \ 38610bd37d32Smrg /usr/lib/X11/app-defaults \ 38620bd37d32Smrg /etc/X11/app-defaults \ 38630bd37d32Smrg /usr/pkg/lib/X11/app-defaults \ 38640bd37d32Smrg /usr/X11R7/lib/X11/app-defaults \ 38650bd37d32Smrg /usr/X11R6/lib/X11/app-defaults \ 38660bd37d32Smrg /usr/X11R5/lib/X11/app-defaults \ 38670bd37d32Smrg /usr/X11R4/lib/X11/app-defaults \ 38680bd37d32Smrg /usr/local/lib/X11/app-defaults \ 38690bd37d32Smrg /usr/local/share/X11/app-defaults \ 38700bd37d32Smrg /usr/lib64/X11/app-defaults 38710bd37d32Smrg do 38720bd37d32Smrg if test -d "$cf_path" ; then 38730bd37d32Smrg APPSDIR="$cf_path" 38740bd37d32Smrg break 38750bd37d32Smrg fi 38760bd37d32Smrg done 38770bd37d32Smrgelse 38780bd37d32Smrg cf_path=$APPSDIR 38790bd37d32Smrg CF_PATH_SYNTAX(cf_path) 38800bd37d32Smrgfi 38810bd37d32Smrg 38820bd37d32SmrgAC_MSG_RESULT($APPSDIR) 38830bd37d32SmrgAC_SUBST(APPSDIR) 3884e39b573cSmrg 3885e39b573cSmrgno_appsdir= 38860bd37d32Smrgif test "$APPSDIR" = no 38870bd37d32Smrgthen 38880bd37d32Smrg no_appsdir="#" 38890bd37d32Smrgelse 38900bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(APPSDIR)" 38910bd37d32Smrgfi 3892e39b573cSmrgAC_SUBST(no_appsdir) 3893e39b573cSmrg])dnl 3894e39b573cSmrgdnl --------------------------------------------------------------------------- 38950bd37d32Smrgdnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 38960bd37d32Smrgdnl ---------------- 38970bd37d32Smrgdnl Configure-option for dbmalloc. The optional parameter is used to override 38980bd37d32Smrgdnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 38990bd37d32SmrgAC_DEFUN([CF_WITH_DBMALLOC],[ 39000bd37d32SmrgCF_NO_LEAKS_OPTION(dbmalloc, 39010bd37d32Smrg [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], 39020bd37d32Smrg [USE_DBMALLOC]) 39030bd37d32Smrg 39040bd37d32Smrgif test "$with_dbmalloc" = yes ; then 39050bd37d32Smrg AC_CHECK_HEADER(dbmalloc.h, 39060bd37d32Smrg [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) 39070bd37d32Smrgfi 39080bd37d32Smrg])dnl 39090bd37d32Smrgdnl --------------------------------------------------------------------------- 391004b94745Smrgdnl CF_WITH_DESKTOP_CATEGORY version: 10 updated: 2023/12/02 06:55:40 3911e39b573cSmrgdnl ------------------------ 3912e39b573cSmrgdnl Taking into account the absence of standardization of desktop categories 3913e39b573cSmrgdnl take a look to see whether other applications on the current system are 3914e39b573cSmrgdnl assigned any/all of a set of suggested categories. 3915e39b573cSmrgdnl 3916e39b573cSmrgdnl $1 = program name 3917e39b573cSmrgdnl $2 = case-pattern to match comparable desktop files to obtain category 3918e39b573cSmrgdnl This pattern may contain wildcards. 3919e39b573cSmrgdnl $3 = suggested categories, also a case-pattern but without wildcards, 39200bd37d32Smrgdnl since it doubles as a default value for a shell case-statement. 39210bd37d32Smrgdnl $4 = categories to use if no match is found on the build-machine for the 39220bd37d32Smrgdnl --with-desktop-category "auto" setting. 3923e39b573cSmrgdnl 3924e39b573cSmrgdnl The macro tells the configure script to substitute the $DESKTOP_CATEGORY 3925e39b573cSmrgdnl value. 3926e39b573cSmrgAC_DEFUN([CF_WITH_DESKTOP_CATEGORY],[ 3927f2e35a3aSmrgAC_REQUIRE([AC_PROG_EGREP])dnl 3928f2e35a3aSmrgAC_REQUIRE([CF_DISABLE_DESKTOP])dnl 3929e39b573cSmrgif test -z "$desktop_utils" 3930e39b573cSmrgthen 3931e39b573cSmrg AC_MSG_CHECKING(for requested desktop-category) 3932e39b573cSmrg AC_ARG_WITH(desktop-category, 393304b94745Smrg [ --with-desktop-category=XXX one or more desktop categories or auto], 3934e39b573cSmrg [cf_desktop_want=$withval], 3935e39b573cSmrg [cf_desktop_want=auto]) 3936e39b573cSmrg AC_MSG_RESULT($cf_desktop_want) 3937e39b573cSmrg 3938e39b573cSmrg if test "$cf_desktop_want" = auto 3939e39b573cSmrg then 3940e39b573cSmrg rm -rf conftest* 3941e39b573cSmrg cf_desktop_also= 3942e39b573cSmrg for cf_desktop_dir in \ 3943e39b573cSmrg /usr/share/app-install \ 3944e39b573cSmrg /usr/share/applications 3945e39b573cSmrg do 3946e39b573cSmrg if test -d $cf_desktop_dir 3947e39b573cSmrg then 3948e39b573cSmrg find $cf_desktop_dir -name '*.desktop' | \ 3949e39b573cSmrg while true 3950e39b573cSmrg do 3951e39b573cSmrg read cf_desktop_path 3952e39b573cSmrg test -z "$cf_desktop_path" && break 3953f2e35a3aSmrg cf_desktop_name=`basename "$cf_desktop_path" .desktop` 395401037d57Smrg case $cf_desktop_name in 395501037d57Smrg ($1|*-$1|$2) 3956e39b573cSmrg CF_VERBOSE(inspect $cf_desktop_path) 3957f2e35a3aSmrg ${EGREP-egrep} '^Categories=' "$cf_desktop_path" | \ 3958e39b573cSmrg tr ';' '\n' | \ 3959e39b573cSmrg sed -e 's%^.*=%%' -e '/^$/d' >>conftest.1 3960e39b573cSmrg ;; 3961e39b573cSmrg esac 3962e39b573cSmrg done 3963e39b573cSmrg fi 3964e39b573cSmrg done 3965e39b573cSmrg if test -s conftest.1 3966e39b573cSmrg then 3967e39b573cSmrg cf_desktop_last= 3968e39b573cSmrg sort conftest.1 | \ 3969e39b573cSmrg while true 3970e39b573cSmrg do 3971e39b573cSmrg read cf_desktop_this 3972e39b573cSmrg test -z "$cf_desktop_this" && break 3973f2e35a3aSmrg if test -s conftest.2 3974f2e35a3aSmrg then 3975f2e35a3aSmrg grep -w "$cf_desktop_this" conftest.2 >/dev/null && continue 3976f2e35a3aSmrg elif test -s conftest.3 3977f2e35a3aSmrg then 3978f2e35a3aSmrg grep -w "$cf_desktop_this" conftest.3 >/dev/null && continue 3979f2e35a3aSmrg fi 3980f2e35a3aSmrg case "$cf_desktop_this" in 3981f2e35a3aSmrg (-*) 3982f2e35a3aSmrg ;; 3983f2e35a3aSmrg (Qt*|*Xfce*|*[[ABCDEFGHIJKLMNOPQRSTUVWXYZ]][[ABCDEFGHIJKLMNOPQRSTUVWXYZ]]*) 3984f2e35a3aSmrg CF_VERBOSE(ignored $cf_desktop_this) 3985f2e35a3aSmrg echo "$cf_desktop_this" >> conftest.3 3986e39b573cSmrg ;; 398701037d57Smrg ($3) 3988f2e35a3aSmrg CF_VERBOSE(applied $cf_desktop_this) 3989f2e35a3aSmrg test "x$cf_desktop_last" != "x$cf_desktop_this" && echo "$cf_desktop_this" >>conftest.2 3990e39b573cSmrg ;; 3991e39b573cSmrg esac 3992e39b573cSmrg cf_desktop_last=$cf_desktop_this 3993e39b573cSmrg done 3994f2e35a3aSmrg cf_desktop_want="`tr '\n' ';' < conftest.2`" 3995e39b573cSmrg fi 39960bd37d32Smrg if test -n "$cf_desktop_want" 39970bd37d32Smrg then 39980bd37d32Smrg if test "$cf_desktop_want" = auto 39990bd37d32Smrg then 40000bd37d32Smrg cf_desktop_want= 40010bd37d32Smrg else 40020bd37d32Smrg # do a sanity check on the semicolon-separated list, ignore on failure 40030bd37d32Smrg cf_desktop_test=`echo "$cf_desktop_want" | sed -e 's/[[^;]]//g'` 40040bd37d32Smrg test -z "$cf_desktop_test" && cf_desktop_want= 40050bd37d32Smrg cf_desktop_test=`echo "$cf_desktop_want" | sed -e 's/^.*;$/./g'` 40060bd37d32Smrg test -z "$cf_desktop_test" && cf_desktop_want= 40070bd37d32Smrg fi 40080bd37d32Smrg fi 40090bd37d32Smrg if test -z "$cf_desktop_want" 40100bd37d32Smrg then 40110bd37d32Smrg cf_desktop_want="ifelse([$4],,ifelse([$3],,[Application;],[`echo "$3" | sed -e 's/\*//g' -e 's/|/;/g' -e 's/[[;]]*$/;/g'`]),[$4])" 40120bd37d32Smrg CF_VERBOSE(no usable value found for desktop category, using $cf_desktop_want) 40130bd37d32Smrg fi 4014e39b573cSmrg fi 4015e39b573cSmrg DESKTOP_CATEGORY=`echo "$cf_desktop_want" | sed -e 's/[[ ,]]/;/g'` 40160bd37d32Smrg CF_VERBOSE(will use Categories=$DESKTOP_CATEGORY) 4017e39b573cSmrg AC_SUBST(DESKTOP_CATEGORY) 4018e39b573cSmrgfi 4019e39b573cSmrg]) 4020e39b573cSmrgdnl --------------------------------------------------------------------------- 40210bd37d32Smrgdnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 4022e39b573cSmrgdnl --------------- 40230bd37d32Smrgdnl Configure-option for dmalloc. The optional parameter is used to override 40240bd37d32Smrgdnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 40250bd37d32SmrgAC_DEFUN([CF_WITH_DMALLOC],[ 40260bd37d32SmrgCF_NO_LEAKS_OPTION(dmalloc, 40270bd37d32Smrg [ --with-dmalloc test: use Gray Watson's dmalloc library], 40280bd37d32Smrg [USE_DMALLOC]) 40290bd37d32Smrg 40300bd37d32Smrgif test "$with_dmalloc" = yes ; then 40310bd37d32Smrg AC_CHECK_HEADER(dmalloc.h, 40320bd37d32Smrg [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) 40330bd37d32Smrgfi 40340bd37d32Smrg])dnl 40350bd37d32Smrgdnl --------------------------------------------------------------------------- 40360bd37d32Smrgdnl CF_WITH_ICONDIR version: 5 updated: 2012/07/22 09:18:02 40370bd37d32Smrgdnl --------------- 40380bd37d32Smrgdnl Handle configure option "--with-icondir", setting these shell variables: 40390bd37d32Smrgdnl 40400bd37d32Smrgdnl $ICONDIR is the option value, used for installing icon files. 4041e39b573cSmrgdnl $no_icondir is a "#" (comment) if "--without-icondir" is given. 4042e39b573cSmrgAC_DEFUN([CF_WITH_ICONDIR],[ 4043e39b573cSmrgAC_MSG_CHECKING(for directory to install icons) 40440bd37d32SmrgAC_ARG_WITH(icondir, 40450bd37d32Smrg [ --with-icondir=DIR directory in which to install icons for desktop], 40460bd37d32Smrg [ICONDIR=$withval], 40470bd37d32Smrg [test -z "$ICONDIR" && ICONDIR=no]) 40480bd37d32Smrg 40490bd37d32Smrgif test "x[$]ICONDIR" = xauto 40500bd37d32Smrgthen 40510bd37d32Smrg ICONDIR='${datadir}/icons' 40520bd37d32Smrg for cf_path in \ 40530bd37d32Smrg /usr/share/icons \ 40540bd37d32Smrg /usr/X11R6/share/icons 40550bd37d32Smrg do 40560bd37d32Smrg if test -d "$cf_path" ; then 40570bd37d32Smrg ICONDIR="$cf_path" 40580bd37d32Smrg break 40590bd37d32Smrg fi 40600bd37d32Smrg done 40610bd37d32Smrgelse 40620bd37d32Smrg cf_path=$ICONDIR 40630bd37d32Smrg CF_PATH_SYNTAX(cf_path) 40640bd37d32Smrgfi 40650bd37d32SmrgAC_MSG_RESULT($ICONDIR) 40660bd37d32SmrgAC_SUBST(ICONDIR) 4067e39b573cSmrg 4068e39b573cSmrgno_icondir= 40690bd37d32Smrgif test "$ICONDIR" = no 40700bd37d32Smrgthen 40710bd37d32Smrg no_icondir="#" 40720bd37d32Smrgelse 40730bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(ICONDIR)" 40740bd37d32Smrgfi 4075e39b573cSmrgAC_SUBST(no_icondir) 4076e39b573cSmrg])dnl 4077e39b573cSmrgdnl --------------------------------------------------------------------------- 407804b94745Smrgdnl CF_WITH_ICON_NAME version: 4 updated: 2023/11/23 06:40:35 40790bd37d32Smrgdnl ----------------- 40800bd37d32Smrgdnl Allow a default icon-name to be overridden. 40810bd37d32Smrgdnl $1 = default icon name 40820bd37d32SmrgAC_DEFUN([CF_WITH_ICON_NAME],[ 40830bd37d32SmrgAC_MSG_CHECKING(for the icon name) 40840bd37d32SmrgAC_ARG_WITH(icon-name, 408504b94745Smrg [[ --with-icon-name[=XXX] override icon name (default: $1)]], 40860bd37d32Smrg [ICON_NAME="$withval"], 40870bd37d32Smrg [ICON_NAME=$1]) 40880bd37d32Smrgcase "x$ICON_NAME" in 408901037d57Smrg(xyes|xno|x) 40900bd37d32Smrg ICON_NAME=$1 40910bd37d32Smrg ;; 40920bd37d32Smrgesac 40930bd37d32SmrgAC_SUBST(ICON_NAME) 40940bd37d32SmrgAC_MSG_RESULT($ICON_NAME) 40950bd37d32Smrg])dnl 40960bd37d32Smrgdnl --------------------------------------------------------------------------- 409704b94745Smrgdnl CF_WITH_ICON_SYMLINK version: 3 updated: 2023/11/23 06:40:35 40980bd37d32Smrgdnl -------------------- 40990bd37d32Smrgdnl Workaround for systems which are (mis)configured to map all icon references 41000bd37d32Smrgdnl for xterm into "xterm" name. For instance, recent (2013) KDE ignores both 41010bd37d32Smrgdnl the name given in the .desktop file (xterm-color) and the application name 41020bd37d32Smrgdnl (xterm-dev). 41030bd37d32Smrgdnl 41040bd37d32Smrgdnl $1 = default icon name to use if symlink is wanted 41050bd37d32SmrgAC_DEFUN([CF_WITH_ICON_SYMLINK],[ 41060bd37d32SmrgAC_MSG_CHECKING(for icon symlink to use) 41070bd37d32SmrgAC_ARG_WITH(icon-symlink, 410804b94745Smrg [[ --with-icon-symlink[=XXX] make symbolic link for icon name (default: $1)]], 41090bd37d32Smrg [ICON_SYMLINK="$withval"], 41100bd37d32Smrg [ICON_SYMLINK=NONE]) 41110bd37d32Smrgcase "x$ICON_SYMLINK" in 411201037d57Smrg(xyes) 41130bd37d32Smrg ICON_SYMLINK=$1 41140bd37d32Smrg ;; 411501037d57Smrg(xno|x) 41160bd37d32Smrg ICON_SYMLINK=NONE 41170bd37d32Smrg ;; 41180bd37d32Smrgesac 41190bd37d32SmrgAC_SUBST(ICON_SYMLINK) 41200bd37d32SmrgAC_MSG_RESULT($ICON_SYMLINK) 41210bd37d32Smrg])dnl 41220bd37d32Smrgdnl --------------------------------------------------------------------------- 412304b94745Smrgdnl CF_WITH_ICON_THEME version: 14 updated: 2023/11/23 06:40:35 41240bd37d32Smrgdnl ------------------ 41250bd37d32Smrgdnl If asked, check for prerequisites and setup symbols to permit installing 41260bd37d32Smrgdnl one or more application icons in the Red Hat icon-theme directory 412701037d57Smrgdnl hierarchy. 41280bd37d32Smrgdnl 41290bd37d32Smrgdnl If the prerequisites are missing, give a warning and revert to the long- 41300bd37d32Smrgdnl standing pixmaps directory. 41310bd37d32Smrgdnl 41320bd37d32Smrgdnl Parameters: 41330bd37d32Smrgdnl 41340bd37d32Smrgdnl $1 = application icon. This can be a list, and is not optional. 41350bd37d32Smrgdnl $2 = default theme (defaults to hicolor) 41360bd37d32Smrgdnl $3 = formats (defaults to list [.svg .png .xpm]) 41370bd37d32Smrgdnl $4 = alternate icon if no theme is used (defaults to $1). 41380bd37d32Smrgdnl 41390bd37d32Smrgdnl Result: 4140f2e35a3aSmrgdnl ICON_NAME = basename of first item in $1, unless already set 41410bd37d32Smrgdnl ICON_LIST = reprocessed $1 41420bd37d32Smrgdnl ICON_THEME = reprocessed $2 41430bd37d32Smrgdnl ICON_FORMAT = reprocessed $3 41440bd37d32SmrgAC_DEFUN([CF_WITH_ICON_THEME], 41450bd37d32Smrg[ 41460bd37d32Smrgifelse([$1],,[ 41470bd37d32Smrg AC_MSG_ERROR([macro [CF_WITH_ICON_THEME] requires application-icon name]) 41480bd37d32Smrg],[ 41490bd37d32Smrg 41500bd37d32SmrgCF_WITH_PIXMAPDIR 41510bd37d32SmrgCF_WITH_ICONDIR 41520bd37d32Smrg 41530bd37d32SmrgAC_MSG_CHECKING(if icon theme should be used) 41540bd37d32SmrgAC_ARG_WITH(icon-theme, 415504b94745Smrg [[ --with-icon-theme[=XXX] install icons into desktop theme (hicolor)]], 41560bd37d32Smrg [ICON_THEME=$withval], 41570bd37d32Smrg [ICON_THEME=no]) 41580bd37d32Smrg 415901037d57Smrgcase "x$ICON_THEME" in 416001037d57Smrg(xno) 41610bd37d32Smrg ;; 416201037d57Smrg(x|xyes) 41630bd37d32Smrg ICON_THEME=ifelse([$2],,hicolor,$2) 41640bd37d32Smrg ;; 41650bd37d32Smrgesac 41660bd37d32SmrgAC_MSG_RESULT($ICON_THEME) 41670bd37d32Smrg 41680bd37d32Smrgif test "x$ICON_THEME" = xno 41690bd37d32Smrgthen 41700bd37d32Smrg if test "x$ICONDIR" != xno 41710bd37d32Smrg then 41720bd37d32Smrg CF_VERBOSE(ignoring icondir without theme) 41730bd37d32Smrg no_icondir="#" 41740bd37d32Smrg fi 41750bd37d32Smrgelse 41760bd37d32Smrg if test "x$ICONDIR" = xno 41770bd37d32Smrg then 41780bd37d32Smrg AC_MSG_ERROR(icondir must be set for icon theme) 41790bd37d32Smrg fi 41800bd37d32Smrgfi 41810bd37d32Smrg 41820bd37d32Smrg: ${ICON_FORMAT:=ifelse([$3],,[".svg .png .xpm"],[$3])} 41830bd37d32Smrg 41840bd37d32SmrgICON_LIST= 41850bd37d32Smrg 41860bd37d32Smrgifelse([$4],,[cf_icon_list=$1],[ 41870bd37d32Smrgif test "x$ICON_THEME" != xno 41880bd37d32Smrgthen 41890bd37d32Smrg cf_icon_list="$1" 41900bd37d32Smrgelse 41910bd37d32Smrg cf_icon_list="$4" 41920bd37d32Smrgfi 41930bd37d32Smrg]) 41940bd37d32Smrg 41950bd37d32SmrgAC_MSG_CHECKING([for icon(s) to install]) 41960bd37d32Smrgfor cf_name in $cf_icon_list 41970bd37d32Smrgdo 41980bd37d32Smrg CF_VERBOSE(using $ICON_FORMAT) 41990bd37d32Smrg for cf_suffix in $ICON_FORMAT 42000bd37d32Smrg do 42010bd37d32Smrg cf_icon="${cf_name}${cf_suffix}" 42020bd37d32Smrg cf_left=`echo "$cf_icon" | sed -e 's/:.*//'` 42030bd37d32Smrg if test ! -f "${cf_left}" 42040bd37d32Smrg then 42050bd37d32Smrg if test "x$srcdir" != "x." 42060bd37d32Smrg then 42070bd37d32Smrg cf_icon="${srcdir}/${cf_left}" 42080bd37d32Smrg cf_left=`echo "$cf_icon" | sed -e 's/:.*//'` 42090bd37d32Smrg if test ! -f "${cf_left}" 42100bd37d32Smrg then 42110bd37d32Smrg continue 42120bd37d32Smrg fi 42130bd37d32Smrg else 42140bd37d32Smrg continue 42150bd37d32Smrg fi 42160bd37d32Smrg fi 42170bd37d32Smrg if test "x$ICON_THEME" != xno 42180bd37d32Smrg then 4219f2e35a3aSmrg cf_base=`basename "$cf_left"` 42200bd37d32Smrg cf_trim=`echo "$cf_base" | sed -e 's/_[[0-9]][[0-9]]x[[0-9]][[0-9]]\././'` 422101037d57Smrg case "x${cf_base}" in 422201037d57Smrg (*:*) 42230bd37d32Smrg cf_next=$cf_base 42240bd37d32Smrg # user-defined mapping 42250bd37d32Smrg ;; 422601037d57Smrg (*.png) 42270bd37d32Smrg cf_size=`file "$cf_left"|sed -e 's/^[[^:]]*://' -e 's/^.*[[^0-9]]\([[0-9]][[0-9]]* x [[0-9]][[0-9]]*\)[[^0-9]].*$/\1/' -e 's/ //g'` 42280bd37d32Smrg if test -z "$cf_size" 42290bd37d32Smrg then 42300bd37d32Smrg AC_MSG_WARN(cannot determine size of $cf_left) 42310bd37d32Smrg continue 42320bd37d32Smrg fi 42330bd37d32Smrg cf_next="$cf_size/apps/$cf_trim" 42340bd37d32Smrg ;; 423501037d57Smrg (*.svg) 42360bd37d32Smrg cf_next="scalable/apps/$cf_trim" 42370bd37d32Smrg ;; 423801037d57Smrg (*.xpm) 42390bd37d32Smrg CF_VERBOSE(ignored XPM file in icon theme) 42400bd37d32Smrg continue 42410bd37d32Smrg ;; 424201037d57Smrg (*_[[0-9]][[0-9]]*x[[0-9]][[0-9]]*.*) 42430bd37d32Smrg cf_size=`echo "$cf_left"|sed -e 's/^.*_\([[0-9]][[0-9]]*x[[0-9]][[0-9]]*\)\..*$/\1/'` 42440bd37d32Smrg cf_left=`echo "$cf_left"|sed -e 's/^\(.*\)_\([[0-9]][[0-9]]*x[[0-9]][[0-9]]*\)\(\..*\)$/\1\3/'` 42450bd37d32Smrg cf_next="$cf_size/apps/$cf_base" 42460bd37d32Smrg ;; 42470bd37d32Smrg esac 42480bd37d32Smrg CF_VERBOSE(adding $cf_next) 42490bd37d32Smrg cf_icon="${cf_icon}:${cf_next}" 42500bd37d32Smrg fi 42510bd37d32Smrg test -n "$ICON_LIST" && ICON_LIST="$ICON_LIST " 42520bd37d32Smrg ICON_LIST="$ICON_LIST${cf_icon}" 42530bd37d32Smrg if test -z "$ICON_NAME" 42540bd37d32Smrg then 4255f2e35a3aSmrg ICON_NAME=`basename "$cf_icon" | sed -e 's/[[.:]].*//'` 42560bd37d32Smrg fi 42570bd37d32Smrg done 42580bd37d32Smrgdone 42590bd37d32Smrg 42600bd37d32Smrgif test -n "$verbose" 42610bd37d32Smrgthen 42620bd37d32Smrg AC_MSG_CHECKING(result) 42630bd37d32Smrgfi 42640bd37d32SmrgAC_MSG_RESULT($ICON_LIST) 42650bd37d32Smrg 42660bd37d32Smrgif test -z "$ICON_LIST" 42670bd37d32Smrgthen 42680bd37d32Smrg AC_MSG_ERROR(no icons found) 42690bd37d32Smrgfi 42700bd37d32Smrg]) 42710bd37d32Smrg 42720bd37d32SmrgAC_MSG_CHECKING(for icon name) 42730bd37d32SmrgAC_MSG_RESULT($ICON_NAME) 42740bd37d32Smrg 42750bd37d32SmrgAC_SUBST(ICON_FORMAT) 42760bd37d32SmrgAC_SUBST(ICON_THEME) 42770bd37d32SmrgAC_SUBST(ICON_LIST) 42780bd37d32SmrgAC_SUBST(ICON_NAME) 42790bd37d32Smrg])dnl 42800bd37d32Smrgdnl --------------------------------------------------------------------------- 42815104ee6eSmrgdnl CF_WITH_IMAKE_CFLAGS version: 13 updated: 2024/07/05 19:34:53 4282d522f475Smrgdnl -------------------- 4283d522f475Smrgdnl xterm and similar programs build more readily when propped up with imake's 4284d522f475Smrgdnl hand-tuned definitions. If we do not use imake, provide fallbacks for the 4285d522f475Smrgdnl most common definitions that we're not likely to do by autoconf tests. 4286d522f475SmrgAC_DEFUN([CF_WITH_IMAKE_CFLAGS],[ 4287d522f475SmrgAC_REQUIRE([CF_ENABLE_NARROWPROTO]) 4288d522f475Smrg 4289d522f475SmrgAC_MSG_CHECKING(if we should use imake to help) 42905104ee6eSmrgCF_ARG_ENABLE(imake, 42915104ee6eSmrg [ --enable-imake enable use of imake for definitions], 42925104ee6eSmrg [enable_imake=yes], 42935104ee6eSmrg [enable_imake=no]) 4294d522f475SmrgAC_MSG_RESULT($enable_imake) 4295d522f475Smrg 4296d522f475Smrgif test "$enable_imake" = yes ; then 429720d2c4d2Smrg CF_IMAKE_CFLAGS(ifelse([$1],,,[$1])) 4298d522f475Smrgfi 4299d522f475Smrg 4300d522f475Smrgif test -n "$IMAKE" && test -n "$IMAKE_CFLAGS" ; then 4301d522f475Smrg CF_ADD_CFLAGS($IMAKE_CFLAGS) 4302d522f475Smrgelse 4303d522f475Smrg IMAKE_CFLAGS= 4304d522f475Smrg IMAKE_LOADFLAGS= 4305d522f475Smrg CF_VERBOSE(make fallback definitions) 4306d522f475Smrg 4307d522f475Smrg # We prefer config.guess' values when we can get them, to avoid 4308d522f475Smrg # inconsistent results with uname (AIX for instance). However, 4309d522f475Smrg # config.guess is not always consistent either. 4310d522f475Smrg case $host_os in 431101037d57Smrg (*[[0-9]].[[0-9]]*) 4312d522f475Smrg UNAME_RELEASE="$host_os" 4313d522f475Smrg ;; 431401037d57Smrg (*) 4315d522f475Smrg UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown 4316d522f475Smrg ;; 4317d522f475Smrg esac 4318d522f475Smrg 4319d522f475Smrg case .$UNAME_RELEASE in 432001037d57Smrg (*[[0-9]].[[0-9]]*) 4321d522f475Smrg OSMAJORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/\..*//'` 4322d522f475Smrg OSMINORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/^[[^.]]*\.//' -e 's/\..*//' -e 's/[[^0-9]].*//' ` 4323d522f475Smrg test -z "$OSMAJORVERSION" && OSMAJORVERSION=1 4324d522f475Smrg test -z "$OSMINORVERSION" && OSMINORVERSION=0 4325d522f475Smrg IMAKE_CFLAGS="-DOSMAJORVERSION=$OSMAJORVERSION -DOSMINORVERSION=$OSMINORVERSION $IMAKE_CFLAGS" 4326d522f475Smrg ;; 4327d522f475Smrg esac 4328d522f475Smrg 4329d522f475Smrg # FUNCPROTO is standard with X11R6, but XFree86 drops it, leaving some 4330d522f475Smrg # fallback/fragments for NeedPrototypes, etc. 4331d522f475Smrg IMAKE_CFLAGS="-DFUNCPROTO=15 $IMAKE_CFLAGS" 4332d522f475Smrg 4333d522f475Smrg # If this is not set properly, Xaw's scrollbars will not work 4334d522f475Smrg if test "$enable_narrowproto" = yes ; then 4335d522f475Smrg IMAKE_CFLAGS="-DNARROWPROTO=1 $IMAKE_CFLAGS" 4336d522f475Smrg fi 4337d522f475Smrg 4338d522f475Smrg # Other special definitions: 4339d522f475Smrg case $host_os in 434001037d57Smrg (aix*) 4341d522f475Smrg # imake on AIX 5.1 defines AIXV3. really. 4342d522f475Smrg IMAKE_CFLAGS="-DAIXV3 -DAIXV4 $IMAKE_CFLAGS" 4343d522f475Smrg ;; 434401037d57Smrg (irix[[56]].*) 4345d522f475Smrg # these are needed to make SIGWINCH work in xterm 4346d522f475Smrg IMAKE_CFLAGS="-DSYSV -DSVR4 $IMAKE_CFLAGS" 4347d522f475Smrg ;; 4348d522f475Smrg esac 4349d522f475Smrg 43504419d26bSmrg # "modern" systems install X applications in /usr/bin. Other systems may 43514419d26bSmrg # use one of the X release-based directories. 43524419d26bSmrg case "$CFLAGS $CPPFLAGS $IMAKE_CFLAGS" in 43534419d26bSmrg (*-DPROJECTROOT*) 43544419d26bSmrg ;; 43554419d26bSmrg (*) 43564419d26bSmrg for cf_dir in /usr/X11R7 /usr/X11R6 /usr/X11R5 43574419d26bSmrg do 43584419d26bSmrg if test -d "$cf_dir/bin" 43594419d26bSmrg then 43604419d26bSmrg IMAKE_CFLAGS="$IMAKE_CFLAGS -DPROJECTROOT=\\\"$cf_dir\\\"" 43614419d26bSmrg break 43624419d26bSmrg fi 43634419d26bSmrg done 43644419d26bSmrg ;; 43654419d26bSmrg esac 43664419d26bSmrg 4367d522f475Smrg CF_ADD_CFLAGS($IMAKE_CFLAGS) 4368d522f475Smrg 4369d522f475Smrg AC_SUBST(IMAKE_CFLAGS) 4370d522f475Smrg AC_SUBST(IMAKE_LOADFLAGS) 4371d522f475Smrgfi 4372d522f475Smrg])dnl 4373d522f475Smrgdnl --------------------------------------------------------------------------- 43745104ee6eSmrgdnl CF_WITH_MAN2HTML version: 14 updated: 2024/09/09 17:17:46 437501037d57Smrgdnl ---------------- 4376f2e35a3aSmrgdnl Check for man2html and groff. Prefer man2html over groff, but use groff 4377f2e35a3aSmrgdnl as a fallback. See 4378f2e35a3aSmrgdnl 43795104ee6eSmrgdnl https://invisible-island.net/scripts/man2html.html 4380f2e35a3aSmrgdnl 438101037d57Smrgdnl Generate a shell script which hides the differences between the two. 438201037d57Smrgdnl 438301037d57Smrgdnl We name that "man2html.tmp". 438401037d57Smrgdnl 438501037d57Smrgdnl The shell script can be removed later, e.g., using "make distclean". 438601037d57SmrgAC_DEFUN([CF_WITH_MAN2HTML],[ 4387f2e35a3aSmrgAC_REQUIRE([CF_PROG_GROFF])dnl 4388f2e35a3aSmrgAC_REQUIRE([AC_PROG_FGREP])dnl 4389f2e35a3aSmrg 4390f2e35a3aSmrgcase "x${with_man2html}" in 4391f2e35a3aSmrg(xno) 4392f2e35a3aSmrg cf_man2html=no 4393f2e35a3aSmrg ;; 4394f2e35a3aSmrg(x|xyes) 4395f2e35a3aSmrg AC_PATH_PROG(cf_man2html,man2html,no) 4396f2e35a3aSmrg case "x$cf_man2html" in 4397f2e35a3aSmrg (x/*) 4398f2e35a3aSmrg AC_MSG_CHECKING(for the modified Earl Hood script) 4399f2e35a3aSmrg if ( $cf_man2html -help 2>&1 | grep 'Make an index of headers at the end' >/dev/null ) 4400f2e35a3aSmrg then 4401f2e35a3aSmrg cf_man2html_ok=yes 4402f2e35a3aSmrg else 4403f2e35a3aSmrg cf_man2html=no 4404f2e35a3aSmrg cf_man2html_ok=no 4405f2e35a3aSmrg fi 4406f2e35a3aSmrg AC_MSG_RESULT($cf_man2html_ok) 4407f2e35a3aSmrg ;; 4408f2e35a3aSmrg (*) 4409f2e35a3aSmrg cf_man2html=no 4410f2e35a3aSmrg ;; 4411f2e35a3aSmrg esac 4412f2e35a3aSmrgesac 441301037d57Smrg 441401037d57SmrgAC_MSG_CHECKING(for program to convert manpage to html) 441501037d57SmrgAC_ARG_WITH(man2html, 441604b94745Smrg [[ --with-man2html[=XXX] use XXX rather than groff]], 441701037d57Smrg [cf_man2html=$withval], 4418f2e35a3aSmrg [cf_man2html=$cf_man2html]) 441901037d57Smrg 442001037d57Smrgcf_with_groff=no 442101037d57Smrg 442201037d57Smrgcase $cf_man2html in 442301037d57Smrg(yes) 442401037d57Smrg AC_MSG_RESULT(man2html) 442501037d57Smrg AC_PATH_PROG(cf_man2html,man2html,no) 442601037d57Smrg ;; 442701037d57Smrg(no|groff|*/groff*) 442801037d57Smrg cf_with_groff=yes 442901037d57Smrg cf_man2html=$GROFF_PATH 443001037d57Smrg AC_MSG_RESULT($cf_man2html) 443101037d57Smrg ;; 443201037d57Smrg(*) 443301037d57Smrg AC_MSG_RESULT($cf_man2html) 443401037d57Smrg ;; 443501037d57Smrgesac 443601037d57Smrg 443701037d57SmrgMAN2HTML_TEMP="man2html.tmp" 443801037d57Smrg cat >$MAN2HTML_TEMP <<CF_EOF 44392e4f8982Smrg#!$SHELL 444001037d57Smrg# Temporary script generated by CF_WITH_MAN2HTML 444101037d57Smrg# Convert inputs to html, sending result to standard output. 444201037d57Smrg# 444301037d57Smrg# Parameters: 44442e4f8982Smrg# \${1} = rootname of file to convert 44452e4f8982Smrg# \${2} = suffix of file to convert, e.g., "1" 44462e4f8982Smrg# \${3} = macros to use, e.g., "man" 444701037d57Smrg# 444801037d57SmrgROOT=\[$]1 444901037d57SmrgTYPE=\[$]2 445001037d57SmrgMACS=\[$]3 445101037d57Smrg 445201037d57Smrgunset LANG 445301037d57Smrgunset LC_ALL 445401037d57Smrgunset LC_CTYPE 445501037d57Smrgunset LANGUAGE 445601037d57SmrgGROFF_NO_SGR=stupid 445701037d57Smrgexport GROFF_NO_SGR 445801037d57Smrg 445901037d57SmrgCF_EOF 446001037d57Smrg 4461f2e35a3aSmrgNROFF_OPTS= 446201037d57Smrgif test "x$cf_with_groff" = xyes 446301037d57Smrgthen 446401037d57Smrg MAN2HTML_NOTE="$GROFF_NOTE" 446501037d57Smrg MAN2HTML_PATH="$GROFF_PATH" 446601037d57Smrg cat >>$MAN2HTML_TEMP <<CF_EOF 4467f2e35a3aSmrg$SHELL -c "$TBL_PATH \${ROOT}.\${TYPE} | $GROFF_PATH -P -o0 -I\${ROOT}_ -Thtml -\${MACS}" 446801037d57SmrgCF_EOF 446901037d57Smrgelse 4470f2e35a3aSmrg # disable hyphenation if this is groff 4471f2e35a3aSmrg if test "x$GROFF_PATH" != xno 4472f2e35a3aSmrg then 4473f2e35a3aSmrg AC_MSG_CHECKING(if nroff is really groff) 4474f2e35a3aSmrg cf_check_groff="`$NROFF_PATH --version 2>/dev/null | grep groff`" 4475f2e35a3aSmrg test -n "$cf_check_groff" && cf_check_groff=yes 4476f2e35a3aSmrg test -n "$cf_check_groff" || cf_check_groff=no 4477f2e35a3aSmrg AC_MSG_RESULT($cf_check_groff) 4478f2e35a3aSmrg test "x$cf_check_groff" = xyes && NROFF_OPTS="-rHY=0" 4479f2e35a3aSmrg fi 448001037d57Smrg MAN2HTML_NOTE="" 448101037d57Smrg CF_PATH_SYNTAX(cf_man2html) 448201037d57Smrg MAN2HTML_PATH="$cf_man2html" 448301037d57Smrg AC_MSG_CHECKING(for $cf_man2html top/bottom margins) 448401037d57Smrg 448501037d57Smrg # for this example, expect 3 lines of content, the remainder is head/foot 448601037d57Smrg cat >conftest.in <<CF_EOF 448701037d57Smrg.TH HEAD1 HEAD2 HEAD3 HEAD4 HEAD5 448801037d57Smrg.SH SECTION 448901037d57SmrgMARKER 449001037d57SmrgCF_EOF 449101037d57Smrg 4492f2e35a3aSmrg LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out 449301037d57Smrg 4494f2e35a3aSmrg cf_man2html_1st="`${FGREP-fgrep} -n MARKER conftest.out |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`" 4495f2e35a3aSmrg cf_man2html_top=`expr "$cf_man2html_1st" - 2` 4496f2e35a3aSmrg cf_man2html_bot="`wc -l conftest.out |sed -e 's/[[^0-9]]//g'`" 4497f2e35a3aSmrg cf_man2html_bot=`expr "$cf_man2html_bot" - 2 - "$cf_man2html_top"` 449801037d57Smrg cf_man2html_top_bot="-topm=$cf_man2html_top -botm=$cf_man2html_bot" 449901037d57Smrg 450001037d57Smrg AC_MSG_RESULT($cf_man2html_top_bot) 450101037d57Smrg 450201037d57Smrg AC_MSG_CHECKING(for pagesize to use) 450301037d57Smrg for cf_block in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 450401037d57Smrg do 450501037d57Smrg cat >>conftest.in <<CF_EOF 450601037d57Smrg.nf 450701037d57Smrg0 450801037d57Smrg1 450901037d57Smrg2 451001037d57Smrg3 451101037d57Smrg4 451201037d57Smrg5 451301037d57Smrg6 451401037d57Smrg7 451501037d57Smrg8 451601037d57Smrg9 451701037d57SmrgCF_EOF 451801037d57Smrg done 451901037d57Smrg 4520f2e35a3aSmrg LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out 4521f2e35a3aSmrg cf_man2html_page="`${FGREP-fgrep} -n HEAD1 conftest.out |sed -n '$p' |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`" 452201037d57Smrg test -z "$cf_man2html_page" && cf_man2html_page=99999 452301037d57Smrg test "$cf_man2html_page" -gt 100 && cf_man2html_page=99999 452401037d57Smrg 452501037d57Smrg rm -rf conftest* 452601037d57Smrg AC_MSG_RESULT($cf_man2html_page) 452701037d57Smrg 452801037d57Smrg cat >>$MAN2HTML_TEMP <<CF_EOF 452901037d57Smrg: \${MAN2HTML_PATH=$MAN2HTML_PATH} 4530f2e35a3aSmrgMAN2HTML_OPTS="\$MAN2HTML_OPTS -index -title=\"\$ROOT(\$TYPE)\" -compress -pgsize $cf_man2html_page" 453101037d57Smrgcase \${TYPE} in 453201037d57Smrg(ms) 4533f2e35a3aSmrg $TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH -topm=0 -botm=0 \$MAN2HTML_OPTS 453401037d57Smrg ;; 453501037d57Smrg(*) 4536f2e35a3aSmrg $TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH $cf_man2html_top_bot \$MAN2HTML_OPTS 453701037d57Smrg ;; 453801037d57Smrgesac 453901037d57SmrgCF_EOF 454001037d57Smrgfi 454101037d57Smrg 454201037d57Smrgchmod 700 $MAN2HTML_TEMP 454301037d57Smrg 454401037d57SmrgAC_SUBST(MAN2HTML_NOTE) 454501037d57SmrgAC_SUBST(MAN2HTML_PATH) 454601037d57SmrgAC_SUBST(MAN2HTML_TEMP) 454701037d57Smrg])dnl 454801037d57Smrgdnl --------------------------------------------------------------------------- 4549f2e35a3aSmrgdnl CF_WITH_PCRE version: 12 updated: 2017/07/29 22:57:34 4550d522f475Smrgdnl ------------ 4551d522f475Smrgdnl Add PCRE (Perl-compatible regular expressions) to the build if it is 4552d522f475Smrgdnl available and the user requests it. Assume the application will otherwise 4553d522f475Smrgdnl use the POSIX interface. 4554d522f475Smrgdnl 4555d522f475Smrgdnl TODO allow $withval to specify package location 4556d522f475SmrgAC_DEFUN([CF_WITH_PCRE], 4557d522f475Smrg[ 455820d2c4d2SmrgAC_REQUIRE([CF_PKG_CONFIG]) 455920d2c4d2Smrg 4560d522f475SmrgAC_MSG_CHECKING(if you want to use PCRE for regular-expressions) 4561d522f475SmrgAC_ARG_WITH(pcre, 4562d522f475Smrg [ --with-pcre use PCRE for regular-expressions]) 4563d522f475Smrgtest -z "$with_pcre" && with_pcre=no 4564d522f475SmrgAC_MSG_RESULT($with_pcre) 4565d522f475Smrg 4566d522f475Smrgif test "$with_pcre" != no ; then 456720d2c4d2Smrg CF_TRY_PKG_CONFIG(libpcre,,[ 456820d2c4d2Smrg AC_CHECK_LIB(pcre,pcre_compile,, 456920d2c4d2Smrg AC_MSG_ERROR(Cannot find PCRE library))]) 457020d2c4d2Smrg 4571f2e35a3aSmrg AC_DEFINE(HAVE_LIB_PCRE,1,[Define to 1 if we can/should compile with the PCRE library]) 457220d2c4d2Smrg 4573f2e35a3aSmrg case $LIBS in 4574f2e35a3aSmrg (*pcreposix*) 4575f2e35a3aSmrg ;; 4576f2e35a3aSmrg (*) 4577f2e35a3aSmrg AC_CHECK_LIB(pcreposix,pcreposix_regcomp, 4578f2e35a3aSmrg [AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h]) 4579f2e35a3aSmrg CF_ADD_LIB(pcreposix)], 4580f2e35a3aSmrg [AC_CHECK_LIB(pcreposix,regcomp,[ 4581f2e35a3aSmrg AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h]) 4582f2e35a3aSmrg CF_ADD_LIB(pcreposix)], 4583f2e35a3aSmrg AC_MSG_ERROR(Cannot find PCRE POSIX library)])) 4584f2e35a3aSmrg ;; 4585f2e35a3aSmrg esac 4586f2e35a3aSmrgfi 4587f2e35a3aSmrg])dnl 4588f2e35a3aSmrgdnl --------------------------------------------------------------------------- 4589a5ae21e4Smrgdnl CF_WITH_PCRE2 version: 6 updated: 2021/08/11 20:35:34 4590f2e35a3aSmrgdnl ------------- 4591f2e35a3aSmrgdnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is 4592f2e35a3aSmrgdnl available and the user requests it. Assume the application will otherwise 4593f2e35a3aSmrgdnl use the POSIX interface. 4594f2e35a3aSmrgdnl 4595f2e35a3aSmrgdnl TODO allow $withval to specify package location 4596f2e35a3aSmrgAC_DEFUN([CF_WITH_PCRE2], 4597f2e35a3aSmrg[ 4598f2e35a3aSmrgAC_REQUIRE([CF_PKG_CONFIG]) 4599f2e35a3aSmrg 4600f2e35a3aSmrgAC_MSG_CHECKING(if you want to use PCRE2 for regular-expressions) 4601f2e35a3aSmrgAC_ARG_WITH(pcre2, 4602f2e35a3aSmrg [ --with-pcre2 use PCRE2 for regular-expressions]) 4603f2e35a3aSmrgtest -z "$with_pcre2" && with_pcre2=no 4604f2e35a3aSmrgAC_MSG_RESULT($with_pcre2) 4605f2e35a3aSmrg 4606f2e35a3aSmrgif test "x$with_pcre2" != xno ; then 4607f2e35a3aSmrg cf_with_pcre2_ok=no 4608f2e35a3aSmrg for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre 4609f2e35a3aSmrg do 4610f2e35a3aSmrg CF_TRY_PKG_CONFIG($cf_with_pcre2,[cf_with_pcre2_ok=yes; break]) 4611f2e35a3aSmrg done 4612f2e35a3aSmrg cf_with_pcre2_ok=yes || AC_MSG_ERROR(Cannot find PCRE2 library) 4613f2e35a3aSmrg 4614f2e35a3aSmrg AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library]) 4615f2e35a3aSmrg 4616f2e35a3aSmrg # if pkgconfig gave no results, look for the libraries directly 4617f2e35a3aSmrg case "$LIBS" in 4618f2e35a3aSmrg (*pcre2-posix*|*pcreposix*) 4619f2e35a3aSmrg ;; 4620f2e35a3aSmrg (*) 4621f2e35a3aSmrg AC_CHECK_LIB(pcre2-posix,regcomp,[ 4622f2e35a3aSmrg CF_ADD_LIB(pcre2-posix)], 4623f2e35a3aSmrg [AC_CHECK_LIB(pcreposix,regcomp,[ 4624f2e35a3aSmrg CF_ADD_LIB(pcreposix) 4625f2e35a3aSmrg ],[AC_MSG_ERROR(Cannot find PCRE2 POSIX library)])]) 4626f2e35a3aSmrg ;; 4627f2e35a3aSmrg esac 4628f2e35a3aSmrg 4629f2e35a3aSmrg # either way, check for the library header files 4630f2e35a3aSmrg AC_CHECK_HEADERS(pcre2posix.h pcreposix.h) 4631a5ae21e4Smrg AC_CHECK_FUNCS(PCRE2regcomp) 4632d522f475Smrgfi 4633d522f475Smrg])dnl 4634d522f475Smrgdnl --------------------------------------------------------------------------- 46350bd37d32Smrgdnl CF_WITH_PIXMAPDIR version: 3 updated: 2012/07/22 09:18:02 46360bd37d32Smrgdnl ----------------- 46370bd37d32Smrgdnl Handle configure option "--with-pixmapdir", setting these shell variables: 46380bd37d32Smrgdnl 46390bd37d32Smrgdnl $PIXMAPDIR is the option value, used for installing pixmap files. 46400bd37d32Smrgdnl $no_pixmapdir is a "#" (comment) if "--without-pixmapdir" is given. 46410bd37d32SmrgAC_DEFUN([CF_WITH_PIXMAPDIR],[ 46420bd37d32SmrgAC_MSG_CHECKING(for directory to install pixmaps) 46430bd37d32SmrgAC_ARG_WITH(pixmapdir, 46440bd37d32Smrg [ --with-pixmapdir=DIR directory in which to install pixmaps (DATADIR/pixmaps)], 46450bd37d32Smrg [PIXMAPDIR=$withval], 46460bd37d32Smrg [test -z "$PIXMAPDIR" && PIXMAPDIR='${datadir}/pixmaps']) 46470bd37d32Smrg 46480bd37d32Smrgif test "x[$]PIXMAPDIR" = xauto 46490bd37d32Smrgthen 46500bd37d32Smrg PIXMAPDIR='${datadir}/pixmaps' 46510bd37d32Smrg for cf_path in \ 46520bd37d32Smrg /usr/share/pixmaps \ 46530bd37d32Smrg /usr/X11R6/share/pixmaps 46540bd37d32Smrg do 46550bd37d32Smrg if test -d "$cf_path" ; then 46560bd37d32Smrg PIXMAPDIR="$cf_path" 46570bd37d32Smrg break 46580bd37d32Smrg fi 46590bd37d32Smrg done 46600bd37d32Smrgelse 46610bd37d32Smrg cf_path=$PIXMAPDIR 46620bd37d32Smrg CF_PATH_SYNTAX(cf_path) 46630bd37d32Smrgfi 46640bd37d32SmrgAC_MSG_RESULT($PIXMAPDIR) 46650bd37d32SmrgAC_SUBST(PIXMAPDIR) 46660bd37d32Smrg 46670bd37d32Smrgno_pixmapdir= 46680bd37d32Smrgif test "$PIXMAPDIR" = no 46690bd37d32Smrgthen 46700bd37d32Smrg no_pixmapdir="#" 46710bd37d32Smrgelse 46720bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(PIXMAPDIR)" 46730bd37d32Smrgfi 46740bd37d32SmrgAC_SUBST(no_pixmapdir) 46750bd37d32Smrg])dnl 46760bd37d32Smrgdnl --------------------------------------------------------------------------- 46775104ee6eSmrgdnl CF_WITH_SYSTYPE version: 1 updated: 2013/01/26 16:26:12 46785104ee6eSmrgdnl --------------- 46795104ee6eSmrgdnl For testing, override the derived host system-type which is used to decide 46805104ee6eSmrgdnl things such as the linker commands used to build shared libraries. This is 46815104ee6eSmrgdnl normally chosen automatically based on the type of system which you are 46825104ee6eSmrgdnl building on. We use it for testing the configure script. 46835104ee6eSmrgdnl 46845104ee6eSmrgdnl This is different from the --host option: it is used only for testing parts 46855104ee6eSmrgdnl of the configure script which would not be reachable with --host since that 46865104ee6eSmrgdnl relies on the build environment being real, rather than mocked up. 46875104ee6eSmrgAC_DEFUN([CF_WITH_SYSTYPE],[ 46885104ee6eSmrgCF_CHECK_CACHE([AC_CANONICAL_SYSTEM]) 46895104ee6eSmrgAC_ARG_WITH(system-type, 46905104ee6eSmrg [ --with-system-type=XXX test: override derived host system-type], 46915104ee6eSmrg[AC_MSG_WARN(overriding system type to $withval) 46925104ee6eSmrg cf_cv_system_name=$withval 46935104ee6eSmrg host_os=$withval 46945104ee6eSmrg]) 46955104ee6eSmrg])dnl 46965104ee6eSmrgdnl --------------------------------------------------------------------------- 469704b94745Smrgdnl CF_WITH_UTMP_PATH version: 1 updated: 2023/09/04 16:05:17 469804b94745Smrgdnl ----------------- 469904b94745Smrgdnl utmp and wtmp have different pathnames on different systems, but there 470004b94745Smrgdnl are only a few common choices. Note that they may not necessarily appear 470104b94745Smrgdnl in the same directories. Prefer utmpx/wtmpx to utmp/wtmp, since that's 470204b94745Smrgdnl the way the configure script is designed. 470304b94745SmrgAC_DEFUN([CF_WITH_UTMP_PATH],[ 470404b94745SmrgAC_ARG_WITH(utmp-path, 470504b94745Smrg [ --with-utmp-path=XXX use XXX rather than auto for utmp path], 470604b94745Smrg [cf_utmp_path=$withval], 470704b94745Smrg [cf_utmp_path=auto]) 470804b94745Smrgif test "$cf_utmp_path" = auto ; then 470904b94745Smrg for cf_utmp_path in /etc/utmp /var/adm/utmp /var/log/utmp /var/run/utmp 471004b94745Smrg do 471104b94745Smrg if test -f ${cf_utmp_path}x ; then 471204b94745Smrg cf_utmp_path=${cf_utmp_path}x 471304b94745Smrg break 471404b94745Smrg elif test -f $cf_utmp_path ; then 471504b94745Smrg break 471604b94745Smrg fi 471704b94745Smrg done 471804b94745Smrgelse 471904b94745Smrg CF_PATH_SYNTAX(cf_utmp_path) 472004b94745Smrgfi 472104b94745SmrgUTMP_PATH=$cf_utmp_path 472204b94745SmrgUTMP_NAME=`echo "$cf_utmp_path" | sed -e 's,^.*/,,'` 472304b94745SmrgAC_SUBST(UTMP_NAME) 472404b94745SmrgAC_SUBST(UTMP_PATH) 472504b94745Smrg])dnl 472604b94745Smrgdnl --------------------------------------------------------------------------- 47270bd37d32Smrgdnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21 47280bd37d32Smrgdnl ---------------- 47290bd37d32SmrgAC_DEFUN([CF_WITH_VALGRIND],[ 47300bd37d32SmrgCF_NO_LEAKS_OPTION(valgrind, 47310bd37d32Smrg [ --with-valgrind test: use valgrind], 47320bd37d32Smrg [USE_VALGRIND]) 47330bd37d32Smrg])dnl 47340bd37d32Smrgdnl --------------------------------------------------------------------------- 473504b94745Smrgdnl CF_WITH_WTMP_PATH version: 2 updated: 2023/10/02 17:22:48 473604b94745Smrgdnl ----------------- 473704b94745Smrgdnl Like CF_WITH_UTMP_PATH, but for the wtmp file. 473804b94745SmrgAC_DEFUN([CF_WITH_WTMP_PATH],[ 473904b94745SmrgAC_ARG_WITH(wtmp-path, 474004b94745Smrg [ --with-wtmp-path=XXX use XXX rather than auto for wtmp path], 474104b94745Smrg [cf_wtmp_path=$withval], 474204b94745Smrg [cf_wtmp_path=auto]) 474304b94745Smrgif test "$cf_wtmp_path" = auto ; then 474404b94745Smrg for cf_wtmp_path in /etc/wtmp /var/adm/wtmp /var/run/wtmp /var/log/wtmp 474504b94745Smrg do 474604b94745Smrg if test -f ${cf_wtmp_path}x ; then 474704b94745Smrg cf_wtmp_path=${cf_wtmp_path}x 474804b94745Smrg break 474904b94745Smrg elif test -f $cf_wtmp_path/wtmp ; then 475004b94745Smrg break 475104b94745Smrg fi 475204b94745Smrg done 475304b94745Smrgelse 475404b94745Smrg CF_PATH_SYNTAX(cf_wtmp_path) 475504b94745Smrgfi 475604b94745SmrgWTMP_PATH=$cf_wtmp_path 475704b94745SmrgWTMP_NAME=`echo "$cf_wtmp_path" | sed -e 's,^.*/,,'` 475804b94745SmrgAC_SUBST(WTMP_NAME) 475904b94745SmrgAC_SUBST(WTMP_PATH) 476004b94745Smrg])dnl 476104b94745Smrgdnl --------------------------------------------------------------------------- 47622e4f8982Smrgdnl CF_WITH_XINERAMA version: 1 updated: 2016/05/28 14:41:12 47632e4f8982Smrgdnl ---------------- 47642e4f8982SmrgAC_DEFUN([CF_WITH_XINERAMA], 47652e4f8982Smrg[ 47662e4f8982SmrgAC_MSG_CHECKING(if you want to use the Xinerama extension) 47672e4f8982SmrgAC_ARG_WITH(xinerama, 47682e4f8982Smrg[ --without-xinerama do not use Xinerama extension for multiscreen support], 47692e4f8982Smrg [cf_with_xinerama="$withval"], 47702e4f8982Smrg [cf_with_xinerama=yes]) 47712e4f8982SmrgAC_MSG_RESULT($cf_with_xinerama) 47722e4f8982Smrgif test "$cf_with_xinerama" = yes; then 47732e4f8982Smrg CF_XINERAMA 47742e4f8982Smrgfi 47752e4f8982Smrg])dnl 47762e4f8982Smrgdnl --------------------------------------------------------------------------- 477704b94745Smrgdnl CF_WITH_XPM version: 4 updated: 2023/11/23 06:40:35 47780bd37d32Smrgdnl ----------- 47790bd37d32Smrgdnl Test for Xpm library, update compiler/loader flags if it is wanted and 47800bd37d32Smrgdnl found. 47810bd37d32Smrgdnl 47820bd37d32Smrgdnl Also sets ICON_SUFFIX 47830bd37d32SmrgAC_DEFUN([CF_WITH_XPM], 47840bd37d32Smrg[ 47850bd37d32SmrgICON_SUFFIX=.xbm 47860bd37d32Smrg 47870bd37d32Smrgcf_save_cppflags="${CPPFLAGS}" 47880bd37d32Smrgcf_save_ldflags="${LDFLAGS}" 47890bd37d32Smrg 47900bd37d32SmrgAC_MSG_CHECKING(if you want to use the Xpm library for colored icon) 47910bd37d32SmrgAC_ARG_WITH(xpm, 479204b94745Smrg[[ --with-xpm[=DIR] use Xpm library for colored icon, may specify path]], 47930bd37d32Smrg [cf_Xpm_library="$withval"], 47940bd37d32Smrg [cf_Xpm_library=yes]) 47950bd37d32SmrgAC_MSG_RESULT($cf_Xpm_library) 47960bd37d32Smrg 47970bd37d32Smrgif test "$cf_Xpm_library" != no ; then 47980bd37d32Smrg if test "$cf_Xpm_library" != yes ; then 47990bd37d32Smrg CPPFLAGS="$CPPFLAGS -I$withval/include" 48000bd37d32Smrg LDFLAGS="$LDFLAGS -L$withval/lib" 48010bd37d32Smrg fi 48020bd37d32Smrg AC_CHECK_HEADER(X11/xpm.h,[ 48030bd37d32Smrg AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData,[ 48040bd37d32Smrg AC_DEFINE(HAVE_LIBXPM,1,[Define to 1 if we should use Xpm library]) 48050bd37d32Smrg ICON_SUFFIX=.xpm 48060bd37d32Smrg LIBS="-lXpm $LIBS"], 48070bd37d32Smrg [CPPFLAGS="${cf_save_cppflags}" LDFLAGS="${cf_save_ldflags}"], 48080bd37d32Smrg [-lX11 $X_LIBS])], 48090bd37d32Smrg [CPPFLAGS="${cf_save_cppflags}" LDFLAGS="${cf_save_ldflags}"]) 48100bd37d32Smrgfi 48110bd37d32Smrg 48120bd37d32SmrgAC_SUBST(ICON_SUFFIX) 48130bd37d32Smrg])dnl 48140bd37d32Smrgdnl --------------------------------------------------------------------------- 481501037d57Smrgdnl CF_XBOOL_RESULT version: 3 updated: 2015/04/12 15:39:00 48160bd37d32Smrgdnl --------------- 48170bd37d32Smrgdnl Translate an autoconf boolean yes/no into X11's booleans, e.g., True/False. 48180bd37d32Smrgdnl Allow for more than two values, e.g., "maybe", still using the same leading 48190bd37d32Smrgdnl capital convention. 48200bd37d32Smrgdnl 48210bd37d32Smrgdnl $1 = symbol to define 48220bd37d32Smrgdnl $2 = symbol holding value 48230bd37d32Smrgdnl $3 = description 48240bd37d32Smrgdefine([CF_XBOOL_RESULT],[ 48250bd37d32SmrgAC_MSG_RESULT([$]$2) 482601037d57Smrgcase [$]$2 in 482701037d57Smrg(yes) 48280bd37d32Smrg $2=true 48290bd37d32Smrg ;; 483001037d57Smrg(no) 48310bd37d32Smrg $2=false 48320bd37d32Smrg ;; 48330bd37d32Smrgesac 48340bd37d32Smrgcf_xbool1=`echo "[$]$2"|sed -e 's/^\(.\).*/\1/'` 48350bd37d32SmrgCF_UPPER(cf_xbool1,$cf_xbool1) 48360bd37d32Smrgcf_xbool2=`echo "[$]$2"|sed -e 's/^.//'` 48370bd37d32Smrg$2=${cf_xbool1}${cf_xbool2} 48380bd37d32SmrgAC_DEFINE_UNQUOTED($1,[$]$2,$3) 48390bd37d32SmrgAC_SUBST($2) 48400bd37d32Smrg]) 48410bd37d32Smrgdnl --------------------------------------------------------------------------- 484201037d57Smrgdnl CF_XINERAMA version: 2 updated: 2015/02/15 15:18:41 484301037d57Smrgdnl ----------- 484401037d57SmrgAC_DEFUN([CF_XINERAMA],[ 484501037d57SmrgCF_TRY_PKG_CONFIG(xinerama,[ 484601037d57Smrg AC_DEFINE(HAVE_X11_EXTENSIONS_XINERAMA_H)],[ 484701037d57Smrg AC_CHECK_LIB(Xinerama,XineramaQueryScreens, 484801037d57Smrg [CF_ADD_LIB(Xinerama) 484901037d57Smrg AC_CHECK_HEADERS( \ 485001037d57Smrg X11/extensions/Xinerama.h \ 485101037d57Smrg ) 485201037d57Smrg ]) 485301037d57Smrg ]) 485401037d57Smrg])dnl 485501037d57Smrgdnl --------------------------------------------------------------------------- 485604b94745Smrgdnl CF_XKB_BELL_EXT version: 7 updated: 2023/12/01 17:22:50 4857d522f475Smrgdnl --------------- 4858d522f475Smrgdnl Check for XKB bell extension 4859d522f475SmrgAC_DEFUN([CF_XKB_BELL_EXT],[ 4860f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 4861f2e35a3aSmrg 4862f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_XKB_BELL_EXT]) 4863f2e35a3aSmrg 4864d522f475SmrgAC_CACHE_CHECK(for XKB Bell extension, cf_cv_xkb_bell_ext,[ 4865d522f475SmrgAC_TRY_LINK([ 4866956cc18dSsnj#include <X11/Intrinsic.h> 4867d522f475Smrg#include <X11/XKBlib.h> /* has the prototype */ 4868d522f475Smrg#include <X11/extensions/XKBbells.h> /* has the XkbBI_xxx definitions */ 4869d522f475Smrg],[ 4870956cc18dSsnj int x = (XkbBI_Info |XkbBI_MinorError |XkbBI_MajorError |XkbBI_TerminalBell |XkbBI_MarginBell); 4871f2e35a3aSmrg Atom y = 0; 4872f2e35a3aSmrg (void)x; 487304b94745Smrg XkbBell((Display *)0, (Window)0, 0, y); 4874d522f475Smrg],[cf_cv_xkb_bell_ext=yes],[cf_cv_xkb_bell_ext=no]) 4875d522f475Smrg]) 48760bd37d32Smrgtest "$cf_cv_xkb_bell_ext" = yes && AC_DEFINE(HAVE_XKB_BELL_EXT,1,[Define 1 if we have XKB Bell extension]) 4877f2e35a3aSmrg 4878f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_XKB_BELL_EXT]) 48790bd37d32Smrg]) 48800bd37d32Smrgdnl --------------------------------------------------------------------------- 4881f2e35a3aSmrgdnl CF_XKB_KEYCODE_TO_KEYSYM version: 3 updated: 2020/03/10 18:53:47 48820bd37d32Smrgdnl ------------------------ 48830bd37d32Smrgdnl Some older vendor-unix systems made a practice of delivering fragments of 48840bd37d32Smrgdnl Xkb, requiring test-compiles. 48850bd37d32SmrgAC_DEFUN([CF_XKB_KEYCODE_TO_KEYSYM],[ 48860bd37d32SmrgAC_CACHE_CHECK(if we can use XkbKeycodeToKeysym, cf_cv_xkb_keycode_to_keysym,[ 48870bd37d32SmrgAC_TRY_COMPILE([ 48880bd37d32Smrg#include <X11/Xlib.h> 48890bd37d32Smrg#include <X11/XKBlib.h> 48900bd37d32Smrg],[ 48910bd37d32Smrg KeySym keysym = XkbKeycodeToKeysym((Display *)0, 0, 0, 0); 4892f2e35a3aSmrg (void)keysym; 48930bd37d32Smrg],[ 48940bd37d32Smrgcf_cv_xkb_keycode_to_keysym=yes 48950bd37d32Smrg],[ 48960bd37d32Smrgcf_cv_xkb_keycode_to_keysym=no 48970bd37d32Smrg]) 48980bd37d32Smrg]) 48990bd37d32Smrg 49000bd37d32Smrgif test $cf_cv_xkb_keycode_to_keysym = yes 49010bd37d32Smrgthen 49020bd37d32Smrg AC_CHECK_FUNCS(XkbKeycodeToKeysym) 49030bd37d32Smrgfi 49040bd37d32Smrg]) 49050bd37d32Smrgdnl --------------------------------------------------------------------------- 49060bd37d32Smrgdnl CF_XKB_QUERY_EXTENSION version: 2 updated: 2012/09/28 20:23:46 49070bd37d32Smrgdnl ---------------------- 49080bd37d32Smrgdnl see ifdef in scrollbar.c - iron out here 49090bd37d32SmrgAC_DEFUN([CF_XKB_QUERY_EXTENSION],[ 49100bd37d32SmrgAC_CACHE_CHECK(if we can use XkbQueryExtension, cf_cv_xkb_query_extension,[ 49110bd37d32SmrgAC_TRY_COMPILE([ 49120bd37d32Smrg#include <X11/Xlib.h> 49130bd37d32Smrg#include <X11/extensions/XKB.h> 49140bd37d32Smrg#include <X11/XKBlib.h> 49150bd37d32Smrg],[ 49160bd37d32Smrg int xkbmajor = XkbMajorVersion; 49170bd37d32Smrg int xkbminor = XkbMinorVersion; 49180bd37d32Smrg int xkbopcode, xkbevent, xkberror; 49190bd37d32Smrg 49200bd37d32Smrg if (XkbLibraryVersion(&xkbmajor, &xkbminor) 49210bd37d32Smrg && XkbQueryExtension((Display *)0, 49220bd37d32Smrg &xkbopcode, 49230bd37d32Smrg &xkbevent, 49240bd37d32Smrg &xkberror, 49250bd37d32Smrg &xkbmajor, 49260bd37d32Smrg &xkbminor)) 49270bd37d32Smrg return 0; 49280bd37d32Smrg],[ 49290bd37d32Smrgcf_cv_xkb_query_extension=yes 49300bd37d32Smrg],[ 49310bd37d32Smrgcf_cv_xkb_query_extension=no 49320bd37d32Smrg]) 49330bd37d32Smrg]) 49340bd37d32Smrg 49350bd37d32Smrgif test $cf_cv_xkb_query_extension = yes 49360bd37d32Smrgthen 49370bd37d32Smrg AC_CHECK_FUNCS(XkbQueryExtension) 49380bd37d32Smrgfi 4939d522f475Smrg]) 4940d522f475Smrgdnl --------------------------------------------------------------------------- 49415104ee6eSmrgdnl CF_XOPEN_SOURCE version: 68 updated: 2024/11/09 18:07:29 4942d522f475Smrgdnl --------------- 4943d522f475Smrgdnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions, 4944d522f475Smrgdnl or adapt to the vendor's definitions to get equivalent functionality, 4945d522f475Smrgdnl without losing the common non-POSIX features. 4946d522f475Smrgdnl 4947d522f475Smrgdnl Parameters: 4948d522f475Smrgdnl $1 is the nominal value for _XOPEN_SOURCE 4949d522f475Smrgdnl $2 is the nominal value for _POSIX_C_SOURCE 495004b94745Smrgdnl 495104b94745Smrgdnl The default case prefers _XOPEN_SOURCE over _POSIX_C_SOURCE if the 495204b94745Smrgdnl implementation predefines it, because X/Open and most implementations agree 495304b94745Smrgdnl that the latter is a legacy or "aligned" value. 495404b94745Smrgdnl 495504b94745Smrgdnl Because _XOPEN_SOURCE is preferred, if defining _POSIX_C_SOURCE turns 495604b94745Smrgdnl that off, then refrain from setting _POSIX_C_SOURCE explicitly. 495704b94745Smrgdnl 495804b94745Smrgdnl References: 495904b94745Smrgdnl https://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html 496004b94745Smrgdnl https://docs.oracle.com/cd/E19253-01/816-5175/standards-5/index.html 496104b94745Smrgdnl https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html 4962d522f475SmrgAC_DEFUN([CF_XOPEN_SOURCE],[ 49630bd37d32SmrgAC_REQUIRE([AC_CANONICAL_HOST]) 4964f2e35a3aSmrgAC_REQUIRE([CF_POSIX_VISIBLE]) 4965f2e35a3aSmrg 4966f2e35a3aSmrgif test "$cf_cv_posix_visible" = no; then 4967d522f475Smrg 496820d2c4d2Smrgcf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) 496920d2c4d2Smrgcf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) 497020d2c4d2Smrgcf_xopen_source= 4971d522f475Smrg 4972f2e35a3aSmrgcase "$host_os" in 497301037d57Smrg(aix[[4-7]]*) 497420d2c4d2Smrg cf_xopen_source="-D_ALL_SOURCE" 497520d2c4d2Smrg ;; 497601037d57Smrg(darwin[[0-8]].*) 497720d2c4d2Smrg cf_xopen_source="-D_APPLE_C_SOURCE" 497820d2c4d2Smrg ;; 497901037d57Smrg(darwin*) 498020d2c4d2Smrg cf_xopen_source="-D_DARWIN_C_SOURCE" 49810bd37d32Smrg cf_XOPEN_SOURCE= 4982d522f475Smrg ;; 4983f2e35a3aSmrg(freebsd*|dragonfly*|midnightbsd*) 4984d522f475Smrg # 5.x headers associate 4985d522f475Smrg # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L 4986d522f475Smrg # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L 4987d522f475Smrg cf_POSIX_C_SOURCE=200112L 4988d522f475Smrg cf_XOPEN_SOURCE=600 498920d2c4d2Smrg cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" 499020d2c4d2Smrg ;; 499101037d57Smrg(hpux11*) 499220d2c4d2Smrg cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" 4993d522f475Smrg ;; 499401037d57Smrg(hpux*) 499520d2c4d2Smrg cf_xopen_source="-D_HPUX_SOURCE" 4996d522f475Smrg ;; 499701037d57Smrg(irix[[56]].*) 499820d2c4d2Smrg cf_xopen_source="-D_SGI_SOURCE" 49990bd37d32Smrg cf_XOPEN_SOURCE= 5000d522f475Smrg ;; 500104b94745Smrg(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc) 5002f2e35a3aSmrg CF_GNU_SOURCE($cf_XOPEN_SOURCE) 5003d522f475Smrg ;; 50045104ee6eSmrglinux*musl) 50055104ee6eSmrg cf_xopen_source="-D_BSD_SOURCE" 50065104ee6eSmrg ;; 500701037d57Smrg(minix*) 500801037d57Smrg cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... 500901037d57Smrg ;; 501001037d57Smrg(mirbsd*) 50110bd37d32Smrg # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types 50120bd37d32Smrg cf_XOPEN_SOURCE= 50130bd37d32Smrg CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 5014d522f475Smrg ;; 501501037d57Smrg(netbsd*) 50160bd37d32Smrg cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw 50170bd37d32Smrg ;; 5018ae137402Smrg(openbsd[[6-9]]*) 5019ae137402Smrg # OpenBSD 6.x has broken locale support, both compile-time and runtime. 5020ae137402Smrg # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html 5021ae137402Smrg # Abusing the conformance level is a workaround. 5022ae137402Smrg AC_MSG_WARN(this system does not provide usable locale support) 5023ae137402Smrg cf_xopen_source="-D_BSD_SOURCE" 5024ae137402Smrg cf_XOPEN_SOURCE=700 5025ae137402Smrg ;; 5026ae137402Smrg(openbsd[[4-5]]*) 50270bd37d32Smrg # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw 50280bd37d32Smrg cf_xopen_source="-D_BSD_SOURCE" 50290bd37d32Smrg cf_XOPEN_SOURCE=600 5030d522f475Smrg ;; 503101037d57Smrg(openbsd*) 5032d522f475Smrg # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw 5033d522f475Smrg ;; 503401037d57Smrg(osf[[45]]*) 503520d2c4d2Smrg cf_xopen_source="-D_OSF_SOURCE" 5036d522f475Smrg ;; 503701037d57Smrg(nto-qnx*) 503820d2c4d2Smrg cf_xopen_source="-D_QNX_SOURCE" 5039d522f475Smrg ;; 504001037d57Smrg(sco*) 5041d522f475Smrg # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer 5042d522f475Smrg ;; 504301037d57Smrg(solaris2.*) 504420d2c4d2Smrg cf_xopen_source="-D__EXTENSIONS__" 5045894e0ac8Smrg cf_cv_xopen_source=broken 5046d522f475Smrg ;; 504701037d57Smrg(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) 504801037d57Smrg cf_XOPEN_SOURCE= 504901037d57Smrg cf_POSIX_C_SOURCE= 505001037d57Smrg ;; 505101037d57Smrg(*) 50520bd37d32Smrg CF_TRY_XOPEN_SOURCE 50535307cd1aSmrg cf_save_xopen_cppflags="$CPPFLAGS" 5054d522f475Smrg CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 50555307cd1aSmrg # Some of these niche implementations use copy/paste, double-check... 505604b94745Smrg if test "$cf_cv_xopen_source" = no ; then 505704b94745Smrg CF_VERBOSE(checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE) 50585307cd1aSmrg AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[ 50595307cd1aSmrg AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable) 50605307cd1aSmrg CPPFLAGS="$cf_save_xopen_cppflags"]) 50615307cd1aSmrg fi 5062d522f475Smrg ;; 5063d522f475Smrgesac 506420d2c4d2Smrg 506520d2c4d2Smrgif test -n "$cf_xopen_source" ; then 5066a5ae21e4Smrg CF_APPEND_CFLAGS($cf_xopen_source,true) 506720d2c4d2Smrgfi 50680bd37d32Smrg 50690bd37d32Smrgdnl In anything but the default case, we may have system-specific setting 50700bd37d32Smrgdnl which is still not guaranteed to provide all of the entrypoints that 50710bd37d32Smrgdnl _XOPEN_SOURCE would yield. 50720bd37d32Smrgif test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then 50730bd37d32Smrg AC_MSG_CHECKING(if _XOPEN_SOURCE really is set) 50740bd37d32Smrg AC_TRY_COMPILE([#include <stdlib.h>],[ 50750bd37d32Smrg#ifndef _XOPEN_SOURCE 50765307cd1aSmrg#error _XOPEN_SOURCE is not defined 50770bd37d32Smrg#endif], 50780bd37d32Smrg [cf_XOPEN_SOURCE_set=yes], 50790bd37d32Smrg [cf_XOPEN_SOURCE_set=no]) 50800bd37d32Smrg AC_MSG_RESULT($cf_XOPEN_SOURCE_set) 5081f2e35a3aSmrg if test "$cf_XOPEN_SOURCE_set" = yes 50820bd37d32Smrg then 50830bd37d32Smrg AC_TRY_COMPILE([#include <stdlib.h>],[ 50840bd37d32Smrg#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE 50855307cd1aSmrg#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE 50860bd37d32Smrg#endif], 50870bd37d32Smrg [cf_XOPEN_SOURCE_set_ok=yes], 50880bd37d32Smrg [cf_XOPEN_SOURCE_set_ok=no]) 5089f2e35a3aSmrg if test "$cf_XOPEN_SOURCE_set_ok" = no 50900bd37d32Smrg then 50910bd37d32Smrg AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) 50920bd37d32Smrg fi 50930bd37d32Smrg else 50940bd37d32Smrg CF_TRY_XOPEN_SOURCE 50950bd37d32Smrg fi 50960bd37d32Smrgfi 5097f2e35a3aSmrgfi # cf_cv_posix_visible 5098d522f475Smrg]) 5099d522f475Smrgdnl --------------------------------------------------------------------------- 51005307cd1aSmrgdnl CF_X_ATHENA version: 25 updated: 2023/01/11 04:05:23 5101d522f475Smrgdnl ----------- 5102d522f475Smrgdnl Check for Xaw (Athena) libraries 5103d522f475Smrgdnl 5104d522f475Smrgdnl Sets $cf_x_athena according to the flavor of Xaw which is used. 5105d522f475SmrgAC_DEFUN([CF_X_ATHENA], 510620d2c4d2Smrg[ 51076879286fSmrgcf_x_athena=${cf_x_athena:-Xaw} 5108d522f475Smrg 5109d522f475SmrgAC_MSG_CHECKING(if you want to link with Xaw 3d library) 5110d522f475Smrgwithval= 5111d522f475SmrgAC_ARG_WITH(Xaw3d, 5112d522f475Smrg [ --with-Xaw3d link with Xaw 3d library]) 5113d522f475Smrgif test "$withval" = yes ; then 5114d522f475Smrg cf_x_athena=Xaw3d 5115d522f475Smrg AC_MSG_RESULT(yes) 5116d522f475Smrgelse 5117d522f475Smrg AC_MSG_RESULT(no) 5118d522f475Smrgfi 5119d522f475Smrg 512001037d57SmrgAC_MSG_CHECKING(if you want to link with Xaw 3d xft library) 512101037d57Smrgwithval= 512201037d57SmrgAC_ARG_WITH(Xaw3dxft, 512301037d57Smrg [ --with-Xaw3dxft link with Xaw 3d xft library]) 512401037d57Smrgif test "$withval" = yes ; then 512501037d57Smrg cf_x_athena=Xaw3dxft 512601037d57Smrg AC_MSG_RESULT(yes) 512701037d57Smrgelse 512801037d57Smrg AC_MSG_RESULT(no) 512901037d57Smrgfi 513001037d57Smrg 5131d522f475SmrgAC_MSG_CHECKING(if you want to link with neXT Athena library) 5132d522f475Smrgwithval= 5133d522f475SmrgAC_ARG_WITH(neXtaw, 5134d522f475Smrg [ --with-neXtaw link with neXT Athena library]) 5135d522f475Smrgif test "$withval" = yes ; then 5136d522f475Smrg cf_x_athena=neXtaw 5137d522f475Smrg AC_MSG_RESULT(yes) 5138d522f475Smrgelse 5139d522f475Smrg AC_MSG_RESULT(no) 5140d522f475Smrgfi 5141d522f475Smrg 5142d522f475SmrgAC_MSG_CHECKING(if you want to link with Athena-Plus library) 5143d522f475Smrgwithval= 5144d522f475SmrgAC_ARG_WITH(XawPlus, 5145d522f475Smrg [ --with-XawPlus link with Athena-Plus library]) 5146d522f475Smrgif test "$withval" = yes ; then 5147d522f475Smrg cf_x_athena=XawPlus 5148d522f475Smrg AC_MSG_RESULT(yes) 5149d522f475Smrgelse 5150d522f475Smrg AC_MSG_RESULT(no) 5151d522f475Smrgfi 5152d522f475Smrg 5153d522f475Smrgcf_x_athena_lib="" 5154d522f475Smrg 515520d2c4d2Smrgif test "$PKG_CONFIG" != none ; then 515620d2c4d2Smrg cf_athena_list= 515720d2c4d2Smrg test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" 515820d2c4d2Smrg for cf_athena_pkg in \ 515920d2c4d2Smrg $cf_athena_list \ 516020d2c4d2Smrg ${cf_x_athena} \ 516120d2c4d2Smrg ${cf_x_athena}-devel \ 516220d2c4d2Smrg lib${cf_x_athena} \ 516320d2c4d2Smrg lib${cf_x_athena}-devel 516420d2c4d2Smrg do 516520d2c4d2Smrg CF_TRY_PKG_CONFIG($cf_athena_pkg,[ 516620d2c4d2Smrg cf_x_athena_lib="$cf_pkgconfig_libs" 516720d2c4d2Smrg CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) 516820d2c4d2Smrg AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) 51696879286fSmrg 5170e0a2b6dfSmrg CF_TRIM_X_LIBS 5171e0a2b6dfSmrg 51726879286fSmrgAC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[ 51736879286fSmrgAC_TRY_LINK([ 51745307cd1aSmrg$ac_includes_default 51756879286fSmrg#include <X11/Xmu/CharSet.h> 51766879286fSmrg],[ 5177f2e35a3aSmrgint check = XmuCompareISOLatin1("big", "small"); 5178f2e35a3aSmrg(void)check; 51796879286fSmrg],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])]) 51806879286fSmrg 51816879286fSmrg if test "$cf_cv_xaw_compat" = no 51826879286fSmrg then 51836879286fSmrg # workaround for broken ".pc" files... 518401037d57Smrg case "$cf_x_athena_lib" in 518501037d57Smrg (*-lXmu*) 51866879286fSmrg ;; 518701037d57Smrg (*) 51886879286fSmrg CF_VERBOSE(work around broken package) 5189e0a2b6dfSmrg cf_save_xmu="$LIBS" 5190e0a2b6dfSmrg cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'` 5191e0a2b6dfSmrg CF_TRY_PKG_CONFIG(xmu,[ 5192e0a2b6dfSmrg LIBS="$cf_save_xmu" 5193e0a2b6dfSmrg CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs) 5194e0a2b6dfSmrg ],[ 5195e0a2b6dfSmrg CF_ADD_LIB_AFTER($cf_first_lib,-lXmu) 5196e0a2b6dfSmrg ]) 5197e0a2b6dfSmrg CF_TRIM_X_LIBS 51986879286fSmrg ;; 51996879286fSmrg esac 52006879286fSmrg fi 52016879286fSmrg 520220d2c4d2Smrg break]) 520320d2c4d2Smrg done 520420d2c4d2Smrgfi 520520d2c4d2Smrg 520620d2c4d2Smrgif test -z "$cf_x_athena_lib" ; then 520720d2c4d2Smrg CF_X_EXT 520820d2c4d2Smrg CF_X_TOOLKIT 520920d2c4d2Smrg CF_X_ATHENA_CPPFLAGS($cf_x_athena) 521020d2c4d2Smrg CF_X_ATHENA_LIBS($cf_x_athena) 521120d2c4d2Smrgfi 5212d522f475Smrg])dnl 5213d522f475Smrgdnl --------------------------------------------------------------------------- 5214f2e35a3aSmrgdnl CF_X_ATHENA_CPPFLAGS version: 9 updated: 2020/12/31 10:54:15 5215d522f475Smrgdnl -------------------- 5216d522f475Smrgdnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of 5217d522f475Smrgdnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. 5218d522f475SmrgAC_DEFUN([CF_X_ATHENA_CPPFLAGS], 5219d522f475Smrg[ 5220f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 522120d2c4d2Smrgcf_x_athena_root=ifelse([$1],,Xaw,[$1]) 522220d2c4d2Smrgcf_x_athena_inc="" 5223d522f475Smrg 5224d522f475Smrgfor cf_path in default \ 5225d522f475Smrg /usr/contrib/X11R6 \ 5226d522f475Smrg /usr/contrib/X11R5 \ 5227d522f475Smrg /usr/lib/X11R5 \ 5228d522f475Smrg /usr/local 5229d522f475Smrgdo 523020d2c4d2Smrg if test -z "$cf_x_athena_inc" ; then 5231f2e35a3aSmrg CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS]) 5232d522f475Smrg cf_test=X11/$cf_x_athena_root/SimpleMenu.h 5233f2e35a3aSmrg if test "$cf_path" != default ; then 5234f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include) 5235d522f475Smrg AC_MSG_CHECKING(for $cf_test in $cf_path) 5236d522f475Smrg else 5237d522f475Smrg AC_MSG_CHECKING(for $cf_test) 5238d522f475Smrg fi 5239d522f475Smrg AC_TRY_COMPILE([ 5240d522f475Smrg#include <X11/Intrinsic.h> 5241d522f475Smrg#include <$cf_test>],[], 5242d522f475Smrg [cf_result=yes], 5243d522f475Smrg [cf_result=no]) 5244d522f475Smrg AC_MSG_RESULT($cf_result) 5245f2e35a3aSmrg CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS]) 5246d522f475Smrg if test "$cf_result" = yes ; then 5247f2e35a3aSmrg test "$cf_path" = default && cf_x_athena_inc=default 5248f2e35a3aSmrg test "$cf_path" != default && cf_x_athena_inc="$cf_path/include" 5249d522f475Smrg break 5250d522f475Smrg fi 5251d522f475Smrg fi 5252d522f475Smrgdone 5253d522f475Smrg 525420d2c4d2Smrgif test -z "$cf_x_athena_inc" ; then 5255f2e35a3aSmrg AC_MSG_WARN([Unable to find Athena header files]) 525620d2c4d2Smrgelif test "$cf_x_athena_inc" != default ; then 5257f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc) 5258d522f475Smrgfi 5259d522f475Smrg]) 5260d522f475Smrgdnl --------------------------------------------------------------------------- 52615307cd1aSmrgdnl CF_X_ATHENA_LIBS version: 14 updated: 2023/01/11 04:05:23 5262d522f475Smrgdnl ---------------- 5263d522f475Smrgdnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of 5264d522f475Smrgdnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. 5265d522f475SmrgAC_DEFUN([CF_X_ATHENA_LIBS], 5266d522f475Smrg[AC_REQUIRE([CF_X_TOOLKIT]) 526720d2c4d2Smrgcf_x_athena_root=ifelse([$1],,Xaw,[$1]) 5268d522f475Smrgcf_x_athena_lib="" 5269d522f475Smrg 5270d522f475Smrgfor cf_path in default \ 5271d522f475Smrg /usr/contrib/X11R6 \ 5272d522f475Smrg /usr/contrib/X11R5 \ 5273d522f475Smrg /usr/lib/X11R5 \ 5274d522f475Smrg /usr/local 5275d522f475Smrgdo 5276d522f475Smrg for cf_lib in \ 52770bd37d32Smrg ${cf_x_athena_root} \ 52780bd37d32Smrg ${cf_x_athena_root}7 \ 52790bd37d32Smrg ${cf_x_athena_root}6 52800bd37d32Smrg do 52810bd37d32Smrg for cf_libs in \ 52820bd37d32Smrg "-l$cf_lib -lXmu" \ 52830bd37d32Smrg "-l$cf_lib -lXpm -lXmu" \ 52840bd37d32Smrg "-l${cf_lib}_s -lXmu_s" 5285d522f475Smrg do 5286f2e35a3aSmrg test -n "$cf_x_athena_lib" && break 5287f2e35a3aSmrg 5288f2e35a3aSmrg CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_LIBS]) 5289f2e35a3aSmrg cf_test=XawSimpleMenuAddGlobalActions 5290f2e35a3aSmrg test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs" 5291f2e35a3aSmrg CF_ADD_LIBS($cf_libs) 5292f2e35a3aSmrg AC_MSG_CHECKING(for $cf_test in $cf_libs) 5293f2e35a3aSmrg AC_TRY_LINK([ 52945307cd1aSmrg$ac_includes_default 5295a1f3da82Smrg#include <X11/Intrinsic.h> 5296a1f3da82Smrg#include <X11/$cf_x_athena_root/SimpleMenu.h> 5297a1f3da82Smrg],[ 5298a1f3da82Smrg$cf_test((XtAppContext) 0)], 5299f2e35a3aSmrg [cf_result=yes], 5300f2e35a3aSmrg [cf_result=no]) 5301f2e35a3aSmrg AC_MSG_RESULT($cf_result) 5302f2e35a3aSmrg CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_LIBS]) 5303f2e35a3aSmrg 5304f2e35a3aSmrg if test "$cf_result" = yes ; then 5305f2e35a3aSmrg cf_x_athena_lib="$cf_libs" 5306f2e35a3aSmrg break 5307d522f475Smrg fi 53080bd37d32Smrg done # cf_libs 53090bd37d32Smrg test -n "$cf_x_athena_lib" && break 53100bd37d32Smrg done # cf_lib 5311d522f475Smrgdone 5312d522f475Smrg 5313d522f475Smrgif test -z "$cf_x_athena_lib" ; then 5314d522f475Smrg AC_MSG_ERROR( 5315d522f475Smrg[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program]) 5316d522f475Smrgfi 5317d522f475Smrg 5318f2e35a3aSmrgCF_ADD_LIBS($cf_x_athena_lib) 5319d522f475SmrgCF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) 5320d522f475SmrgAC_DEFINE_UNQUOTED($cf_x_athena_LIBS) 5321d522f475Smrg]) 5322d522f475Smrgdnl --------------------------------------------------------------------------- 532320d2c4d2Smrgdnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05 532420d2c4d2Smrgdnl -------- 532520d2c4d2SmrgAC_DEFUN([CF_X_EXT],[ 532620d2c4d2SmrgCF_TRY_PKG_CONFIG(Xext,,[ 532720d2c4d2Smrg AC_CHECK_LIB(Xext,XextCreateExtension, 532820d2c4d2Smrg [CF_ADD_LIB(Xext)])]) 532920d2c4d2Smrg])dnl 533020d2c4d2Smrgdnl --------------------------------------------------------------------------- 5331f2e35a3aSmrgdnl CF_X_EXT_DOUBLE_BUFFER version: 1 updated: 2019/07/18 21:09:40 5332f2e35a3aSmrgdnl ---------------------- 5333f2e35a3aSmrgAC_DEFUN([CF_X_EXT_DOUBLE_BUFFER],[ 5334f2e35a3aSmrgAC_REQUIRE([CF_X_EXT]) 5335f2e35a3aSmrgAC_CHECK_HEADER(X11/extensions/Xdbe.h, 5336f2e35a3aSmrg AC_DEFINE(HAVE_X11_EXTENSIONS_XDBE_H,1,[Define to 1 if we have X11/extensions/Xdbe.h]) 5337f2e35a3aSmrg AC_CHECK_FUNC(XdbeSwapBuffers, 5338f2e35a3aSmrg [AC_DEFINE(HAVE_XDBESWAPBUFFERS,1,[Define to 1 if we have XdbeSwapBuffers]) 5339f2e35a3aSmrg cf_x_ext_double_buffer=yes])) 5340f2e35a3aSmrg])dnl 5341f2e35a3aSmrgdnl --------------------------------------------------------------------------- 53425104ee6eSmrgdnl CF_X_FONTCONFIG version: 8 updated: 2024/11/25 04:10:12 53436879286fSmrgdnl --------------- 53446879286fSmrgdnl Check for fontconfig library, a dependency of the X FreeType library. 53456879286fSmrgAC_DEFUN([CF_X_FONTCONFIG], 53466879286fSmrg[ 53476879286fSmrgAC_REQUIRE([CF_X_FREETYPE]) 53486879286fSmrg 5349e39b573cSmrgif test "$cf_cv_found_freetype" = yes ; then 53506879286fSmrgAC_CACHE_CHECK(for usable Xft/fontconfig package,cf_cv_xft_compat,[ 53516879286fSmrgAC_TRY_LINK([ 53525104ee6eSmrg#include <X11/Xlib.h> 53536879286fSmrg#include <X11/Xft/Xft.h> 53546879286fSmrg],[ 5355f2e35a3aSmrg XftPattern *pat = 0; 53566879286fSmrg XftPatternBuild(pat, 53576879286fSmrg XFT_FAMILY, XftTypeString, "mono", 53586879286fSmrg (void *) 0); 53596879286fSmrg],[cf_cv_xft_compat=yes],[cf_cv_xft_compat=no]) 53606879286fSmrg]) 53616879286fSmrg 53626879286fSmrgif test "$cf_cv_xft_compat" = no 53636879286fSmrgthen 53646879286fSmrg # workaround for broken ".pc" files used for Xft. 536501037d57Smrg case "$cf_cv_x_freetype_libs" in 536601037d57Smrg (*-lfontconfig*) 53676879286fSmrg ;; 536801037d57Smrg (*) 53696879286fSmrg CF_VERBOSE(work around broken package) 5370e0a2b6dfSmrg cf_save_fontconfig="$LIBS" 5371e0a2b6dfSmrg CF_TRY_PKG_CONFIG(fontconfig,[ 5372e0a2b6dfSmrg CF_ADD_CFLAGS($cf_pkgconfig_incs) 5373e0a2b6dfSmrg LIBS="$cf_save_fontconfig" 5374e0a2b6dfSmrg CF_ADD_LIB_AFTER(-lXft,$cf_pkgconfig_libs) 5375e0a2b6dfSmrg ],[ 5376e0a2b6dfSmrg CF_ADD_LIB_AFTER(-lXft,-lfontconfig) 5377e0a2b6dfSmrg ]) 53786879286fSmrg ;; 53796879286fSmrg esac 53806879286fSmrgfi 5381e39b573cSmrgfi 53826879286fSmrg])dnl 53836879286fSmrgdnl --------------------------------------------------------------------------- 5384f2e35a3aSmrgdnl CF_X_FREETYPE version: 28 updated: 2020/03/10 18:53:47 5385d522f475Smrgdnl ------------- 5386d522f475Smrgdnl Check for X FreeType headers and libraries (XFree86 4.x, etc). 5387d522f475Smrgdnl 5388d522f475Smrgdnl First check for the appropriate config program, since the developers for 5389d522f475Smrgdnl these libraries change their configuration (and config program) more or 5390d522f475Smrgdnl less randomly. If we cannot find the config program, do not bother trying 5391d522f475Smrgdnl to guess the latest variation of include/lib directories. 5392d522f475Smrgdnl 5393d522f475Smrgdnl If either or both of these configure-script options are not given, rely on 5394d522f475Smrgdnl the output of the config program to provide the cflags/libs options: 5395d522f475Smrgdnl --with-freetype-cflags 5396d522f475Smrgdnl --with-freetype-libs 5397d522f475SmrgAC_DEFUN([CF_X_FREETYPE], 5398d522f475Smrg[ 5399956cc18dSsnjAC_REQUIRE([CF_PKG_CONFIG]) 5400956cc18dSsnj 54010bd37d32Smrgcf_cv_x_freetype_incs=no 54020bd37d32Smrgcf_cv_x_freetype_libs=no 5403d522f475Smrgcf_extra_freetype_libs= 5404956cc18dSsnjFREETYPE_CONFIG=none 5405d522f475SmrgFREETYPE_PARAMS= 5406d522f475Smrg 54070bd37d32SmrgAC_MSG_CHECKING(for FreeType configuration script) 54080bd37d32SmrgAC_ARG_WITH(freetype-config, 54090bd37d32Smrg [ --with-freetype-config configure script to use for FreeType], 54100bd37d32Smrg [cf_cv_x_freetype_cfgs="$withval"], 54110bd37d32Smrg [cf_cv_x_freetype_cfgs=auto]) 54120bd37d32Smrgtest -z $cf_cv_x_freetype_cfgs && cf_cv_x_freetype_cfgs=auto 54130bd37d32Smrgtest $cf_cv_x_freetype_cfgs = no && cf_cv_x_freetype_cfgs=none 54140bd37d32SmrgAC_MSG_RESULT($cf_cv_x_freetype_cfgs) 54150bd37d32Smrg 54160bd37d32Smrgcase $cf_cv_x_freetype_cfgs in 541701037d57Smrg(none) 54180bd37d32Smrg AC_MSG_CHECKING(if you specified -D/-I options for FreeType) 54190bd37d32Smrg AC_ARG_WITH(freetype-cflags, 54200bd37d32Smrg [ --with-freetype-cflags -D/-I options for compiling with FreeType], 54210bd37d32Smrg [cf_cv_x_freetype_incs="$with_freetype_cflags"], 54220bd37d32Smrg [cf_cv_x_freetype_incs=no]) 54230bd37d32Smrg AC_MSG_RESULT($cf_cv_x_freetype_incs) 54240bd37d32Smrg 54250bd37d32Smrg AC_MSG_CHECKING(if you specified -L/-l options for FreeType) 54260bd37d32Smrg AC_ARG_WITH(freetype-libs, 54270bd37d32Smrg [ --with-freetype-libs -L/-l options to link FreeType], 54280bd37d32Smrg [cf_cv_x_freetype_libs="$with_freetype_libs"], 54290bd37d32Smrg [cf_cv_x_freetype_libs=no]) 54300bd37d32Smrg AC_MSG_RESULT($cf_cv_x_freetype_libs) 54310bd37d32Smrg ;; 543201037d57Smrg(auto) 54330bd37d32Smrg if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xft; then 54340bd37d32Smrg FREETYPE_CONFIG=$PKG_CONFIG 54350bd37d32Smrg FREETYPE_PARAMS=xft 54360bd37d32Smrg else 54370bd37d32Smrg AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, none) 54380bd37d32Smrg if test "$FREETYPE_CONFIG" != none; then 54390bd37d32Smrg FREETYPE_CONFIG=$FREETYPE_CONFIG 54400bd37d32Smrg cf_extra_freetype_libs="-lXft" 54410bd37d32Smrg else 54420bd37d32Smrg AC_PATH_PROG(FREETYPE_OLD_CONFIG, xft-config, none) 54430bd37d32Smrg if test "$FREETYPE_OLD_CONFIG" != none; then 54440bd37d32Smrg FREETYPE_CONFIG=$FREETYPE_OLD_CONFIG 54450bd37d32Smrg fi 54460bd37d32Smrg fi 54470bd37d32Smrg fi 54480bd37d32Smrg ;; 544901037d57Smrg(pkg*) 54500bd37d32Smrg if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xft; then 54510bd37d32Smrg FREETYPE_CONFIG=$cf_cv_x_freetype_cfgs 54520bd37d32Smrg FREETYPE_PARAMS=xft 54530bd37d32Smrg else 54540bd37d32Smrg AC_MSG_WARN(cannot find pkg-config for Xft) 54550bd37d32Smrg fi 54560bd37d32Smrg ;; 545701037d57Smrg(*) 54580bd37d32Smrg AC_PATH_PROG(FREETYPE_XFT_CONFIG, $cf_cv_x_freetype_cfgs, none) 5459d522f475Smrg if test "$FREETYPE_XFT_CONFIG" != none; then 5460d522f475Smrg FREETYPE_CONFIG=$FREETYPE_XFT_CONFIG 5461d522f475Smrg else 54620bd37d32Smrg AC_MSG_WARN(cannot find config script for Xft) 5463d522f475Smrg fi 54640bd37d32Smrg ;; 54650bd37d32Smrgesac 5466d522f475Smrg 5467956cc18dSsnjif test "$FREETYPE_CONFIG" != none ; then 54680bd37d32Smrg AC_MSG_CHECKING(for FreeType config) 54690bd37d32Smrg AC_MSG_RESULT($FREETYPE_CONFIG $FREETYPE_PARAMS) 5470d522f475Smrg 5471956cc18dSsnj if test "$cf_cv_x_freetype_incs" = no ; then 5472956cc18dSsnj AC_MSG_CHECKING(for $FREETYPE_CONFIG cflags) 5473956cc18dSsnj cf_cv_x_freetype_incs="`$FREETYPE_CONFIG $FREETYPE_PARAMS --cflags 2>/dev/null`" 5474956cc18dSsnj AC_MSG_RESULT($cf_cv_x_freetype_incs) 5475956cc18dSsnj fi 5476d522f475Smrg 5477956cc18dSsnj if test "$cf_cv_x_freetype_libs" = no ; then 5478956cc18dSsnj AC_MSG_CHECKING(for $FREETYPE_CONFIG libs) 5479956cc18dSsnj cf_cv_x_freetype_libs="$cf_extra_freetype_libs `$FREETYPE_CONFIG $FREETYPE_PARAMS --libs 2>/dev/null`" 5480956cc18dSsnj AC_MSG_RESULT($cf_cv_x_freetype_libs) 5481956cc18dSsnj fi 5482d522f475Smrgfi 5483d522f475Smrg 5484d522f475Smrgif test "$cf_cv_x_freetype_incs" = no ; then 5485d522f475Smrg cf_cv_x_freetype_incs= 5486d522f475Smrgfi 5487d522f475Smrg 5488d522f475Smrgif test "$cf_cv_x_freetype_libs" = no ; then 5489d522f475Smrg cf_cv_x_freetype_libs=-lXft 5490d522f475Smrgfi 5491d522f475Smrg 5492d522f475SmrgAC_MSG_CHECKING(if we can link with FreeType libraries) 5493d522f475Smrg 5494d522f475Smrgcf_save_LIBS="$LIBS" 5495d522f475Smrgcf_save_INCS="$CPPFLAGS" 5496d522f475Smrg 549720d2c4d2SmrgCF_ADD_LIBS($cf_cv_x_freetype_libs) 5498956cc18dSsnjCPPFLAGS="$CPPFLAGS $cf_cv_x_freetype_incs" 5499d522f475Smrg 5500d522f475SmrgAC_TRY_LINK([ 5501d522f475Smrg#include <X11/Xlib.h> 5502d522f475Smrg#include <X11/extensions/Xrender.h> 5503d522f475Smrg#include <X11/Xft/Xft.h>],[ 5504f2e35a3aSmrg XftPattern *pat = XftNameParse ("name"); (void)pat], 5505d522f475Smrg [cf_cv_found_freetype=yes], 5506d522f475Smrg [cf_cv_found_freetype=no]) 5507d522f475SmrgAC_MSG_RESULT($cf_cv_found_freetype) 5508d522f475Smrg 5509d522f475SmrgLIBS="$cf_save_LIBS" 5510d522f475SmrgCPPFLAGS="$cf_save_INCS" 5511d522f475Smrg 5512d522f475Smrgif test "$cf_cv_found_freetype" = yes ; then 551320d2c4d2Smrg CF_ADD_LIBS($cf_cv_x_freetype_libs) 5514d522f475Smrg CF_ADD_CFLAGS($cf_cv_x_freetype_incs) 55150bd37d32Smrg AC_DEFINE(XRENDERFONT,1,[Define to 1 if we can/should link with FreeType libraries]) 5516d522f475Smrg 5517d522f475SmrgAC_CHECK_FUNCS( \ 5518d522f475Smrg XftDrawCharSpec \ 5519d522f475Smrg XftDrawSetClip \ 5520d522f475Smrg XftDrawSetClipRectangles \ 5521d522f475Smrg) 5522d522f475Smrg 5523d522f475Smrgelse 5524d522f475Smrg AC_MSG_WARN(No libraries found for FreeType) 5525d522f475Smrg CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//` 5526d522f475Smrgfi 5527d522f475Smrg 5528d522f475Smrg# FIXME: revisit this if needed 5529d522f475SmrgAC_SUBST(HAVE_TYPE_FCCHAR32) 5530d522f475SmrgAC_SUBST(HAVE_TYPE_XFTCHARSPEC) 5531d522f475Smrg]) 5532d522f475Smrgdnl --------------------------------------------------------------------------- 55335307cd1aSmrgdnl CF_X_TOOLKIT version: 27 updated: 2023/01/11 04:05:23 5534d522f475Smrgdnl ------------ 5535d522f475Smrgdnl Check for X Toolkit libraries 5536d522f475SmrgAC_DEFUN([CF_X_TOOLKIT], 5537d522f475Smrg[ 5538d522f475SmrgAC_REQUIRE([AC_PATH_XTRA]) 5539d522f475SmrgAC_REQUIRE([CF_CHECK_CACHE]) 5540d522f475Smrg 5541f2e35a3aSmrg# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and 554201037d57Smrg# in some cases has installed dummy files in the former, other cases replaced 554301037d57Smrg# it with a link to the new location). This complicates the configure script. 554401037d57Smrg# Check for that pitfall, and recover using pkg-config 554501037d57Smrg# 554601037d57Smrg# If none of these are set, the configuration is almost certainly broken. 554701037d57Smrgif test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}" 554801037d57Smrgthen 554901037d57Smrg CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)]) 555001037d57Smrg CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)]) 555101037d57Smrg CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)]) 555201037d57Smrg CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)]) 5553f2e35a3aSmrgelse 5554f2e35a3aSmrg LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS" 555501037d57Smrgfi 555601037d57Smrg 5557d522f475Smrgcf_have_X_LIBS=no 5558d522f475Smrg 555920d2c4d2SmrgCF_TRY_PKG_CONFIG(xt,[ 556020d2c4d2Smrg 556101037d57Smrg case "x$LIBS" in 556201037d57Smrg (*-lX11*) 55636879286fSmrg ;; 556401037d57Smrg (*) 55656879286fSmrg# we have an "xt" package, but it may omit Xt's dependency on X11 55666879286fSmrgAC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[ 55676879286fSmrgAC_TRY_LINK([ 55685307cd1aSmrg$ac_includes_default 55696879286fSmrg#include <X11/Xlib.h> 55706879286fSmrg],[ 55716879286fSmrg int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); 55726879286fSmrg int rc2 = XClearWindow((Display*) 0, (Window) 0); 55736879286fSmrg int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); 55746879286fSmrg int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); 55756879286fSmrg],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])]) 55766879286fSmrg if test "$cf_cv_xt_x11_compat" = no 55776879286fSmrg then 55786879286fSmrg CF_VERBOSE(work around broken X11 dependency) 55796879286fSmrg # 2010/11/19 - good enough until a working Xt on Xcb is delivered. 55806879286fSmrg CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)]) 55816879286fSmrg fi 558220d2c4d2Smrg ;; 558320d2c4d2Smrg esac 558420d2c4d2Smrg 55856879286fSmrgAC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[ 55866879286fSmrgAC_TRY_LINK([ 55875307cd1aSmrg$ac_includes_default 55886879286fSmrg#include <X11/Shell.h> 5589f2e35a3aSmrg],[int num = IceConnectionNumber(0); (void) num 55906879286fSmrg],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])]) 55916879286fSmrg 55926879286fSmrg if test "$cf_cv_xt_ice_compat" = no 55936879286fSmrg then 55946879286fSmrg # workaround for broken ".pc" files used for X Toolkit. 559501037d57Smrg case "x$X_PRE_LIBS" in 559601037d57Smrg (*-lICE*) 559701037d57Smrg case "x$LIBS" in 559801037d57Smrg (*-lICE*) 55996879286fSmrg ;; 560001037d57Smrg (*) 56016879286fSmrg CF_VERBOSE(work around broken ICE dependency) 56026879286fSmrg CF_TRY_PKG_CONFIG(ice, 56036879286fSmrg [CF_TRY_PKG_CONFIG(sm)], 56046879286fSmrg [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)]) 56056879286fSmrg ;; 56066879286fSmrg esac 56076879286fSmrg ;; 56086879286fSmrg esac 56096879286fSmrg fi 56106879286fSmrg 561120d2c4d2Smrg cf_have_X_LIBS=yes 561220d2c4d2Smrg],[ 561320d2c4d2Smrg 561420d2c4d2Smrg LDFLAGS="$X_LIBS $LDFLAGS" 561520d2c4d2Smrg CF_CHECK_CFLAGS($X_CFLAGS) 5616d522f475Smrg 561720d2c4d2Smrg AC_CHECK_FUNC(XOpenDisplay,,[ 561820d2c4d2Smrg AC_CHECK_LIB(X11,XOpenDisplay, 5619f2e35a3aSmrg [CF_ADD_LIB(X11)])]) 5620d522f475Smrg 562120d2c4d2Smrg AC_CHECK_FUNC(XtAppInitialize,,[ 562220d2c4d2Smrg AC_CHECK_LIB(Xt, XtAppInitialize, 56230bd37d32Smrg [AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library]) 562420d2c4d2Smrg cf_have_X_LIBS=Xt 5625f2e35a3aSmrg LIBS="-lXt $LIBS"])]) 562620d2c4d2Smrg]) 5627d522f475Smrg 5628f2e35a3aSmrgif test "$cf_have_X_LIBS" = no ; then 5629d522f475Smrg AC_MSG_WARN( 5630d522f475Smrg[Unable to successfully link X Toolkit library (-lXt) with 5631d522f475Smrgtest program. You will have to check and add the proper libraries by hand 5632d522f475Smrgto makefile.]) 5633d522f475Smrgfi 5634d522f475Smrg])dnl 56350bd37d32Smrgdnl --------------------------------------------------------------------------- 5636ae137402Smrgdnl CF__GRANTPT_BODY version: 6 updated: 2021/06/07 17:39:17 56370bd37d32Smrgdnl ---------------- 56380bd37d32Smrgdnl Body for workability check of grantpt. 56390bd37d32Smrgdefine([CF__GRANTPT_BODY],[ 56400bd37d32Smrg int code = 0; 56410bd37d32Smrg int pty; 56420bd37d32Smrg int tty; 56430bd37d32Smrg char *slave; 56440bd37d32Smrg struct termios tio; 56450bd37d32Smrg 5646f2e35a3aSmrg (void)tio; 56470bd37d32Smrg signal(SIGALRM, my_timeout); 56480bd37d32Smrg 56490bd37d32Smrg if (alarm(2) == 9) 56500bd37d32Smrg failed(9); 56510bd37d32Smrg else if ((pty = posix_openpt(O_RDWR)) < 0) 56520bd37d32Smrg failed(1); 5653ae137402Smrg else if (grantpt(pty) < 0) 56540bd37d32Smrg failed(2); 5655ae137402Smrg else if (unlockpt(pty) < 0) 56560bd37d32Smrg failed(3); 56570bd37d32Smrg else if ((slave = ptsname(pty)) == 0) 56580bd37d32Smrg failed(4); 56590bd37d32Smrg#if (CONFTEST == 3) || defined(CONFTEST_isatty) 56600bd37d32Smrg else if (!isatty(pty)) 56610bd37d32Smrg failed(4); 56620bd37d32Smrg#endif 56630bd37d32Smrg#if CONFTEST >= 4 5664ae137402Smrg else if (tcgetattr(pty, &tio) < 0) 56650bd37d32Smrg failed(20); 5666ae137402Smrg else if (tcsetattr(pty, TCSAFLUSH, &tio) < 0) 56670bd37d32Smrg failed(21); 56680bd37d32Smrg#endif 56690bd37d32Smrg /* BSD posix_openpt does not treat pty as a terminal until slave is opened. 56700bd37d32Smrg * Linux does treat it that way. 56710bd37d32Smrg */ 56720bd37d32Smrg else if ((tty = open(slave, O_RDWR)) < 0) 56730bd37d32Smrg failed(5); 56740bd37d32Smrg#ifdef CONFTEST 56750bd37d32Smrg#ifdef I_PUSH 56760bd37d32Smrg#if (CONFTEST == 0) || defined(CONFTEST_ptem) 5677ae137402Smrg else if (ioctl(tty, I_PUSH, "ptem") < 0) 56780bd37d32Smrg failed(10); 56790bd37d32Smrg#endif 56800bd37d32Smrg#if (CONFTEST == 1) || defined(CONFTEST_ldterm) 5681ae137402Smrg else if (ioctl(tty, I_PUSH, "ldterm") < 0) 56820bd37d32Smrg failed(11); 56830bd37d32Smrg#endif 56840bd37d32Smrg#if (CONFTEST == 2) || defined(CONFTEST_ttcompat) 5685ae137402Smrg else if (ioctl(tty, I_PUSH, "ttcompat") < 0) 56860bd37d32Smrg failed(12); 56870bd37d32Smrg#endif 56880bd37d32Smrg#endif /* I_PUSH */ 56890bd37d32Smrg#if CONFTEST >= 5 5690ae137402Smrg else if (tcgetattr(tty, &tio) < 0) 56910bd37d32Smrg failed(30); 5692ae137402Smrg else if (tcsetattr(tty, TCSAFLUSH, &tio) < 0) 56930bd37d32Smrg failed(31); 56940bd37d32Smrg#endif 56950bd37d32Smrg#endif /* CONFTEST */ 5696ae137402Smrg (void) tty; 56970bd37d32Smrg ${cf_cv_main_return:-return}(code); 56980bd37d32Smrg]) 56990bd37d32Smrgdnl --------------------------------------------------------------------------- 5700f2e35a3aSmrgdnl CF__GRANTPT_HEAD version: 4 updated: 2020/03/10 18:53:47 57010bd37d32Smrgdnl ---------------- 57020bd37d32Smrgdnl Headers for workability check of grantpt. 57030bd37d32Smrgdefine([CF__GRANTPT_HEAD],[ 57040bd37d32Smrg#include <stdlib.h> 5705f2e35a3aSmrg#include <stdio.h> 57060bd37d32Smrg#include <termios.h> 57070bd37d32Smrg#include <unistd.h> 57080bd37d32Smrg#include <signal.h> 57090bd37d32Smrg#include <fcntl.h> 57100bd37d32Smrg#include <errno.h> 57110bd37d32Smrg 57120bd37d32Smrg#ifndef HAVE_POSIX_OPENPT 57130bd37d32Smrg#undef posix_openpt 57140bd37d32Smrg#define posix_openpt(mode) open("/dev/ptmx", mode) 57150bd37d32Smrg#endif 57160bd37d32Smrg 57170bd37d32Smrg#ifdef HAVE_STROPTS_H 57180bd37d32Smrg#include <stropts.h> 57190bd37d32Smrg#endif 57200bd37d32Smrg 57210bd37d32Smrgstatic void failed(int code) 57220bd37d32Smrg{ 57230bd37d32Smrg perror("conftest"); 57240bd37d32Smrg exit(code); 57250bd37d32Smrg} 57260bd37d32Smrg 57270bd37d32Smrgstatic void my_timeout(int sig) 57280bd37d32Smrg{ 5729f2e35a3aSmrg (void)sig; 57300bd37d32Smrg exit(99); 57310bd37d32Smrg} 57320bd37d32Smrg]) 57335307cd1aSmrgdnl --------------------------------------------------------------------------- 57345307cd1aSmrgdnl CF__XOPEN_SOURCE_BODY version: 2 updated: 2023/02/18 17:41:25 57355307cd1aSmrgdnl --------------------- 57365307cd1aSmrgdnl body of test when test-compiling for _XOPEN_SOURCE check 57375307cd1aSmrgdefine([CF__XOPEN_SOURCE_BODY], 57385307cd1aSmrg[ 57395307cd1aSmrg#ifndef _XOPEN_SOURCE 57405307cd1aSmrg#error _XOPEN_SOURCE is not defined 57415307cd1aSmrg#endif 57425307cd1aSmrg]) 57435307cd1aSmrgdnl --------------------------------------------------------------------------- 57445307cd1aSmrgdnl CF__XOPEN_SOURCE_HEAD version: 2 updated: 2023/02/18 17:41:25 57455307cd1aSmrgdnl --------------------- 57465307cd1aSmrgdnl headers to include when test-compiling for _XOPEN_SOURCE check 57475307cd1aSmrgdefine([CF__XOPEN_SOURCE_HEAD], 57485307cd1aSmrg[ 57495307cd1aSmrg$ac_includes_default 57505307cd1aSmrg]) 5751