aclocal.m4 revision f2e35a3a
1f2e35a3aSmrgdnl $XTermId: aclocal.m4,v 1.485 2021/01/26 23:45:12 tom Exp $ 2d522f475Smrgdnl 3d522f475Smrgdnl --------------------------------------------------------------------------- 4d522f475Smrgdnl 5f2e35a3aSmrgdnl Copyright 1997-2020,2021 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 --------------------------------------------------------------------------- 39f2e35a3aSmrgdnl AM_LANGINFO_CODESET version: 6 updated: 2021/01/01 16:53:59 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, 512e4f8982Smrg [AC_TRY_LINK([#include <langinfo.h>], 52f2e35a3aSmrg [char* cs = nl_langinfo(CODESET); (void)cs], 532e4f8982Smrg am_cv_langinfo_codeset=yes, 542e4f8982Smrg am_cv_langinfo_codeset=no) 552e4f8982Smrg ]) 56f2e35a3aSmrg if test "$am_cv_langinfo_codeset" = yes; then 572e4f8982Smrg AC_DEFINE(HAVE_LANGINFO_CODESET, 1, 582e4f8982Smrg [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) 592e4f8982Smrg fi 60d522f475Smrg])dnl 61d522f475Smrgdnl --------------------------------------------------------------------------- 6201037d57Smrgdnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49 63e39b573cSmrgdnl ------------------ 64e39b573cSmrgdnl Conditionally generate script according to whether we're using a given autoconf. 65e39b573cSmrgdnl 66e39b573cSmrgdnl $1 = version to compare against 67e39b573cSmrgdnl $2 = code to use if AC_ACVERSION is at least as high as $1. 68e39b573cSmrgdnl $3 = code to use if AC_ACVERSION is older than $1. 690bd37d32Smrgdefine([CF_ACVERSION_CHECK], 70e39b573cSmrg[ 7101037d57Smrgifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl 72e39b573cSmrgifdef([m4_version_compare], 73e39b573cSmrg[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])], 74e39b573cSmrg[CF_ACVERSION_COMPARE( 75e39b573cSmrgAC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])), 76e39b573cSmrgAC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl 77e39b573cSmrgdnl --------------------------------------------------------------------------- 780bd37d32Smrgdnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53 79e39b573cSmrgdnl -------------------- 80e39b573cSmrgdnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1, 81e39b573cSmrgdnl MAJOR2, MINOR2, TERNARY2, 82e39b573cSmrgdnl PRINTABLE2, not FOUND, FOUND) 830bd37d32Smrgdefine([CF_ACVERSION_COMPARE], 84e39b573cSmrg[ifelse(builtin([eval], [$2 < $5]), 1, 85e39b573cSmrg[ifelse([$8], , ,[$8])], 86e39b573cSmrg[ifelse([$9], , ,[$9])])])dnl 87e39b573cSmrgdnl --------------------------------------------------------------------------- 88f2e35a3aSmrgdnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15 89d522f475Smrgdnl ------------- 90d522f475Smrgdnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS 91f2e35a3aSmrgdnl $1 = flags to add 92f2e35a3aSmrgdnl $2 = if given makes this macro verbose. 93d522f475Smrgdnl 94d522f475Smrgdnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, 95d522f475Smrgdnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily 96d522f475Smrgdnl confused by the quotes (which require backslashes to keep them usable). 97d522f475SmrgAC_DEFUN([CF_ADD_CFLAGS], 98d522f475Smrg[ 99d522f475Smrgcf_fix_cppflags=no 100d522f475Smrgcf_new_cflags= 101d522f475Smrgcf_new_cppflags= 102d522f475Smrgcf_new_extra_cppflags= 103d522f475Smrg 104d522f475Smrgfor cf_add_cflags in $1 105d522f475Smrgdo 106f2e35a3aSmrgcase "$cf_fix_cppflags" in 10701037d57Smrg(no) 108f2e35a3aSmrg case "$cf_add_cflags" in 10901037d57Smrg (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) 110f2e35a3aSmrg case "$cf_add_cflags" in 11101037d57Smrg (-D*) 112f2e35a3aSmrg cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'` 113d522f475Smrg 11401037d57Smrg test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ 11520d2c4d2Smrg && test -z "${cf_tst_cflags}" \ 11620d2c4d2Smrg && cf_fix_cppflags=yes 117d522f475Smrg 118f2e35a3aSmrg if test "$cf_fix_cppflags" = yes ; then 119913cc679Smrg CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 120d522f475Smrg continue 121d522f475Smrg elif test "${cf_tst_cflags}" = "\"'" ; then 122913cc679Smrg CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 123d522f475Smrg continue 124d522f475Smrg fi 125d522f475Smrg ;; 126d522f475Smrg esac 127d522f475Smrg case "$CPPFLAGS" in 12801037d57Smrg (*$cf_add_cflags) 129d522f475Smrg ;; 13001037d57Smrg (*) 131f2e35a3aSmrg case "$cf_add_cflags" in 13201037d57Smrg (-D*) 13320d2c4d2Smrg cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` 13420d2c4d2Smrg CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) 13520d2c4d2Smrg ;; 13620d2c4d2Smrg esac 137913cc679Smrg CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags) 138d522f475Smrg ;; 139d522f475Smrg esac 140d522f475Smrg ;; 14101037d57Smrg (*) 142913cc679Smrg CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags) 143d522f475Smrg ;; 144d522f475Smrg esac 145d522f475Smrg ;; 14601037d57Smrg(yes) 147913cc679Smrg CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 148d522f475Smrg 149f2e35a3aSmrg cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'` 150d522f475Smrg 15101037d57Smrg test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ 15220d2c4d2Smrg && test -z "${cf_tst_cflags}" \ 15320d2c4d2Smrg && cf_fix_cppflags=no 154d522f475Smrg ;; 155d522f475Smrgesac 156d522f475Smrgdone 157d522f475Smrg 158d522f475Smrgif test -n "$cf_new_cflags" ; then 15920d2c4d2Smrg ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) 160913cc679Smrg CF_APPEND_TEXT(CFLAGS,$cf_new_cflags) 161d522f475Smrgfi 162d522f475Smrg 163d522f475Smrgif test -n "$cf_new_cppflags" ; then 16420d2c4d2Smrg ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) 165913cc679Smrg CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags) 166d522f475Smrgfi 167d522f475Smrg 168d522f475Smrgif test -n "$cf_new_extra_cppflags" ; then 16920d2c4d2Smrg ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) 170913cc679Smrg CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags) 171d522f475Smrgfi 172d522f475Smrg 173d522f475SmrgAC_SUBST(EXTRA_CPPFLAGS) 174d522f475Smrg 175d522f475Smrg])dnl 176d522f475Smrgdnl --------------------------------------------------------------------------- 17720d2c4d2Smrgdnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 17820d2c4d2Smrgdnl ---------- 17920d2c4d2Smrgdnl Add a library, used to enforce consistency. 18020d2c4d2Smrgdnl 18120d2c4d2Smrgdnl $1 = library to add, without the "-l" 18220d2c4d2Smrgdnl $2 = variable to update (default $LIBS) 18320d2c4d2SmrgAC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl 18420d2c4d2Smrgdnl --------------------------------------------------------------------------- 185f2e35a3aSmrgdnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33 18620d2c4d2Smrgdnl ----------- 18701037d57Smrgdnl Add one or more libraries, used to enforce consistency. Libraries are 18801037d57Smrgdnl prepended to an existing list, since their dependencies are assumed to 18901037d57Smrgdnl already exist in the list. 19020d2c4d2Smrgdnl 19120d2c4d2Smrgdnl $1 = libraries to add, with the "-l", etc. 19220d2c4d2Smrgdnl $2 = variable to update (default $LIBS) 19301037d57SmrgAC_DEFUN([CF_ADD_LIBS],[ 194f2e35a3aSmrgcf_add_libs="[$]ifelse($2,,LIBS,[$2])" 195f2e35a3aSmrg# reverse order 196f2e35a3aSmrgcf_add_0lib= 197f2e35a3aSmrgfor cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done 198f2e35a3aSmrg# filter duplicates 199f2e35a3aSmrgfor cf_add_1lib in $cf_add_0lib; do 200f2e35a3aSmrg for cf_add_2lib in $cf_add_libs; do 201f2e35a3aSmrg if test "x$cf_add_1lib" = "x$cf_add_2lib"; then 20201037d57Smrg cf_add_1lib= 20301037d57Smrg break 20401037d57Smrg fi 20501037d57Smrg done 206f2e35a3aSmrg test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" 20701037d57Smrgdone 20801037d57Smrgifelse($2,,LIBS,[$2])="$cf_add_libs" 20901037d57Smrg])dnl 21020d2c4d2Smrgdnl --------------------------------------------------------------------------- 211e0a2b6dfSmrgdnl CF_ADD_LIB_AFTER version: 3 updated: 2013/07/09 21:27:22 2126879286fSmrgdnl ---------------- 2136879286fSmrgdnl Add a given library after another, e.g., following the one it satisfies a 2146879286fSmrgdnl dependency for. 2156879286fSmrgdnl 2166879286fSmrgdnl $1 = the first library 2176879286fSmrgdnl $2 = its dependency 2186879286fSmrgAC_DEFUN([CF_ADD_LIB_AFTER],[ 2196879286fSmrgCF_VERBOSE(...before $LIBS) 220e0a2b6dfSmrgLIBS=`echo "$LIBS" | sed -e "s/[[ ]][[ ]]*/ /g" -e "s%$1 %$1 $2 %" -e 's% % %g'` 2216879286fSmrgCF_VERBOSE(...after $LIBS) 2226879286fSmrg])dnl 2236879286fSmrgdnl --------------------------------------------------------------------------- 224913cc679Smrgdnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55 225913cc679Smrgdnl -------------- 226913cc679Smrgdnl use this macro for appending text without introducing an extra blank at 227913cc679Smrgdnl the beginning 228913cc679Smrgdefine([CF_APPEND_TEXT], 229913cc679Smrg[ 230913cc679Smrg test -n "[$]$1" && $1="[$]$1 " 231913cc679Smrg $1="[$]{$1}$2" 232913cc679Smrg])dnl 233913cc679Smrgdnl --------------------------------------------------------------------------- 234d522f475Smrgdnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 235d522f475Smrgdnl -------------- 236d522f475Smrgdnl Allow user to disable a normally-on option. 237d522f475SmrgAC_DEFUN([CF_ARG_DISABLE], 238d522f475Smrg[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl 239d522f475Smrgdnl --------------------------------------------------------------------------- 240d522f475Smrgdnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31 241d522f475Smrgdnl ------------- 242d522f475Smrgdnl Allow user to enable a normally-off option. 243d522f475SmrgAC_DEFUN([CF_ARG_ENABLE], 244d522f475Smrg[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl 245d522f475Smrgdnl --------------------------------------------------------------------------- 2462e4f8982Smrgdnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14 247d522f475Smrgdnl ------------- 248d522f475Smrgdnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus 249d522f475Smrgdnl values. 250d522f475Smrgdnl 251d522f475Smrgdnl Parameters: 252d522f475Smrgdnl $1 = option name 253d522f475Smrgdnl $2 = help-string 254d522f475Smrgdnl $3 = action to perform if option is not default 255d522f475Smrgdnl $4 = action if perform if option is default 256d522f475Smrgdnl $5 = default option value (either 'yes' or 'no') 257d522f475SmrgAC_DEFUN([CF_ARG_OPTION], 25820d2c4d2Smrg[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes) 2592e4f8982Smrg if test "$enableval" != "$5" ; then 26020d2c4d2Smrgifelse([$3],,[ :]dnl 26120d2c4d2Smrg,[ $3]) ifelse([$4],,,[ 2622e4f8982Smrg else 2632e4f8982Smrg $4]) 2642e4f8982Smrg fi],[enableval=$5 ifelse([$4],,,[ 2652e4f8982Smrg $4 266d522f475Smrg])dnl 2672e4f8982Smrg])])dnl 268d522f475Smrgdnl --------------------------------------------------------------------------- 269f2e35a3aSmrgdnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20 2700bd37d32Smrgdnl --------------- 2710bd37d32Smrgdnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content 272913cc679Smrgdnl into CC. This will not help with broken scripts that wrap the compiler 273913cc679Smrgdnl with options, but eliminates a more common category of user confusion. 274913cc679Smrgdnl 275913cc679Smrgdnl In particular, it addresses the problem of being able to run the C 276913cc679Smrgdnl preprocessor in a consistent manner. 2772e4f8982Smrgdnl 2782e4f8982Smrgdnl Caveat: this also disallows blanks in the pathname for the compiler, but 2792e4f8982Smrgdnl the nuisance of having inconsistent settings for compiler and preprocessor 2802e4f8982Smrgdnl outweighs that limitation. 2810bd37d32SmrgAC_DEFUN([CF_CC_ENV_FLAGS], 2820bd37d32Smrg[ 2830bd37d32Smrg# This should have been defined by AC_PROG_CC 284f2e35a3aSmrg: "${CC:=cc}" 285f2e35a3aSmrg 286f2e35a3aSmrgAC_MSG_CHECKING(\$CFLAGS variable) 287f2e35a3aSmrgcase "x$CFLAGS" in 288f2e35a3aSmrg(*-[[IUD]]*) 289f2e35a3aSmrg AC_MSG_RESULT(broken) 290f2e35a3aSmrg AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options) 291f2e35a3aSmrg cf_flags="$CFLAGS" 292f2e35a3aSmrg CFLAGS= 293f2e35a3aSmrg for cf_arg in $cf_flags 294f2e35a3aSmrg do 295f2e35a3aSmrg CF_ADD_CFLAGS($cf_arg) 296f2e35a3aSmrg done 297f2e35a3aSmrg ;; 298f2e35a3aSmrg(*) 299f2e35a3aSmrg AC_MSG_RESULT(ok) 300f2e35a3aSmrg ;; 301f2e35a3aSmrgesac 3020bd37d32Smrg 3030bd37d32SmrgAC_MSG_CHECKING(\$CC variable) 30401037d57Smrgcase "$CC" in 3052e4f8982Smrg(*[[\ \ ]]-*) 3060bd37d32Smrg AC_MSG_RESULT(broken) 307f2e35a3aSmrg AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options) 3080bd37d32Smrg # humor him... 309913cc679Smrg cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'` 310f2e35a3aSmrg cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'` 311913cc679Smrg CC="$cf_prog" 312913cc679Smrg for cf_arg in $cf_flags 313913cc679Smrg do 314913cc679Smrg case "x$cf_arg" in 315913cc679Smrg (x-[[IUDfgOW]]*) 316913cc679Smrg CF_ADD_CFLAGS($cf_arg) 317913cc679Smrg ;; 318913cc679Smrg (*) 319913cc679Smrg CC="$CC $cf_arg" 320913cc679Smrg ;; 321913cc679Smrg esac 322913cc679Smrg done 3232e4f8982Smrg CF_VERBOSE(resulting CC: '$CC') 3242e4f8982Smrg CF_VERBOSE(resulting CFLAGS: '$CFLAGS') 3252e4f8982Smrg CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS') 3260bd37d32Smrg ;; 32701037d57Smrg(*) 3280bd37d32Smrg AC_MSG_RESULT(ok) 3290bd37d32Smrg ;; 3300bd37d32Smrgesac 3310bd37d32Smrg])dnl 3320bd37d32Smrgdnl --------------------------------------------------------------------------- 333f2e35a3aSmrgdnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15 334d522f475Smrgdnl -------------- 335d522f475Smrgdnl Check if we're accidentally using a cache from a different machine. 336d522f475Smrgdnl Derive the system name, as a check for reusing the autoconf cache. 337d522f475Smrgdnl 338d522f475Smrgdnl If we've packaged config.guess and config.sub, run that (since it does a 339d522f475Smrgdnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow 340d522f475Smrgdnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM 341d522f475Smrgdnl which is useful in cross-compiles. 342d522f475Smrgdnl 343d522f475Smrgdnl Note: we would use $ac_config_sub, but that is one of the places where 344d522f475Smrgdnl autoconf 2.5x broke compatibility with autoconf 2.13 345d522f475SmrgAC_DEFUN([CF_CHECK_CACHE], 346d522f475Smrg[ 347f2e35a3aSmrgif test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then 348d522f475Smrg ifelse([$1],,[AC_CANONICAL_HOST],[$1]) 349d522f475Smrg system_name="$host_os" 350d522f475Smrgelse 351d522f475Smrg system_name="`(uname -s -r) 2>/dev/null`" 352d522f475Smrg if test -z "$system_name" ; then 353d522f475Smrg system_name="`(hostname) 2>/dev/null`" 354d522f475Smrg fi 355d522f475Smrgfi 3560bd37d32Smrgtest -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.]) 357d522f475SmrgAC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) 358d522f475Smrg 359d522f475Smrgtest -z "$system_name" && system_name="$cf_cv_system_name" 360d522f475Smrgtest -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) 361d522f475Smrg 362d522f475Smrgif test ".$system_name" != ".$cf_cv_system_name" ; then 363d522f475Smrg AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) 364d522f475Smrg AC_MSG_ERROR("Please remove config.cache and try again.") 365d522f475Smrgfi 366d522f475Smrg])dnl 367d522f475Smrgdnl --------------------------------------------------------------------------- 368f2e35a3aSmrgdnl CF_CHECK_CFLAGS version: 4 updated: 2021/01/02 19:22:58 369d522f475Smrgdnl --------------- 370d522f475Smrgdnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from 371d522f475Smrgdnl a build-configuration such as imake. These have the pitfall that they 372d522f475Smrgdnl often contain compiler-specific options which we cannot use, mixed with 373d522f475Smrgdnl preprocessor options that we usually can. 374d522f475SmrgAC_DEFUN([CF_CHECK_CFLAGS], 375d522f475Smrg[ 376d522f475SmrgCF_VERBOSE(checking additions to CFLAGS) 377d522f475Smrgcf_check_cflags="$CFLAGS" 378d522f475Smrgcf_check_cppflags="$CPPFLAGS" 379d522f475SmrgCF_ADD_CFLAGS($1,yes) 38001037d57Smrgif test "x$cf_check_cflags" != "x$CFLAGS" ; then 381d522f475SmrgAC_TRY_LINK([#include <stdio.h>],[printf("Hello world");],, 382d522f475Smrg [CF_VERBOSE(test-compile failed. Undoing change to \$CFLAGS) 38301037d57Smrg if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then 384d522f475Smrg CF_VERBOSE(but keeping change to \$CPPFLAGS) 385d522f475Smrg fi 386f2e35a3aSmrg CFLAGS="$cf_check_cflags"]) 387d522f475Smrgfi 388d522f475Smrg])dnl 389d522f475Smrgdnl --------------------------------------------------------------------------- 390f2e35a3aSmrgdnl CF_CHECK_ERRNO version: 13 updated: 2020/03/10 18:53:47 391d522f475Smrgdnl -------------- 392d522f475Smrgdnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g., 393d522f475Smrgdnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it 394d522f475Smrgdnl ourselves. 395d522f475Smrgdnl 396d522f475Smrgdnl $1 = the name to check 3972eaa94a1Schristosdnl $2 = the assumed type 398d522f475SmrgAC_DEFUN([CF_CHECK_ERRNO], 399d522f475Smrg[ 400d522f475SmrgAC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[ 4012e4f8982Smrg AC_TRY_COMPILE([ 402d522f475Smrg#ifdef HAVE_STDLIB_H 403d522f475Smrg#include <stdlib.h> 404d522f475Smrg#endif 405d522f475Smrg#include <stdio.h> 406d522f475Smrg#include <sys/types.h> 407d522f475Smrg#include <errno.h> ], 408f2e35a3aSmrg ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1; (void)x, 4092e4f8982Smrg [cf_cv_dcl_$1=yes], 4102e4f8982Smrg [cf_cv_dcl_$1=no]) 411d522f475Smrg]) 412d522f475Smrg 413d522f475Smrgif test "$cf_cv_dcl_$1" = no ; then 4142e4f8982Smrg CF_UPPER(cf_result,decl_$1) 4152e4f8982Smrg AC_DEFINE_UNQUOTED($cf_result) 416d522f475Smrgfi 417d522f475Smrg 418d522f475Smrg# It's possible (for near-UNIX clones) that the data doesn't exist 41920d2c4d2SmrgCF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2])) 420d522f475Smrg])dnl 421d522f475Smrgdnl --------------------------------------------------------------------------- 4222e4f8982Smrgdnl CF_CHECK_EXTERN_DATA version: 4 updated: 2015/04/18 08:56:57 423d522f475Smrgdnl -------------------- 424d522f475Smrgdnl Check for existence of external data in the current set of libraries. If 425d522f475Smrgdnl we can modify it, it's real enough. 426d522f475Smrgdnl $1 = the name to check 427d522f475Smrgdnl $2 = its type 428d522f475SmrgAC_DEFUN([CF_CHECK_EXTERN_DATA], 429d522f475Smrg[ 430d522f475SmrgAC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[ 4312e4f8982Smrg AC_TRY_LINK([ 432d522f475Smrg#undef $1 433d522f475Smrgextern $2 $1; 434d522f475Smrg], 4352e4f8982Smrg [$1 = 2], 4362e4f8982Smrg [cf_cv_have_$1=yes], 4372e4f8982Smrg [cf_cv_have_$1=no]) 438d522f475Smrg]) 439d522f475Smrg 440d522f475Smrgif test "$cf_cv_have_$1" = yes ; then 4412e4f8982Smrg CF_UPPER(cf_result,have_$1) 4422e4f8982Smrg AC_DEFINE_UNQUOTED($cf_result) 443d522f475Smrgfi 444d522f475Smrg 445d522f475Smrg])dnl 446d522f475Smrgdnl --------------------------------------------------------------------------- 447f2e35a3aSmrgdnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04 4480bd37d32Smrgdnl ----------------- 4490bd37d32Smrgdnl Check if the given compiler is really clang. clang's C driver defines 4500bd37d32Smrgdnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does 4510bd37d32Smrgdnl not ignore some gcc options. 4520bd37d32Smrgdnl 4530bd37d32Smrgdnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to 4540bd37d32Smrgdnl ensure that it is not mistaken for gcc/g++. It is normally invoked from 4550bd37d32Smrgdnl the wrappers for gcc and g++ warnings. 4560bd37d32Smrgdnl 4570bd37d32Smrgdnl $1 = GCC (default) or GXX 458e0a2b6dfSmrgdnl $2 = CLANG_COMPILER (default) 4590bd37d32Smrgdnl $3 = CFLAGS (default) or CXXFLAGS 4600bd37d32SmrgAC_DEFUN([CF_CLANG_COMPILER],[ 4610bd37d32Smrgifelse([$2],,CLANG_COMPILER,[$2])=no 4620bd37d32Smrg 4630bd37d32Smrgif test "$ifelse([$1],,[$1],GCC)" = yes ; then 4640bd37d32Smrg AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler) 4650bd37d32Smrg cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" 4660bd37d32Smrg AC_TRY_COMPILE([],[ 4670bd37d32Smrg#ifdef __clang__ 4680bd37d32Smrg#else 4690bd37d32Smrgmake an error 4700bd37d32Smrg#endif 4710bd37d32Smrg],[ifelse([$2],,CLANG_COMPILER,[$2])=yes 4720bd37d32Smrg],[]) 4730bd37d32Smrg ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" 4740bd37d32Smrg AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2])) 4750bd37d32Smrgfi 476f2e35a3aSmrg 477f2e35a3aSmrgCLANG_VERSION=none 478f2e35a3aSmrg 479f2e35a3aSmrgif test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then 480f2e35a3aSmrg case "$CC" in 481f2e35a3aSmrg (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]]) 482f2e35a3aSmrg AC_MSG_WARN(replacing broken compiler alias $CC) 483f2e35a3aSmrg CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`" 484f2e35a3aSmrg CC=clang 485f2e35a3aSmrg ;; 486f2e35a3aSmrg esac 487f2e35a3aSmrg 488f2e35a3aSmrg AC_MSG_CHECKING(version of $CC) 489f2e35a3aSmrg 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.]].*//'`" 490f2e35a3aSmrg test -z "$CLANG_VERSION" && CLANG_VERSION=unknown 491f2e35a3aSmrg AC_MSG_RESULT($CLANG_VERSION) 492f2e35a3aSmrg 493f2e35a3aSmrg for cf_clang_opt in \ 494f2e35a3aSmrg -Qunused-arguments \ 495f2e35a3aSmrg -Wno-error=implicit-function-declaration 496f2e35a3aSmrg do 497f2e35a3aSmrg AC_MSG_CHECKING(if option $cf_clang_opt works) 498f2e35a3aSmrg cf_save_CFLAGS="$CFLAGS" 499f2e35a3aSmrg CFLAGS="$CFLAGS $cf_clang_opt" 500f2e35a3aSmrg AC_TRY_LINK([ 501f2e35a3aSmrg #include <stdio.h>],[ 502f2e35a3aSmrg printf("hello!\\n");],[ 503f2e35a3aSmrg cf_clang_optok=yes],[ 504f2e35a3aSmrg cf_clang_optok=no]) 505f2e35a3aSmrg AC_MSG_RESULT($cf_clang_optok) 506f2e35a3aSmrg CFLAGS="$cf_save_CFLAGS" 507f2e35a3aSmrg if test "$cf_clang_optok" = yes; then 508f2e35a3aSmrg CF_VERBOSE(adding option $cf_clang_opt) 509f2e35a3aSmrg CF_APPEND_TEXT(CFLAGS,$cf_clang_opt) 510f2e35a3aSmrg fi 511f2e35a3aSmrg done 512f2e35a3aSmrgfi 5130bd37d32Smrg]) 5140bd37d32Smrgdnl --------------------------------------------------------------------------- 515f2e35a3aSmrgdnl CF_CONST_X_STRING version: 6 updated: 2021/01/01 13:31:04 516f2e35a3aSmrgdnl ----------------- 517f2e35a3aSmrgdnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most 518f2e35a3aSmrgdnl character-strings. 519f2e35a3aSmrgdnl 520f2e35a3aSmrgdnl It is ambiguous because the specification accommodated the pre-ANSI 521f2e35a3aSmrgdnl compilers bundled by more than one vendor in lieu of providing a standard C 522f2e35a3aSmrgdnl compiler other than by costly add-ons. Because of this, the specification 523f2e35a3aSmrgdnl did not take into account the use of const for telling the compiler that 524f2e35a3aSmrgdnl string literals would be in readonly memory. 525f2e35a3aSmrgdnl 526f2e35a3aSmrgdnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to 527f2e35a3aSmrgdnl let the compiler decide how to represent Xt's strings which were #define'd. 528f2e35a3aSmrgdnl That does not solve the problem of using the block of Xt's strings which 529f2e35a3aSmrgdnl are compiled into the library (and is less efficient than one might want). 530f2e35a3aSmrgdnl 531f2e35a3aSmrgdnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both 532f2e35a3aSmrgdnl when compiling the library and compiling using the library, to tell the 533f2e35a3aSmrgdnl compiler that String is const. 534f2e35a3aSmrgAC_DEFUN([CF_CONST_X_STRING], 535f2e35a3aSmrg[ 536f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 537f2e35a3aSmrg 538f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING]) 539f2e35a3aSmrg 540f2e35a3aSmrgAC_TRY_COMPILE( 541f2e35a3aSmrg[ 542f2e35a3aSmrg#include <stdlib.h> 543f2e35a3aSmrg#include <X11/Intrinsic.h> 544f2e35a3aSmrg], 545f2e35a3aSmrg[String foo = malloc(1); (void)foo],[ 546f2e35a3aSmrg 547f2e35a3aSmrgAC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[ 548f2e35a3aSmrg AC_TRY_COMPILE( 549f2e35a3aSmrg [ 550f2e35a3aSmrg#define _CONST_X_STRING /* X11R7.8 (perhaps) */ 551f2e35a3aSmrg#undef XTSTRINGDEFINES /* X11R5 and later */ 552f2e35a3aSmrg#include <stdlib.h> 553f2e35a3aSmrg#include <X11/Intrinsic.h> 554f2e35a3aSmrg ],[String foo = malloc(1); *foo = 0],[ 555f2e35a3aSmrg cf_cv_const_x_string=no 556f2e35a3aSmrg ],[ 557f2e35a3aSmrg cf_cv_const_x_string=yes 558f2e35a3aSmrg ]) 559f2e35a3aSmrg]) 560f2e35a3aSmrg 561f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING]) 562f2e35a3aSmrg 563f2e35a3aSmrgcase "$cf_cv_const_x_string" in 564f2e35a3aSmrg(no) 565f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES) 566f2e35a3aSmrg ;; 567f2e35a3aSmrg(*) 568f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING) 569f2e35a3aSmrg ;; 570f2e35a3aSmrgesac 571f2e35a3aSmrg 572f2e35a3aSmrg]) 573f2e35a3aSmrg])dnl 574f2e35a3aSmrgdnl --------------------------------------------------------------------------- 575e39b573cSmrgdnl CF_DISABLE_DESKTOP version: 2 updated: 2011/04/22 05:17:37 576e39b573cSmrgdnl ------------------ 577e39b573cSmrgdnl Handle a configure option "--disable-desktop", which sets a shell 578e39b573cSmrgdnl variable $desktop_utils to a "#" if the feature is not wanted, or to an 579e39b573cSmrgdnl empty string if enabled. The variable is used to substitute in front of 580e39b573cSmrgdnl corresponding makefile-rules. 581e39b573cSmrgdnl 582e39b573cSmrgdnl It also tells the configure script to substitute the environment variable 583e39b573cSmrgdnl $DESKTOP_FLAGS, which can be used by external scripts to customize the 584e39b573cSmrgdnl invocation of desktop-file-util. 585e39b573cSmrgdnl 586e39b573cSmrgdnl $1 = program name 587e39b573cSmrgAC_DEFUN([CF_DISABLE_DESKTOP],[ 588e39b573cSmrg# Comment-out the install-desktop rule if the desktop-utils are not found. 589e39b573cSmrgAC_MSG_CHECKING(if you want to install desktop files) 590e39b573cSmrgCF_ARG_OPTION(desktop, 591e39b573cSmrg [ --disable-desktop disable install of $1 desktop files], 592e39b573cSmrg [enable_desktop=$enableval], 593e39b573cSmrg [enable_desktop=$enableval],yes) 594e39b573cSmrgAC_MSG_RESULT($enable_desktop) 595e39b573cSmrg 596e39b573cSmrgdesktop_utils= 597e39b573cSmrgif test "$enable_desktop" = yes ; then 598e39b573cSmrgAC_CHECK_PROG(desktop_utils,desktop-file-install,yes,no) 599e39b573cSmrgfi 600e39b573cSmrg 601e39b573cSmrgtest "$desktop_utils" = yes && desktop_utils= || desktop_utils="#" 602e39b573cSmrgAC_SUBST(DESKTOP_FLAGS) 603e39b573cSmrg]) 604e39b573cSmrgdnl --------------------------------------------------------------------------- 6052e4f8982Smrgdnl CF_DISABLE_ECHO version: 13 updated: 2015/04/18 08:56:57 606d522f475Smrgdnl --------------- 607d522f475Smrgdnl You can always use "make -n" to see the actual options, but it's hard to 608d522f475Smrgdnl pick out/analyze warning messages when the compile-line is long. 609d522f475Smrgdnl 610d522f475Smrgdnl Sets: 611d522f475Smrgdnl ECHO_LT - symbol to control if libtool is verbose 612d522f475Smrgdnl ECHO_LD - symbol to prefix "cc -o" lines 613d522f475Smrgdnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o) 614d522f475Smrgdnl SHOW_CC - symbol to put before explicit "cc -c" lines 615d522f475Smrgdnl ECHO_CC - symbol to put before any "cc" line 616d522f475Smrgdnl 617d522f475SmrgAC_DEFUN([CF_DISABLE_ECHO],[ 618d522f475SmrgAC_MSG_CHECKING(if you want to see long compiling messages) 619d522f475SmrgCF_ARG_DISABLE(echo, 6200bd37d32Smrg [ --disable-echo do not display "compiling" commands], 621d522f475Smrg [ 6222e4f8982Smrg ECHO_LT='--silent' 6232e4f8982Smrg ECHO_LD='@echo linking [$]@;' 6242e4f8982Smrg RULE_CC='@echo compiling [$]<' 6252e4f8982Smrg SHOW_CC='@echo compiling [$]@' 6262e4f8982Smrg ECHO_CC='@' 627d522f475Smrg],[ 6282e4f8982Smrg ECHO_LT='' 6292e4f8982Smrg ECHO_LD='' 6302e4f8982Smrg RULE_CC='' 6312e4f8982Smrg SHOW_CC='' 6322e4f8982Smrg ECHO_CC='' 633d522f475Smrg]) 634d522f475SmrgAC_MSG_RESULT($enableval) 635d522f475SmrgAC_SUBST(ECHO_LT) 636d522f475SmrgAC_SUBST(ECHO_LD) 637d522f475SmrgAC_SUBST(RULE_CC) 638d522f475SmrgAC_SUBST(SHOW_CC) 639d522f475SmrgAC_SUBST(ECHO_CC) 640d522f475Smrg])dnl 641d522f475Smrgdnl --------------------------------------------------------------------------- 642f2e35a3aSmrgdnl CF_DISABLE_LEAKS version: 8 updated: 2021/01/05 20:05:09 6430bd37d32Smrgdnl ---------------- 6440bd37d32Smrgdnl Combine no-leak checks with the libraries or tools that are used for the 6450bd37d32Smrgdnl checks. 6460bd37d32SmrgAC_DEFUN([CF_DISABLE_LEAKS],[ 6470bd37d32Smrg 6480bd37d32SmrgAC_REQUIRE([CF_WITH_DMALLOC]) 6490bd37d32SmrgAC_REQUIRE([CF_WITH_DBMALLOC]) 6500bd37d32SmrgAC_REQUIRE([CF_WITH_VALGRIND]) 6510bd37d32Smrg 6520bd37d32SmrgAC_MSG_CHECKING(if you want to perform memory-leak testing) 6530bd37d32SmrgAC_ARG_ENABLE(leaks, 6540bd37d32Smrg [ --disable-leaks test: free permanent memory, analyze leaks], 655f2e35a3aSmrg [enable_leaks=no], 656f2e35a3aSmrg [enable_leaks=yes]) 657f2e35a3aSmrgdnl TODO - drop with_no_leaks 658f2e35a3aSmrgif test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi 6590bd37d32SmrgAC_MSG_RESULT($with_no_leaks) 6600bd37d32Smrg 661f2e35a3aSmrgif test "$enable_leaks" = no ; then 6620bd37d32Smrg AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) 6630bd37d32Smrg AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) 6640bd37d32Smrgfi 6650bd37d32Smrg])dnl 6660bd37d32Smrgdnl --------------------------------------------------------------------------- 667f2e35a3aSmrgdnl CF_DISABLE_RPATH_HACK version: 3 updated: 2021/01/05 20:14:44 66820d2c4d2Smrgdnl --------------------- 66920d2c4d2Smrgdnl The rpath-hack makes it simpler to build programs, particularly with the 67020d2c4d2Smrgdnl *BSD ports which may have essential libraries in unusual places. But it 67120d2c4d2Smrgdnl can interfere with building an executable for the base system. Use this 67220d2c4d2Smrgdnl option in that case. 67320d2c4d2SmrgAC_DEFUN([CF_DISABLE_RPATH_HACK], 67420d2c4d2Smrg[ 675a1f3da82SmrgAC_MSG_CHECKING(if rpath-hack should be disabled) 67620d2c4d2SmrgCF_ARG_DISABLE(rpath-hack, 67720d2c4d2Smrg [ --disable-rpath-hack don't add rpath options for additional libraries], 678f2e35a3aSmrg [enable_rpath_hack=no], 679f2e35a3aSmrg [enable_rpath_hack=yes]) 680f2e35a3aSmrgdnl TODO - drop cf_disable_rpath_hack 681f2e35a3aSmrgif test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi 68220d2c4d2SmrgAC_MSG_RESULT($cf_disable_rpath_hack) 683f2e35a3aSmrg 684f2e35a3aSmrgif test "$enable_rpath_hack" = yes ; then 68520d2c4d2Smrg CF_RPATH_HACK 68620d2c4d2Smrgfi 68720d2c4d2Smrg]) 68820d2c4d2Smrgdnl --------------------------------------------------------------------------- 689f2e35a3aSmrgdnl CF_ENABLE_NARROWPROTO version: 6 updated: 2020/12/31 18:40:20 690d522f475Smrgdnl --------------------- 691d522f475Smrgdnl If this is not set properly, Xaw's scrollbars will not work. 692d522f475Smrgdnl The so-called "modular" configuration for X.org omits most of the 693d522f475Smrgdnl configure checks that would be needed to provide compatibility with 694d522f475Smrgdnl older X builds. This one breaks things noticeably. 695d522f475SmrgAC_DEFUN([CF_ENABLE_NARROWPROTO], 696d522f475Smrg[ 697d522f475SmrgAC_MSG_CHECKING(if you want narrow prototypes for X libraries) 698d522f475Smrg 69901037d57Smrgcase `$ac_config_guess` in 700f2e35a3aSmrg(*freebsd*|*gnu*|*irix5*|*irix6*|*netbsd*|*openbsd*|*qnx*|*sco*|*sgi*) 701d522f475Smrg cf_default_narrowproto=yes 702d522f475Smrg ;; 70301037d57Smrg(*) 704d522f475Smrg cf_default_narrowproto=no 705d522f475Smrg ;; 706d522f475Smrgesac 707d522f475Smrg 708d522f475SmrgCF_ARG_OPTION(narrowproto, 709d522f475Smrg [ --enable-narrowproto enable narrow prototypes for X libraries], 710d522f475Smrg [enable_narrowproto=$enableval], 711d522f475Smrg [enable_narrowproto=$cf_default_narrowproto], 712d522f475Smrg [$cf_default_narrowproto]) 713d522f475SmrgAC_MSG_RESULT($enable_narrowproto) 714d522f475Smrg]) 715d522f475Smrgdnl --------------------------------------------------------------------------- 716f2e35a3aSmrgdnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50 717f2e35a3aSmrgdnl ------------------ 718f2e35a3aSmrgdnl Configure-option to enable gcc warnings 719f2e35a3aSmrgdnl 720f2e35a3aSmrgdnl $1 = extra options to add, if supported 721f2e35a3aSmrgdnl $2 = option for checking attributes. By default, this is done when 722f2e35a3aSmrgdnl warnings are enabled. For other values: 723f2e35a3aSmrgdnl yes: always do this, e.g., to use in generated library-headers 724f2e35a3aSmrgdnl no: never do this 725f2e35a3aSmrgAC_DEFUN([CF_ENABLE_WARNINGS],[ 726f2e35a3aSmrgif test "$GCC" = yes || test "$GXX" = yes 727f2e35a3aSmrgthen 728f2e35a3aSmrgCF_FIX_WARNINGS(CFLAGS) 729f2e35a3aSmrgCF_FIX_WARNINGS(CPPFLAGS) 730f2e35a3aSmrgCF_FIX_WARNINGS(LDFLAGS) 731f2e35a3aSmrgAC_MSG_CHECKING(if you want to turn on gcc warnings) 732f2e35a3aSmrgCF_ARG_ENABLE(warnings, 733f2e35a3aSmrg [ --enable-warnings test: turn on gcc compiler warnings], 734f2e35a3aSmrg [enable_warnings=yes], 735f2e35a3aSmrg [enable_warnings=no]) 736f2e35a3aSmrgAC_MSG_RESULT($enable_warnings) 737f2e35a3aSmrgif test "$enable_warnings" = "yes" 738f2e35a3aSmrgthen 739f2e35a3aSmrg ifelse($2,,[CF_GCC_ATTRIBUTES]) 740f2e35a3aSmrg CF_GCC_WARNINGS($1) 741f2e35a3aSmrgfi 742f2e35a3aSmrgifelse($2,yes,[CF_GCC_ATTRIBUTES]) 743f2e35a3aSmrgfi 744f2e35a3aSmrg])dnl 745f2e35a3aSmrgdnl --------------------------------------------------------------------------- 746d522f475Smrgdnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39 747d522f475Smrgdnl -------- 748d522f475Smrgdnl Check if 'errno' is declared in <errno.h> 749d522f475SmrgAC_DEFUN([CF_ERRNO], 750d522f475Smrg[ 751d522f475SmrgCF_CHECK_ERRNO(errno) 752d522f475Smrg])dnl 753d522f475Smrgdnl --------------------------------------------------------------------------- 754f2e35a3aSmrgdnl CF_FIX_WARNINGS version: 3 updated: 2020/12/31 18:40:20 755f2e35a3aSmrgdnl --------------- 756f2e35a3aSmrgdnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc. Any of gcc's 757f2e35a3aSmrgdnl "-Werror" flags can interfere with configure-checks. Those go into 758f2e35a3aSmrgdnl EXTRA_CFLAGS. 759f2e35a3aSmrgdnl 760f2e35a3aSmrgdnl $1 = variable name to repair 761f2e35a3aSmrgdefine([CF_FIX_WARNINGS],[ 762f2e35a3aSmrgif test "$GCC" = yes || test "$GXX" = yes 763f2e35a3aSmrgthen 764f2e35a3aSmrg case [$]$1 in 765f2e35a3aSmrg (*-Werror=*) 766f2e35a3aSmrg CF_VERBOSE(repairing $1: [$]$1) 767f2e35a3aSmrg cf_temp_flags= 768f2e35a3aSmrg for cf_temp_scan in [$]$1 769f2e35a3aSmrg do 770f2e35a3aSmrg case "x$cf_temp_scan" in 771f2e35a3aSmrg (x-Werror=*) 772f2e35a3aSmrg CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan) 773f2e35a3aSmrg ;; 774f2e35a3aSmrg (*) 775f2e35a3aSmrg CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) 776f2e35a3aSmrg ;; 777f2e35a3aSmrg esac 778f2e35a3aSmrg done 779f2e35a3aSmrg $1="$cf_temp_flags" 780f2e35a3aSmrg CF_VERBOSE(... fixed [$]$1) 781f2e35a3aSmrg CF_VERBOSE(... extra $EXTRA_CFLAGS) 782f2e35a3aSmrg ;; 783f2e35a3aSmrg esac 784f2e35a3aSmrgfi 785f2e35a3aSmrgAC_SUBST(EXTRA_CFLAGS) 786f2e35a3aSmrg])dnl 787f2e35a3aSmrgdnl --------------------------------------------------------------------------- 788f2e35a3aSmrgdnl CF_FUNC_GRANTPT version: 15 updated: 2020/12/31 18:40:20 789d522f475Smrgdnl --------------- 7900bd37d32Smrgdnl Check for grantpt versus openpty, as well as functions that "should" be 7910bd37d32Smrgdnl available if grantpt is available. 7920bd37d32SmrgAC_DEFUN([CF_FUNC_GRANTPT],[ 7930bd37d32Smrg 7940bd37d32SmrgAC_CHECK_HEADERS( \ 7950bd37d32Smrgstropts.h \ 7960bd37d32Smrg) 7970bd37d32Smrg 7980bd37d32Smrgcf_func_grantpt="grantpt ptsname" 799f2e35a3aSmrgcf_prefer_openpt=no 80001037d57Smrgcase $host_os in 80101037d57Smrg(darwin[[0-9]].*) 8020bd37d32Smrg ;; 803f2e35a3aSmrg(openbsd[[0-9]].*) 804f2e35a3aSmrg # The POSIX entrypoints exist, but have never worked. 805f2e35a3aSmrg ;; 806f2e35a3aSmrg(linux*) 807f2e35a3aSmrg cf_func_grantpt="$cf_func_grantpt posix_openpt" 808f2e35a3aSmrg cf_prefer_openpt=yes 809f2e35a3aSmrg ;; 81001037d57Smrg(*) 8110bd37d32Smrg cf_func_grantpt="$cf_func_grantpt posix_openpt" 8120bd37d32Smrg ;; 8130bd37d32Smrgesac 8140bd37d32Smrg 8150bd37d32SmrgAC_CHECK_FUNCS($cf_func_grantpt) 8160bd37d32Smrg 8170bd37d32Smrgcf_grantpt_opts= 8180bd37d32Smrgif test "x$ac_cv_func_grantpt" = "xyes" ; then 8190bd37d32Smrg AC_MSG_CHECKING(if grantpt really works) 8200bd37d32Smrg AC_TRY_LINK(CF__GRANTPT_HEAD,CF__GRANTPT_BODY,[ 8210bd37d32Smrg AC_TRY_RUN(CF__GRANTPT_HEAD 8220bd37d32Smrgint main(void) 8230bd37d32Smrg{ 8240bd37d32SmrgCF__GRANTPT_BODY 825d522f475Smrg} 8260bd37d32Smrg, 8270bd37d32Smrg,ac_cv_func_grantpt=no 8280bd37d32Smrg,ac_cv_func_grantpt=maybe) 8290bd37d32Smrg ],ac_cv_func_grantpt=no) 8300bd37d32Smrg AC_MSG_RESULT($ac_cv_func_grantpt) 8310bd37d32Smrg 8320bd37d32Smrg if test "x$ac_cv_func_grantpt" != "xno" ; then 8330bd37d32Smrg 8340bd37d32Smrg if test "x$ac_cv_func_grantpt" = "xyes" ; then 8350bd37d32Smrg AC_MSG_CHECKING(for pty features) 8360bd37d32Smrgdnl if we have no stropts.h, skip the checks for streams modules 8370bd37d32Smrg if test "x$ac_cv_header_stropts_h" = xyes 8380bd37d32Smrg then 8390bd37d32Smrg cf_pty_this=0 8400bd37d32Smrg else 8410bd37d32Smrg cf_pty_this=3 8420bd37d32Smrg fi 8430bd37d32Smrg 8440bd37d32Smrg cf_pty_defines= 8450bd37d32Smrg while test $cf_pty_this != 6 8460bd37d32Smrg do 8470bd37d32Smrg 8480bd37d32Smrg cf_pty_feature= 849f2e35a3aSmrg cf_pty_next="`expr $cf_pty_this + 1`" 8500bd37d32Smrg CF_MSG_LOG(pty feature test $cf_pty_next:5) 8510bd37d32Smrg AC_TRY_RUN(#define CONFTEST $cf_pty_this 8520bd37d32Smrg$cf_pty_defines 8530bd37d32SmrgCF__GRANTPT_HEAD 8540bd37d32Smrgint main(void) 8550bd37d32Smrg{ 8560bd37d32SmrgCF__GRANTPT_BODY 8570bd37d32Smrg} 8580bd37d32Smrg, 8590bd37d32Smrg[ 86001037d57Smrg case $cf_pty_next in 86101037d57Smrg (1) # - streams 8620bd37d32Smrg cf_pty_feature=ptem 8630bd37d32Smrg ;; 86401037d57Smrg (2) # - streams 8650bd37d32Smrg cf_pty_feature=ldterm 8660bd37d32Smrg ;; 86701037d57Smrg (3) # - streams 8680bd37d32Smrg cf_pty_feature=ttcompat 8690bd37d32Smrg ;; 87001037d57Smrg (4) 8710bd37d32Smrg cf_pty_feature=pty_isatty 8720bd37d32Smrg ;; 87301037d57Smrg (5) 8740bd37d32Smrg cf_pty_feature=pty_tcsetattr 8750bd37d32Smrg ;; 87601037d57Smrg (6) 8770bd37d32Smrg cf_pty_feature=tty_tcsetattr 8780bd37d32Smrg ;; 8790bd37d32Smrg esac 8800bd37d32Smrg],[ 88101037d57Smrg case $cf_pty_next in 88201037d57Smrg (1|2|3) 8830bd37d32Smrg CF_MSG_LOG(skipping remaining streams features $cf_pty_this..2) 8840bd37d32Smrg cf_pty_next=3 8850bd37d32Smrg ;; 8860bd37d32Smrg esac 8870bd37d32Smrg]) 8880bd37d32Smrg if test -n "$cf_pty_feature" 8890bd37d32Smrg then 8900bd37d32Smrg cf_pty_defines="$cf_pty_defines 8910bd37d32Smrg#define CONFTEST_$cf_pty_feature 1 8920bd37d32Smrg" 8930bd37d32Smrg cf_grantpt_opts="$cf_grantpt_opts $cf_pty_feature" 8940bd37d32Smrg fi 8950bd37d32Smrg 8960bd37d32Smrg cf_pty_this=$cf_pty_next 8970bd37d32Smrg done 8980bd37d32Smrg AC_MSG_RESULT($cf_grantpt_opts) 8990bd37d32Smrg cf_grantpt_opts=`echo "$cf_grantpt_opts" | sed -e 's/ isatty//'` 9000bd37d32Smrg fi 901d522f475Smrg fi 9020bd37d32Smrgfi 9030bd37d32Smrg 9040bd37d32Smrgdnl If we found grantpt, but no features, e.g., for streams or if we are not 9050bd37d32Smrgdnl able to use tcsetattr, then give openpty a try. In particular, Darwin 10.7 9060bd37d32Smrgdnl has a more functional openpty than posix_openpt. 9070bd37d32Smrgdnl 9080bd37d32Smrgdnl There is no configure run-test for openpty, since older implementations do 9090bd37d32Smrgdnl not always run properly as a non-root user. For that reason, we also allow 9100bd37d32Smrgdnl the configure script to suppress this check entirely with $disable_openpty. 911f2e35a3aSmrgif test "x$cf_prefer_posix_openpt" = "xyes" && test "x$ac_cv_func_posix_openpt" = "xyes" ; then 912f2e35a3aSmrg CF_VERBOSE(prefer posix_openpt over openpty) 913f2e35a3aSmrgelif test "x$disable_openpty" != "xyes" || test -z "$cf_grantpt_opts" ; then 9140bd37d32Smrg AC_CHECK_LIB(util, openpty, [cf_have_openpty=yes],[cf_have_openpty=no]) 9150bd37d32Smrg if test "$cf_have_openpty" = yes ; then 9160bd37d32Smrg ac_cv_func_grantpt=no 9170bd37d32Smrg LIBS="-lutil $LIBS" 9180bd37d32Smrg AC_DEFINE(HAVE_OPENPTY,1,[Define to 1 if you have the openpty function]) 9190bd37d32Smrg AC_CHECK_HEADERS( \ 9200bd37d32Smrg util.h \ 9210bd37d32Smrg libutil.h \ 9220bd37d32Smrg pty.h \ 9230bd37d32Smrg ) 9240bd37d32Smrg fi 9250bd37d32Smrgfi 9260bd37d32Smrg 9270bd37d32Smrgdnl If we did not settle on using openpty, fill in the definitions for grantpt. 9280bd37d32Smrgif test "x$ac_cv_func_grantpt" != xno 9290bd37d32Smrgthen 9300bd37d32Smrg CF_VERBOSE(will rely upon grantpt) 9310bd37d32Smrg AC_DEFINE(HAVE_WORKING_GRANTPT,1,[Define to 1 if the grantpt function seems to work]) 9320bd37d32Smrg for cf_feature in $cf_grantpt_opts 9330bd37d32Smrg do 9340bd37d32Smrg cf_feature=`echo "$cf_feature" | sed -e 's/ //g'` 9350bd37d32Smrg CF_UPPER(cf_FEATURE,$cf_feature) 9360bd37d32Smrg AC_DEFINE_UNQUOTED(HAVE_GRANTPT_$cf_FEATURE) 9370bd37d32Smrg done 9380bd37d32Smrgelif test "x$cf_have_openpty" = xno 9390bd37d32Smrgthen 9400bd37d32Smrg CF_VERBOSE(will rely upon BSD-pseudoterminals) 9410bd37d32Smrgelse 9420bd37d32Smrg CF_VERBOSE(will rely upon openpty) 9430bd37d32Smrgfi 9440bd37d32Smrg])dnl 945d522f475Smrgdnl --------------------------------------------------------------------------- 946f2e35a3aSmrgdnl CF_FUNC_TGETENT version: 23 updated: 2020/06/02 20:17:00 947d522f475Smrgdnl --------------- 948d522f475Smrgdnl Check for tgetent function in termcap library. If we cannot find this, 949d522f475Smrgdnl we'll use the $LINES and $COLUMNS environment variables to pass screen 950d522f475Smrgdnl size information to subprocesses. (We cannot use terminfo's compatibility 951d522f475Smrgdnl function, since it cannot provide the termcap-format data). 952d522f475Smrgdnl 953d522f475Smrgdnl If the --disable-full-tgetent option is given, we'll settle for the first 954d522f475Smrgdnl tgetent function we find. Since the search list in that case does not 955d522f475Smrgdnl include the termcap library, that allows us to default to terminfo. 956d522f475SmrgAC_DEFUN([CF_FUNC_TGETENT], 957d522f475Smrg[ 958d522f475Smrg# compute a reasonable value for $TERM to give tgetent(), since we may be 959d522f475Smrg# running in 'screen', which sets $TERMCAP to a specific entry that is not 960d522f475Smrg# necessarily in /etc/termcap - unsetenv is not portable, so we cannot simply 961d522f475Smrg# discard $TERMCAP. 962d522f475Smrgcf_TERMVAR=vt100 963e39b573cSmrgif test -n "$TERMCAP" 964e39b573cSmrgthen 965e39b573cSmrg cf_TERMCAP=`echo "$TERMCAP" | tr '\n' ' ' | sed -e 's/^..|//' -e 's/|.*//'` 96601037d57Smrg case "$cf_TERMCAP" in 96701037d57Smrg (screen*.*) 968e39b573cSmrg ;; 96901037d57Smrg (*) 970e39b573cSmrg cf_TERMVAR="$cf_TERMCAP" 971e39b573cSmrg ;; 972e39b573cSmrg esac 973e39b573cSmrgfi 974d522f475Smrgtest -z "$cf_TERMVAR" && cf_TERMVAR=vt100 975d522f475Smrg 976f2e35a3aSmrg# BSD termcap used no header file 977f2e35a3aSmrg# SVr4 provided termcap prototypes as a legacy feature in term.h 978f2e35a3aSmrg# GNU termcap provided termcap prototypes in termcap.h 979f2e35a3aSmrg# ncurses provides termcap prototypes in both term.h and termcap.h 980f2e35a3aSmrg# 981f2e35a3aSmrg# The terminfo-based termcap interfaces do not provide a full tgetent (i.e., do 982f2e35a3aSmrg# not return the text of the termcap entry in the buffer), but as a special 983f2e35a3aSmrg# case, FreeBSD provides ncurses' termcap.h with a modified termcap reader that 984f2e35a3aSmrg# returns the termcap text. 985f2e35a3aSmrgAC_CHECK_HEADERS(termcap.h) 986f2e35a3aSmrg 987d522f475SmrgAC_MSG_CHECKING(if we want full tgetent function) 988d522f475SmrgCF_ARG_DISABLE(full-tgetent, 989d522f475Smrg [ --disable-full-tgetent disable check for full tgetent function], 990d522f475Smrg cf_full_tgetent=no, 991d522f475Smrg cf_full_tgetent=yes,yes) 992d522f475SmrgAC_MSG_RESULT($cf_full_tgetent) 993d522f475Smrg 994d522f475Smrgif test "$cf_full_tgetent" = yes ; then 995d522f475Smrg cf_test_message="full tgetent" 996d522f475Smrgelse 997d522f475Smrg cf_test_message="tgetent" 998d522f475Smrgfi 999d522f475Smrg 1000d522f475SmrgAC_CACHE_CHECK(for $cf_test_message function,cf_cv_lib_tgetent,[ 1001d522f475Smrgcf_save_LIBS="$LIBS" 1002d522f475Smrgcf_cv_lib_tgetent=no 1003d522f475Smrgif test "$cf_full_tgetent" = yes ; then 10040bd37d32Smrg cf_TERMLIB="otermcap termcap termlib ncurses curses" 1005d522f475Smrg cf_TERMTST="buffer[[0]] == 0" 1006d522f475Smrgelse 1007d522f475Smrg cf_TERMLIB="termlib ncurses curses" 1008d522f475Smrg cf_TERMTST="0" 1009d522f475Smrgfi 1010d522f475Smrgfor cf_termlib in '' $cf_TERMLIB ; do 1011d522f475Smrg LIBS="$cf_save_LIBS" 10122e4f8982Smrg test -n "$cf_termlib" && { CF_ADD_LIB($cf_termlib) } 1013d522f475Smrg AC_TRY_RUN([ 1014f2e35a3aSmrg#ifdef HAVE_TERMCAP_H 1015f2e35a3aSmrg#include <termcap.h> 1016f2e35a3aSmrg#endif 1017d522f475Smrg/* terminfo implementations ignore the buffer argument, making it useless for 1018d522f475Smrg * the xterm application, which uses this information to make a new TERMCAP 1019d522f475Smrg * environment variable. 1020d522f475Smrg */ 1021f2e35a3aSmrgint main(void) 1022d522f475Smrg{ 1023d522f475Smrg char buffer[1024]; 1024d522f475Smrg buffer[0] = 0; 1025d522f475Smrg tgetent(buffer, "$cf_TERMVAR"); 1026d522f475Smrg ${cf_cv_main_return:-return} ($cf_TERMTST); }], 1027d522f475Smrg [echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&AC_FD_CC 1028d522f475Smrg if test -n "$cf_termlib" ; then 1029d522f475Smrg cf_cv_lib_tgetent="-l$cf_termlib" 1030d522f475Smrg else 1031d522f475Smrg cf_cv_lib_tgetent=yes 1032d522f475Smrg fi 1033d522f475Smrg break], 1034d522f475Smrg [echo "no, there is no termcap/tgetent in $cf_termlib" 1>&AC_FD_CC], 1035d522f475Smrg [echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&AC_FD_CC]) 1036d522f475Smrgdone 1037d522f475SmrgLIBS="$cf_save_LIBS" 1038d522f475Smrg]) 1039d522f475Smrg 1040d522f475Smrg# If we found a working tgetent(), set LIBS and check for termcap.h. 1041d522f475Smrg# (LIBS cannot be set inside AC_CACHE_CHECK; the commands there should 1042d522f475Smrg# not have side effects other than setting the cache variable, because 1043d522f475Smrg# they are not executed when a cached value exists.) 1044e39b573cSmrgif test "x$cf_cv_lib_tgetent" != xno ; then 10452e4f8982Smrg test "x$cf_cv_lib_tgetent" != xyes && { CF_ADD_LIBS($cf_cv_lib_tgetent) } 10460bd37d32Smrg AC_DEFINE(USE_TERMCAP,1,[Define 1 to indicate that working tgetent is found]) 104720d2c4d2Smrg if test "$cf_full_tgetent" = no ; then 104820d2c4d2Smrg AC_TRY_COMPILE([ 1049d522f475Smrg#include <termcap.h>],[ 1050d522f475Smrg#ifdef NCURSES_VERSION 1051d522f475Smrgmake an error 1052d522f475Smrg#endif],[AC_DEFINE(HAVE_TERMCAP_H)]) 105320d2c4d2Smrg else 105420d2c4d2Smrg AC_CHECK_HEADERS(termcap.h) 105520d2c4d2Smrg fi 1056d522f475Smrgelse 1057d522f475Smrg # If we didn't find a tgetent() that supports the buffer 1058d522f475Smrg # argument, look again to see whether we can find even 1059d522f475Smrg # a crippled one. A crippled tgetent() is still useful to 1060d522f475Smrg # validate values for the TERM environment variable given to 1061d522f475Smrg # child processes. 1062d522f475Smrg AC_CACHE_CHECK(for partial tgetent function,cf_cv_lib_part_tgetent,[ 1063d522f475Smrg cf_cv_lib_part_tgetent=no 1064d522f475Smrg for cf_termlib in $cf_TERMLIB ; do 1065d522f475Smrg LIBS="$cf_save_LIBS -l$cf_termlib" 1066d522f475Smrg AC_TRY_LINK([],[tgetent(0, "$cf_TERMVAR")], 1067d522f475Smrg [echo "there is a terminfo/tgetent in $cf_termlib" 1>&AC_FD_CC 1068d522f475Smrg cf_cv_lib_part_tgetent="-l$cf_termlib" 1069d522f475Smrg break]) 1070d522f475Smrg done 1071d522f475Smrg LIBS="$cf_save_LIBS" 1072d522f475Smrg ]) 1073d522f475Smrg 1074d522f475Smrg if test "$cf_cv_lib_part_tgetent" != no ; then 107520d2c4d2Smrg CF_ADD_LIBS($cf_cv_lib_part_tgetent) 1076d522f475Smrg AC_CHECK_HEADERS(termcap.h) 1077d522f475Smrg 1078d522f475Smrg # If this is linking against ncurses, we'll trigger the 1079d522f475Smrg # ifdef in resize.c that turns the termcap stuff back off. 10800bd37d32Smrg AC_DEFINE(USE_TERMINFO,1,[Define to 1 to indicate that terminfo provides the tgetent interface]) 1081d522f475Smrg fi 1082d522f475Smrgfi 1083d522f475Smrg])dnl 1084d522f475Smrgdnl --------------------------------------------------------------------------- 1085f2e35a3aSmrgdnl CF_GCC_ATTRIBUTES version: 23 updated: 2021/01/03 18:30:50 1086d522f475Smrgdnl ----------------- 1087d522f475Smrgdnl Test for availability of useful gcc __attribute__ directives to quiet 1088d522f475Smrgdnl compiler warnings. Though useful, not all are supported -- and contrary 1089d522f475Smrgdnl to documentation, unrecognized directives cause older compilers to barf. 1090d522f475SmrgAC_DEFUN([CF_GCC_ATTRIBUTES], 1091f2e35a3aSmrg[AC_REQUIRE([AC_PROG_FGREP])dnl 1092f2e35a3aSmrg 1093f2e35a3aSmrgif test "$GCC" = yes || test "$GXX" = yes 1094d522f475Smrgthen 1095d522f475Smrgcat > conftest.i <<EOF 1096d522f475Smrg#ifndef GCC_PRINTF 1097d522f475Smrg#define GCC_PRINTF 0 1098d522f475Smrg#endif 1099d522f475Smrg#ifndef GCC_SCANF 1100d522f475Smrg#define GCC_SCANF 0 1101d522f475Smrg#endif 1102d522f475Smrg#ifndef GCC_NORETURN 1103d522f475Smrg#define GCC_NORETURN /* nothing */ 1104d522f475Smrg#endif 1105d522f475Smrg#ifndef GCC_UNUSED 1106d522f475Smrg#define GCC_UNUSED /* nothing */ 1107d522f475Smrg#endif 1108d522f475SmrgEOF 1109d522f475Smrgif test "$GCC" = yes 1110d522f475Smrgthen 1111d522f475Smrg AC_CHECKING([for $CC __attribute__ directives]) 1112f2e35a3aSmrgcat > "conftest.$ac_ext" <<EOF 11136879286fSmrg#line __oline__ "${as_me:-configure}" 1114d522f475Smrg#include "confdefs.h" 1115d522f475Smrg#include "conftest.h" 1116d522f475Smrg#include "conftest.i" 1117d522f475Smrg#if GCC_PRINTF 1118d522f475Smrg#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) 1119d522f475Smrg#else 1120d522f475Smrg#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ 1121d522f475Smrg#endif 1122d522f475Smrg#if GCC_SCANF 1123d522f475Smrg#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) 1124d522f475Smrg#else 1125d522f475Smrg#define GCC_SCANFLIKE(fmt,var) /*nothing*/ 1126d522f475Smrg#endif 1127d522f475Smrgextern void wow(char *,...) GCC_SCANFLIKE(1,2); 1128d522f475Smrgextern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN; 1129d522f475Smrgextern void foo(void) GCC_NORETURN; 1130f2e35a3aSmrgint main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; } 1131d522f475SmrgEOF 113220d2c4d2Smrg cf_printf_attribute=no 113320d2c4d2Smrg cf_scanf_attribute=no 1134d522f475Smrg for cf_attribute in scanf printf unused noreturn 1135d522f475Smrg do 1136d522f475Smrg CF_UPPER(cf_ATTRIBUTE,$cf_attribute) 1137d522f475Smrg cf_directive="__attribute__(($cf_attribute))" 1138d522f475Smrg echo "checking for $CC $cf_directive" 1>&AC_FD_CC 113920d2c4d2Smrg 1140f2e35a3aSmrg case "$cf_attribute" in 114101037d57Smrg (printf) 114220d2c4d2Smrg cf_printf_attribute=yes 114320d2c4d2Smrg cat >conftest.h <<EOF 1144d522f475Smrg#define GCC_$cf_ATTRIBUTE 1 1145d522f475SmrgEOF 1146d522f475Smrg ;; 114701037d57Smrg (scanf) 114820d2c4d2Smrg cf_scanf_attribute=yes 114920d2c4d2Smrg cat >conftest.h <<EOF 115020d2c4d2Smrg#define GCC_$cf_ATTRIBUTE 1 115120d2c4d2SmrgEOF 115220d2c4d2Smrg ;; 115301037d57Smrg (*) 115420d2c4d2Smrg cat >conftest.h <<EOF 1155d522f475Smrg#define GCC_$cf_ATTRIBUTE $cf_directive 1156d522f475SmrgEOF 1157d522f475Smrg ;; 1158d522f475Smrg esac 115920d2c4d2Smrg 1160d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1161d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute) 1162d522f475Smrg cat conftest.h >>confdefs.h 1163f2e35a3aSmrg case "$cf_attribute" in 116401037d57Smrg (noreturn) 11650bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc]) 11660bd37d32Smrg ;; 116701037d57Smrg (printf) 11680bd37d32Smrg cf_value='/* nothing */' 11690bd37d32Smrg if test "$cf_printf_attribute" != no ; then 11700bd37d32Smrg cf_value='__attribute__((format(printf,fmt,var)))' 11710bd37d32Smrg AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.]) 117220d2c4d2Smrg fi 11730bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc]) 117420d2c4d2Smrg ;; 117501037d57Smrg (scanf) 11760bd37d32Smrg cf_value='/* nothing */' 11770bd37d32Smrg if test "$cf_scanf_attribute" != no ; then 11780bd37d32Smrg cf_value='__attribute__((format(scanf,fmt,var)))' 11790bd37d32Smrg AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.]) 118020d2c4d2Smrg fi 11810bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc]) 11820bd37d32Smrg ;; 118301037d57Smrg (unused) 11840bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc]) 118520d2c4d2Smrg ;; 118620d2c4d2Smrg esac 1187d522f475Smrg fi 1188d522f475Smrg done 1189d522f475Smrgelse 1190f2e35a3aSmrg ${FGREP-fgrep} define conftest.i >>confdefs.h 1191d522f475Smrgfi 1192f2e35a3aSmrgrm -rf ./conftest* 1193d522f475Smrgfi 1194d522f475Smrg])dnl 1195d522f475Smrgdnl --------------------------------------------------------------------------- 1196f2e35a3aSmrgdnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36 1197d522f475Smrgdnl -------------- 1198f2e35a3aSmrgdnl Find version of gcc, and (because icc/clang pretend to be gcc without being 1199f2e35a3aSmrgdnl compatible), attempt to determine if icc/clang is actually used. 1200d522f475SmrgAC_DEFUN([CF_GCC_VERSION],[ 1201d522f475SmrgAC_REQUIRE([AC_PROG_CC]) 1202d522f475SmrgGCC_VERSION=none 1203d522f475Smrgif test "$GCC" = yes ; then 1204d522f475Smrg AC_MSG_CHECKING(version of $CC) 12050bd37d32Smrg GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" 1206d522f475Smrg test -z "$GCC_VERSION" && GCC_VERSION=unknown 1207d522f475Smrg AC_MSG_RESULT($GCC_VERSION) 1208d522f475Smrgfi 1209f2e35a3aSmrgCF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) 1210f2e35a3aSmrgCF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS) 1211d522f475Smrg])dnl 1212d522f475Smrgdnl --------------------------------------------------------------------------- 1213f2e35a3aSmrgdnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59 1214d522f475Smrgdnl --------------- 1215d522f475Smrgdnl Check if the compiler supports useful warning options. There's a few that 1216d522f475Smrgdnl we don't use, simply because they're too noisy: 1217d522f475Smrgdnl 1218d522f475Smrgdnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) 1219f2e35a3aSmrgdnl -Winline (usually not worthwhile) 1220d522f475Smrgdnl -Wredundant-decls (system headers make this too noisy) 1221d522f475Smrgdnl -Wtraditional (combines too many unrelated messages, only a few useful) 1222d522f475Smrgdnl -Wwrite-strings (too noisy, but should review occasionally). This 1223d522f475Smrgdnl is enabled for ncurses using "--enable-const". 1224d522f475Smrgdnl -pedantic 1225d522f475Smrgdnl 1226d522f475Smrgdnl Parameter: 1227d522f475Smrgdnl $1 is an optional list of gcc warning flags that a particular 1228d522f475Smrgdnl application might want to use, e.g., "no-unused" for 1229d522f475Smrgdnl -Wno-unused 1230d522f475Smrgdnl Special: 1231d522f475Smrgdnl If $with_ext_const is "yes", add a check for -Wwrite-strings 1232d522f475Smrgdnl 1233d522f475SmrgAC_DEFUN([CF_GCC_WARNINGS], 1234d522f475Smrg[ 1235d522f475SmrgAC_REQUIRE([CF_GCC_VERSION]) 1236f2e35a3aSmrgif test "x$have_x" = xyes; then CF_CONST_X_STRING fi 1237f2e35a3aSmrgcat > "conftest.$ac_ext" <<EOF 12386879286fSmrg#line __oline__ "${as_me:-configure}" 1239d522f475Smrgint main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; } 1240d522f475SmrgEOF 1241d522f475Smrgif test "$INTEL_COMPILER" = yes 1242d522f475Smrgthen 1243d522f475Smrg# The "-wdXXX" options suppress warnings: 1244d522f475Smrg# remark #1419: external declaration in primary source file 1245d522f475Smrg# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem) 1246d522f475Smrg# remark #1684: conversion from pointer to same-sized integral type (potential portability problem) 1247d522f475Smrg# remark #193: zero used for undefined preprocessing identifier 1248d522f475Smrg# remark #593: variable "curs_sb_left_arrow" was set but never used 1249d522f475Smrg# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits 1250d522f475Smrg# remark #869: parameter "tw" was never referenced 1251d522f475Smrg# remark #981: operands are evaluated in unspecified order 1252956cc18dSsnj# warning #279: controlling expression is constant 1253d522f475Smrg 1254d522f475Smrg AC_CHECKING([for $CC warning options]) 1255d522f475Smrg cf_save_CFLAGS="$CFLAGS" 1256f2e35a3aSmrg EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" 1257d522f475Smrg for cf_opt in \ 1258d522f475Smrg wd1419 \ 1259d522f475Smrg wd1683 \ 1260d522f475Smrg wd1684 \ 1261d522f475Smrg wd193 \ 1262d522f475Smrg wd593 \ 1263956cc18dSsnj wd279 \ 1264d522f475Smrg wd810 \ 1265d522f475Smrg wd869 \ 1266d522f475Smrg wd981 1267d522f475Smrg do 1268d522f475Smrg CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" 1269d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1270d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) 1271d522f475Smrg EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" 1272d522f475Smrg fi 1273d522f475Smrg done 1274d522f475Smrg CFLAGS="$cf_save_CFLAGS" 1275f2e35a3aSmrgelif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" 1276d522f475Smrgthen 1277d522f475Smrg AC_CHECKING([for $CC warning options]) 1278d522f475Smrg cf_save_CFLAGS="$CFLAGS" 1279d522f475Smrg cf_warn_CONST="" 1280d522f475Smrg test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" 1281e0a2b6dfSmrg cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" 1282e0a2b6dfSmrg test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= 128320d2c4d2Smrg for cf_opt in W Wall \ 1284d522f475Smrg Wbad-function-cast \ 1285d522f475Smrg Wcast-align \ 1286d522f475Smrg Wcast-qual \ 1287e0a2b6dfSmrg Wdeclaration-after-statement \ 1288e0a2b6dfSmrg Wextra \ 1289d522f475Smrg Winline \ 1290d522f475Smrg Wmissing-declarations \ 1291d522f475Smrg Wmissing-prototypes \ 1292d522f475Smrg Wnested-externs \ 1293d522f475Smrg Wpointer-arith \ 1294d522f475Smrg Wshadow \ 1295d522f475Smrg Wstrict-prototypes \ 1296f2e35a3aSmrg Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1 1297d522f475Smrg do 1298d522f475Smrg CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" 1299d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1300d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) 1301f2e35a3aSmrg case "$cf_opt" in 130201037d57Smrg (Winline) 1303f2e35a3aSmrg case "$GCC_VERSION" in 130401037d57Smrg ([[34]].*) 1305d522f475Smrg CF_VERBOSE(feature is broken in gcc $GCC_VERSION) 1306d522f475Smrg continue;; 1307d522f475Smrg esac 1308d522f475Smrg ;; 130901037d57Smrg (Wpointer-arith) 1310f2e35a3aSmrg case "$GCC_VERSION" in 131101037d57Smrg ([[12]].*) 13120bd37d32Smrg CF_VERBOSE(feature is broken in gcc $GCC_VERSION) 13130bd37d32Smrg continue;; 13140bd37d32Smrg esac 13150bd37d32Smrg ;; 1316d522f475Smrg esac 1317d522f475Smrg EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" 1318d522f475Smrg fi 1319d522f475Smrg done 1320d522f475Smrg CFLAGS="$cf_save_CFLAGS" 1321d522f475Smrgfi 1322f2e35a3aSmrgrm -rf ./conftest* 1323d522f475Smrg 1324d522f475SmrgAC_SUBST(EXTRA_CFLAGS) 1325d522f475Smrg])dnl 1326d522f475Smrgdnl --------------------------------------------------------------------------- 1327f2e35a3aSmrgdnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41 1328d522f475Smrgdnl ------------- 1329d522f475Smrgdnl Check if we must define _GNU_SOURCE to get a reasonable value for 1330d522f475Smrgdnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect 1331d522f475Smrgdnl (or misfeature) of glibc2, which breaks portability of many applications, 1332d522f475Smrgdnl since it is interwoven with GNU extensions. 1333d522f475Smrgdnl 1334d522f475Smrgdnl Well, yes we could work around it... 1335f2e35a3aSmrgdnl 1336f2e35a3aSmrgdnl Parameters: 1337f2e35a3aSmrgdnl $1 is the nominal value for _XOPEN_SOURCE 1338d522f475SmrgAC_DEFUN([CF_GNU_SOURCE], 1339d522f475Smrg[ 1340f2e35a3aSmrgcf_gnu_xopen_source=ifelse($1,,500,$1) 1341f2e35a3aSmrg 1342f2e35a3aSmrgAC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[ 1343d522f475SmrgAC_TRY_COMPILE([#include <sys/types.h>],[ 1344f2e35a3aSmrg #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 1345f2e35a3aSmrg return 0; 1346f2e35a3aSmrg #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 1347f2e35a3aSmrg return 0; 1348f2e35a3aSmrg #else 1349f2e35a3aSmrg # error not GNU C library 1350f2e35a3aSmrg #endif], 1351f2e35a3aSmrg [cf_cv_gnu_library=yes], 1352f2e35a3aSmrg [cf_cv_gnu_library=no]) 1353d522f475Smrg]) 1354913cc679Smrg 1355f2e35a3aSmrgif test x$cf_cv_gnu_library = xyes; then 1356f2e35a3aSmrg 1357f2e35a3aSmrg # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE 1358f2e35a3aSmrg # was changed to help a little. newlib incorporated the change about 4 1359f2e35a3aSmrg # years later. 1360f2e35a3aSmrg AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[ 1361f2e35a3aSmrg cf_save="$CPPFLAGS" 1362f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) 1363f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1364f2e35a3aSmrg #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2) 1365f2e35a3aSmrg return 0; 1366f2e35a3aSmrg #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3) 1367f2e35a3aSmrg return 0; 1368f2e35a3aSmrg #else 1369f2e35a3aSmrg # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old 1370f2e35a3aSmrg #endif], 1371f2e35a3aSmrg [cf_cv_gnu_library_219=yes], 1372f2e35a3aSmrg [cf_cv_gnu_library_219=no]) 1373f2e35a3aSmrg CPPFLAGS="$cf_save" 1374913cc679Smrg ]) 1375f2e35a3aSmrg 1376f2e35a3aSmrg if test "x$cf_cv_gnu_library_219" = xyes; then 1377f2e35a3aSmrg cf_save="$CPPFLAGS" 1378f2e35a3aSmrg AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[ 1379f2e35a3aSmrg CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source) 1380f2e35a3aSmrg AC_TRY_COMPILE([ 1381f2e35a3aSmrg #include <limits.h> 1382f2e35a3aSmrg #include <sys/types.h> 1383f2e35a3aSmrg ],[ 1384f2e35a3aSmrg #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) 1385f2e35a3aSmrg return 0; 1386f2e35a3aSmrg #else 1387f2e35a3aSmrg # error GNU C library is too old 1388f2e35a3aSmrg #endif], 1389f2e35a3aSmrg [cf_cv_gnu_dftsrc_219=yes], 1390f2e35a3aSmrg [cf_cv_gnu_dftsrc_219=no]) 1391f2e35a3aSmrg ]) 1392f2e35a3aSmrg test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" 1393f2e35a3aSmrg else 1394f2e35a3aSmrg cf_cv_gnu_dftsrc_219=maybe 1395f2e35a3aSmrg fi 1396f2e35a3aSmrg 1397f2e35a3aSmrg if test "x$cf_cv_gnu_dftsrc_219" != xyes; then 1398f2e35a3aSmrg 1399f2e35a3aSmrg AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[ 1400f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1401f2e35a3aSmrg #ifndef _XOPEN_SOURCE 1402f2e35a3aSmrg #error expected _XOPEN_SOURCE to be defined 1403f2e35a3aSmrg #endif], 1404f2e35a3aSmrg [cf_cv_gnu_source=no], 1405f2e35a3aSmrg [cf_save="$CPPFLAGS" 1406f2e35a3aSmrg CF_ADD_CFLAGS(-D_GNU_SOURCE) 1407f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1408f2e35a3aSmrg #ifdef _XOPEN_SOURCE 1409f2e35a3aSmrg #error expected _XOPEN_SOURCE to be undefined 1410f2e35a3aSmrg #endif], 1411f2e35a3aSmrg [cf_cv_gnu_source=no], 1412f2e35a3aSmrg [cf_cv_gnu_source=yes]) 1413f2e35a3aSmrg CPPFLAGS="$cf_save" 1414f2e35a3aSmrg ]) 1415f2e35a3aSmrg ]) 1416f2e35a3aSmrg 1417f2e35a3aSmrg if test "$cf_cv_gnu_source" = yes 1418f2e35a3aSmrg then 1419f2e35a3aSmrg AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[ 1420f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE) 1421f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1422f2e35a3aSmrg #ifdef _DEFAULT_SOURCE 1423f2e35a3aSmrg #error expected _DEFAULT_SOURCE to be undefined 1424f2e35a3aSmrg #endif], 1425f2e35a3aSmrg [cf_cv_default_source=no], 1426f2e35a3aSmrg [cf_cv_default_source=yes]) 1427f2e35a3aSmrg ]) 1428f2e35a3aSmrg if test "$cf_cv_default_source" = yes 1429f2e35a3aSmrg then 1430f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) 1431f2e35a3aSmrg fi 1432f2e35a3aSmrg fi 1433f2e35a3aSmrg fi 1434f2e35a3aSmrg 1435913cc679Smrgfi 1436d522f475Smrg])dnl 1437d522f475Smrgdnl --------------------------------------------------------------------------- 1438f2e35a3aSmrgdnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54 1439d522f475Smrgdnl --------------- 1440d522f475Smrgdnl Insert text into the help-message, for readability, from AC_ARG_WITH. 1441d522f475SmrgAC_DEFUN([CF_HELP_MESSAGE], 1442f2e35a3aSmrg[CF_ACVERSION_CHECK(2.53,[],[ 1443f2e35a3aSmrgAC_DIVERT_HELP($1)])dnl 1444d522f475Smrg])dnl 1445d522f475Smrgdnl --------------------------------------------------------------------------- 1446f2e35a3aSmrgdnl CF_IMAKE_CFLAGS version: 34 updated: 2020/12/31 18:40:20 1447d522f475Smrgdnl --------------- 1448d522f475Smrgdnl Use imake to obtain compiler flags. We could, in principle, write tests to 1449d522f475Smrgdnl get these, but if imake is properly configured there is no point in doing 1450d522f475Smrgdnl this. 1451d522f475Smrgdnl 1452d522f475Smrgdnl Parameters (used in constructing a sample Imakefile): 1453d522f475Smrgdnl $1 = optional value to append to $IMAKE_CFLAGS 1454d522f475Smrgdnl $2 = optional value to append to $IMAKE_LOADFLAGS 1455d522f475SmrgAC_DEFUN([CF_IMAKE_CFLAGS], 1456d522f475Smrg[ 1457d522f475SmrgAC_PATH_PROGS(IMAKE,xmkmf imake) 1458d522f475Smrg 1459d522f475Smrgif test -n "$IMAKE" ; then 1460d522f475Smrg 146101037d57Smrgcase $IMAKE in 146201037d57Smrg(*/imake) 146301037d57Smrg cf_imake_opts="-DUseInstalled=YES" 1464d522f475Smrg ;; 146501037d57Smrg(*/util/xmkmf) 1466d522f475Smrg # A single parameter tells xmkmf where the config-files are: 1467f2e35a3aSmrg cf_imake_opts="`echo "$IMAKE"|sed -e s,/config/util/xmkmf,,`" 1468d522f475Smrg ;; 146901037d57Smrg(*) 1470d522f475Smrg cf_imake_opts= 1471d522f475Smrg ;; 1472d522f475Smrgesac 1473d522f475Smrg 1474d522f475Smrg# If it's installed properly, imake (or its wrapper, xmkmf) will point to the 1475d522f475Smrg# config directory. 1476d522f475Smrgif mkdir conftestdir; then 1477d522f475Smrg CDPATH=; export CDPATH 1478f2e35a3aSmrg cf_makefile=`cd "$srcdir" || exit;pwd`/Imakefile 1479d522f475Smrg cd conftestdir 1480d522f475Smrg 1481d522f475Smrg cat >fix_cflags.sed <<'CF_EOF' 1482d522f475Smrgs/\\//g 1483d522f475Smrgs/[[ ]][[ ]]*/ /g 1484d522f475Smrgs/"//g 1485d522f475Smrg:pack 1486d522f475Smrgs/\(=[[^ ]][[^ ]]*\) \([[^-]]\)/\1 \2/g 1487d522f475Smrgt pack 1488d522f475Smrgs/\(-D[[a-zA-Z0-9_]][[a-zA-Z0-9_]]*\)=\([[^\'0-9 ]][[^ ]]*\)/\1='\\"\2\\"'/g 1489d522f475Smrgs/^IMAKE[[ ]]/IMAKE_CFLAGS="/ 1490d522f475Smrgs/ / /g 1491d522f475Smrgs/$/"/ 1492d522f475SmrgCF_EOF 1493d522f475Smrg 1494d522f475Smrg cat >fix_lflags.sed <<'CF_EOF' 1495d522f475Smrgs/^IMAKE[[ ]]*/IMAKE_LOADFLAGS="/ 1496d522f475Smrgs/$/"/ 1497d522f475SmrgCF_EOF 1498d522f475Smrg 1499d522f475Smrg echo >./Imakefile 1500f2e35a3aSmrg test -f "$cf_makefile" && cat "$cf_makefile" >>./Imakefile 1501d522f475Smrg 1502d522f475Smrg cat >> ./Imakefile <<'CF_EOF' 1503d522f475Smrgfindstddefs: 150420d2c4d2Smrg @echo IMAKE ${ALLDEFINES}ifelse([$1],,,[ $1]) | sed -f fix_cflags.sed 150520d2c4d2Smrg @echo IMAKE ${EXTRA_LOAD_FLAGS}ifelse([$2],,,[ $2]) | sed -f fix_lflags.sed 1506d522f475SmrgCF_EOF 1507d522f475Smrg 1508f2e35a3aSmrg if ( $IMAKE "$cf_imake_opts" 1>/dev/null 2>&AC_FD_CC && test -f Makefile) 1509d522f475Smrg then 1510d522f475Smrg CF_VERBOSE(Using $IMAKE $cf_imake_opts) 1511d522f475Smrg else 1512d522f475Smrg # sometimes imake doesn't have the config path compiled in. Find it. 1513d522f475Smrg cf_config= 1514d522f475Smrg for cf_libpath in $X_LIBS $LIBS ; do 1515f2e35a3aSmrg case "$cf_libpath" in 151601037d57Smrg (-L*) 1517f2e35a3aSmrg cf_libpath=`echo ".$cf_libpath" | sed -e 's/^...//'` 1518f2e35a3aSmrg cf_libpath="$cf_libpath/X11/config" 1519f2e35a3aSmrg if test -d "$cf_libpath" ; then 1520f2e35a3aSmrg cf_config="$cf_libpath" 1521d522f475Smrg break 1522d522f475Smrg fi 1523d522f475Smrg ;; 1524d522f475Smrg esac 1525d522f475Smrg done 1526d522f475Smrg if test -z "$cf_config" ; then 1527d522f475Smrg AC_MSG_WARN(Could not find imake config-directory) 1528d522f475Smrg else 1529d522f475Smrg cf_imake_opts="$cf_imake_opts -I$cf_config" 1530f2e35a3aSmrg if ( "$IMAKE" -v "$cf_imake_opts" 2>&AC_FD_CC) 1531d522f475Smrg then 1532d522f475Smrg CF_VERBOSE(Using $IMAKE $cf_config) 1533d522f475Smrg else 1534d522f475Smrg AC_MSG_WARN(Cannot run $IMAKE) 1535d522f475Smrg fi 1536d522f475Smrg fi 1537d522f475Smrg fi 1538d522f475Smrg 1539d522f475Smrg # GNU make sometimes prints "make[1]: Entering...", which 1540d522f475Smrg # would confuse us. 1541f2e35a3aSmrg eval "`make findstddefs 2>/dev/null | grep -v make`" 1542d522f475Smrg 1543d522f475Smrg cd .. 1544d522f475Smrg rm -rf conftestdir 1545d522f475Smrg 1546d522f475Smrg # We use ${ALLDEFINES} rather than ${STD_DEFINES} because the former 1547d522f475Smrg # declares XTFUNCPROTO there. However, some vendors (e.g., SGI) have 1548d522f475Smrg # modified it to support site.cf, adding a kludge for the /usr/include 1549d522f475Smrg # directory. Try to filter that out, otherwise gcc won't find its 1550d522f475Smrg # headers. 1551d522f475Smrg if test -n "$GCC" ; then 1552d522f475Smrg if test -n "$IMAKE_CFLAGS" ; then 1553d522f475Smrg cf_nostdinc="" 1554d522f475Smrg cf_std_incl="" 1555d522f475Smrg cf_cpp_opts="" 1556d522f475Smrg for cf_opt in $IMAKE_CFLAGS 1557d522f475Smrg do 1558d522f475Smrg case "$cf_opt" in 155901037d57Smrg (-nostdinc) 1560d522f475Smrg cf_nostdinc="$cf_opt" 1561d522f475Smrg ;; 156201037d57Smrg (-I/usr/include) 1563d522f475Smrg cf_std_incl="$cf_opt" 1564d522f475Smrg ;; 156501037d57Smrg (*) 1566d522f475Smrg cf_cpp_opts="$cf_cpp_opts $cf_opt" 1567d522f475Smrg ;; 1568d522f475Smrg esac 1569d522f475Smrg done 1570d522f475Smrg if test -z "$cf_nostdinc" ; then 1571d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts $cf_std_incl" 1572d522f475Smrg elif test -z "$cf_std_incl" ; then 1573d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts $cf_nostdinc" 1574d522f475Smrg else 1575d522f475Smrg CF_VERBOSE(suppressed \"$cf_nostdinc\" and \"$cf_std_incl\") 1576d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts" 1577d522f475Smrg fi 1578d522f475Smrg fi 1579d522f475Smrg fi 1580d522f475Smrgfi 1581d522f475Smrg 1582d522f475Smrg# Some imake configurations define PROJECTROOT with an empty value. Remove 1583d522f475Smrg# the empty definition. 1584d522f475Smrgcase $IMAKE_CFLAGS in 158501037d57Smrg(*-DPROJECTROOT=/*) 1586d522f475Smrg ;; 158701037d57Smrg(*) 1588d522f475Smrg IMAKE_CFLAGS=`echo "$IMAKE_CFLAGS" |sed -e "s,-DPROJECTROOT=[[ ]], ,"` 1589d522f475Smrg ;; 1590d522f475Smrgesac 1591d522f475Smrg 1592d522f475Smrgfi 1593d522f475Smrg 1594d522f475SmrgCF_VERBOSE(IMAKE_CFLAGS $IMAKE_CFLAGS) 1595d522f475SmrgCF_VERBOSE(IMAKE_LOADFLAGS $IMAKE_LOADFLAGS) 1596d522f475Smrg 1597d522f475SmrgAC_SUBST(IMAKE_CFLAGS) 1598d522f475SmrgAC_SUBST(IMAKE_LOADFLAGS) 1599d522f475Smrg])dnl 1600d522f475Smrgdnl --------------------------------------------------------------------------- 1601f2e35a3aSmrgdnl CF_INPUT_METHOD version: 4 updated: 2020/03/10 18:53:47 1602d522f475Smrgdnl --------------- 1603d522f475Smrgdnl Check if the X libraries support input-method 1604d522f475SmrgAC_DEFUN([CF_INPUT_METHOD], 1605d522f475Smrg[ 1606d522f475SmrgAC_CACHE_CHECK([if X libraries support input-method],cf_cv_input_method,[ 1607d522f475SmrgAC_TRY_LINK([ 1608d522f475Smrg#include <X11/IntrinsicP.h> 1609d522f475Smrg#include <X11/Xatom.h> 1610d522f475Smrg#include <X11/Xutil.h> 1611d522f475Smrg#include <X11/Xmu/Atoms.h> 1612d522f475Smrg#include <X11/Xmu/Converters.h> 1613d522f475Smrg#include <X11/Xaw/XawImP.h> 1614d522f475Smrg],[ 1615d522f475Smrg{ 1616d522f475Smrg XIM xim; 1617d522f475Smrg XIMStyles *xim_styles = 0; 1618d522f475Smrg XIMStyle input_style; 1619d522f475Smrg Widget w = 0; 1620d522f475Smrg 1621d522f475Smrg XSetLocaleModifiers("@im=none"); 1622d522f475Smrg xim = XOpenIM(XtDisplay(w), NULL, NULL, NULL); 1623d522f475Smrg XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL); 1624d522f475Smrg XCloseIM(xim); 1625d522f475Smrg input_style = (XIMPreeditNothing | XIMStatusNothing); 1626f2e35a3aSmrg (void)xim_styles; 1627f2e35a3aSmrg (void)input_style; 1628d522f475Smrg} 1629d522f475Smrg], 1630d522f475Smrg[cf_cv_input_method=yes], 1631d522f475Smrg[cf_cv_input_method=no])]) 1632d522f475Smrg])dnl 1633d522f475Smrgdnl --------------------------------------------------------------------------- 1634f2e35a3aSmrgdnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59 1635d522f475Smrgdnl ----------------- 1636d522f475Smrgdnl Check if the given compiler is really the Intel compiler for Linux. It 1637d522f475Smrgdnl tries to imitate gcc, but does not return an error when it finds a mismatch 1638d522f475Smrgdnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. 1639d522f475Smrgdnl 1640d522f475Smrgdnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to 1641d522f475Smrgdnl ensure that it is not mistaken for gcc/g++. It is normally invoked from 1642d522f475Smrgdnl the wrappers for gcc and g++ warnings. 1643d522f475Smrgdnl 1644d522f475Smrgdnl $1 = GCC (default) or GXX 1645d522f475Smrgdnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS 1646d522f475Smrgdnl $3 = CFLAGS (default) or CXXFLAGS 1647d522f475SmrgAC_DEFUN([CF_INTEL_COMPILER],[ 16480bd37d32SmrgAC_REQUIRE([AC_CANONICAL_HOST]) 164920d2c4d2Smrgifelse([$2],,INTEL_COMPILER,[$2])=no 1650d522f475Smrg 165120d2c4d2Smrgif test "$ifelse([$1],,[$1],GCC)" = yes ; then 1652f2e35a3aSmrg case "$host_os" in 165301037d57Smrg (linux*|gnu*) 165420d2c4d2Smrg AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler) 165520d2c4d2Smrg cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" 165620d2c4d2Smrg ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc" 1657d522f475Smrg AC_TRY_COMPILE([],[ 1658d522f475Smrg#ifdef __INTEL_COMPILER 1659d522f475Smrg#else 1660d522f475Smrgmake an error 1661d522f475Smrg#endif 166220d2c4d2Smrg],[ifelse([$2],,INTEL_COMPILER,[$2])=yes 1663894e0ac8Smrgcf_save_CFLAGS="$cf_save_CFLAGS -we147" 1664d522f475Smrg],[]) 166520d2c4d2Smrg ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" 166620d2c4d2Smrg AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) 1667d522f475Smrg ;; 1668d522f475Smrg esac 1669d522f475Smrgfi 1670d522f475Smrg])dnl 1671d522f475Smrgdnl --------------------------------------------------------------------------- 1672f2e35a3aSmrgdnl CF_LASTLOG version: 7 updated: 2021/01/02 09:31:20 1673d522f475Smrgdnl ---------- 1674d522f475Smrgdnl Check for header defining _PATH_LASTLOG, or failing that, see if the lastlog 1675d522f475Smrgdnl file exists. 1676d522f475SmrgAC_DEFUN([CF_LASTLOG], 1677d522f475Smrg[ 1678d522f475SmrgAC_CHECK_HEADERS(lastlog.h paths.h) 1679d522f475SmrgAC_CACHE_CHECK(for lastlog path,cf_cv_path_lastlog,[ 1680d522f475SmrgAC_TRY_COMPILE([ 1681d522f475Smrg#include <sys/types.h> 1682d522f475Smrg#ifdef HAVE_LASTLOG_H 1683d522f475Smrg#include <lastlog.h> 1684d522f475Smrg#else 1685d522f475Smrg#ifdef HAVE_PATHS_H 1686d522f475Smrg#include <paths.h> 1687d522f475Smrg#endif 1688f2e35a3aSmrg#endif],[char *path = _PATH_LASTLOG; (void)path], 1689d522f475Smrg [cf_cv_path_lastlog="_PATH_LASTLOG"], 1690d522f475Smrg [if test -f /usr/adm/lastlog ; then 1691d522f475Smrg cf_cv_path_lastlog=/usr/adm/lastlog 1692d522f475Smrg else 1693d522f475Smrg cf_cv_path_lastlog=no 1694d522f475Smrg fi]) 1695d522f475Smrg]) 1696f2e35a3aSmrgtest "$cf_cv_path_lastlog" != no && AC_DEFINE(USE_LASTLOG,1,[Define to 1 if we can define lastlog pathname]) 1697d522f475Smrg])dnl 1698d522f475Smrgdnl --------------------------------------------------------------------------- 1699f2e35a3aSmrgdnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04 170020d2c4d2Smrgdnl --------------- 170120d2c4d2Smrgdnl For the given system and compiler, find the compiler flags to pass to the 170220d2c4d2Smrgdnl loader to use the "rpath" feature. 170320d2c4d2SmrgAC_DEFUN([CF_LD_RPATH_OPT], 170420d2c4d2Smrg[ 170520d2c4d2SmrgAC_REQUIRE([CF_CHECK_CACHE]) 170620d2c4d2Smrg 170720d2c4d2SmrgLD_RPATH_OPT= 1708f2e35a3aSmrgif test "x$cf_cv_enable_rpath" != xno 1709f2e35a3aSmrgthen 1710f2e35a3aSmrg AC_MSG_CHECKING(for an rpath option) 1711f2e35a3aSmrg case "$cf_cv_system_name" in 1712f2e35a3aSmrg (irix*) 1713f2e35a3aSmrg if test "$GCC" = yes; then 1714f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1715f2e35a3aSmrg else 1716f2e35a3aSmrg LD_RPATH_OPT="-rpath " 1717f2e35a3aSmrg fi 1718f2e35a3aSmrg ;; 1719f2e35a3aSmrg (linux*|gnu*|k*bsd*-gnu|freebsd*) 172020d2c4d2Smrg LD_RPATH_OPT="-Wl,-rpath," 1721f2e35a3aSmrg ;; 1722f2e35a3aSmrg (openbsd[[2-9]].*|mirbsd*) 1723f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1724f2e35a3aSmrg ;; 1725f2e35a3aSmrg (dragonfly*) 172620d2c4d2Smrg LD_RPATH_OPT="-rpath " 1727f2e35a3aSmrg ;; 1728f2e35a3aSmrg (netbsd*) 1729f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1730f2e35a3aSmrg ;; 1731f2e35a3aSmrg (osf*|mls+*) 1732f2e35a3aSmrg LD_RPATH_OPT="-rpath " 1733f2e35a3aSmrg ;; 1734f2e35a3aSmrg (solaris2*) 1735f2e35a3aSmrg LD_RPATH_OPT="-R" 1736f2e35a3aSmrg ;; 1737f2e35a3aSmrg (*) 1738f2e35a3aSmrg ;; 1739f2e35a3aSmrg esac 1740f2e35a3aSmrg AC_MSG_RESULT($LD_RPATH_OPT) 1741f2e35a3aSmrg 1742f2e35a3aSmrg case "x$LD_RPATH_OPT" in 1743f2e35a3aSmrg (x-R*) 1744f2e35a3aSmrg AC_MSG_CHECKING(if we need a space after rpath option) 1745f2e35a3aSmrg cf_save_LIBS="$LIBS" 1746f2e35a3aSmrg CF_ADD_LIBS(${LD_RPATH_OPT}$libdir) 1747f2e35a3aSmrg AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes) 1748f2e35a3aSmrg LIBS="$cf_save_LIBS" 1749f2e35a3aSmrg AC_MSG_RESULT($cf_rpath_space) 1750f2e35a3aSmrg test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " 1751f2e35a3aSmrg ;; 1752f2e35a3aSmrg esac 1753f2e35a3aSmrgfi 175420d2c4d2Smrg])dnl 175520d2c4d2Smrgdnl --------------------------------------------------------------------------- 17566879286fSmrgdnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 175720d2c4d2Smrgdnl ------------ 175820d2c4d2Smrgdnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have 175920d2c4d2Smrgdnl a monocase filesystem. 176020d2c4d2SmrgAC_DEFUN([CF_MAKE_TAGS],[ 176120d2c4d2SmrgAC_REQUIRE([CF_MIXEDCASE_FILENAMES]) 176220d2c4d2Smrg 176320d2c4d2SmrgAC_CHECK_PROGS(CTAGS, exctags ctags) 176420d2c4d2SmrgAC_CHECK_PROGS(ETAGS, exetags etags) 176520d2c4d2Smrg 17666879286fSmrgAC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) 176720d2c4d2Smrg 176820d2c4d2Smrgif test "$cf_cv_mixedcase" = yes ; then 17696879286fSmrg AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) 177020d2c4d2Smrgelse 177120d2c4d2Smrg MAKE_UPPER_TAGS=no 177220d2c4d2Smrgfi 177320d2c4d2Smrg 177420d2c4d2Smrgif test "$MAKE_UPPER_TAGS" = yes ; then 177520d2c4d2Smrg MAKE_UPPER_TAGS= 177620d2c4d2Smrgelse 177720d2c4d2Smrg MAKE_UPPER_TAGS="#" 177820d2c4d2Smrgfi 177920d2c4d2Smrg 178020d2c4d2Smrgif test "$MAKE_LOWER_TAGS" = yes ; then 178120d2c4d2Smrg MAKE_LOWER_TAGS= 178220d2c4d2Smrgelse 178320d2c4d2Smrg MAKE_LOWER_TAGS="#" 178420d2c4d2Smrgfi 178520d2c4d2Smrg 178620d2c4d2SmrgAC_SUBST(CTAGS) 178720d2c4d2SmrgAC_SUBST(ETAGS) 178820d2c4d2Smrg 178920d2c4d2SmrgAC_SUBST(MAKE_UPPER_TAGS) 179020d2c4d2SmrgAC_SUBST(MAKE_LOWER_TAGS) 179120d2c4d2Smrg])dnl 179220d2c4d2Smrgdnl --------------------------------------------------------------------------- 1793f2e35a3aSmrgdnl CF_MATH_LIB version: 10 updated: 2020/12/31 18:40:20 1794894e0ac8Smrgdnl ----------- 1795894e0ac8Smrgdnl Checks for libraries. At least one UNIX system, Apple Macintosh 1796894e0ac8Smrgdnl Rhapsody 5.5, does not have -lm. We cannot use the simpler 1797894e0ac8Smrgdnl AC_CHECK_LIB(m,sin), because that fails for C++. 1798894e0ac8SmrgAC_DEFUN([CF_MATH_LIB], 1799894e0ac8Smrg[ 1800894e0ac8SmrgAC_CACHE_CHECK(if -lm needed for math functions, 1801894e0ac8Smrg cf_cv_need_libm,[ 1802894e0ac8Smrg AC_TRY_LINK([ 1803894e0ac8Smrg #include <stdio.h> 1804913cc679Smrg #include <stdlib.h> 1805894e0ac8Smrg #include <math.h> 1806894e0ac8Smrg ], 1807f2e35a3aSmrg [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)], 1808894e0ac8Smrg [cf_cv_need_libm=no], 1809894e0ac8Smrg [cf_cv_need_libm=yes])]) 1810894e0ac8Smrgif test "$cf_cv_need_libm" = yes 1811894e0ac8Smrgthen 1812894e0ac8Smrgifelse($1,,[ 1813894e0ac8Smrg CF_ADD_LIB(m) 1814894e0ac8Smrg],[$1=-lm]) 1815894e0ac8Smrgfi 1816894e0ac8Smrg]) 1817894e0ac8Smrgdnl --------------------------------------------------------------------------- 1818f2e35a3aSmrgdnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59 181920d2c4d2Smrgdnl ---------------------- 182020d2c4d2Smrgdnl Check if the file-system supports mixed-case filenames. If we're able to 182120d2c4d2Smrgdnl create a lowercase name and see it as uppercase, it doesn't support that. 182220d2c4d2SmrgAC_DEFUN([CF_MIXEDCASE_FILENAMES], 182320d2c4d2Smrg[ 182420d2c4d2SmrgAC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ 182520d2c4d2Smrgif test "$cross_compiling" = yes ; then 1826f2e35a3aSmrg case "$target_alias" in 1827f2e35a3aSmrg (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) 182820d2c4d2Smrg cf_cv_mixedcase=no 182920d2c4d2Smrg ;; 183001037d57Smrg (*) 183120d2c4d2Smrg cf_cv_mixedcase=yes 183220d2c4d2Smrg ;; 183320d2c4d2Smrg esac 183420d2c4d2Smrgelse 183520d2c4d2Smrg rm -f conftest CONFTEST 183620d2c4d2Smrg echo test >conftest 183720d2c4d2Smrg if test -f CONFTEST ; then 183820d2c4d2Smrg cf_cv_mixedcase=no 183920d2c4d2Smrg else 184020d2c4d2Smrg cf_cv_mixedcase=yes 184120d2c4d2Smrg fi 184220d2c4d2Smrg rm -f conftest CONFTEST 184320d2c4d2Smrgfi 184420d2c4d2Smrg]) 18450bd37d32Smrgtest "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.]) 184620d2c4d2Smrg])dnl 184720d2c4d2Smrgdnl --------------------------------------------------------------------------- 18486879286fSmrgdnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 1849d522f475Smrgdnl ---------- 1850d522f475Smrgdnl Write a debug message to config.log, along with the line number in the 1851d522f475Smrgdnl configure script. 1852d522f475SmrgAC_DEFUN([CF_MSG_LOG],[ 18536879286fSmrgecho "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC 1854d522f475Smrg])dnl 1855d522f475Smrgdnl --------------------------------------------------------------------------- 1856f2e35a3aSmrgdnl CF_NO_LEAKS_OPTION version: 8 updated: 2021/01/05 20:05:09 18570bd37d32Smrgdnl ------------------ 18580bd37d32Smrgdnl see CF_WITH_NO_LEAKS 18590bd37d32SmrgAC_DEFUN([CF_NO_LEAKS_OPTION],[ 18600bd37d32SmrgAC_MSG_CHECKING(if you want to use $1 for testing) 18610bd37d32SmrgAC_ARG_WITH($1, 18620bd37d32Smrg [$2], 18630bd37d32Smrg [AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[ 18640bd37d32Smrg $4 18650bd37d32Smrg]) 1866f2e35a3aSmrg : "${with_cflags:=-g}" 1867f2e35a3aSmrg : "${enable_leaks:=no}" 18680bd37d32Smrg with_$1=yes], 18690bd37d32Smrg [with_$1=]) 18700bd37d32SmrgAC_MSG_RESULT(${with_$1:-no}) 18710bd37d32Smrg 1872f2e35a3aSmrgcase ".$with_cflags" in 187301037d57Smrg(.*-g*) 187401037d57Smrg case .$CFLAGS in 187501037d57Smrg (.*-g*) 18760bd37d32Smrg ;; 187701037d57Smrg (*) 18780bd37d32Smrg CF_ADD_CFLAGS([-g]) 18790bd37d32Smrg ;; 18800bd37d32Smrg esac 18810bd37d32Smrg ;; 18820bd37d32Smrgesac 18830bd37d32Smrg])dnl 18840bd37d32Smrgdnl --------------------------------------------------------------------------- 1885f2e35a3aSmrgdnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04 1886956cc18dSsnjdnl ---------- 18870bd37d32Smrgdnl Provide a value for the $PATH and similar separator (or amend the value 18880bd37d32Smrgdnl as provided in autoconf 2.5x). 1889956cc18dSsnjAC_DEFUN([CF_PATHSEP], 1890956cc18dSsnj[ 18910bd37d32Smrg AC_MSG_CHECKING(for PATH separator) 1892f2e35a3aSmrg case "$cf_cv_system_name" in 189301037d57Smrg (os2*) PATH_SEPARATOR=';' ;; 189401037d57Smrg (*) ${PATH_SEPARATOR:=':'} ;; 1895956cc18dSsnj esac 189620d2c4d2Smrgifelse([$1],,,[$1=$PATH_SEPARATOR]) 1897956cc18dSsnj AC_SUBST(PATH_SEPARATOR) 18980bd37d32Smrg AC_MSG_RESULT($PATH_SEPARATOR) 1899956cc18dSsnj])dnl 1900956cc18dSsnjdnl --------------------------------------------------------------------------- 1901f2e35a3aSmrgdnl CF_PATH_PROG version: 12 updated: 2021/01/02 09:31:20 1902d522f475Smrgdnl ------------ 1903d522f475Smrgdnl Check for a given program, defining corresponding symbol. 1904d522f475Smrgdnl $1 = environment variable, which is suffixed by "_PATH" in the #define. 1905d522f475Smrgdnl $2 = program name to find. 1906d522f475Smrgdnl $3 = optional list of additional program names to test. 1907f2e35a3aSmrgdnl $4 = $PATH 1908d522f475Smrgdnl 1909d522f475Smrgdnl If there is more than one token in the result, #define the remaining tokens 1910d522f475Smrgdnl to $1_ARGS. We need this for 'install' in particular. 1911d522f475Smrgdnl 1912d522f475Smrgdnl FIXME: we should allow this to be overridden by environment variables 1913d522f475Smrgdnl 1914d522f475SmrgAC_DEFUN([CF_PATH_PROG],[ 1915956cc18dSsnjAC_REQUIRE([CF_PATHSEP]) 1916f2e35a3aSmrgtest -z "[$]$1" && $1="$2" 1917f2e35a3aSmrgAC_PATH_PROGS($1,[$]$1 $2 ifelse($3,,,$3),[$]$1, ifelse($4,,,$4)) 1918d522f475Smrg 1919d522f475Smrgcf_path_prog="" 1920d522f475Smrgcf_path_args="" 19216879286fSmrgIFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR" 1922d522f475Smrgfor cf_temp in $ac_cv_path_$1 1923d522f475Smrgdo 1924d522f475Smrg if test -z "$cf_path_prog" ; then 1925d522f475Smrg if test "$with_full_paths" = yes ; then 1926d522f475Smrg CF_PATH_SYNTAX(cf_temp,break) 1927d522f475Smrg cf_path_prog="$cf_temp" 1928d522f475Smrg else 1929f2e35a3aSmrg cf_path_prog="`basename "$cf_temp"`" 1930d522f475Smrg fi 1931d522f475Smrg elif test -z "$cf_path_args" ; then 1932d522f475Smrg cf_path_args="$cf_temp" 1933d522f475Smrg else 1934d522f475Smrg cf_path_args="$cf_path_args $cf_temp" 1935d522f475Smrg fi 1936d522f475Smrgdone 1937d522f475SmrgIFS="$cf_save_ifs" 1938d522f475Smrg 1939d522f475Smrgif test -n "$cf_path_prog" ; then 1940d522f475Smrg CF_MSG_LOG(defining path for ${cf_path_prog}) 19410bd37d32Smrg AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog",Define to pathname $1) 19420bd37d32Smrg test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args",Define to provide args for $1) 1943d522f475Smrgfi 1944d522f475Smrg])dnl 1945d522f475Smrgdnl --------------------------------------------------------------------------- 1946f2e35a3aSmrgdnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20 1947d522f475Smrgdnl -------------- 1948d522f475Smrgdnl Check the argument to see that it looks like a pathname. Rewrite it if it 1949d522f475Smrgdnl begins with one of the prefix/exec_prefix variables, and then again if the 1950d522f475Smrgdnl result begins with 'NONE'. This is necessary to work around autoconf's 1951d522f475Smrgdnl delayed evaluation of those symbols. 1952d522f475SmrgAC_DEFUN([CF_PATH_SYNTAX],[ 1953d522f475Smrgif test "x$prefix" != xNONE; then 19542e4f8982Smrg cf_path_syntax="$prefix" 1955d522f475Smrgelse 19562e4f8982Smrg cf_path_syntax="$ac_default_prefix" 1957d522f475Smrgfi 1958d522f475Smrg 195901037d57Smrgcase ".[$]$1" in 196001037d57Smrg(.\[$]\(*\)*|.\'*\'*) 19612e4f8982Smrg ;; 196201037d57Smrg(..|./*|.\\*) 19632e4f8982Smrg ;; 196401037d57Smrg(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX 19652e4f8982Smrg ;; 1966f2e35a3aSmrg(.\[$]\{*prefix\}*|.\[$]\{*dir\}*) 19672e4f8982Smrg eval $1="[$]$1" 19682e4f8982Smrg case ".[$]$1" in 19692e4f8982Smrg (.NONE/*) 1970f2e35a3aSmrg $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` 19712e4f8982Smrg ;; 19722e4f8982Smrg esac 19732e4f8982Smrg ;; 197401037d57Smrg(.no|.NONE/*) 1975f2e35a3aSmrg $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` 19762e4f8982Smrg ;; 197701037d57Smrg(*) 19782e4f8982Smrg ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) 19792e4f8982Smrg ;; 1980d522f475Smrgesac 1981d522f475Smrg])dnl 1982d522f475Smrgdnl --------------------------------------------------------------------------- 1983f2e35a3aSmrgdnl CF_PKG_CONFIG version: 11 updated: 2021/01/01 13:31:04 1984956cc18dSsnjdnl ------------- 1985956cc18dSsnjdnl Check for the package-config program, unless disabled by command-line. 1986956cc18dSsnjAC_DEFUN([CF_PKG_CONFIG], 1987956cc18dSsnj[ 1988956cc18dSsnjAC_MSG_CHECKING(if you want to use pkg-config) 1989956cc18dSsnjAC_ARG_WITH(pkg-config, 1990956cc18dSsnj [ --with-pkg-config{=path} enable/disable use of pkg-config], 1991956cc18dSsnj [cf_pkg_config=$withval], 1992956cc18dSsnj [cf_pkg_config=yes]) 1993956cc18dSsnjAC_MSG_RESULT($cf_pkg_config) 1994956cc18dSsnj 1995f2e35a3aSmrgcase "$cf_pkg_config" in 199601037d57Smrg(no) 1997956cc18dSsnj PKG_CONFIG=none 1998956cc18dSsnj ;; 199901037d57Smrg(yes) 2000e39b573cSmrg CF_ACVERSION_CHECK(2.52, 2001e39b573cSmrg [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)], 2002e39b573cSmrg [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)]) 2003956cc18dSsnj ;; 200401037d57Smrg(*) 2005956cc18dSsnj PKG_CONFIG=$withval 2006956cc18dSsnj ;; 2007956cc18dSsnjesac 2008956cc18dSsnj 2009956cc18dSsnjtest -z "$PKG_CONFIG" && PKG_CONFIG=none 2010956cc18dSsnjif test "$PKG_CONFIG" != none ; then 2011956cc18dSsnj CF_PATH_SYNTAX(PKG_CONFIG) 20122e4f8982Smrgelif test "x$cf_pkg_config" != xno ; then 201301037d57Smrg AC_MSG_WARN(pkg-config is not installed) 2014956cc18dSsnjfi 2015956cc18dSsnj 2016956cc18dSsnjAC_SUBST(PKG_CONFIG) 2017956cc18dSsnj])dnl 2018956cc18dSsnjdnl --------------------------------------------------------------------------- 2019f2e35a3aSmrgdnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17 2020d522f475Smrgdnl ----------------- 2021d522f475Smrgdnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. 2022d522f475Smrgdnl 2023d522f475Smrgdnl POSIX.1-1990 _POSIX_SOURCE 2024d522f475Smrgdnl POSIX.1-1990 and _POSIX_SOURCE and 2025d522f475Smrgdnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 2026d522f475Smrgdnl Bindings Option 2027d522f475Smrgdnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L 2028d522f475Smrgdnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L 2029d522f475Smrgdnl X/Open 2000 _POSIX_C_SOURCE=200112L 2030d522f475Smrgdnl 2031d522f475Smrgdnl Parameters: 2032d522f475Smrgdnl $1 is the nominal value for _POSIX_C_SOURCE 2033d522f475SmrgAC_DEFUN([CF_POSIX_C_SOURCE], 2034f2e35a3aSmrg[AC_REQUIRE([CF_POSIX_VISIBLE])dnl 2035f2e35a3aSmrg 2036f2e35a3aSmrgif test "$cf_cv_posix_visible" = no; then 2037f2e35a3aSmrg 203820d2c4d2Smrgcf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) 2039d522f475Smrg 2040d522f475Smrgcf_save_CFLAGS="$CFLAGS" 2041d522f475Smrgcf_save_CPPFLAGS="$CPPFLAGS" 2042d522f475Smrg 2043d522f475SmrgCF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) 2044d522f475SmrgCF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE) 2045d522f475Smrg 2046d522f475SmrgAC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ 2047d522f475Smrg CF_MSG_LOG(if the symbol is already defined go no further) 2048d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2049d522f475Smrg#ifndef _POSIX_C_SOURCE 2050d522f475Smrgmake an error 2051d522f475Smrg#endif], 2052d522f475Smrg [cf_cv_posix_c_source=no], 2053d522f475Smrg [cf_want_posix_source=no 205401037d57Smrg case .$cf_POSIX_C_SOURCE in 205501037d57Smrg (.[[12]]??*) 2056d522f475Smrg cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 2057d522f475Smrg ;; 205801037d57Smrg (.2) 2059d522f475Smrg cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 2060d522f475Smrg cf_want_posix_source=yes 2061d522f475Smrg ;; 206201037d57Smrg (.*) 2063d522f475Smrg cf_want_posix_source=yes 2064d522f475Smrg ;; 2065d522f475Smrg esac 2066d522f475Smrg if test "$cf_want_posix_source" = yes ; then 2067d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2068d522f475Smrg#ifdef _POSIX_SOURCE 2069d522f475Smrgmake an error 2070d522f475Smrg#endif],[], 2071d522f475Smrg cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE") 2072d522f475Smrg fi 2073d522f475Smrg CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE) 2074d522f475Smrg CFLAGS="$cf_trim_CFLAGS" 2075f2e35a3aSmrg CPPFLAGS="$cf_trim_CPPFLAGS" 2076f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source) 2077d522f475Smrg CF_MSG_LOG(if the second compile does not leave our definition intact error) 2078d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2079d522f475Smrg#ifndef _POSIX_C_SOURCE 2080d522f475Smrgmake an error 2081d522f475Smrg#endif],, 2082d522f475Smrg [cf_cv_posix_c_source=no]) 2083d522f475Smrg CFLAGS="$cf_save_CFLAGS" 2084d522f475Smrg CPPFLAGS="$cf_save_CPPFLAGS" 2085d522f475Smrg ]) 2086d522f475Smrg]) 2087d522f475Smrg 2088d522f475Smrgif test "$cf_cv_posix_c_source" != no ; then 2089d522f475Smrg CFLAGS="$cf_trim_CFLAGS" 2090d522f475Smrg CPPFLAGS="$cf_trim_CPPFLAGS" 209120d2c4d2Smrg CF_ADD_CFLAGS($cf_cv_posix_c_source) 2092d522f475Smrgfi 2093d522f475Smrg 2094f2e35a3aSmrgfi # cf_cv_posix_visible 2095f2e35a3aSmrg 2096d522f475Smrg])dnl 2097d522f475Smrgdnl --------------------------------------------------------------------------- 2098f2e35a3aSmrgdnl CF_POSIX_SAVED_IDS version: 9 updated: 2020/03/10 18:53:47 2099d522f475Smrgdnl ------------------ 2100d522f475Smrgdnl 2101d522f475Smrgdnl Check first if saved-ids are always supported. Some systems 2102d522f475Smrgdnl may require runtime checks. 2103d522f475SmrgAC_DEFUN([CF_POSIX_SAVED_IDS], 2104d522f475Smrg[ 2105d522f475SmrgAC_CHECK_HEADERS( \ 2106d522f475Smrgsys/param.h \ 2107d522f475Smrg) 2108d522f475Smrg 2109d522f475SmrgAC_CACHE_CHECK(if POSIX saved-ids are supported,cf_cv_posix_saved_ids,[ 2110d522f475SmrgAC_TRY_LINK( 2111d522f475Smrg[ 2112d522f475Smrg#include <unistd.h> 2113d522f475Smrg#ifdef HAVE_SYS_PARAM_H 2114d522f475Smrg#include <sys/param.h> /* this may define "BSD" */ 2115d522f475Smrg#endif 2116d522f475Smrg],[ 2117d522f475Smrg#if defined(_POSIX_SAVED_IDS) && (_POSIX_SAVED_IDS > 0) 2118d522f475Smrg void *p = (void *) seteuid; 2119d522f475Smrg int x = seteuid(geteuid()); 2120f2e35a3aSmrg (void)p; 2121f2e35a3aSmrg (void)x; 2122d522f475Smrg#elif defined(BSD) && (BSD >= 199103) 2123d522f475Smrg/* The BSD's may implement the runtime check - and it fails. 2124d522f475Smrg * However, saved-ids work almost like POSIX (close enough for most uses). 2125d522f475Smrg */ 2126d522f475Smrg#else 2127d522f475Smrgmake an error 2128d522f475Smrg#endif 2129d522f475Smrg],[cf_cv_posix_saved_ids=yes 2130d522f475Smrg],[ 2131d522f475SmrgAC_TRY_RUN([ 2132d522f475Smrg#ifdef HAVE_STDLIB_H 2133d522f475Smrg#include <stdlib.h> 2134d522f475Smrg#endif 2135d522f475Smrg#include <unistd.h> 2136f2e35a3aSmrgint main(void) 2137d522f475Smrg{ 2138d522f475Smrg void *p = (void *) seteuid; 2139d522f475Smrg long code = sysconf(_SC_SAVED_IDS); 2140f2e35a3aSmrg (void)p; 2141d522f475Smrg ${cf_cv_main_return:-return} ((code > 0) ? 0 : 1); 2142d522f475Smrg}], 2143d522f475Smrg cf_cv_posix_saved_ids=yes, 2144d522f475Smrg cf_cv_posix_saved_ids=no, 2145d522f475Smrg cf_cv_posix_saved_ids=unknown) 2146d522f475Smrg]) 2147d522f475Smrg]) 2148d522f475Smrg 21490bd37d32Smrgtest "$cf_cv_posix_saved_ids" = yes && AC_DEFINE(HAVE_POSIX_SAVED_IDS,1,[Define to 1 if POSIX saved-ids are supported]) 2150d522f475Smrg]) 2151d522f475Smrgdnl --------------------------------------------------------------------------- 2152f2e35a3aSmrgdnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17 2153f2e35a3aSmrgdnl ---------------- 2154f2e35a3aSmrgdnl POSIX documents test-macros which an application may set before any system 2155f2e35a3aSmrgdnl headers are included to make features available. 2156f2e35a3aSmrgdnl 2157f2e35a3aSmrgdnl Some BSD platforms (originally FreeBSD, but copied by a few others) 2158f2e35a3aSmrgdnl diverged from POSIX in 2002 by setting symbols which make all of the most 2159f2e35a3aSmrgdnl recent features visible in the system header files unless the application 2160f2e35a3aSmrgdnl overrides the corresponding test-macros. Doing that introduces portability 2161f2e35a3aSmrgdnl problems. 2162f2e35a3aSmrgdnl 2163f2e35a3aSmrgdnl This macro makes a special check for the symbols used for this, to avoid a 2164f2e35a3aSmrgdnl conflicting definition. 2165f2e35a3aSmrgAC_DEFUN([CF_POSIX_VISIBLE], 2166f2e35a3aSmrg[ 2167f2e35a3aSmrgAC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[ 2168f2e35a3aSmrgAC_TRY_COMPILE([#include <stdio.h>],[ 2169f2e35a3aSmrg#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \ 2170f2e35a3aSmrg && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \ 2171f2e35a3aSmrg && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \ 2172f2e35a3aSmrg && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0) 2173f2e35a3aSmrg#error conflicting symbols found 2174f2e35a3aSmrg#endif 2175f2e35a3aSmrg],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes]) 2176f2e35a3aSmrg]) 2177f2e35a3aSmrg])dnl 2178f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2179f2e35a3aSmrgdnl CF_POSIX_WAIT version: 4 updated: 2020/03/10 18:53:47 2180d522f475Smrgdnl ------------- 2181d522f475Smrgdnl Check for POSIX wait support 2182d522f475SmrgAC_DEFUN([CF_POSIX_WAIT], 2183d522f475Smrg[ 2184d522f475SmrgAC_REQUIRE([AC_HEADER_SYS_WAIT]) 2185d522f475SmrgAC_CACHE_CHECK(for POSIX wait functions,cf_cv_posix_wait,[ 2186d522f475SmrgAC_TRY_LINK([ 2187d522f475Smrg#include <stdlib.h> 2188d522f475Smrg#include <stdio.h> 2189d522f475Smrg#include <sys/types.h> 2190d522f475Smrg#ifdef HAVE_SYS_WAIT_H 2191d522f475Smrg#include <sys/wait.h> 2192d522f475Smrg#endif 2193d522f475Smrg],[ 2194d522f475Smrg int stat_loc; 2195d522f475Smrg pid_t pid = waitpid(-1, &stat_loc, WNOHANG|WUNTRACED); 2196d522f475Smrg pid_t pid2 = wait(&stat_loc); 2197f2e35a3aSmrg (void)pid; 2198f2e35a3aSmrg (void)pid2; 2199d522f475Smrg], 2200d522f475Smrg[cf_cv_posix_wait=yes], 2201d522f475Smrg[cf_cv_posix_wait=no]) 2202d522f475Smrg]) 22030bd37d32Smrgtest "$cf_cv_posix_wait" = yes && AC_DEFINE(USE_POSIX_WAIT,1,[Define to 1 if we have POSIX wait functions]) 2204d522f475Smrg])dnl 2205d522f475Smrgdnl --------------------------------------------------------------------------- 2206f2e35a3aSmrgdnl CF_PROCFS_CWD version: 4 updated: 2020/12/31 18:40:20 2207d522f475Smrgdnl ------------- 2208d522f475Smrgdnl Find /proc tree (may be in a different place) which implements the "cwd" 2209d522f475Smrgdnl link. 2210d522f475SmrgAC_DEFUN([CF_PROCFS_CWD],[ 2211d522f475SmrgAC_CACHE_CHECK(for proc tree with cwd-support,cf_cv_procfs_cwd,[ 2212d522f475Smrgcf_cv_procfs_cwd=no 2213d522f475Smrgfor cf_path in /proc /compat/linux/proc /usr/compat/linux/proc 2214d522f475Smrgdo 2215f2e35a3aSmrg if test -d "$cf_path" && \ 2216f2e35a3aSmrg test -d "$cf_path"/$$ && \ 2217f2e35a3aSmrg { test -d "$cf_path"/$$/cwd || \ 2218f2e35a3aSmrg test -L "$cf_path"/$$/cwd; }; then 2219f2e35a3aSmrg cf_cv_procfs_cwd="$cf_path" 2220d522f475Smrg break 2221d522f475Smrg fi 2222d522f475Smrgdone 2223d522f475Smrg]) 2224d522f475Smrg])dnl 2225d522f475Smrgdnl --------------------------------------------------------------------------- 2226f2e35a3aSmrgdnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54 22270bd37d32Smrgdnl ---------- 22280bd37d32Smrgdnl standard check for CC, plus followup sanity checks 22290bd37d32Smrgdnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name 22300bd37d32SmrgAC_DEFUN([CF_PROG_CC],[ 2231f2e35a3aSmrgCF_ACVERSION_CHECK(2.53, 2232f2e35a3aSmrg [AC_MSG_WARN(this will incorrectly handle gnatgcc choice) 2233f2e35a3aSmrg AC_REQUIRE([AC_PROG_CC])], 2234f2e35a3aSmrg []) 22350bd37d32Smrgifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)]) 22360bd37d32SmrgCF_GCC_VERSION 22370bd37d32SmrgCF_ACVERSION_CHECK(2.52, 22380bd37d32Smrg [AC_PROG_CC_STDC], 22390bd37d32Smrg [CF_ANSI_CC_REQD]) 224001037d57SmrgCF_CC_ENV_FLAGS 2241d522f475Smrg])dnl 2242d522f475Smrgdnl --------------------------------------------------------------------------- 2243f2e35a3aSmrgdnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19 22440bd37d32Smrgdnl ------------- 22450bd37d32Smrgdnl Check if groff is available, for cases (such as html output) where nroff 22460bd37d32Smrgdnl is not enough. 22470bd37d32SmrgAC_DEFUN([CF_PROG_GROFF],[ 22480bd37d32SmrgAC_PATH_PROG(GROFF_PATH,groff,no) 2249f2e35a3aSmrgAC_PATH_PROGS(NROFF_PATH,nroff mandoc,no) 2250f2e35a3aSmrgAC_PATH_PROG(TBL_PATH,tbl,cat) 22510bd37d32Smrgif test "x$GROFF_PATH" = xno 22520bd37d32Smrgthen 22530bd37d32Smrg NROFF_NOTE= 22540bd37d32Smrg GROFF_NOTE="#" 22550bd37d32Smrgelse 22560bd37d32Smrg NROFF_NOTE="#" 22570bd37d32Smrg GROFF_NOTE= 22580bd37d32Smrgfi 22590bd37d32SmrgAC_SUBST(GROFF_NOTE) 22600bd37d32SmrgAC_SUBST(NROFF_NOTE) 2261d522f475Smrg])dnl 2262d522f475Smrgdnl --------------------------------------------------------------------------- 2263f2e35a3aSmrgdnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37 22642e4f8982Smrgdnl ------------ 22652e4f8982SmrgAC_DEFUN([CF_PROG_LINT], 22662e4f8982Smrg[ 22672e4f8982SmrgAC_CHECK_PROGS(LINT, lint cppcheck splint) 2268f2e35a3aSmrgcase "x$LINT" in 2269f2e35a3aSmrg(xcppcheck|x*/cppcheck) 2270f2e35a3aSmrg test -z "$LINT_OPTS" && LINT_OPTS="--enable=all" 2271f2e35a3aSmrg ;; 2272f2e35a3aSmrgesac 22732e4f8982SmrgAC_SUBST(LINT_OPTS) 22742e4f8982Smrg])dnl 22752e4f8982Smrgdnl --------------------------------------------------------------------------- 2276f2e35a3aSmrgdnl CF_REGEX version: 18 updated: 2021/01/01 16:53:59 2277d522f475Smrgdnl -------- 2278d522f475Smrgdnl Attempt to determine if we've got one of the flavors of regular-expression 2279d522f475Smrgdnl code that we can support. 2280d522f475SmrgAC_DEFUN([CF_REGEX], 2281d522f475Smrg[ 228220d2c4d2Smrg 228320d2c4d2Smrgcf_regex_func=no 2284f2e35a3aSmrgcf_regex_libs= 2285f2e35a3aSmrgcase "$host_os" in 228601037d57Smrg(mingw*) 2287f2e35a3aSmrg # -lsystre -ltre -lintl -liconv 2288f2e35a3aSmrg AC_CHECK_LIB(systre,regcomp,[ 2289f2e35a3aSmrg AC_CHECK_LIB(iconv,libiconv_open,[CF_ADD_LIB(iconv)]) 2290f2e35a3aSmrg AC_CHECK_LIB(intl,libintl_gettext,[CF_ADD_LIB(intl)]) 2291f2e35a3aSmrg AC_CHECK_LIB(tre,tre_regcomp,[CF_ADD_LIB(tre)]) 2292f2e35a3aSmrg CF_ADD_LIB(systre) 2293f2e35a3aSmrg cf_regex_func=regcomp 2294f2e35a3aSmrg ],[ 2295f2e35a3aSmrg AC_CHECK_LIB(gnurx,regcomp,[ 2296f2e35a3aSmrg CF_ADD_LIB(gnurx) 2297f2e35a3aSmrg cf_regex_func=regcomp]) 2298f2e35a3aSmrg ]) 2299f2e35a3aSmrg ;; 2300f2e35a3aSmrg(*) 2301f2e35a3aSmrg cf_regex_libs="regex re" 2302f2e35a3aSmrg AC_CHECK_FUNC(regcomp,[cf_regex_func=regcomp],[ 2303f2e35a3aSmrg for cf_regex_lib in $cf_regex_libs 2304f2e35a3aSmrg do 2305f2e35a3aSmrg AC_CHECK_LIB($cf_regex_lib,regcomp,[ 2306f2e35a3aSmrg CF_ADD_LIB($cf_regex_lib) 2307f2e35a3aSmrg cf_regex_func=regcomp 2308f2e35a3aSmrg break]) 2309f2e35a3aSmrg done 2310f2e35a3aSmrg ]) 23116879286fSmrg ;; 23126879286fSmrgesac 23136879286fSmrg 231420d2c4d2Smrgif test "$cf_regex_func" = no ; then 231520d2c4d2Smrg AC_CHECK_FUNC(compile,[cf_regex_func=compile],[ 231620d2c4d2Smrg AC_CHECK_LIB(gen,compile,[ 231720d2c4d2Smrg CF_ADD_LIB(gen) 231820d2c4d2Smrg cf_regex_func=compile])]) 231920d2c4d2Smrgfi 232020d2c4d2Smrg 232120d2c4d2Smrgif test "$cf_regex_func" = no ; then 232220d2c4d2Smrg AC_MSG_WARN(cannot find regular expression library) 232320d2c4d2Smrgfi 232420d2c4d2Smrg 232520d2c4d2SmrgAC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[ 232620d2c4d2Smrg 232720d2c4d2Smrgcf_cv_regex_hdrs=no 2328f2e35a3aSmrgcase "$cf_regex_func" in 232901037d57Smrg(compile) 233020d2c4d2Smrg for cf_regex_hdr in regexp.h regexpr.h 233120d2c4d2Smrg do 233220d2c4d2Smrg AC_TRY_LINK([#include <$cf_regex_hdr>],[ 233320d2c4d2Smrg char *p = compile("", "", "", 0); 2334d522f475Smrg int x = step("", ""); 2335f2e35a3aSmrg (void)p; 2336f2e35a3aSmrg (void)x; 233720d2c4d2Smrg ],[ 233820d2c4d2Smrg cf_cv_regex_hdrs=$cf_regex_hdr 233920d2c4d2Smrg break 234020d2c4d2Smrg ]) 234120d2c4d2Smrg done 234220d2c4d2Smrg ;; 234301037d57Smrg(*) 234420d2c4d2Smrg for cf_regex_hdr in regex.h 234520d2c4d2Smrg do 234620d2c4d2Smrg AC_TRY_LINK([#include <sys/types.h> 234720d2c4d2Smrg#include <$cf_regex_hdr>],[ 2348f2e35a3aSmrg regex_t *p = 0; 234920d2c4d2Smrg int x = regcomp(p, "", 0); 235020d2c4d2Smrg int y = regexec(p, "", 0, 0, 0); 2351f2e35a3aSmrg (void)x; 2352f2e35a3aSmrg (void)y; 235320d2c4d2Smrg regfree(p); 235420d2c4d2Smrg ],[ 235520d2c4d2Smrg cf_cv_regex_hdrs=$cf_regex_hdr 235620d2c4d2Smrg break 235720d2c4d2Smrg ]) 235820d2c4d2Smrg done 235920d2c4d2Smrg ;; 236020d2c4d2Smrgesac 236120d2c4d2Smrg 2362d522f475Smrg]) 236320d2c4d2Smrg 2364f2e35a3aSmrgcase "$cf_cv_regex_hdrs" in 23652e4f8982Smrg (no) AC_MSG_WARN(no regular expression header found) ;; 23662e4f8982Smrg (regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;; 23672e4f8982Smrg (regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;; 23682e4f8982Smrg (regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;; 2369d522f475Smrgesac 2370d522f475Smrg])dnl 2371d522f475Smrgdnl --------------------------------------------------------------------------- 237220d2c4d2Smrgdnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 2373d522f475Smrgdnl ---------------- 2374d522f475Smrgdnl Remove all -U and -D options that refer to the given symbol from a list 2375d522f475Smrgdnl of C compiler options. This works around the problem that not all 2376d522f475Smrgdnl compilers process -U and -D options from left-to-right, so a -U option 2377d522f475Smrgdnl cannot be used to cancel the effect of a preceding -D option. 2378d522f475Smrgdnl 2379d522f475Smrgdnl $1 = target (which could be the same as the source variable) 2380d522f475Smrgdnl $2 = source (including '$') 2381d522f475Smrgdnl $3 = symbol to remove 2382d522f475Smrgdefine([CF_REMOVE_DEFINE], 2383d522f475Smrg[ 2384d522f475Smrg$1=`echo "$2" | \ 238520d2c4d2Smrg sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ 238620d2c4d2Smrg -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` 238720d2c4d2Smrg])dnl 238820d2c4d2Smrgdnl --------------------------------------------------------------------------- 2389f2e35a3aSmrgdnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45 2390f2e35a3aSmrgdnl --------------------- 2391f2e35a3aSmrgdnl Restore flags saved in CF_SAVE_XTRA_FLAGS 2392f2e35a3aSmrgdnl $1 = name of current macro 2393f2e35a3aSmrgdefine([CF_RESTORE_XTRA_FLAGS], 2394f2e35a3aSmrg[ 2395f2e35a3aSmrgLIBS="$cf_save_LIBS_$1" 2396f2e35a3aSmrgCFLAGS="$cf_save_CFLAGS_$1" 2397f2e35a3aSmrgCPPFLAGS="$cf_save_CPPFLAGS_$1" 2398f2e35a3aSmrg])dnl 2399f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2400f2e35a3aSmrgdnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50 240120d2c4d2Smrgdnl ------------- 240220d2c4d2SmrgAC_DEFUN([CF_RPATH_HACK], 2403f2e35a3aSmrg[AC_REQUIRE([AC_PROG_FGREP])dnl 2404f2e35a3aSmrgAC_REQUIRE([CF_LD_RPATH_OPT])dnl 2405f2e35a3aSmrg 240620d2c4d2SmrgAC_MSG_CHECKING(for updated LDFLAGS) 240720d2c4d2Smrgif test -n "$LD_RPATH_OPT" ; then 240820d2c4d2Smrg AC_MSG_RESULT(maybe) 240920d2c4d2Smrg 241020d2c4d2Smrg AC_CHECK_PROGS(cf_ldd_prog,ldd,no) 241120d2c4d2Smrg cf_rpath_list="/usr/lib /lib" 241220d2c4d2Smrg if test "$cf_ldd_prog" != no 241320d2c4d2Smrg then 2414a1f3da82Smrg cf_rpath_oops= 2415a1f3da82Smrg 241620d2c4d2SmrgAC_TRY_LINK([#include <stdio.h>], 241720d2c4d2Smrg [printf("Hello");], 2418f2e35a3aSmrg [cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq` 2419f2e35a3aSmrg cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`]) 2420a1f3da82Smrg 2421a1f3da82Smrg # If we passed the link-test, but get a "not found" on a given library, 2422a1f3da82Smrg # this could be due to inept reconfiguration of gcc to make it only 2423a1f3da82Smrg # partly honor /usr/local/lib (or whatever). Sometimes this behavior 2424a1f3da82Smrg # is intentional, e.g., installing gcc in /usr/bin and suppressing the 2425a1f3da82Smrg # /usr/local libraries. 2426a1f3da82Smrg if test -n "$cf_rpath_oops" 2427a1f3da82Smrg then 2428a1f3da82Smrg for cf_rpath_src in $cf_rpath_oops 2429a1f3da82Smrg do 2430a1f3da82Smrg for cf_rpath_dir in \ 2431a1f3da82Smrg /usr/local \ 2432a1f3da82Smrg /usr/pkg \ 2433a1f3da82Smrg /opt/sfw 2434a1f3da82Smrg do 2435f2e35a3aSmrg if test -f "$cf_rpath_dir/lib/$cf_rpath_src" 2436a1f3da82Smrg then 2437a1f3da82Smrg CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src) 2438a1f3da82Smrg LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" 2439a1f3da82Smrg break 2440a1f3da82Smrg fi 2441a1f3da82Smrg done 2442a1f3da82Smrg done 2443a1f3da82Smrg fi 244420d2c4d2Smrg fi 244520d2c4d2Smrg 244620d2c4d2Smrg CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS) 244720d2c4d2Smrg 244820d2c4d2Smrg CF_RPATH_HACK_2(LDFLAGS) 244920d2c4d2Smrg CF_RPATH_HACK_2(LIBS) 245020d2c4d2Smrg 245120d2c4d2Smrg CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS) 2452e0a2b6dfSmrgelse 2453e0a2b6dfSmrg AC_MSG_RESULT(no) 245420d2c4d2Smrgfi 245520d2c4d2SmrgAC_SUBST(EXTRA_LDFLAGS) 245620d2c4d2Smrg])dnl 245720d2c4d2Smrgdnl --------------------------------------------------------------------------- 2458f2e35a3aSmrgdnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04 245920d2c4d2Smrgdnl --------------- 246020d2c4d2Smrgdnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to 246120d2c4d2Smrgdnl EXTRA_LDFLAGS for each -L option found. 246220d2c4d2Smrgdnl 246320d2c4d2Smrgdnl $cf_rpath_list contains a list of directories to ignore. 246420d2c4d2Smrgdnl 246520d2c4d2Smrgdnl $1 = variable name to update. The LDFLAGS variable should be the only one, 246620d2c4d2Smrgdnl but LIBS often has misplaced -L options. 246720d2c4d2SmrgAC_DEFUN([CF_RPATH_HACK_2], 246820d2c4d2Smrg[ 246920d2c4d2SmrgCF_VERBOSE(...checking $1 [$]$1) 247020d2c4d2Smrg 247120d2c4d2Smrgcf_rpath_dst= 247220d2c4d2Smrgfor cf_rpath_src in [$]$1 247320d2c4d2Smrgdo 2474f2e35a3aSmrg case "$cf_rpath_src" in 247501037d57Smrg (-L*) 247620d2c4d2Smrg 247720d2c4d2Smrg # check if this refers to a directory which we will ignore 247820d2c4d2Smrg cf_rpath_skip=no 247920d2c4d2Smrg if test -n "$cf_rpath_list" 248020d2c4d2Smrg then 248120d2c4d2Smrg for cf_rpath_item in $cf_rpath_list 248220d2c4d2Smrg do 248320d2c4d2Smrg if test "x$cf_rpath_src" = "x-L$cf_rpath_item" 248420d2c4d2Smrg then 248520d2c4d2Smrg cf_rpath_skip=yes 248620d2c4d2Smrg break 248720d2c4d2Smrg fi 248820d2c4d2Smrg done 248920d2c4d2Smrg fi 249020d2c4d2Smrg 249120d2c4d2Smrg if test "$cf_rpath_skip" = no 249220d2c4d2Smrg then 249320d2c4d2Smrg # transform the option 249420d2c4d2Smrg if test "$LD_RPATH_OPT" = "-R " ; then 249520d2c4d2Smrg cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` 249620d2c4d2Smrg else 249720d2c4d2Smrg cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` 249820d2c4d2Smrg fi 249920d2c4d2Smrg 250020d2c4d2Smrg # if we have not already added this, add it now 250120d2c4d2Smrg cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` 250220d2c4d2Smrg if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" 250320d2c4d2Smrg then 250420d2c4d2Smrg CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp) 250520d2c4d2Smrg EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" 250620d2c4d2Smrg fi 250720d2c4d2Smrg fi 250820d2c4d2Smrg ;; 250920d2c4d2Smrg esac 251020d2c4d2Smrg cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" 251120d2c4d2Smrgdone 251220d2c4d2Smrg$1=$cf_rpath_dst 251320d2c4d2Smrg 251420d2c4d2SmrgCF_VERBOSE(...checked $1 [$]$1) 251520d2c4d2SmrgAC_SUBST(EXTRA_LDFLAGS) 2516d522f475Smrg])dnl 2517d522f475Smrgdnl --------------------------------------------------------------------------- 2518f2e35a3aSmrgdnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44 2519f2e35a3aSmrgdnl ------------------ 2520f2e35a3aSmrgdnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers 2521f2e35a3aSmrgdnl and libraries which do not update those variables. 2522f2e35a3aSmrgdnl 2523f2e35a3aSmrgdnl $1 = name of current macro 2524f2e35a3aSmrgdefine([CF_SAVE_XTRA_FLAGS], 2525f2e35a3aSmrg[ 2526f2e35a3aSmrgcf_save_LIBS_$1="$LIBS" 2527f2e35a3aSmrgcf_save_CFLAGS_$1="$CFLAGS" 2528f2e35a3aSmrgcf_save_CPPFLAGS_$1="$CPPFLAGS" 2529f2e35a3aSmrgLIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" 2530f2e35a3aSmrgfor cf_X_CFLAGS in $X_CFLAGS 2531f2e35a3aSmrgdo 2532f2e35a3aSmrg case "x$cf_X_CFLAGS" in 2533f2e35a3aSmrg x-[[IUD]]*) 2534f2e35a3aSmrg CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" 2535f2e35a3aSmrg ;; 2536f2e35a3aSmrg *) 2537f2e35a3aSmrg CFLAGS="$CFLAGS $cf_X_CFLAGS" 2538f2e35a3aSmrg ;; 2539f2e35a3aSmrg esac 2540f2e35a3aSmrgdone 2541f2e35a3aSmrg])dnl 2542f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2543f2e35a3aSmrgdnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04 2544d522f475Smrgdnl ----------- 2545d522f475Smrgdnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all 2546d522f475Smrgdnl programs need this test). 2547d522f475Smrgdnl 2548f2e35a3aSmrgdnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE 2549d522f475Smrgdnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct 2550d522f475Smrgdnl winsize declaration is left alone - we may revisit this if Apple choose to 2551d522f475Smrgdnl break that part of the interface as well. 2552d522f475SmrgAC_DEFUN([CF_SIGWINCH], 2553d522f475Smrg[ 2554d522f475SmrgAC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[ 2555d522f475Smrg AC_TRY_COMPILE([ 2556d522f475Smrg#include <sys/types.h> 2557d522f475Smrg#include <sys/signal.h> 2558f2e35a3aSmrg],[int x = SIGWINCH; (void)x], 2559d522f475Smrg [cf_cv_define_sigwinch=yes], 2560d522f475Smrg [AC_TRY_COMPILE([ 2561d522f475Smrg#undef _XOPEN_SOURCE 2562d522f475Smrg#undef _POSIX_SOURCE 2563d522f475Smrg#undef _POSIX_C_SOURCE 2564d522f475Smrg#include <sys/types.h> 2565d522f475Smrg#include <sys/signal.h> 2566f2e35a3aSmrg],[int x = SIGWINCH; (void)x], 2567d522f475Smrg [cf_cv_define_sigwinch=maybe], 2568d522f475Smrg [cf_cv_define_sigwinch=no]) 2569d522f475Smrg]) 2570d522f475Smrg]) 2571d522f475Smrg 2572d522f475Smrgif test "$cf_cv_define_sigwinch" = maybe ; then 2573d522f475SmrgAC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[ 2574d522f475Smrgcf_cv_fixup_sigwinch=unknown 2575d522f475Smrgcf_sigwinch=32 2576f2e35a3aSmrgwhile test "$cf_sigwinch" != 1 2577d522f475Smrgdo 2578d522f475Smrg AC_TRY_COMPILE([ 2579d522f475Smrg#undef _XOPEN_SOURCE 2580d522f475Smrg#undef _POSIX_SOURCE 2581d522f475Smrg#undef _POSIX_C_SOURCE 2582d522f475Smrg#include <sys/types.h> 2583d522f475Smrg#include <sys/signal.h> 2584d522f475Smrg],[ 2585d522f475Smrg#if SIGWINCH != $cf_sigwinch 2586d522f475Smrgmake an error 2587d522f475Smrg#endif 2588f2e35a3aSmrgint x = SIGWINCH; (void)x], 2589d522f475Smrg [cf_cv_fixup_sigwinch=$cf_sigwinch 2590d522f475Smrg break]) 2591d522f475Smrg 2592f2e35a3aSmrgcf_sigwinch="`expr "$cf_sigwinch" - 1`" 2593d522f475Smrgdone 2594d522f475Smrg]) 2595d522f475Smrg 2596d522f475Smrg if test "$cf_cv_fixup_sigwinch" != unknown ; then 2597d522f475Smrg CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" 2598d522f475Smrg fi 2599d522f475Smrgfi 2600d522f475Smrg])dnl 2601d522f475Smrgdnl --------------------------------------------------------------------------- 2602f2e35a3aSmrgdnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47 2603d522f475Smrgdnl --------------- 2604f2e35a3aSmrgdnl signal handler, but there are some gcc dependencies in that recommendation. 2605d522f475Smrgdnl Try anyway. 2606d522f475SmrgAC_DEFUN([CF_SIG_ATOMIC_T], 2607d522f475Smrg[ 2608d522f475SmrgAC_MSG_CHECKING(for signal global datatype) 2609d522f475SmrgAC_CACHE_VAL(cf_cv_sig_atomic_t,[ 2610d522f475Smrg for cf_type in \ 2611d522f475Smrg "volatile sig_atomic_t" \ 2612d522f475Smrg "sig_atomic_t" \ 2613d522f475Smrg "int" 2614d522f475Smrg do 2615d522f475Smrg AC_TRY_COMPILE([ 2616d522f475Smrg#include <sys/types.h> 2617d522f475Smrg#include <signal.h> 2618d522f475Smrg#include <stdio.h> 2619d522f475Smrg 2620d522f475Smrgextern $cf_type x; 2621d522f475Smrg$cf_type x; 2622d522f475Smrgstatic void handler(int sig) 2623d522f475Smrg{ 2624f2e35a3aSmrg (void)sig; 2625d522f475Smrg x = 5; 2626d522f475Smrg}], 2627d522f475Smrg [signal(SIGINT, handler); 2628d522f475Smrg x = 1], 2629d522f475Smrg [cf_cv_sig_atomic_t=$cf_type], 2630d522f475Smrg [cf_cv_sig_atomic_t=no]) 2631d522f475Smrg test "$cf_cv_sig_atomic_t" != no && break 2632d522f475Smrg done 2633d522f475Smrg ]) 2634d522f475SmrgAC_MSG_RESULT($cf_cv_sig_atomic_t) 26350bd37d32Smrgtest "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype]) 2636d522f475Smrg])dnl 2637d522f475Smrgdnl --------------------------------------------------------------------------- 2638f2e35a3aSmrgdnl CF_STRUCT_LASTLOG version: 3 updated: 2020/03/10 18:53:47 2639d522f475Smrgdnl ----------------- 2640d522f475Smrgdnl Check for header defining struct lastlog, ensure that its .ll_time member 2641d522f475Smrgdnl is compatible with time(). 2642d522f475SmrgAC_DEFUN([CF_STRUCT_LASTLOG], 2643d522f475Smrg[ 2644d522f475SmrgAC_CHECK_HEADERS(lastlog.h) 2645d522f475SmrgAC_CACHE_CHECK(for struct lastlog,cf_cv_struct_lastlog,[ 2646d522f475SmrgAC_TRY_RUN([ 2647d522f475Smrg#include <sys/types.h> 2648d522f475Smrg#include <time.h> 2649d522f475Smrg#include <lastlog.h> 2650d522f475Smrg 2651f2e35a3aSmrgint main(void) 2652d522f475Smrg{ 2653d522f475Smrg struct lastlog data; 2654d522f475Smrg return (sizeof(data.ll_time) != sizeof(time_t)); 2655d522f475Smrg}],[ 2656d522f475Smrgcf_cv_struct_lastlog=yes],[ 2657d522f475Smrgcf_cv_struct_lastlog=no],[ 2658d522f475Smrgcf_cv_struct_lastlog=unknown])]) 2659d522f475Smrg 26600bd37d32Smrgtest $cf_cv_struct_lastlog != no && AC_DEFINE(USE_STRUCT_LASTLOG,1,[Define to 1 if we have struct lastlog]) 2661d522f475Smrg])dnl 2662d522f475Smrgdnl --------------------------------------------------------------------------- 26630bd37d32Smrgdnl CF_SVR4 version: 5 updated: 2012/10/04 05:24:07 2664d522f475Smrgdnl ------- 2665d522f475Smrgdnl Check if this is an SVR4 system. We need the definition for xterm 2666d522f475SmrgAC_DEFUN([CF_SVR4], 2667d522f475Smrg[ 2668d522f475SmrgAC_CHECK_LIB(elf, elf_begin,[ 2669d522f475SmrgAC_CACHE_CHECK(if this is an SVR4 system, cf_cv_svr4,[ 2670d522f475SmrgAC_TRY_COMPILE([ 26710bd37d32Smrg#if defined(__CYGWIN__) 26720bd37d32Smrgmake an error 26730bd37d32Smrg#endif 2674d522f475Smrg#include <elf.h> 2675d522f475Smrg#include <sys/termio.h> 2676d522f475Smrg],[ 2677d522f475Smrgstatic struct termio d_tio; 2678d522f475Smrg d_tio.c_cc[VINTR] = 0; 2679d522f475Smrg d_tio.c_cc[VQUIT] = 0; 2680d522f475Smrg d_tio.c_cc[VERASE] = 0; 2681d522f475Smrg d_tio.c_cc[VKILL] = 0; 2682d522f475Smrg d_tio.c_cc[VEOF] = 0; 2683d522f475Smrg d_tio.c_cc[VEOL] = 0; 2684d522f475Smrg d_tio.c_cc[VMIN] = 0; 2685d522f475Smrg d_tio.c_cc[VTIME] = 0; 2686d522f475Smrg d_tio.c_cc[VLNEXT] = 0; 2687d522f475Smrg], 2688d522f475Smrg[cf_cv_svr4=yes], 2689d522f475Smrg[cf_cv_svr4=no]) 2690d522f475Smrg]) 2691d522f475Smrg]) 26920bd37d32Smrgtest "$cf_cv_svr4" = yes && AC_DEFINE(SVR4,1,[Define to 1 if this is an SVR4 system]) 2693d522f475Smrg])dnl 2694d522f475Smrgdnl --------------------------------------------------------------------------- 2695f2e35a3aSmrgdnl CF_SYSV version: 16 updated: 2020/01/11 16:46:44 2696d522f475Smrgdnl ------- 2697d522f475Smrgdnl Check if this is a SYSV platform, e.g., as used in <X11/Xos.h>, and whether 2698d522f475Smrgdnl defining it will be helpful. The following features are used to check: 2699d522f475Smrgdnl 2700d522f475Smrgdnl a) bona-fide SVSV doesn't use const for sys_errlist[]. Since this is a 2701d522f475Smrgdnl legacy (pre-ANSI) feature, const should not apply. Modern systems only 2702d522f475Smrgdnl declare strerror(). Xos.h declares the legacy form of str_errlist[], and 2703d522f475Smrgdnl a compile-time error will result from trying to assign to a const array. 2704d522f475Smrgdnl 2705d522f475Smrgdnl b) compile with headers that exist on SYSV hosts. 2706d522f475Smrgdnl 2707d522f475Smrgdnl c) compile with type definitions that differ on SYSV hosts from standard C. 2708d522f475SmrgAC_DEFUN([CF_SYSV], 2709d522f475Smrg[ 2710f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 2711f2e35a3aSmrg 2712f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_SYSV]) 2713f2e35a3aSmrg 2714d522f475SmrgAC_CHECK_HEADERS( \ 2715d522f475Smrgtermios.h \ 2716d522f475Smrgstdlib.h \ 2717d522f475SmrgX11/Intrinsic.h \ 2718d522f475Smrg) 2719d522f475Smrg 2720d522f475SmrgAC_REQUIRE([CF_SYS_ERRLIST]) 2721d522f475Smrg 2722d522f475SmrgAC_CACHE_CHECK(if we should define SYSV,cf_cv_sysv,[ 2723d522f475SmrgAC_TRY_COMPILE([ 2724d522f475Smrg#undef SYSV 2725d522f475Smrg#define SYSV 1 /* get Xos.h to declare sys_errlist[] */ 2726d522f475Smrg#ifdef HAVE_STDLIB_H 2727d522f475Smrg#include <stdlib.h> /* look for wchar_t */ 2728d522f475Smrg#endif 2729d522f475Smrg#ifdef HAVE_X11_INTRINSIC_H 2730d522f475Smrg#include <X11/Intrinsic.h> /* Intrinsic.h has other traps... */ 2731d522f475Smrg#endif 27320bd37d32Smrg#ifdef HAVE_TERMIOS_H /* needed for HPUX 10.20 */ 27330bd37d32Smrg#include <termios.h> 27340bd37d32Smrg#define STRUCT_TERMIOS struct termios 27350bd37d32Smrg#else 27360bd37d32Smrg#define STRUCT_TERMIOS struct termio 27370bd37d32Smrg#endif 2738d522f475Smrg#include <curses.h> 2739d522f475Smrg#include <term.h> /* eliminate most BSD hacks */ 2740d522f475Smrg#include <errno.h> /* declare sys_errlist on older systems */ 2741d522f475Smrg#include <sys/termio.h> /* eliminate most of the remaining ones */ 2742d522f475Smrg],[ 2743d522f475Smrgstatic STRUCT_TERMIOS d_tio; 2744d522f475Smrg d_tio.c_cc[VINTR] = 0; 2745d522f475Smrg d_tio.c_cc[VQUIT] = 0; 2746d522f475Smrg d_tio.c_cc[VERASE] = 0; 2747d522f475Smrg d_tio.c_cc[VKILL] = 0; 2748d522f475Smrg d_tio.c_cc[VEOF] = 0; 2749d522f475Smrg d_tio.c_cc[VEOL] = 0; 2750d522f475Smrg d_tio.c_cc[VMIN] = 0; 2751d522f475Smrg d_tio.c_cc[VTIME] = 0; 2752d522f475Smrg#if defined(HAVE_SYS_ERRLIST) && !defined(DECL_SYS_ERRLIST) 2753d522f475Smrgsys_errlist[0] = ""; /* Cygwin mis-declares this */ 2754d522f475Smrg#endif 2755d522f475Smrg], 2756d522f475Smrg[cf_cv_sysv=yes], 2757d522f475Smrg[cf_cv_sysv=no]) 2758d522f475Smrg]) 27590bd37d32Smrgtest "$cf_cv_sysv" = yes && AC_DEFINE(SYSV,1,[Define to 1 if this is an SYSV system]) 2760f2e35a3aSmrg 2761f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_SYSV]) 2762d522f475Smrg])dnl 2763d522f475Smrgdnl --------------------------------------------------------------------------- 2764f2e35a3aSmrgdnl CF_SYSV_UTMP version: 7 updated: 2021/01/02 09:31:20 2765d522f475Smrgdnl ------------ 2766d522f475Smrgdnl Check if this is a SYSV flavor of UTMP 2767d522f475SmrgAC_DEFUN([CF_SYSV_UTMP], 2768d522f475Smrg[ 2769d522f475SmrgAC_CACHE_CHECK(if $cf_cv_have_utmp is SYSV flavor,cf_cv_sysv_utmp,[ 2770d522f475Smrgtest "$cf_cv_have_utmp" = "utmp" && cf_prefix="ut" || cf_prefix="utx" 2771d522f475SmrgAC_TRY_LINK([ 2772d522f475Smrg#include <sys/types.h> 2773d522f475Smrg#include <${cf_cv_have_utmp}.h>],[ 2774d522f475Smrgstruct $cf_cv_have_utmp x; 2775d522f475Smrg set${cf_prefix}ent (); 2776d522f475Smrg get${cf_prefix}id(&x); 2777d522f475Smrg put${cf_prefix}line(&x); 2778d522f475Smrg end${cf_prefix}ent();], 2779d522f475Smrg [cf_cv_sysv_utmp=yes], 2780d522f475Smrg [cf_cv_sysv_utmp=no]) 2781d522f475Smrg]) 2782f2e35a3aSmrgtest "$cf_cv_sysv_utmp" = yes && AC_DEFINE(USE_SYSV_UTMP,1,[Define to 1 if utmp is SYSV flavor]) 2783d522f475Smrg])dnl 2784d522f475Smrgdnl --------------------------------------------------------------------------- 2785d522f475Smrgdnl CF_SYS_ERRLIST version: 6 updated: 2001/12/30 13:03:23 2786d522f475Smrgdnl -------------- 2787d522f475Smrgdnl Check for declaration of sys_nerr and sys_errlist in one of stdio.h and 2788d522f475Smrgdnl errno.h. Declaration of sys_errlist on BSD4.4 interferes with our 2789d522f475Smrgdnl declaration. Reported by Keith Bostic. 2790d522f475SmrgAC_DEFUN([CF_SYS_ERRLIST], 2791d522f475Smrg[ 2792d522f475Smrg CF_CHECK_ERRNO(sys_nerr) 2793d522f475Smrg CF_CHECK_ERRNO(sys_errlist) 2794d522f475Smrg])dnl 2795d522f475Smrgdnl --------------------------------------------------------------------------- 2796f2e35a3aSmrgdnl CF_TERMIOS_TYPES version: 2 updated: 2020/03/10 18:53:47 2797f2e35a3aSmrgdnl ---------------- 2798f2e35a3aSmrgdnl https://pubs.opengroup.org/onlinepubs/009695399/basedefs/termios.h.html 2799f2e35a3aSmrgdnl says that tcflag_t, speed_t and cc_t are typedef'd. If they are not, 2800f2e35a3aSmrgdnl fallback to historical values. 2801f2e35a3aSmrgAC_DEFUN([CF_TERMIOS_TYPES],[ 2802f2e35a3aSmrg 2803f2e35a3aSmrgAC_CACHE_CHECK(for termios type tcflag_t, cf_cv_havetype_tcflag_t,[ 2804f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 2805f2e35a3aSmrg tcflag_t x = 0; (void)x], 2806f2e35a3aSmrg [cf_cv_havetype_tcflag_t=yes], 2807f2e35a3aSmrg [cf_cv_havetype_tcflag_t=no]) 2808f2e35a3aSmrg]) 2809f2e35a3aSmrgtest "$cf_cv_havetype_tcflag_t" = no && AC_DEFINE(tcflag_t,unsigned long,[Define usable value of tcflag_t if not declared]) 2810f2e35a3aSmrg 2811f2e35a3aSmrgAC_CACHE_CHECK(for termios type speed_t, cf_cv_havetype_speed_t,[ 2812f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 2813f2e35a3aSmrg speed_t x = 0; (void)x], 2814f2e35a3aSmrg [cf_cv_havetype_speed_t=yes], 2815f2e35a3aSmrg [cf_cv_havetype_speed_t=no]) 2816f2e35a3aSmrg]) 2817f2e35a3aSmrgtest "$cf_cv_havetype_speed_t" = no && AC_DEFINE(speed_t,unsigned short,[Define usable value of speed_t if not declared]) 2818f2e35a3aSmrg 2819f2e35a3aSmrgAC_CACHE_CHECK(for termios type cc_t, cf_cv_havetype_cc_t,[ 2820f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 2821f2e35a3aSmrg cc_t x = 0; (void)x], 2822f2e35a3aSmrg [cf_cv_havetype_cc_t=yes], 2823f2e35a3aSmrg [cf_cv_havetype_cc_t=no]) 2824f2e35a3aSmrg]) 2825f2e35a3aSmrgtest "$cf_cv_havetype_cc_t" = no && AC_DEFINE(cc_t,unsigned char,[Define usable value of cc_t if not declared]) 2826f2e35a3aSmrg])dnl 2827f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2828f2e35a3aSmrgdnl CF_TERMIO_C_ISPEED version: 4 updated: 2020/03/10 18:53:47 2829d522f475Smrgdnl ------------------ 2830d522f475Smrgdnl Check for SGI's broken redefinition of baud rates introduced in IRIX 6.5 2831d522f475Smrgdnl (there doesn't appear to be a useful predefined symbol). 2832d522f475SmrgAC_DEFUN([CF_TERMIO_C_ISPEED], 2833d522f475Smrg[ 2834d522f475SmrgAC_CACHE_CHECK(for IRIX 6.5 baud-rate redefinitions,cf_cv_termio_c_ispeed,[ 2835d522f475SmrgAC_TRY_COMPILE([ 2836d522f475Smrg#include <sys/types.h> 2837d522f475Smrg#include <sys/termio.h>],[ 2838d522f475Smrgstruct termio foo; 2839d522f475Smrgfoo.c_ispeed = B38400; 2840d522f475Smrgfoo.c_ospeed = B9600; 2841f2e35a3aSmrg(void)foo; 2842d522f475Smrg],[cf_cv_termio_c_ispeed=yes 2843d522f475Smrg],[cf_cv_termio_c_ispeed=no]) 2844d522f475Smrg]) 28450bd37d32Smrgtest "$cf_cv_termio_c_ispeed" = yes && AC_DEFINE(HAVE_TERMIO_C_ISPEED,1,[define 1 if we have IRIX 6.5 baud-rate redefinitions]) 2846d522f475Smrg])dnl 2847d522f475Smrgdnl --------------------------------------------------------------------------- 284801037d57Smrgdnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00 2849e0a2b6dfSmrgdnl -------------- 2850e0a2b6dfSmrgdnl Trim extra base X libraries added as a workaround for inconsistent library 2851e0a2b6dfSmrgdnl dependencies returned by "new" pkg-config files. 2852e0a2b6dfSmrgAC_DEFUN([CF_TRIM_X_LIBS],[ 2853e0a2b6dfSmrg for cf_trim_lib in Xmu Xt X11 2854e0a2b6dfSmrg do 2855e0a2b6dfSmrg case "$LIBS" in 285601037d57Smrg (*-l$cf_trim_lib\ *-l$cf_trim_lib*) 2857e0a2b6dfSmrg LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'` 2858e0a2b6dfSmrg CF_VERBOSE(..trimmed $LIBS) 2859e0a2b6dfSmrg ;; 2860e0a2b6dfSmrg esac 2861e0a2b6dfSmrg done 2862e0a2b6dfSmrg]) 2863e0a2b6dfSmrgdnl --------------------------------------------------------------------------- 2864f2e35a3aSmrgdnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15 286520d2c4d2Smrgdnl ----------------- 286620d2c4d2Smrgdnl This is a simple wrapper to use for pkg-config, for libraries which may be 286720d2c4d2Smrgdnl available in that form. 286820d2c4d2Smrgdnl 2869f2e35a3aSmrgdnl $1 = package name, which may be a shell variable 287020d2c4d2Smrgdnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS 287120d2c4d2Smrgdnl $3 = logic to use if pkg-config does not have the package 287220d2c4d2SmrgAC_DEFUN([CF_TRY_PKG_CONFIG],[ 287320d2c4d2SmrgAC_REQUIRE([CF_PKG_CONFIG]) 287420d2c4d2Smrg 2875f2e35a3aSmrgif test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then 287620d2c4d2Smrg CF_VERBOSE(found package $1) 2877f2e35a3aSmrg cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`" 2878f2e35a3aSmrg cf_pkgconfig_libs="`$PKG_CONFIG --libs "$1" 2>/dev/null`" 287920d2c4d2Smrg CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs) 288020d2c4d2Smrg CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs) 288120d2c4d2Smrg CF_ADD_CFLAGS($cf_pkgconfig_incs) 288220d2c4d2Smrg CF_ADD_LIBS($cf_pkgconfig_libs) 288320d2c4d2Smrg ifelse([$2],,:,[$2]) 288420d2c4d2Smrgelse 2885e0a2b6dfSmrg cf_pkgconfig_incs= 2886e0a2b6dfSmrg cf_pkgconfig_libs= 288720d2c4d2Smrg ifelse([$3],,:,[$3]) 288820d2c4d2Smrgfi 288920d2c4d2Smrg]) 289020d2c4d2Smrgdnl --------------------------------------------------------------------------- 2891f2e35a3aSmrgdnl CF_TRY_XOPEN_SOURCE version: 2 updated: 2018/06/20 20:23:13 28920bd37d32Smrgdnl ------------------- 28930bd37d32Smrgdnl If _XOPEN_SOURCE is not defined in the compile environment, check if we 28940bd37d32Smrgdnl can define it successfully. 28950bd37d32SmrgAC_DEFUN([CF_TRY_XOPEN_SOURCE],[ 28960bd37d32SmrgAC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ 28970bd37d32Smrg AC_TRY_COMPILE([ 28980bd37d32Smrg#include <stdlib.h> 28990bd37d32Smrg#include <string.h> 29000bd37d32Smrg#include <sys/types.h> 29010bd37d32Smrg],[ 29020bd37d32Smrg#ifndef _XOPEN_SOURCE 29030bd37d32Smrgmake an error 29040bd37d32Smrg#endif], 29050bd37d32Smrg [cf_cv_xopen_source=no], 29060bd37d32Smrg [cf_save="$CPPFLAGS" 2907f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE) 29080bd37d32Smrg AC_TRY_COMPILE([ 29090bd37d32Smrg#include <stdlib.h> 29100bd37d32Smrg#include <string.h> 29110bd37d32Smrg#include <sys/types.h> 29120bd37d32Smrg],[ 29130bd37d32Smrg#ifdef _XOPEN_SOURCE 29140bd37d32Smrgmake an error 29150bd37d32Smrg#endif], 29160bd37d32Smrg [cf_cv_xopen_source=no], 29170bd37d32Smrg [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) 29180bd37d32Smrg CPPFLAGS="$cf_save" 29190bd37d32Smrg ]) 29200bd37d32Smrg]) 29210bd37d32Smrg 29220bd37d32Smrgif test "$cf_cv_xopen_source" != no ; then 29230bd37d32Smrg CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) 29240bd37d32Smrg CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) 29250bd37d32Smrg cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" 29260bd37d32Smrg CF_ADD_CFLAGS($cf_temp_xopen_source) 29270bd37d32Smrgfi 29280bd37d32Smrg]) 29290bd37d32Smrgdnl --------------------------------------------------------------------------- 2930f2e35a3aSmrgdnl CF_TTY_GROUP version: 14 updated: 2021/01/03 18:30:50 2931d522f475Smrgdnl ------------ 2932d522f475Smrgdnl Check if the system has a tty-group defined. This is used in xterm when 2933d522f475Smrgdnl setting pty ownership. 2934f2e35a3aSmrgdnl 2935f2e35a3aSmrgdnl The check relies upon running a test-program, which calls ttyname. If this 2936f2e35a3aSmrgdnl is run in batch mode, or if autoconf uses shell functions, the extra layer 2937f2e35a3aSmrgdnl of eval/call may close stdin, making calls to ttyname fail. To work around 2938f2e35a3aSmrgdnl that, fall back to "/dev/tty". 2939d522f475SmrgAC_DEFUN([CF_TTY_GROUP], 2940f2e35a3aSmrg[AC_REQUIRE([AC_PROG_EGREP])dnl 2941d522f475SmrgAC_MSG_CHECKING(for explicit tty group name) 2942d522f475SmrgAC_ARG_WITH(tty-group, 2943d522f475Smrg [ --with-tty-group=XXX use XXX for the tty-group], 2944d522f475Smrg [cf_tty_group=$withval], 2945d522f475Smrg [cf_tty_group=auto...]) 2946d522f475Smrgtest -z "$cf_tty_group" && cf_tty_group=auto... 2947d522f475Smrgtest "$cf_tty_group" = yes && cf_tty_group=auto... 2948d522f475SmrgAC_MSG_RESULT($cf_tty_group) 2949d522f475Smrg 2950d522f475Smrgif test "$cf_tty_group" = "auto..." ; then 2951d522f475SmrgAC_CACHE_CHECK(for tty group name,cf_cv_tty_group_name,[ 2952d522f475Smrg 2953d522f475Smrg# If we are configuring as root, it is hard to get a clue about the tty group. 2954d522f475Smrg# But we'll guess based on how our connection is set up - assuming it is done 2955d522f475Smrg# properly. 2956d522f475Smrg 2957f2e35a3aSmrgcf_uid="`id | sed -e 's/^[^=]*=//' -e 's/(.*$//'`" 2958d522f475Smrg# )vi 2959d522f475Smrgif test "$cf_uid" != 0 ; then 2960d522f475Smrgcf_cv_tty_group_name= 2961f2e35a3aSmrgcf_tty_name="`tty`" 2962d522f475Smrgtest "$cf_tty_name" = "not a tty" && cf_tty_name=/dev/tty 2963d522f475Smrgtest -z "$cf_tty_name" && cf_tty_name=/dev/tty 2964d522f475Smrgif test -c "$cf_tty_name" 2965d522f475Smrgthen 2966f2e35a3aSmrg cf_option="-lL" 2967d522f475Smrg 2968d522f475Smrg # Expect listing to have fields like this: 2969d522f475Smrg #-rwxrwxrwx 1 user group 34293 Jul 18 16:29 pathname 2970f2e35a3aSmrg ls $cf_option "$cf_tty_name" >conftest.out 2971d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out 2972d522f475Smrg if test -z "$cf_rest" ; then 2973f2e35a3aSmrg cf_option="${cf_option}g" 2974f2e35a3aSmrg ls "$cf_option" "$cf_tty_name" >conftest.out 2975d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out 2976d522f475Smrg fi 2977d522f475Smrg rm -f conftest.out 2978d522f475Smrg cf_cv_tty_group_name=$cf_grp 2979d522f475Smrgfi 2980d522f475Smrgfi 2981d522f475Smrg 2982d522f475Smrg# If we cannot deduce the tty group, fall back on hardcoded cases 2983d522f475Smrg 2984d522f475Smrgif test -z "$cf_cv_tty_group_name" 2985d522f475Smrgthen 298601037d57Smrgcase $host_os in 298701037d57Smrg(osf*) 2988d522f475Smrg cf_cv_tty_group_name="terminal" 2989d522f475Smrg ;; 299001037d57Smrg(*) 2991d522f475Smrg cf_cv_tty_group_name="unknown" 2992f2e35a3aSmrg if ( ${EGREP-egrep} '^tty:' /etc/group 2>/dev/null 1>/dev/null ) then 2993d522f475Smrg cf_cv_tty_group_name="tty" 2994d522f475Smrg fi 2995d522f475Smrg ;; 2996d522f475Smrgesac 2997d522f475Smrgfi 2998d522f475Smrg]) 2999d522f475Smrgcf_tty_group="$cf_cv_tty_group_name" 3000d522f475Smrgelse 3001d522f475Smrg # if configure option, always do this 30020bd37d32Smrg AC_DEFINE(USE_TTY_GROUP,1,[Define to 1 if we have a tty groupname]) 3003d522f475Smrgfi 3004d522f475Smrg 30050bd37d32SmrgAC_DEFINE_UNQUOTED(TTY_GROUP_NAME,"$cf_tty_group",[Define to the name use for tty group]) 3006d522f475Smrg 3007d522f475Smrg# This is only a double-check that the group-name we obtained above really 3008d522f475Smrg# does apply to the device. We cannot perform this test if we are in batch 3009d522f475Smrg# mode, or if we are cross-compiling. 3010d522f475Smrg 3011d522f475SmrgAC_CACHE_CHECK(if we may use the $cf_tty_group group,cf_cv_tty_group,[ 3012f2e35a3aSmrgcf_tty_name="`tty`" 3013d522f475Smrgif test "$cf_tty_name" != "not a tty" 3014d522f475Smrgthen 3015d522f475SmrgAC_TRY_RUN([ 3016d522f475Smrg#include <unistd.h> 3017d522f475Smrg#include <sys/types.h> 3018d522f475Smrg#include <sys/stat.h> 3019d522f475Smrg#include <grp.h> 3020f2e35a3aSmrgint main(void) 3021d522f475Smrg{ 3022d522f475Smrg struct stat sb; 3023f2e35a3aSmrg struct group *ttygrp; 3024f2e35a3aSmrg int fd; 3025f2e35a3aSmrg char *name; 3026d522f475Smrg 3027f2e35a3aSmrg for (fd = 0; fd < 3; ++fd) { 3028f2e35a3aSmrg if ((name = ttyname(fd)) != 0) 3029f2e35a3aSmrg break; 3030f2e35a3aSmrg } 3031f2e35a3aSmrg if (name == 0) 3032f2e35a3aSmrg name = "/dev/tty"; 3033f2e35a3aSmrg 3034f2e35a3aSmrg ttygrp = getgrnam(TTY_GROUP_NAME); 3035d522f475Smrg endgrent(); 3036f2e35a3aSmrg 3037d522f475Smrg if (ttygrp != 0 3038d522f475Smrg && name != 0 3039d522f475Smrg && stat(name, &sb) == 0 3040d522f475Smrg && sb.st_gid != getgid() 3041d522f475Smrg && sb.st_gid == ttygrp->gr_gid) { 3042d522f475Smrg ${cf_cv_main_return:-return} (0); 3043d522f475Smrg } 3044d522f475Smrg ${cf_cv_main_return:-return} (1); 3045d522f475Smrg} 3046d522f475Smrg ], 3047d522f475Smrg [cf_cv_tty_group=yes], 3048d522f475Smrg [cf_cv_tty_group=no], 3049d522f475Smrg [cf_cv_tty_group=unknown]) 3050d522f475Smrgelif test "$cross_compiling" = yes; then 3051d522f475Smrg cf_cv_tty_group=unknown 3052d522f475Smrgelse 3053d522f475Smrg cf_cv_tty_group=yes 3054d522f475Smrgfi 3055d522f475Smrg]) 3056d522f475Smrg 3057d522f475Smrgif test $cf_cv_tty_group = no ; then 3058d522f475Smrg AC_MSG_WARN(Cannot use $cf_tty_group group) 3059d522f475Smrgelse 3060d522f475Smrg AC_DEFINE(USE_TTY_GROUP) 3061d522f475Smrgfi 3062d522f475Smrg])dnl 3063d522f475Smrgdnl --------------------------------------------------------------------------- 3064f2e35a3aSmrgdnl CF_TYPE_CC_T version: 3 updated: 2020/03/10 18:53:47 30650bd37d32Smrgdnl ------------ 30660bd37d32Smrgdnl Check for cc_t type, used in termio. 30670bd37d32SmrgAC_DEFUN([CF_TYPE_CC_T], 30680bd37d32Smrg[ 30690bd37d32SmrgAC_MSG_CHECKING(for cc_t in <termios.h> or <termio.h>) 30700bd37d32SmrgAC_CACHE_VAL(cf_cv_type_cc_t,[ 30710bd37d32Smrg AC_TRY_COMPILE([ 30720bd37d32Smrg#include <sys/types.h> 30730bd37d32Smrg#if defined(HAVE_TERMIOS_H) 30740bd37d32Smrg#include <termios.h> 30750bd37d32Smrg#else 30760bd37d32Smrg#include <termio.h> 30770bd37d32Smrg#include <sys/ioctl.h> 30780bd37d32Smrg#endif 30790bd37d32Smrg], 3080f2e35a3aSmrg [cc_t x; (void)x], 30810bd37d32Smrg [cf_cv_type_cc_t=yes], 30820bd37d32Smrg [cf_cv_type_cc_t=no]) 30830bd37d32Smrg ]) 30840bd37d32SmrgAC_MSG_RESULT($cf_cv_type_cc_t) 30850bd37d32Smrgtest $cf_cv_type_cc_t = no && AC_DEFINE(cc_t, unsigned char,[Define to cc_t type used in termio]) 30860bd37d32Smrg])dnl 30870bd37d32Smrgdnl --------------------------------------------------------------------------- 30880bd37d32Smrgdnl CF_TYPE_FD_MASK version: 3 updated: 2012/10/04 06:57:36 3089d522f475Smrgdnl --------------- 3090d522f475Smrgdnl Check for the declaration of fd_mask, which is like fd_set, associated 3091d522f475Smrgdnl with select(). The check for fd_set should have pulled in this as well, 3092d522f475Smrgdnl but there is a special case for Mac OS X, possibly other BSD-derived 3093d522f475Smrgdnl platforms. 3094d522f475SmrgAC_DEFUN([CF_TYPE_FD_MASK], 3095d522f475Smrg[ 3096d522f475SmrgAC_REQUIRE([CF_TYPE_FD_SET]) 3097d522f475Smrg 3098d522f475SmrgAC_CACHE_CHECK(for declaration of fd_mask,cf_cv_type_fd_mask,[ 3099d522f475Smrg if test x$cf_cv_type_fd_set = xX11/Xpoll.h ; then 3100d522f475Smrg AC_TRY_COMPILE([ 3101d522f475Smrg#include <X11/Xpoll.h>],[fd_mask x],, 3102d522f475Smrg [CF_MSG_LOG(if we must define CSRG_BASED) 3103d522f475Smrg# Xosdefs.h on Mac OS X may not define this (but it should). 3104d522f475Smrg AC_TRY_COMPILE([ 3105d522f475Smrg#define CSRG_BASED 3106d522f475Smrg#include <X11/Xpoll.h>],[fd_mask x], 3107d522f475Smrg cf_cv_type_fd_mask=CSRG_BASED)]) 3108d522f475Smrg else 3109d522f475Smrg cf_cv_type_fd_mask=$cf_cv_type_fd_set 3110d522f475Smrg fi 3111d522f475Smrg]) 3112d522f475Smrgif test x$cf_cv_type_fd_mask = xCSRG_BASED ; then 31130bd37d32Smrg AC_DEFINE(CSRG_BASED,1,[Define to 1 if needed for declaring fd_mask()]) 3114d522f475Smrgfi 3115d522f475Smrg])dnl 3116d522f475Smrgdnl --------------------------------------------------------------------------- 3117f2e35a3aSmrgdnl CF_TYPE_FD_SET version: 6 updated: 2020/03/10 18:53:47 3118d522f475Smrgdnl -------------- 3119d522f475Smrgdnl Check for the declaration of fd_set. Some platforms declare it in 3120d522f475Smrgdnl <sys/types.h>, and some in <sys/select.h>, which requires <sys/types.h>. 3121d522f475Smrgdnl Finally, if we are using this for an X application, Xpoll.h may include 3122d522f475Smrgdnl <sys/select.h>, so we don't want to do it twice. 3123d522f475SmrgAC_DEFUN([CF_TYPE_FD_SET], 3124d522f475Smrg[ 3125d522f475SmrgAC_CHECK_HEADERS(X11/Xpoll.h) 3126d522f475Smrg 3127d522f475SmrgAC_CACHE_CHECK(for declaration of fd_set,cf_cv_type_fd_set, 3128d522f475Smrg [CF_MSG_LOG(sys/types alone) 3129d522f475SmrgAC_TRY_COMPILE([ 3130d522f475Smrg#include <sys/types.h>], 3131f2e35a3aSmrg [fd_set x; (void)x], 3132d522f475Smrg [cf_cv_type_fd_set=sys/types.h], 3133d522f475Smrg [CF_MSG_LOG(X11/Xpoll.h) 3134d522f475SmrgAC_TRY_COMPILE([ 3135d522f475Smrg#ifdef HAVE_X11_XPOLL_H 3136d522f475Smrg#include <X11/Xpoll.h> 3137d522f475Smrg#endif], 3138f2e35a3aSmrg [fd_set x; (void)x], 3139d522f475Smrg [cf_cv_type_fd_set=X11/Xpoll.h], 3140d522f475Smrg [CF_MSG_LOG(sys/select.h) 3141d522f475SmrgAC_TRY_COMPILE([ 3142d522f475Smrg#include <sys/types.h> 3143d522f475Smrg#include <sys/select.h>], 3144f2e35a3aSmrg [fd_set x; (void)x], 3145d522f475Smrg [cf_cv_type_fd_set=sys/select.h], 3146d522f475Smrg [cf_cv_type_fd_set=unknown])])])]) 3147d522f475Smrgif test $cf_cv_type_fd_set = sys/select.h ; then 31480bd37d32Smrg AC_DEFINE(USE_SYS_SELECT_H,1,[Define to 1 to include sys/select.h to declare fd_set]) 3149d522f475Smrgfi 3150d522f475Smrg]) 3151d522f475Smrgdnl --------------------------------------------------------------------------- 3152e39b573cSmrgdnl CF_UNDO_CFLAGS version: 1 updated: 2011/07/02 09:27:51 3153e39b573cSmrgdnl -------------- 3154e39b573cSmrgdnl Remove flags from $CFLAGS or similar shell variable using sed. 3155e39b573cSmrgdnl $1 = variable 3156e39b573cSmrgdnl $2 = message 3157e39b573cSmrgdnl $3 = pattern to remove 3158e39b573cSmrgAC_DEFUN([CF_UNDO_CFLAGS], 3159e39b573cSmrg[ 3160e39b573cSmrg CF_VERBOSE(removing $2 flags from $1) 3161e39b573cSmrg $1=`echo "[$]$1" | sed -e 's/$3//'` 3162e39b573cSmrg CF_VERBOSE(...result [$]$1) 3163e39b573cSmrg])dnl 3164e39b573cSmrgdnl --------------------------------------------------------------------------- 3165d522f475Smrgdnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 3166d522f475Smrgdnl -------- 3167d522f475Smrgdnl Make an uppercase version of a variable 3168d522f475Smrgdnl $1=uppercase($2) 3169d522f475SmrgAC_DEFUN([CF_UPPER], 3170d522f475Smrg[ 3171d522f475Smrg$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` 3172d522f475Smrg])dnl 3173d522f475Smrgdnl --------------------------------------------------------------------------- 31740bd37d32Smrgdnl CF_UTEMPTER version: 4 updated: 2012/10/04 20:12:20 3175d522f475Smrgdnl ----------- 3176d522f475Smrgdnl Try to link with utempter library 3177d522f475SmrgAC_DEFUN([CF_UTEMPTER], 3178d522f475Smrg[ 3179d522f475SmrgAC_CACHE_CHECK(if we can link with utempter library,cf_cv_have_utempter,[ 3180d522f475Smrgcf_save_LIBS="$LIBS" 318120d2c4d2SmrgCF_ADD_LIB(utempter) 3182d522f475SmrgAC_TRY_LINK([ 3183d522f475Smrg#include <utempter.h> 3184d522f475Smrg],[ 3185d522f475Smrg addToUtmp("/dev/tty", 0, 1); 3186d522f475Smrg removeFromUtmp(); 3187d522f475Smrg],[ 3188d522f475Smrg cf_cv_have_utempter=yes],[ 3189d522f475Smrg cf_cv_have_utempter=no]) 3190d522f475SmrgLIBS="$cf_save_LIBS" 3191d522f475Smrg]) 3192d522f475Smrgif test "$cf_cv_have_utempter" = yes ; then 31930bd37d32Smrg AC_DEFINE(USE_UTEMPTER,1,[Define to 1 if we can/should link with utempter]) 319420d2c4d2Smrg CF_ADD_LIB(utempter) 3195d522f475Smrgfi 3196d522f475Smrg])dnl 3197d522f475Smrgdnl --------------------------------------------------------------------------- 3198f2e35a3aSmrgdnl CF_UTMP version: 12 updated: 2021/01/02 09:31:20 3199d522f475Smrgdnl ------- 3200d522f475Smrgdnl Check for UTMP/UTMPX headers 3201d522f475SmrgAC_DEFUN([CF_UTMP], 3202d522f475Smrg[ 3203d522f475SmrgAC_REQUIRE([CF_LASTLOG]) 3204d522f475Smrg 3205d522f475SmrgAC_CACHE_CHECK(for utmp implementation,cf_cv_have_utmp,[ 3206d522f475Smrg cf_cv_have_utmp=no 3207d522f475Smrgfor cf_header in utmpx utmp ; do 3208d522f475Smrgcf_utmp_includes=" 3209d522f475Smrg#include <sys/types.h> 3210d522f475Smrg#include <${cf_header}.h> 3211d522f475Smrg#define getutent getutxent 3212d522f475Smrg#ifdef USE_LASTLOG 3213d522f475Smrg#include <lastlog.h> /* may conflict with utmpx.h on Linux */ 3214d522f475Smrg#endif 3215d522f475Smrg" 3216d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3217d522f475Smrg [struct $cf_header x; 3218d522f475Smrg char *name = x.ut_name; /* utmp.h and compatible definitions */ 3219f2e35a3aSmrg (void)x; 3220f2e35a3aSmrg (void)name; 3221d522f475Smrg ], 3222d522f475Smrg [cf_cv_have_utmp=$cf_header 3223d522f475Smrg break], 3224d522f475Smrg [ 3225d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3226d522f475Smrg [struct $cf_header x; 3227d522f475Smrg char *name = x.ut_user; /* utmpx.h must declare this */ 3228f2e35a3aSmrg (void)x; 3229f2e35a3aSmrg (void)name; 3230d522f475Smrg ], 3231d522f475Smrg [cf_cv_have_utmp=$cf_header 3232d522f475Smrg break 3233d522f475Smrg ])]) 3234d522f475Smrgdone 3235d522f475Smrg]) 3236d522f475Smrg 3237f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 32380bd37d32Smrg AC_DEFINE(HAVE_UTMP,1,[Define to 1 if the utmp interface is available]) 3239f2e35a3aSmrg test "$cf_cv_have_utmp" = utmpx && AC_DEFINE(UTMPX_FOR_UTMP,1,[Define if we have utmpx interface]) 3240d522f475Smrg CF_UTMP_UT_HOST 3241d522f475Smrg CF_UTMP_UT_SYSLEN 3242d522f475Smrg CF_UTMP_UT_NAME 3243d522f475Smrg CF_UTMP_UT_XSTATUS 3244d522f475Smrg CF_UTMP_UT_XTIME 3245d522f475Smrg CF_UTMP_UT_SESSION 3246d522f475Smrg CF_SYSV_UTMP 3247d522f475Smrgfi 3248d522f475Smrg])dnl 3249d522f475Smrgdnl --------------------------------------------------------------------------- 3250f2e35a3aSmrgdnl CF_UTMP_GROUP version: 2 updated: 2020/12/31 10:54:15 3251d522f475Smrgdnl ------------- 3252d522f475Smrgdnl Find the utmp/utmpx file and determine its group to allow setgid programs 3253d522f475Smrgdnl to manipulate it, e.g., when there is no intermediary. 3254d522f475SmrgAC_DEFUN([CF_UTMP_GROUP],[ 3255d522f475SmrgAC_REQUIRE([CF_UTMP]) 3256d522f475Smrgif test $cf_cv_have_utmp != no ; then 3257d522f475SmrgAC_CACHE_CHECK(for utmp/utmpx group,cf_cv_utmp_group,[ 3258d522f475Smrgfor cf_utmp_path in /var/adm /var/run 3259d522f475Smrgdo 3260d522f475Smrg for cf_utmp_file in utmpx utmp 3261d522f475Smrg do 3262d522f475Smrg if test -f $cf_utmp_path/$cf_utmp_file 3263d522f475Smrg then 3264d522f475Smrg cf_cv_utmp_group=root 3265d522f475Smrg 3266f2e35a3aSmrg cf_option="-lL" 3267d522f475Smrg 3268d522f475Smrg # Expect listing to have fields like this: 3269d522f475Smrg #-r--r--r-- 1 user group 34293 Jul 18 16:29 pathname 3270f2e35a3aSmrg ls "$cf_option" "$cf_utmp_path/$cf_utmp_file" >conftest 3271d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest 3272d522f475Smrg if test -z "$cf_rest" ; then 3273f2e35a3aSmrg cf_option="${cf_option}g" 3274f2e35a3aSmrg ls "$cf_option" "$cf_utmp_path/$cf_utmp_file" >conftest 3275d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest 3276d522f475Smrg fi 3277d522f475Smrg rm -f conftest 3278d522f475Smrg 3279d522f475Smrg # If we have a pathname, and the date fields look right, assume we've 3280d522f475Smrg # captured the group as well. 3281d522f475Smrg if test -n "$cf_rest" ; then 3282d522f475Smrg cf_test=`echo "${cf_date2}${cf_date3}" | sed -e 's/[[0-9:]]//g'` 3283d522f475Smrg if test -z "$cf_test" ; then 3284d522f475Smrg cf_cv_utmp_group=$cf_grp; 3285d522f475Smrg fi 3286d522f475Smrg fi 3287d522f475Smrg break 3288d522f475Smrg fi 3289d522f475Smrg done 3290d522f475Smrg test -n "$cf_cv_utmp_group" && break 3291d522f475Smrgdone 3292d522f475Smrg]) 3293d522f475Smrgelse 3294d522f475Smrg AC_MSG_ERROR(cannot find utmp group) 3295d522f475Smrgfi 3296d522f475Smrg])dnl 3297d522f475Smrgdnl --------------------------------------------------------------------------- 3298f2e35a3aSmrgdnl CF_UTMP_UT_HOST version: 10 updated: 2021/01/02 09:31:20 3299d522f475Smrgdnl --------------- 3300d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_host member 3301d522f475SmrgAC_DEFUN([CF_UTMP_UT_HOST], 3302d522f475Smrg[ 3303f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3304d522f475SmrgAC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_host is declared) 3305d522f475SmrgAC_CACHE_VAL(cf_cv_have_utmp_ut_host,[ 3306d522f475Smrg AC_TRY_COMPILE([ 3307d522f475Smrg#include <sys/types.h> 3308d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3309f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3310f2e35a3aSmrg char *y = &x.ut_host[0]; 3311f2e35a3aSmrg (void)x; 3312f2e35a3aSmrg (void)y], 3313d522f475Smrg [cf_cv_have_utmp_ut_host=yes], 3314d522f475Smrg [cf_cv_have_utmp_ut_host=no]) 3315d522f475Smrg ]) 3316d522f475SmrgAC_MSG_RESULT($cf_cv_have_utmp_ut_host) 3317f2e35a3aSmrgtest "$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]) 3318d522f475Smrgfi 3319d522f475Smrg])dnl 3320d522f475Smrgdnl --------------------------------------------------------------------------- 3321f2e35a3aSmrgdnl CF_UTMP_UT_NAME version: 8 updated: 2021/01/02 09:31:20 3322d522f475Smrgdnl --------------- 3323d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_name member 3324d522f475SmrgAC_DEFUN([CF_UTMP_UT_NAME], 3325d522f475Smrg[ 3326f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3327d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_name is declared,cf_cv_have_utmp_ut_name,[ 3328d522f475Smrg cf_cv_have_utmp_ut_name=no 3329d522f475Smrgcf_utmp_includes=" 3330d522f475Smrg#include <sys/types.h> 3331d522f475Smrg#include <${cf_cv_have_utmp}.h> 3332d522f475Smrg#define getutent getutxent 3333d522f475Smrg#ifdef USE_LASTLOG 3334d522f475Smrg#include <lastlog.h> /* may conflict with utmpx.h on Linux */ 3335d522f475Smrg#endif 3336d522f475Smrg" 3337d522f475Smrgfor cf_header in ut_name ut_user ; do 3338d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3339d522f475Smrg [struct $cf_cv_have_utmp x; 3340d522f475Smrg char *name = x.$cf_header; 3341f2e35a3aSmrg (void)x; 3342f2e35a3aSmrg (void)name; 3343d522f475Smrg ], 3344d522f475Smrg [cf_cv_have_utmp_ut_name=$cf_header 3345d522f475Smrg break]) 3346d522f475Smrgdone 3347d522f475Smrg]) 3348d522f475Smrg 3349f2e35a3aSmrgcase "$cf_cv_have_utmp_ut_name" in 335001037d57Smrg(no) 3351d522f475Smrg AC_MSG_ERROR(Cannot find declaration for ut.ut_name) 3352d522f475Smrg ;; 335301037d57Smrg(ut_user) 33540bd37d32Smrg AC_DEFINE(ut_name,ut_user,[Define to rename UTMP/UTMPX struct ut_name member]) 3355d522f475Smrg ;; 3356d522f475Smrgesac 3357d522f475Smrgfi 3358d522f475Smrg])dnl 3359d522f475Smrgdnl --------------------------------------------------------------------------- 3360f2e35a3aSmrgdnl CF_UTMP_UT_SESSION version: 8 updated: 2021/01/02 09:31:20 3361d522f475Smrgdnl ------------------ 3362d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_session member 3363d522f475SmrgAC_DEFUN([CF_UTMP_UT_SESSION], 3364d522f475Smrg[ 3365f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3366d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_session is declared, cf_cv_have_utmp_ut_session,[ 3367d522f475Smrg AC_TRY_COMPILE([ 3368d522f475Smrg#include <sys/types.h> 3369d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3370f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3371f2e35a3aSmrg long y = x.ut_session; 3372f2e35a3aSmrg (void)x; 3373f2e35a3aSmrg (void)y], 3374d522f475Smrg [cf_cv_have_utmp_ut_session=yes], 3375d522f475Smrg [cf_cv_have_utmp_ut_session=no]) 3376d522f475Smrg]) 3377f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_session" != no ; then 33780bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_SESSION,1,[Define to 1 if UTMP/UTMPX struct defines ut_session member]) 3379d522f475Smrgfi 3380d522f475Smrgfi 3381d522f475Smrg])dnl 3382d522f475Smrgdnl --------------------------------------------------------------------------- 3383f2e35a3aSmrgdnl CF_UTMP_UT_SYSLEN version: 4 updated: 2021/01/02 09:31:20 3384d522f475Smrgdnl ----------------- 3385d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_syslen member 3386d522f475SmrgAC_DEFUN([CF_UTMP_UT_SYSLEN], 3387d522f475Smrg[ 3388f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3389d522f475SmrgAC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_syslen is declared) 3390d522f475SmrgAC_CACHE_VAL(cf_cv_have_utmp_ut_syslen,[ 3391d522f475Smrg AC_TRY_COMPILE([ 3392d522f475Smrg#include <sys/types.h> 3393d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3394f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3395f2e35a3aSmrg int y = x.ut_syslen; 3396f2e35a3aSmrg (void)x; 3397f2e35a3aSmrg (void)y], 3398d522f475Smrg [cf_cv_have_utmp_ut_syslen=yes], 3399d522f475Smrg [cf_cv_have_utmp_ut_syslen=no]) 3400d522f475Smrg ]) 3401d522f475SmrgAC_MSG_RESULT($cf_cv_have_utmp_ut_syslen) 3402f2e35a3aSmrgtest "$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]) 3403d522f475Smrgfi 3404d522f475Smrg])dnl 3405d522f475Smrgdnl --------------------------------------------------------------------------- 3406f2e35a3aSmrgdnl CF_UTMP_UT_XSTATUS version: 6 updated: 2021/01/02 09:31:20 3407d522f475Smrgdnl ------------------ 3408d522f475Smrgdnl Check for known variants on the UTMP/UTMPX struct's exit-status as reported 3409d522f475Smrgdnl by various people: 3410d522f475Smrgdnl 3411d522f475Smrgdnl ut_exit.__e_exit (HPUX 11 - David Ellement, also in glibc2) 3412d522f475Smrgdnl ut_exit.e_exit (SVR4) 3413d522f475Smrgdnl ut_exit.ut_e_exit (os390 - Greg Smith) 3414d522f475Smrgdnl ut_exit.ut_exit (Tru64 4.0f - Jeremie Petit, 4.0e - Tomas Vanhala) 3415d522f475Smrgdnl 3416d522f475Smrgdnl Note: utmp_xstatus is not a conventional compatibility definition in the 3417d522f475Smrgdnl system header files. 3418d522f475SmrgAC_DEFUN([CF_UTMP_UT_XSTATUS], 3419d522f475Smrg[ 3420f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3421d522f475SmrgAC_CACHE_CHECK(for exit-status in $cf_cv_have_utmp,cf_cv_have_utmp_ut_xstatus,[ 3422d522f475Smrgfor cf_result in \ 3423d522f475Smrg ut_exit.__e_exit \ 3424d522f475Smrg ut_exit.e_exit \ 3425d522f475Smrg ut_exit.ut_e_exit \ 3426d522f475Smrg ut_exit.ut_exit 3427d522f475Smrgdo 3428d522f475SmrgAC_TRY_COMPILE([ 3429d522f475Smrg#include <sys/types.h> 3430d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3431f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3432f2e35a3aSmrg long y = x.$cf_result = 0; 3433f2e35a3aSmrg (void)x; 3434f2e35a3aSmrg (void)y], 3435d522f475Smrg [cf_cv_have_utmp_ut_xstatus=$cf_result 3436d522f475Smrg break], 3437d522f475Smrg [cf_cv_have_utmp_ut_xstatus=no]) 3438d522f475Smrgdone 3439d522f475Smrg]) 3440f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_xstatus" != no ; then 34410bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_XSTATUS,1,[Define to 1 if UTMP/UTMPX has exit-status member]) 34420bd37d32Smrg AC_DEFINE_UNQUOTED(ut_xstatus,$cf_cv_have_utmp_ut_xstatus,[Define if needed to rename member ut_xstatus of UTMP/UTMPX]) 3443d522f475Smrgfi 3444d522f475Smrgfi 3445d522f475Smrg])dnl 3446d522f475Smrgdnl --------------------------------------------------------------------------- 3447f2e35a3aSmrgdnl CF_UTMP_UT_XTIME version: 11 updated: 2021/01/02 09:31:20 3448d522f475Smrgdnl ---------------- 3449d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_xtime member 3450d522f475SmrgAC_DEFUN([CF_UTMP_UT_XTIME], 3451d522f475Smrg[ 3452f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3453d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_xtime is declared, cf_cv_have_utmp_ut_xtime,[ 3454d522f475Smrg AC_TRY_COMPILE([ 3455d522f475Smrg#include <sys/types.h> 3456d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3457f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3458f2e35a3aSmrg long y = x.ut_xtime = 0; 3459f2e35a3aSmrg (void)x; 3460f2e35a3aSmrg (void)y], 3461d522f475Smrg [cf_cv_have_utmp_ut_xtime=yes], 3462d522f475Smrg [AC_TRY_COMPILE([ 3463d522f475Smrg#include <sys/types.h> 3464d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3465f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3466f2e35a3aSmrg long y = x.ut_tv.tv_sec; 3467f2e35a3aSmrg (void)x; 3468f2e35a3aSmrg (void)y], 3469d522f475Smrg [cf_cv_have_utmp_ut_xtime=define], 3470d522f475Smrg [cf_cv_have_utmp_ut_xtime=no]) 3471d522f475Smrg ]) 3472d522f475Smrg]) 3473f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_xtime" != no ; then 34740bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_XTIME,1,[Define to 1 if UTMP/UTMPX struct defines ut_xtime member]) 3475f2e35a3aSmrg if test "$cf_cv_have_utmp_ut_xtime" = define ; then 34760bd37d32Smrg AC_DEFINE(ut_xtime,ut_tv.tv_sec,[Define if needed to alternate name for utmpx.ut_xtime member]) 3477d522f475Smrg fi 3478d522f475Smrgfi 3479d522f475Smrgfi 3480d522f475Smrg])dnl 3481d522f475Smrgdnl --------------------------------------------------------------------------- 3482d522f475Smrgdnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 3483d522f475Smrgdnl ---------- 3484d522f475Smrgdnl Use AC_VERBOSE w/o the warnings 3485d522f475SmrgAC_DEFUN([CF_VERBOSE], 3486d522f475Smrg[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG 3487d522f475SmrgCF_MSG_LOG([$1]) 3488d522f475Smrg])dnl 3489d522f475Smrgdnl --------------------------------------------------------------------------- 349001037d57Smrgdnl CF_WITH_APP_CLASS version: 3 updated: 2015/04/12 15:39:00 3491e39b573cSmrgdnl ----------------- 3492e39b573cSmrgdnl Handle configure option "--with-app-class", setting the $APP_CLASS 3493e39b573cSmrgdnl variable, used for X resources. 3494e39b573cSmrgdnl 3495e39b573cSmrgdnl $1 = default value. 34960bd37d32SmrgAC_DEFUN([CF_WITH_APP_CLASS],[ 3497e39b573cSmrgAC_MSG_CHECKING(for X applications class) 3498e39b573cSmrgAC_ARG_WITH(app-class, 3499e39b573cSmrg [ --with-app-class=XXX override X applications class (default $1)], 3500e39b573cSmrg [APP_CLASS=$withval], 3501e39b573cSmrg [APP_CLASS=$1]) 3502e39b573cSmrg 350301037d57Smrgcase x$APP_CLASS in 350401037d57Smrg(*[[/@,%]]*) 3505e39b573cSmrg AC_MSG_WARN(X applications class cannot contain punctuation) 3506e39b573cSmrg APP_CLASS=$1 3507e39b573cSmrg ;; 350801037d57Smrg(x[[A-Z]]*) 3509e39b573cSmrg ;; 351001037d57Smrg(*) 3511e39b573cSmrg AC_MSG_WARN([X applications class must start with capital, ignoring $APP_CLASS]) 3512e39b573cSmrg APP_CLASS=$1 3513e39b573cSmrg ;; 3514e39b573cSmrgesac 3515e39b573cSmrg 3516e39b573cSmrgAC_MSG_RESULT($APP_CLASS) 3517e39b573cSmrg 3518e39b573cSmrgAC_SUBST(APP_CLASS) 3519e39b573cSmrg])dnl 3520e39b573cSmrgdnl --------------------------------------------------------------------------- 352101037d57Smrgdnl CF_WITH_APP_DEFAULTS version: 6 updated: 2015/01/02 09:05:50 3522e39b573cSmrgdnl -------------------- 3523e39b573cSmrgdnl Handle configure option "--with-app-defaults", setting these shell 3524e39b573cSmrgdnl variables: 35250bd37d32Smrgdnl 35260bd37d32Smrgdnl $APPSDIR is the option value, used for installing app-defaults files. 3527e39b573cSmrgdnl $no_appsdir is a "#" (comment) if "--without-app-defaults" is given. 35280bd37d32Smrgdnl 35290bd37d32Smrgdnl Most Linux's use this: 35300bd37d32Smrgdnl /usr/share/X11/app-defaults 35310bd37d32Smrgdnl Debian uses this: 35320bd37d32Smrgdnl /etc/X11/app-defaults 35330bd37d32Smrgdnl DragonFlyBSD ports uses this: 35340bd37d32Smrgdnl /usr/pkg/lib/X11/app-defaults 35350bd37d32Smrgdnl FreeBSD ports use these: 35360bd37d32Smrgdnl /usr/local/lib/X11/app-defaults 35370bd37d32Smrgdnl /usr/local/share/X11/app-defaults 35380bd37d32Smrgdnl Mandriva has these: 35390bd37d32Smrgdnl /usr/lib/X11/app-defaults 35400bd37d32Smrgdnl /usr/lib64/X11/app-defaults 35410bd37d32Smrgdnl NetBSD has these 35420bd37d32Smrgdnl /usr/X11R7/lib/X11/app-defaults 35430bd37d32Smrgdnl OpenSolaris uses 35440bd37d32Smrgdnl 32-bit: 35450bd37d32Smrgdnl /usr/X11/etc/X11/app-defaults 35460bd37d32Smrgdnl /usr/X11/share/X11/app-defaults 35470bd37d32Smrgdnl /usr/X11/lib/X11/app-defaults 354801037d57Smrgdnl OSX uses 354901037d57Smrgdnl /opt/local/share/X11/app-defaults (MacPorts) 355001037d57Smrgdnl /opt/X11/share/X11/app-defaults (non-ports) 35510bd37d32Smrgdnl 64-bit: 35520bd37d32Smrgdnl /usr/X11/etc/X11/app-defaults 35530bd37d32Smrgdnl /usr/X11/share/X11/app-defaults (I mkdir'd this) 35540bd37d32Smrgdnl /usr/X11/lib/amd64/X11/app-defaults 35550bd37d32Smrgdnl Solaris10 uses (in this order): 35560bd37d32Smrgdnl /usr/openwin/lib/X11/app-defaults 35570bd37d32Smrgdnl /usr/X11/lib/X11/app-defaults 35580bd37d32SmrgAC_DEFUN([CF_WITH_APP_DEFAULTS],[ 3559e39b573cSmrgAC_MSG_CHECKING(for directory to install resource files) 35600bd37d32SmrgAC_ARG_WITH(app-defaults, 35610bd37d32Smrg [ --with-app-defaults=DIR directory in which to install resource files (EPREFIX/lib/X11/app-defaults)], 35620bd37d32Smrg [APPSDIR=$withval], 35630bd37d32Smrg [APPSDIR='${exec_prefix}/lib/X11/app-defaults']) 35640bd37d32Smrg 35650bd37d32Smrgif test "x[$]APPSDIR" = xauto 35660bd37d32Smrgthen 35670bd37d32Smrg APPSDIR='${exec_prefix}/lib/X11/app-defaults' 35680bd37d32Smrg for cf_path in \ 356901037d57Smrg /opt/local/share/X11/app-defaults \ 357001037d57Smrg /opt/X11/share/X11/app-defaults \ 35710bd37d32Smrg /usr/share/X11/app-defaults \ 35720bd37d32Smrg /usr/X11/share/X11/app-defaults \ 35730bd37d32Smrg /usr/X11/lib/X11/app-defaults \ 35740bd37d32Smrg /usr/lib/X11/app-defaults \ 35750bd37d32Smrg /etc/X11/app-defaults \ 35760bd37d32Smrg /usr/pkg/lib/X11/app-defaults \ 35770bd37d32Smrg /usr/X11R7/lib/X11/app-defaults \ 35780bd37d32Smrg /usr/X11R6/lib/X11/app-defaults \ 35790bd37d32Smrg /usr/X11R5/lib/X11/app-defaults \ 35800bd37d32Smrg /usr/X11R4/lib/X11/app-defaults \ 35810bd37d32Smrg /usr/local/lib/X11/app-defaults \ 35820bd37d32Smrg /usr/local/share/X11/app-defaults \ 35830bd37d32Smrg /usr/lib64/X11/app-defaults 35840bd37d32Smrg do 35850bd37d32Smrg if test -d "$cf_path" ; then 35860bd37d32Smrg APPSDIR="$cf_path" 35870bd37d32Smrg break 35880bd37d32Smrg fi 35890bd37d32Smrg done 35900bd37d32Smrgelse 35910bd37d32Smrg cf_path=$APPSDIR 35920bd37d32Smrg CF_PATH_SYNTAX(cf_path) 35930bd37d32Smrgfi 35940bd37d32Smrg 35950bd37d32SmrgAC_MSG_RESULT($APPSDIR) 35960bd37d32SmrgAC_SUBST(APPSDIR) 3597e39b573cSmrg 3598e39b573cSmrgno_appsdir= 35990bd37d32Smrgif test "$APPSDIR" = no 36000bd37d32Smrgthen 36010bd37d32Smrg no_appsdir="#" 36020bd37d32Smrgelse 36030bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(APPSDIR)" 36040bd37d32Smrgfi 3605e39b573cSmrgAC_SUBST(no_appsdir) 3606e39b573cSmrg])dnl 3607e39b573cSmrgdnl --------------------------------------------------------------------------- 36080bd37d32Smrgdnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 36090bd37d32Smrgdnl ---------------- 36100bd37d32Smrgdnl Configure-option for dbmalloc. The optional parameter is used to override 36110bd37d32Smrgdnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 36120bd37d32SmrgAC_DEFUN([CF_WITH_DBMALLOC],[ 36130bd37d32SmrgCF_NO_LEAKS_OPTION(dbmalloc, 36140bd37d32Smrg [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], 36150bd37d32Smrg [USE_DBMALLOC]) 36160bd37d32Smrg 36170bd37d32Smrgif test "$with_dbmalloc" = yes ; then 36180bd37d32Smrg AC_CHECK_HEADER(dbmalloc.h, 36190bd37d32Smrg [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) 36200bd37d32Smrgfi 36210bd37d32Smrg])dnl 36220bd37d32Smrgdnl --------------------------------------------------------------------------- 3623f2e35a3aSmrgdnl CF_WITH_DESKTOP_CATEGORY version: 9 updated: 2021/01/03 18:30:50 3624e39b573cSmrgdnl ------------------------ 3625e39b573cSmrgdnl Taking into account the absence of standardization of desktop categories 3626e39b573cSmrgdnl take a look to see whether other applications on the current system are 3627e39b573cSmrgdnl assigned any/all of a set of suggested categories. 3628e39b573cSmrgdnl 3629e39b573cSmrgdnl $1 = program name 3630e39b573cSmrgdnl $2 = case-pattern to match comparable desktop files to obtain category 3631e39b573cSmrgdnl This pattern may contain wildcards. 3632e39b573cSmrgdnl $3 = suggested categories, also a case-pattern but without wildcards, 36330bd37d32Smrgdnl since it doubles as a default value for a shell case-statement. 36340bd37d32Smrgdnl $4 = categories to use if no match is found on the build-machine for the 36350bd37d32Smrgdnl --with-desktop-category "auto" setting. 3636e39b573cSmrgdnl 3637e39b573cSmrgdnl The macro tells the configure script to substitute the $DESKTOP_CATEGORY 3638e39b573cSmrgdnl value. 3639e39b573cSmrgAC_DEFUN([CF_WITH_DESKTOP_CATEGORY],[ 3640f2e35a3aSmrgAC_REQUIRE([AC_PROG_EGREP])dnl 3641f2e35a3aSmrgAC_REQUIRE([CF_DISABLE_DESKTOP])dnl 3642e39b573cSmrgif test -z "$desktop_utils" 3643e39b573cSmrgthen 3644e39b573cSmrg AC_MSG_CHECKING(for requested desktop-category) 3645e39b573cSmrg AC_ARG_WITH(desktop-category, 3646e39b573cSmrg [ --with-desktop-category=XXX one or more desktop catgories or auto], 3647e39b573cSmrg [cf_desktop_want=$withval], 3648e39b573cSmrg [cf_desktop_want=auto]) 3649e39b573cSmrg AC_MSG_RESULT($cf_desktop_want) 3650e39b573cSmrg 3651e39b573cSmrg if test "$cf_desktop_want" = auto 3652e39b573cSmrg then 3653e39b573cSmrg rm -rf conftest* 3654e39b573cSmrg cf_desktop_also= 3655e39b573cSmrg for cf_desktop_dir in \ 3656e39b573cSmrg /usr/share/app-install \ 3657e39b573cSmrg /usr/share/applications 3658e39b573cSmrg do 3659e39b573cSmrg if test -d $cf_desktop_dir 3660e39b573cSmrg then 3661e39b573cSmrg find $cf_desktop_dir -name '*.desktop' | \ 3662e39b573cSmrg while true 3663e39b573cSmrg do 3664e39b573cSmrg read cf_desktop_path 3665e39b573cSmrg test -z "$cf_desktop_path" && break 3666f2e35a3aSmrg cf_desktop_name=`basename "$cf_desktop_path" .desktop` 366701037d57Smrg case $cf_desktop_name in 366801037d57Smrg ($1|*-$1|$2) 3669e39b573cSmrg CF_VERBOSE(inspect $cf_desktop_path) 3670f2e35a3aSmrg ${EGREP-egrep} '^Categories=' "$cf_desktop_path" | \ 3671e39b573cSmrg tr ';' '\n' | \ 3672e39b573cSmrg sed -e 's%^.*=%%' -e '/^$/d' >>conftest.1 3673e39b573cSmrg ;; 3674e39b573cSmrg esac 3675e39b573cSmrg done 3676e39b573cSmrg fi 3677e39b573cSmrg done 3678e39b573cSmrg if test -s conftest.1 3679e39b573cSmrg then 3680e39b573cSmrg cf_desktop_last= 3681e39b573cSmrg sort conftest.1 | \ 3682e39b573cSmrg while true 3683e39b573cSmrg do 3684e39b573cSmrg read cf_desktop_this 3685e39b573cSmrg test -z "$cf_desktop_this" && break 3686f2e35a3aSmrg if test -s conftest.2 3687f2e35a3aSmrg then 3688f2e35a3aSmrg grep -w "$cf_desktop_this" conftest.2 >/dev/null && continue 3689f2e35a3aSmrg elif test -s conftest.3 3690f2e35a3aSmrg then 3691f2e35a3aSmrg grep -w "$cf_desktop_this" conftest.3 >/dev/null && continue 3692f2e35a3aSmrg fi 3693f2e35a3aSmrg case "$cf_desktop_this" in 3694f2e35a3aSmrg (-*) 3695f2e35a3aSmrg ;; 3696f2e35a3aSmrg (Qt*|*Xfce*|*[[ABCDEFGHIJKLMNOPQRSTUVWXYZ]][[ABCDEFGHIJKLMNOPQRSTUVWXYZ]]*) 3697f2e35a3aSmrg CF_VERBOSE(ignored $cf_desktop_this) 3698f2e35a3aSmrg echo "$cf_desktop_this" >> conftest.3 3699e39b573cSmrg ;; 370001037d57Smrg ($3) 3701f2e35a3aSmrg CF_VERBOSE(applied $cf_desktop_this) 3702f2e35a3aSmrg test "x$cf_desktop_last" != "x$cf_desktop_this" && echo "$cf_desktop_this" >>conftest.2 3703e39b573cSmrg ;; 3704e39b573cSmrg esac 3705e39b573cSmrg cf_desktop_last=$cf_desktop_this 3706e39b573cSmrg done 3707f2e35a3aSmrg cf_desktop_want="`tr '\n' ';' < conftest.2`" 3708e39b573cSmrg fi 37090bd37d32Smrg if test -n "$cf_desktop_want" 37100bd37d32Smrg then 37110bd37d32Smrg if test "$cf_desktop_want" = auto 37120bd37d32Smrg then 37130bd37d32Smrg cf_desktop_want= 37140bd37d32Smrg else 37150bd37d32Smrg # do a sanity check on the semicolon-separated list, ignore on failure 37160bd37d32Smrg cf_desktop_test=`echo "$cf_desktop_want" | sed -e 's/[[^;]]//g'` 37170bd37d32Smrg test -z "$cf_desktop_test" && cf_desktop_want= 37180bd37d32Smrg cf_desktop_test=`echo "$cf_desktop_want" | sed -e 's/^.*;$/./g'` 37190bd37d32Smrg test -z "$cf_desktop_test" && cf_desktop_want= 37200bd37d32Smrg fi 37210bd37d32Smrg fi 37220bd37d32Smrg if test -z "$cf_desktop_want" 37230bd37d32Smrg then 37240bd37d32Smrg cf_desktop_want="ifelse([$4],,ifelse([$3],,[Application;],[`echo "$3" | sed -e 's/\*//g' -e 's/|/;/g' -e 's/[[;]]*$/;/g'`]),[$4])" 37250bd37d32Smrg CF_VERBOSE(no usable value found for desktop category, using $cf_desktop_want) 37260bd37d32Smrg fi 3727e39b573cSmrg fi 3728e39b573cSmrg DESKTOP_CATEGORY=`echo "$cf_desktop_want" | sed -e 's/[[ ,]]/;/g'` 37290bd37d32Smrg CF_VERBOSE(will use Categories=$DESKTOP_CATEGORY) 3730e39b573cSmrg AC_SUBST(DESKTOP_CATEGORY) 3731e39b573cSmrgfi 3732e39b573cSmrg]) 3733e39b573cSmrgdnl --------------------------------------------------------------------------- 37340bd37d32Smrgdnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 3735e39b573cSmrgdnl --------------- 37360bd37d32Smrgdnl Configure-option for dmalloc. The optional parameter is used to override 37370bd37d32Smrgdnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 37380bd37d32SmrgAC_DEFUN([CF_WITH_DMALLOC],[ 37390bd37d32SmrgCF_NO_LEAKS_OPTION(dmalloc, 37400bd37d32Smrg [ --with-dmalloc test: use Gray Watson's dmalloc library], 37410bd37d32Smrg [USE_DMALLOC]) 37420bd37d32Smrg 37430bd37d32Smrgif test "$with_dmalloc" = yes ; then 37440bd37d32Smrg AC_CHECK_HEADER(dmalloc.h, 37450bd37d32Smrg [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) 37460bd37d32Smrgfi 37470bd37d32Smrg])dnl 37480bd37d32Smrgdnl --------------------------------------------------------------------------- 37490bd37d32Smrgdnl CF_WITH_ICONDIR version: 5 updated: 2012/07/22 09:18:02 37500bd37d32Smrgdnl --------------- 37510bd37d32Smrgdnl Handle configure option "--with-icondir", setting these shell variables: 37520bd37d32Smrgdnl 37530bd37d32Smrgdnl $ICONDIR is the option value, used for installing icon files. 3754e39b573cSmrgdnl $no_icondir is a "#" (comment) if "--without-icondir" is given. 3755e39b573cSmrgAC_DEFUN([CF_WITH_ICONDIR],[ 3756e39b573cSmrgAC_MSG_CHECKING(for directory to install icons) 37570bd37d32SmrgAC_ARG_WITH(icondir, 37580bd37d32Smrg [ --with-icondir=DIR directory in which to install icons for desktop], 37590bd37d32Smrg [ICONDIR=$withval], 37600bd37d32Smrg [test -z "$ICONDIR" && ICONDIR=no]) 37610bd37d32Smrg 37620bd37d32Smrgif test "x[$]ICONDIR" = xauto 37630bd37d32Smrgthen 37640bd37d32Smrg ICONDIR='${datadir}/icons' 37650bd37d32Smrg for cf_path in \ 37660bd37d32Smrg /usr/share/icons \ 37670bd37d32Smrg /usr/X11R6/share/icons 37680bd37d32Smrg do 37690bd37d32Smrg if test -d "$cf_path" ; then 37700bd37d32Smrg ICONDIR="$cf_path" 37710bd37d32Smrg break 37720bd37d32Smrg fi 37730bd37d32Smrg done 37740bd37d32Smrgelse 37750bd37d32Smrg cf_path=$ICONDIR 37760bd37d32Smrg CF_PATH_SYNTAX(cf_path) 37770bd37d32Smrgfi 37780bd37d32SmrgAC_MSG_RESULT($ICONDIR) 37790bd37d32SmrgAC_SUBST(ICONDIR) 3780e39b573cSmrg 3781e39b573cSmrgno_icondir= 37820bd37d32Smrgif test "$ICONDIR" = no 37830bd37d32Smrgthen 37840bd37d32Smrg no_icondir="#" 37850bd37d32Smrgelse 37860bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(ICONDIR)" 37870bd37d32Smrgfi 3788e39b573cSmrgAC_SUBST(no_icondir) 3789e39b573cSmrg])dnl 3790e39b573cSmrgdnl --------------------------------------------------------------------------- 379101037d57Smrgdnl CF_WITH_ICON_NAME version: 3 updated: 2015/04/12 15:39:00 37920bd37d32Smrgdnl ----------------- 37930bd37d32Smrgdnl Allow a default icon-name to be overridden. 37940bd37d32Smrgdnl $1 = default icon name 37950bd37d32SmrgAC_DEFUN([CF_WITH_ICON_NAME],[ 37960bd37d32SmrgAC_MSG_CHECKING(for the icon name) 37970bd37d32SmrgAC_ARG_WITH(icon-name, 37980bd37d32Smrg [ --with-icon-name=XXXX override icon name (default: $1)], 37990bd37d32Smrg [ICON_NAME="$withval"], 38000bd37d32Smrg [ICON_NAME=$1]) 38010bd37d32Smrgcase "x$ICON_NAME" in 380201037d57Smrg(xyes|xno|x) 38030bd37d32Smrg ICON_NAME=$1 38040bd37d32Smrg ;; 38050bd37d32Smrgesac 38060bd37d32SmrgAC_SUBST(ICON_NAME) 38070bd37d32SmrgAC_MSG_RESULT($ICON_NAME) 38080bd37d32Smrg])dnl 38090bd37d32Smrgdnl --------------------------------------------------------------------------- 381001037d57Smrgdnl CF_WITH_ICON_SYMLINK version: 2 updated: 2015/04/12 15:39:00 38110bd37d32Smrgdnl -------------------- 38120bd37d32Smrgdnl Workaround for systems which are (mis)configured to map all icon references 38130bd37d32Smrgdnl for xterm into "xterm" name. For instance, recent (2013) KDE ignores both 38140bd37d32Smrgdnl the name given in the .desktop file (xterm-color) and the application name 38150bd37d32Smrgdnl (xterm-dev). 38160bd37d32Smrgdnl 38170bd37d32Smrgdnl $1 = default icon name to use if symlink is wanted 38180bd37d32SmrgAC_DEFUN([CF_WITH_ICON_SYMLINK],[ 38190bd37d32SmrgAC_MSG_CHECKING(for icon symlink to use) 38200bd37d32SmrgAC_ARG_WITH(icon-symlink, 38210bd37d32Smrg [ --with-icon-symlink=XXX make symbolic link for icon name (default: $1)], 38220bd37d32Smrg [ICON_SYMLINK="$withval"], 38230bd37d32Smrg [ICON_SYMLINK=NONE]) 38240bd37d32Smrgcase "x$ICON_SYMLINK" in 382501037d57Smrg(xyes) 38260bd37d32Smrg ICON_SYMLINK=$1 38270bd37d32Smrg ;; 382801037d57Smrg(xno|x) 38290bd37d32Smrg ICON_SYMLINK=NONE 38300bd37d32Smrg ;; 38310bd37d32Smrgesac 38320bd37d32SmrgAC_SUBST(ICON_SYMLINK) 38330bd37d32SmrgAC_MSG_RESULT($ICON_SYMLINK) 38340bd37d32Smrg])dnl 38350bd37d32Smrgdnl --------------------------------------------------------------------------- 3836f2e35a3aSmrgdnl CF_WITH_ICON_THEME version: 13 updated: 2020/12/31 10:54:15 38370bd37d32Smrgdnl ------------------ 38380bd37d32Smrgdnl If asked, check for prerequisites and setup symbols to permit installing 38390bd37d32Smrgdnl one or more application icons in the Red Hat icon-theme directory 384001037d57Smrgdnl hierarchy. 38410bd37d32Smrgdnl 38420bd37d32Smrgdnl If the prerequisites are missing, give a warning and revert to the long- 38430bd37d32Smrgdnl standing pixmaps directory. 38440bd37d32Smrgdnl 38450bd37d32Smrgdnl Parameters: 38460bd37d32Smrgdnl 38470bd37d32Smrgdnl $1 = application icon. This can be a list, and is not optional. 38480bd37d32Smrgdnl $2 = default theme (defaults to hicolor) 38490bd37d32Smrgdnl $3 = formats (defaults to list [.svg .png .xpm]) 38500bd37d32Smrgdnl $4 = alternate icon if no theme is used (defaults to $1). 38510bd37d32Smrgdnl 38520bd37d32Smrgdnl Result: 3853f2e35a3aSmrgdnl ICON_NAME = basename of first item in $1, unless already set 38540bd37d32Smrgdnl ICON_LIST = reprocessed $1 38550bd37d32Smrgdnl ICON_THEME = reprocessed $2 38560bd37d32Smrgdnl ICON_FORMAT = reprocessed $3 38570bd37d32SmrgAC_DEFUN([CF_WITH_ICON_THEME], 38580bd37d32Smrg[ 38590bd37d32Smrgifelse([$1],,[ 38600bd37d32Smrg AC_MSG_ERROR([macro [CF_WITH_ICON_THEME] requires application-icon name]) 38610bd37d32Smrg],[ 38620bd37d32Smrg 38630bd37d32SmrgCF_WITH_PIXMAPDIR 38640bd37d32SmrgCF_WITH_ICONDIR 38650bd37d32Smrg 38660bd37d32SmrgAC_MSG_CHECKING(if icon theme should be used) 38670bd37d32SmrgAC_ARG_WITH(icon-theme, 38680bd37d32Smrg [ --with-icon-theme=XXX install icons into desktop theme (hicolor)], 38690bd37d32Smrg [ICON_THEME=$withval], 38700bd37d32Smrg [ICON_THEME=no]) 38710bd37d32Smrg 387201037d57Smrgcase "x$ICON_THEME" in 387301037d57Smrg(xno) 38740bd37d32Smrg ;; 387501037d57Smrg(x|xyes) 38760bd37d32Smrg ICON_THEME=ifelse([$2],,hicolor,$2) 38770bd37d32Smrg ;; 38780bd37d32Smrgesac 38790bd37d32SmrgAC_MSG_RESULT($ICON_THEME) 38800bd37d32Smrg 38810bd37d32Smrgif test "x$ICON_THEME" = xno 38820bd37d32Smrgthen 38830bd37d32Smrg if test "x$ICONDIR" != xno 38840bd37d32Smrg then 38850bd37d32Smrg CF_VERBOSE(ignoring icondir without theme) 38860bd37d32Smrg no_icondir="#" 38870bd37d32Smrg fi 38880bd37d32Smrgelse 38890bd37d32Smrg if test "x$ICONDIR" = xno 38900bd37d32Smrg then 38910bd37d32Smrg AC_MSG_ERROR(icondir must be set for icon theme) 38920bd37d32Smrg fi 38930bd37d32Smrgfi 38940bd37d32Smrg 38950bd37d32Smrg: ${ICON_FORMAT:=ifelse([$3],,[".svg .png .xpm"],[$3])} 38960bd37d32Smrg 38970bd37d32SmrgICON_LIST= 38980bd37d32Smrg 38990bd37d32Smrgifelse([$4],,[cf_icon_list=$1],[ 39000bd37d32Smrgif test "x$ICON_THEME" != xno 39010bd37d32Smrgthen 39020bd37d32Smrg cf_icon_list="$1" 39030bd37d32Smrgelse 39040bd37d32Smrg cf_icon_list="$4" 39050bd37d32Smrgfi 39060bd37d32Smrg]) 39070bd37d32Smrg 39080bd37d32SmrgAC_MSG_CHECKING([for icon(s) to install]) 39090bd37d32Smrgfor cf_name in $cf_icon_list 39100bd37d32Smrgdo 39110bd37d32Smrg CF_VERBOSE(using $ICON_FORMAT) 39120bd37d32Smrg for cf_suffix in $ICON_FORMAT 39130bd37d32Smrg do 39140bd37d32Smrg cf_icon="${cf_name}${cf_suffix}" 39150bd37d32Smrg cf_left=`echo "$cf_icon" | sed -e 's/:.*//'` 39160bd37d32Smrg if test ! -f "${cf_left}" 39170bd37d32Smrg then 39180bd37d32Smrg if test "x$srcdir" != "x." 39190bd37d32Smrg then 39200bd37d32Smrg cf_icon="${srcdir}/${cf_left}" 39210bd37d32Smrg cf_left=`echo "$cf_icon" | sed -e 's/:.*//'` 39220bd37d32Smrg if test ! -f "${cf_left}" 39230bd37d32Smrg then 39240bd37d32Smrg continue 39250bd37d32Smrg fi 39260bd37d32Smrg else 39270bd37d32Smrg continue 39280bd37d32Smrg fi 39290bd37d32Smrg fi 39300bd37d32Smrg if test "x$ICON_THEME" != xno 39310bd37d32Smrg then 3932f2e35a3aSmrg cf_base=`basename "$cf_left"` 39330bd37d32Smrg cf_trim=`echo "$cf_base" | sed -e 's/_[[0-9]][[0-9]]x[[0-9]][[0-9]]\././'` 393401037d57Smrg case "x${cf_base}" in 393501037d57Smrg (*:*) 39360bd37d32Smrg cf_next=$cf_base 39370bd37d32Smrg # user-defined mapping 39380bd37d32Smrg ;; 393901037d57Smrg (*.png) 39400bd37d32Smrg 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'` 39410bd37d32Smrg if test -z "$cf_size" 39420bd37d32Smrg then 39430bd37d32Smrg AC_MSG_WARN(cannot determine size of $cf_left) 39440bd37d32Smrg continue 39450bd37d32Smrg fi 39460bd37d32Smrg cf_next="$cf_size/apps/$cf_trim" 39470bd37d32Smrg ;; 394801037d57Smrg (*.svg) 39490bd37d32Smrg cf_next="scalable/apps/$cf_trim" 39500bd37d32Smrg ;; 395101037d57Smrg (*.xpm) 39520bd37d32Smrg CF_VERBOSE(ignored XPM file in icon theme) 39530bd37d32Smrg continue 39540bd37d32Smrg ;; 395501037d57Smrg (*_[[0-9]][[0-9]]*x[[0-9]][[0-9]]*.*) 39560bd37d32Smrg cf_size=`echo "$cf_left"|sed -e 's/^.*_\([[0-9]][[0-9]]*x[[0-9]][[0-9]]*\)\..*$/\1/'` 39570bd37d32Smrg cf_left=`echo "$cf_left"|sed -e 's/^\(.*\)_\([[0-9]][[0-9]]*x[[0-9]][[0-9]]*\)\(\..*\)$/\1\3/'` 39580bd37d32Smrg cf_next="$cf_size/apps/$cf_base" 39590bd37d32Smrg ;; 39600bd37d32Smrg esac 39610bd37d32Smrg CF_VERBOSE(adding $cf_next) 39620bd37d32Smrg cf_icon="${cf_icon}:${cf_next}" 39630bd37d32Smrg fi 39640bd37d32Smrg test -n "$ICON_LIST" && ICON_LIST="$ICON_LIST " 39650bd37d32Smrg ICON_LIST="$ICON_LIST${cf_icon}" 39660bd37d32Smrg if test -z "$ICON_NAME" 39670bd37d32Smrg then 3968f2e35a3aSmrg ICON_NAME=`basename "$cf_icon" | sed -e 's/[[.:]].*//'` 39690bd37d32Smrg fi 39700bd37d32Smrg done 39710bd37d32Smrgdone 39720bd37d32Smrg 39730bd37d32Smrgif test -n "$verbose" 39740bd37d32Smrgthen 39750bd37d32Smrg AC_MSG_CHECKING(result) 39760bd37d32Smrgfi 39770bd37d32SmrgAC_MSG_RESULT($ICON_LIST) 39780bd37d32Smrg 39790bd37d32Smrgif test -z "$ICON_LIST" 39800bd37d32Smrgthen 39810bd37d32Smrg AC_MSG_ERROR(no icons found) 39820bd37d32Smrgfi 39830bd37d32Smrg]) 39840bd37d32Smrg 39850bd37d32SmrgAC_MSG_CHECKING(for icon name) 39860bd37d32SmrgAC_MSG_RESULT($ICON_NAME) 39870bd37d32Smrg 39880bd37d32SmrgAC_SUBST(ICON_FORMAT) 39890bd37d32SmrgAC_SUBST(ICON_THEME) 39900bd37d32SmrgAC_SUBST(ICON_LIST) 39910bd37d32SmrgAC_SUBST(ICON_NAME) 39920bd37d32Smrg])dnl 39930bd37d32Smrgdnl --------------------------------------------------------------------------- 399401037d57Smrgdnl CF_WITH_IMAKE_CFLAGS version: 10 updated: 2015/04/12 15:39:00 3995d522f475Smrgdnl -------------------- 3996d522f475Smrgdnl xterm and similar programs build more readily when propped up with imake's 3997d522f475Smrgdnl hand-tuned definitions. If we do not use imake, provide fallbacks for the 3998d522f475Smrgdnl most common definitions that we're not likely to do by autoconf tests. 3999d522f475SmrgAC_DEFUN([CF_WITH_IMAKE_CFLAGS],[ 4000d522f475SmrgAC_REQUIRE([CF_ENABLE_NARROWPROTO]) 4001d522f475Smrg 4002d522f475SmrgAC_MSG_CHECKING(if we should use imake to help) 4003d522f475SmrgCF_ARG_DISABLE(imake, 4004d522f475Smrg [ --disable-imake disable use of imake for definitions], 4005d522f475Smrg [enable_imake=no], 4006d522f475Smrg [enable_imake=yes]) 4007d522f475SmrgAC_MSG_RESULT($enable_imake) 4008d522f475Smrg 4009d522f475Smrgif test "$enable_imake" = yes ; then 401020d2c4d2Smrg CF_IMAKE_CFLAGS(ifelse([$1],,,[$1])) 4011d522f475Smrgfi 4012d522f475Smrg 4013d522f475Smrgif test -n "$IMAKE" && test -n "$IMAKE_CFLAGS" ; then 4014d522f475Smrg CF_ADD_CFLAGS($IMAKE_CFLAGS) 4015d522f475Smrgelse 4016d522f475Smrg IMAKE_CFLAGS= 4017d522f475Smrg IMAKE_LOADFLAGS= 4018d522f475Smrg CF_VERBOSE(make fallback definitions) 4019d522f475Smrg 4020d522f475Smrg # We prefer config.guess' values when we can get them, to avoid 4021d522f475Smrg # inconsistent results with uname (AIX for instance). However, 4022d522f475Smrg # config.guess is not always consistent either. 4023d522f475Smrg case $host_os in 402401037d57Smrg (*[[0-9]].[[0-9]]*) 4025d522f475Smrg UNAME_RELEASE="$host_os" 4026d522f475Smrg ;; 402701037d57Smrg (*) 4028d522f475Smrg UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown 4029d522f475Smrg ;; 4030d522f475Smrg esac 4031d522f475Smrg 4032d522f475Smrg case .$UNAME_RELEASE in 403301037d57Smrg (*[[0-9]].[[0-9]]*) 4034d522f475Smrg OSMAJORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/\..*//'` 4035d522f475Smrg OSMINORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/^[[^.]]*\.//' -e 's/\..*//' -e 's/[[^0-9]].*//' ` 4036d522f475Smrg test -z "$OSMAJORVERSION" && OSMAJORVERSION=1 4037d522f475Smrg test -z "$OSMINORVERSION" && OSMINORVERSION=0 4038d522f475Smrg IMAKE_CFLAGS="-DOSMAJORVERSION=$OSMAJORVERSION -DOSMINORVERSION=$OSMINORVERSION $IMAKE_CFLAGS" 4039d522f475Smrg ;; 4040d522f475Smrg esac 4041d522f475Smrg 4042d522f475Smrg # FUNCPROTO is standard with X11R6, but XFree86 drops it, leaving some 4043d522f475Smrg # fallback/fragments for NeedPrototypes, etc. 4044d522f475Smrg IMAKE_CFLAGS="-DFUNCPROTO=15 $IMAKE_CFLAGS" 4045d522f475Smrg 4046d522f475Smrg # If this is not set properly, Xaw's scrollbars will not work 4047d522f475Smrg if test "$enable_narrowproto" = yes ; then 4048d522f475Smrg IMAKE_CFLAGS="-DNARROWPROTO=1 $IMAKE_CFLAGS" 4049d522f475Smrg fi 4050d522f475Smrg 4051d522f475Smrg # Other special definitions: 4052d522f475Smrg case $host_os in 405301037d57Smrg (aix*) 4054d522f475Smrg # imake on AIX 5.1 defines AIXV3. really. 4055d522f475Smrg IMAKE_CFLAGS="-DAIXV3 -DAIXV4 $IMAKE_CFLAGS" 4056d522f475Smrg ;; 405701037d57Smrg (irix[[56]].*) 4058d522f475Smrg # these are needed to make SIGWINCH work in xterm 4059d522f475Smrg IMAKE_CFLAGS="-DSYSV -DSVR4 $IMAKE_CFLAGS" 4060d522f475Smrg ;; 4061d522f475Smrg esac 4062d522f475Smrg 4063d522f475Smrg CF_ADD_CFLAGS($IMAKE_CFLAGS) 4064d522f475Smrg 4065d522f475Smrg AC_SUBST(IMAKE_CFLAGS) 4066d522f475Smrg AC_SUBST(IMAKE_LOADFLAGS) 4067d522f475Smrgfi 4068d522f475Smrg])dnl 4069d522f475Smrgdnl --------------------------------------------------------------------------- 4070f2e35a3aSmrgdnl CF_WITH_MAN2HTML version: 12 updated: 2021/01/03 18:30:50 407101037d57Smrgdnl ---------------- 4072f2e35a3aSmrgdnl Check for man2html and groff. Prefer man2html over groff, but use groff 4073f2e35a3aSmrgdnl as a fallback. See 4074f2e35a3aSmrgdnl 4075f2e35a3aSmrgdnl http://invisible-island.net/scripts/man2html.html 4076f2e35a3aSmrgdnl 407701037d57Smrgdnl Generate a shell script which hides the differences between the two. 407801037d57Smrgdnl 407901037d57Smrgdnl We name that "man2html.tmp". 408001037d57Smrgdnl 408101037d57Smrgdnl The shell script can be removed later, e.g., using "make distclean". 408201037d57SmrgAC_DEFUN([CF_WITH_MAN2HTML],[ 4083f2e35a3aSmrgAC_REQUIRE([CF_PROG_GROFF])dnl 4084f2e35a3aSmrgAC_REQUIRE([AC_PROG_FGREP])dnl 4085f2e35a3aSmrg 4086f2e35a3aSmrgcase "x${with_man2html}" in 4087f2e35a3aSmrg(xno) 4088f2e35a3aSmrg cf_man2html=no 4089f2e35a3aSmrg ;; 4090f2e35a3aSmrg(x|xyes) 4091f2e35a3aSmrg AC_PATH_PROG(cf_man2html,man2html,no) 4092f2e35a3aSmrg case "x$cf_man2html" in 4093f2e35a3aSmrg (x/*) 4094f2e35a3aSmrg AC_MSG_CHECKING(for the modified Earl Hood script) 4095f2e35a3aSmrg if ( $cf_man2html -help 2>&1 | grep 'Make an index of headers at the end' >/dev/null ) 4096f2e35a3aSmrg then 4097f2e35a3aSmrg cf_man2html_ok=yes 4098f2e35a3aSmrg else 4099f2e35a3aSmrg cf_man2html=no 4100f2e35a3aSmrg cf_man2html_ok=no 4101f2e35a3aSmrg fi 4102f2e35a3aSmrg AC_MSG_RESULT($cf_man2html_ok) 4103f2e35a3aSmrg ;; 4104f2e35a3aSmrg (*) 4105f2e35a3aSmrg cf_man2html=no 4106f2e35a3aSmrg ;; 4107f2e35a3aSmrg esac 4108f2e35a3aSmrgesac 410901037d57Smrg 411001037d57SmrgAC_MSG_CHECKING(for program to convert manpage to html) 411101037d57SmrgAC_ARG_WITH(man2html, 411201037d57Smrg [ --with-man2html=XXX use XXX rather than groff], 411301037d57Smrg [cf_man2html=$withval], 4114f2e35a3aSmrg [cf_man2html=$cf_man2html]) 411501037d57Smrg 411601037d57Smrgcf_with_groff=no 411701037d57Smrg 411801037d57Smrgcase $cf_man2html in 411901037d57Smrg(yes) 412001037d57Smrg AC_MSG_RESULT(man2html) 412101037d57Smrg AC_PATH_PROG(cf_man2html,man2html,no) 412201037d57Smrg ;; 412301037d57Smrg(no|groff|*/groff*) 412401037d57Smrg cf_with_groff=yes 412501037d57Smrg cf_man2html=$GROFF_PATH 412601037d57Smrg AC_MSG_RESULT($cf_man2html) 412701037d57Smrg ;; 412801037d57Smrg(*) 412901037d57Smrg AC_MSG_RESULT($cf_man2html) 413001037d57Smrg ;; 413101037d57Smrgesac 413201037d57Smrg 413301037d57SmrgMAN2HTML_TEMP="man2html.tmp" 413401037d57Smrg cat >$MAN2HTML_TEMP <<CF_EOF 41352e4f8982Smrg#!$SHELL 413601037d57Smrg# Temporary script generated by CF_WITH_MAN2HTML 413701037d57Smrg# Convert inputs to html, sending result to standard output. 413801037d57Smrg# 413901037d57Smrg# Parameters: 41402e4f8982Smrg# \${1} = rootname of file to convert 41412e4f8982Smrg# \${2} = suffix of file to convert, e.g., "1" 41422e4f8982Smrg# \${3} = macros to use, e.g., "man" 414301037d57Smrg# 414401037d57SmrgROOT=\[$]1 414501037d57SmrgTYPE=\[$]2 414601037d57SmrgMACS=\[$]3 414701037d57Smrg 414801037d57Smrgunset LANG 414901037d57Smrgunset LC_ALL 415001037d57Smrgunset LC_CTYPE 415101037d57Smrgunset LANGUAGE 415201037d57SmrgGROFF_NO_SGR=stupid 415301037d57Smrgexport GROFF_NO_SGR 415401037d57Smrg 415501037d57SmrgCF_EOF 415601037d57Smrg 4157f2e35a3aSmrgNROFF_OPTS= 415801037d57Smrgif test "x$cf_with_groff" = xyes 415901037d57Smrgthen 416001037d57Smrg MAN2HTML_NOTE="$GROFF_NOTE" 416101037d57Smrg MAN2HTML_PATH="$GROFF_PATH" 416201037d57Smrg cat >>$MAN2HTML_TEMP <<CF_EOF 4163f2e35a3aSmrg$SHELL -c "$TBL_PATH \${ROOT}.\${TYPE} | $GROFF_PATH -P -o0 -I\${ROOT}_ -Thtml -\${MACS}" 416401037d57SmrgCF_EOF 416501037d57Smrgelse 4166f2e35a3aSmrg # disable hyphenation if this is groff 4167f2e35a3aSmrg if test "x$GROFF_PATH" != xno 4168f2e35a3aSmrg then 4169f2e35a3aSmrg AC_MSG_CHECKING(if nroff is really groff) 4170f2e35a3aSmrg cf_check_groff="`$NROFF_PATH --version 2>/dev/null | grep groff`" 4171f2e35a3aSmrg test -n "$cf_check_groff" && cf_check_groff=yes 4172f2e35a3aSmrg test -n "$cf_check_groff" || cf_check_groff=no 4173f2e35a3aSmrg AC_MSG_RESULT($cf_check_groff) 4174f2e35a3aSmrg test "x$cf_check_groff" = xyes && NROFF_OPTS="-rHY=0" 4175f2e35a3aSmrg fi 417601037d57Smrg MAN2HTML_NOTE="" 417701037d57Smrg CF_PATH_SYNTAX(cf_man2html) 417801037d57Smrg MAN2HTML_PATH="$cf_man2html" 417901037d57Smrg AC_MSG_CHECKING(for $cf_man2html top/bottom margins) 418001037d57Smrg 418101037d57Smrg # for this example, expect 3 lines of content, the remainder is head/foot 418201037d57Smrg cat >conftest.in <<CF_EOF 418301037d57Smrg.TH HEAD1 HEAD2 HEAD3 HEAD4 HEAD5 418401037d57Smrg.SH SECTION 418501037d57SmrgMARKER 418601037d57SmrgCF_EOF 418701037d57Smrg 4188f2e35a3aSmrg LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out 418901037d57Smrg 4190f2e35a3aSmrg cf_man2html_1st="`${FGREP-fgrep} -n MARKER conftest.out |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`" 4191f2e35a3aSmrg cf_man2html_top=`expr "$cf_man2html_1st" - 2` 4192f2e35a3aSmrg cf_man2html_bot="`wc -l conftest.out |sed -e 's/[[^0-9]]//g'`" 4193f2e35a3aSmrg cf_man2html_bot=`expr "$cf_man2html_bot" - 2 - "$cf_man2html_top"` 419401037d57Smrg cf_man2html_top_bot="-topm=$cf_man2html_top -botm=$cf_man2html_bot" 419501037d57Smrg 419601037d57Smrg AC_MSG_RESULT($cf_man2html_top_bot) 419701037d57Smrg 419801037d57Smrg AC_MSG_CHECKING(for pagesize to use) 419901037d57Smrg for cf_block in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 420001037d57Smrg do 420101037d57Smrg cat >>conftest.in <<CF_EOF 420201037d57Smrg.nf 420301037d57Smrg0 420401037d57Smrg1 420501037d57Smrg2 420601037d57Smrg3 420701037d57Smrg4 420801037d57Smrg5 420901037d57Smrg6 421001037d57Smrg7 421101037d57Smrg8 421201037d57Smrg9 421301037d57SmrgCF_EOF 421401037d57Smrg done 421501037d57Smrg 4216f2e35a3aSmrg LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out 4217f2e35a3aSmrg cf_man2html_page="`${FGREP-fgrep} -n HEAD1 conftest.out |sed -n '$p' |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`" 421801037d57Smrg test -z "$cf_man2html_page" && cf_man2html_page=99999 421901037d57Smrg test "$cf_man2html_page" -gt 100 && cf_man2html_page=99999 422001037d57Smrg 422101037d57Smrg rm -rf conftest* 422201037d57Smrg AC_MSG_RESULT($cf_man2html_page) 422301037d57Smrg 422401037d57Smrg cat >>$MAN2HTML_TEMP <<CF_EOF 422501037d57Smrg: \${MAN2HTML_PATH=$MAN2HTML_PATH} 4226f2e35a3aSmrgMAN2HTML_OPTS="\$MAN2HTML_OPTS -index -title=\"\$ROOT(\$TYPE)\" -compress -pgsize $cf_man2html_page" 422701037d57Smrgcase \${TYPE} in 422801037d57Smrg(ms) 4229f2e35a3aSmrg $TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH -topm=0 -botm=0 \$MAN2HTML_OPTS 423001037d57Smrg ;; 423101037d57Smrg(*) 4232f2e35a3aSmrg $TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH $cf_man2html_top_bot \$MAN2HTML_OPTS 423301037d57Smrg ;; 423401037d57Smrgesac 423501037d57SmrgCF_EOF 423601037d57Smrgfi 423701037d57Smrg 423801037d57Smrgchmod 700 $MAN2HTML_TEMP 423901037d57Smrg 424001037d57SmrgAC_SUBST(MAN2HTML_NOTE) 424101037d57SmrgAC_SUBST(MAN2HTML_PATH) 424201037d57SmrgAC_SUBST(MAN2HTML_TEMP) 424301037d57Smrg])dnl 424401037d57Smrgdnl --------------------------------------------------------------------------- 4245f2e35a3aSmrgdnl CF_WITH_PCRE version: 12 updated: 2017/07/29 22:57:34 4246d522f475Smrgdnl ------------ 4247d522f475Smrgdnl Add PCRE (Perl-compatible regular expressions) to the build if it is 4248d522f475Smrgdnl available and the user requests it. Assume the application will otherwise 4249d522f475Smrgdnl use the POSIX interface. 4250d522f475Smrgdnl 4251d522f475Smrgdnl TODO allow $withval to specify package location 4252d522f475SmrgAC_DEFUN([CF_WITH_PCRE], 4253d522f475Smrg[ 425420d2c4d2SmrgAC_REQUIRE([CF_PKG_CONFIG]) 425520d2c4d2Smrg 4256d522f475SmrgAC_MSG_CHECKING(if you want to use PCRE for regular-expressions) 4257d522f475SmrgAC_ARG_WITH(pcre, 4258d522f475Smrg [ --with-pcre use PCRE for regular-expressions]) 4259d522f475Smrgtest -z "$with_pcre" && with_pcre=no 4260d522f475SmrgAC_MSG_RESULT($with_pcre) 4261d522f475Smrg 4262d522f475Smrgif test "$with_pcre" != no ; then 426320d2c4d2Smrg CF_TRY_PKG_CONFIG(libpcre,,[ 426420d2c4d2Smrg AC_CHECK_LIB(pcre,pcre_compile,, 426520d2c4d2Smrg AC_MSG_ERROR(Cannot find PCRE library))]) 426620d2c4d2Smrg 4267f2e35a3aSmrg AC_DEFINE(HAVE_LIB_PCRE,1,[Define to 1 if we can/should compile with the PCRE library]) 426820d2c4d2Smrg 4269f2e35a3aSmrg case $LIBS in 4270f2e35a3aSmrg (*pcreposix*) 4271f2e35a3aSmrg ;; 4272f2e35a3aSmrg (*) 4273f2e35a3aSmrg AC_CHECK_LIB(pcreposix,pcreposix_regcomp, 4274f2e35a3aSmrg [AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h]) 4275f2e35a3aSmrg CF_ADD_LIB(pcreposix)], 4276f2e35a3aSmrg [AC_CHECK_LIB(pcreposix,regcomp,[ 4277f2e35a3aSmrg AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h]) 4278f2e35a3aSmrg CF_ADD_LIB(pcreposix)], 4279f2e35a3aSmrg AC_MSG_ERROR(Cannot find PCRE POSIX library)])) 4280f2e35a3aSmrg ;; 4281f2e35a3aSmrg esac 4282f2e35a3aSmrgfi 4283f2e35a3aSmrg])dnl 4284f2e35a3aSmrgdnl --------------------------------------------------------------------------- 4285f2e35a3aSmrgdnl CF_WITH_PCRE2 version: 5 updated: 2021/01/26 18:45:12 4286f2e35a3aSmrgdnl ------------- 4287f2e35a3aSmrgdnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is 4288f2e35a3aSmrgdnl available and the user requests it. Assume the application will otherwise 4289f2e35a3aSmrgdnl use the POSIX interface. 4290f2e35a3aSmrgdnl 4291f2e35a3aSmrgdnl TODO allow $withval to specify package location 4292f2e35a3aSmrgAC_DEFUN([CF_WITH_PCRE2], 4293f2e35a3aSmrg[ 4294f2e35a3aSmrgAC_REQUIRE([CF_PKG_CONFIG]) 4295f2e35a3aSmrg 4296f2e35a3aSmrgAC_MSG_CHECKING(if you want to use PCRE2 for regular-expressions) 4297f2e35a3aSmrgAC_ARG_WITH(pcre2, 4298f2e35a3aSmrg [ --with-pcre2 use PCRE2 for regular-expressions]) 4299f2e35a3aSmrgtest -z "$with_pcre2" && with_pcre2=no 4300f2e35a3aSmrgAC_MSG_RESULT($with_pcre2) 4301f2e35a3aSmrg 4302f2e35a3aSmrgif test "x$with_pcre2" != xno ; then 4303f2e35a3aSmrg cf_with_pcre2_ok=no 4304f2e35a3aSmrg for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre 4305f2e35a3aSmrg do 4306f2e35a3aSmrg CF_TRY_PKG_CONFIG($cf_with_pcre2,[cf_with_pcre2_ok=yes; break]) 4307f2e35a3aSmrg done 4308f2e35a3aSmrg cf_with_pcre2_ok=yes || AC_MSG_ERROR(Cannot find PCRE2 library) 4309f2e35a3aSmrg 4310f2e35a3aSmrg AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library]) 4311f2e35a3aSmrg 4312f2e35a3aSmrg # if pkgconfig gave no results, look for the libraries directly 4313f2e35a3aSmrg case "$LIBS" in 4314f2e35a3aSmrg (*pcre2-posix*|*pcreposix*) 4315f2e35a3aSmrg ;; 4316f2e35a3aSmrg (*) 4317f2e35a3aSmrg AC_CHECK_LIB(pcre2-posix,regcomp,[ 4318f2e35a3aSmrg CF_ADD_LIB(pcre2-posix)], 4319f2e35a3aSmrg [AC_CHECK_LIB(pcreposix,regcomp,[ 4320f2e35a3aSmrg CF_ADD_LIB(pcreposix) 4321f2e35a3aSmrg ],[AC_MSG_ERROR(Cannot find PCRE2 POSIX library)])]) 4322f2e35a3aSmrg ;; 4323f2e35a3aSmrg esac 4324f2e35a3aSmrg 4325f2e35a3aSmrg # either way, check for the library header files 4326f2e35a3aSmrg AC_CHECK_HEADERS(pcre2posix.h pcreposix.h) 4327d522f475Smrgfi 4328d522f475Smrg])dnl 4329d522f475Smrgdnl --------------------------------------------------------------------------- 43300bd37d32Smrgdnl CF_WITH_PIXMAPDIR version: 3 updated: 2012/07/22 09:18:02 43310bd37d32Smrgdnl ----------------- 43320bd37d32Smrgdnl Handle configure option "--with-pixmapdir", setting these shell variables: 43330bd37d32Smrgdnl 43340bd37d32Smrgdnl $PIXMAPDIR is the option value, used for installing pixmap files. 43350bd37d32Smrgdnl $no_pixmapdir is a "#" (comment) if "--without-pixmapdir" is given. 43360bd37d32SmrgAC_DEFUN([CF_WITH_PIXMAPDIR],[ 43370bd37d32SmrgAC_MSG_CHECKING(for directory to install pixmaps) 43380bd37d32SmrgAC_ARG_WITH(pixmapdir, 43390bd37d32Smrg [ --with-pixmapdir=DIR directory in which to install pixmaps (DATADIR/pixmaps)], 43400bd37d32Smrg [PIXMAPDIR=$withval], 43410bd37d32Smrg [test -z "$PIXMAPDIR" && PIXMAPDIR='${datadir}/pixmaps']) 43420bd37d32Smrg 43430bd37d32Smrgif test "x[$]PIXMAPDIR" = xauto 43440bd37d32Smrgthen 43450bd37d32Smrg PIXMAPDIR='${datadir}/pixmaps' 43460bd37d32Smrg for cf_path in \ 43470bd37d32Smrg /usr/share/pixmaps \ 43480bd37d32Smrg /usr/X11R6/share/pixmaps 43490bd37d32Smrg do 43500bd37d32Smrg if test -d "$cf_path" ; then 43510bd37d32Smrg PIXMAPDIR="$cf_path" 43520bd37d32Smrg break 43530bd37d32Smrg fi 43540bd37d32Smrg done 43550bd37d32Smrgelse 43560bd37d32Smrg cf_path=$PIXMAPDIR 43570bd37d32Smrg CF_PATH_SYNTAX(cf_path) 43580bd37d32Smrgfi 43590bd37d32SmrgAC_MSG_RESULT($PIXMAPDIR) 43600bd37d32SmrgAC_SUBST(PIXMAPDIR) 43610bd37d32Smrg 43620bd37d32Smrgno_pixmapdir= 43630bd37d32Smrgif test "$PIXMAPDIR" = no 43640bd37d32Smrgthen 43650bd37d32Smrg no_pixmapdir="#" 43660bd37d32Smrgelse 43670bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(PIXMAPDIR)" 43680bd37d32Smrgfi 43690bd37d32SmrgAC_SUBST(no_pixmapdir) 43700bd37d32Smrg])dnl 43710bd37d32Smrgdnl --------------------------------------------------------------------------- 43720bd37d32Smrgdnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21 43730bd37d32Smrgdnl ---------------- 43740bd37d32SmrgAC_DEFUN([CF_WITH_VALGRIND],[ 43750bd37d32SmrgCF_NO_LEAKS_OPTION(valgrind, 43760bd37d32Smrg [ --with-valgrind test: use valgrind], 43770bd37d32Smrg [USE_VALGRIND]) 43780bd37d32Smrg])dnl 43790bd37d32Smrgdnl --------------------------------------------------------------------------- 43802e4f8982Smrgdnl CF_WITH_XINERAMA version: 1 updated: 2016/05/28 14:41:12 43812e4f8982Smrgdnl ---------------- 43822e4f8982SmrgAC_DEFUN([CF_WITH_XINERAMA], 43832e4f8982Smrg[ 43842e4f8982SmrgAC_MSG_CHECKING(if you want to use the Xinerama extension) 43852e4f8982SmrgAC_ARG_WITH(xinerama, 43862e4f8982Smrg[ --without-xinerama do not use Xinerama extension for multiscreen support], 43872e4f8982Smrg [cf_with_xinerama="$withval"], 43882e4f8982Smrg [cf_with_xinerama=yes]) 43892e4f8982SmrgAC_MSG_RESULT($cf_with_xinerama) 43902e4f8982Smrgif test "$cf_with_xinerama" = yes; then 43912e4f8982Smrg CF_XINERAMA 43922e4f8982Smrgfi 43932e4f8982Smrg])dnl 43942e4f8982Smrgdnl --------------------------------------------------------------------------- 43950bd37d32Smrgdnl CF_WITH_XPM version: 3 updated: 2012/10/04 06:57:36 43960bd37d32Smrgdnl ----------- 43970bd37d32Smrgdnl Test for Xpm library, update compiler/loader flags if it is wanted and 43980bd37d32Smrgdnl found. 43990bd37d32Smrgdnl 44000bd37d32Smrgdnl Also sets ICON_SUFFIX 44010bd37d32SmrgAC_DEFUN([CF_WITH_XPM], 44020bd37d32Smrg[ 44030bd37d32SmrgICON_SUFFIX=.xbm 44040bd37d32Smrg 44050bd37d32Smrgcf_save_cppflags="${CPPFLAGS}" 44060bd37d32Smrgcf_save_ldflags="${LDFLAGS}" 44070bd37d32Smrg 44080bd37d32SmrgAC_MSG_CHECKING(if you want to use the Xpm library for colored icon) 44090bd37d32SmrgAC_ARG_WITH(xpm, 44100bd37d32Smrg[ --with-xpm=DIR use Xpm library for colored icon, may specify path], 44110bd37d32Smrg [cf_Xpm_library="$withval"], 44120bd37d32Smrg [cf_Xpm_library=yes]) 44130bd37d32SmrgAC_MSG_RESULT($cf_Xpm_library) 44140bd37d32Smrg 44150bd37d32Smrgif test "$cf_Xpm_library" != no ; then 44160bd37d32Smrg if test "$cf_Xpm_library" != yes ; then 44170bd37d32Smrg CPPFLAGS="$CPPFLAGS -I$withval/include" 44180bd37d32Smrg LDFLAGS="$LDFLAGS -L$withval/lib" 44190bd37d32Smrg fi 44200bd37d32Smrg AC_CHECK_HEADER(X11/xpm.h,[ 44210bd37d32Smrg AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData,[ 44220bd37d32Smrg AC_DEFINE(HAVE_LIBXPM,1,[Define to 1 if we should use Xpm library]) 44230bd37d32Smrg ICON_SUFFIX=.xpm 44240bd37d32Smrg LIBS="-lXpm $LIBS"], 44250bd37d32Smrg [CPPFLAGS="${cf_save_cppflags}" LDFLAGS="${cf_save_ldflags}"], 44260bd37d32Smrg [-lX11 $X_LIBS])], 44270bd37d32Smrg [CPPFLAGS="${cf_save_cppflags}" LDFLAGS="${cf_save_ldflags}"]) 44280bd37d32Smrgfi 44290bd37d32Smrg 44300bd37d32SmrgAC_SUBST(ICON_SUFFIX) 44310bd37d32Smrg])dnl 44320bd37d32Smrgdnl --------------------------------------------------------------------------- 443301037d57Smrgdnl CF_XBOOL_RESULT version: 3 updated: 2015/04/12 15:39:00 44340bd37d32Smrgdnl --------------- 44350bd37d32Smrgdnl Translate an autoconf boolean yes/no into X11's booleans, e.g., True/False. 44360bd37d32Smrgdnl Allow for more than two values, e.g., "maybe", still using the same leading 44370bd37d32Smrgdnl capital convention. 44380bd37d32Smrgdnl 44390bd37d32Smrgdnl $1 = symbol to define 44400bd37d32Smrgdnl $2 = symbol holding value 44410bd37d32Smrgdnl $3 = description 44420bd37d32Smrgdefine([CF_XBOOL_RESULT],[ 44430bd37d32SmrgAC_MSG_RESULT([$]$2) 444401037d57Smrgcase [$]$2 in 444501037d57Smrg(yes) 44460bd37d32Smrg $2=true 44470bd37d32Smrg ;; 444801037d57Smrg(no) 44490bd37d32Smrg $2=false 44500bd37d32Smrg ;; 44510bd37d32Smrgesac 44520bd37d32Smrgcf_xbool1=`echo "[$]$2"|sed -e 's/^\(.\).*/\1/'` 44530bd37d32SmrgCF_UPPER(cf_xbool1,$cf_xbool1) 44540bd37d32Smrgcf_xbool2=`echo "[$]$2"|sed -e 's/^.//'` 44550bd37d32Smrg$2=${cf_xbool1}${cf_xbool2} 44560bd37d32SmrgAC_DEFINE_UNQUOTED($1,[$]$2,$3) 44570bd37d32SmrgAC_SUBST($2) 44580bd37d32Smrg]) 44590bd37d32Smrgdnl --------------------------------------------------------------------------- 446001037d57Smrgdnl CF_XINERAMA version: 2 updated: 2015/02/15 15:18:41 446101037d57Smrgdnl ----------- 446201037d57SmrgAC_DEFUN([CF_XINERAMA],[ 446301037d57SmrgCF_TRY_PKG_CONFIG(xinerama,[ 446401037d57Smrg AC_DEFINE(HAVE_X11_EXTENSIONS_XINERAMA_H)],[ 446501037d57Smrg AC_CHECK_LIB(Xinerama,XineramaQueryScreens, 446601037d57Smrg [CF_ADD_LIB(Xinerama) 446701037d57Smrg AC_CHECK_HEADERS( \ 446801037d57Smrg X11/extensions/Xinerama.h \ 446901037d57Smrg ) 447001037d57Smrg ]) 447101037d57Smrg ]) 447201037d57Smrg])dnl 447301037d57Smrgdnl --------------------------------------------------------------------------- 4474f2e35a3aSmrgdnl CF_XKB_BELL_EXT version: 6 updated: 2020/03/10 18:53:47 4475d522f475Smrgdnl --------------- 4476d522f475Smrgdnl Check for XKB bell extension 4477d522f475SmrgAC_DEFUN([CF_XKB_BELL_EXT],[ 4478f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 4479f2e35a3aSmrg 4480f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_XKB_BELL_EXT]) 4481f2e35a3aSmrg 4482d522f475SmrgAC_CACHE_CHECK(for XKB Bell extension, cf_cv_xkb_bell_ext,[ 4483d522f475SmrgAC_TRY_LINK([ 4484956cc18dSsnj#include <X11/Intrinsic.h> 4485d522f475Smrg#include <X11/XKBlib.h> /* has the prototype */ 4486d522f475Smrg#include <X11/extensions/XKBbells.h> /* has the XkbBI_xxx definitions */ 4487d522f475Smrg],[ 4488956cc18dSsnj int x = (XkbBI_Info |XkbBI_MinorError |XkbBI_MajorError |XkbBI_TerminalBell |XkbBI_MarginBell); 4489f2e35a3aSmrg Atom y = 0; 4490f2e35a3aSmrg (void)x; 4491956cc18dSsnj XkbBell((Display *)0, (Widget)0, 0, y); 4492d522f475Smrg],[cf_cv_xkb_bell_ext=yes],[cf_cv_xkb_bell_ext=no]) 4493d522f475Smrg]) 44940bd37d32Smrgtest "$cf_cv_xkb_bell_ext" = yes && AC_DEFINE(HAVE_XKB_BELL_EXT,1,[Define 1 if we have XKB Bell extension]) 4495f2e35a3aSmrg 4496f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_XKB_BELL_EXT]) 44970bd37d32Smrg]) 44980bd37d32Smrgdnl --------------------------------------------------------------------------- 4499f2e35a3aSmrgdnl CF_XKB_KEYCODE_TO_KEYSYM version: 3 updated: 2020/03/10 18:53:47 45000bd37d32Smrgdnl ------------------------ 45010bd37d32Smrgdnl Some older vendor-unix systems made a practice of delivering fragments of 45020bd37d32Smrgdnl Xkb, requiring test-compiles. 45030bd37d32SmrgAC_DEFUN([CF_XKB_KEYCODE_TO_KEYSYM],[ 45040bd37d32SmrgAC_CACHE_CHECK(if we can use XkbKeycodeToKeysym, cf_cv_xkb_keycode_to_keysym,[ 45050bd37d32SmrgAC_TRY_COMPILE([ 45060bd37d32Smrg#include <X11/Xlib.h> 45070bd37d32Smrg#include <X11/XKBlib.h> 45080bd37d32Smrg],[ 45090bd37d32Smrg KeySym keysym = XkbKeycodeToKeysym((Display *)0, 0, 0, 0); 4510f2e35a3aSmrg (void)keysym; 45110bd37d32Smrg],[ 45120bd37d32Smrgcf_cv_xkb_keycode_to_keysym=yes 45130bd37d32Smrg],[ 45140bd37d32Smrgcf_cv_xkb_keycode_to_keysym=no 45150bd37d32Smrg]) 45160bd37d32Smrg]) 45170bd37d32Smrg 45180bd37d32Smrgif test $cf_cv_xkb_keycode_to_keysym = yes 45190bd37d32Smrgthen 45200bd37d32Smrg AC_CHECK_FUNCS(XkbKeycodeToKeysym) 45210bd37d32Smrgfi 45220bd37d32Smrg]) 45230bd37d32Smrgdnl --------------------------------------------------------------------------- 45240bd37d32Smrgdnl CF_XKB_QUERY_EXTENSION version: 2 updated: 2012/09/28 20:23:46 45250bd37d32Smrgdnl ---------------------- 45260bd37d32Smrgdnl see ifdef in scrollbar.c - iron out here 45270bd37d32SmrgAC_DEFUN([CF_XKB_QUERY_EXTENSION],[ 45280bd37d32SmrgAC_CACHE_CHECK(if we can use XkbQueryExtension, cf_cv_xkb_query_extension,[ 45290bd37d32SmrgAC_TRY_COMPILE([ 45300bd37d32Smrg#include <X11/Xlib.h> 45310bd37d32Smrg#include <X11/extensions/XKB.h> 45320bd37d32Smrg#include <X11/XKBlib.h> 45330bd37d32Smrg],[ 45340bd37d32Smrg int xkbmajor = XkbMajorVersion; 45350bd37d32Smrg int xkbminor = XkbMinorVersion; 45360bd37d32Smrg int xkbopcode, xkbevent, xkberror; 45370bd37d32Smrg 45380bd37d32Smrg if (XkbLibraryVersion(&xkbmajor, &xkbminor) 45390bd37d32Smrg && XkbQueryExtension((Display *)0, 45400bd37d32Smrg &xkbopcode, 45410bd37d32Smrg &xkbevent, 45420bd37d32Smrg &xkberror, 45430bd37d32Smrg &xkbmajor, 45440bd37d32Smrg &xkbminor)) 45450bd37d32Smrg return 0; 45460bd37d32Smrg],[ 45470bd37d32Smrgcf_cv_xkb_query_extension=yes 45480bd37d32Smrg],[ 45490bd37d32Smrgcf_cv_xkb_query_extension=no 45500bd37d32Smrg]) 45510bd37d32Smrg]) 45520bd37d32Smrg 45530bd37d32Smrgif test $cf_cv_xkb_query_extension = yes 45540bd37d32Smrgthen 45550bd37d32Smrg AC_CHECK_FUNCS(XkbQueryExtension) 45560bd37d32Smrgfi 4557d522f475Smrg]) 4558d522f475Smrgdnl --------------------------------------------------------------------------- 4559f2e35a3aSmrgdnl CF_XOPEN_SOURCE version: 57 updated: 2021/01/01 16:53:59 4560d522f475Smrgdnl --------------- 4561d522f475Smrgdnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions, 4562d522f475Smrgdnl or adapt to the vendor's definitions to get equivalent functionality, 4563d522f475Smrgdnl without losing the common non-POSIX features. 4564d522f475Smrgdnl 4565d522f475Smrgdnl Parameters: 4566d522f475Smrgdnl $1 is the nominal value for _XOPEN_SOURCE 4567d522f475Smrgdnl $2 is the nominal value for _POSIX_C_SOURCE 4568d522f475SmrgAC_DEFUN([CF_XOPEN_SOURCE],[ 45690bd37d32SmrgAC_REQUIRE([AC_CANONICAL_HOST]) 4570f2e35a3aSmrgAC_REQUIRE([CF_POSIX_VISIBLE]) 4571f2e35a3aSmrg 4572f2e35a3aSmrgif test "$cf_cv_posix_visible" = no; then 4573d522f475Smrg 457420d2c4d2Smrgcf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) 457520d2c4d2Smrgcf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) 457620d2c4d2Smrgcf_xopen_source= 4577d522f475Smrg 4578f2e35a3aSmrgcase "$host_os" in 457901037d57Smrg(aix[[4-7]]*) 458020d2c4d2Smrg cf_xopen_source="-D_ALL_SOURCE" 458120d2c4d2Smrg ;; 4582913cc679Smrg(msys) 4583e39b573cSmrg cf_XOPEN_SOURCE=600 4584e39b573cSmrg ;; 458501037d57Smrg(darwin[[0-8]].*) 458620d2c4d2Smrg cf_xopen_source="-D_APPLE_C_SOURCE" 458720d2c4d2Smrg ;; 458801037d57Smrg(darwin*) 458920d2c4d2Smrg cf_xopen_source="-D_DARWIN_C_SOURCE" 45900bd37d32Smrg cf_XOPEN_SOURCE= 4591d522f475Smrg ;; 4592f2e35a3aSmrg(freebsd*|dragonfly*|midnightbsd*) 4593d522f475Smrg # 5.x headers associate 4594d522f475Smrg # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L 4595d522f475Smrg # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L 4596d522f475Smrg cf_POSIX_C_SOURCE=200112L 4597d522f475Smrg cf_XOPEN_SOURCE=600 459820d2c4d2Smrg cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" 459920d2c4d2Smrg ;; 460001037d57Smrg(hpux11*) 460120d2c4d2Smrg cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" 4602d522f475Smrg ;; 460301037d57Smrg(hpux*) 460420d2c4d2Smrg cf_xopen_source="-D_HPUX_SOURCE" 4605d522f475Smrg ;; 460601037d57Smrg(irix[[56]].*) 460720d2c4d2Smrg cf_xopen_source="-D_SGI_SOURCE" 46080bd37d32Smrg cf_XOPEN_SOURCE= 4609d522f475Smrg ;; 4610913cc679Smrg(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) 4611f2e35a3aSmrg CF_GNU_SOURCE($cf_XOPEN_SOURCE) 4612d522f475Smrg ;; 461301037d57Smrg(minix*) 461401037d57Smrg cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... 461501037d57Smrg ;; 461601037d57Smrg(mirbsd*) 46170bd37d32Smrg # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types 46180bd37d32Smrg cf_XOPEN_SOURCE= 46190bd37d32Smrg CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 4620d522f475Smrg ;; 462101037d57Smrg(netbsd*) 46220bd37d32Smrg cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw 46230bd37d32Smrg ;; 462401037d57Smrg(openbsd[[4-9]]*) 46250bd37d32Smrg # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw 46260bd37d32Smrg cf_xopen_source="-D_BSD_SOURCE" 46270bd37d32Smrg cf_XOPEN_SOURCE=600 4628d522f475Smrg ;; 462901037d57Smrg(openbsd*) 4630d522f475Smrg # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw 4631d522f475Smrg ;; 463201037d57Smrg(osf[[45]]*) 463320d2c4d2Smrg cf_xopen_source="-D_OSF_SOURCE" 4634d522f475Smrg ;; 463501037d57Smrg(nto-qnx*) 463620d2c4d2Smrg cf_xopen_source="-D_QNX_SOURCE" 4637d522f475Smrg ;; 463801037d57Smrg(sco*) 4639d522f475Smrg # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer 4640d522f475Smrg ;; 464101037d57Smrg(solaris2.*) 464220d2c4d2Smrg cf_xopen_source="-D__EXTENSIONS__" 4643894e0ac8Smrg cf_cv_xopen_source=broken 4644d522f475Smrg ;; 464501037d57Smrg(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) 464601037d57Smrg cf_XOPEN_SOURCE= 464701037d57Smrg cf_POSIX_C_SOURCE= 464801037d57Smrg ;; 464901037d57Smrg(*) 46500bd37d32Smrg CF_TRY_XOPEN_SOURCE 4651d522f475Smrg CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 4652d522f475Smrg ;; 4653d522f475Smrgesac 465420d2c4d2Smrg 465520d2c4d2Smrgif test -n "$cf_xopen_source" ; then 465601037d57Smrg CF_ADD_CFLAGS($cf_xopen_source,true) 465720d2c4d2Smrgfi 46580bd37d32Smrg 46590bd37d32Smrgdnl In anything but the default case, we may have system-specific setting 46600bd37d32Smrgdnl which is still not guaranteed to provide all of the entrypoints that 46610bd37d32Smrgdnl _XOPEN_SOURCE would yield. 46620bd37d32Smrgif test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then 46630bd37d32Smrg AC_MSG_CHECKING(if _XOPEN_SOURCE really is set) 46640bd37d32Smrg AC_TRY_COMPILE([#include <stdlib.h>],[ 46650bd37d32Smrg#ifndef _XOPEN_SOURCE 46660bd37d32Smrgmake an error 46670bd37d32Smrg#endif], 46680bd37d32Smrg [cf_XOPEN_SOURCE_set=yes], 46690bd37d32Smrg [cf_XOPEN_SOURCE_set=no]) 46700bd37d32Smrg AC_MSG_RESULT($cf_XOPEN_SOURCE_set) 4671f2e35a3aSmrg if test "$cf_XOPEN_SOURCE_set" = yes 46720bd37d32Smrg then 46730bd37d32Smrg AC_TRY_COMPILE([#include <stdlib.h>],[ 46740bd37d32Smrg#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE 46750bd37d32Smrgmake an error 46760bd37d32Smrg#endif], 46770bd37d32Smrg [cf_XOPEN_SOURCE_set_ok=yes], 46780bd37d32Smrg [cf_XOPEN_SOURCE_set_ok=no]) 4679f2e35a3aSmrg if test "$cf_XOPEN_SOURCE_set_ok" = no 46800bd37d32Smrg then 46810bd37d32Smrg AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) 46820bd37d32Smrg fi 46830bd37d32Smrg else 46840bd37d32Smrg CF_TRY_XOPEN_SOURCE 46850bd37d32Smrg fi 46860bd37d32Smrgfi 4687f2e35a3aSmrgfi # cf_cv_posix_visible 4688d522f475Smrg]) 4689d522f475Smrgdnl --------------------------------------------------------------------------- 4690f2e35a3aSmrgdnl CF_X_ATHENA version: 24 updated: 2020/03/10 18:53:47 4691d522f475Smrgdnl ----------- 4692d522f475Smrgdnl Check for Xaw (Athena) libraries 4693d522f475Smrgdnl 4694d522f475Smrgdnl Sets $cf_x_athena according to the flavor of Xaw which is used. 4695d522f475SmrgAC_DEFUN([CF_X_ATHENA], 469620d2c4d2Smrg[ 46976879286fSmrgcf_x_athena=${cf_x_athena:-Xaw} 4698d522f475Smrg 4699d522f475SmrgAC_MSG_CHECKING(if you want to link with Xaw 3d library) 4700d522f475Smrgwithval= 4701d522f475SmrgAC_ARG_WITH(Xaw3d, 4702d522f475Smrg [ --with-Xaw3d link with Xaw 3d library]) 4703d522f475Smrgif test "$withval" = yes ; then 4704d522f475Smrg cf_x_athena=Xaw3d 4705d522f475Smrg AC_MSG_RESULT(yes) 4706d522f475Smrgelse 4707d522f475Smrg AC_MSG_RESULT(no) 4708d522f475Smrgfi 4709d522f475Smrg 471001037d57SmrgAC_MSG_CHECKING(if you want to link with Xaw 3d xft library) 471101037d57Smrgwithval= 471201037d57SmrgAC_ARG_WITH(Xaw3dxft, 471301037d57Smrg [ --with-Xaw3dxft link with Xaw 3d xft library]) 471401037d57Smrgif test "$withval" = yes ; then 471501037d57Smrg cf_x_athena=Xaw3dxft 471601037d57Smrg AC_MSG_RESULT(yes) 471701037d57Smrgelse 471801037d57Smrg AC_MSG_RESULT(no) 471901037d57Smrgfi 472001037d57Smrg 4721d522f475SmrgAC_MSG_CHECKING(if you want to link with neXT Athena library) 4722d522f475Smrgwithval= 4723d522f475SmrgAC_ARG_WITH(neXtaw, 4724d522f475Smrg [ --with-neXtaw link with neXT Athena library]) 4725d522f475Smrgif test "$withval" = yes ; then 4726d522f475Smrg cf_x_athena=neXtaw 4727d522f475Smrg AC_MSG_RESULT(yes) 4728d522f475Smrgelse 4729d522f475Smrg AC_MSG_RESULT(no) 4730d522f475Smrgfi 4731d522f475Smrg 4732d522f475SmrgAC_MSG_CHECKING(if you want to link with Athena-Plus library) 4733d522f475Smrgwithval= 4734d522f475SmrgAC_ARG_WITH(XawPlus, 4735d522f475Smrg [ --with-XawPlus link with Athena-Plus library]) 4736d522f475Smrgif test "$withval" = yes ; then 4737d522f475Smrg cf_x_athena=XawPlus 4738d522f475Smrg AC_MSG_RESULT(yes) 4739d522f475Smrgelse 4740d522f475Smrg AC_MSG_RESULT(no) 4741d522f475Smrgfi 4742d522f475Smrg 4743d522f475Smrgcf_x_athena_lib="" 4744d522f475Smrg 474520d2c4d2Smrgif test "$PKG_CONFIG" != none ; then 474620d2c4d2Smrg cf_athena_list= 474720d2c4d2Smrg test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" 474820d2c4d2Smrg for cf_athena_pkg in \ 474920d2c4d2Smrg $cf_athena_list \ 475020d2c4d2Smrg ${cf_x_athena} \ 475120d2c4d2Smrg ${cf_x_athena}-devel \ 475220d2c4d2Smrg lib${cf_x_athena} \ 475320d2c4d2Smrg lib${cf_x_athena}-devel 475420d2c4d2Smrg do 475520d2c4d2Smrg CF_TRY_PKG_CONFIG($cf_athena_pkg,[ 475620d2c4d2Smrg cf_x_athena_lib="$cf_pkgconfig_libs" 475720d2c4d2Smrg CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) 475820d2c4d2Smrg AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) 47596879286fSmrg 4760e0a2b6dfSmrg CF_TRIM_X_LIBS 4761e0a2b6dfSmrg 47626879286fSmrgAC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[ 47636879286fSmrgAC_TRY_LINK([ 47646879286fSmrg#include <X11/Xmu/CharSet.h> 47656879286fSmrg],[ 4766f2e35a3aSmrgint check = XmuCompareISOLatin1("big", "small"); 4767f2e35a3aSmrg(void)check; 47686879286fSmrg],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])]) 47696879286fSmrg 47706879286fSmrg if test "$cf_cv_xaw_compat" = no 47716879286fSmrg then 47726879286fSmrg # workaround for broken ".pc" files... 477301037d57Smrg case "$cf_x_athena_lib" in 477401037d57Smrg (*-lXmu*) 47756879286fSmrg ;; 477601037d57Smrg (*) 47776879286fSmrg CF_VERBOSE(work around broken package) 4778e0a2b6dfSmrg cf_save_xmu="$LIBS" 4779e0a2b6dfSmrg cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'` 4780e0a2b6dfSmrg CF_TRY_PKG_CONFIG(xmu,[ 4781e0a2b6dfSmrg LIBS="$cf_save_xmu" 4782e0a2b6dfSmrg CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs) 4783e0a2b6dfSmrg ],[ 4784e0a2b6dfSmrg CF_ADD_LIB_AFTER($cf_first_lib,-lXmu) 4785e0a2b6dfSmrg ]) 4786e0a2b6dfSmrg CF_TRIM_X_LIBS 47876879286fSmrg ;; 47886879286fSmrg esac 47896879286fSmrg fi 47906879286fSmrg 479120d2c4d2Smrg break]) 479220d2c4d2Smrg done 479320d2c4d2Smrgfi 479420d2c4d2Smrg 479520d2c4d2Smrgif test -z "$cf_x_athena_lib" ; then 479620d2c4d2Smrg CF_X_EXT 479720d2c4d2Smrg CF_X_TOOLKIT 479820d2c4d2Smrg CF_X_ATHENA_CPPFLAGS($cf_x_athena) 479920d2c4d2Smrg CF_X_ATHENA_LIBS($cf_x_athena) 480020d2c4d2Smrgfi 4801d522f475Smrg])dnl 4802d522f475Smrgdnl --------------------------------------------------------------------------- 4803f2e35a3aSmrgdnl CF_X_ATHENA_CPPFLAGS version: 9 updated: 2020/12/31 10:54:15 4804d522f475Smrgdnl -------------------- 4805d522f475Smrgdnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of 4806d522f475Smrgdnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. 4807d522f475SmrgAC_DEFUN([CF_X_ATHENA_CPPFLAGS], 4808d522f475Smrg[ 4809f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 481020d2c4d2Smrgcf_x_athena_root=ifelse([$1],,Xaw,[$1]) 481120d2c4d2Smrgcf_x_athena_inc="" 4812d522f475Smrg 4813d522f475Smrgfor cf_path in default \ 4814d522f475Smrg /usr/contrib/X11R6 \ 4815d522f475Smrg /usr/contrib/X11R5 \ 4816d522f475Smrg /usr/lib/X11R5 \ 4817d522f475Smrg /usr/local 4818d522f475Smrgdo 481920d2c4d2Smrg if test -z "$cf_x_athena_inc" ; then 4820f2e35a3aSmrg CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS]) 4821d522f475Smrg cf_test=X11/$cf_x_athena_root/SimpleMenu.h 4822f2e35a3aSmrg if test "$cf_path" != default ; then 4823f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include) 4824d522f475Smrg AC_MSG_CHECKING(for $cf_test in $cf_path) 4825d522f475Smrg else 4826d522f475Smrg AC_MSG_CHECKING(for $cf_test) 4827d522f475Smrg fi 4828d522f475Smrg AC_TRY_COMPILE([ 4829d522f475Smrg#include <X11/Intrinsic.h> 4830d522f475Smrg#include <$cf_test>],[], 4831d522f475Smrg [cf_result=yes], 4832d522f475Smrg [cf_result=no]) 4833d522f475Smrg AC_MSG_RESULT($cf_result) 4834f2e35a3aSmrg CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS]) 4835d522f475Smrg if test "$cf_result" = yes ; then 4836f2e35a3aSmrg test "$cf_path" = default && cf_x_athena_inc=default 4837f2e35a3aSmrg test "$cf_path" != default && cf_x_athena_inc="$cf_path/include" 4838d522f475Smrg break 4839d522f475Smrg fi 4840d522f475Smrg fi 4841d522f475Smrgdone 4842d522f475Smrg 484320d2c4d2Smrgif test -z "$cf_x_athena_inc" ; then 4844f2e35a3aSmrg AC_MSG_WARN([Unable to find Athena header files]) 484520d2c4d2Smrgelif test "$cf_x_athena_inc" != default ; then 4846f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc) 4847d522f475Smrgfi 4848d522f475Smrg]) 4849d522f475Smrgdnl --------------------------------------------------------------------------- 4850f2e35a3aSmrgdnl CF_X_ATHENA_LIBS version: 13 updated: 2020/01/11 18:16:10 4851d522f475Smrgdnl ---------------- 4852d522f475Smrgdnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of 4853d522f475Smrgdnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. 4854d522f475SmrgAC_DEFUN([CF_X_ATHENA_LIBS], 4855d522f475Smrg[AC_REQUIRE([CF_X_TOOLKIT]) 485620d2c4d2Smrgcf_x_athena_root=ifelse([$1],,Xaw,[$1]) 4857d522f475Smrgcf_x_athena_lib="" 4858d522f475Smrg 4859d522f475Smrgfor cf_path in default \ 4860d522f475Smrg /usr/contrib/X11R6 \ 4861d522f475Smrg /usr/contrib/X11R5 \ 4862d522f475Smrg /usr/lib/X11R5 \ 4863d522f475Smrg /usr/local 4864d522f475Smrgdo 4865d522f475Smrg for cf_lib in \ 48660bd37d32Smrg ${cf_x_athena_root} \ 48670bd37d32Smrg ${cf_x_athena_root}7 \ 48680bd37d32Smrg ${cf_x_athena_root}6 48690bd37d32Smrg do 48700bd37d32Smrg for cf_libs in \ 48710bd37d32Smrg "-l$cf_lib -lXmu" \ 48720bd37d32Smrg "-l$cf_lib -lXpm -lXmu" \ 48730bd37d32Smrg "-l${cf_lib}_s -lXmu_s" 4874d522f475Smrg do 4875f2e35a3aSmrg test -n "$cf_x_athena_lib" && break 4876f2e35a3aSmrg 4877f2e35a3aSmrg CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_LIBS]) 4878f2e35a3aSmrg cf_test=XawSimpleMenuAddGlobalActions 4879f2e35a3aSmrg test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs" 4880f2e35a3aSmrg CF_ADD_LIBS($cf_libs) 4881f2e35a3aSmrg AC_MSG_CHECKING(for $cf_test in $cf_libs) 4882f2e35a3aSmrg AC_TRY_LINK([ 4883a1f3da82Smrg#include <X11/Intrinsic.h> 4884a1f3da82Smrg#include <X11/$cf_x_athena_root/SimpleMenu.h> 4885a1f3da82Smrg],[ 4886a1f3da82Smrg$cf_test((XtAppContext) 0)], 4887f2e35a3aSmrg [cf_result=yes], 4888f2e35a3aSmrg [cf_result=no]) 4889f2e35a3aSmrg AC_MSG_RESULT($cf_result) 4890f2e35a3aSmrg CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_LIBS]) 4891f2e35a3aSmrg 4892f2e35a3aSmrg if test "$cf_result" = yes ; then 4893f2e35a3aSmrg cf_x_athena_lib="$cf_libs" 4894f2e35a3aSmrg break 4895d522f475Smrg fi 48960bd37d32Smrg done # cf_libs 48970bd37d32Smrg test -n "$cf_x_athena_lib" && break 48980bd37d32Smrg done # cf_lib 4899d522f475Smrgdone 4900d522f475Smrg 4901d522f475Smrgif test -z "$cf_x_athena_lib" ; then 4902d522f475Smrg AC_MSG_ERROR( 4903d522f475Smrg[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program]) 4904d522f475Smrgfi 4905d522f475Smrg 4906f2e35a3aSmrgCF_ADD_LIBS($cf_x_athena_lib) 4907d522f475SmrgCF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) 4908d522f475SmrgAC_DEFINE_UNQUOTED($cf_x_athena_LIBS) 4909d522f475Smrg]) 4910d522f475Smrgdnl --------------------------------------------------------------------------- 491120d2c4d2Smrgdnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05 491220d2c4d2Smrgdnl -------- 491320d2c4d2SmrgAC_DEFUN([CF_X_EXT],[ 491420d2c4d2SmrgCF_TRY_PKG_CONFIG(Xext,,[ 491520d2c4d2Smrg AC_CHECK_LIB(Xext,XextCreateExtension, 491620d2c4d2Smrg [CF_ADD_LIB(Xext)])]) 491720d2c4d2Smrg])dnl 491820d2c4d2Smrgdnl --------------------------------------------------------------------------- 4919f2e35a3aSmrgdnl CF_X_EXT_DOUBLE_BUFFER version: 1 updated: 2019/07/18 21:09:40 4920f2e35a3aSmrgdnl ---------------------- 4921f2e35a3aSmrgAC_DEFUN([CF_X_EXT_DOUBLE_BUFFER],[ 4922f2e35a3aSmrgAC_REQUIRE([CF_X_EXT]) 4923f2e35a3aSmrgAC_CHECK_HEADER(X11/extensions/Xdbe.h, 4924f2e35a3aSmrg AC_DEFINE(HAVE_X11_EXTENSIONS_XDBE_H,1,[Define to 1 if we have X11/extensions/Xdbe.h]) 4925f2e35a3aSmrg AC_CHECK_FUNC(XdbeSwapBuffers, 4926f2e35a3aSmrg [AC_DEFINE(HAVE_XDBESWAPBUFFERS,1,[Define to 1 if we have XdbeSwapBuffers]) 4927f2e35a3aSmrg cf_x_ext_double_buffer=yes])) 4928f2e35a3aSmrg])dnl 4929f2e35a3aSmrgdnl --------------------------------------------------------------------------- 4930f2e35a3aSmrgdnl CF_X_FONTCONFIG version: 7 updated: 2020/03/10 18:53:47 49316879286fSmrgdnl --------------- 49326879286fSmrgdnl Check for fontconfig library, a dependency of the X FreeType library. 49336879286fSmrgAC_DEFUN([CF_X_FONTCONFIG], 49346879286fSmrg[ 49356879286fSmrgAC_REQUIRE([CF_X_FREETYPE]) 49366879286fSmrg 4937e39b573cSmrgif test "$cf_cv_found_freetype" = yes ; then 49386879286fSmrgAC_CACHE_CHECK(for usable Xft/fontconfig package,cf_cv_xft_compat,[ 49396879286fSmrgAC_TRY_LINK([ 49406879286fSmrg#include <X11/Xft/Xft.h> 49416879286fSmrg],[ 4942f2e35a3aSmrg XftPattern *pat = 0; 49436879286fSmrg XftPatternBuild(pat, 49446879286fSmrg XFT_FAMILY, XftTypeString, "mono", 49456879286fSmrg (void *) 0); 49466879286fSmrg],[cf_cv_xft_compat=yes],[cf_cv_xft_compat=no]) 49476879286fSmrg]) 49486879286fSmrg 49496879286fSmrgif test "$cf_cv_xft_compat" = no 49506879286fSmrgthen 49516879286fSmrg # workaround for broken ".pc" files used for Xft. 495201037d57Smrg case "$cf_cv_x_freetype_libs" in 495301037d57Smrg (*-lfontconfig*) 49546879286fSmrg ;; 495501037d57Smrg (*) 49566879286fSmrg CF_VERBOSE(work around broken package) 4957e0a2b6dfSmrg cf_save_fontconfig="$LIBS" 4958e0a2b6dfSmrg CF_TRY_PKG_CONFIG(fontconfig,[ 4959e0a2b6dfSmrg CF_ADD_CFLAGS($cf_pkgconfig_incs) 4960e0a2b6dfSmrg LIBS="$cf_save_fontconfig" 4961e0a2b6dfSmrg CF_ADD_LIB_AFTER(-lXft,$cf_pkgconfig_libs) 4962e0a2b6dfSmrg ],[ 4963e0a2b6dfSmrg CF_ADD_LIB_AFTER(-lXft,-lfontconfig) 4964e0a2b6dfSmrg ]) 49656879286fSmrg ;; 49666879286fSmrg esac 49676879286fSmrgfi 4968e39b573cSmrgfi 49696879286fSmrg])dnl 49706879286fSmrgdnl --------------------------------------------------------------------------- 4971f2e35a3aSmrgdnl CF_X_FREETYPE version: 28 updated: 2020/03/10 18:53:47 4972d522f475Smrgdnl ------------- 4973d522f475Smrgdnl Check for X FreeType headers and libraries (XFree86 4.x, etc). 4974d522f475Smrgdnl 4975d522f475Smrgdnl First check for the appropriate config program, since the developers for 4976d522f475Smrgdnl these libraries change their configuration (and config program) more or 4977d522f475Smrgdnl less randomly. If we cannot find the config program, do not bother trying 4978d522f475Smrgdnl to guess the latest variation of include/lib directories. 4979d522f475Smrgdnl 4980d522f475Smrgdnl If either or both of these configure-script options are not given, rely on 4981d522f475Smrgdnl the output of the config program to provide the cflags/libs options: 4982d522f475Smrgdnl --with-freetype-cflags 4983d522f475Smrgdnl --with-freetype-libs 4984d522f475SmrgAC_DEFUN([CF_X_FREETYPE], 4985d522f475Smrg[ 4986956cc18dSsnjAC_REQUIRE([CF_PKG_CONFIG]) 4987956cc18dSsnj 49880bd37d32Smrgcf_cv_x_freetype_incs=no 49890bd37d32Smrgcf_cv_x_freetype_libs=no 4990d522f475Smrgcf_extra_freetype_libs= 4991956cc18dSsnjFREETYPE_CONFIG=none 4992d522f475SmrgFREETYPE_PARAMS= 4993d522f475Smrg 49940bd37d32SmrgAC_MSG_CHECKING(for FreeType configuration script) 49950bd37d32SmrgAC_ARG_WITH(freetype-config, 49960bd37d32Smrg [ --with-freetype-config configure script to use for FreeType], 49970bd37d32Smrg [cf_cv_x_freetype_cfgs="$withval"], 49980bd37d32Smrg [cf_cv_x_freetype_cfgs=auto]) 49990bd37d32Smrgtest -z $cf_cv_x_freetype_cfgs && cf_cv_x_freetype_cfgs=auto 50000bd37d32Smrgtest $cf_cv_x_freetype_cfgs = no && cf_cv_x_freetype_cfgs=none 50010bd37d32SmrgAC_MSG_RESULT($cf_cv_x_freetype_cfgs) 50020bd37d32Smrg 50030bd37d32Smrgcase $cf_cv_x_freetype_cfgs in 500401037d57Smrg(none) 50050bd37d32Smrg AC_MSG_CHECKING(if you specified -D/-I options for FreeType) 50060bd37d32Smrg AC_ARG_WITH(freetype-cflags, 50070bd37d32Smrg [ --with-freetype-cflags -D/-I options for compiling with FreeType], 50080bd37d32Smrg [cf_cv_x_freetype_incs="$with_freetype_cflags"], 50090bd37d32Smrg [cf_cv_x_freetype_incs=no]) 50100bd37d32Smrg AC_MSG_RESULT($cf_cv_x_freetype_incs) 50110bd37d32Smrg 50120bd37d32Smrg AC_MSG_CHECKING(if you specified -L/-l options for FreeType) 50130bd37d32Smrg AC_ARG_WITH(freetype-libs, 50140bd37d32Smrg [ --with-freetype-libs -L/-l options to link FreeType], 50150bd37d32Smrg [cf_cv_x_freetype_libs="$with_freetype_libs"], 50160bd37d32Smrg [cf_cv_x_freetype_libs=no]) 50170bd37d32Smrg AC_MSG_RESULT($cf_cv_x_freetype_libs) 50180bd37d32Smrg ;; 501901037d57Smrg(auto) 50200bd37d32Smrg if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xft; then 50210bd37d32Smrg FREETYPE_CONFIG=$PKG_CONFIG 50220bd37d32Smrg FREETYPE_PARAMS=xft 50230bd37d32Smrg else 50240bd37d32Smrg AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, none) 50250bd37d32Smrg if test "$FREETYPE_CONFIG" != none; then 50260bd37d32Smrg FREETYPE_CONFIG=$FREETYPE_CONFIG 50270bd37d32Smrg cf_extra_freetype_libs="-lXft" 50280bd37d32Smrg else 50290bd37d32Smrg AC_PATH_PROG(FREETYPE_OLD_CONFIG, xft-config, none) 50300bd37d32Smrg if test "$FREETYPE_OLD_CONFIG" != none; then 50310bd37d32Smrg FREETYPE_CONFIG=$FREETYPE_OLD_CONFIG 50320bd37d32Smrg fi 50330bd37d32Smrg fi 50340bd37d32Smrg fi 50350bd37d32Smrg ;; 503601037d57Smrg(pkg*) 50370bd37d32Smrg if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xft; then 50380bd37d32Smrg FREETYPE_CONFIG=$cf_cv_x_freetype_cfgs 50390bd37d32Smrg FREETYPE_PARAMS=xft 50400bd37d32Smrg else 50410bd37d32Smrg AC_MSG_WARN(cannot find pkg-config for Xft) 50420bd37d32Smrg fi 50430bd37d32Smrg ;; 504401037d57Smrg(*) 50450bd37d32Smrg AC_PATH_PROG(FREETYPE_XFT_CONFIG, $cf_cv_x_freetype_cfgs, none) 5046d522f475Smrg if test "$FREETYPE_XFT_CONFIG" != none; then 5047d522f475Smrg FREETYPE_CONFIG=$FREETYPE_XFT_CONFIG 5048d522f475Smrg else 50490bd37d32Smrg AC_MSG_WARN(cannot find config script for Xft) 5050d522f475Smrg fi 50510bd37d32Smrg ;; 50520bd37d32Smrgesac 5053d522f475Smrg 5054956cc18dSsnjif test "$FREETYPE_CONFIG" != none ; then 50550bd37d32Smrg AC_MSG_CHECKING(for FreeType config) 50560bd37d32Smrg AC_MSG_RESULT($FREETYPE_CONFIG $FREETYPE_PARAMS) 5057d522f475Smrg 5058956cc18dSsnj if test "$cf_cv_x_freetype_incs" = no ; then 5059956cc18dSsnj AC_MSG_CHECKING(for $FREETYPE_CONFIG cflags) 5060956cc18dSsnj cf_cv_x_freetype_incs="`$FREETYPE_CONFIG $FREETYPE_PARAMS --cflags 2>/dev/null`" 5061956cc18dSsnj AC_MSG_RESULT($cf_cv_x_freetype_incs) 5062956cc18dSsnj fi 5063d522f475Smrg 5064956cc18dSsnj if test "$cf_cv_x_freetype_libs" = no ; then 5065956cc18dSsnj AC_MSG_CHECKING(for $FREETYPE_CONFIG libs) 5066956cc18dSsnj cf_cv_x_freetype_libs="$cf_extra_freetype_libs `$FREETYPE_CONFIG $FREETYPE_PARAMS --libs 2>/dev/null`" 5067956cc18dSsnj AC_MSG_RESULT($cf_cv_x_freetype_libs) 5068956cc18dSsnj fi 5069d522f475Smrgfi 5070d522f475Smrg 5071d522f475Smrgif test "$cf_cv_x_freetype_incs" = no ; then 5072d522f475Smrg cf_cv_x_freetype_incs= 5073d522f475Smrgfi 5074d522f475Smrg 5075d522f475Smrgif test "$cf_cv_x_freetype_libs" = no ; then 5076d522f475Smrg cf_cv_x_freetype_libs=-lXft 5077d522f475Smrgfi 5078d522f475Smrg 5079d522f475SmrgAC_MSG_CHECKING(if we can link with FreeType libraries) 5080d522f475Smrg 5081d522f475Smrgcf_save_LIBS="$LIBS" 5082d522f475Smrgcf_save_INCS="$CPPFLAGS" 5083d522f475Smrg 508420d2c4d2SmrgCF_ADD_LIBS($cf_cv_x_freetype_libs) 5085956cc18dSsnjCPPFLAGS="$CPPFLAGS $cf_cv_x_freetype_incs" 5086d522f475Smrg 5087d522f475SmrgAC_TRY_LINK([ 5088d522f475Smrg#include <X11/Xlib.h> 5089d522f475Smrg#include <X11/extensions/Xrender.h> 5090d522f475Smrg#include <X11/Xft/Xft.h>],[ 5091f2e35a3aSmrg XftPattern *pat = XftNameParse ("name"); (void)pat], 5092d522f475Smrg [cf_cv_found_freetype=yes], 5093d522f475Smrg [cf_cv_found_freetype=no]) 5094d522f475SmrgAC_MSG_RESULT($cf_cv_found_freetype) 5095d522f475Smrg 5096d522f475SmrgLIBS="$cf_save_LIBS" 5097d522f475SmrgCPPFLAGS="$cf_save_INCS" 5098d522f475Smrg 5099d522f475Smrgif test "$cf_cv_found_freetype" = yes ; then 510020d2c4d2Smrg CF_ADD_LIBS($cf_cv_x_freetype_libs) 5101d522f475Smrg CF_ADD_CFLAGS($cf_cv_x_freetype_incs) 51020bd37d32Smrg AC_DEFINE(XRENDERFONT,1,[Define to 1 if we can/should link with FreeType libraries]) 5103d522f475Smrg 5104d522f475SmrgAC_CHECK_FUNCS( \ 5105d522f475Smrg XftDrawCharSpec \ 5106d522f475Smrg XftDrawSetClip \ 5107d522f475Smrg XftDrawSetClipRectangles \ 5108d522f475Smrg) 5109d522f475Smrg 5110d522f475Smrgelse 5111d522f475Smrg AC_MSG_WARN(No libraries found for FreeType) 5112d522f475Smrg CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//` 5113d522f475Smrgfi 5114d522f475Smrg 5115d522f475Smrg# FIXME: revisit this if needed 5116d522f475SmrgAC_SUBST(HAVE_TYPE_FCCHAR32) 5117d522f475SmrgAC_SUBST(HAVE_TYPE_XFTCHARSPEC) 5118d522f475Smrg]) 5119d522f475Smrgdnl --------------------------------------------------------------------------- 5120f2e35a3aSmrgdnl CF_X_TOOLKIT version: 26 updated: 2021/01/02 09:31:20 5121d522f475Smrgdnl ------------ 5122d522f475Smrgdnl Check for X Toolkit libraries 5123d522f475SmrgAC_DEFUN([CF_X_TOOLKIT], 5124d522f475Smrg[ 5125d522f475SmrgAC_REQUIRE([AC_PATH_XTRA]) 5126d522f475SmrgAC_REQUIRE([CF_CHECK_CACHE]) 5127d522f475Smrg 5128f2e35a3aSmrg# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and 512901037d57Smrg# in some cases has installed dummy files in the former, other cases replaced 513001037d57Smrg# it with a link to the new location). This complicates the configure script. 513101037d57Smrg# Check for that pitfall, and recover using pkg-config 513201037d57Smrg# 513301037d57Smrg# If none of these are set, the configuration is almost certainly broken. 513401037d57Smrgif test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}" 513501037d57Smrgthen 513601037d57Smrg CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)]) 513701037d57Smrg CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)]) 513801037d57Smrg CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)]) 513901037d57Smrg CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)]) 5140f2e35a3aSmrgelse 5141f2e35a3aSmrg LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS" 514201037d57Smrgfi 514301037d57Smrg 5144d522f475Smrgcf_have_X_LIBS=no 5145d522f475Smrg 514620d2c4d2SmrgCF_TRY_PKG_CONFIG(xt,[ 514720d2c4d2Smrg 514801037d57Smrg case "x$LIBS" in 514901037d57Smrg (*-lX11*) 51506879286fSmrg ;; 515101037d57Smrg (*) 51526879286fSmrg# we have an "xt" package, but it may omit Xt's dependency on X11 51536879286fSmrgAC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[ 51546879286fSmrgAC_TRY_LINK([ 51556879286fSmrg#include <X11/Xlib.h> 51566879286fSmrg],[ 51576879286fSmrg int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); 51586879286fSmrg int rc2 = XClearWindow((Display*) 0, (Window) 0); 51596879286fSmrg int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); 51606879286fSmrg int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); 51616879286fSmrg],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])]) 51626879286fSmrg if test "$cf_cv_xt_x11_compat" = no 51636879286fSmrg then 51646879286fSmrg CF_VERBOSE(work around broken X11 dependency) 51656879286fSmrg # 2010/11/19 - good enough until a working Xt on Xcb is delivered. 51666879286fSmrg CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)]) 51676879286fSmrg fi 516820d2c4d2Smrg ;; 516920d2c4d2Smrg esac 517020d2c4d2Smrg 51716879286fSmrgAC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[ 51726879286fSmrgAC_TRY_LINK([ 51736879286fSmrg#include <X11/Shell.h> 5174f2e35a3aSmrg],[int num = IceConnectionNumber(0); (void) num 51756879286fSmrg],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])]) 51766879286fSmrg 51776879286fSmrg if test "$cf_cv_xt_ice_compat" = no 51786879286fSmrg then 51796879286fSmrg # workaround for broken ".pc" files used for X Toolkit. 518001037d57Smrg case "x$X_PRE_LIBS" in 518101037d57Smrg (*-lICE*) 518201037d57Smrg case "x$LIBS" in 518301037d57Smrg (*-lICE*) 51846879286fSmrg ;; 518501037d57Smrg (*) 51866879286fSmrg CF_VERBOSE(work around broken ICE dependency) 51876879286fSmrg CF_TRY_PKG_CONFIG(ice, 51886879286fSmrg [CF_TRY_PKG_CONFIG(sm)], 51896879286fSmrg [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)]) 51906879286fSmrg ;; 51916879286fSmrg esac 51926879286fSmrg ;; 51936879286fSmrg esac 51946879286fSmrg fi 51956879286fSmrg 519620d2c4d2Smrg cf_have_X_LIBS=yes 519720d2c4d2Smrg],[ 519820d2c4d2Smrg 519920d2c4d2Smrg LDFLAGS="$X_LIBS $LDFLAGS" 520020d2c4d2Smrg CF_CHECK_CFLAGS($X_CFLAGS) 5201d522f475Smrg 520220d2c4d2Smrg AC_CHECK_FUNC(XOpenDisplay,,[ 520320d2c4d2Smrg AC_CHECK_LIB(X11,XOpenDisplay, 5204f2e35a3aSmrg [CF_ADD_LIB(X11)])]) 5205d522f475Smrg 520620d2c4d2Smrg AC_CHECK_FUNC(XtAppInitialize,,[ 520720d2c4d2Smrg AC_CHECK_LIB(Xt, XtAppInitialize, 52080bd37d32Smrg [AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library]) 520920d2c4d2Smrg cf_have_X_LIBS=Xt 5210f2e35a3aSmrg LIBS="-lXt $LIBS"])]) 521120d2c4d2Smrg]) 5212d522f475Smrg 5213f2e35a3aSmrgif test "$cf_have_X_LIBS" = no ; then 5214d522f475Smrg AC_MSG_WARN( 5215d522f475Smrg[Unable to successfully link X Toolkit library (-lXt) with 5216d522f475Smrgtest program. You will have to check and add the proper libraries by hand 5217d522f475Smrgto makefile.]) 5218d522f475Smrgfi 5219d522f475Smrg])dnl 52200bd37d32Smrgdnl --------------------------------------------------------------------------- 5221f2e35a3aSmrgdnl CF__GRANTPT_BODY version: 5 updated: 2020/03/10 18:53:47 52220bd37d32Smrgdnl ---------------- 52230bd37d32Smrgdnl Body for workability check of grantpt. 52240bd37d32Smrgdefine([CF__GRANTPT_BODY],[ 52250bd37d32Smrg int code = 0; 52260bd37d32Smrg int rc; 52270bd37d32Smrg int pty; 52280bd37d32Smrg int tty; 52290bd37d32Smrg char *slave; 52300bd37d32Smrg struct termios tio; 52310bd37d32Smrg 5232f2e35a3aSmrg (void)tio; 52330bd37d32Smrg signal(SIGALRM, my_timeout); 52340bd37d32Smrg 52350bd37d32Smrg if (alarm(2) == 9) 52360bd37d32Smrg failed(9); 52370bd37d32Smrg else if ((pty = posix_openpt(O_RDWR)) < 0) 52380bd37d32Smrg failed(1); 52390bd37d32Smrg else if ((rc = grantpt(pty)) < 0) 52400bd37d32Smrg failed(2); 52410bd37d32Smrg else if ((rc = unlockpt(pty)) < 0) 52420bd37d32Smrg failed(3); 52430bd37d32Smrg else if ((slave = ptsname(pty)) == 0) 52440bd37d32Smrg failed(4); 52450bd37d32Smrg#if (CONFTEST == 3) || defined(CONFTEST_isatty) 52460bd37d32Smrg else if (!isatty(pty)) 52470bd37d32Smrg failed(4); 52480bd37d32Smrg#endif 52490bd37d32Smrg#if CONFTEST >= 4 52500bd37d32Smrg else if ((rc = tcgetattr(pty, &tio)) < 0) 52510bd37d32Smrg failed(20); 52520bd37d32Smrg else if ((rc = tcsetattr(pty, TCSAFLUSH, &tio)) < 0) 52530bd37d32Smrg failed(21); 52540bd37d32Smrg#endif 52550bd37d32Smrg /* BSD posix_openpt does not treat pty as a terminal until slave is opened. 52560bd37d32Smrg * Linux does treat it that way. 52570bd37d32Smrg */ 52580bd37d32Smrg else if ((tty = open(slave, O_RDWR)) < 0) 52590bd37d32Smrg failed(5); 52600bd37d32Smrg#ifdef CONFTEST 52610bd37d32Smrg#ifdef I_PUSH 52620bd37d32Smrg#if (CONFTEST == 0) || defined(CONFTEST_ptem) 52630bd37d32Smrg else if ((rc = ioctl(tty, I_PUSH, "ptem")) < 0) 52640bd37d32Smrg failed(10); 52650bd37d32Smrg#endif 52660bd37d32Smrg#if (CONFTEST == 1) || defined(CONFTEST_ldterm) 52670bd37d32Smrg else if ((rc = ioctl(tty, I_PUSH, "ldterm")) < 0) 52680bd37d32Smrg failed(11); 52690bd37d32Smrg#endif 52700bd37d32Smrg#if (CONFTEST == 2) || defined(CONFTEST_ttcompat) 52710bd37d32Smrg else if ((rc = ioctl(tty, I_PUSH, "ttcompat")) < 0) 52720bd37d32Smrg failed(12); 52730bd37d32Smrg#endif 52740bd37d32Smrg#endif /* I_PUSH */ 52750bd37d32Smrg#if CONFTEST >= 5 52760bd37d32Smrg else if ((rc = tcgetattr(tty, &tio)) < 0) 52770bd37d32Smrg failed(30); 52780bd37d32Smrg else if ((rc = tcsetattr(tty, TCSAFLUSH, &tio)) < 0) 52790bd37d32Smrg failed(31); 52800bd37d32Smrg#endif 52810bd37d32Smrg#endif /* CONFTEST */ 52820bd37d32Smrg 52830bd37d32Smrg ${cf_cv_main_return:-return}(code); 52840bd37d32Smrg]) 52850bd37d32Smrgdnl --------------------------------------------------------------------------- 5286f2e35a3aSmrgdnl CF__GRANTPT_HEAD version: 4 updated: 2020/03/10 18:53:47 52870bd37d32Smrgdnl ---------------- 52880bd37d32Smrgdnl Headers for workability check of grantpt. 52890bd37d32Smrgdefine([CF__GRANTPT_HEAD],[ 52900bd37d32Smrg#include <stdlib.h> 5291f2e35a3aSmrg#include <stdio.h> 52920bd37d32Smrg#include <termios.h> 52930bd37d32Smrg#include <unistd.h> 52940bd37d32Smrg#include <signal.h> 52950bd37d32Smrg#include <fcntl.h> 52960bd37d32Smrg#include <errno.h> 52970bd37d32Smrg 52980bd37d32Smrg#ifndef HAVE_POSIX_OPENPT 52990bd37d32Smrg#undef posix_openpt 53000bd37d32Smrg#define posix_openpt(mode) open("/dev/ptmx", mode) 53010bd37d32Smrg#endif 53020bd37d32Smrg 53030bd37d32Smrg#ifdef HAVE_STROPTS_H 53040bd37d32Smrg#include <stropts.h> 53050bd37d32Smrg#endif 53060bd37d32Smrg 53070bd37d32Smrgstatic void failed(int code) 53080bd37d32Smrg{ 53090bd37d32Smrg perror("conftest"); 53100bd37d32Smrg exit(code); 53110bd37d32Smrg} 53120bd37d32Smrg 53130bd37d32Smrgstatic void my_timeout(int sig) 53140bd37d32Smrg{ 5315f2e35a3aSmrg (void)sig; 53160bd37d32Smrg exit(99); 53170bd37d32Smrg} 53180bd37d32Smrg]) 5319