aclocal.m4 revision 4419d26b
14419d26bSmrgdnl $XTermId: aclocal.m4,v 1.496 2022/02/24 22:10:29 tom Exp $ 2d522f475Smrgdnl 3d522f475Smrgdnl --------------------------------------------------------------------------- 4d522f475Smrgdnl 54419d26bSmrgdnl Copyright 1997-2021,2022 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 --------------------------------------------------------------------------- 224a5ae21e4Smrgdnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40 225a5ae21e4Smrgdnl ---------------- 226a5ae21e4Smrgdnl Use CF_ADD_CFLAGS after first checking for potential redefinitions. 227a5ae21e4Smrgdnl $1 = flags to add 228a5ae21e4Smrgdnl $2 = if given makes this macro verbose. 229a5ae21e4Smrgdefine([CF_APPEND_CFLAGS], 230a5ae21e4Smrg[ 231a5ae21e4Smrgfor cf_add_cflags in $1 232a5ae21e4Smrgdo 233a5ae21e4Smrg case "x$cf_add_cflags" in 234a5ae21e4Smrg (x-[[DU]]*) 235a5ae21e4Smrg CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2]) 236a5ae21e4Smrg CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2]) 237a5ae21e4Smrg ;; 238a5ae21e4Smrg esac 239a5ae21e4Smrg CF_ADD_CFLAGS([$cf_add_cflags],[$2]) 240a5ae21e4Smrgdone 241a5ae21e4Smrg])dnl 242a5ae21e4Smrgdnl --------------------------------------------------------------------------- 243913cc679Smrgdnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55 244913cc679Smrgdnl -------------- 245913cc679Smrgdnl use this macro for appending text without introducing an extra blank at 246913cc679Smrgdnl the beginning 247913cc679Smrgdefine([CF_APPEND_TEXT], 248913cc679Smrg[ 249913cc679Smrg test -n "[$]$1" && $1="[$]$1 " 250913cc679Smrg $1="[$]{$1}$2" 251913cc679Smrg])dnl 252913cc679Smrgdnl --------------------------------------------------------------------------- 253d522f475Smrgdnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 254d522f475Smrgdnl -------------- 255d522f475Smrgdnl Allow user to disable a normally-on option. 256d522f475SmrgAC_DEFUN([CF_ARG_DISABLE], 257d522f475Smrg[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl 258d522f475Smrgdnl --------------------------------------------------------------------------- 259d522f475Smrgdnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31 260d522f475Smrgdnl ------------- 261d522f475Smrgdnl Allow user to enable a normally-off option. 262d522f475SmrgAC_DEFUN([CF_ARG_ENABLE], 263d522f475Smrg[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl 264d522f475Smrgdnl --------------------------------------------------------------------------- 2652e4f8982Smrgdnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14 266d522f475Smrgdnl ------------- 267d522f475Smrgdnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus 268d522f475Smrgdnl values. 269d522f475Smrgdnl 270d522f475Smrgdnl Parameters: 271d522f475Smrgdnl $1 = option name 272d522f475Smrgdnl $2 = help-string 273d522f475Smrgdnl $3 = action to perform if option is not default 274d522f475Smrgdnl $4 = action if perform if option is default 275d522f475Smrgdnl $5 = default option value (either 'yes' or 'no') 276d522f475SmrgAC_DEFUN([CF_ARG_OPTION], 27720d2c4d2Smrg[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes) 2782e4f8982Smrg if test "$enableval" != "$5" ; then 27920d2c4d2Smrgifelse([$3],,[ :]dnl 28020d2c4d2Smrg,[ $3]) ifelse([$4],,,[ 2812e4f8982Smrg else 2822e4f8982Smrg $4]) 2832e4f8982Smrg fi],[enableval=$5 ifelse([$4],,,[ 2842e4f8982Smrg $4 285d522f475Smrg])dnl 2862e4f8982Smrg])])dnl 287d522f475Smrgdnl --------------------------------------------------------------------------- 288ae137402Smrgdnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23 289ad37e533Smrgdnl --------------- 290ad37e533SmrgAC_DEFUN([CF_C11_NORETURN], 291ad37e533Smrg[ 292ad37e533SmrgAC_MSG_CHECKING(if you want to use C11 _Noreturn feature) 293ad37e533SmrgCF_ARG_ENABLE(stdnoreturn, 294ad37e533Smrg [ --enable-stdnoreturn enable C11 _Noreturn feature for diagnostics], 295ad37e533Smrg [enable_stdnoreturn=yes], 296ad37e533Smrg [enable_stdnoreturn=no]) 297ad37e533SmrgAC_MSG_RESULT($enable_stdnoreturn) 298ad37e533Smrg 299ad37e533Smrgif test $enable_stdnoreturn = yes; then 300ad37e533SmrgAC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn, 301ad37e533Smrg [AC_TRY_COMPILE([ 302ad37e533Smrg#include <stdio.h> 303ad37e533Smrg#include <stdlib.h> 304ad37e533Smrg#include <stdnoreturn.h> 305ae137402Smrgstatic _Noreturn void giveup(void) { exit(0); } 306ad37e533Smrg ], 307ad37e533Smrg [if (feof(stdin)) giveup()], 308ad37e533Smrg cf_cv_c11_noreturn=yes, 309ad37e533Smrg cf_cv_c11_noreturn=no) 310ad37e533Smrg ]) 311ad37e533Smrgelse 312ad37e533Smrg cf_cv_c11_noreturn=no, 313ad37e533Smrgfi 314ad37e533Smrg 315ad37e533Smrgif test "$cf_cv_c11_noreturn" = yes; then 316ae137402Smrg AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working]) 317ad37e533Smrg AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported]) 318ad37e533Smrg HAVE_STDNORETURN_H=1 319ad37e533Smrgelse 320ad37e533Smrg HAVE_STDNORETURN_H=0 321ad37e533Smrgfi 322ad37e533Smrg 323ad37e533SmrgAC_SUBST(HAVE_STDNORETURN_H) 324ae137402SmrgAC_SUBST(STDC_NORETURN) 325ad37e533Smrg])dnl 326ad37e533Smrgdnl --------------------------------------------------------------------------- 327f2e35a3aSmrgdnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20 3280bd37d32Smrgdnl --------------- 3290bd37d32Smrgdnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content 330913cc679Smrgdnl into CC. This will not help with broken scripts that wrap the compiler 331913cc679Smrgdnl with options, but eliminates a more common category of user confusion. 332913cc679Smrgdnl 333913cc679Smrgdnl In particular, it addresses the problem of being able to run the C 334913cc679Smrgdnl preprocessor in a consistent manner. 3352e4f8982Smrgdnl 3362e4f8982Smrgdnl Caveat: this also disallows blanks in the pathname for the compiler, but 3372e4f8982Smrgdnl the nuisance of having inconsistent settings for compiler and preprocessor 3382e4f8982Smrgdnl outweighs that limitation. 3390bd37d32SmrgAC_DEFUN([CF_CC_ENV_FLAGS], 3400bd37d32Smrg[ 3410bd37d32Smrg# This should have been defined by AC_PROG_CC 342f2e35a3aSmrg: "${CC:=cc}" 343f2e35a3aSmrg 344f2e35a3aSmrgAC_MSG_CHECKING(\$CFLAGS variable) 345f2e35a3aSmrgcase "x$CFLAGS" in 346f2e35a3aSmrg(*-[[IUD]]*) 347f2e35a3aSmrg AC_MSG_RESULT(broken) 348f2e35a3aSmrg AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options) 349f2e35a3aSmrg cf_flags="$CFLAGS" 350f2e35a3aSmrg CFLAGS= 351f2e35a3aSmrg for cf_arg in $cf_flags 352f2e35a3aSmrg do 353f2e35a3aSmrg CF_ADD_CFLAGS($cf_arg) 354f2e35a3aSmrg done 355f2e35a3aSmrg ;; 356f2e35a3aSmrg(*) 357f2e35a3aSmrg AC_MSG_RESULT(ok) 358f2e35a3aSmrg ;; 359f2e35a3aSmrgesac 3600bd37d32Smrg 3610bd37d32SmrgAC_MSG_CHECKING(\$CC variable) 36201037d57Smrgcase "$CC" in 3632e4f8982Smrg(*[[\ \ ]]-*) 3640bd37d32Smrg AC_MSG_RESULT(broken) 365f2e35a3aSmrg AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options) 3660bd37d32Smrg # humor him... 367913cc679Smrg cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'` 368f2e35a3aSmrg cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'` 369913cc679Smrg CC="$cf_prog" 370913cc679Smrg for cf_arg in $cf_flags 371913cc679Smrg do 372913cc679Smrg case "x$cf_arg" in 373913cc679Smrg (x-[[IUDfgOW]]*) 374913cc679Smrg CF_ADD_CFLAGS($cf_arg) 375913cc679Smrg ;; 376913cc679Smrg (*) 377913cc679Smrg CC="$CC $cf_arg" 378913cc679Smrg ;; 379913cc679Smrg esac 380913cc679Smrg done 3812e4f8982Smrg CF_VERBOSE(resulting CC: '$CC') 3822e4f8982Smrg CF_VERBOSE(resulting CFLAGS: '$CFLAGS') 3832e4f8982Smrg CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS') 3840bd37d32Smrg ;; 38501037d57Smrg(*) 3860bd37d32Smrg AC_MSG_RESULT(ok) 3870bd37d32Smrg ;; 3880bd37d32Smrgesac 3890bd37d32Smrg])dnl 3900bd37d32Smrgdnl --------------------------------------------------------------------------- 391f2e35a3aSmrgdnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15 392d522f475Smrgdnl -------------- 393d522f475Smrgdnl Check if we're accidentally using a cache from a different machine. 394d522f475Smrgdnl Derive the system name, as a check for reusing the autoconf cache. 395d522f475Smrgdnl 396d522f475Smrgdnl If we've packaged config.guess and config.sub, run that (since it does a 397d522f475Smrgdnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow 398d522f475Smrgdnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM 399d522f475Smrgdnl which is useful in cross-compiles. 400d522f475Smrgdnl 401d522f475Smrgdnl Note: we would use $ac_config_sub, but that is one of the places where 402d522f475Smrgdnl autoconf 2.5x broke compatibility with autoconf 2.13 403d522f475SmrgAC_DEFUN([CF_CHECK_CACHE], 404d522f475Smrg[ 405f2e35a3aSmrgif test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then 406d522f475Smrg ifelse([$1],,[AC_CANONICAL_HOST],[$1]) 407d522f475Smrg system_name="$host_os" 408d522f475Smrgelse 409d522f475Smrg system_name="`(uname -s -r) 2>/dev/null`" 410d522f475Smrg if test -z "$system_name" ; then 411d522f475Smrg system_name="`(hostname) 2>/dev/null`" 412d522f475Smrg fi 413d522f475Smrgfi 4140bd37d32Smrgtest -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.]) 415d522f475SmrgAC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) 416d522f475Smrg 417d522f475Smrgtest -z "$system_name" && system_name="$cf_cv_system_name" 418d522f475Smrgtest -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) 419d522f475Smrg 420d522f475Smrgif test ".$system_name" != ".$cf_cv_system_name" ; then 421d522f475Smrg AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) 422d522f475Smrg AC_MSG_ERROR("Please remove config.cache and try again.") 423d522f475Smrgfi 424d522f475Smrg])dnl 425d522f475Smrgdnl --------------------------------------------------------------------------- 426f2e35a3aSmrgdnl CF_CHECK_CFLAGS version: 4 updated: 2021/01/02 19:22:58 427d522f475Smrgdnl --------------- 428d522f475Smrgdnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from 429d522f475Smrgdnl a build-configuration such as imake. These have the pitfall that they 430d522f475Smrgdnl often contain compiler-specific options which we cannot use, mixed with 431d522f475Smrgdnl preprocessor options that we usually can. 432d522f475SmrgAC_DEFUN([CF_CHECK_CFLAGS], 433d522f475Smrg[ 434d522f475SmrgCF_VERBOSE(checking additions to CFLAGS) 435d522f475Smrgcf_check_cflags="$CFLAGS" 436d522f475Smrgcf_check_cppflags="$CPPFLAGS" 437d522f475SmrgCF_ADD_CFLAGS($1,yes) 43801037d57Smrgif test "x$cf_check_cflags" != "x$CFLAGS" ; then 439d522f475SmrgAC_TRY_LINK([#include <stdio.h>],[printf("Hello world");],, 440d522f475Smrg [CF_VERBOSE(test-compile failed. Undoing change to \$CFLAGS) 44101037d57Smrg if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then 442d522f475Smrg CF_VERBOSE(but keeping change to \$CPPFLAGS) 443d522f475Smrg fi 444f2e35a3aSmrg CFLAGS="$cf_check_cflags"]) 445d522f475Smrgfi 446d522f475Smrg])dnl 447d522f475Smrgdnl --------------------------------------------------------------------------- 448f2e35a3aSmrgdnl CF_CHECK_ERRNO version: 13 updated: 2020/03/10 18:53:47 449d522f475Smrgdnl -------------- 450d522f475Smrgdnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g., 451d522f475Smrgdnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it 452d522f475Smrgdnl ourselves. 453d522f475Smrgdnl 454d522f475Smrgdnl $1 = the name to check 4552eaa94a1Schristosdnl $2 = the assumed type 456d522f475SmrgAC_DEFUN([CF_CHECK_ERRNO], 457d522f475Smrg[ 458d522f475SmrgAC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[ 4592e4f8982Smrg AC_TRY_COMPILE([ 460d522f475Smrg#ifdef HAVE_STDLIB_H 461d522f475Smrg#include <stdlib.h> 462d522f475Smrg#endif 463d522f475Smrg#include <stdio.h> 464d522f475Smrg#include <sys/types.h> 465d522f475Smrg#include <errno.h> ], 466f2e35a3aSmrg ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1; (void)x, 4672e4f8982Smrg [cf_cv_dcl_$1=yes], 4682e4f8982Smrg [cf_cv_dcl_$1=no]) 469d522f475Smrg]) 470d522f475Smrg 471d522f475Smrgif test "$cf_cv_dcl_$1" = no ; then 4722e4f8982Smrg CF_UPPER(cf_result,decl_$1) 4732e4f8982Smrg AC_DEFINE_UNQUOTED($cf_result) 474d522f475Smrgfi 475d522f475Smrg 476d522f475Smrg# It's possible (for near-UNIX clones) that the data doesn't exist 47720d2c4d2SmrgCF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2])) 478d522f475Smrg])dnl 479d522f475Smrgdnl --------------------------------------------------------------------------- 480a5ae21e4Smrgdnl CF_CHECK_EXTERN_DATA version: 5 updated: 2021/09/04 06:35:04 481d522f475Smrgdnl -------------------- 482d522f475Smrgdnl Check for existence of external data in the current set of libraries. If 483a5ae21e4Smrgdnl we can modify it, it is real enough. 484d522f475Smrgdnl $1 = the name to check 485d522f475Smrgdnl $2 = its type 486d522f475SmrgAC_DEFUN([CF_CHECK_EXTERN_DATA], 487d522f475Smrg[ 488d522f475SmrgAC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[ 4892e4f8982Smrg AC_TRY_LINK([ 490d522f475Smrg#undef $1 491d522f475Smrgextern $2 $1; 492d522f475Smrg], 4932e4f8982Smrg [$1 = 2], 4942e4f8982Smrg [cf_cv_have_$1=yes], 4952e4f8982Smrg [cf_cv_have_$1=no]) 496d522f475Smrg]) 497d522f475Smrg 498d522f475Smrgif test "$cf_cv_have_$1" = yes ; then 4992e4f8982Smrg CF_UPPER(cf_result,have_$1) 5002e4f8982Smrg AC_DEFINE_UNQUOTED($cf_result) 501d522f475Smrgfi 502d522f475Smrg 503d522f475Smrg])dnl 504d522f475Smrgdnl --------------------------------------------------------------------------- 505f2e35a3aSmrgdnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04 5060bd37d32Smrgdnl ----------------- 5070bd37d32Smrgdnl Check if the given compiler is really clang. clang's C driver defines 5080bd37d32Smrgdnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does 5090bd37d32Smrgdnl not ignore some gcc options. 5100bd37d32Smrgdnl 5110bd37d32Smrgdnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to 5120bd37d32Smrgdnl ensure that it is not mistaken for gcc/g++. It is normally invoked from 5130bd37d32Smrgdnl the wrappers for gcc and g++ warnings. 5140bd37d32Smrgdnl 5150bd37d32Smrgdnl $1 = GCC (default) or GXX 516e0a2b6dfSmrgdnl $2 = CLANG_COMPILER (default) 5170bd37d32Smrgdnl $3 = CFLAGS (default) or CXXFLAGS 5180bd37d32SmrgAC_DEFUN([CF_CLANG_COMPILER],[ 5190bd37d32Smrgifelse([$2],,CLANG_COMPILER,[$2])=no 5200bd37d32Smrg 5210bd37d32Smrgif test "$ifelse([$1],,[$1],GCC)" = yes ; then 5220bd37d32Smrg AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler) 5230bd37d32Smrg cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" 5240bd37d32Smrg AC_TRY_COMPILE([],[ 5250bd37d32Smrg#ifdef __clang__ 5260bd37d32Smrg#else 5270bd37d32Smrgmake an error 5280bd37d32Smrg#endif 5290bd37d32Smrg],[ifelse([$2],,CLANG_COMPILER,[$2])=yes 5300bd37d32Smrg],[]) 5310bd37d32Smrg ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" 5320bd37d32Smrg AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2])) 5330bd37d32Smrgfi 534f2e35a3aSmrg 535f2e35a3aSmrgCLANG_VERSION=none 536f2e35a3aSmrg 537f2e35a3aSmrgif test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then 538f2e35a3aSmrg case "$CC" in 539f2e35a3aSmrg (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]]) 540f2e35a3aSmrg AC_MSG_WARN(replacing broken compiler alias $CC) 541f2e35a3aSmrg CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`" 542f2e35a3aSmrg CC=clang 543f2e35a3aSmrg ;; 544f2e35a3aSmrg esac 545f2e35a3aSmrg 546f2e35a3aSmrg AC_MSG_CHECKING(version of $CC) 547f2e35a3aSmrg 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.]].*//'`" 548f2e35a3aSmrg test -z "$CLANG_VERSION" && CLANG_VERSION=unknown 549f2e35a3aSmrg AC_MSG_RESULT($CLANG_VERSION) 550f2e35a3aSmrg 551f2e35a3aSmrg for cf_clang_opt in \ 552f2e35a3aSmrg -Qunused-arguments \ 553f2e35a3aSmrg -Wno-error=implicit-function-declaration 554f2e35a3aSmrg do 555f2e35a3aSmrg AC_MSG_CHECKING(if option $cf_clang_opt works) 556f2e35a3aSmrg cf_save_CFLAGS="$CFLAGS" 557f2e35a3aSmrg CFLAGS="$CFLAGS $cf_clang_opt" 558f2e35a3aSmrg AC_TRY_LINK([ 559f2e35a3aSmrg #include <stdio.h>],[ 560f2e35a3aSmrg printf("hello!\\n");],[ 561f2e35a3aSmrg cf_clang_optok=yes],[ 562f2e35a3aSmrg cf_clang_optok=no]) 563f2e35a3aSmrg AC_MSG_RESULT($cf_clang_optok) 564f2e35a3aSmrg CFLAGS="$cf_save_CFLAGS" 565f2e35a3aSmrg if test "$cf_clang_optok" = yes; then 566f2e35a3aSmrg CF_VERBOSE(adding option $cf_clang_opt) 567f2e35a3aSmrg CF_APPEND_TEXT(CFLAGS,$cf_clang_opt) 568f2e35a3aSmrg fi 569f2e35a3aSmrg done 570f2e35a3aSmrgfi 5710bd37d32Smrg]) 5720bd37d32Smrgdnl --------------------------------------------------------------------------- 573ae137402Smrgdnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17 574f2e35a3aSmrgdnl ----------------- 575f2e35a3aSmrgdnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most 576f2e35a3aSmrgdnl character-strings. 577f2e35a3aSmrgdnl 578f2e35a3aSmrgdnl It is ambiguous because the specification accommodated the pre-ANSI 579f2e35a3aSmrgdnl compilers bundled by more than one vendor in lieu of providing a standard C 580f2e35a3aSmrgdnl compiler other than by costly add-ons. Because of this, the specification 581f2e35a3aSmrgdnl did not take into account the use of const for telling the compiler that 582f2e35a3aSmrgdnl string literals would be in readonly memory. 583f2e35a3aSmrgdnl 584f2e35a3aSmrgdnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to 585f2e35a3aSmrgdnl let the compiler decide how to represent Xt's strings which were #define'd. 586f2e35a3aSmrgdnl That does not solve the problem of using the block of Xt's strings which 587f2e35a3aSmrgdnl are compiled into the library (and is less efficient than one might want). 588f2e35a3aSmrgdnl 589f2e35a3aSmrgdnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both 590f2e35a3aSmrgdnl when compiling the library and compiling using the library, to tell the 591f2e35a3aSmrgdnl compiler that String is const. 592f2e35a3aSmrgAC_DEFUN([CF_CONST_X_STRING], 593f2e35a3aSmrg[ 594f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 595f2e35a3aSmrg 596f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING]) 597f2e35a3aSmrg 598f2e35a3aSmrgAC_TRY_COMPILE( 599f2e35a3aSmrg[ 600f2e35a3aSmrg#include <stdlib.h> 601f2e35a3aSmrg#include <X11/Intrinsic.h> 602f2e35a3aSmrg], 603ae137402Smrg[String foo = malloc(1); free((void*)foo)],[ 604f2e35a3aSmrg 605f2e35a3aSmrgAC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[ 606f2e35a3aSmrg AC_TRY_COMPILE( 607f2e35a3aSmrg [ 608f2e35a3aSmrg#define _CONST_X_STRING /* X11R7.8 (perhaps) */ 609f2e35a3aSmrg#undef XTSTRINGDEFINES /* X11R5 and later */ 610f2e35a3aSmrg#include <stdlib.h> 611f2e35a3aSmrg#include <X11/Intrinsic.h> 612f2e35a3aSmrg ],[String foo = malloc(1); *foo = 0],[ 613f2e35a3aSmrg cf_cv_const_x_string=no 614f2e35a3aSmrg ],[ 615f2e35a3aSmrg cf_cv_const_x_string=yes 616f2e35a3aSmrg ]) 617f2e35a3aSmrg]) 618f2e35a3aSmrg 619f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING]) 620f2e35a3aSmrg 621f2e35a3aSmrgcase "$cf_cv_const_x_string" in 622f2e35a3aSmrg(no) 623f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES) 624f2e35a3aSmrg ;; 625f2e35a3aSmrg(*) 626f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING) 627f2e35a3aSmrg ;; 628f2e35a3aSmrgesac 629f2e35a3aSmrg 630f2e35a3aSmrg]) 631f2e35a3aSmrg])dnl 632f2e35a3aSmrgdnl --------------------------------------------------------------------------- 633e39b573cSmrgdnl CF_DISABLE_DESKTOP version: 2 updated: 2011/04/22 05:17:37 634e39b573cSmrgdnl ------------------ 635e39b573cSmrgdnl Handle a configure option "--disable-desktop", which sets a shell 636e39b573cSmrgdnl variable $desktop_utils to a "#" if the feature is not wanted, or to an 637e39b573cSmrgdnl empty string if enabled. The variable is used to substitute in front of 638e39b573cSmrgdnl corresponding makefile-rules. 639e39b573cSmrgdnl 640e39b573cSmrgdnl It also tells the configure script to substitute the environment variable 641e39b573cSmrgdnl $DESKTOP_FLAGS, which can be used by external scripts to customize the 642e39b573cSmrgdnl invocation of desktop-file-util. 643e39b573cSmrgdnl 644e39b573cSmrgdnl $1 = program name 645e39b573cSmrgAC_DEFUN([CF_DISABLE_DESKTOP],[ 646e39b573cSmrg# Comment-out the install-desktop rule if the desktop-utils are not found. 647e39b573cSmrgAC_MSG_CHECKING(if you want to install desktop files) 648e39b573cSmrgCF_ARG_OPTION(desktop, 649e39b573cSmrg [ --disable-desktop disable install of $1 desktop files], 650e39b573cSmrg [enable_desktop=$enableval], 651e39b573cSmrg [enable_desktop=$enableval],yes) 652e39b573cSmrgAC_MSG_RESULT($enable_desktop) 653e39b573cSmrg 654e39b573cSmrgdesktop_utils= 655e39b573cSmrgif test "$enable_desktop" = yes ; then 656e39b573cSmrgAC_CHECK_PROG(desktop_utils,desktop-file-install,yes,no) 657e39b573cSmrgfi 658e39b573cSmrg 659e39b573cSmrgtest "$desktop_utils" = yes && desktop_utils= || desktop_utils="#" 660e39b573cSmrgAC_SUBST(DESKTOP_FLAGS) 661e39b573cSmrg]) 662e39b573cSmrgdnl --------------------------------------------------------------------------- 663a5ae21e4Smrgdnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04 664d522f475Smrgdnl --------------- 665a5ae21e4Smrgdnl You can always use "make -n" to see the actual options, but it is hard to 666d522f475Smrgdnl pick out/analyze warning messages when the compile-line is long. 667d522f475Smrgdnl 668d522f475Smrgdnl Sets: 669d522f475Smrgdnl ECHO_LT - symbol to control if libtool is verbose 670d522f475Smrgdnl ECHO_LD - symbol to prefix "cc -o" lines 671d522f475Smrgdnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o) 672d522f475Smrgdnl SHOW_CC - symbol to put before explicit "cc -c" lines 673d522f475Smrgdnl ECHO_CC - symbol to put before any "cc" line 674d522f475Smrgdnl 675d522f475SmrgAC_DEFUN([CF_DISABLE_ECHO],[ 676d522f475SmrgAC_MSG_CHECKING(if you want to see long compiling messages) 677d522f475SmrgCF_ARG_DISABLE(echo, 6780bd37d32Smrg [ --disable-echo do not display "compiling" commands], 679d522f475Smrg [ 6802e4f8982Smrg ECHO_LT='--silent' 6812e4f8982Smrg ECHO_LD='@echo linking [$]@;' 6822e4f8982Smrg RULE_CC='@echo compiling [$]<' 6832e4f8982Smrg SHOW_CC='@echo compiling [$]@' 6842e4f8982Smrg ECHO_CC='@' 685d522f475Smrg],[ 6862e4f8982Smrg ECHO_LT='' 6872e4f8982Smrg ECHO_LD='' 6882e4f8982Smrg RULE_CC='' 6892e4f8982Smrg SHOW_CC='' 6902e4f8982Smrg ECHO_CC='' 691d522f475Smrg]) 692d522f475SmrgAC_MSG_RESULT($enableval) 693d522f475SmrgAC_SUBST(ECHO_LT) 694d522f475SmrgAC_SUBST(ECHO_LD) 695d522f475SmrgAC_SUBST(RULE_CC) 696d522f475SmrgAC_SUBST(SHOW_CC) 697d522f475SmrgAC_SUBST(ECHO_CC) 698d522f475Smrg])dnl 699d522f475Smrgdnl --------------------------------------------------------------------------- 700ae137402Smrgdnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50 7010bd37d32Smrgdnl ---------------- 7020bd37d32Smrgdnl Combine no-leak checks with the libraries or tools that are used for the 7030bd37d32Smrgdnl checks. 7040bd37d32SmrgAC_DEFUN([CF_DISABLE_LEAKS],[ 7050bd37d32Smrg 7060bd37d32SmrgAC_REQUIRE([CF_WITH_DMALLOC]) 7070bd37d32SmrgAC_REQUIRE([CF_WITH_DBMALLOC]) 7080bd37d32SmrgAC_REQUIRE([CF_WITH_VALGRIND]) 7090bd37d32Smrg 7100bd37d32SmrgAC_MSG_CHECKING(if you want to perform memory-leak testing) 7110bd37d32SmrgAC_ARG_ENABLE(leaks, 7120bd37d32Smrg [ --disable-leaks test: free permanent memory, analyze leaks], 713ae137402Smrg [enable_leaks=$enableval], 714f2e35a3aSmrg [enable_leaks=yes]) 715ae137402Smrgdnl with_no_leaks is more readable... 716f2e35a3aSmrgif test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi 7170bd37d32SmrgAC_MSG_RESULT($with_no_leaks) 7180bd37d32Smrg 719f2e35a3aSmrgif test "$enable_leaks" = no ; then 7200bd37d32Smrg AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) 7210bd37d32Smrg AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) 7220bd37d32Smrgfi 7230bd37d32Smrg])dnl 7240bd37d32Smrgdnl --------------------------------------------------------------------------- 725f2e35a3aSmrgdnl CF_DISABLE_RPATH_HACK version: 3 updated: 2021/01/05 20:14:44 72620d2c4d2Smrgdnl --------------------- 72720d2c4d2Smrgdnl The rpath-hack makes it simpler to build programs, particularly with the 72820d2c4d2Smrgdnl *BSD ports which may have essential libraries in unusual places. But it 72920d2c4d2Smrgdnl can interfere with building an executable for the base system. Use this 73020d2c4d2Smrgdnl option in that case. 73120d2c4d2SmrgAC_DEFUN([CF_DISABLE_RPATH_HACK], 73220d2c4d2Smrg[ 733a1f3da82SmrgAC_MSG_CHECKING(if rpath-hack should be disabled) 73420d2c4d2SmrgCF_ARG_DISABLE(rpath-hack, 73520d2c4d2Smrg [ --disable-rpath-hack don't add rpath options for additional libraries], 736f2e35a3aSmrg [enable_rpath_hack=no], 737f2e35a3aSmrg [enable_rpath_hack=yes]) 738f2e35a3aSmrgdnl TODO - drop cf_disable_rpath_hack 739f2e35a3aSmrgif test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi 74020d2c4d2SmrgAC_MSG_RESULT($cf_disable_rpath_hack) 741f2e35a3aSmrg 742f2e35a3aSmrgif test "$enable_rpath_hack" = yes ; then 74320d2c4d2Smrg CF_RPATH_HACK 74420d2c4d2Smrgfi 74520d2c4d2Smrg]) 74620d2c4d2Smrgdnl --------------------------------------------------------------------------- 747f2e35a3aSmrgdnl CF_ENABLE_NARROWPROTO version: 6 updated: 2020/12/31 18:40:20 748d522f475Smrgdnl --------------------- 749d522f475Smrgdnl If this is not set properly, Xaw's scrollbars will not work. 750d522f475Smrgdnl The so-called "modular" configuration for X.org omits most of the 751d522f475Smrgdnl configure checks that would be needed to provide compatibility with 752d522f475Smrgdnl older X builds. This one breaks things noticeably. 753d522f475SmrgAC_DEFUN([CF_ENABLE_NARROWPROTO], 754d522f475Smrg[ 755d522f475SmrgAC_MSG_CHECKING(if you want narrow prototypes for X libraries) 756d522f475Smrg 75701037d57Smrgcase `$ac_config_guess` in 758f2e35a3aSmrg(*freebsd*|*gnu*|*irix5*|*irix6*|*netbsd*|*openbsd*|*qnx*|*sco*|*sgi*) 759d522f475Smrg cf_default_narrowproto=yes 760d522f475Smrg ;; 76101037d57Smrg(*) 762d522f475Smrg cf_default_narrowproto=no 763d522f475Smrg ;; 764d522f475Smrgesac 765d522f475Smrg 766d522f475SmrgCF_ARG_OPTION(narrowproto, 767d522f475Smrg [ --enable-narrowproto enable narrow prototypes for X libraries], 768d522f475Smrg [enable_narrowproto=$enableval], 769d522f475Smrg [enable_narrowproto=$cf_default_narrowproto], 770d522f475Smrg [$cf_default_narrowproto]) 771d522f475SmrgAC_MSG_RESULT($enable_narrowproto) 772d522f475Smrg]) 773d522f475Smrgdnl --------------------------------------------------------------------------- 774f2e35a3aSmrgdnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50 775f2e35a3aSmrgdnl ------------------ 776f2e35a3aSmrgdnl Configure-option to enable gcc warnings 777f2e35a3aSmrgdnl 778f2e35a3aSmrgdnl $1 = extra options to add, if supported 779f2e35a3aSmrgdnl $2 = option for checking attributes. By default, this is done when 780f2e35a3aSmrgdnl warnings are enabled. For other values: 781f2e35a3aSmrgdnl yes: always do this, e.g., to use in generated library-headers 782f2e35a3aSmrgdnl no: never do this 783f2e35a3aSmrgAC_DEFUN([CF_ENABLE_WARNINGS],[ 784f2e35a3aSmrgif test "$GCC" = yes || test "$GXX" = yes 785f2e35a3aSmrgthen 786f2e35a3aSmrgCF_FIX_WARNINGS(CFLAGS) 787f2e35a3aSmrgCF_FIX_WARNINGS(CPPFLAGS) 788f2e35a3aSmrgCF_FIX_WARNINGS(LDFLAGS) 789f2e35a3aSmrgAC_MSG_CHECKING(if you want to turn on gcc warnings) 790f2e35a3aSmrgCF_ARG_ENABLE(warnings, 791f2e35a3aSmrg [ --enable-warnings test: turn on gcc compiler warnings], 792f2e35a3aSmrg [enable_warnings=yes], 793f2e35a3aSmrg [enable_warnings=no]) 794f2e35a3aSmrgAC_MSG_RESULT($enable_warnings) 795f2e35a3aSmrgif test "$enable_warnings" = "yes" 796f2e35a3aSmrgthen 797f2e35a3aSmrg ifelse($2,,[CF_GCC_ATTRIBUTES]) 798f2e35a3aSmrg CF_GCC_WARNINGS($1) 799f2e35a3aSmrgfi 800f2e35a3aSmrgifelse($2,yes,[CF_GCC_ATTRIBUTES]) 801f2e35a3aSmrgfi 802f2e35a3aSmrg])dnl 803f2e35a3aSmrgdnl --------------------------------------------------------------------------- 804d522f475Smrgdnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39 805d522f475Smrgdnl -------- 806d522f475Smrgdnl Check if 'errno' is declared in <errno.h> 807d522f475SmrgAC_DEFUN([CF_ERRNO], 808d522f475Smrg[ 809d522f475SmrgCF_CHECK_ERRNO(errno) 810d522f475Smrg])dnl 811d522f475Smrgdnl --------------------------------------------------------------------------- 8124419d26bSmrgdnl CF_FIX_WARNINGS version: 4 updated: 2021/12/16 18:22:31 813f2e35a3aSmrgdnl --------------- 814f2e35a3aSmrgdnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc. Any of gcc's 815f2e35a3aSmrgdnl "-Werror" flags can interfere with configure-checks. Those go into 816f2e35a3aSmrgdnl EXTRA_CFLAGS. 817f2e35a3aSmrgdnl 818f2e35a3aSmrgdnl $1 = variable name to repair 819f2e35a3aSmrgdefine([CF_FIX_WARNINGS],[ 820f2e35a3aSmrgif test "$GCC" = yes || test "$GXX" = yes 821f2e35a3aSmrgthen 822f2e35a3aSmrg case [$]$1 in 823f2e35a3aSmrg (*-Werror=*) 824f2e35a3aSmrg cf_temp_flags= 825f2e35a3aSmrg for cf_temp_scan in [$]$1 826f2e35a3aSmrg do 827f2e35a3aSmrg case "x$cf_temp_scan" in 8284419d26bSmrg (x-Werror=format*) 8294419d26bSmrg CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) 8304419d26bSmrg ;; 831f2e35a3aSmrg (x-Werror=*) 832f2e35a3aSmrg CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan) 833f2e35a3aSmrg ;; 834f2e35a3aSmrg (*) 835f2e35a3aSmrg CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) 836f2e35a3aSmrg ;; 837f2e35a3aSmrg esac 838f2e35a3aSmrg done 8394419d26bSmrg if test "x[$]$1" != "x$cf_temp_flags" 8404419d26bSmrg then 8414419d26bSmrg CF_VERBOSE(repairing $1: [$]$1) 8424419d26bSmrg $1="$cf_temp_flags" 8434419d26bSmrg CF_VERBOSE(... fixed [$]$1) 8444419d26bSmrg CF_VERBOSE(... extra $EXTRA_CFLAGS) 8454419d26bSmrg fi 846f2e35a3aSmrg ;; 847f2e35a3aSmrg esac 848f2e35a3aSmrgfi 849f2e35a3aSmrgAC_SUBST(EXTRA_CFLAGS) 850f2e35a3aSmrg])dnl 851f2e35a3aSmrgdnl --------------------------------------------------------------------------- 852f2e35a3aSmrgdnl CF_FUNC_GRANTPT version: 15 updated: 2020/12/31 18:40:20 853d522f475Smrgdnl --------------- 8540bd37d32Smrgdnl Check for grantpt versus openpty, as well as functions that "should" be 8550bd37d32Smrgdnl available if grantpt is available. 8560bd37d32SmrgAC_DEFUN([CF_FUNC_GRANTPT],[ 8570bd37d32Smrg 8580bd37d32SmrgAC_CHECK_HEADERS( \ 8590bd37d32Smrgstropts.h \ 8600bd37d32Smrg) 8610bd37d32Smrg 8620bd37d32Smrgcf_func_grantpt="grantpt ptsname" 863f2e35a3aSmrgcf_prefer_openpt=no 86401037d57Smrgcase $host_os in 86501037d57Smrg(darwin[[0-9]].*) 8660bd37d32Smrg ;; 867f2e35a3aSmrg(openbsd[[0-9]].*) 868f2e35a3aSmrg # The POSIX entrypoints exist, but have never worked. 869f2e35a3aSmrg ;; 870f2e35a3aSmrg(linux*) 871f2e35a3aSmrg cf_func_grantpt="$cf_func_grantpt posix_openpt" 872f2e35a3aSmrg cf_prefer_openpt=yes 873f2e35a3aSmrg ;; 87401037d57Smrg(*) 8750bd37d32Smrg cf_func_grantpt="$cf_func_grantpt posix_openpt" 8760bd37d32Smrg ;; 8770bd37d32Smrgesac 8780bd37d32Smrg 8790bd37d32SmrgAC_CHECK_FUNCS($cf_func_grantpt) 8800bd37d32Smrg 8810bd37d32Smrgcf_grantpt_opts= 8820bd37d32Smrgif test "x$ac_cv_func_grantpt" = "xyes" ; then 8830bd37d32Smrg AC_MSG_CHECKING(if grantpt really works) 8840bd37d32Smrg AC_TRY_LINK(CF__GRANTPT_HEAD,CF__GRANTPT_BODY,[ 8850bd37d32Smrg AC_TRY_RUN(CF__GRANTPT_HEAD 8860bd37d32Smrgint main(void) 8870bd37d32Smrg{ 8880bd37d32SmrgCF__GRANTPT_BODY 889d522f475Smrg} 8900bd37d32Smrg, 8910bd37d32Smrg,ac_cv_func_grantpt=no 8920bd37d32Smrg,ac_cv_func_grantpt=maybe) 8930bd37d32Smrg ],ac_cv_func_grantpt=no) 8940bd37d32Smrg AC_MSG_RESULT($ac_cv_func_grantpt) 8950bd37d32Smrg 8960bd37d32Smrg if test "x$ac_cv_func_grantpt" != "xno" ; then 8970bd37d32Smrg 8980bd37d32Smrg if test "x$ac_cv_func_grantpt" = "xyes" ; then 8990bd37d32Smrg AC_MSG_CHECKING(for pty features) 9000bd37d32Smrgdnl if we have no stropts.h, skip the checks for streams modules 9010bd37d32Smrg if test "x$ac_cv_header_stropts_h" = xyes 9020bd37d32Smrg then 9030bd37d32Smrg cf_pty_this=0 9040bd37d32Smrg else 9050bd37d32Smrg cf_pty_this=3 9060bd37d32Smrg fi 9070bd37d32Smrg 9080bd37d32Smrg cf_pty_defines= 9090bd37d32Smrg while test $cf_pty_this != 6 9100bd37d32Smrg do 9110bd37d32Smrg 9120bd37d32Smrg cf_pty_feature= 913f2e35a3aSmrg cf_pty_next="`expr $cf_pty_this + 1`" 9140bd37d32Smrg CF_MSG_LOG(pty feature test $cf_pty_next:5) 9150bd37d32Smrg AC_TRY_RUN(#define CONFTEST $cf_pty_this 9160bd37d32Smrg$cf_pty_defines 9170bd37d32SmrgCF__GRANTPT_HEAD 9180bd37d32Smrgint main(void) 9190bd37d32Smrg{ 9200bd37d32SmrgCF__GRANTPT_BODY 9210bd37d32Smrg} 9220bd37d32Smrg, 9230bd37d32Smrg[ 92401037d57Smrg case $cf_pty_next in 92501037d57Smrg (1) # - streams 9260bd37d32Smrg cf_pty_feature=ptem 9270bd37d32Smrg ;; 92801037d57Smrg (2) # - streams 9290bd37d32Smrg cf_pty_feature=ldterm 9300bd37d32Smrg ;; 93101037d57Smrg (3) # - streams 9320bd37d32Smrg cf_pty_feature=ttcompat 9330bd37d32Smrg ;; 93401037d57Smrg (4) 9350bd37d32Smrg cf_pty_feature=pty_isatty 9360bd37d32Smrg ;; 93701037d57Smrg (5) 9380bd37d32Smrg cf_pty_feature=pty_tcsetattr 9390bd37d32Smrg ;; 94001037d57Smrg (6) 9410bd37d32Smrg cf_pty_feature=tty_tcsetattr 9420bd37d32Smrg ;; 9430bd37d32Smrg esac 9440bd37d32Smrg],[ 94501037d57Smrg case $cf_pty_next in 94601037d57Smrg (1|2|3) 9470bd37d32Smrg CF_MSG_LOG(skipping remaining streams features $cf_pty_this..2) 9480bd37d32Smrg cf_pty_next=3 9490bd37d32Smrg ;; 9500bd37d32Smrg esac 9510bd37d32Smrg]) 9520bd37d32Smrg if test -n "$cf_pty_feature" 9530bd37d32Smrg then 9540bd37d32Smrg cf_pty_defines="$cf_pty_defines 9550bd37d32Smrg#define CONFTEST_$cf_pty_feature 1 9560bd37d32Smrg" 9570bd37d32Smrg cf_grantpt_opts="$cf_grantpt_opts $cf_pty_feature" 9580bd37d32Smrg fi 9590bd37d32Smrg 9600bd37d32Smrg cf_pty_this=$cf_pty_next 9610bd37d32Smrg done 9620bd37d32Smrg AC_MSG_RESULT($cf_grantpt_opts) 9630bd37d32Smrg cf_grantpt_opts=`echo "$cf_grantpt_opts" | sed -e 's/ isatty//'` 9640bd37d32Smrg fi 965d522f475Smrg fi 9660bd37d32Smrgfi 9670bd37d32Smrg 9680bd37d32Smrgdnl If we found grantpt, but no features, e.g., for streams or if we are not 9690bd37d32Smrgdnl able to use tcsetattr, then give openpty a try. In particular, Darwin 10.7 9700bd37d32Smrgdnl has a more functional openpty than posix_openpt. 9710bd37d32Smrgdnl 9720bd37d32Smrgdnl There is no configure run-test for openpty, since older implementations do 9730bd37d32Smrgdnl not always run properly as a non-root user. For that reason, we also allow 9740bd37d32Smrgdnl the configure script to suppress this check entirely with $disable_openpty. 975f2e35a3aSmrgif test "x$cf_prefer_posix_openpt" = "xyes" && test "x$ac_cv_func_posix_openpt" = "xyes" ; then 976f2e35a3aSmrg CF_VERBOSE(prefer posix_openpt over openpty) 977f2e35a3aSmrgelif test "x$disable_openpty" != "xyes" || test -z "$cf_grantpt_opts" ; then 9780bd37d32Smrg AC_CHECK_LIB(util, openpty, [cf_have_openpty=yes],[cf_have_openpty=no]) 9790bd37d32Smrg if test "$cf_have_openpty" = yes ; then 9800bd37d32Smrg ac_cv_func_grantpt=no 9810bd37d32Smrg LIBS="-lutil $LIBS" 9820bd37d32Smrg AC_DEFINE(HAVE_OPENPTY,1,[Define to 1 if you have the openpty function]) 9830bd37d32Smrg AC_CHECK_HEADERS( \ 9840bd37d32Smrg util.h \ 9850bd37d32Smrg libutil.h \ 9860bd37d32Smrg pty.h \ 9870bd37d32Smrg ) 9880bd37d32Smrg fi 9890bd37d32Smrgfi 9900bd37d32Smrg 9910bd37d32Smrgdnl If we did not settle on using openpty, fill in the definitions for grantpt. 9920bd37d32Smrgif test "x$ac_cv_func_grantpt" != xno 9930bd37d32Smrgthen 9940bd37d32Smrg CF_VERBOSE(will rely upon grantpt) 9950bd37d32Smrg AC_DEFINE(HAVE_WORKING_GRANTPT,1,[Define to 1 if the grantpt function seems to work]) 9960bd37d32Smrg for cf_feature in $cf_grantpt_opts 9970bd37d32Smrg do 9980bd37d32Smrg cf_feature=`echo "$cf_feature" | sed -e 's/ //g'` 9990bd37d32Smrg CF_UPPER(cf_FEATURE,$cf_feature) 10000bd37d32Smrg AC_DEFINE_UNQUOTED(HAVE_GRANTPT_$cf_FEATURE) 10010bd37d32Smrg done 10020bd37d32Smrgelif test "x$cf_have_openpty" = xno 10030bd37d32Smrgthen 10040bd37d32Smrg CF_VERBOSE(will rely upon BSD-pseudoterminals) 10050bd37d32Smrgelse 10060bd37d32Smrg CF_VERBOSE(will rely upon openpty) 10070bd37d32Smrgfi 10080bd37d32Smrg])dnl 1009d522f475Smrgdnl --------------------------------------------------------------------------- 1010f2e35a3aSmrgdnl CF_FUNC_TGETENT version: 23 updated: 2020/06/02 20:17:00 1011d522f475Smrgdnl --------------- 1012d522f475Smrgdnl Check for tgetent function in termcap library. If we cannot find this, 1013d522f475Smrgdnl we'll use the $LINES and $COLUMNS environment variables to pass screen 1014d522f475Smrgdnl size information to subprocesses. (We cannot use terminfo's compatibility 1015d522f475Smrgdnl function, since it cannot provide the termcap-format data). 1016d522f475Smrgdnl 1017d522f475Smrgdnl If the --disable-full-tgetent option is given, we'll settle for the first 1018d522f475Smrgdnl tgetent function we find. Since the search list in that case does not 1019d522f475Smrgdnl include the termcap library, that allows us to default to terminfo. 1020d522f475SmrgAC_DEFUN([CF_FUNC_TGETENT], 1021d522f475Smrg[ 1022d522f475Smrg# compute a reasonable value for $TERM to give tgetent(), since we may be 1023d522f475Smrg# running in 'screen', which sets $TERMCAP to a specific entry that is not 1024d522f475Smrg# necessarily in /etc/termcap - unsetenv is not portable, so we cannot simply 1025d522f475Smrg# discard $TERMCAP. 1026d522f475Smrgcf_TERMVAR=vt100 1027e39b573cSmrgif test -n "$TERMCAP" 1028e39b573cSmrgthen 1029e39b573cSmrg cf_TERMCAP=`echo "$TERMCAP" | tr '\n' ' ' | sed -e 's/^..|//' -e 's/|.*//'` 103001037d57Smrg case "$cf_TERMCAP" in 103101037d57Smrg (screen*.*) 1032e39b573cSmrg ;; 103301037d57Smrg (*) 1034e39b573cSmrg cf_TERMVAR="$cf_TERMCAP" 1035e39b573cSmrg ;; 1036e39b573cSmrg esac 1037e39b573cSmrgfi 1038d522f475Smrgtest -z "$cf_TERMVAR" && cf_TERMVAR=vt100 1039d522f475Smrg 1040f2e35a3aSmrg# BSD termcap used no header file 1041f2e35a3aSmrg# SVr4 provided termcap prototypes as a legacy feature in term.h 1042f2e35a3aSmrg# GNU termcap provided termcap prototypes in termcap.h 1043f2e35a3aSmrg# ncurses provides termcap prototypes in both term.h and termcap.h 1044f2e35a3aSmrg# 1045f2e35a3aSmrg# The terminfo-based termcap interfaces do not provide a full tgetent (i.e., do 1046f2e35a3aSmrg# not return the text of the termcap entry in the buffer), but as a special 1047f2e35a3aSmrg# case, FreeBSD provides ncurses' termcap.h with a modified termcap reader that 1048f2e35a3aSmrg# returns the termcap text. 1049f2e35a3aSmrgAC_CHECK_HEADERS(termcap.h) 1050f2e35a3aSmrg 1051d522f475SmrgAC_MSG_CHECKING(if we want full tgetent function) 1052d522f475SmrgCF_ARG_DISABLE(full-tgetent, 1053d522f475Smrg [ --disable-full-tgetent disable check for full tgetent function], 1054d522f475Smrg cf_full_tgetent=no, 1055d522f475Smrg cf_full_tgetent=yes,yes) 1056d522f475SmrgAC_MSG_RESULT($cf_full_tgetent) 1057d522f475Smrg 1058d522f475Smrgif test "$cf_full_tgetent" = yes ; then 1059d522f475Smrg cf_test_message="full tgetent" 1060d522f475Smrgelse 1061d522f475Smrg cf_test_message="tgetent" 1062d522f475Smrgfi 1063d522f475Smrg 1064d522f475SmrgAC_CACHE_CHECK(for $cf_test_message function,cf_cv_lib_tgetent,[ 1065d522f475Smrgcf_save_LIBS="$LIBS" 1066d522f475Smrgcf_cv_lib_tgetent=no 1067d522f475Smrgif test "$cf_full_tgetent" = yes ; then 10680bd37d32Smrg cf_TERMLIB="otermcap termcap termlib ncurses curses" 1069d522f475Smrg cf_TERMTST="buffer[[0]] == 0" 1070d522f475Smrgelse 1071d522f475Smrg cf_TERMLIB="termlib ncurses curses" 1072d522f475Smrg cf_TERMTST="0" 1073d522f475Smrgfi 1074d522f475Smrgfor cf_termlib in '' $cf_TERMLIB ; do 1075d522f475Smrg LIBS="$cf_save_LIBS" 10762e4f8982Smrg test -n "$cf_termlib" && { CF_ADD_LIB($cf_termlib) } 1077d522f475Smrg AC_TRY_RUN([ 1078f2e35a3aSmrg#ifdef HAVE_TERMCAP_H 1079f2e35a3aSmrg#include <termcap.h> 1080f2e35a3aSmrg#endif 1081d522f475Smrg/* terminfo implementations ignore the buffer argument, making it useless for 1082d522f475Smrg * the xterm application, which uses this information to make a new TERMCAP 1083d522f475Smrg * environment variable. 1084d522f475Smrg */ 1085f2e35a3aSmrgint main(void) 1086d522f475Smrg{ 1087d522f475Smrg char buffer[1024]; 1088d522f475Smrg buffer[0] = 0; 1089d522f475Smrg tgetent(buffer, "$cf_TERMVAR"); 1090d522f475Smrg ${cf_cv_main_return:-return} ($cf_TERMTST); }], 1091d522f475Smrg [echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&AC_FD_CC 1092d522f475Smrg if test -n "$cf_termlib" ; then 1093d522f475Smrg cf_cv_lib_tgetent="-l$cf_termlib" 1094d522f475Smrg else 1095d522f475Smrg cf_cv_lib_tgetent=yes 1096d522f475Smrg fi 1097d522f475Smrg break], 1098d522f475Smrg [echo "no, there is no termcap/tgetent in $cf_termlib" 1>&AC_FD_CC], 1099d522f475Smrg [echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&AC_FD_CC]) 1100d522f475Smrgdone 1101d522f475SmrgLIBS="$cf_save_LIBS" 1102d522f475Smrg]) 1103d522f475Smrg 1104d522f475Smrg# If we found a working tgetent(), set LIBS and check for termcap.h. 1105d522f475Smrg# (LIBS cannot be set inside AC_CACHE_CHECK; the commands there should 1106d522f475Smrg# not have side effects other than setting the cache variable, because 1107d522f475Smrg# they are not executed when a cached value exists.) 1108e39b573cSmrgif test "x$cf_cv_lib_tgetent" != xno ; then 11092e4f8982Smrg test "x$cf_cv_lib_tgetent" != xyes && { CF_ADD_LIBS($cf_cv_lib_tgetent) } 11100bd37d32Smrg AC_DEFINE(USE_TERMCAP,1,[Define 1 to indicate that working tgetent is found]) 111120d2c4d2Smrg if test "$cf_full_tgetent" = no ; then 111220d2c4d2Smrg AC_TRY_COMPILE([ 1113d522f475Smrg#include <termcap.h>],[ 1114d522f475Smrg#ifdef NCURSES_VERSION 1115d522f475Smrgmake an error 1116d522f475Smrg#endif],[AC_DEFINE(HAVE_TERMCAP_H)]) 111720d2c4d2Smrg else 111820d2c4d2Smrg AC_CHECK_HEADERS(termcap.h) 111920d2c4d2Smrg fi 1120d522f475Smrgelse 1121d522f475Smrg # If we didn't find a tgetent() that supports the buffer 1122d522f475Smrg # argument, look again to see whether we can find even 1123d522f475Smrg # a crippled one. A crippled tgetent() is still useful to 1124d522f475Smrg # validate values for the TERM environment variable given to 1125d522f475Smrg # child processes. 1126d522f475Smrg AC_CACHE_CHECK(for partial tgetent function,cf_cv_lib_part_tgetent,[ 1127d522f475Smrg cf_cv_lib_part_tgetent=no 1128d522f475Smrg for cf_termlib in $cf_TERMLIB ; do 1129d522f475Smrg LIBS="$cf_save_LIBS -l$cf_termlib" 1130d522f475Smrg AC_TRY_LINK([],[tgetent(0, "$cf_TERMVAR")], 1131d522f475Smrg [echo "there is a terminfo/tgetent in $cf_termlib" 1>&AC_FD_CC 1132d522f475Smrg cf_cv_lib_part_tgetent="-l$cf_termlib" 1133d522f475Smrg break]) 1134d522f475Smrg done 1135d522f475Smrg LIBS="$cf_save_LIBS" 1136d522f475Smrg ]) 1137d522f475Smrg 1138d522f475Smrg if test "$cf_cv_lib_part_tgetent" != no ; then 113920d2c4d2Smrg CF_ADD_LIBS($cf_cv_lib_part_tgetent) 1140d522f475Smrg AC_CHECK_HEADERS(termcap.h) 1141d522f475Smrg 1142d522f475Smrg # If this is linking against ncurses, we'll trigger the 1143d522f475Smrg # ifdef in resize.c that turns the termcap stuff back off. 11440bd37d32Smrg AC_DEFINE(USE_TERMINFO,1,[Define to 1 to indicate that terminfo provides the tgetent interface]) 1145d522f475Smrg fi 1146d522f475Smrgfi 1147d522f475Smrg])dnl 1148d522f475Smrgdnl --------------------------------------------------------------------------- 1149ad37e533Smrgdnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25 1150d522f475Smrgdnl ----------------- 1151d522f475Smrgdnl Test for availability of useful gcc __attribute__ directives to quiet 1152d522f475Smrgdnl compiler warnings. Though useful, not all are supported -- and contrary 1153d522f475Smrgdnl to documentation, unrecognized directives cause older compilers to barf. 1154d522f475SmrgAC_DEFUN([CF_GCC_ATTRIBUTES], 1155f2e35a3aSmrg[AC_REQUIRE([AC_PROG_FGREP])dnl 1156ad37e533SmrgAC_REQUIRE([CF_C11_NORETURN])dnl 1157f2e35a3aSmrg 1158f2e35a3aSmrgif test "$GCC" = yes || test "$GXX" = yes 1159d522f475Smrgthen 1160d522f475Smrgcat > conftest.i <<EOF 1161d522f475Smrg#ifndef GCC_PRINTF 1162d522f475Smrg#define GCC_PRINTF 0 1163d522f475Smrg#endif 1164d522f475Smrg#ifndef GCC_SCANF 1165d522f475Smrg#define GCC_SCANF 0 1166d522f475Smrg#endif 1167d522f475Smrg#ifndef GCC_NORETURN 1168d522f475Smrg#define GCC_NORETURN /* nothing */ 1169d522f475Smrg#endif 1170d522f475Smrg#ifndef GCC_UNUSED 1171d522f475Smrg#define GCC_UNUSED /* nothing */ 1172d522f475Smrg#endif 1173d522f475SmrgEOF 1174d522f475Smrgif test "$GCC" = yes 1175d522f475Smrgthen 1176d522f475Smrg AC_CHECKING([for $CC __attribute__ directives]) 1177f2e35a3aSmrgcat > "conftest.$ac_ext" <<EOF 11786879286fSmrg#line __oline__ "${as_me:-configure}" 1179d522f475Smrg#include "confdefs.h" 1180d522f475Smrg#include "conftest.h" 1181d522f475Smrg#include "conftest.i" 1182d522f475Smrg#if GCC_PRINTF 1183d522f475Smrg#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) 1184d522f475Smrg#else 1185d522f475Smrg#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ 1186d522f475Smrg#endif 1187d522f475Smrg#if GCC_SCANF 1188d522f475Smrg#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) 1189d522f475Smrg#else 1190d522f475Smrg#define GCC_SCANFLIKE(fmt,var) /*nothing*/ 1191d522f475Smrg#endif 1192d522f475Smrgextern void wow(char *,...) GCC_SCANFLIKE(1,2); 1193ad37e533Smrgextern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2); 1194ad37e533Smrgextern GCC_NORETURN void foo(void); 1195f2e35a3aSmrgint main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; } 1196d522f475SmrgEOF 119720d2c4d2Smrg cf_printf_attribute=no 119820d2c4d2Smrg cf_scanf_attribute=no 1199d522f475Smrg for cf_attribute in scanf printf unused noreturn 1200d522f475Smrg do 1201d522f475Smrg CF_UPPER(cf_ATTRIBUTE,$cf_attribute) 1202d522f475Smrg cf_directive="__attribute__(($cf_attribute))" 1203d522f475Smrg echo "checking for $CC $cf_directive" 1>&AC_FD_CC 120420d2c4d2Smrg 1205f2e35a3aSmrg case "$cf_attribute" in 120601037d57Smrg (printf) 120720d2c4d2Smrg cf_printf_attribute=yes 120820d2c4d2Smrg cat >conftest.h <<EOF 1209d522f475Smrg#define GCC_$cf_ATTRIBUTE 1 1210d522f475SmrgEOF 1211d522f475Smrg ;; 121201037d57Smrg (scanf) 121320d2c4d2Smrg cf_scanf_attribute=yes 121420d2c4d2Smrg cat >conftest.h <<EOF 121520d2c4d2Smrg#define GCC_$cf_ATTRIBUTE 1 121620d2c4d2SmrgEOF 121720d2c4d2Smrg ;; 121801037d57Smrg (*) 121920d2c4d2Smrg cat >conftest.h <<EOF 1220d522f475Smrg#define GCC_$cf_ATTRIBUTE $cf_directive 1221d522f475SmrgEOF 1222d522f475Smrg ;; 1223d522f475Smrg esac 122420d2c4d2Smrg 1225d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1226d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute) 1227d522f475Smrg cat conftest.h >>confdefs.h 1228f2e35a3aSmrg case "$cf_attribute" in 122901037d57Smrg (noreturn) 12300bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc]) 12310bd37d32Smrg ;; 123201037d57Smrg (printf) 12330bd37d32Smrg cf_value='/* nothing */' 12340bd37d32Smrg if test "$cf_printf_attribute" != no ; then 12350bd37d32Smrg cf_value='__attribute__((format(printf,fmt,var)))' 12360bd37d32Smrg AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.]) 123720d2c4d2Smrg fi 12380bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc]) 123920d2c4d2Smrg ;; 124001037d57Smrg (scanf) 12410bd37d32Smrg cf_value='/* nothing */' 12420bd37d32Smrg if test "$cf_scanf_attribute" != no ; then 12430bd37d32Smrg cf_value='__attribute__((format(scanf,fmt,var)))' 12440bd37d32Smrg AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.]) 124520d2c4d2Smrg fi 12460bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc]) 12470bd37d32Smrg ;; 124801037d57Smrg (unused) 12490bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc]) 125020d2c4d2Smrg ;; 125120d2c4d2Smrg esac 1252d522f475Smrg fi 1253d522f475Smrg done 1254d522f475Smrgelse 1255f2e35a3aSmrg ${FGREP-fgrep} define conftest.i >>confdefs.h 1256d522f475Smrgfi 1257f2e35a3aSmrgrm -rf ./conftest* 1258d522f475Smrgfi 1259d522f475Smrg])dnl 1260d522f475Smrgdnl --------------------------------------------------------------------------- 1261f2e35a3aSmrgdnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36 1262d522f475Smrgdnl -------------- 1263f2e35a3aSmrgdnl Find version of gcc, and (because icc/clang pretend to be gcc without being 1264f2e35a3aSmrgdnl compatible), attempt to determine if icc/clang is actually used. 1265d522f475SmrgAC_DEFUN([CF_GCC_VERSION],[ 1266d522f475SmrgAC_REQUIRE([AC_PROG_CC]) 1267d522f475SmrgGCC_VERSION=none 1268d522f475Smrgif test "$GCC" = yes ; then 1269d522f475Smrg AC_MSG_CHECKING(version of $CC) 12700bd37d32Smrg 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.]].*//'`" 1271d522f475Smrg test -z "$GCC_VERSION" && GCC_VERSION=unknown 1272d522f475Smrg AC_MSG_RESULT($GCC_VERSION) 1273d522f475Smrgfi 1274f2e35a3aSmrgCF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) 1275f2e35a3aSmrgCF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS) 1276d522f475Smrg])dnl 1277d522f475Smrgdnl --------------------------------------------------------------------------- 1278f2e35a3aSmrgdnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59 1279d522f475Smrgdnl --------------- 1280d522f475Smrgdnl Check if the compiler supports useful warning options. There's a few that 1281d522f475Smrgdnl we don't use, simply because they're too noisy: 1282d522f475Smrgdnl 1283d522f475Smrgdnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) 1284f2e35a3aSmrgdnl -Winline (usually not worthwhile) 1285d522f475Smrgdnl -Wredundant-decls (system headers make this too noisy) 1286d522f475Smrgdnl -Wtraditional (combines too many unrelated messages, only a few useful) 1287d522f475Smrgdnl -Wwrite-strings (too noisy, but should review occasionally). This 1288d522f475Smrgdnl is enabled for ncurses using "--enable-const". 1289d522f475Smrgdnl -pedantic 1290d522f475Smrgdnl 1291d522f475Smrgdnl Parameter: 1292d522f475Smrgdnl $1 is an optional list of gcc warning flags that a particular 1293d522f475Smrgdnl application might want to use, e.g., "no-unused" for 1294d522f475Smrgdnl -Wno-unused 1295d522f475Smrgdnl Special: 1296d522f475Smrgdnl If $with_ext_const is "yes", add a check for -Wwrite-strings 1297d522f475Smrgdnl 1298d522f475SmrgAC_DEFUN([CF_GCC_WARNINGS], 1299d522f475Smrg[ 1300d522f475SmrgAC_REQUIRE([CF_GCC_VERSION]) 1301f2e35a3aSmrgif test "x$have_x" = xyes; then CF_CONST_X_STRING fi 1302f2e35a3aSmrgcat > "conftest.$ac_ext" <<EOF 13036879286fSmrg#line __oline__ "${as_me:-configure}" 1304d522f475Smrgint main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; } 1305d522f475SmrgEOF 1306d522f475Smrgif test "$INTEL_COMPILER" = yes 1307d522f475Smrgthen 1308d522f475Smrg# The "-wdXXX" options suppress warnings: 1309d522f475Smrg# remark #1419: external declaration in primary source file 1310d522f475Smrg# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem) 1311d522f475Smrg# remark #1684: conversion from pointer to same-sized integral type (potential portability problem) 1312d522f475Smrg# remark #193: zero used for undefined preprocessing identifier 1313d522f475Smrg# remark #593: variable "curs_sb_left_arrow" was set but never used 1314d522f475Smrg# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits 1315d522f475Smrg# remark #869: parameter "tw" was never referenced 1316d522f475Smrg# remark #981: operands are evaluated in unspecified order 1317956cc18dSsnj# warning #279: controlling expression is constant 1318d522f475Smrg 1319d522f475Smrg AC_CHECKING([for $CC warning options]) 1320d522f475Smrg cf_save_CFLAGS="$CFLAGS" 1321f2e35a3aSmrg EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" 1322d522f475Smrg for cf_opt in \ 1323d522f475Smrg wd1419 \ 1324d522f475Smrg wd1683 \ 1325d522f475Smrg wd1684 \ 1326d522f475Smrg wd193 \ 1327d522f475Smrg wd593 \ 1328956cc18dSsnj wd279 \ 1329d522f475Smrg wd810 \ 1330d522f475Smrg wd869 \ 1331d522f475Smrg wd981 1332d522f475Smrg do 1333d522f475Smrg CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" 1334d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1335d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) 1336d522f475Smrg EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" 1337d522f475Smrg fi 1338d522f475Smrg done 1339d522f475Smrg CFLAGS="$cf_save_CFLAGS" 1340f2e35a3aSmrgelif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" 1341d522f475Smrgthen 1342d522f475Smrg AC_CHECKING([for $CC warning options]) 1343d522f475Smrg cf_save_CFLAGS="$CFLAGS" 1344d522f475Smrg cf_warn_CONST="" 1345d522f475Smrg test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" 1346e0a2b6dfSmrg cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" 1347e0a2b6dfSmrg test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= 134820d2c4d2Smrg for cf_opt in W Wall \ 1349d522f475Smrg Wbad-function-cast \ 1350d522f475Smrg Wcast-align \ 1351d522f475Smrg Wcast-qual \ 1352e0a2b6dfSmrg Wdeclaration-after-statement \ 1353e0a2b6dfSmrg Wextra \ 1354d522f475Smrg Winline \ 1355d522f475Smrg Wmissing-declarations \ 1356d522f475Smrg Wmissing-prototypes \ 1357d522f475Smrg Wnested-externs \ 1358d522f475Smrg Wpointer-arith \ 1359d522f475Smrg Wshadow \ 1360d522f475Smrg Wstrict-prototypes \ 1361f2e35a3aSmrg Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1 1362d522f475Smrg do 1363d522f475Smrg CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" 1364d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1365d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) 1366f2e35a3aSmrg case "$cf_opt" in 136701037d57Smrg (Winline) 1368f2e35a3aSmrg case "$GCC_VERSION" in 136901037d57Smrg ([[34]].*) 1370d522f475Smrg CF_VERBOSE(feature is broken in gcc $GCC_VERSION) 1371d522f475Smrg continue;; 1372d522f475Smrg esac 1373d522f475Smrg ;; 137401037d57Smrg (Wpointer-arith) 1375f2e35a3aSmrg case "$GCC_VERSION" in 137601037d57Smrg ([[12]].*) 13770bd37d32Smrg CF_VERBOSE(feature is broken in gcc $GCC_VERSION) 13780bd37d32Smrg continue;; 13790bd37d32Smrg esac 13800bd37d32Smrg ;; 1381d522f475Smrg esac 1382d522f475Smrg EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" 1383d522f475Smrg fi 1384d522f475Smrg done 1385d522f475Smrg CFLAGS="$cf_save_CFLAGS" 1386d522f475Smrgfi 1387f2e35a3aSmrgrm -rf ./conftest* 1388d522f475Smrg 1389d522f475SmrgAC_SUBST(EXTRA_CFLAGS) 1390d522f475Smrg])dnl 1391d522f475Smrgdnl --------------------------------------------------------------------------- 1392f2e35a3aSmrgdnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41 1393d522f475Smrgdnl ------------- 1394d522f475Smrgdnl Check if we must define _GNU_SOURCE to get a reasonable value for 1395d522f475Smrgdnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect 1396d522f475Smrgdnl (or misfeature) of glibc2, which breaks portability of many applications, 1397d522f475Smrgdnl since it is interwoven with GNU extensions. 1398d522f475Smrgdnl 1399d522f475Smrgdnl Well, yes we could work around it... 1400f2e35a3aSmrgdnl 1401f2e35a3aSmrgdnl Parameters: 1402f2e35a3aSmrgdnl $1 is the nominal value for _XOPEN_SOURCE 1403d522f475SmrgAC_DEFUN([CF_GNU_SOURCE], 1404d522f475Smrg[ 1405f2e35a3aSmrgcf_gnu_xopen_source=ifelse($1,,500,$1) 1406f2e35a3aSmrg 1407f2e35a3aSmrgAC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[ 1408d522f475SmrgAC_TRY_COMPILE([#include <sys/types.h>],[ 1409f2e35a3aSmrg #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 1410f2e35a3aSmrg return 0; 1411f2e35a3aSmrg #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 1412f2e35a3aSmrg return 0; 1413f2e35a3aSmrg #else 1414f2e35a3aSmrg # error not GNU C library 1415f2e35a3aSmrg #endif], 1416f2e35a3aSmrg [cf_cv_gnu_library=yes], 1417f2e35a3aSmrg [cf_cv_gnu_library=no]) 1418d522f475Smrg]) 1419913cc679Smrg 1420f2e35a3aSmrgif test x$cf_cv_gnu_library = xyes; then 1421f2e35a3aSmrg 1422f2e35a3aSmrg # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE 1423f2e35a3aSmrg # was changed to help a little. newlib incorporated the change about 4 1424f2e35a3aSmrg # years later. 1425f2e35a3aSmrg AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[ 1426f2e35a3aSmrg cf_save="$CPPFLAGS" 1427f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) 1428f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1429f2e35a3aSmrg #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2) 1430f2e35a3aSmrg return 0; 1431f2e35a3aSmrg #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3) 1432f2e35a3aSmrg return 0; 1433f2e35a3aSmrg #else 1434f2e35a3aSmrg # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old 1435f2e35a3aSmrg #endif], 1436f2e35a3aSmrg [cf_cv_gnu_library_219=yes], 1437f2e35a3aSmrg [cf_cv_gnu_library_219=no]) 1438f2e35a3aSmrg CPPFLAGS="$cf_save" 1439913cc679Smrg ]) 1440f2e35a3aSmrg 1441f2e35a3aSmrg if test "x$cf_cv_gnu_library_219" = xyes; then 1442f2e35a3aSmrg cf_save="$CPPFLAGS" 1443f2e35a3aSmrg AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[ 1444f2e35a3aSmrg CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source) 1445f2e35a3aSmrg AC_TRY_COMPILE([ 1446f2e35a3aSmrg #include <limits.h> 1447f2e35a3aSmrg #include <sys/types.h> 1448f2e35a3aSmrg ],[ 1449f2e35a3aSmrg #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) 1450f2e35a3aSmrg return 0; 1451f2e35a3aSmrg #else 1452f2e35a3aSmrg # error GNU C library is too old 1453f2e35a3aSmrg #endif], 1454f2e35a3aSmrg [cf_cv_gnu_dftsrc_219=yes], 1455f2e35a3aSmrg [cf_cv_gnu_dftsrc_219=no]) 1456f2e35a3aSmrg ]) 1457f2e35a3aSmrg test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" 1458f2e35a3aSmrg else 1459f2e35a3aSmrg cf_cv_gnu_dftsrc_219=maybe 1460f2e35a3aSmrg fi 1461f2e35a3aSmrg 1462f2e35a3aSmrg if test "x$cf_cv_gnu_dftsrc_219" != xyes; then 1463f2e35a3aSmrg 1464f2e35a3aSmrg AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[ 1465f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1466f2e35a3aSmrg #ifndef _XOPEN_SOURCE 1467f2e35a3aSmrg #error expected _XOPEN_SOURCE to be defined 1468f2e35a3aSmrg #endif], 1469f2e35a3aSmrg [cf_cv_gnu_source=no], 1470f2e35a3aSmrg [cf_save="$CPPFLAGS" 1471f2e35a3aSmrg CF_ADD_CFLAGS(-D_GNU_SOURCE) 1472f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1473f2e35a3aSmrg #ifdef _XOPEN_SOURCE 1474f2e35a3aSmrg #error expected _XOPEN_SOURCE to be undefined 1475f2e35a3aSmrg #endif], 1476f2e35a3aSmrg [cf_cv_gnu_source=no], 1477f2e35a3aSmrg [cf_cv_gnu_source=yes]) 1478f2e35a3aSmrg CPPFLAGS="$cf_save" 1479f2e35a3aSmrg ]) 1480f2e35a3aSmrg ]) 1481f2e35a3aSmrg 1482f2e35a3aSmrg if test "$cf_cv_gnu_source" = yes 1483f2e35a3aSmrg then 1484f2e35a3aSmrg AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[ 1485f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE) 1486f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1487f2e35a3aSmrg #ifdef _DEFAULT_SOURCE 1488f2e35a3aSmrg #error expected _DEFAULT_SOURCE to be undefined 1489f2e35a3aSmrg #endif], 1490f2e35a3aSmrg [cf_cv_default_source=no], 1491f2e35a3aSmrg [cf_cv_default_source=yes]) 1492f2e35a3aSmrg ]) 1493f2e35a3aSmrg if test "$cf_cv_default_source" = yes 1494f2e35a3aSmrg then 1495f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) 1496f2e35a3aSmrg fi 1497f2e35a3aSmrg fi 1498f2e35a3aSmrg fi 1499f2e35a3aSmrg 1500913cc679Smrgfi 1501d522f475Smrg])dnl 1502d522f475Smrgdnl --------------------------------------------------------------------------- 1503f2e35a3aSmrgdnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54 1504d522f475Smrgdnl --------------- 1505d522f475Smrgdnl Insert text into the help-message, for readability, from AC_ARG_WITH. 1506d522f475SmrgAC_DEFUN([CF_HELP_MESSAGE], 1507f2e35a3aSmrg[CF_ACVERSION_CHECK(2.53,[],[ 1508f2e35a3aSmrgAC_DIVERT_HELP($1)])dnl 1509d522f475Smrg])dnl 1510d522f475Smrgdnl --------------------------------------------------------------------------- 1511f2e35a3aSmrgdnl CF_IMAKE_CFLAGS version: 34 updated: 2020/12/31 18:40:20 1512d522f475Smrgdnl --------------- 1513d522f475Smrgdnl Use imake to obtain compiler flags. We could, in principle, write tests to 1514d522f475Smrgdnl get these, but if imake is properly configured there is no point in doing 1515d522f475Smrgdnl this. 1516d522f475Smrgdnl 1517d522f475Smrgdnl Parameters (used in constructing a sample Imakefile): 1518d522f475Smrgdnl $1 = optional value to append to $IMAKE_CFLAGS 1519d522f475Smrgdnl $2 = optional value to append to $IMAKE_LOADFLAGS 1520d522f475SmrgAC_DEFUN([CF_IMAKE_CFLAGS], 1521d522f475Smrg[ 1522d522f475SmrgAC_PATH_PROGS(IMAKE,xmkmf imake) 1523d522f475Smrg 1524d522f475Smrgif test -n "$IMAKE" ; then 1525d522f475Smrg 152601037d57Smrgcase $IMAKE in 152701037d57Smrg(*/imake) 152801037d57Smrg cf_imake_opts="-DUseInstalled=YES" 1529d522f475Smrg ;; 153001037d57Smrg(*/util/xmkmf) 1531d522f475Smrg # A single parameter tells xmkmf where the config-files are: 1532f2e35a3aSmrg cf_imake_opts="`echo "$IMAKE"|sed -e s,/config/util/xmkmf,,`" 1533d522f475Smrg ;; 153401037d57Smrg(*) 1535d522f475Smrg cf_imake_opts= 1536d522f475Smrg ;; 1537d522f475Smrgesac 1538d522f475Smrg 1539d522f475Smrg# If it's installed properly, imake (or its wrapper, xmkmf) will point to the 1540d522f475Smrg# config directory. 1541d522f475Smrgif mkdir conftestdir; then 1542d522f475Smrg CDPATH=; export CDPATH 1543f2e35a3aSmrg cf_makefile=`cd "$srcdir" || exit;pwd`/Imakefile 1544d522f475Smrg cd conftestdir 1545d522f475Smrg 1546d522f475Smrg cat >fix_cflags.sed <<'CF_EOF' 1547d522f475Smrgs/\\//g 1548d522f475Smrgs/[[ ]][[ ]]*/ /g 1549d522f475Smrgs/"//g 1550d522f475Smrg:pack 1551d522f475Smrgs/\(=[[^ ]][[^ ]]*\) \([[^-]]\)/\1 \2/g 1552d522f475Smrgt pack 1553d522f475Smrgs/\(-D[[a-zA-Z0-9_]][[a-zA-Z0-9_]]*\)=\([[^\'0-9 ]][[^ ]]*\)/\1='\\"\2\\"'/g 1554d522f475Smrgs/^IMAKE[[ ]]/IMAKE_CFLAGS="/ 1555d522f475Smrgs/ / /g 1556d522f475Smrgs/$/"/ 1557d522f475SmrgCF_EOF 1558d522f475Smrg 1559d522f475Smrg cat >fix_lflags.sed <<'CF_EOF' 1560d522f475Smrgs/^IMAKE[[ ]]*/IMAKE_LOADFLAGS="/ 1561d522f475Smrgs/$/"/ 1562d522f475SmrgCF_EOF 1563d522f475Smrg 1564d522f475Smrg echo >./Imakefile 1565f2e35a3aSmrg test -f "$cf_makefile" && cat "$cf_makefile" >>./Imakefile 1566d522f475Smrg 1567d522f475Smrg cat >> ./Imakefile <<'CF_EOF' 1568d522f475Smrgfindstddefs: 156920d2c4d2Smrg @echo IMAKE ${ALLDEFINES}ifelse([$1],,,[ $1]) | sed -f fix_cflags.sed 157020d2c4d2Smrg @echo IMAKE ${EXTRA_LOAD_FLAGS}ifelse([$2],,,[ $2]) | sed -f fix_lflags.sed 1571d522f475SmrgCF_EOF 1572d522f475Smrg 1573f2e35a3aSmrg if ( $IMAKE "$cf_imake_opts" 1>/dev/null 2>&AC_FD_CC && test -f Makefile) 1574d522f475Smrg then 1575d522f475Smrg CF_VERBOSE(Using $IMAKE $cf_imake_opts) 1576d522f475Smrg else 1577d522f475Smrg # sometimes imake doesn't have the config path compiled in. Find it. 1578d522f475Smrg cf_config= 1579d522f475Smrg for cf_libpath in $X_LIBS $LIBS ; do 1580f2e35a3aSmrg case "$cf_libpath" in 158101037d57Smrg (-L*) 1582f2e35a3aSmrg cf_libpath=`echo ".$cf_libpath" | sed -e 's/^...//'` 1583f2e35a3aSmrg cf_libpath="$cf_libpath/X11/config" 1584f2e35a3aSmrg if test -d "$cf_libpath" ; then 1585f2e35a3aSmrg cf_config="$cf_libpath" 1586d522f475Smrg break 1587d522f475Smrg fi 1588d522f475Smrg ;; 1589d522f475Smrg esac 1590d522f475Smrg done 1591d522f475Smrg if test -z "$cf_config" ; then 1592d522f475Smrg AC_MSG_WARN(Could not find imake config-directory) 1593d522f475Smrg else 1594d522f475Smrg cf_imake_opts="$cf_imake_opts -I$cf_config" 1595f2e35a3aSmrg if ( "$IMAKE" -v "$cf_imake_opts" 2>&AC_FD_CC) 1596d522f475Smrg then 1597d522f475Smrg CF_VERBOSE(Using $IMAKE $cf_config) 1598d522f475Smrg else 1599d522f475Smrg AC_MSG_WARN(Cannot run $IMAKE) 1600d522f475Smrg fi 1601d522f475Smrg fi 1602d522f475Smrg fi 1603d522f475Smrg 1604d522f475Smrg # GNU make sometimes prints "make[1]: Entering...", which 1605d522f475Smrg # would confuse us. 1606f2e35a3aSmrg eval "`make findstddefs 2>/dev/null | grep -v make`" 1607d522f475Smrg 1608d522f475Smrg cd .. 1609d522f475Smrg rm -rf conftestdir 1610d522f475Smrg 1611d522f475Smrg # We use ${ALLDEFINES} rather than ${STD_DEFINES} because the former 1612d522f475Smrg # declares XTFUNCPROTO there. However, some vendors (e.g., SGI) have 1613d522f475Smrg # modified it to support site.cf, adding a kludge for the /usr/include 1614d522f475Smrg # directory. Try to filter that out, otherwise gcc won't find its 1615d522f475Smrg # headers. 1616d522f475Smrg if test -n "$GCC" ; then 1617d522f475Smrg if test -n "$IMAKE_CFLAGS" ; then 1618d522f475Smrg cf_nostdinc="" 1619d522f475Smrg cf_std_incl="" 1620d522f475Smrg cf_cpp_opts="" 1621d522f475Smrg for cf_opt in $IMAKE_CFLAGS 1622d522f475Smrg do 1623d522f475Smrg case "$cf_opt" in 162401037d57Smrg (-nostdinc) 1625d522f475Smrg cf_nostdinc="$cf_opt" 1626d522f475Smrg ;; 162701037d57Smrg (-I/usr/include) 1628d522f475Smrg cf_std_incl="$cf_opt" 1629d522f475Smrg ;; 163001037d57Smrg (*) 1631d522f475Smrg cf_cpp_opts="$cf_cpp_opts $cf_opt" 1632d522f475Smrg ;; 1633d522f475Smrg esac 1634d522f475Smrg done 1635d522f475Smrg if test -z "$cf_nostdinc" ; then 1636d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts $cf_std_incl" 1637d522f475Smrg elif test -z "$cf_std_incl" ; then 1638d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts $cf_nostdinc" 1639d522f475Smrg else 1640d522f475Smrg CF_VERBOSE(suppressed \"$cf_nostdinc\" and \"$cf_std_incl\") 1641d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts" 1642d522f475Smrg fi 1643d522f475Smrg fi 1644d522f475Smrg fi 1645d522f475Smrgfi 1646d522f475Smrg 1647d522f475Smrg# Some imake configurations define PROJECTROOT with an empty value. Remove 1648d522f475Smrg# the empty definition. 1649d522f475Smrgcase $IMAKE_CFLAGS in 165001037d57Smrg(*-DPROJECTROOT=/*) 1651d522f475Smrg ;; 165201037d57Smrg(*) 1653d522f475Smrg IMAKE_CFLAGS=`echo "$IMAKE_CFLAGS" |sed -e "s,-DPROJECTROOT=[[ ]], ,"` 1654d522f475Smrg ;; 1655d522f475Smrgesac 1656d522f475Smrg 1657d522f475Smrgfi 1658d522f475Smrg 1659d522f475SmrgCF_VERBOSE(IMAKE_CFLAGS $IMAKE_CFLAGS) 1660d522f475SmrgCF_VERBOSE(IMAKE_LOADFLAGS $IMAKE_LOADFLAGS) 1661d522f475Smrg 1662d522f475SmrgAC_SUBST(IMAKE_CFLAGS) 1663d522f475SmrgAC_SUBST(IMAKE_LOADFLAGS) 1664d522f475Smrg])dnl 1665d522f475Smrgdnl --------------------------------------------------------------------------- 1666ae137402Smrgdnl CF_INPUT_METHOD version: 5 updated: 2021/06/07 17:39:17 1667d522f475Smrgdnl --------------- 1668d522f475Smrgdnl Check if the X libraries support input-method 1669d522f475SmrgAC_DEFUN([CF_INPUT_METHOD], 1670d522f475Smrg[ 1671d522f475SmrgAC_CACHE_CHECK([if X libraries support input-method],cf_cv_input_method,[ 1672d522f475SmrgAC_TRY_LINK([ 1673d522f475Smrg#include <X11/IntrinsicP.h> 1674d522f475Smrg#include <X11/Xatom.h> 1675d522f475Smrg#include <X11/Xutil.h> 1676d522f475Smrg#include <X11/Xmu/Atoms.h> 1677d522f475Smrg#include <X11/Xmu/Converters.h> 1678d522f475Smrg#include <X11/Xaw/XawImP.h> 1679d522f475Smrg],[ 1680d522f475Smrg{ 1681d522f475Smrg XIM xim; 1682d522f475Smrg XIMStyles *xim_styles = 0; 1683d522f475Smrg XIMStyle input_style; 1684ae137402Smrg Widget w = XtCreateWidget("none", (WidgetClass)0, None, (ArgList)0, 0); 1685d522f475Smrg 1686d522f475Smrg XSetLocaleModifiers("@im=none"); 1687d522f475Smrg xim = XOpenIM(XtDisplay(w), NULL, NULL, NULL); 1688d522f475Smrg XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL); 1689d522f475Smrg XCloseIM(xim); 1690d522f475Smrg input_style = (XIMPreeditNothing | XIMStatusNothing); 1691f2e35a3aSmrg (void)xim_styles; 1692f2e35a3aSmrg (void)input_style; 1693d522f475Smrg} 1694d522f475Smrg], 1695d522f475Smrg[cf_cv_input_method=yes], 1696d522f475Smrg[cf_cv_input_method=no])]) 1697d522f475Smrg])dnl 1698d522f475Smrgdnl --------------------------------------------------------------------------- 1699f2e35a3aSmrgdnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59 1700d522f475Smrgdnl ----------------- 1701d522f475Smrgdnl Check if the given compiler is really the Intel compiler for Linux. It 1702d522f475Smrgdnl tries to imitate gcc, but does not return an error when it finds a mismatch 1703d522f475Smrgdnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. 1704d522f475Smrgdnl 1705d522f475Smrgdnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to 1706d522f475Smrgdnl ensure that it is not mistaken for gcc/g++. It is normally invoked from 1707d522f475Smrgdnl the wrappers for gcc and g++ warnings. 1708d522f475Smrgdnl 1709d522f475Smrgdnl $1 = GCC (default) or GXX 1710d522f475Smrgdnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS 1711d522f475Smrgdnl $3 = CFLAGS (default) or CXXFLAGS 1712d522f475SmrgAC_DEFUN([CF_INTEL_COMPILER],[ 17130bd37d32SmrgAC_REQUIRE([AC_CANONICAL_HOST]) 171420d2c4d2Smrgifelse([$2],,INTEL_COMPILER,[$2])=no 1715d522f475Smrg 171620d2c4d2Smrgif test "$ifelse([$1],,[$1],GCC)" = yes ; then 1717f2e35a3aSmrg case "$host_os" in 171801037d57Smrg (linux*|gnu*) 171920d2c4d2Smrg AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler) 172020d2c4d2Smrg cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" 172120d2c4d2Smrg ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc" 1722d522f475Smrg AC_TRY_COMPILE([],[ 1723d522f475Smrg#ifdef __INTEL_COMPILER 1724d522f475Smrg#else 1725d522f475Smrgmake an error 1726d522f475Smrg#endif 172720d2c4d2Smrg],[ifelse([$2],,INTEL_COMPILER,[$2])=yes 1728894e0ac8Smrgcf_save_CFLAGS="$cf_save_CFLAGS -we147" 1729d522f475Smrg],[]) 173020d2c4d2Smrg ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" 173120d2c4d2Smrg AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) 1732d522f475Smrg ;; 1733d522f475Smrg esac 1734d522f475Smrgfi 1735d522f475Smrg])dnl 1736d522f475Smrgdnl --------------------------------------------------------------------------- 1737f2e35a3aSmrgdnl CF_LASTLOG version: 7 updated: 2021/01/02 09:31:20 1738d522f475Smrgdnl ---------- 1739d522f475Smrgdnl Check for header defining _PATH_LASTLOG, or failing that, see if the lastlog 1740d522f475Smrgdnl file exists. 1741d522f475SmrgAC_DEFUN([CF_LASTLOG], 1742d522f475Smrg[ 1743d522f475SmrgAC_CHECK_HEADERS(lastlog.h paths.h) 1744d522f475SmrgAC_CACHE_CHECK(for lastlog path,cf_cv_path_lastlog,[ 1745d522f475SmrgAC_TRY_COMPILE([ 1746d522f475Smrg#include <sys/types.h> 1747d522f475Smrg#ifdef HAVE_LASTLOG_H 1748d522f475Smrg#include <lastlog.h> 1749d522f475Smrg#else 1750d522f475Smrg#ifdef HAVE_PATHS_H 1751d522f475Smrg#include <paths.h> 1752d522f475Smrg#endif 1753f2e35a3aSmrg#endif],[char *path = _PATH_LASTLOG; (void)path], 1754d522f475Smrg [cf_cv_path_lastlog="_PATH_LASTLOG"], 1755d522f475Smrg [if test -f /usr/adm/lastlog ; then 1756d522f475Smrg cf_cv_path_lastlog=/usr/adm/lastlog 1757d522f475Smrg else 1758d522f475Smrg cf_cv_path_lastlog=no 1759d522f475Smrg fi]) 1760d522f475Smrg]) 1761f2e35a3aSmrgtest "$cf_cv_path_lastlog" != no && AC_DEFINE(USE_LASTLOG,1,[Define to 1 if we can define lastlog pathname]) 1762d522f475Smrg])dnl 1763d522f475Smrgdnl --------------------------------------------------------------------------- 1764f2e35a3aSmrgdnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04 176520d2c4d2Smrgdnl --------------- 176620d2c4d2Smrgdnl For the given system and compiler, find the compiler flags to pass to the 176720d2c4d2Smrgdnl loader to use the "rpath" feature. 176820d2c4d2SmrgAC_DEFUN([CF_LD_RPATH_OPT], 176920d2c4d2Smrg[ 177020d2c4d2SmrgAC_REQUIRE([CF_CHECK_CACHE]) 177120d2c4d2Smrg 177220d2c4d2SmrgLD_RPATH_OPT= 1773f2e35a3aSmrgif test "x$cf_cv_enable_rpath" != xno 1774f2e35a3aSmrgthen 1775f2e35a3aSmrg AC_MSG_CHECKING(for an rpath option) 1776f2e35a3aSmrg case "$cf_cv_system_name" in 1777f2e35a3aSmrg (irix*) 1778f2e35a3aSmrg if test "$GCC" = yes; then 1779f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1780f2e35a3aSmrg else 1781f2e35a3aSmrg LD_RPATH_OPT="-rpath " 1782f2e35a3aSmrg fi 1783f2e35a3aSmrg ;; 1784f2e35a3aSmrg (linux*|gnu*|k*bsd*-gnu|freebsd*) 178520d2c4d2Smrg LD_RPATH_OPT="-Wl,-rpath," 1786f2e35a3aSmrg ;; 1787f2e35a3aSmrg (openbsd[[2-9]].*|mirbsd*) 1788f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1789f2e35a3aSmrg ;; 1790f2e35a3aSmrg (dragonfly*) 179120d2c4d2Smrg LD_RPATH_OPT="-rpath " 1792f2e35a3aSmrg ;; 1793f2e35a3aSmrg (netbsd*) 1794f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1795f2e35a3aSmrg ;; 1796f2e35a3aSmrg (osf*|mls+*) 1797f2e35a3aSmrg LD_RPATH_OPT="-rpath " 1798f2e35a3aSmrg ;; 1799f2e35a3aSmrg (solaris2*) 1800f2e35a3aSmrg LD_RPATH_OPT="-R" 1801f2e35a3aSmrg ;; 1802f2e35a3aSmrg (*) 1803f2e35a3aSmrg ;; 1804f2e35a3aSmrg esac 1805f2e35a3aSmrg AC_MSG_RESULT($LD_RPATH_OPT) 1806f2e35a3aSmrg 1807f2e35a3aSmrg case "x$LD_RPATH_OPT" in 1808f2e35a3aSmrg (x-R*) 1809f2e35a3aSmrg AC_MSG_CHECKING(if we need a space after rpath option) 1810f2e35a3aSmrg cf_save_LIBS="$LIBS" 1811f2e35a3aSmrg CF_ADD_LIBS(${LD_RPATH_OPT}$libdir) 1812f2e35a3aSmrg AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes) 1813f2e35a3aSmrg LIBS="$cf_save_LIBS" 1814f2e35a3aSmrg AC_MSG_RESULT($cf_rpath_space) 1815f2e35a3aSmrg test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " 1816f2e35a3aSmrg ;; 1817f2e35a3aSmrg esac 1818f2e35a3aSmrgfi 181920d2c4d2Smrg])dnl 182020d2c4d2Smrgdnl --------------------------------------------------------------------------- 18216879286fSmrgdnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 182220d2c4d2Smrgdnl ------------ 182320d2c4d2Smrgdnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have 182420d2c4d2Smrgdnl a monocase filesystem. 182520d2c4d2SmrgAC_DEFUN([CF_MAKE_TAGS],[ 182620d2c4d2SmrgAC_REQUIRE([CF_MIXEDCASE_FILENAMES]) 182720d2c4d2Smrg 182820d2c4d2SmrgAC_CHECK_PROGS(CTAGS, exctags ctags) 182920d2c4d2SmrgAC_CHECK_PROGS(ETAGS, exetags etags) 183020d2c4d2Smrg 18316879286fSmrgAC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) 183220d2c4d2Smrg 183320d2c4d2Smrgif test "$cf_cv_mixedcase" = yes ; then 18346879286fSmrg AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) 183520d2c4d2Smrgelse 183620d2c4d2Smrg MAKE_UPPER_TAGS=no 183720d2c4d2Smrgfi 183820d2c4d2Smrg 183920d2c4d2Smrgif test "$MAKE_UPPER_TAGS" = yes ; then 184020d2c4d2Smrg MAKE_UPPER_TAGS= 184120d2c4d2Smrgelse 184220d2c4d2Smrg MAKE_UPPER_TAGS="#" 184320d2c4d2Smrgfi 184420d2c4d2Smrg 184520d2c4d2Smrgif test "$MAKE_LOWER_TAGS" = yes ; then 184620d2c4d2Smrg MAKE_LOWER_TAGS= 184720d2c4d2Smrgelse 184820d2c4d2Smrg MAKE_LOWER_TAGS="#" 184920d2c4d2Smrgfi 185020d2c4d2Smrg 185120d2c4d2SmrgAC_SUBST(CTAGS) 185220d2c4d2SmrgAC_SUBST(ETAGS) 185320d2c4d2Smrg 185420d2c4d2SmrgAC_SUBST(MAKE_UPPER_TAGS) 185520d2c4d2SmrgAC_SUBST(MAKE_LOWER_TAGS) 185620d2c4d2Smrg])dnl 185720d2c4d2Smrgdnl --------------------------------------------------------------------------- 1858f2e35a3aSmrgdnl CF_MATH_LIB version: 10 updated: 2020/12/31 18:40:20 1859894e0ac8Smrgdnl ----------- 1860894e0ac8Smrgdnl Checks for libraries. At least one UNIX system, Apple Macintosh 1861894e0ac8Smrgdnl Rhapsody 5.5, does not have -lm. We cannot use the simpler 1862894e0ac8Smrgdnl AC_CHECK_LIB(m,sin), because that fails for C++. 1863894e0ac8SmrgAC_DEFUN([CF_MATH_LIB], 1864894e0ac8Smrg[ 1865894e0ac8SmrgAC_CACHE_CHECK(if -lm needed for math functions, 1866894e0ac8Smrg cf_cv_need_libm,[ 1867894e0ac8Smrg AC_TRY_LINK([ 1868894e0ac8Smrg #include <stdio.h> 1869913cc679Smrg #include <stdlib.h> 1870894e0ac8Smrg #include <math.h> 1871894e0ac8Smrg ], 1872f2e35a3aSmrg [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)], 1873894e0ac8Smrg [cf_cv_need_libm=no], 1874894e0ac8Smrg [cf_cv_need_libm=yes])]) 1875894e0ac8Smrgif test "$cf_cv_need_libm" = yes 1876894e0ac8Smrgthen 1877894e0ac8Smrgifelse($1,,[ 1878894e0ac8Smrg CF_ADD_LIB(m) 1879894e0ac8Smrg],[$1=-lm]) 1880894e0ac8Smrgfi 1881894e0ac8Smrg]) 1882894e0ac8Smrgdnl --------------------------------------------------------------------------- 1883f2e35a3aSmrgdnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59 188420d2c4d2Smrgdnl ---------------------- 188520d2c4d2Smrgdnl Check if the file-system supports mixed-case filenames. If we're able to 188620d2c4d2Smrgdnl create a lowercase name and see it as uppercase, it doesn't support that. 188720d2c4d2SmrgAC_DEFUN([CF_MIXEDCASE_FILENAMES], 188820d2c4d2Smrg[ 188920d2c4d2SmrgAC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ 189020d2c4d2Smrgif test "$cross_compiling" = yes ; then 1891f2e35a3aSmrg case "$target_alias" in 1892f2e35a3aSmrg (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) 189320d2c4d2Smrg cf_cv_mixedcase=no 189420d2c4d2Smrg ;; 189501037d57Smrg (*) 189620d2c4d2Smrg cf_cv_mixedcase=yes 189720d2c4d2Smrg ;; 189820d2c4d2Smrg esac 189920d2c4d2Smrgelse 190020d2c4d2Smrg rm -f conftest CONFTEST 190120d2c4d2Smrg echo test >conftest 190220d2c4d2Smrg if test -f CONFTEST ; then 190320d2c4d2Smrg cf_cv_mixedcase=no 190420d2c4d2Smrg else 190520d2c4d2Smrg cf_cv_mixedcase=yes 190620d2c4d2Smrg fi 190720d2c4d2Smrg rm -f conftest CONFTEST 190820d2c4d2Smrgfi 190920d2c4d2Smrg]) 19100bd37d32Smrgtest "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.]) 191120d2c4d2Smrg])dnl 191220d2c4d2Smrgdnl --------------------------------------------------------------------------- 19136879286fSmrgdnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 1914d522f475Smrgdnl ---------- 1915d522f475Smrgdnl Write a debug message to config.log, along with the line number in the 1916d522f475Smrgdnl configure script. 1917d522f475SmrgAC_DEFUN([CF_MSG_LOG],[ 19186879286fSmrgecho "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC 1919d522f475Smrg])dnl 1920d522f475Smrgdnl --------------------------------------------------------------------------- 1921a5ae21e4Smrgdnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41 19220bd37d32Smrgdnl ------------------ 19230bd37d32Smrgdnl see CF_WITH_NO_LEAKS 1924a5ae21e4Smrgdnl 1925a5ae21e4Smrgdnl $1 = option/name 1926a5ae21e4Smrgdnl $2 = help-text 1927a5ae21e4Smrgdnl $3 = symbol to define if the option is set 1928a5ae21e4Smrgdnl $4 = additional actions to take if the option is set 19290bd37d32SmrgAC_DEFUN([CF_NO_LEAKS_OPTION],[ 19300bd37d32SmrgAC_MSG_CHECKING(if you want to use $1 for testing) 19310bd37d32SmrgAC_ARG_WITH($1, 19320bd37d32Smrg [$2], 1933a5ae21e4Smrg [case "x$withval" in 1934a5ae21e4Smrg (x|xno) ;; 1935a5ae21e4Smrg (*) 1936a5ae21e4Smrg : "${with_cflags:=-g}" 1937a5ae21e4Smrg : "${enable_leaks:=no}" 1938a5ae21e4Smrg with_$1=yes 1939a5ae21e4Smrg AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[ 19400bd37d32Smrg $4 19410bd37d32Smrg]) 1942a5ae21e4Smrg ;; 1943a5ae21e4Smrg esac], 19440bd37d32Smrg [with_$1=]) 19450bd37d32SmrgAC_MSG_RESULT(${with_$1:-no}) 19460bd37d32Smrg 1947f2e35a3aSmrgcase ".$with_cflags" in 194801037d57Smrg(.*-g*) 194901037d57Smrg case .$CFLAGS in 195001037d57Smrg (.*-g*) 19510bd37d32Smrg ;; 195201037d57Smrg (*) 19530bd37d32Smrg CF_ADD_CFLAGS([-g]) 19540bd37d32Smrg ;; 19550bd37d32Smrg esac 19560bd37d32Smrg ;; 19570bd37d32Smrgesac 19580bd37d32Smrg])dnl 19590bd37d32Smrgdnl --------------------------------------------------------------------------- 1960f2e35a3aSmrgdnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04 1961956cc18dSsnjdnl ---------- 19620bd37d32Smrgdnl Provide a value for the $PATH and similar separator (or amend the value 19630bd37d32Smrgdnl as provided in autoconf 2.5x). 1964956cc18dSsnjAC_DEFUN([CF_PATHSEP], 1965956cc18dSsnj[ 19660bd37d32Smrg AC_MSG_CHECKING(for PATH separator) 1967f2e35a3aSmrg case "$cf_cv_system_name" in 196801037d57Smrg (os2*) PATH_SEPARATOR=';' ;; 196901037d57Smrg (*) ${PATH_SEPARATOR:=':'} ;; 1970956cc18dSsnj esac 197120d2c4d2Smrgifelse([$1],,,[$1=$PATH_SEPARATOR]) 1972956cc18dSsnj AC_SUBST(PATH_SEPARATOR) 19730bd37d32Smrg AC_MSG_RESULT($PATH_SEPARATOR) 1974956cc18dSsnj])dnl 1975956cc18dSsnjdnl --------------------------------------------------------------------------- 1976f2e35a3aSmrgdnl CF_PATH_PROG version: 12 updated: 2021/01/02 09:31:20 1977d522f475Smrgdnl ------------ 1978d522f475Smrgdnl Check for a given program, defining corresponding symbol. 1979d522f475Smrgdnl $1 = environment variable, which is suffixed by "_PATH" in the #define. 1980d522f475Smrgdnl $2 = program name to find. 1981d522f475Smrgdnl $3 = optional list of additional program names to test. 1982f2e35a3aSmrgdnl $4 = $PATH 1983d522f475Smrgdnl 1984d522f475Smrgdnl If there is more than one token in the result, #define the remaining tokens 1985d522f475Smrgdnl to $1_ARGS. We need this for 'install' in particular. 1986d522f475Smrgdnl 1987d522f475Smrgdnl FIXME: we should allow this to be overridden by environment variables 1988d522f475Smrgdnl 1989d522f475SmrgAC_DEFUN([CF_PATH_PROG],[ 1990956cc18dSsnjAC_REQUIRE([CF_PATHSEP]) 1991f2e35a3aSmrgtest -z "[$]$1" && $1="$2" 1992f2e35a3aSmrgAC_PATH_PROGS($1,[$]$1 $2 ifelse($3,,,$3),[$]$1, ifelse($4,,,$4)) 1993d522f475Smrg 1994d522f475Smrgcf_path_prog="" 1995d522f475Smrgcf_path_args="" 19966879286fSmrgIFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR" 1997d522f475Smrgfor cf_temp in $ac_cv_path_$1 1998d522f475Smrgdo 1999d522f475Smrg if test -z "$cf_path_prog" ; then 2000d522f475Smrg if test "$with_full_paths" = yes ; then 2001d522f475Smrg CF_PATH_SYNTAX(cf_temp,break) 2002d522f475Smrg cf_path_prog="$cf_temp" 2003d522f475Smrg else 2004f2e35a3aSmrg cf_path_prog="`basename "$cf_temp"`" 2005d522f475Smrg fi 2006d522f475Smrg elif test -z "$cf_path_args" ; then 2007d522f475Smrg cf_path_args="$cf_temp" 2008d522f475Smrg else 2009d522f475Smrg cf_path_args="$cf_path_args $cf_temp" 2010d522f475Smrg fi 2011d522f475Smrgdone 2012d522f475SmrgIFS="$cf_save_ifs" 2013d522f475Smrg 2014d522f475Smrgif test -n "$cf_path_prog" ; then 2015d522f475Smrg CF_MSG_LOG(defining path for ${cf_path_prog}) 20160bd37d32Smrg AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog",Define to pathname $1) 20170bd37d32Smrg test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args",Define to provide args for $1) 2018d522f475Smrgfi 2019d522f475Smrg])dnl 2020d522f475Smrgdnl --------------------------------------------------------------------------- 2021f2e35a3aSmrgdnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20 2022d522f475Smrgdnl -------------- 2023d522f475Smrgdnl Check the argument to see that it looks like a pathname. Rewrite it if it 2024d522f475Smrgdnl begins with one of the prefix/exec_prefix variables, and then again if the 2025d522f475Smrgdnl result begins with 'NONE'. This is necessary to work around autoconf's 2026d522f475Smrgdnl delayed evaluation of those symbols. 2027d522f475SmrgAC_DEFUN([CF_PATH_SYNTAX],[ 2028d522f475Smrgif test "x$prefix" != xNONE; then 20292e4f8982Smrg cf_path_syntax="$prefix" 2030d522f475Smrgelse 20312e4f8982Smrg cf_path_syntax="$ac_default_prefix" 2032d522f475Smrgfi 2033d522f475Smrg 203401037d57Smrgcase ".[$]$1" in 203501037d57Smrg(.\[$]\(*\)*|.\'*\'*) 20362e4f8982Smrg ;; 203701037d57Smrg(..|./*|.\\*) 20382e4f8982Smrg ;; 203901037d57Smrg(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX 20402e4f8982Smrg ;; 2041f2e35a3aSmrg(.\[$]\{*prefix\}*|.\[$]\{*dir\}*) 20422e4f8982Smrg eval $1="[$]$1" 20432e4f8982Smrg case ".[$]$1" in 20442e4f8982Smrg (.NONE/*) 2045f2e35a3aSmrg $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` 20462e4f8982Smrg ;; 20472e4f8982Smrg esac 20482e4f8982Smrg ;; 204901037d57Smrg(.no|.NONE/*) 2050f2e35a3aSmrg $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` 20512e4f8982Smrg ;; 205201037d57Smrg(*) 20532e4f8982Smrg ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) 20542e4f8982Smrg ;; 2055d522f475Smrgesac 2056d522f475Smrg])dnl 2057d522f475Smrgdnl --------------------------------------------------------------------------- 20584419d26bSmrgdnl CF_PKG_CONFIG version: 12 updated: 2021/10/10 20:18:09 2059956cc18dSsnjdnl ------------- 2060956cc18dSsnjdnl Check for the package-config program, unless disabled by command-line. 20614419d26bSmrgdnl 20624419d26bSmrgdnl Sets $PKG_CONFIG to the pathname of the pkg-config program. 2063956cc18dSsnjAC_DEFUN([CF_PKG_CONFIG], 2064956cc18dSsnj[ 2065956cc18dSsnjAC_MSG_CHECKING(if you want to use pkg-config) 2066956cc18dSsnjAC_ARG_WITH(pkg-config, 2067956cc18dSsnj [ --with-pkg-config{=path} enable/disable use of pkg-config], 2068956cc18dSsnj [cf_pkg_config=$withval], 2069956cc18dSsnj [cf_pkg_config=yes]) 2070956cc18dSsnjAC_MSG_RESULT($cf_pkg_config) 2071956cc18dSsnj 2072f2e35a3aSmrgcase "$cf_pkg_config" in 207301037d57Smrg(no) 2074956cc18dSsnj PKG_CONFIG=none 2075956cc18dSsnj ;; 207601037d57Smrg(yes) 2077e39b573cSmrg CF_ACVERSION_CHECK(2.52, 2078e39b573cSmrg [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)], 2079e39b573cSmrg [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)]) 2080956cc18dSsnj ;; 208101037d57Smrg(*) 2082956cc18dSsnj PKG_CONFIG=$withval 2083956cc18dSsnj ;; 2084956cc18dSsnjesac 2085956cc18dSsnj 2086956cc18dSsnjtest -z "$PKG_CONFIG" && PKG_CONFIG=none 2087956cc18dSsnjif test "$PKG_CONFIG" != none ; then 2088956cc18dSsnj CF_PATH_SYNTAX(PKG_CONFIG) 20892e4f8982Smrgelif test "x$cf_pkg_config" != xno ; then 209001037d57Smrg AC_MSG_WARN(pkg-config is not installed) 2091956cc18dSsnjfi 2092956cc18dSsnj 2093956cc18dSsnjAC_SUBST(PKG_CONFIG) 2094956cc18dSsnj])dnl 2095956cc18dSsnjdnl --------------------------------------------------------------------------- 2096f2e35a3aSmrgdnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17 2097d522f475Smrgdnl ----------------- 2098d522f475Smrgdnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. 2099d522f475Smrgdnl 2100d522f475Smrgdnl POSIX.1-1990 _POSIX_SOURCE 2101d522f475Smrgdnl POSIX.1-1990 and _POSIX_SOURCE and 2102d522f475Smrgdnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 2103d522f475Smrgdnl Bindings Option 2104d522f475Smrgdnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L 2105d522f475Smrgdnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L 2106d522f475Smrgdnl X/Open 2000 _POSIX_C_SOURCE=200112L 2107d522f475Smrgdnl 2108d522f475Smrgdnl Parameters: 2109d522f475Smrgdnl $1 is the nominal value for _POSIX_C_SOURCE 2110d522f475SmrgAC_DEFUN([CF_POSIX_C_SOURCE], 2111f2e35a3aSmrg[AC_REQUIRE([CF_POSIX_VISIBLE])dnl 2112f2e35a3aSmrg 2113f2e35a3aSmrgif test "$cf_cv_posix_visible" = no; then 2114f2e35a3aSmrg 211520d2c4d2Smrgcf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) 2116d522f475Smrg 2117d522f475Smrgcf_save_CFLAGS="$CFLAGS" 2118d522f475Smrgcf_save_CPPFLAGS="$CPPFLAGS" 2119d522f475Smrg 2120d522f475SmrgCF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) 2121d522f475SmrgCF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE) 2122d522f475Smrg 2123d522f475SmrgAC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ 2124d522f475Smrg CF_MSG_LOG(if the symbol is already defined go no further) 2125d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2126d522f475Smrg#ifndef _POSIX_C_SOURCE 2127d522f475Smrgmake an error 2128d522f475Smrg#endif], 2129d522f475Smrg [cf_cv_posix_c_source=no], 2130d522f475Smrg [cf_want_posix_source=no 213101037d57Smrg case .$cf_POSIX_C_SOURCE in 213201037d57Smrg (.[[12]]??*) 2133d522f475Smrg cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 2134d522f475Smrg ;; 213501037d57Smrg (.2) 2136d522f475Smrg cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 2137d522f475Smrg cf_want_posix_source=yes 2138d522f475Smrg ;; 213901037d57Smrg (.*) 2140d522f475Smrg cf_want_posix_source=yes 2141d522f475Smrg ;; 2142d522f475Smrg esac 2143d522f475Smrg if test "$cf_want_posix_source" = yes ; then 2144d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2145d522f475Smrg#ifdef _POSIX_SOURCE 2146d522f475Smrgmake an error 2147d522f475Smrg#endif],[], 2148d522f475Smrg cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE") 2149d522f475Smrg fi 2150d522f475Smrg CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE) 2151d522f475Smrg CFLAGS="$cf_trim_CFLAGS" 2152f2e35a3aSmrg CPPFLAGS="$cf_trim_CPPFLAGS" 2153f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source) 2154d522f475Smrg CF_MSG_LOG(if the second compile does not leave our definition intact error) 2155d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2156d522f475Smrg#ifndef _POSIX_C_SOURCE 2157d522f475Smrgmake an error 2158d522f475Smrg#endif],, 2159d522f475Smrg [cf_cv_posix_c_source=no]) 2160d522f475Smrg CFLAGS="$cf_save_CFLAGS" 2161d522f475Smrg CPPFLAGS="$cf_save_CPPFLAGS" 2162d522f475Smrg ]) 2163d522f475Smrg]) 2164d522f475Smrg 2165d522f475Smrgif test "$cf_cv_posix_c_source" != no ; then 2166d522f475Smrg CFLAGS="$cf_trim_CFLAGS" 2167d522f475Smrg CPPFLAGS="$cf_trim_CPPFLAGS" 216820d2c4d2Smrg CF_ADD_CFLAGS($cf_cv_posix_c_source) 2169d522f475Smrgfi 2170d522f475Smrg 2171f2e35a3aSmrgfi # cf_cv_posix_visible 2172f2e35a3aSmrg 2173d522f475Smrg])dnl 2174d522f475Smrgdnl --------------------------------------------------------------------------- 2175f2e35a3aSmrgdnl CF_POSIX_SAVED_IDS version: 9 updated: 2020/03/10 18:53:47 2176d522f475Smrgdnl ------------------ 2177d522f475Smrgdnl 2178d522f475Smrgdnl Check first if saved-ids are always supported. Some systems 2179d522f475Smrgdnl may require runtime checks. 2180d522f475SmrgAC_DEFUN([CF_POSIX_SAVED_IDS], 2181d522f475Smrg[ 2182d522f475SmrgAC_CHECK_HEADERS( \ 2183d522f475Smrgsys/param.h \ 2184d522f475Smrg) 2185d522f475Smrg 2186d522f475SmrgAC_CACHE_CHECK(if POSIX saved-ids are supported,cf_cv_posix_saved_ids,[ 2187d522f475SmrgAC_TRY_LINK( 2188d522f475Smrg[ 2189d522f475Smrg#include <unistd.h> 2190d522f475Smrg#ifdef HAVE_SYS_PARAM_H 2191d522f475Smrg#include <sys/param.h> /* this may define "BSD" */ 2192d522f475Smrg#endif 2193d522f475Smrg],[ 2194d522f475Smrg#if defined(_POSIX_SAVED_IDS) && (_POSIX_SAVED_IDS > 0) 2195d522f475Smrg void *p = (void *) seteuid; 2196d522f475Smrg int x = seteuid(geteuid()); 2197f2e35a3aSmrg (void)p; 2198f2e35a3aSmrg (void)x; 2199d522f475Smrg#elif defined(BSD) && (BSD >= 199103) 2200d522f475Smrg/* The BSD's may implement the runtime check - and it fails. 2201d522f475Smrg * However, saved-ids work almost like POSIX (close enough for most uses). 2202d522f475Smrg */ 2203d522f475Smrg#else 2204d522f475Smrgmake an error 2205d522f475Smrg#endif 2206d522f475Smrg],[cf_cv_posix_saved_ids=yes 2207d522f475Smrg],[ 2208d522f475SmrgAC_TRY_RUN([ 2209d522f475Smrg#ifdef HAVE_STDLIB_H 2210d522f475Smrg#include <stdlib.h> 2211d522f475Smrg#endif 2212d522f475Smrg#include <unistd.h> 2213f2e35a3aSmrgint main(void) 2214d522f475Smrg{ 2215d522f475Smrg void *p = (void *) seteuid; 2216d522f475Smrg long code = sysconf(_SC_SAVED_IDS); 2217f2e35a3aSmrg (void)p; 2218d522f475Smrg ${cf_cv_main_return:-return} ((code > 0) ? 0 : 1); 2219d522f475Smrg}], 2220d522f475Smrg cf_cv_posix_saved_ids=yes, 2221d522f475Smrg cf_cv_posix_saved_ids=no, 2222d522f475Smrg cf_cv_posix_saved_ids=unknown) 2223d522f475Smrg]) 2224d522f475Smrg]) 2225d522f475Smrg 22260bd37d32Smrgtest "$cf_cv_posix_saved_ids" = yes && AC_DEFINE(HAVE_POSIX_SAVED_IDS,1,[Define to 1 if POSIX saved-ids are supported]) 2227d522f475Smrg]) 2228d522f475Smrgdnl --------------------------------------------------------------------------- 2229f2e35a3aSmrgdnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17 2230f2e35a3aSmrgdnl ---------------- 2231f2e35a3aSmrgdnl POSIX documents test-macros which an application may set before any system 2232f2e35a3aSmrgdnl headers are included to make features available. 2233f2e35a3aSmrgdnl 2234f2e35a3aSmrgdnl Some BSD platforms (originally FreeBSD, but copied by a few others) 2235f2e35a3aSmrgdnl diverged from POSIX in 2002 by setting symbols which make all of the most 2236f2e35a3aSmrgdnl recent features visible in the system header files unless the application 2237f2e35a3aSmrgdnl overrides the corresponding test-macros. Doing that introduces portability 2238f2e35a3aSmrgdnl problems. 2239f2e35a3aSmrgdnl 2240f2e35a3aSmrgdnl This macro makes a special check for the symbols used for this, to avoid a 2241f2e35a3aSmrgdnl conflicting definition. 2242f2e35a3aSmrgAC_DEFUN([CF_POSIX_VISIBLE], 2243f2e35a3aSmrg[ 2244f2e35a3aSmrgAC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[ 2245f2e35a3aSmrgAC_TRY_COMPILE([#include <stdio.h>],[ 2246f2e35a3aSmrg#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \ 2247f2e35a3aSmrg && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \ 2248f2e35a3aSmrg && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \ 2249f2e35a3aSmrg && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0) 2250f2e35a3aSmrg#error conflicting symbols found 2251f2e35a3aSmrg#endif 2252f2e35a3aSmrg],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes]) 2253f2e35a3aSmrg]) 2254f2e35a3aSmrg])dnl 2255f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2256f2e35a3aSmrgdnl CF_POSIX_WAIT version: 4 updated: 2020/03/10 18:53:47 2257d522f475Smrgdnl ------------- 2258d522f475Smrgdnl Check for POSIX wait support 2259d522f475SmrgAC_DEFUN([CF_POSIX_WAIT], 2260d522f475Smrg[ 2261d522f475SmrgAC_REQUIRE([AC_HEADER_SYS_WAIT]) 2262d522f475SmrgAC_CACHE_CHECK(for POSIX wait functions,cf_cv_posix_wait,[ 2263d522f475SmrgAC_TRY_LINK([ 2264d522f475Smrg#include <stdlib.h> 2265d522f475Smrg#include <stdio.h> 2266d522f475Smrg#include <sys/types.h> 2267d522f475Smrg#ifdef HAVE_SYS_WAIT_H 2268d522f475Smrg#include <sys/wait.h> 2269d522f475Smrg#endif 2270d522f475Smrg],[ 2271d522f475Smrg int stat_loc; 2272d522f475Smrg pid_t pid = waitpid(-1, &stat_loc, WNOHANG|WUNTRACED); 2273d522f475Smrg pid_t pid2 = wait(&stat_loc); 2274f2e35a3aSmrg (void)pid; 2275f2e35a3aSmrg (void)pid2; 2276d522f475Smrg], 2277d522f475Smrg[cf_cv_posix_wait=yes], 2278d522f475Smrg[cf_cv_posix_wait=no]) 2279d522f475Smrg]) 22800bd37d32Smrgtest "$cf_cv_posix_wait" = yes && AC_DEFINE(USE_POSIX_WAIT,1,[Define to 1 if we have POSIX wait functions]) 2281d522f475Smrg])dnl 2282d522f475Smrgdnl --------------------------------------------------------------------------- 2283f2e35a3aSmrgdnl CF_PROCFS_CWD version: 4 updated: 2020/12/31 18:40:20 2284d522f475Smrgdnl ------------- 2285d522f475Smrgdnl Find /proc tree (may be in a different place) which implements the "cwd" 2286d522f475Smrgdnl link. 2287d522f475SmrgAC_DEFUN([CF_PROCFS_CWD],[ 2288d522f475SmrgAC_CACHE_CHECK(for proc tree with cwd-support,cf_cv_procfs_cwd,[ 2289d522f475Smrgcf_cv_procfs_cwd=no 2290d522f475Smrgfor cf_path in /proc /compat/linux/proc /usr/compat/linux/proc 2291d522f475Smrgdo 2292f2e35a3aSmrg if test -d "$cf_path" && \ 2293f2e35a3aSmrg test -d "$cf_path"/$$ && \ 2294f2e35a3aSmrg { test -d "$cf_path"/$$/cwd || \ 2295f2e35a3aSmrg test -L "$cf_path"/$$/cwd; }; then 2296f2e35a3aSmrg cf_cv_procfs_cwd="$cf_path" 2297d522f475Smrg break 2298d522f475Smrg fi 2299d522f475Smrgdone 2300d522f475Smrg]) 2301d522f475Smrg])dnl 2302d522f475Smrgdnl --------------------------------------------------------------------------- 2303f2e35a3aSmrgdnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54 23040bd37d32Smrgdnl ---------- 23050bd37d32Smrgdnl standard check for CC, plus followup sanity checks 23060bd37d32Smrgdnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name 23070bd37d32SmrgAC_DEFUN([CF_PROG_CC],[ 2308f2e35a3aSmrgCF_ACVERSION_CHECK(2.53, 2309f2e35a3aSmrg [AC_MSG_WARN(this will incorrectly handle gnatgcc choice) 2310f2e35a3aSmrg AC_REQUIRE([AC_PROG_CC])], 2311f2e35a3aSmrg []) 23120bd37d32Smrgifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)]) 23130bd37d32SmrgCF_GCC_VERSION 23140bd37d32SmrgCF_ACVERSION_CHECK(2.52, 23150bd37d32Smrg [AC_PROG_CC_STDC], 23160bd37d32Smrg [CF_ANSI_CC_REQD]) 231701037d57SmrgCF_CC_ENV_FLAGS 2318d522f475Smrg])dnl 2319d522f475Smrgdnl --------------------------------------------------------------------------- 2320f2e35a3aSmrgdnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19 23210bd37d32Smrgdnl ------------- 23220bd37d32Smrgdnl Check if groff is available, for cases (such as html output) where nroff 23230bd37d32Smrgdnl is not enough. 23240bd37d32SmrgAC_DEFUN([CF_PROG_GROFF],[ 23250bd37d32SmrgAC_PATH_PROG(GROFF_PATH,groff,no) 2326f2e35a3aSmrgAC_PATH_PROGS(NROFF_PATH,nroff mandoc,no) 2327f2e35a3aSmrgAC_PATH_PROG(TBL_PATH,tbl,cat) 23280bd37d32Smrgif test "x$GROFF_PATH" = xno 23290bd37d32Smrgthen 23300bd37d32Smrg NROFF_NOTE= 23310bd37d32Smrg GROFF_NOTE="#" 23320bd37d32Smrgelse 23330bd37d32Smrg NROFF_NOTE="#" 23340bd37d32Smrg GROFF_NOTE= 23350bd37d32Smrgfi 23360bd37d32SmrgAC_SUBST(GROFF_NOTE) 23370bd37d32SmrgAC_SUBST(NROFF_NOTE) 2338d522f475Smrg])dnl 2339d522f475Smrgdnl --------------------------------------------------------------------------- 2340f2e35a3aSmrgdnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37 23412e4f8982Smrgdnl ------------ 23422e4f8982SmrgAC_DEFUN([CF_PROG_LINT], 23432e4f8982Smrg[ 23442e4f8982SmrgAC_CHECK_PROGS(LINT, lint cppcheck splint) 2345f2e35a3aSmrgcase "x$LINT" in 2346f2e35a3aSmrg(xcppcheck|x*/cppcheck) 2347f2e35a3aSmrg test -z "$LINT_OPTS" && LINT_OPTS="--enable=all" 2348f2e35a3aSmrg ;; 2349f2e35a3aSmrgesac 23502e4f8982SmrgAC_SUBST(LINT_OPTS) 23512e4f8982Smrg])dnl 23522e4f8982Smrgdnl --------------------------------------------------------------------------- 2353f2e35a3aSmrgdnl CF_REGEX version: 18 updated: 2021/01/01 16:53:59 2354d522f475Smrgdnl -------- 2355d522f475Smrgdnl Attempt to determine if we've got one of the flavors of regular-expression 2356d522f475Smrgdnl code that we can support. 2357d522f475SmrgAC_DEFUN([CF_REGEX], 2358d522f475Smrg[ 235920d2c4d2Smrg 236020d2c4d2Smrgcf_regex_func=no 2361f2e35a3aSmrgcf_regex_libs= 2362f2e35a3aSmrgcase "$host_os" in 236301037d57Smrg(mingw*) 2364f2e35a3aSmrg # -lsystre -ltre -lintl -liconv 2365f2e35a3aSmrg AC_CHECK_LIB(systre,regcomp,[ 2366f2e35a3aSmrg AC_CHECK_LIB(iconv,libiconv_open,[CF_ADD_LIB(iconv)]) 2367f2e35a3aSmrg AC_CHECK_LIB(intl,libintl_gettext,[CF_ADD_LIB(intl)]) 2368f2e35a3aSmrg AC_CHECK_LIB(tre,tre_regcomp,[CF_ADD_LIB(tre)]) 2369f2e35a3aSmrg CF_ADD_LIB(systre) 2370f2e35a3aSmrg cf_regex_func=regcomp 2371f2e35a3aSmrg ],[ 2372f2e35a3aSmrg AC_CHECK_LIB(gnurx,regcomp,[ 2373f2e35a3aSmrg CF_ADD_LIB(gnurx) 2374f2e35a3aSmrg cf_regex_func=regcomp]) 2375f2e35a3aSmrg ]) 2376f2e35a3aSmrg ;; 2377f2e35a3aSmrg(*) 2378f2e35a3aSmrg cf_regex_libs="regex re" 2379f2e35a3aSmrg AC_CHECK_FUNC(regcomp,[cf_regex_func=regcomp],[ 2380f2e35a3aSmrg for cf_regex_lib in $cf_regex_libs 2381f2e35a3aSmrg do 2382f2e35a3aSmrg AC_CHECK_LIB($cf_regex_lib,regcomp,[ 2383f2e35a3aSmrg CF_ADD_LIB($cf_regex_lib) 2384f2e35a3aSmrg cf_regex_func=regcomp 2385f2e35a3aSmrg break]) 2386f2e35a3aSmrg done 2387f2e35a3aSmrg ]) 23886879286fSmrg ;; 23896879286fSmrgesac 23906879286fSmrg 239120d2c4d2Smrgif test "$cf_regex_func" = no ; then 239220d2c4d2Smrg AC_CHECK_FUNC(compile,[cf_regex_func=compile],[ 239320d2c4d2Smrg AC_CHECK_LIB(gen,compile,[ 239420d2c4d2Smrg CF_ADD_LIB(gen) 239520d2c4d2Smrg cf_regex_func=compile])]) 239620d2c4d2Smrgfi 239720d2c4d2Smrg 239820d2c4d2Smrgif test "$cf_regex_func" = no ; then 239920d2c4d2Smrg AC_MSG_WARN(cannot find regular expression library) 240020d2c4d2Smrgfi 240120d2c4d2Smrg 240220d2c4d2SmrgAC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[ 240320d2c4d2Smrg 240420d2c4d2Smrgcf_cv_regex_hdrs=no 2405f2e35a3aSmrgcase "$cf_regex_func" in 240601037d57Smrg(compile) 240720d2c4d2Smrg for cf_regex_hdr in regexp.h regexpr.h 240820d2c4d2Smrg do 240920d2c4d2Smrg AC_TRY_LINK([#include <$cf_regex_hdr>],[ 241020d2c4d2Smrg char *p = compile("", "", "", 0); 2411d522f475Smrg int x = step("", ""); 2412f2e35a3aSmrg (void)p; 2413f2e35a3aSmrg (void)x; 241420d2c4d2Smrg ],[ 241520d2c4d2Smrg cf_cv_regex_hdrs=$cf_regex_hdr 241620d2c4d2Smrg break 241720d2c4d2Smrg ]) 241820d2c4d2Smrg done 241920d2c4d2Smrg ;; 242001037d57Smrg(*) 242120d2c4d2Smrg for cf_regex_hdr in regex.h 242220d2c4d2Smrg do 242320d2c4d2Smrg AC_TRY_LINK([#include <sys/types.h> 242420d2c4d2Smrg#include <$cf_regex_hdr>],[ 2425f2e35a3aSmrg regex_t *p = 0; 242620d2c4d2Smrg int x = regcomp(p, "", 0); 242720d2c4d2Smrg int y = regexec(p, "", 0, 0, 0); 2428f2e35a3aSmrg (void)x; 2429f2e35a3aSmrg (void)y; 243020d2c4d2Smrg regfree(p); 243120d2c4d2Smrg ],[ 243220d2c4d2Smrg cf_cv_regex_hdrs=$cf_regex_hdr 243320d2c4d2Smrg break 243420d2c4d2Smrg ]) 243520d2c4d2Smrg done 243620d2c4d2Smrg ;; 243720d2c4d2Smrgesac 243820d2c4d2Smrg 2439d522f475Smrg]) 244020d2c4d2Smrg 2441f2e35a3aSmrgcase "$cf_cv_regex_hdrs" in 24422e4f8982Smrg (no) AC_MSG_WARN(no regular expression header found) ;; 24432e4f8982Smrg (regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;; 24442e4f8982Smrg (regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;; 24452e4f8982Smrg (regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;; 2446d522f475Smrgesac 2447d522f475Smrg])dnl 2448d522f475Smrgdnl --------------------------------------------------------------------------- 2449a5ae21e4Smrgdnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40 2450a5ae21e4Smrgdnl ---------------- 2451a5ae21e4Smrgdnl Remove a given option from CFLAGS/CPPFLAGS 2452a5ae21e4Smrgdnl $1 = option to remove 2453a5ae21e4Smrgdnl $2 = variable to update 2454a5ae21e4Smrgdnl $3 = nonempty to allow verbose message 2455a5ae21e4Smrgdefine([CF_REMOVE_CFLAGS], 2456a5ae21e4Smrg[ 2457a5ae21e4Smrgcf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'` 2458a5ae21e4Smrgwhile true 2459a5ae21e4Smrgdo 2460a5ae21e4Smrg cf_old_cflag=`echo "x[$]$2" | sed -e 's/^.//' -e 's/[[ ]][[ ]]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[[^ ]][[^ ]]*\\)\?%%" -e 's/^[[ ]]*//' -e 's%[[ ]][[ ]]*-D% -D%g' -e 's%[[ ]][[ ]]*-I% -I%g'` 2461a5ae21e4Smrg test "[$]$2" != "$cf_old_cflag" || break 2462a5ae21e4Smrg ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)]) 2463a5ae21e4Smrg $2="$cf_old_cflag" 2464a5ae21e4Smrgdone 2465a5ae21e4Smrg])dnl 2466a5ae21e4Smrgdnl --------------------------------------------------------------------------- 246720d2c4d2Smrgdnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 2468d522f475Smrgdnl ---------------- 2469d522f475Smrgdnl Remove all -U and -D options that refer to the given symbol from a list 2470d522f475Smrgdnl of C compiler options. This works around the problem that not all 2471d522f475Smrgdnl compilers process -U and -D options from left-to-right, so a -U option 2472d522f475Smrgdnl cannot be used to cancel the effect of a preceding -D option. 2473d522f475Smrgdnl 2474d522f475Smrgdnl $1 = target (which could be the same as the source variable) 2475d522f475Smrgdnl $2 = source (including '$') 2476d522f475Smrgdnl $3 = symbol to remove 2477d522f475Smrgdefine([CF_REMOVE_DEFINE], 2478d522f475Smrg[ 2479d522f475Smrg$1=`echo "$2" | \ 248020d2c4d2Smrg sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ 248120d2c4d2Smrg -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` 248220d2c4d2Smrg])dnl 248320d2c4d2Smrgdnl --------------------------------------------------------------------------- 2484f2e35a3aSmrgdnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45 2485f2e35a3aSmrgdnl --------------------- 2486f2e35a3aSmrgdnl Restore flags saved in CF_SAVE_XTRA_FLAGS 2487f2e35a3aSmrgdnl $1 = name of current macro 2488f2e35a3aSmrgdefine([CF_RESTORE_XTRA_FLAGS], 2489f2e35a3aSmrg[ 2490f2e35a3aSmrgLIBS="$cf_save_LIBS_$1" 2491f2e35a3aSmrgCFLAGS="$cf_save_CFLAGS_$1" 2492f2e35a3aSmrgCPPFLAGS="$cf_save_CPPFLAGS_$1" 2493f2e35a3aSmrg])dnl 2494f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2495f2e35a3aSmrgdnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50 249620d2c4d2Smrgdnl ------------- 249720d2c4d2SmrgAC_DEFUN([CF_RPATH_HACK], 2498f2e35a3aSmrg[AC_REQUIRE([AC_PROG_FGREP])dnl 2499f2e35a3aSmrgAC_REQUIRE([CF_LD_RPATH_OPT])dnl 2500f2e35a3aSmrg 250120d2c4d2SmrgAC_MSG_CHECKING(for updated LDFLAGS) 250220d2c4d2Smrgif test -n "$LD_RPATH_OPT" ; then 250320d2c4d2Smrg AC_MSG_RESULT(maybe) 250420d2c4d2Smrg 250520d2c4d2Smrg AC_CHECK_PROGS(cf_ldd_prog,ldd,no) 250620d2c4d2Smrg cf_rpath_list="/usr/lib /lib" 250720d2c4d2Smrg if test "$cf_ldd_prog" != no 250820d2c4d2Smrg then 2509a1f3da82Smrg cf_rpath_oops= 2510a1f3da82Smrg 251120d2c4d2SmrgAC_TRY_LINK([#include <stdio.h>], 251220d2c4d2Smrg [printf("Hello");], 2513f2e35a3aSmrg [cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq` 2514f2e35a3aSmrg cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`]) 2515a1f3da82Smrg 2516a1f3da82Smrg # If we passed the link-test, but get a "not found" on a given library, 2517a1f3da82Smrg # this could be due to inept reconfiguration of gcc to make it only 2518a1f3da82Smrg # partly honor /usr/local/lib (or whatever). Sometimes this behavior 2519a1f3da82Smrg # is intentional, e.g., installing gcc in /usr/bin and suppressing the 2520a1f3da82Smrg # /usr/local libraries. 2521a1f3da82Smrg if test -n "$cf_rpath_oops" 2522a1f3da82Smrg then 2523a1f3da82Smrg for cf_rpath_src in $cf_rpath_oops 2524a1f3da82Smrg do 2525a1f3da82Smrg for cf_rpath_dir in \ 2526a1f3da82Smrg /usr/local \ 2527a1f3da82Smrg /usr/pkg \ 2528a1f3da82Smrg /opt/sfw 2529a1f3da82Smrg do 2530f2e35a3aSmrg if test -f "$cf_rpath_dir/lib/$cf_rpath_src" 2531a1f3da82Smrg then 2532a1f3da82Smrg CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src) 2533a1f3da82Smrg LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" 2534a1f3da82Smrg break 2535a1f3da82Smrg fi 2536a1f3da82Smrg done 2537a1f3da82Smrg done 2538a1f3da82Smrg fi 253920d2c4d2Smrg fi 254020d2c4d2Smrg 254120d2c4d2Smrg CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS) 254220d2c4d2Smrg 254320d2c4d2Smrg CF_RPATH_HACK_2(LDFLAGS) 254420d2c4d2Smrg CF_RPATH_HACK_2(LIBS) 254520d2c4d2Smrg 254620d2c4d2Smrg CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS) 2547e0a2b6dfSmrgelse 2548e0a2b6dfSmrg AC_MSG_RESULT(no) 254920d2c4d2Smrgfi 255020d2c4d2SmrgAC_SUBST(EXTRA_LDFLAGS) 255120d2c4d2Smrg])dnl 255220d2c4d2Smrgdnl --------------------------------------------------------------------------- 2553f2e35a3aSmrgdnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04 255420d2c4d2Smrgdnl --------------- 255520d2c4d2Smrgdnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to 255620d2c4d2Smrgdnl EXTRA_LDFLAGS for each -L option found. 255720d2c4d2Smrgdnl 255820d2c4d2Smrgdnl $cf_rpath_list contains a list of directories to ignore. 255920d2c4d2Smrgdnl 256020d2c4d2Smrgdnl $1 = variable name to update. The LDFLAGS variable should be the only one, 256120d2c4d2Smrgdnl but LIBS often has misplaced -L options. 256220d2c4d2SmrgAC_DEFUN([CF_RPATH_HACK_2], 256320d2c4d2Smrg[ 256420d2c4d2SmrgCF_VERBOSE(...checking $1 [$]$1) 256520d2c4d2Smrg 256620d2c4d2Smrgcf_rpath_dst= 256720d2c4d2Smrgfor cf_rpath_src in [$]$1 256820d2c4d2Smrgdo 2569f2e35a3aSmrg case "$cf_rpath_src" in 257001037d57Smrg (-L*) 257120d2c4d2Smrg 257220d2c4d2Smrg # check if this refers to a directory which we will ignore 257320d2c4d2Smrg cf_rpath_skip=no 257420d2c4d2Smrg if test -n "$cf_rpath_list" 257520d2c4d2Smrg then 257620d2c4d2Smrg for cf_rpath_item in $cf_rpath_list 257720d2c4d2Smrg do 257820d2c4d2Smrg if test "x$cf_rpath_src" = "x-L$cf_rpath_item" 257920d2c4d2Smrg then 258020d2c4d2Smrg cf_rpath_skip=yes 258120d2c4d2Smrg break 258220d2c4d2Smrg fi 258320d2c4d2Smrg done 258420d2c4d2Smrg fi 258520d2c4d2Smrg 258620d2c4d2Smrg if test "$cf_rpath_skip" = no 258720d2c4d2Smrg then 258820d2c4d2Smrg # transform the option 258920d2c4d2Smrg if test "$LD_RPATH_OPT" = "-R " ; then 259020d2c4d2Smrg cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` 259120d2c4d2Smrg else 259220d2c4d2Smrg cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` 259320d2c4d2Smrg fi 259420d2c4d2Smrg 259520d2c4d2Smrg # if we have not already added this, add it now 259620d2c4d2Smrg cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` 259720d2c4d2Smrg if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" 259820d2c4d2Smrg then 259920d2c4d2Smrg CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp) 260020d2c4d2Smrg EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" 260120d2c4d2Smrg fi 260220d2c4d2Smrg fi 260320d2c4d2Smrg ;; 260420d2c4d2Smrg esac 260520d2c4d2Smrg cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" 260620d2c4d2Smrgdone 260720d2c4d2Smrg$1=$cf_rpath_dst 260820d2c4d2Smrg 260920d2c4d2SmrgCF_VERBOSE(...checked $1 [$]$1) 261020d2c4d2SmrgAC_SUBST(EXTRA_LDFLAGS) 2611d522f475Smrg])dnl 2612d522f475Smrgdnl --------------------------------------------------------------------------- 2613f2e35a3aSmrgdnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44 2614f2e35a3aSmrgdnl ------------------ 2615f2e35a3aSmrgdnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers 2616f2e35a3aSmrgdnl and libraries which do not update those variables. 2617f2e35a3aSmrgdnl 2618f2e35a3aSmrgdnl $1 = name of current macro 2619f2e35a3aSmrgdefine([CF_SAVE_XTRA_FLAGS], 2620f2e35a3aSmrg[ 2621f2e35a3aSmrgcf_save_LIBS_$1="$LIBS" 2622f2e35a3aSmrgcf_save_CFLAGS_$1="$CFLAGS" 2623f2e35a3aSmrgcf_save_CPPFLAGS_$1="$CPPFLAGS" 2624f2e35a3aSmrgLIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" 2625f2e35a3aSmrgfor cf_X_CFLAGS in $X_CFLAGS 2626f2e35a3aSmrgdo 2627f2e35a3aSmrg case "x$cf_X_CFLAGS" in 2628f2e35a3aSmrg x-[[IUD]]*) 2629f2e35a3aSmrg CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" 2630f2e35a3aSmrg ;; 2631f2e35a3aSmrg *) 2632f2e35a3aSmrg CFLAGS="$CFLAGS $cf_X_CFLAGS" 2633f2e35a3aSmrg ;; 2634f2e35a3aSmrg esac 2635f2e35a3aSmrgdone 2636f2e35a3aSmrg])dnl 2637f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2638f2e35a3aSmrgdnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04 2639d522f475Smrgdnl ----------- 2640d522f475Smrgdnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all 2641d522f475Smrgdnl programs need this test). 2642d522f475Smrgdnl 2643f2e35a3aSmrgdnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE 2644d522f475Smrgdnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct 2645d522f475Smrgdnl winsize declaration is left alone - we may revisit this if Apple choose to 2646d522f475Smrgdnl break that part of the interface as well. 2647d522f475SmrgAC_DEFUN([CF_SIGWINCH], 2648d522f475Smrg[ 2649d522f475SmrgAC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[ 2650d522f475Smrg AC_TRY_COMPILE([ 2651d522f475Smrg#include <sys/types.h> 2652d522f475Smrg#include <sys/signal.h> 2653f2e35a3aSmrg],[int x = SIGWINCH; (void)x], 2654d522f475Smrg [cf_cv_define_sigwinch=yes], 2655d522f475Smrg [AC_TRY_COMPILE([ 2656d522f475Smrg#undef _XOPEN_SOURCE 2657d522f475Smrg#undef _POSIX_SOURCE 2658d522f475Smrg#undef _POSIX_C_SOURCE 2659d522f475Smrg#include <sys/types.h> 2660d522f475Smrg#include <sys/signal.h> 2661f2e35a3aSmrg],[int x = SIGWINCH; (void)x], 2662d522f475Smrg [cf_cv_define_sigwinch=maybe], 2663d522f475Smrg [cf_cv_define_sigwinch=no]) 2664d522f475Smrg]) 2665d522f475Smrg]) 2666d522f475Smrg 2667d522f475Smrgif test "$cf_cv_define_sigwinch" = maybe ; then 2668d522f475SmrgAC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[ 2669d522f475Smrgcf_cv_fixup_sigwinch=unknown 2670d522f475Smrgcf_sigwinch=32 2671f2e35a3aSmrgwhile test "$cf_sigwinch" != 1 2672d522f475Smrgdo 2673d522f475Smrg AC_TRY_COMPILE([ 2674d522f475Smrg#undef _XOPEN_SOURCE 2675d522f475Smrg#undef _POSIX_SOURCE 2676d522f475Smrg#undef _POSIX_C_SOURCE 2677d522f475Smrg#include <sys/types.h> 2678d522f475Smrg#include <sys/signal.h> 2679d522f475Smrg],[ 2680d522f475Smrg#if SIGWINCH != $cf_sigwinch 2681d522f475Smrgmake an error 2682d522f475Smrg#endif 2683f2e35a3aSmrgint x = SIGWINCH; (void)x], 2684d522f475Smrg [cf_cv_fixup_sigwinch=$cf_sigwinch 2685d522f475Smrg break]) 2686d522f475Smrg 2687f2e35a3aSmrgcf_sigwinch="`expr "$cf_sigwinch" - 1`" 2688d522f475Smrgdone 2689d522f475Smrg]) 2690d522f475Smrg 2691d522f475Smrg if test "$cf_cv_fixup_sigwinch" != unknown ; then 2692d522f475Smrg CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" 2693d522f475Smrg fi 2694d522f475Smrgfi 2695d522f475Smrg])dnl 2696d522f475Smrgdnl --------------------------------------------------------------------------- 2697f2e35a3aSmrgdnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47 2698d522f475Smrgdnl --------------- 2699f2e35a3aSmrgdnl signal handler, but there are some gcc dependencies in that recommendation. 2700d522f475Smrgdnl Try anyway. 2701d522f475SmrgAC_DEFUN([CF_SIG_ATOMIC_T], 2702d522f475Smrg[ 2703d522f475SmrgAC_MSG_CHECKING(for signal global datatype) 2704d522f475SmrgAC_CACHE_VAL(cf_cv_sig_atomic_t,[ 2705d522f475Smrg for cf_type in \ 2706d522f475Smrg "volatile sig_atomic_t" \ 2707d522f475Smrg "sig_atomic_t" \ 2708d522f475Smrg "int" 2709d522f475Smrg do 2710d522f475Smrg AC_TRY_COMPILE([ 2711d522f475Smrg#include <sys/types.h> 2712d522f475Smrg#include <signal.h> 2713d522f475Smrg#include <stdio.h> 2714d522f475Smrg 2715d522f475Smrgextern $cf_type x; 2716d522f475Smrg$cf_type x; 2717d522f475Smrgstatic void handler(int sig) 2718d522f475Smrg{ 2719f2e35a3aSmrg (void)sig; 2720d522f475Smrg x = 5; 2721d522f475Smrg}], 2722d522f475Smrg [signal(SIGINT, handler); 2723d522f475Smrg x = 1], 2724d522f475Smrg [cf_cv_sig_atomic_t=$cf_type], 2725d522f475Smrg [cf_cv_sig_atomic_t=no]) 2726d522f475Smrg test "$cf_cv_sig_atomic_t" != no && break 2727d522f475Smrg done 2728d522f475Smrg ]) 2729d522f475SmrgAC_MSG_RESULT($cf_cv_sig_atomic_t) 27300bd37d32Smrgtest "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype]) 2731d522f475Smrg])dnl 2732d522f475Smrgdnl --------------------------------------------------------------------------- 2733f2e35a3aSmrgdnl CF_STRUCT_LASTLOG version: 3 updated: 2020/03/10 18:53:47 2734d522f475Smrgdnl ----------------- 2735d522f475Smrgdnl Check for header defining struct lastlog, ensure that its .ll_time member 2736d522f475Smrgdnl is compatible with time(). 2737d522f475SmrgAC_DEFUN([CF_STRUCT_LASTLOG], 2738d522f475Smrg[ 2739d522f475SmrgAC_CHECK_HEADERS(lastlog.h) 2740d522f475SmrgAC_CACHE_CHECK(for struct lastlog,cf_cv_struct_lastlog,[ 2741d522f475SmrgAC_TRY_RUN([ 2742d522f475Smrg#include <sys/types.h> 2743d522f475Smrg#include <time.h> 2744d522f475Smrg#include <lastlog.h> 2745d522f475Smrg 2746f2e35a3aSmrgint main(void) 2747d522f475Smrg{ 2748d522f475Smrg struct lastlog data; 2749d522f475Smrg return (sizeof(data.ll_time) != sizeof(time_t)); 2750d522f475Smrg}],[ 2751d522f475Smrgcf_cv_struct_lastlog=yes],[ 2752d522f475Smrgcf_cv_struct_lastlog=no],[ 2753d522f475Smrgcf_cv_struct_lastlog=unknown])]) 2754d522f475Smrg 27550bd37d32Smrgtest $cf_cv_struct_lastlog != no && AC_DEFINE(USE_STRUCT_LASTLOG,1,[Define to 1 if we have struct lastlog]) 2756d522f475Smrg])dnl 2757d522f475Smrgdnl --------------------------------------------------------------------------- 27580bd37d32Smrgdnl CF_SVR4 version: 5 updated: 2012/10/04 05:24:07 2759d522f475Smrgdnl ------- 2760d522f475Smrgdnl Check if this is an SVR4 system. We need the definition for xterm 2761d522f475SmrgAC_DEFUN([CF_SVR4], 2762d522f475Smrg[ 2763d522f475SmrgAC_CHECK_LIB(elf, elf_begin,[ 2764d522f475SmrgAC_CACHE_CHECK(if this is an SVR4 system, cf_cv_svr4,[ 2765d522f475SmrgAC_TRY_COMPILE([ 27660bd37d32Smrg#if defined(__CYGWIN__) 27670bd37d32Smrgmake an error 27680bd37d32Smrg#endif 2769d522f475Smrg#include <elf.h> 2770d522f475Smrg#include <sys/termio.h> 2771d522f475Smrg],[ 2772d522f475Smrgstatic struct termio d_tio; 2773d522f475Smrg d_tio.c_cc[VINTR] = 0; 2774d522f475Smrg d_tio.c_cc[VQUIT] = 0; 2775d522f475Smrg d_tio.c_cc[VERASE] = 0; 2776d522f475Smrg d_tio.c_cc[VKILL] = 0; 2777d522f475Smrg d_tio.c_cc[VEOF] = 0; 2778d522f475Smrg d_tio.c_cc[VEOL] = 0; 2779d522f475Smrg d_tio.c_cc[VMIN] = 0; 2780d522f475Smrg d_tio.c_cc[VTIME] = 0; 2781d522f475Smrg d_tio.c_cc[VLNEXT] = 0; 2782d522f475Smrg], 2783d522f475Smrg[cf_cv_svr4=yes], 2784d522f475Smrg[cf_cv_svr4=no]) 2785d522f475Smrg]) 2786d522f475Smrg]) 27870bd37d32Smrgtest "$cf_cv_svr4" = yes && AC_DEFINE(SVR4,1,[Define to 1 if this is an SVR4 system]) 2788d522f475Smrg])dnl 2789d522f475Smrgdnl --------------------------------------------------------------------------- 2790f2e35a3aSmrgdnl CF_SYSV version: 16 updated: 2020/01/11 16:46:44 2791d522f475Smrgdnl ------- 2792d522f475Smrgdnl Check if this is a SYSV platform, e.g., as used in <X11/Xos.h>, and whether 2793d522f475Smrgdnl defining it will be helpful. The following features are used to check: 2794d522f475Smrgdnl 2795d522f475Smrgdnl a) bona-fide SVSV doesn't use const for sys_errlist[]. Since this is a 2796d522f475Smrgdnl legacy (pre-ANSI) feature, const should not apply. Modern systems only 2797d522f475Smrgdnl declare strerror(). Xos.h declares the legacy form of str_errlist[], and 2798d522f475Smrgdnl a compile-time error will result from trying to assign to a const array. 2799d522f475Smrgdnl 2800d522f475Smrgdnl b) compile with headers that exist on SYSV hosts. 2801d522f475Smrgdnl 2802d522f475Smrgdnl c) compile with type definitions that differ on SYSV hosts from standard C. 2803d522f475SmrgAC_DEFUN([CF_SYSV], 2804d522f475Smrg[ 2805f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 2806f2e35a3aSmrg 2807f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_SYSV]) 2808f2e35a3aSmrg 2809d522f475SmrgAC_CHECK_HEADERS( \ 2810d522f475Smrgtermios.h \ 2811d522f475Smrgstdlib.h \ 2812d522f475SmrgX11/Intrinsic.h \ 2813d522f475Smrg) 2814d522f475Smrg 2815d522f475SmrgAC_REQUIRE([CF_SYS_ERRLIST]) 2816d522f475Smrg 2817d522f475SmrgAC_CACHE_CHECK(if we should define SYSV,cf_cv_sysv,[ 2818d522f475SmrgAC_TRY_COMPILE([ 2819d522f475Smrg#undef SYSV 2820d522f475Smrg#define SYSV 1 /* get Xos.h to declare sys_errlist[] */ 2821d522f475Smrg#ifdef HAVE_STDLIB_H 2822d522f475Smrg#include <stdlib.h> /* look for wchar_t */ 2823d522f475Smrg#endif 2824d522f475Smrg#ifdef HAVE_X11_INTRINSIC_H 2825d522f475Smrg#include <X11/Intrinsic.h> /* Intrinsic.h has other traps... */ 2826d522f475Smrg#endif 28270bd37d32Smrg#ifdef HAVE_TERMIOS_H /* needed for HPUX 10.20 */ 28280bd37d32Smrg#include <termios.h> 28290bd37d32Smrg#define STRUCT_TERMIOS struct termios 28300bd37d32Smrg#else 28310bd37d32Smrg#define STRUCT_TERMIOS struct termio 28320bd37d32Smrg#endif 2833d522f475Smrg#include <curses.h> 2834d522f475Smrg#include <term.h> /* eliminate most BSD hacks */ 2835d522f475Smrg#include <errno.h> /* declare sys_errlist on older systems */ 2836d522f475Smrg#include <sys/termio.h> /* eliminate most of the remaining ones */ 2837d522f475Smrg],[ 2838d522f475Smrgstatic STRUCT_TERMIOS d_tio; 2839d522f475Smrg d_tio.c_cc[VINTR] = 0; 2840d522f475Smrg d_tio.c_cc[VQUIT] = 0; 2841d522f475Smrg d_tio.c_cc[VERASE] = 0; 2842d522f475Smrg d_tio.c_cc[VKILL] = 0; 2843d522f475Smrg d_tio.c_cc[VEOF] = 0; 2844d522f475Smrg d_tio.c_cc[VEOL] = 0; 2845d522f475Smrg d_tio.c_cc[VMIN] = 0; 2846d522f475Smrg d_tio.c_cc[VTIME] = 0; 2847d522f475Smrg#if defined(HAVE_SYS_ERRLIST) && !defined(DECL_SYS_ERRLIST) 2848d522f475Smrgsys_errlist[0] = ""; /* Cygwin mis-declares this */ 2849d522f475Smrg#endif 2850d522f475Smrg], 2851d522f475Smrg[cf_cv_sysv=yes], 2852d522f475Smrg[cf_cv_sysv=no]) 2853d522f475Smrg]) 28540bd37d32Smrgtest "$cf_cv_sysv" = yes && AC_DEFINE(SYSV,1,[Define to 1 if this is an SYSV system]) 2855f2e35a3aSmrg 2856f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_SYSV]) 2857d522f475Smrg])dnl 2858d522f475Smrgdnl --------------------------------------------------------------------------- 2859f2e35a3aSmrgdnl CF_SYSV_UTMP version: 7 updated: 2021/01/02 09:31:20 2860d522f475Smrgdnl ------------ 2861d522f475Smrgdnl Check if this is a SYSV flavor of UTMP 2862d522f475SmrgAC_DEFUN([CF_SYSV_UTMP], 2863d522f475Smrg[ 2864d522f475SmrgAC_CACHE_CHECK(if $cf_cv_have_utmp is SYSV flavor,cf_cv_sysv_utmp,[ 2865d522f475Smrgtest "$cf_cv_have_utmp" = "utmp" && cf_prefix="ut" || cf_prefix="utx" 2866d522f475SmrgAC_TRY_LINK([ 2867d522f475Smrg#include <sys/types.h> 2868d522f475Smrg#include <${cf_cv_have_utmp}.h>],[ 2869d522f475Smrgstruct $cf_cv_have_utmp x; 2870d522f475Smrg set${cf_prefix}ent (); 2871d522f475Smrg get${cf_prefix}id(&x); 2872d522f475Smrg put${cf_prefix}line(&x); 2873d522f475Smrg end${cf_prefix}ent();], 2874d522f475Smrg [cf_cv_sysv_utmp=yes], 2875d522f475Smrg [cf_cv_sysv_utmp=no]) 2876d522f475Smrg]) 2877f2e35a3aSmrgtest "$cf_cv_sysv_utmp" = yes && AC_DEFINE(USE_SYSV_UTMP,1,[Define to 1 if utmp is SYSV flavor]) 2878d522f475Smrg])dnl 2879d522f475Smrgdnl --------------------------------------------------------------------------- 2880d522f475Smrgdnl CF_SYS_ERRLIST version: 6 updated: 2001/12/30 13:03:23 2881d522f475Smrgdnl -------------- 2882d522f475Smrgdnl Check for declaration of sys_nerr and sys_errlist in one of stdio.h and 2883d522f475Smrgdnl errno.h. Declaration of sys_errlist on BSD4.4 interferes with our 2884d522f475Smrgdnl declaration. Reported by Keith Bostic. 2885d522f475SmrgAC_DEFUN([CF_SYS_ERRLIST], 2886d522f475Smrg[ 2887d522f475Smrg CF_CHECK_ERRNO(sys_nerr) 2888d522f475Smrg CF_CHECK_ERRNO(sys_errlist) 2889d522f475Smrg])dnl 2890d522f475Smrgdnl --------------------------------------------------------------------------- 2891f2e35a3aSmrgdnl CF_TERMIOS_TYPES version: 2 updated: 2020/03/10 18:53:47 2892f2e35a3aSmrgdnl ---------------- 2893f2e35a3aSmrgdnl https://pubs.opengroup.org/onlinepubs/009695399/basedefs/termios.h.html 2894f2e35a3aSmrgdnl says that tcflag_t, speed_t and cc_t are typedef'd. If they are not, 2895f2e35a3aSmrgdnl fallback to historical values. 2896f2e35a3aSmrgAC_DEFUN([CF_TERMIOS_TYPES],[ 2897f2e35a3aSmrg 2898f2e35a3aSmrgAC_CACHE_CHECK(for termios type tcflag_t, cf_cv_havetype_tcflag_t,[ 2899f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 2900f2e35a3aSmrg tcflag_t x = 0; (void)x], 2901f2e35a3aSmrg [cf_cv_havetype_tcflag_t=yes], 2902f2e35a3aSmrg [cf_cv_havetype_tcflag_t=no]) 2903f2e35a3aSmrg]) 2904f2e35a3aSmrgtest "$cf_cv_havetype_tcflag_t" = no && AC_DEFINE(tcflag_t,unsigned long,[Define usable value of tcflag_t if not declared]) 2905f2e35a3aSmrg 2906f2e35a3aSmrgAC_CACHE_CHECK(for termios type speed_t, cf_cv_havetype_speed_t,[ 2907f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 2908f2e35a3aSmrg speed_t x = 0; (void)x], 2909f2e35a3aSmrg [cf_cv_havetype_speed_t=yes], 2910f2e35a3aSmrg [cf_cv_havetype_speed_t=no]) 2911f2e35a3aSmrg]) 2912f2e35a3aSmrgtest "$cf_cv_havetype_speed_t" = no && AC_DEFINE(speed_t,unsigned short,[Define usable value of speed_t if not declared]) 2913f2e35a3aSmrg 2914f2e35a3aSmrgAC_CACHE_CHECK(for termios type cc_t, cf_cv_havetype_cc_t,[ 2915f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 2916f2e35a3aSmrg cc_t x = 0; (void)x], 2917f2e35a3aSmrg [cf_cv_havetype_cc_t=yes], 2918f2e35a3aSmrg [cf_cv_havetype_cc_t=no]) 2919f2e35a3aSmrg]) 2920f2e35a3aSmrgtest "$cf_cv_havetype_cc_t" = no && AC_DEFINE(cc_t,unsigned char,[Define usable value of cc_t if not declared]) 2921f2e35a3aSmrg])dnl 2922f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2923f2e35a3aSmrgdnl CF_TERMIO_C_ISPEED version: 4 updated: 2020/03/10 18:53:47 2924d522f475Smrgdnl ------------------ 2925d522f475Smrgdnl Check for SGI's broken redefinition of baud rates introduced in IRIX 6.5 2926d522f475Smrgdnl (there doesn't appear to be a useful predefined symbol). 2927d522f475SmrgAC_DEFUN([CF_TERMIO_C_ISPEED], 2928d522f475Smrg[ 2929d522f475SmrgAC_CACHE_CHECK(for IRIX 6.5 baud-rate redefinitions,cf_cv_termio_c_ispeed,[ 2930d522f475SmrgAC_TRY_COMPILE([ 2931d522f475Smrg#include <sys/types.h> 2932d522f475Smrg#include <sys/termio.h>],[ 2933d522f475Smrgstruct termio foo; 2934d522f475Smrgfoo.c_ispeed = B38400; 2935d522f475Smrgfoo.c_ospeed = B9600; 2936f2e35a3aSmrg(void)foo; 2937d522f475Smrg],[cf_cv_termio_c_ispeed=yes 2938d522f475Smrg],[cf_cv_termio_c_ispeed=no]) 2939d522f475Smrg]) 29400bd37d32Smrgtest "$cf_cv_termio_c_ispeed" = yes && AC_DEFINE(HAVE_TERMIO_C_ISPEED,1,[define 1 if we have IRIX 6.5 baud-rate redefinitions]) 2941d522f475Smrg])dnl 2942d522f475Smrgdnl --------------------------------------------------------------------------- 294301037d57Smrgdnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00 2944e0a2b6dfSmrgdnl -------------- 2945e0a2b6dfSmrgdnl Trim extra base X libraries added as a workaround for inconsistent library 2946e0a2b6dfSmrgdnl dependencies returned by "new" pkg-config files. 2947e0a2b6dfSmrgAC_DEFUN([CF_TRIM_X_LIBS],[ 2948e0a2b6dfSmrg for cf_trim_lib in Xmu Xt X11 2949e0a2b6dfSmrg do 2950e0a2b6dfSmrg case "$LIBS" in 295101037d57Smrg (*-l$cf_trim_lib\ *-l$cf_trim_lib*) 2952e0a2b6dfSmrg LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'` 2953e0a2b6dfSmrg CF_VERBOSE(..trimmed $LIBS) 2954e0a2b6dfSmrg ;; 2955e0a2b6dfSmrg esac 2956e0a2b6dfSmrg done 2957e0a2b6dfSmrg]) 2958e0a2b6dfSmrgdnl --------------------------------------------------------------------------- 2959f2e35a3aSmrgdnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15 296020d2c4d2Smrgdnl ----------------- 296120d2c4d2Smrgdnl This is a simple wrapper to use for pkg-config, for libraries which may be 296220d2c4d2Smrgdnl available in that form. 296320d2c4d2Smrgdnl 2964f2e35a3aSmrgdnl $1 = package name, which may be a shell variable 296520d2c4d2Smrgdnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS 296620d2c4d2Smrgdnl $3 = logic to use if pkg-config does not have the package 296720d2c4d2SmrgAC_DEFUN([CF_TRY_PKG_CONFIG],[ 296820d2c4d2SmrgAC_REQUIRE([CF_PKG_CONFIG]) 296920d2c4d2Smrg 2970f2e35a3aSmrgif test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then 297120d2c4d2Smrg CF_VERBOSE(found package $1) 2972f2e35a3aSmrg cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`" 2973f2e35a3aSmrg cf_pkgconfig_libs="`$PKG_CONFIG --libs "$1" 2>/dev/null`" 297420d2c4d2Smrg CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs) 297520d2c4d2Smrg CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs) 297620d2c4d2Smrg CF_ADD_CFLAGS($cf_pkgconfig_incs) 297720d2c4d2Smrg CF_ADD_LIBS($cf_pkgconfig_libs) 297820d2c4d2Smrg ifelse([$2],,:,[$2]) 297920d2c4d2Smrgelse 2980e0a2b6dfSmrg cf_pkgconfig_incs= 2981e0a2b6dfSmrg cf_pkgconfig_libs= 298220d2c4d2Smrg ifelse([$3],,:,[$3]) 298320d2c4d2Smrgfi 298420d2c4d2Smrg]) 298520d2c4d2Smrgdnl --------------------------------------------------------------------------- 2986a5ae21e4Smrgdnl CF_TRY_XOPEN_SOURCE version: 3 updated: 2021/08/28 15:20:37 29870bd37d32Smrgdnl ------------------- 29880bd37d32Smrgdnl If _XOPEN_SOURCE is not defined in the compile environment, check if we 29890bd37d32Smrgdnl can define it successfully. 29900bd37d32SmrgAC_DEFUN([CF_TRY_XOPEN_SOURCE],[ 29910bd37d32SmrgAC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ 29920bd37d32Smrg AC_TRY_COMPILE([ 29930bd37d32Smrg#include <stdlib.h> 29940bd37d32Smrg#include <string.h> 29950bd37d32Smrg#include <sys/types.h> 29960bd37d32Smrg],[ 29970bd37d32Smrg#ifndef _XOPEN_SOURCE 29980bd37d32Smrgmake an error 29990bd37d32Smrg#endif], 30000bd37d32Smrg [cf_cv_xopen_source=no], 30010bd37d32Smrg [cf_save="$CPPFLAGS" 3002f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE) 30030bd37d32Smrg AC_TRY_COMPILE([ 30040bd37d32Smrg#include <stdlib.h> 30050bd37d32Smrg#include <string.h> 30060bd37d32Smrg#include <sys/types.h> 30070bd37d32Smrg],[ 30080bd37d32Smrg#ifdef _XOPEN_SOURCE 30090bd37d32Smrgmake an error 30100bd37d32Smrg#endif], 30110bd37d32Smrg [cf_cv_xopen_source=no], 30120bd37d32Smrg [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) 30130bd37d32Smrg CPPFLAGS="$cf_save" 30140bd37d32Smrg ]) 30150bd37d32Smrg]) 30160bd37d32Smrg 30170bd37d32Smrgif test "$cf_cv_xopen_source" != no ; then 30180bd37d32Smrg CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) 30190bd37d32Smrg CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) 30200bd37d32Smrg cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" 3021a5ae21e4Smrg CF_APPEND_CFLAGS($cf_temp_xopen_source) 30220bd37d32Smrgfi 30230bd37d32Smrg]) 30240bd37d32Smrgdnl --------------------------------------------------------------------------- 3025f2e35a3aSmrgdnl CF_TTY_GROUP version: 14 updated: 2021/01/03 18:30:50 3026d522f475Smrgdnl ------------ 3027d522f475Smrgdnl Check if the system has a tty-group defined. This is used in xterm when 3028d522f475Smrgdnl setting pty ownership. 3029f2e35a3aSmrgdnl 3030f2e35a3aSmrgdnl The check relies upon running a test-program, which calls ttyname. If this 3031f2e35a3aSmrgdnl is run in batch mode, or if autoconf uses shell functions, the extra layer 3032f2e35a3aSmrgdnl of eval/call may close stdin, making calls to ttyname fail. To work around 3033f2e35a3aSmrgdnl that, fall back to "/dev/tty". 3034d522f475SmrgAC_DEFUN([CF_TTY_GROUP], 3035f2e35a3aSmrg[AC_REQUIRE([AC_PROG_EGREP])dnl 3036d522f475SmrgAC_MSG_CHECKING(for explicit tty group name) 3037d522f475SmrgAC_ARG_WITH(tty-group, 3038d522f475Smrg [ --with-tty-group=XXX use XXX for the tty-group], 3039d522f475Smrg [cf_tty_group=$withval], 3040d522f475Smrg [cf_tty_group=auto...]) 3041d522f475Smrgtest -z "$cf_tty_group" && cf_tty_group=auto... 3042d522f475Smrgtest "$cf_tty_group" = yes && cf_tty_group=auto... 3043d522f475SmrgAC_MSG_RESULT($cf_tty_group) 3044d522f475Smrg 3045d522f475Smrgif test "$cf_tty_group" = "auto..." ; then 3046d522f475SmrgAC_CACHE_CHECK(for tty group name,cf_cv_tty_group_name,[ 3047d522f475Smrg 3048d522f475Smrg# If we are configuring as root, it is hard to get a clue about the tty group. 3049d522f475Smrg# But we'll guess based on how our connection is set up - assuming it is done 3050d522f475Smrg# properly. 3051d522f475Smrg 3052f2e35a3aSmrgcf_uid="`id | sed -e 's/^[^=]*=//' -e 's/(.*$//'`" 3053d522f475Smrg# )vi 3054d522f475Smrgif test "$cf_uid" != 0 ; then 3055d522f475Smrgcf_cv_tty_group_name= 3056f2e35a3aSmrgcf_tty_name="`tty`" 3057d522f475Smrgtest "$cf_tty_name" = "not a tty" && cf_tty_name=/dev/tty 3058d522f475Smrgtest -z "$cf_tty_name" && cf_tty_name=/dev/tty 3059d522f475Smrgif test -c "$cf_tty_name" 3060d522f475Smrgthen 3061f2e35a3aSmrg cf_option="-lL" 3062d522f475Smrg 3063d522f475Smrg # Expect listing to have fields like this: 3064d522f475Smrg #-rwxrwxrwx 1 user group 34293 Jul 18 16:29 pathname 3065f2e35a3aSmrg ls $cf_option "$cf_tty_name" >conftest.out 3066d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out 3067d522f475Smrg if test -z "$cf_rest" ; then 3068f2e35a3aSmrg cf_option="${cf_option}g" 3069f2e35a3aSmrg ls "$cf_option" "$cf_tty_name" >conftest.out 3070d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out 3071d522f475Smrg fi 3072d522f475Smrg rm -f conftest.out 3073d522f475Smrg cf_cv_tty_group_name=$cf_grp 3074d522f475Smrgfi 3075d522f475Smrgfi 3076d522f475Smrg 3077d522f475Smrg# If we cannot deduce the tty group, fall back on hardcoded cases 3078d522f475Smrg 3079d522f475Smrgif test -z "$cf_cv_tty_group_name" 3080d522f475Smrgthen 308101037d57Smrgcase $host_os in 308201037d57Smrg(osf*) 3083d522f475Smrg cf_cv_tty_group_name="terminal" 3084d522f475Smrg ;; 308501037d57Smrg(*) 3086d522f475Smrg cf_cv_tty_group_name="unknown" 3087f2e35a3aSmrg if ( ${EGREP-egrep} '^tty:' /etc/group 2>/dev/null 1>/dev/null ) then 3088d522f475Smrg cf_cv_tty_group_name="tty" 3089d522f475Smrg fi 3090d522f475Smrg ;; 3091d522f475Smrgesac 3092d522f475Smrgfi 3093d522f475Smrg]) 3094d522f475Smrgcf_tty_group="$cf_cv_tty_group_name" 3095d522f475Smrgelse 3096d522f475Smrg # if configure option, always do this 30970bd37d32Smrg AC_DEFINE(USE_TTY_GROUP,1,[Define to 1 if we have a tty groupname]) 3098d522f475Smrgfi 3099d522f475Smrg 31000bd37d32SmrgAC_DEFINE_UNQUOTED(TTY_GROUP_NAME,"$cf_tty_group",[Define to the name use for tty group]) 3101d522f475Smrg 3102d522f475Smrg# This is only a double-check that the group-name we obtained above really 3103d522f475Smrg# does apply to the device. We cannot perform this test if we are in batch 3104d522f475Smrg# mode, or if we are cross-compiling. 3105d522f475Smrg 3106d522f475SmrgAC_CACHE_CHECK(if we may use the $cf_tty_group group,cf_cv_tty_group,[ 3107f2e35a3aSmrgcf_tty_name="`tty`" 3108d522f475Smrgif test "$cf_tty_name" != "not a tty" 3109d522f475Smrgthen 3110d522f475SmrgAC_TRY_RUN([ 3111d522f475Smrg#include <unistd.h> 3112d522f475Smrg#include <sys/types.h> 3113d522f475Smrg#include <sys/stat.h> 3114d522f475Smrg#include <grp.h> 3115f2e35a3aSmrgint main(void) 3116d522f475Smrg{ 3117d522f475Smrg struct stat sb; 3118f2e35a3aSmrg struct group *ttygrp; 3119f2e35a3aSmrg int fd; 3120f2e35a3aSmrg char *name; 3121d522f475Smrg 3122f2e35a3aSmrg for (fd = 0; fd < 3; ++fd) { 3123f2e35a3aSmrg if ((name = ttyname(fd)) != 0) 3124f2e35a3aSmrg break; 3125f2e35a3aSmrg } 3126f2e35a3aSmrg if (name == 0) 3127f2e35a3aSmrg name = "/dev/tty"; 3128f2e35a3aSmrg 3129f2e35a3aSmrg ttygrp = getgrnam(TTY_GROUP_NAME); 3130d522f475Smrg endgrent(); 3131f2e35a3aSmrg 3132d522f475Smrg if (ttygrp != 0 3133d522f475Smrg && name != 0 3134d522f475Smrg && stat(name, &sb) == 0 3135d522f475Smrg && sb.st_gid != getgid() 3136d522f475Smrg && sb.st_gid == ttygrp->gr_gid) { 3137d522f475Smrg ${cf_cv_main_return:-return} (0); 3138d522f475Smrg } 3139d522f475Smrg ${cf_cv_main_return:-return} (1); 3140d522f475Smrg} 3141d522f475Smrg ], 3142d522f475Smrg [cf_cv_tty_group=yes], 3143d522f475Smrg [cf_cv_tty_group=no], 3144d522f475Smrg [cf_cv_tty_group=unknown]) 3145d522f475Smrgelif test "$cross_compiling" = yes; then 3146d522f475Smrg cf_cv_tty_group=unknown 3147d522f475Smrgelse 3148d522f475Smrg cf_cv_tty_group=yes 3149d522f475Smrgfi 3150d522f475Smrg]) 3151d522f475Smrg 3152d522f475Smrgif test $cf_cv_tty_group = no ; then 3153d522f475Smrg AC_MSG_WARN(Cannot use $cf_tty_group group) 3154d522f475Smrgelse 3155d522f475Smrg AC_DEFINE(USE_TTY_GROUP) 3156d522f475Smrgfi 3157d522f475Smrg])dnl 3158d522f475Smrgdnl --------------------------------------------------------------------------- 3159f2e35a3aSmrgdnl CF_TYPE_CC_T version: 3 updated: 2020/03/10 18:53:47 31600bd37d32Smrgdnl ------------ 31610bd37d32Smrgdnl Check for cc_t type, used in termio. 31620bd37d32SmrgAC_DEFUN([CF_TYPE_CC_T], 31630bd37d32Smrg[ 31640bd37d32SmrgAC_MSG_CHECKING(for cc_t in <termios.h> or <termio.h>) 31650bd37d32SmrgAC_CACHE_VAL(cf_cv_type_cc_t,[ 31660bd37d32Smrg AC_TRY_COMPILE([ 31670bd37d32Smrg#include <sys/types.h> 31680bd37d32Smrg#if defined(HAVE_TERMIOS_H) 31690bd37d32Smrg#include <termios.h> 31700bd37d32Smrg#else 31710bd37d32Smrg#include <termio.h> 31720bd37d32Smrg#include <sys/ioctl.h> 31730bd37d32Smrg#endif 31740bd37d32Smrg], 3175f2e35a3aSmrg [cc_t x; (void)x], 31760bd37d32Smrg [cf_cv_type_cc_t=yes], 31770bd37d32Smrg [cf_cv_type_cc_t=no]) 31780bd37d32Smrg ]) 31790bd37d32SmrgAC_MSG_RESULT($cf_cv_type_cc_t) 31800bd37d32Smrgtest $cf_cv_type_cc_t = no && AC_DEFINE(cc_t, unsigned char,[Define to cc_t type used in termio]) 31810bd37d32Smrg])dnl 31820bd37d32Smrgdnl --------------------------------------------------------------------------- 31830bd37d32Smrgdnl CF_TYPE_FD_MASK version: 3 updated: 2012/10/04 06:57:36 3184d522f475Smrgdnl --------------- 3185d522f475Smrgdnl Check for the declaration of fd_mask, which is like fd_set, associated 3186d522f475Smrgdnl with select(). The check for fd_set should have pulled in this as well, 3187d522f475Smrgdnl but there is a special case for Mac OS X, possibly other BSD-derived 3188d522f475Smrgdnl platforms. 3189d522f475SmrgAC_DEFUN([CF_TYPE_FD_MASK], 3190d522f475Smrg[ 3191d522f475SmrgAC_REQUIRE([CF_TYPE_FD_SET]) 3192d522f475Smrg 3193d522f475SmrgAC_CACHE_CHECK(for declaration of fd_mask,cf_cv_type_fd_mask,[ 3194d522f475Smrg if test x$cf_cv_type_fd_set = xX11/Xpoll.h ; then 3195d522f475Smrg AC_TRY_COMPILE([ 3196d522f475Smrg#include <X11/Xpoll.h>],[fd_mask x],, 3197d522f475Smrg [CF_MSG_LOG(if we must define CSRG_BASED) 3198d522f475Smrg# Xosdefs.h on Mac OS X may not define this (but it should). 3199d522f475Smrg AC_TRY_COMPILE([ 3200d522f475Smrg#define CSRG_BASED 3201d522f475Smrg#include <X11/Xpoll.h>],[fd_mask x], 3202d522f475Smrg cf_cv_type_fd_mask=CSRG_BASED)]) 3203d522f475Smrg else 3204d522f475Smrg cf_cv_type_fd_mask=$cf_cv_type_fd_set 3205d522f475Smrg fi 3206d522f475Smrg]) 3207d522f475Smrgif test x$cf_cv_type_fd_mask = xCSRG_BASED ; then 32080bd37d32Smrg AC_DEFINE(CSRG_BASED,1,[Define to 1 if needed for declaring fd_mask()]) 3209d522f475Smrgfi 3210d522f475Smrg])dnl 3211d522f475Smrgdnl --------------------------------------------------------------------------- 3212f2e35a3aSmrgdnl CF_TYPE_FD_SET version: 6 updated: 2020/03/10 18:53:47 3213d522f475Smrgdnl -------------- 3214d522f475Smrgdnl Check for the declaration of fd_set. Some platforms declare it in 3215d522f475Smrgdnl <sys/types.h>, and some in <sys/select.h>, which requires <sys/types.h>. 3216d522f475Smrgdnl Finally, if we are using this for an X application, Xpoll.h may include 3217d522f475Smrgdnl <sys/select.h>, so we don't want to do it twice. 3218d522f475SmrgAC_DEFUN([CF_TYPE_FD_SET], 3219d522f475Smrg[ 3220d522f475SmrgAC_CHECK_HEADERS(X11/Xpoll.h) 3221d522f475Smrg 3222d522f475SmrgAC_CACHE_CHECK(for declaration of fd_set,cf_cv_type_fd_set, 3223d522f475Smrg [CF_MSG_LOG(sys/types alone) 3224d522f475SmrgAC_TRY_COMPILE([ 3225d522f475Smrg#include <sys/types.h>], 3226f2e35a3aSmrg [fd_set x; (void)x], 3227d522f475Smrg [cf_cv_type_fd_set=sys/types.h], 3228d522f475Smrg [CF_MSG_LOG(X11/Xpoll.h) 3229d522f475SmrgAC_TRY_COMPILE([ 3230d522f475Smrg#ifdef HAVE_X11_XPOLL_H 3231d522f475Smrg#include <X11/Xpoll.h> 3232d522f475Smrg#endif], 3233f2e35a3aSmrg [fd_set x; (void)x], 3234d522f475Smrg [cf_cv_type_fd_set=X11/Xpoll.h], 3235d522f475Smrg [CF_MSG_LOG(sys/select.h) 3236d522f475SmrgAC_TRY_COMPILE([ 3237d522f475Smrg#include <sys/types.h> 3238d522f475Smrg#include <sys/select.h>], 3239f2e35a3aSmrg [fd_set x; (void)x], 3240d522f475Smrg [cf_cv_type_fd_set=sys/select.h], 3241d522f475Smrg [cf_cv_type_fd_set=unknown])])])]) 3242d522f475Smrgif test $cf_cv_type_fd_set = sys/select.h ; then 32430bd37d32Smrg AC_DEFINE(USE_SYS_SELECT_H,1,[Define to 1 to include sys/select.h to declare fd_set]) 3244d522f475Smrgfi 3245d522f475Smrg]) 3246d522f475Smrgdnl --------------------------------------------------------------------------- 3247e39b573cSmrgdnl CF_UNDO_CFLAGS version: 1 updated: 2011/07/02 09:27:51 3248e39b573cSmrgdnl -------------- 3249e39b573cSmrgdnl Remove flags from $CFLAGS or similar shell variable using sed. 3250e39b573cSmrgdnl $1 = variable 3251e39b573cSmrgdnl $2 = message 3252e39b573cSmrgdnl $3 = pattern to remove 3253e39b573cSmrgAC_DEFUN([CF_UNDO_CFLAGS], 3254e39b573cSmrg[ 3255e39b573cSmrg CF_VERBOSE(removing $2 flags from $1) 3256e39b573cSmrg $1=`echo "[$]$1" | sed -e 's/$3//'` 3257e39b573cSmrg CF_VERBOSE(...result [$]$1) 3258e39b573cSmrg])dnl 3259e39b573cSmrgdnl --------------------------------------------------------------------------- 3260d522f475Smrgdnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 3261d522f475Smrgdnl -------- 3262d522f475Smrgdnl Make an uppercase version of a variable 3263d522f475Smrgdnl $1=uppercase($2) 3264d522f475SmrgAC_DEFUN([CF_UPPER], 3265d522f475Smrg[ 3266d522f475Smrg$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` 3267d522f475Smrg])dnl 3268d522f475Smrgdnl --------------------------------------------------------------------------- 32690bd37d32Smrgdnl CF_UTEMPTER version: 4 updated: 2012/10/04 20:12:20 3270d522f475Smrgdnl ----------- 3271d522f475Smrgdnl Try to link with utempter library 3272d522f475SmrgAC_DEFUN([CF_UTEMPTER], 3273d522f475Smrg[ 3274d522f475SmrgAC_CACHE_CHECK(if we can link with utempter library,cf_cv_have_utempter,[ 3275d522f475Smrgcf_save_LIBS="$LIBS" 327620d2c4d2SmrgCF_ADD_LIB(utempter) 3277d522f475SmrgAC_TRY_LINK([ 3278d522f475Smrg#include <utempter.h> 3279d522f475Smrg],[ 3280d522f475Smrg addToUtmp("/dev/tty", 0, 1); 3281d522f475Smrg removeFromUtmp(); 3282d522f475Smrg],[ 3283d522f475Smrg cf_cv_have_utempter=yes],[ 3284d522f475Smrg cf_cv_have_utempter=no]) 3285d522f475SmrgLIBS="$cf_save_LIBS" 3286d522f475Smrg]) 3287d522f475Smrgif test "$cf_cv_have_utempter" = yes ; then 32880bd37d32Smrg AC_DEFINE(USE_UTEMPTER,1,[Define to 1 if we can/should link with utempter]) 328920d2c4d2Smrg CF_ADD_LIB(utempter) 3290d522f475Smrgfi 3291d522f475Smrg])dnl 3292d522f475Smrgdnl --------------------------------------------------------------------------- 3293f2e35a3aSmrgdnl CF_UTMP version: 12 updated: 2021/01/02 09:31:20 3294d522f475Smrgdnl ------- 3295d522f475Smrgdnl Check for UTMP/UTMPX headers 3296d522f475SmrgAC_DEFUN([CF_UTMP], 3297d522f475Smrg[ 3298d522f475SmrgAC_REQUIRE([CF_LASTLOG]) 3299d522f475Smrg 3300d522f475SmrgAC_CACHE_CHECK(for utmp implementation,cf_cv_have_utmp,[ 3301d522f475Smrg cf_cv_have_utmp=no 3302d522f475Smrgfor cf_header in utmpx utmp ; do 3303d522f475Smrgcf_utmp_includes=" 3304d522f475Smrg#include <sys/types.h> 3305d522f475Smrg#include <${cf_header}.h> 3306d522f475Smrg#define getutent getutxent 3307d522f475Smrg#ifdef USE_LASTLOG 3308d522f475Smrg#include <lastlog.h> /* may conflict with utmpx.h on Linux */ 3309d522f475Smrg#endif 3310d522f475Smrg" 3311d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3312d522f475Smrg [struct $cf_header x; 3313d522f475Smrg char *name = x.ut_name; /* utmp.h and compatible definitions */ 3314f2e35a3aSmrg (void)x; 3315f2e35a3aSmrg (void)name; 3316d522f475Smrg ], 3317d522f475Smrg [cf_cv_have_utmp=$cf_header 3318d522f475Smrg break], 3319d522f475Smrg [ 3320d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3321d522f475Smrg [struct $cf_header x; 3322d522f475Smrg char *name = x.ut_user; /* utmpx.h must declare this */ 3323f2e35a3aSmrg (void)x; 3324f2e35a3aSmrg (void)name; 3325d522f475Smrg ], 3326d522f475Smrg [cf_cv_have_utmp=$cf_header 3327d522f475Smrg break 3328d522f475Smrg ])]) 3329d522f475Smrgdone 3330d522f475Smrg]) 3331d522f475Smrg 3332f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 33330bd37d32Smrg AC_DEFINE(HAVE_UTMP,1,[Define to 1 if the utmp interface is available]) 3334f2e35a3aSmrg test "$cf_cv_have_utmp" = utmpx && AC_DEFINE(UTMPX_FOR_UTMP,1,[Define if we have utmpx interface]) 3335d522f475Smrg CF_UTMP_UT_HOST 3336d522f475Smrg CF_UTMP_UT_SYSLEN 3337d522f475Smrg CF_UTMP_UT_NAME 3338d522f475Smrg CF_UTMP_UT_XSTATUS 3339d522f475Smrg CF_UTMP_UT_XTIME 3340d522f475Smrg CF_UTMP_UT_SESSION 3341d522f475Smrg CF_SYSV_UTMP 3342d522f475Smrgfi 3343d522f475Smrg])dnl 3344d522f475Smrgdnl --------------------------------------------------------------------------- 3345f2e35a3aSmrgdnl CF_UTMP_GROUP version: 2 updated: 2020/12/31 10:54:15 3346d522f475Smrgdnl ------------- 3347d522f475Smrgdnl Find the utmp/utmpx file and determine its group to allow setgid programs 3348d522f475Smrgdnl to manipulate it, e.g., when there is no intermediary. 3349d522f475SmrgAC_DEFUN([CF_UTMP_GROUP],[ 3350d522f475SmrgAC_REQUIRE([CF_UTMP]) 3351d522f475Smrgif test $cf_cv_have_utmp != no ; then 3352d522f475SmrgAC_CACHE_CHECK(for utmp/utmpx group,cf_cv_utmp_group,[ 3353d522f475Smrgfor cf_utmp_path in /var/adm /var/run 3354d522f475Smrgdo 3355d522f475Smrg for cf_utmp_file in utmpx utmp 3356d522f475Smrg do 3357d522f475Smrg if test -f $cf_utmp_path/$cf_utmp_file 3358d522f475Smrg then 3359d522f475Smrg cf_cv_utmp_group=root 3360d522f475Smrg 3361f2e35a3aSmrg cf_option="-lL" 3362d522f475Smrg 3363d522f475Smrg # Expect listing to have fields like this: 3364d522f475Smrg #-r--r--r-- 1 user group 34293 Jul 18 16:29 pathname 3365f2e35a3aSmrg ls "$cf_option" "$cf_utmp_path/$cf_utmp_file" >conftest 3366d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest 3367d522f475Smrg if test -z "$cf_rest" ; then 3368f2e35a3aSmrg cf_option="${cf_option}g" 3369f2e35a3aSmrg ls "$cf_option" "$cf_utmp_path/$cf_utmp_file" >conftest 3370d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest 3371d522f475Smrg fi 3372d522f475Smrg rm -f conftest 3373d522f475Smrg 3374d522f475Smrg # If we have a pathname, and the date fields look right, assume we've 3375d522f475Smrg # captured the group as well. 3376d522f475Smrg if test -n "$cf_rest" ; then 3377d522f475Smrg cf_test=`echo "${cf_date2}${cf_date3}" | sed -e 's/[[0-9:]]//g'` 3378d522f475Smrg if test -z "$cf_test" ; then 3379d522f475Smrg cf_cv_utmp_group=$cf_grp; 3380d522f475Smrg fi 3381d522f475Smrg fi 3382d522f475Smrg break 3383d522f475Smrg fi 3384d522f475Smrg done 3385d522f475Smrg test -n "$cf_cv_utmp_group" && break 3386d522f475Smrgdone 3387d522f475Smrg]) 3388d522f475Smrgelse 3389d522f475Smrg AC_MSG_ERROR(cannot find utmp group) 3390d522f475Smrgfi 3391d522f475Smrg])dnl 3392d522f475Smrgdnl --------------------------------------------------------------------------- 3393f2e35a3aSmrgdnl CF_UTMP_UT_HOST version: 10 updated: 2021/01/02 09:31:20 3394d522f475Smrgdnl --------------- 3395d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_host member 3396d522f475SmrgAC_DEFUN([CF_UTMP_UT_HOST], 3397d522f475Smrg[ 3398f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3399d522f475SmrgAC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_host is declared) 3400d522f475SmrgAC_CACHE_VAL(cf_cv_have_utmp_ut_host,[ 3401d522f475Smrg AC_TRY_COMPILE([ 3402d522f475Smrg#include <sys/types.h> 3403d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3404f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3405f2e35a3aSmrg char *y = &x.ut_host[0]; 3406f2e35a3aSmrg (void)x; 3407f2e35a3aSmrg (void)y], 3408d522f475Smrg [cf_cv_have_utmp_ut_host=yes], 3409d522f475Smrg [cf_cv_have_utmp_ut_host=no]) 3410d522f475Smrg ]) 3411d522f475SmrgAC_MSG_RESULT($cf_cv_have_utmp_ut_host) 3412f2e35a3aSmrgtest "$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]) 3413d522f475Smrgfi 3414d522f475Smrg])dnl 3415d522f475Smrgdnl --------------------------------------------------------------------------- 3416f2e35a3aSmrgdnl CF_UTMP_UT_NAME version: 8 updated: 2021/01/02 09:31:20 3417d522f475Smrgdnl --------------- 3418d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_name member 3419d522f475SmrgAC_DEFUN([CF_UTMP_UT_NAME], 3420d522f475Smrg[ 3421f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3422d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_name is declared,cf_cv_have_utmp_ut_name,[ 3423d522f475Smrg cf_cv_have_utmp_ut_name=no 3424d522f475Smrgcf_utmp_includes=" 3425d522f475Smrg#include <sys/types.h> 3426d522f475Smrg#include <${cf_cv_have_utmp}.h> 3427d522f475Smrg#define getutent getutxent 3428d522f475Smrg#ifdef USE_LASTLOG 3429d522f475Smrg#include <lastlog.h> /* may conflict with utmpx.h on Linux */ 3430d522f475Smrg#endif 3431d522f475Smrg" 3432d522f475Smrgfor cf_header in ut_name ut_user ; do 3433d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3434d522f475Smrg [struct $cf_cv_have_utmp x; 3435d522f475Smrg char *name = x.$cf_header; 3436f2e35a3aSmrg (void)x; 3437f2e35a3aSmrg (void)name; 3438d522f475Smrg ], 3439d522f475Smrg [cf_cv_have_utmp_ut_name=$cf_header 3440d522f475Smrg break]) 3441d522f475Smrgdone 3442d522f475Smrg]) 3443d522f475Smrg 3444f2e35a3aSmrgcase "$cf_cv_have_utmp_ut_name" in 344501037d57Smrg(no) 3446d522f475Smrg AC_MSG_ERROR(Cannot find declaration for ut.ut_name) 3447d522f475Smrg ;; 344801037d57Smrg(ut_user) 34490bd37d32Smrg AC_DEFINE(ut_name,ut_user,[Define to rename UTMP/UTMPX struct ut_name member]) 3450d522f475Smrg ;; 3451d522f475Smrgesac 3452d522f475Smrgfi 3453d522f475Smrg])dnl 3454d522f475Smrgdnl --------------------------------------------------------------------------- 3455ae137402Smrgdnl CF_UTMP_UT_SESSION version: 9 updated: 2021/06/07 17:39:17 3456d522f475Smrgdnl ------------------ 3457d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_session member 3458d522f475SmrgAC_DEFUN([CF_UTMP_UT_SESSION], 3459d522f475Smrg[ 3460f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3461d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_session is declared, cf_cv_have_utmp_ut_session,[ 3462d522f475Smrg AC_TRY_COMPILE([ 3463d522f475Smrg#include <sys/types.h> 3464d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3465ae137402Smrg [static struct $cf_cv_have_utmp x; 3466f2e35a3aSmrg long y = x.ut_session; 3467f2e35a3aSmrg (void)x; 3468f2e35a3aSmrg (void)y], 3469d522f475Smrg [cf_cv_have_utmp_ut_session=yes], 3470d522f475Smrg [cf_cv_have_utmp_ut_session=no]) 3471d522f475Smrg]) 3472f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_session" != no ; then 34730bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_SESSION,1,[Define to 1 if UTMP/UTMPX struct defines ut_session member]) 3474d522f475Smrgfi 3475d522f475Smrgfi 3476d522f475Smrg])dnl 3477d522f475Smrgdnl --------------------------------------------------------------------------- 3478f2e35a3aSmrgdnl CF_UTMP_UT_SYSLEN version: 4 updated: 2021/01/02 09:31:20 3479d522f475Smrgdnl ----------------- 3480d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_syslen member 3481d522f475SmrgAC_DEFUN([CF_UTMP_UT_SYSLEN], 3482d522f475Smrg[ 3483f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3484d522f475SmrgAC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_syslen is declared) 3485d522f475SmrgAC_CACHE_VAL(cf_cv_have_utmp_ut_syslen,[ 3486d522f475Smrg AC_TRY_COMPILE([ 3487d522f475Smrg#include <sys/types.h> 3488d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3489f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3490f2e35a3aSmrg int y = x.ut_syslen; 3491f2e35a3aSmrg (void)x; 3492f2e35a3aSmrg (void)y], 3493d522f475Smrg [cf_cv_have_utmp_ut_syslen=yes], 3494d522f475Smrg [cf_cv_have_utmp_ut_syslen=no]) 3495d522f475Smrg ]) 3496d522f475SmrgAC_MSG_RESULT($cf_cv_have_utmp_ut_syslen) 3497f2e35a3aSmrgtest "$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]) 3498d522f475Smrgfi 3499d522f475Smrg])dnl 3500d522f475Smrgdnl --------------------------------------------------------------------------- 3501f2e35a3aSmrgdnl CF_UTMP_UT_XSTATUS version: 6 updated: 2021/01/02 09:31:20 3502d522f475Smrgdnl ------------------ 3503d522f475Smrgdnl Check for known variants on the UTMP/UTMPX struct's exit-status as reported 3504d522f475Smrgdnl by various people: 3505d522f475Smrgdnl 3506d522f475Smrgdnl ut_exit.__e_exit (HPUX 11 - David Ellement, also in glibc2) 3507d522f475Smrgdnl ut_exit.e_exit (SVR4) 3508d522f475Smrgdnl ut_exit.ut_e_exit (os390 - Greg Smith) 3509d522f475Smrgdnl ut_exit.ut_exit (Tru64 4.0f - Jeremie Petit, 4.0e - Tomas Vanhala) 3510d522f475Smrgdnl 3511d522f475Smrgdnl Note: utmp_xstatus is not a conventional compatibility definition in the 3512d522f475Smrgdnl system header files. 3513d522f475SmrgAC_DEFUN([CF_UTMP_UT_XSTATUS], 3514d522f475Smrg[ 3515f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3516d522f475SmrgAC_CACHE_CHECK(for exit-status in $cf_cv_have_utmp,cf_cv_have_utmp_ut_xstatus,[ 3517d522f475Smrgfor cf_result in \ 3518d522f475Smrg ut_exit.__e_exit \ 3519d522f475Smrg ut_exit.e_exit \ 3520d522f475Smrg ut_exit.ut_e_exit \ 3521d522f475Smrg ut_exit.ut_exit 3522d522f475Smrgdo 3523d522f475SmrgAC_TRY_COMPILE([ 3524d522f475Smrg#include <sys/types.h> 3525d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3526f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3527f2e35a3aSmrg long y = x.$cf_result = 0; 3528f2e35a3aSmrg (void)x; 3529f2e35a3aSmrg (void)y], 3530d522f475Smrg [cf_cv_have_utmp_ut_xstatus=$cf_result 3531d522f475Smrg break], 3532d522f475Smrg [cf_cv_have_utmp_ut_xstatus=no]) 3533d522f475Smrgdone 3534d522f475Smrg]) 3535f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_xstatus" != no ; then 35360bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_XSTATUS,1,[Define to 1 if UTMP/UTMPX has exit-status member]) 35370bd37d32Smrg AC_DEFINE_UNQUOTED(ut_xstatus,$cf_cv_have_utmp_ut_xstatus,[Define if needed to rename member ut_xstatus of UTMP/UTMPX]) 3538d522f475Smrgfi 3539d522f475Smrgfi 3540d522f475Smrg])dnl 3541d522f475Smrgdnl --------------------------------------------------------------------------- 3542f2e35a3aSmrgdnl CF_UTMP_UT_XTIME version: 11 updated: 2021/01/02 09:31:20 3543d522f475Smrgdnl ---------------- 3544d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_xtime member 3545d522f475SmrgAC_DEFUN([CF_UTMP_UT_XTIME], 3546d522f475Smrg[ 3547f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3548d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_xtime is declared, cf_cv_have_utmp_ut_xtime,[ 3549d522f475Smrg AC_TRY_COMPILE([ 3550d522f475Smrg#include <sys/types.h> 3551d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3552f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3553f2e35a3aSmrg long y = x.ut_xtime = 0; 3554f2e35a3aSmrg (void)x; 3555f2e35a3aSmrg (void)y], 3556d522f475Smrg [cf_cv_have_utmp_ut_xtime=yes], 3557d522f475Smrg [AC_TRY_COMPILE([ 3558d522f475Smrg#include <sys/types.h> 3559d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3560f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3561f2e35a3aSmrg long y = x.ut_tv.tv_sec; 3562f2e35a3aSmrg (void)x; 3563f2e35a3aSmrg (void)y], 3564d522f475Smrg [cf_cv_have_utmp_ut_xtime=define], 3565d522f475Smrg [cf_cv_have_utmp_ut_xtime=no]) 3566d522f475Smrg ]) 3567d522f475Smrg]) 3568f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_xtime" != no ; then 35690bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_XTIME,1,[Define to 1 if UTMP/UTMPX struct defines ut_xtime member]) 3570f2e35a3aSmrg if test "$cf_cv_have_utmp_ut_xtime" = define ; then 35710bd37d32Smrg AC_DEFINE(ut_xtime,ut_tv.tv_sec,[Define if needed to alternate name for utmpx.ut_xtime member]) 3572d522f475Smrg fi 3573d522f475Smrgfi 3574d522f475Smrgfi 3575d522f475Smrg])dnl 3576d522f475Smrgdnl --------------------------------------------------------------------------- 3577d522f475Smrgdnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 3578d522f475Smrgdnl ---------- 3579d522f475Smrgdnl Use AC_VERBOSE w/o the warnings 3580d522f475SmrgAC_DEFUN([CF_VERBOSE], 3581d522f475Smrg[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG 3582d522f475SmrgCF_MSG_LOG([$1]) 3583d522f475Smrg])dnl 3584d522f475Smrgdnl --------------------------------------------------------------------------- 358501037d57Smrgdnl CF_WITH_APP_CLASS version: 3 updated: 2015/04/12 15:39:00 3586e39b573cSmrgdnl ----------------- 3587e39b573cSmrgdnl Handle configure option "--with-app-class", setting the $APP_CLASS 3588e39b573cSmrgdnl variable, used for X resources. 3589e39b573cSmrgdnl 3590e39b573cSmrgdnl $1 = default value. 35910bd37d32SmrgAC_DEFUN([CF_WITH_APP_CLASS],[ 3592e39b573cSmrgAC_MSG_CHECKING(for X applications class) 3593e39b573cSmrgAC_ARG_WITH(app-class, 3594e39b573cSmrg [ --with-app-class=XXX override X applications class (default $1)], 3595e39b573cSmrg [APP_CLASS=$withval], 3596e39b573cSmrg [APP_CLASS=$1]) 3597e39b573cSmrg 359801037d57Smrgcase x$APP_CLASS in 359901037d57Smrg(*[[/@,%]]*) 3600e39b573cSmrg AC_MSG_WARN(X applications class cannot contain punctuation) 3601e39b573cSmrg APP_CLASS=$1 3602e39b573cSmrg ;; 360301037d57Smrg(x[[A-Z]]*) 3604e39b573cSmrg ;; 360501037d57Smrg(*) 3606e39b573cSmrg AC_MSG_WARN([X applications class must start with capital, ignoring $APP_CLASS]) 3607e39b573cSmrg APP_CLASS=$1 3608e39b573cSmrg ;; 3609e39b573cSmrgesac 3610e39b573cSmrg 3611e39b573cSmrgAC_MSG_RESULT($APP_CLASS) 3612e39b573cSmrg 3613e39b573cSmrgAC_SUBST(APP_CLASS) 3614e39b573cSmrg])dnl 3615e39b573cSmrgdnl --------------------------------------------------------------------------- 361601037d57Smrgdnl CF_WITH_APP_DEFAULTS version: 6 updated: 2015/01/02 09:05:50 3617e39b573cSmrgdnl -------------------- 3618e39b573cSmrgdnl Handle configure option "--with-app-defaults", setting these shell 3619e39b573cSmrgdnl variables: 36200bd37d32Smrgdnl 36210bd37d32Smrgdnl $APPSDIR is the option value, used for installing app-defaults files. 3622e39b573cSmrgdnl $no_appsdir is a "#" (comment) if "--without-app-defaults" is given. 36230bd37d32Smrgdnl 36240bd37d32Smrgdnl Most Linux's use this: 36250bd37d32Smrgdnl /usr/share/X11/app-defaults 36260bd37d32Smrgdnl Debian uses this: 36270bd37d32Smrgdnl /etc/X11/app-defaults 36280bd37d32Smrgdnl DragonFlyBSD ports uses this: 36290bd37d32Smrgdnl /usr/pkg/lib/X11/app-defaults 36300bd37d32Smrgdnl FreeBSD ports use these: 36310bd37d32Smrgdnl /usr/local/lib/X11/app-defaults 36320bd37d32Smrgdnl /usr/local/share/X11/app-defaults 36330bd37d32Smrgdnl Mandriva has these: 36340bd37d32Smrgdnl /usr/lib/X11/app-defaults 36350bd37d32Smrgdnl /usr/lib64/X11/app-defaults 36360bd37d32Smrgdnl NetBSD has these 36370bd37d32Smrgdnl /usr/X11R7/lib/X11/app-defaults 36380bd37d32Smrgdnl OpenSolaris uses 36390bd37d32Smrgdnl 32-bit: 36400bd37d32Smrgdnl /usr/X11/etc/X11/app-defaults 36410bd37d32Smrgdnl /usr/X11/share/X11/app-defaults 36420bd37d32Smrgdnl /usr/X11/lib/X11/app-defaults 364301037d57Smrgdnl OSX uses 364401037d57Smrgdnl /opt/local/share/X11/app-defaults (MacPorts) 364501037d57Smrgdnl /opt/X11/share/X11/app-defaults (non-ports) 36460bd37d32Smrgdnl 64-bit: 36470bd37d32Smrgdnl /usr/X11/etc/X11/app-defaults 36480bd37d32Smrgdnl /usr/X11/share/X11/app-defaults (I mkdir'd this) 36490bd37d32Smrgdnl /usr/X11/lib/amd64/X11/app-defaults 36500bd37d32Smrgdnl Solaris10 uses (in this order): 36510bd37d32Smrgdnl /usr/openwin/lib/X11/app-defaults 36520bd37d32Smrgdnl /usr/X11/lib/X11/app-defaults 36530bd37d32SmrgAC_DEFUN([CF_WITH_APP_DEFAULTS],[ 3654e39b573cSmrgAC_MSG_CHECKING(for directory to install resource files) 36550bd37d32SmrgAC_ARG_WITH(app-defaults, 36560bd37d32Smrg [ --with-app-defaults=DIR directory in which to install resource files (EPREFIX/lib/X11/app-defaults)], 36570bd37d32Smrg [APPSDIR=$withval], 36580bd37d32Smrg [APPSDIR='${exec_prefix}/lib/X11/app-defaults']) 36590bd37d32Smrg 36600bd37d32Smrgif test "x[$]APPSDIR" = xauto 36610bd37d32Smrgthen 36620bd37d32Smrg APPSDIR='${exec_prefix}/lib/X11/app-defaults' 36630bd37d32Smrg for cf_path in \ 366401037d57Smrg /opt/local/share/X11/app-defaults \ 366501037d57Smrg /opt/X11/share/X11/app-defaults \ 36660bd37d32Smrg /usr/share/X11/app-defaults \ 36670bd37d32Smrg /usr/X11/share/X11/app-defaults \ 36680bd37d32Smrg /usr/X11/lib/X11/app-defaults \ 36690bd37d32Smrg /usr/lib/X11/app-defaults \ 36700bd37d32Smrg /etc/X11/app-defaults \ 36710bd37d32Smrg /usr/pkg/lib/X11/app-defaults \ 36720bd37d32Smrg /usr/X11R7/lib/X11/app-defaults \ 36730bd37d32Smrg /usr/X11R6/lib/X11/app-defaults \ 36740bd37d32Smrg /usr/X11R5/lib/X11/app-defaults \ 36750bd37d32Smrg /usr/X11R4/lib/X11/app-defaults \ 36760bd37d32Smrg /usr/local/lib/X11/app-defaults \ 36770bd37d32Smrg /usr/local/share/X11/app-defaults \ 36780bd37d32Smrg /usr/lib64/X11/app-defaults 36790bd37d32Smrg do 36800bd37d32Smrg if test -d "$cf_path" ; then 36810bd37d32Smrg APPSDIR="$cf_path" 36820bd37d32Smrg break 36830bd37d32Smrg fi 36840bd37d32Smrg done 36850bd37d32Smrgelse 36860bd37d32Smrg cf_path=$APPSDIR 36870bd37d32Smrg CF_PATH_SYNTAX(cf_path) 36880bd37d32Smrgfi 36890bd37d32Smrg 36900bd37d32SmrgAC_MSG_RESULT($APPSDIR) 36910bd37d32SmrgAC_SUBST(APPSDIR) 3692e39b573cSmrg 3693e39b573cSmrgno_appsdir= 36940bd37d32Smrgif test "$APPSDIR" = no 36950bd37d32Smrgthen 36960bd37d32Smrg no_appsdir="#" 36970bd37d32Smrgelse 36980bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(APPSDIR)" 36990bd37d32Smrgfi 3700e39b573cSmrgAC_SUBST(no_appsdir) 3701e39b573cSmrg])dnl 3702e39b573cSmrgdnl --------------------------------------------------------------------------- 37030bd37d32Smrgdnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 37040bd37d32Smrgdnl ---------------- 37050bd37d32Smrgdnl Configure-option for dbmalloc. The optional parameter is used to override 37060bd37d32Smrgdnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 37070bd37d32SmrgAC_DEFUN([CF_WITH_DBMALLOC],[ 37080bd37d32SmrgCF_NO_LEAKS_OPTION(dbmalloc, 37090bd37d32Smrg [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], 37100bd37d32Smrg [USE_DBMALLOC]) 37110bd37d32Smrg 37120bd37d32Smrgif test "$with_dbmalloc" = yes ; then 37130bd37d32Smrg AC_CHECK_HEADER(dbmalloc.h, 37140bd37d32Smrg [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) 37150bd37d32Smrgfi 37160bd37d32Smrg])dnl 37170bd37d32Smrgdnl --------------------------------------------------------------------------- 3718f2e35a3aSmrgdnl CF_WITH_DESKTOP_CATEGORY version: 9 updated: 2021/01/03 18:30:50 3719e39b573cSmrgdnl ------------------------ 3720e39b573cSmrgdnl Taking into account the absence of standardization of desktop categories 3721e39b573cSmrgdnl take a look to see whether other applications on the current system are 3722e39b573cSmrgdnl assigned any/all of a set of suggested categories. 3723e39b573cSmrgdnl 3724e39b573cSmrgdnl $1 = program name 3725e39b573cSmrgdnl $2 = case-pattern to match comparable desktop files to obtain category 3726e39b573cSmrgdnl This pattern may contain wildcards. 3727e39b573cSmrgdnl $3 = suggested categories, also a case-pattern but without wildcards, 37280bd37d32Smrgdnl since it doubles as a default value for a shell case-statement. 37290bd37d32Smrgdnl $4 = categories to use if no match is found on the build-machine for the 37300bd37d32Smrgdnl --with-desktop-category "auto" setting. 3731e39b573cSmrgdnl 3732e39b573cSmrgdnl The macro tells the configure script to substitute the $DESKTOP_CATEGORY 3733e39b573cSmrgdnl value. 3734e39b573cSmrgAC_DEFUN([CF_WITH_DESKTOP_CATEGORY],[ 3735f2e35a3aSmrgAC_REQUIRE([AC_PROG_EGREP])dnl 3736f2e35a3aSmrgAC_REQUIRE([CF_DISABLE_DESKTOP])dnl 3737e39b573cSmrgif test -z "$desktop_utils" 3738e39b573cSmrgthen 3739e39b573cSmrg AC_MSG_CHECKING(for requested desktop-category) 3740e39b573cSmrg AC_ARG_WITH(desktop-category, 3741e39b573cSmrg [ --with-desktop-category=XXX one or more desktop catgories or auto], 3742e39b573cSmrg [cf_desktop_want=$withval], 3743e39b573cSmrg [cf_desktop_want=auto]) 3744e39b573cSmrg AC_MSG_RESULT($cf_desktop_want) 3745e39b573cSmrg 3746e39b573cSmrg if test "$cf_desktop_want" = auto 3747e39b573cSmrg then 3748e39b573cSmrg rm -rf conftest* 3749e39b573cSmrg cf_desktop_also= 3750e39b573cSmrg for cf_desktop_dir in \ 3751e39b573cSmrg /usr/share/app-install \ 3752e39b573cSmrg /usr/share/applications 3753e39b573cSmrg do 3754e39b573cSmrg if test -d $cf_desktop_dir 3755e39b573cSmrg then 3756e39b573cSmrg find $cf_desktop_dir -name '*.desktop' | \ 3757e39b573cSmrg while true 3758e39b573cSmrg do 3759e39b573cSmrg read cf_desktop_path 3760e39b573cSmrg test -z "$cf_desktop_path" && break 3761f2e35a3aSmrg cf_desktop_name=`basename "$cf_desktop_path" .desktop` 376201037d57Smrg case $cf_desktop_name in 376301037d57Smrg ($1|*-$1|$2) 3764e39b573cSmrg CF_VERBOSE(inspect $cf_desktop_path) 3765f2e35a3aSmrg ${EGREP-egrep} '^Categories=' "$cf_desktop_path" | \ 3766e39b573cSmrg tr ';' '\n' | \ 3767e39b573cSmrg sed -e 's%^.*=%%' -e '/^$/d' >>conftest.1 3768e39b573cSmrg ;; 3769e39b573cSmrg esac 3770e39b573cSmrg done 3771e39b573cSmrg fi 3772e39b573cSmrg done 3773e39b573cSmrg if test -s conftest.1 3774e39b573cSmrg then 3775e39b573cSmrg cf_desktop_last= 3776e39b573cSmrg sort conftest.1 | \ 3777e39b573cSmrg while true 3778e39b573cSmrg do 3779e39b573cSmrg read cf_desktop_this 3780e39b573cSmrg test -z "$cf_desktop_this" && break 3781f2e35a3aSmrg if test -s conftest.2 3782f2e35a3aSmrg then 3783f2e35a3aSmrg grep -w "$cf_desktop_this" conftest.2 >/dev/null && continue 3784f2e35a3aSmrg elif test -s conftest.3 3785f2e35a3aSmrg then 3786f2e35a3aSmrg grep -w "$cf_desktop_this" conftest.3 >/dev/null && continue 3787f2e35a3aSmrg fi 3788f2e35a3aSmrg case "$cf_desktop_this" in 3789f2e35a3aSmrg (-*) 3790f2e35a3aSmrg ;; 3791f2e35a3aSmrg (Qt*|*Xfce*|*[[ABCDEFGHIJKLMNOPQRSTUVWXYZ]][[ABCDEFGHIJKLMNOPQRSTUVWXYZ]]*) 3792f2e35a3aSmrg CF_VERBOSE(ignored $cf_desktop_this) 3793f2e35a3aSmrg echo "$cf_desktop_this" >> conftest.3 3794e39b573cSmrg ;; 379501037d57Smrg ($3) 3796f2e35a3aSmrg CF_VERBOSE(applied $cf_desktop_this) 3797f2e35a3aSmrg test "x$cf_desktop_last" != "x$cf_desktop_this" && echo "$cf_desktop_this" >>conftest.2 3798e39b573cSmrg ;; 3799e39b573cSmrg esac 3800e39b573cSmrg cf_desktop_last=$cf_desktop_this 3801e39b573cSmrg done 3802f2e35a3aSmrg cf_desktop_want="`tr '\n' ';' < conftest.2`" 3803e39b573cSmrg fi 38040bd37d32Smrg if test -n "$cf_desktop_want" 38050bd37d32Smrg then 38060bd37d32Smrg if test "$cf_desktop_want" = auto 38070bd37d32Smrg then 38080bd37d32Smrg cf_desktop_want= 38090bd37d32Smrg else 38100bd37d32Smrg # do a sanity check on the semicolon-separated list, ignore on failure 38110bd37d32Smrg cf_desktop_test=`echo "$cf_desktop_want" | sed -e 's/[[^;]]//g'` 38120bd37d32Smrg test -z "$cf_desktop_test" && cf_desktop_want= 38130bd37d32Smrg cf_desktop_test=`echo "$cf_desktop_want" | sed -e 's/^.*;$/./g'` 38140bd37d32Smrg test -z "$cf_desktop_test" && cf_desktop_want= 38150bd37d32Smrg fi 38160bd37d32Smrg fi 38170bd37d32Smrg if test -z "$cf_desktop_want" 38180bd37d32Smrg then 38190bd37d32Smrg cf_desktop_want="ifelse([$4],,ifelse([$3],,[Application;],[`echo "$3" | sed -e 's/\*//g' -e 's/|/;/g' -e 's/[[;]]*$/;/g'`]),[$4])" 38200bd37d32Smrg CF_VERBOSE(no usable value found for desktop category, using $cf_desktop_want) 38210bd37d32Smrg fi 3822e39b573cSmrg fi 3823e39b573cSmrg DESKTOP_CATEGORY=`echo "$cf_desktop_want" | sed -e 's/[[ ,]]/;/g'` 38240bd37d32Smrg CF_VERBOSE(will use Categories=$DESKTOP_CATEGORY) 3825e39b573cSmrg AC_SUBST(DESKTOP_CATEGORY) 3826e39b573cSmrgfi 3827e39b573cSmrg]) 3828e39b573cSmrgdnl --------------------------------------------------------------------------- 38290bd37d32Smrgdnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 3830e39b573cSmrgdnl --------------- 38310bd37d32Smrgdnl Configure-option for dmalloc. The optional parameter is used to override 38320bd37d32Smrgdnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 38330bd37d32SmrgAC_DEFUN([CF_WITH_DMALLOC],[ 38340bd37d32SmrgCF_NO_LEAKS_OPTION(dmalloc, 38350bd37d32Smrg [ --with-dmalloc test: use Gray Watson's dmalloc library], 38360bd37d32Smrg [USE_DMALLOC]) 38370bd37d32Smrg 38380bd37d32Smrgif test "$with_dmalloc" = yes ; then 38390bd37d32Smrg AC_CHECK_HEADER(dmalloc.h, 38400bd37d32Smrg [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) 38410bd37d32Smrgfi 38420bd37d32Smrg])dnl 38430bd37d32Smrgdnl --------------------------------------------------------------------------- 38440bd37d32Smrgdnl CF_WITH_ICONDIR version: 5 updated: 2012/07/22 09:18:02 38450bd37d32Smrgdnl --------------- 38460bd37d32Smrgdnl Handle configure option "--with-icondir", setting these shell variables: 38470bd37d32Smrgdnl 38480bd37d32Smrgdnl $ICONDIR is the option value, used for installing icon files. 3849e39b573cSmrgdnl $no_icondir is a "#" (comment) if "--without-icondir" is given. 3850e39b573cSmrgAC_DEFUN([CF_WITH_ICONDIR],[ 3851e39b573cSmrgAC_MSG_CHECKING(for directory to install icons) 38520bd37d32SmrgAC_ARG_WITH(icondir, 38530bd37d32Smrg [ --with-icondir=DIR directory in which to install icons for desktop], 38540bd37d32Smrg [ICONDIR=$withval], 38550bd37d32Smrg [test -z "$ICONDIR" && ICONDIR=no]) 38560bd37d32Smrg 38570bd37d32Smrgif test "x[$]ICONDIR" = xauto 38580bd37d32Smrgthen 38590bd37d32Smrg ICONDIR='${datadir}/icons' 38600bd37d32Smrg for cf_path in \ 38610bd37d32Smrg /usr/share/icons \ 38620bd37d32Smrg /usr/X11R6/share/icons 38630bd37d32Smrg do 38640bd37d32Smrg if test -d "$cf_path" ; then 38650bd37d32Smrg ICONDIR="$cf_path" 38660bd37d32Smrg break 38670bd37d32Smrg fi 38680bd37d32Smrg done 38690bd37d32Smrgelse 38700bd37d32Smrg cf_path=$ICONDIR 38710bd37d32Smrg CF_PATH_SYNTAX(cf_path) 38720bd37d32Smrgfi 38730bd37d32SmrgAC_MSG_RESULT($ICONDIR) 38740bd37d32SmrgAC_SUBST(ICONDIR) 3875e39b573cSmrg 3876e39b573cSmrgno_icondir= 38770bd37d32Smrgif test "$ICONDIR" = no 38780bd37d32Smrgthen 38790bd37d32Smrg no_icondir="#" 38800bd37d32Smrgelse 38810bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(ICONDIR)" 38820bd37d32Smrgfi 3883e39b573cSmrgAC_SUBST(no_icondir) 3884e39b573cSmrg])dnl 3885e39b573cSmrgdnl --------------------------------------------------------------------------- 388601037d57Smrgdnl CF_WITH_ICON_NAME version: 3 updated: 2015/04/12 15:39:00 38870bd37d32Smrgdnl ----------------- 38880bd37d32Smrgdnl Allow a default icon-name to be overridden. 38890bd37d32Smrgdnl $1 = default icon name 38900bd37d32SmrgAC_DEFUN([CF_WITH_ICON_NAME],[ 38910bd37d32SmrgAC_MSG_CHECKING(for the icon name) 38920bd37d32SmrgAC_ARG_WITH(icon-name, 38930bd37d32Smrg [ --with-icon-name=XXXX override icon name (default: $1)], 38940bd37d32Smrg [ICON_NAME="$withval"], 38950bd37d32Smrg [ICON_NAME=$1]) 38960bd37d32Smrgcase "x$ICON_NAME" in 389701037d57Smrg(xyes|xno|x) 38980bd37d32Smrg ICON_NAME=$1 38990bd37d32Smrg ;; 39000bd37d32Smrgesac 39010bd37d32SmrgAC_SUBST(ICON_NAME) 39020bd37d32SmrgAC_MSG_RESULT($ICON_NAME) 39030bd37d32Smrg])dnl 39040bd37d32Smrgdnl --------------------------------------------------------------------------- 390501037d57Smrgdnl CF_WITH_ICON_SYMLINK version: 2 updated: 2015/04/12 15:39:00 39060bd37d32Smrgdnl -------------------- 39070bd37d32Smrgdnl Workaround for systems which are (mis)configured to map all icon references 39080bd37d32Smrgdnl for xterm into "xterm" name. For instance, recent (2013) KDE ignores both 39090bd37d32Smrgdnl the name given in the .desktop file (xterm-color) and the application name 39100bd37d32Smrgdnl (xterm-dev). 39110bd37d32Smrgdnl 39120bd37d32Smrgdnl $1 = default icon name to use if symlink is wanted 39130bd37d32SmrgAC_DEFUN([CF_WITH_ICON_SYMLINK],[ 39140bd37d32SmrgAC_MSG_CHECKING(for icon symlink to use) 39150bd37d32SmrgAC_ARG_WITH(icon-symlink, 39160bd37d32Smrg [ --with-icon-symlink=XXX make symbolic link for icon name (default: $1)], 39170bd37d32Smrg [ICON_SYMLINK="$withval"], 39180bd37d32Smrg [ICON_SYMLINK=NONE]) 39190bd37d32Smrgcase "x$ICON_SYMLINK" in 392001037d57Smrg(xyes) 39210bd37d32Smrg ICON_SYMLINK=$1 39220bd37d32Smrg ;; 392301037d57Smrg(xno|x) 39240bd37d32Smrg ICON_SYMLINK=NONE 39250bd37d32Smrg ;; 39260bd37d32Smrgesac 39270bd37d32SmrgAC_SUBST(ICON_SYMLINK) 39280bd37d32SmrgAC_MSG_RESULT($ICON_SYMLINK) 39290bd37d32Smrg])dnl 39300bd37d32Smrgdnl --------------------------------------------------------------------------- 3931f2e35a3aSmrgdnl CF_WITH_ICON_THEME version: 13 updated: 2020/12/31 10:54:15 39320bd37d32Smrgdnl ------------------ 39330bd37d32Smrgdnl If asked, check for prerequisites and setup symbols to permit installing 39340bd37d32Smrgdnl one or more application icons in the Red Hat icon-theme directory 393501037d57Smrgdnl hierarchy. 39360bd37d32Smrgdnl 39370bd37d32Smrgdnl If the prerequisites are missing, give a warning and revert to the long- 39380bd37d32Smrgdnl standing pixmaps directory. 39390bd37d32Smrgdnl 39400bd37d32Smrgdnl Parameters: 39410bd37d32Smrgdnl 39420bd37d32Smrgdnl $1 = application icon. This can be a list, and is not optional. 39430bd37d32Smrgdnl $2 = default theme (defaults to hicolor) 39440bd37d32Smrgdnl $3 = formats (defaults to list [.svg .png .xpm]) 39450bd37d32Smrgdnl $4 = alternate icon if no theme is used (defaults to $1). 39460bd37d32Smrgdnl 39470bd37d32Smrgdnl Result: 3948f2e35a3aSmrgdnl ICON_NAME = basename of first item in $1, unless already set 39490bd37d32Smrgdnl ICON_LIST = reprocessed $1 39500bd37d32Smrgdnl ICON_THEME = reprocessed $2 39510bd37d32Smrgdnl ICON_FORMAT = reprocessed $3 39520bd37d32SmrgAC_DEFUN([CF_WITH_ICON_THEME], 39530bd37d32Smrg[ 39540bd37d32Smrgifelse([$1],,[ 39550bd37d32Smrg AC_MSG_ERROR([macro [CF_WITH_ICON_THEME] requires application-icon name]) 39560bd37d32Smrg],[ 39570bd37d32Smrg 39580bd37d32SmrgCF_WITH_PIXMAPDIR 39590bd37d32SmrgCF_WITH_ICONDIR 39600bd37d32Smrg 39610bd37d32SmrgAC_MSG_CHECKING(if icon theme should be used) 39620bd37d32SmrgAC_ARG_WITH(icon-theme, 39630bd37d32Smrg [ --with-icon-theme=XXX install icons into desktop theme (hicolor)], 39640bd37d32Smrg [ICON_THEME=$withval], 39650bd37d32Smrg [ICON_THEME=no]) 39660bd37d32Smrg 396701037d57Smrgcase "x$ICON_THEME" in 396801037d57Smrg(xno) 39690bd37d32Smrg ;; 397001037d57Smrg(x|xyes) 39710bd37d32Smrg ICON_THEME=ifelse([$2],,hicolor,$2) 39720bd37d32Smrg ;; 39730bd37d32Smrgesac 39740bd37d32SmrgAC_MSG_RESULT($ICON_THEME) 39750bd37d32Smrg 39760bd37d32Smrgif test "x$ICON_THEME" = xno 39770bd37d32Smrgthen 39780bd37d32Smrg if test "x$ICONDIR" != xno 39790bd37d32Smrg then 39800bd37d32Smrg CF_VERBOSE(ignoring icondir without theme) 39810bd37d32Smrg no_icondir="#" 39820bd37d32Smrg fi 39830bd37d32Smrgelse 39840bd37d32Smrg if test "x$ICONDIR" = xno 39850bd37d32Smrg then 39860bd37d32Smrg AC_MSG_ERROR(icondir must be set for icon theme) 39870bd37d32Smrg fi 39880bd37d32Smrgfi 39890bd37d32Smrg 39900bd37d32Smrg: ${ICON_FORMAT:=ifelse([$3],,[".svg .png .xpm"],[$3])} 39910bd37d32Smrg 39920bd37d32SmrgICON_LIST= 39930bd37d32Smrg 39940bd37d32Smrgifelse([$4],,[cf_icon_list=$1],[ 39950bd37d32Smrgif test "x$ICON_THEME" != xno 39960bd37d32Smrgthen 39970bd37d32Smrg cf_icon_list="$1" 39980bd37d32Smrgelse 39990bd37d32Smrg cf_icon_list="$4" 40000bd37d32Smrgfi 40010bd37d32Smrg]) 40020bd37d32Smrg 40030bd37d32SmrgAC_MSG_CHECKING([for icon(s) to install]) 40040bd37d32Smrgfor cf_name in $cf_icon_list 40050bd37d32Smrgdo 40060bd37d32Smrg CF_VERBOSE(using $ICON_FORMAT) 40070bd37d32Smrg for cf_suffix in $ICON_FORMAT 40080bd37d32Smrg do 40090bd37d32Smrg cf_icon="${cf_name}${cf_suffix}" 40100bd37d32Smrg cf_left=`echo "$cf_icon" | sed -e 's/:.*//'` 40110bd37d32Smrg if test ! -f "${cf_left}" 40120bd37d32Smrg then 40130bd37d32Smrg if test "x$srcdir" != "x." 40140bd37d32Smrg then 40150bd37d32Smrg cf_icon="${srcdir}/${cf_left}" 40160bd37d32Smrg cf_left=`echo "$cf_icon" | sed -e 's/:.*//'` 40170bd37d32Smrg if test ! -f "${cf_left}" 40180bd37d32Smrg then 40190bd37d32Smrg continue 40200bd37d32Smrg fi 40210bd37d32Smrg else 40220bd37d32Smrg continue 40230bd37d32Smrg fi 40240bd37d32Smrg fi 40250bd37d32Smrg if test "x$ICON_THEME" != xno 40260bd37d32Smrg then 4027f2e35a3aSmrg cf_base=`basename "$cf_left"` 40280bd37d32Smrg cf_trim=`echo "$cf_base" | sed -e 's/_[[0-9]][[0-9]]x[[0-9]][[0-9]]\././'` 402901037d57Smrg case "x${cf_base}" in 403001037d57Smrg (*:*) 40310bd37d32Smrg cf_next=$cf_base 40320bd37d32Smrg # user-defined mapping 40330bd37d32Smrg ;; 403401037d57Smrg (*.png) 40350bd37d32Smrg 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'` 40360bd37d32Smrg if test -z "$cf_size" 40370bd37d32Smrg then 40380bd37d32Smrg AC_MSG_WARN(cannot determine size of $cf_left) 40390bd37d32Smrg continue 40400bd37d32Smrg fi 40410bd37d32Smrg cf_next="$cf_size/apps/$cf_trim" 40420bd37d32Smrg ;; 404301037d57Smrg (*.svg) 40440bd37d32Smrg cf_next="scalable/apps/$cf_trim" 40450bd37d32Smrg ;; 404601037d57Smrg (*.xpm) 40470bd37d32Smrg CF_VERBOSE(ignored XPM file in icon theme) 40480bd37d32Smrg continue 40490bd37d32Smrg ;; 405001037d57Smrg (*_[[0-9]][[0-9]]*x[[0-9]][[0-9]]*.*) 40510bd37d32Smrg cf_size=`echo "$cf_left"|sed -e 's/^.*_\([[0-9]][[0-9]]*x[[0-9]][[0-9]]*\)\..*$/\1/'` 40520bd37d32Smrg cf_left=`echo "$cf_left"|sed -e 's/^\(.*\)_\([[0-9]][[0-9]]*x[[0-9]][[0-9]]*\)\(\..*\)$/\1\3/'` 40530bd37d32Smrg cf_next="$cf_size/apps/$cf_base" 40540bd37d32Smrg ;; 40550bd37d32Smrg esac 40560bd37d32Smrg CF_VERBOSE(adding $cf_next) 40570bd37d32Smrg cf_icon="${cf_icon}:${cf_next}" 40580bd37d32Smrg fi 40590bd37d32Smrg test -n "$ICON_LIST" && ICON_LIST="$ICON_LIST " 40600bd37d32Smrg ICON_LIST="$ICON_LIST${cf_icon}" 40610bd37d32Smrg if test -z "$ICON_NAME" 40620bd37d32Smrg then 4063f2e35a3aSmrg ICON_NAME=`basename "$cf_icon" | sed -e 's/[[.:]].*//'` 40640bd37d32Smrg fi 40650bd37d32Smrg done 40660bd37d32Smrgdone 40670bd37d32Smrg 40680bd37d32Smrgif test -n "$verbose" 40690bd37d32Smrgthen 40700bd37d32Smrg AC_MSG_CHECKING(result) 40710bd37d32Smrgfi 40720bd37d32SmrgAC_MSG_RESULT($ICON_LIST) 40730bd37d32Smrg 40740bd37d32Smrgif test -z "$ICON_LIST" 40750bd37d32Smrgthen 40760bd37d32Smrg AC_MSG_ERROR(no icons found) 40770bd37d32Smrgfi 40780bd37d32Smrg]) 40790bd37d32Smrg 40800bd37d32SmrgAC_MSG_CHECKING(for icon name) 40810bd37d32SmrgAC_MSG_RESULT($ICON_NAME) 40820bd37d32Smrg 40830bd37d32SmrgAC_SUBST(ICON_FORMAT) 40840bd37d32SmrgAC_SUBST(ICON_THEME) 40850bd37d32SmrgAC_SUBST(ICON_LIST) 40860bd37d32SmrgAC_SUBST(ICON_NAME) 40870bd37d32Smrg])dnl 40880bd37d32Smrgdnl --------------------------------------------------------------------------- 40894419d26bSmrgdnl CF_WITH_IMAKE_CFLAGS version: 12 updated: 2022/02/24 17:10:03 4090d522f475Smrgdnl -------------------- 4091d522f475Smrgdnl xterm and similar programs build more readily when propped up with imake's 4092d522f475Smrgdnl hand-tuned definitions. If we do not use imake, provide fallbacks for the 4093d522f475Smrgdnl most common definitions that we're not likely to do by autoconf tests. 4094d522f475SmrgAC_DEFUN([CF_WITH_IMAKE_CFLAGS],[ 4095d522f475SmrgAC_REQUIRE([CF_ENABLE_NARROWPROTO]) 4096d522f475Smrg 4097d522f475SmrgAC_MSG_CHECKING(if we should use imake to help) 4098d522f475SmrgCF_ARG_DISABLE(imake, 4099d522f475Smrg [ --disable-imake disable use of imake for definitions], 4100d522f475Smrg [enable_imake=no], 4101d522f475Smrg [enable_imake=yes]) 4102d522f475SmrgAC_MSG_RESULT($enable_imake) 4103d522f475Smrg 4104d522f475Smrgif test "$enable_imake" = yes ; then 410520d2c4d2Smrg CF_IMAKE_CFLAGS(ifelse([$1],,,[$1])) 4106d522f475Smrgfi 4107d522f475Smrg 4108d522f475Smrgif test -n "$IMAKE" && test -n "$IMAKE_CFLAGS" ; then 4109d522f475Smrg CF_ADD_CFLAGS($IMAKE_CFLAGS) 4110d522f475Smrgelse 4111d522f475Smrg IMAKE_CFLAGS= 4112d522f475Smrg IMAKE_LOADFLAGS= 4113d522f475Smrg CF_VERBOSE(make fallback definitions) 4114d522f475Smrg 4115d522f475Smrg # We prefer config.guess' values when we can get them, to avoid 4116d522f475Smrg # inconsistent results with uname (AIX for instance). However, 4117d522f475Smrg # config.guess is not always consistent either. 4118d522f475Smrg case $host_os in 411901037d57Smrg (*[[0-9]].[[0-9]]*) 4120d522f475Smrg UNAME_RELEASE="$host_os" 4121d522f475Smrg ;; 412201037d57Smrg (*) 4123d522f475Smrg UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown 4124d522f475Smrg ;; 4125d522f475Smrg esac 4126d522f475Smrg 4127d522f475Smrg case .$UNAME_RELEASE in 412801037d57Smrg (*[[0-9]].[[0-9]]*) 4129d522f475Smrg OSMAJORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/\..*//'` 4130d522f475Smrg OSMINORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/^[[^.]]*\.//' -e 's/\..*//' -e 's/[[^0-9]].*//' ` 4131d522f475Smrg test -z "$OSMAJORVERSION" && OSMAJORVERSION=1 4132d522f475Smrg test -z "$OSMINORVERSION" && OSMINORVERSION=0 4133d522f475Smrg IMAKE_CFLAGS="-DOSMAJORVERSION=$OSMAJORVERSION -DOSMINORVERSION=$OSMINORVERSION $IMAKE_CFLAGS" 4134d522f475Smrg ;; 4135d522f475Smrg esac 4136d522f475Smrg 4137d522f475Smrg # FUNCPROTO is standard with X11R6, but XFree86 drops it, leaving some 4138d522f475Smrg # fallback/fragments for NeedPrototypes, etc. 4139d522f475Smrg IMAKE_CFLAGS="-DFUNCPROTO=15 $IMAKE_CFLAGS" 4140d522f475Smrg 4141d522f475Smrg # If this is not set properly, Xaw's scrollbars will not work 4142d522f475Smrg if test "$enable_narrowproto" = yes ; then 4143d522f475Smrg IMAKE_CFLAGS="-DNARROWPROTO=1 $IMAKE_CFLAGS" 4144d522f475Smrg fi 4145d522f475Smrg 4146d522f475Smrg # Other special definitions: 4147d522f475Smrg case $host_os in 414801037d57Smrg (aix*) 4149d522f475Smrg # imake on AIX 5.1 defines AIXV3. really. 4150d522f475Smrg IMAKE_CFLAGS="-DAIXV3 -DAIXV4 $IMAKE_CFLAGS" 4151d522f475Smrg ;; 415201037d57Smrg (irix[[56]].*) 4153d522f475Smrg # these are needed to make SIGWINCH work in xterm 4154d522f475Smrg IMAKE_CFLAGS="-DSYSV -DSVR4 $IMAKE_CFLAGS" 4155d522f475Smrg ;; 4156d522f475Smrg esac 4157d522f475Smrg 41584419d26bSmrg # "modern" systems install X applications in /usr/bin. Other systems may 41594419d26bSmrg # use one of the X release-based directories. 41604419d26bSmrg case "$CFLAGS $CPPFLAGS $IMAKE_CFLAGS" in 41614419d26bSmrg (*-DPROJECTROOT*) 41624419d26bSmrg ;; 41634419d26bSmrg (*) 41644419d26bSmrg for cf_dir in /usr/X11R7 /usr/X11R6 /usr/X11R5 41654419d26bSmrg do 41664419d26bSmrg if test -d "$cf_dir/bin" 41674419d26bSmrg then 41684419d26bSmrg IMAKE_CFLAGS="$IMAKE_CFLAGS -DPROJECTROOT=\\\"$cf_dir\\\"" 41694419d26bSmrg break 41704419d26bSmrg fi 41714419d26bSmrg done 41724419d26bSmrg ;; 41734419d26bSmrg esac 41744419d26bSmrg 4175d522f475Smrg CF_ADD_CFLAGS($IMAKE_CFLAGS) 4176d522f475Smrg 4177d522f475Smrg AC_SUBST(IMAKE_CFLAGS) 4178d522f475Smrg AC_SUBST(IMAKE_LOADFLAGS) 4179d522f475Smrgfi 4180d522f475Smrg])dnl 4181d522f475Smrgdnl --------------------------------------------------------------------------- 4182f2e35a3aSmrgdnl CF_WITH_MAN2HTML version: 12 updated: 2021/01/03 18:30:50 418301037d57Smrgdnl ---------------- 4184f2e35a3aSmrgdnl Check for man2html and groff. Prefer man2html over groff, but use groff 4185f2e35a3aSmrgdnl as a fallback. See 4186f2e35a3aSmrgdnl 4187f2e35a3aSmrgdnl http://invisible-island.net/scripts/man2html.html 4188f2e35a3aSmrgdnl 418901037d57Smrgdnl Generate a shell script which hides the differences between the two. 419001037d57Smrgdnl 419101037d57Smrgdnl We name that "man2html.tmp". 419201037d57Smrgdnl 419301037d57Smrgdnl The shell script can be removed later, e.g., using "make distclean". 419401037d57SmrgAC_DEFUN([CF_WITH_MAN2HTML],[ 4195f2e35a3aSmrgAC_REQUIRE([CF_PROG_GROFF])dnl 4196f2e35a3aSmrgAC_REQUIRE([AC_PROG_FGREP])dnl 4197f2e35a3aSmrg 4198f2e35a3aSmrgcase "x${with_man2html}" in 4199f2e35a3aSmrg(xno) 4200f2e35a3aSmrg cf_man2html=no 4201f2e35a3aSmrg ;; 4202f2e35a3aSmrg(x|xyes) 4203f2e35a3aSmrg AC_PATH_PROG(cf_man2html,man2html,no) 4204f2e35a3aSmrg case "x$cf_man2html" in 4205f2e35a3aSmrg (x/*) 4206f2e35a3aSmrg AC_MSG_CHECKING(for the modified Earl Hood script) 4207f2e35a3aSmrg if ( $cf_man2html -help 2>&1 | grep 'Make an index of headers at the end' >/dev/null ) 4208f2e35a3aSmrg then 4209f2e35a3aSmrg cf_man2html_ok=yes 4210f2e35a3aSmrg else 4211f2e35a3aSmrg cf_man2html=no 4212f2e35a3aSmrg cf_man2html_ok=no 4213f2e35a3aSmrg fi 4214f2e35a3aSmrg AC_MSG_RESULT($cf_man2html_ok) 4215f2e35a3aSmrg ;; 4216f2e35a3aSmrg (*) 4217f2e35a3aSmrg cf_man2html=no 4218f2e35a3aSmrg ;; 4219f2e35a3aSmrg esac 4220f2e35a3aSmrgesac 422101037d57Smrg 422201037d57SmrgAC_MSG_CHECKING(for program to convert manpage to html) 422301037d57SmrgAC_ARG_WITH(man2html, 422401037d57Smrg [ --with-man2html=XXX use XXX rather than groff], 422501037d57Smrg [cf_man2html=$withval], 4226f2e35a3aSmrg [cf_man2html=$cf_man2html]) 422701037d57Smrg 422801037d57Smrgcf_with_groff=no 422901037d57Smrg 423001037d57Smrgcase $cf_man2html in 423101037d57Smrg(yes) 423201037d57Smrg AC_MSG_RESULT(man2html) 423301037d57Smrg AC_PATH_PROG(cf_man2html,man2html,no) 423401037d57Smrg ;; 423501037d57Smrg(no|groff|*/groff*) 423601037d57Smrg cf_with_groff=yes 423701037d57Smrg cf_man2html=$GROFF_PATH 423801037d57Smrg AC_MSG_RESULT($cf_man2html) 423901037d57Smrg ;; 424001037d57Smrg(*) 424101037d57Smrg AC_MSG_RESULT($cf_man2html) 424201037d57Smrg ;; 424301037d57Smrgesac 424401037d57Smrg 424501037d57SmrgMAN2HTML_TEMP="man2html.tmp" 424601037d57Smrg cat >$MAN2HTML_TEMP <<CF_EOF 42472e4f8982Smrg#!$SHELL 424801037d57Smrg# Temporary script generated by CF_WITH_MAN2HTML 424901037d57Smrg# Convert inputs to html, sending result to standard output. 425001037d57Smrg# 425101037d57Smrg# Parameters: 42522e4f8982Smrg# \${1} = rootname of file to convert 42532e4f8982Smrg# \${2} = suffix of file to convert, e.g., "1" 42542e4f8982Smrg# \${3} = macros to use, e.g., "man" 425501037d57Smrg# 425601037d57SmrgROOT=\[$]1 425701037d57SmrgTYPE=\[$]2 425801037d57SmrgMACS=\[$]3 425901037d57Smrg 426001037d57Smrgunset LANG 426101037d57Smrgunset LC_ALL 426201037d57Smrgunset LC_CTYPE 426301037d57Smrgunset LANGUAGE 426401037d57SmrgGROFF_NO_SGR=stupid 426501037d57Smrgexport GROFF_NO_SGR 426601037d57Smrg 426701037d57SmrgCF_EOF 426801037d57Smrg 4269f2e35a3aSmrgNROFF_OPTS= 427001037d57Smrgif test "x$cf_with_groff" = xyes 427101037d57Smrgthen 427201037d57Smrg MAN2HTML_NOTE="$GROFF_NOTE" 427301037d57Smrg MAN2HTML_PATH="$GROFF_PATH" 427401037d57Smrg cat >>$MAN2HTML_TEMP <<CF_EOF 4275f2e35a3aSmrg$SHELL -c "$TBL_PATH \${ROOT}.\${TYPE} | $GROFF_PATH -P -o0 -I\${ROOT}_ -Thtml -\${MACS}" 427601037d57SmrgCF_EOF 427701037d57Smrgelse 4278f2e35a3aSmrg # disable hyphenation if this is groff 4279f2e35a3aSmrg if test "x$GROFF_PATH" != xno 4280f2e35a3aSmrg then 4281f2e35a3aSmrg AC_MSG_CHECKING(if nroff is really groff) 4282f2e35a3aSmrg cf_check_groff="`$NROFF_PATH --version 2>/dev/null | grep groff`" 4283f2e35a3aSmrg test -n "$cf_check_groff" && cf_check_groff=yes 4284f2e35a3aSmrg test -n "$cf_check_groff" || cf_check_groff=no 4285f2e35a3aSmrg AC_MSG_RESULT($cf_check_groff) 4286f2e35a3aSmrg test "x$cf_check_groff" = xyes && NROFF_OPTS="-rHY=0" 4287f2e35a3aSmrg fi 428801037d57Smrg MAN2HTML_NOTE="" 428901037d57Smrg CF_PATH_SYNTAX(cf_man2html) 429001037d57Smrg MAN2HTML_PATH="$cf_man2html" 429101037d57Smrg AC_MSG_CHECKING(for $cf_man2html top/bottom margins) 429201037d57Smrg 429301037d57Smrg # for this example, expect 3 lines of content, the remainder is head/foot 429401037d57Smrg cat >conftest.in <<CF_EOF 429501037d57Smrg.TH HEAD1 HEAD2 HEAD3 HEAD4 HEAD5 429601037d57Smrg.SH SECTION 429701037d57SmrgMARKER 429801037d57SmrgCF_EOF 429901037d57Smrg 4300f2e35a3aSmrg LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out 430101037d57Smrg 4302f2e35a3aSmrg cf_man2html_1st="`${FGREP-fgrep} -n MARKER conftest.out |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`" 4303f2e35a3aSmrg cf_man2html_top=`expr "$cf_man2html_1st" - 2` 4304f2e35a3aSmrg cf_man2html_bot="`wc -l conftest.out |sed -e 's/[[^0-9]]//g'`" 4305f2e35a3aSmrg cf_man2html_bot=`expr "$cf_man2html_bot" - 2 - "$cf_man2html_top"` 430601037d57Smrg cf_man2html_top_bot="-topm=$cf_man2html_top -botm=$cf_man2html_bot" 430701037d57Smrg 430801037d57Smrg AC_MSG_RESULT($cf_man2html_top_bot) 430901037d57Smrg 431001037d57Smrg AC_MSG_CHECKING(for pagesize to use) 431101037d57Smrg for cf_block in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 431201037d57Smrg do 431301037d57Smrg cat >>conftest.in <<CF_EOF 431401037d57Smrg.nf 431501037d57Smrg0 431601037d57Smrg1 431701037d57Smrg2 431801037d57Smrg3 431901037d57Smrg4 432001037d57Smrg5 432101037d57Smrg6 432201037d57Smrg7 432301037d57Smrg8 432401037d57Smrg9 432501037d57SmrgCF_EOF 432601037d57Smrg done 432701037d57Smrg 4328f2e35a3aSmrg LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out 4329f2e35a3aSmrg cf_man2html_page="`${FGREP-fgrep} -n HEAD1 conftest.out |sed -n '$p' |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`" 433001037d57Smrg test -z "$cf_man2html_page" && cf_man2html_page=99999 433101037d57Smrg test "$cf_man2html_page" -gt 100 && cf_man2html_page=99999 433201037d57Smrg 433301037d57Smrg rm -rf conftest* 433401037d57Smrg AC_MSG_RESULT($cf_man2html_page) 433501037d57Smrg 433601037d57Smrg cat >>$MAN2HTML_TEMP <<CF_EOF 433701037d57Smrg: \${MAN2HTML_PATH=$MAN2HTML_PATH} 4338f2e35a3aSmrgMAN2HTML_OPTS="\$MAN2HTML_OPTS -index -title=\"\$ROOT(\$TYPE)\" -compress -pgsize $cf_man2html_page" 433901037d57Smrgcase \${TYPE} in 434001037d57Smrg(ms) 4341f2e35a3aSmrg $TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH -topm=0 -botm=0 \$MAN2HTML_OPTS 434201037d57Smrg ;; 434301037d57Smrg(*) 4344f2e35a3aSmrg $TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH $cf_man2html_top_bot \$MAN2HTML_OPTS 434501037d57Smrg ;; 434601037d57Smrgesac 434701037d57SmrgCF_EOF 434801037d57Smrgfi 434901037d57Smrg 435001037d57Smrgchmod 700 $MAN2HTML_TEMP 435101037d57Smrg 435201037d57SmrgAC_SUBST(MAN2HTML_NOTE) 435301037d57SmrgAC_SUBST(MAN2HTML_PATH) 435401037d57SmrgAC_SUBST(MAN2HTML_TEMP) 435501037d57Smrg])dnl 435601037d57Smrgdnl --------------------------------------------------------------------------- 4357f2e35a3aSmrgdnl CF_WITH_PCRE version: 12 updated: 2017/07/29 22:57:34 4358d522f475Smrgdnl ------------ 4359d522f475Smrgdnl Add PCRE (Perl-compatible regular expressions) to the build if it is 4360d522f475Smrgdnl available and the user requests it. Assume the application will otherwise 4361d522f475Smrgdnl use the POSIX interface. 4362d522f475Smrgdnl 4363d522f475Smrgdnl TODO allow $withval to specify package location 4364d522f475SmrgAC_DEFUN([CF_WITH_PCRE], 4365d522f475Smrg[ 436620d2c4d2SmrgAC_REQUIRE([CF_PKG_CONFIG]) 436720d2c4d2Smrg 4368d522f475SmrgAC_MSG_CHECKING(if you want to use PCRE for regular-expressions) 4369d522f475SmrgAC_ARG_WITH(pcre, 4370d522f475Smrg [ --with-pcre use PCRE for regular-expressions]) 4371d522f475Smrgtest -z "$with_pcre" && with_pcre=no 4372d522f475SmrgAC_MSG_RESULT($with_pcre) 4373d522f475Smrg 4374d522f475Smrgif test "$with_pcre" != no ; then 437520d2c4d2Smrg CF_TRY_PKG_CONFIG(libpcre,,[ 437620d2c4d2Smrg AC_CHECK_LIB(pcre,pcre_compile,, 437720d2c4d2Smrg AC_MSG_ERROR(Cannot find PCRE library))]) 437820d2c4d2Smrg 4379f2e35a3aSmrg AC_DEFINE(HAVE_LIB_PCRE,1,[Define to 1 if we can/should compile with the PCRE library]) 438020d2c4d2Smrg 4381f2e35a3aSmrg case $LIBS in 4382f2e35a3aSmrg (*pcreposix*) 4383f2e35a3aSmrg ;; 4384f2e35a3aSmrg (*) 4385f2e35a3aSmrg AC_CHECK_LIB(pcreposix,pcreposix_regcomp, 4386f2e35a3aSmrg [AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h]) 4387f2e35a3aSmrg CF_ADD_LIB(pcreposix)], 4388f2e35a3aSmrg [AC_CHECK_LIB(pcreposix,regcomp,[ 4389f2e35a3aSmrg AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h]) 4390f2e35a3aSmrg CF_ADD_LIB(pcreposix)], 4391f2e35a3aSmrg AC_MSG_ERROR(Cannot find PCRE POSIX library)])) 4392f2e35a3aSmrg ;; 4393f2e35a3aSmrg esac 4394f2e35a3aSmrgfi 4395f2e35a3aSmrg])dnl 4396f2e35a3aSmrgdnl --------------------------------------------------------------------------- 4397a5ae21e4Smrgdnl CF_WITH_PCRE2 version: 6 updated: 2021/08/11 20:35:34 4398f2e35a3aSmrgdnl ------------- 4399f2e35a3aSmrgdnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is 4400f2e35a3aSmrgdnl available and the user requests it. Assume the application will otherwise 4401f2e35a3aSmrgdnl use the POSIX interface. 4402f2e35a3aSmrgdnl 4403f2e35a3aSmrgdnl TODO allow $withval to specify package location 4404f2e35a3aSmrgAC_DEFUN([CF_WITH_PCRE2], 4405f2e35a3aSmrg[ 4406f2e35a3aSmrgAC_REQUIRE([CF_PKG_CONFIG]) 4407f2e35a3aSmrg 4408f2e35a3aSmrgAC_MSG_CHECKING(if you want to use PCRE2 for regular-expressions) 4409f2e35a3aSmrgAC_ARG_WITH(pcre2, 4410f2e35a3aSmrg [ --with-pcre2 use PCRE2 for regular-expressions]) 4411f2e35a3aSmrgtest -z "$with_pcre2" && with_pcre2=no 4412f2e35a3aSmrgAC_MSG_RESULT($with_pcre2) 4413f2e35a3aSmrg 4414f2e35a3aSmrgif test "x$with_pcre2" != xno ; then 4415f2e35a3aSmrg cf_with_pcre2_ok=no 4416f2e35a3aSmrg for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre 4417f2e35a3aSmrg do 4418f2e35a3aSmrg CF_TRY_PKG_CONFIG($cf_with_pcre2,[cf_with_pcre2_ok=yes; break]) 4419f2e35a3aSmrg done 4420f2e35a3aSmrg cf_with_pcre2_ok=yes || AC_MSG_ERROR(Cannot find PCRE2 library) 4421f2e35a3aSmrg 4422f2e35a3aSmrg AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library]) 4423f2e35a3aSmrg 4424f2e35a3aSmrg # if pkgconfig gave no results, look for the libraries directly 4425f2e35a3aSmrg case "$LIBS" in 4426f2e35a3aSmrg (*pcre2-posix*|*pcreposix*) 4427f2e35a3aSmrg ;; 4428f2e35a3aSmrg (*) 4429f2e35a3aSmrg AC_CHECK_LIB(pcre2-posix,regcomp,[ 4430f2e35a3aSmrg CF_ADD_LIB(pcre2-posix)], 4431f2e35a3aSmrg [AC_CHECK_LIB(pcreposix,regcomp,[ 4432f2e35a3aSmrg CF_ADD_LIB(pcreposix) 4433f2e35a3aSmrg ],[AC_MSG_ERROR(Cannot find PCRE2 POSIX library)])]) 4434f2e35a3aSmrg ;; 4435f2e35a3aSmrg esac 4436f2e35a3aSmrg 4437f2e35a3aSmrg # either way, check for the library header files 4438f2e35a3aSmrg AC_CHECK_HEADERS(pcre2posix.h pcreposix.h) 4439a5ae21e4Smrg AC_CHECK_FUNCS(PCRE2regcomp) 4440d522f475Smrgfi 4441d522f475Smrg])dnl 4442d522f475Smrgdnl --------------------------------------------------------------------------- 44430bd37d32Smrgdnl CF_WITH_PIXMAPDIR version: 3 updated: 2012/07/22 09:18:02 44440bd37d32Smrgdnl ----------------- 44450bd37d32Smrgdnl Handle configure option "--with-pixmapdir", setting these shell variables: 44460bd37d32Smrgdnl 44470bd37d32Smrgdnl $PIXMAPDIR is the option value, used for installing pixmap files. 44480bd37d32Smrgdnl $no_pixmapdir is a "#" (comment) if "--without-pixmapdir" is given. 44490bd37d32SmrgAC_DEFUN([CF_WITH_PIXMAPDIR],[ 44500bd37d32SmrgAC_MSG_CHECKING(for directory to install pixmaps) 44510bd37d32SmrgAC_ARG_WITH(pixmapdir, 44520bd37d32Smrg [ --with-pixmapdir=DIR directory in which to install pixmaps (DATADIR/pixmaps)], 44530bd37d32Smrg [PIXMAPDIR=$withval], 44540bd37d32Smrg [test -z "$PIXMAPDIR" && PIXMAPDIR='${datadir}/pixmaps']) 44550bd37d32Smrg 44560bd37d32Smrgif test "x[$]PIXMAPDIR" = xauto 44570bd37d32Smrgthen 44580bd37d32Smrg PIXMAPDIR='${datadir}/pixmaps' 44590bd37d32Smrg for cf_path in \ 44600bd37d32Smrg /usr/share/pixmaps \ 44610bd37d32Smrg /usr/X11R6/share/pixmaps 44620bd37d32Smrg do 44630bd37d32Smrg if test -d "$cf_path" ; then 44640bd37d32Smrg PIXMAPDIR="$cf_path" 44650bd37d32Smrg break 44660bd37d32Smrg fi 44670bd37d32Smrg done 44680bd37d32Smrgelse 44690bd37d32Smrg cf_path=$PIXMAPDIR 44700bd37d32Smrg CF_PATH_SYNTAX(cf_path) 44710bd37d32Smrgfi 44720bd37d32SmrgAC_MSG_RESULT($PIXMAPDIR) 44730bd37d32SmrgAC_SUBST(PIXMAPDIR) 44740bd37d32Smrg 44750bd37d32Smrgno_pixmapdir= 44760bd37d32Smrgif test "$PIXMAPDIR" = no 44770bd37d32Smrgthen 44780bd37d32Smrg no_pixmapdir="#" 44790bd37d32Smrgelse 44800bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(PIXMAPDIR)" 44810bd37d32Smrgfi 44820bd37d32SmrgAC_SUBST(no_pixmapdir) 44830bd37d32Smrg])dnl 44840bd37d32Smrgdnl --------------------------------------------------------------------------- 44850bd37d32Smrgdnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21 44860bd37d32Smrgdnl ---------------- 44870bd37d32SmrgAC_DEFUN([CF_WITH_VALGRIND],[ 44880bd37d32SmrgCF_NO_LEAKS_OPTION(valgrind, 44890bd37d32Smrg [ --with-valgrind test: use valgrind], 44900bd37d32Smrg [USE_VALGRIND]) 44910bd37d32Smrg])dnl 44920bd37d32Smrgdnl --------------------------------------------------------------------------- 44932e4f8982Smrgdnl CF_WITH_XINERAMA version: 1 updated: 2016/05/28 14:41:12 44942e4f8982Smrgdnl ---------------- 44952e4f8982SmrgAC_DEFUN([CF_WITH_XINERAMA], 44962e4f8982Smrg[ 44972e4f8982SmrgAC_MSG_CHECKING(if you want to use the Xinerama extension) 44982e4f8982SmrgAC_ARG_WITH(xinerama, 44992e4f8982Smrg[ --without-xinerama do not use Xinerama extension for multiscreen support], 45002e4f8982Smrg [cf_with_xinerama="$withval"], 45012e4f8982Smrg [cf_with_xinerama=yes]) 45022e4f8982SmrgAC_MSG_RESULT($cf_with_xinerama) 45032e4f8982Smrgif test "$cf_with_xinerama" = yes; then 45042e4f8982Smrg CF_XINERAMA 45052e4f8982Smrgfi 45062e4f8982Smrg])dnl 45072e4f8982Smrgdnl --------------------------------------------------------------------------- 45080bd37d32Smrgdnl CF_WITH_XPM version: 3 updated: 2012/10/04 06:57:36 45090bd37d32Smrgdnl ----------- 45100bd37d32Smrgdnl Test for Xpm library, update compiler/loader flags if it is wanted and 45110bd37d32Smrgdnl found. 45120bd37d32Smrgdnl 45130bd37d32Smrgdnl Also sets ICON_SUFFIX 45140bd37d32SmrgAC_DEFUN([CF_WITH_XPM], 45150bd37d32Smrg[ 45160bd37d32SmrgICON_SUFFIX=.xbm 45170bd37d32Smrg 45180bd37d32Smrgcf_save_cppflags="${CPPFLAGS}" 45190bd37d32Smrgcf_save_ldflags="${LDFLAGS}" 45200bd37d32Smrg 45210bd37d32SmrgAC_MSG_CHECKING(if you want to use the Xpm library for colored icon) 45220bd37d32SmrgAC_ARG_WITH(xpm, 45230bd37d32Smrg[ --with-xpm=DIR use Xpm library for colored icon, may specify path], 45240bd37d32Smrg [cf_Xpm_library="$withval"], 45250bd37d32Smrg [cf_Xpm_library=yes]) 45260bd37d32SmrgAC_MSG_RESULT($cf_Xpm_library) 45270bd37d32Smrg 45280bd37d32Smrgif test "$cf_Xpm_library" != no ; then 45290bd37d32Smrg if test "$cf_Xpm_library" != yes ; then 45300bd37d32Smrg CPPFLAGS="$CPPFLAGS -I$withval/include" 45310bd37d32Smrg LDFLAGS="$LDFLAGS -L$withval/lib" 45320bd37d32Smrg fi 45330bd37d32Smrg AC_CHECK_HEADER(X11/xpm.h,[ 45340bd37d32Smrg AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData,[ 45350bd37d32Smrg AC_DEFINE(HAVE_LIBXPM,1,[Define to 1 if we should use Xpm library]) 45360bd37d32Smrg ICON_SUFFIX=.xpm 45370bd37d32Smrg LIBS="-lXpm $LIBS"], 45380bd37d32Smrg [CPPFLAGS="${cf_save_cppflags}" LDFLAGS="${cf_save_ldflags}"], 45390bd37d32Smrg [-lX11 $X_LIBS])], 45400bd37d32Smrg [CPPFLAGS="${cf_save_cppflags}" LDFLAGS="${cf_save_ldflags}"]) 45410bd37d32Smrgfi 45420bd37d32Smrg 45430bd37d32SmrgAC_SUBST(ICON_SUFFIX) 45440bd37d32Smrg])dnl 45450bd37d32Smrgdnl --------------------------------------------------------------------------- 454601037d57Smrgdnl CF_XBOOL_RESULT version: 3 updated: 2015/04/12 15:39:00 45470bd37d32Smrgdnl --------------- 45480bd37d32Smrgdnl Translate an autoconf boolean yes/no into X11's booleans, e.g., True/False. 45490bd37d32Smrgdnl Allow for more than two values, e.g., "maybe", still using the same leading 45500bd37d32Smrgdnl capital convention. 45510bd37d32Smrgdnl 45520bd37d32Smrgdnl $1 = symbol to define 45530bd37d32Smrgdnl $2 = symbol holding value 45540bd37d32Smrgdnl $3 = description 45550bd37d32Smrgdefine([CF_XBOOL_RESULT],[ 45560bd37d32SmrgAC_MSG_RESULT([$]$2) 455701037d57Smrgcase [$]$2 in 455801037d57Smrg(yes) 45590bd37d32Smrg $2=true 45600bd37d32Smrg ;; 456101037d57Smrg(no) 45620bd37d32Smrg $2=false 45630bd37d32Smrg ;; 45640bd37d32Smrgesac 45650bd37d32Smrgcf_xbool1=`echo "[$]$2"|sed -e 's/^\(.\).*/\1/'` 45660bd37d32SmrgCF_UPPER(cf_xbool1,$cf_xbool1) 45670bd37d32Smrgcf_xbool2=`echo "[$]$2"|sed -e 's/^.//'` 45680bd37d32Smrg$2=${cf_xbool1}${cf_xbool2} 45690bd37d32SmrgAC_DEFINE_UNQUOTED($1,[$]$2,$3) 45700bd37d32SmrgAC_SUBST($2) 45710bd37d32Smrg]) 45720bd37d32Smrgdnl --------------------------------------------------------------------------- 457301037d57Smrgdnl CF_XINERAMA version: 2 updated: 2015/02/15 15:18:41 457401037d57Smrgdnl ----------- 457501037d57SmrgAC_DEFUN([CF_XINERAMA],[ 457601037d57SmrgCF_TRY_PKG_CONFIG(xinerama,[ 457701037d57Smrg AC_DEFINE(HAVE_X11_EXTENSIONS_XINERAMA_H)],[ 457801037d57Smrg AC_CHECK_LIB(Xinerama,XineramaQueryScreens, 457901037d57Smrg [CF_ADD_LIB(Xinerama) 458001037d57Smrg AC_CHECK_HEADERS( \ 458101037d57Smrg X11/extensions/Xinerama.h \ 458201037d57Smrg ) 458301037d57Smrg ]) 458401037d57Smrg ]) 458501037d57Smrg])dnl 458601037d57Smrgdnl --------------------------------------------------------------------------- 4587f2e35a3aSmrgdnl CF_XKB_BELL_EXT version: 6 updated: 2020/03/10 18:53:47 4588d522f475Smrgdnl --------------- 4589d522f475Smrgdnl Check for XKB bell extension 4590d522f475SmrgAC_DEFUN([CF_XKB_BELL_EXT],[ 4591f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 4592f2e35a3aSmrg 4593f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_XKB_BELL_EXT]) 4594f2e35a3aSmrg 4595d522f475SmrgAC_CACHE_CHECK(for XKB Bell extension, cf_cv_xkb_bell_ext,[ 4596d522f475SmrgAC_TRY_LINK([ 4597956cc18dSsnj#include <X11/Intrinsic.h> 4598d522f475Smrg#include <X11/XKBlib.h> /* has the prototype */ 4599d522f475Smrg#include <X11/extensions/XKBbells.h> /* has the XkbBI_xxx definitions */ 4600d522f475Smrg],[ 4601956cc18dSsnj int x = (XkbBI_Info |XkbBI_MinorError |XkbBI_MajorError |XkbBI_TerminalBell |XkbBI_MarginBell); 4602f2e35a3aSmrg Atom y = 0; 4603f2e35a3aSmrg (void)x; 4604956cc18dSsnj XkbBell((Display *)0, (Widget)0, 0, y); 4605d522f475Smrg],[cf_cv_xkb_bell_ext=yes],[cf_cv_xkb_bell_ext=no]) 4606d522f475Smrg]) 46070bd37d32Smrgtest "$cf_cv_xkb_bell_ext" = yes && AC_DEFINE(HAVE_XKB_BELL_EXT,1,[Define 1 if we have XKB Bell extension]) 4608f2e35a3aSmrg 4609f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_XKB_BELL_EXT]) 46100bd37d32Smrg]) 46110bd37d32Smrgdnl --------------------------------------------------------------------------- 4612f2e35a3aSmrgdnl CF_XKB_KEYCODE_TO_KEYSYM version: 3 updated: 2020/03/10 18:53:47 46130bd37d32Smrgdnl ------------------------ 46140bd37d32Smrgdnl Some older vendor-unix systems made a practice of delivering fragments of 46150bd37d32Smrgdnl Xkb, requiring test-compiles. 46160bd37d32SmrgAC_DEFUN([CF_XKB_KEYCODE_TO_KEYSYM],[ 46170bd37d32SmrgAC_CACHE_CHECK(if we can use XkbKeycodeToKeysym, cf_cv_xkb_keycode_to_keysym,[ 46180bd37d32SmrgAC_TRY_COMPILE([ 46190bd37d32Smrg#include <X11/Xlib.h> 46200bd37d32Smrg#include <X11/XKBlib.h> 46210bd37d32Smrg],[ 46220bd37d32Smrg KeySym keysym = XkbKeycodeToKeysym((Display *)0, 0, 0, 0); 4623f2e35a3aSmrg (void)keysym; 46240bd37d32Smrg],[ 46250bd37d32Smrgcf_cv_xkb_keycode_to_keysym=yes 46260bd37d32Smrg],[ 46270bd37d32Smrgcf_cv_xkb_keycode_to_keysym=no 46280bd37d32Smrg]) 46290bd37d32Smrg]) 46300bd37d32Smrg 46310bd37d32Smrgif test $cf_cv_xkb_keycode_to_keysym = yes 46320bd37d32Smrgthen 46330bd37d32Smrg AC_CHECK_FUNCS(XkbKeycodeToKeysym) 46340bd37d32Smrgfi 46350bd37d32Smrg]) 46360bd37d32Smrgdnl --------------------------------------------------------------------------- 46370bd37d32Smrgdnl CF_XKB_QUERY_EXTENSION version: 2 updated: 2012/09/28 20:23:46 46380bd37d32Smrgdnl ---------------------- 46390bd37d32Smrgdnl see ifdef in scrollbar.c - iron out here 46400bd37d32SmrgAC_DEFUN([CF_XKB_QUERY_EXTENSION],[ 46410bd37d32SmrgAC_CACHE_CHECK(if we can use XkbQueryExtension, cf_cv_xkb_query_extension,[ 46420bd37d32SmrgAC_TRY_COMPILE([ 46430bd37d32Smrg#include <X11/Xlib.h> 46440bd37d32Smrg#include <X11/extensions/XKB.h> 46450bd37d32Smrg#include <X11/XKBlib.h> 46460bd37d32Smrg],[ 46470bd37d32Smrg int xkbmajor = XkbMajorVersion; 46480bd37d32Smrg int xkbminor = XkbMinorVersion; 46490bd37d32Smrg int xkbopcode, xkbevent, xkberror; 46500bd37d32Smrg 46510bd37d32Smrg if (XkbLibraryVersion(&xkbmajor, &xkbminor) 46520bd37d32Smrg && XkbQueryExtension((Display *)0, 46530bd37d32Smrg &xkbopcode, 46540bd37d32Smrg &xkbevent, 46550bd37d32Smrg &xkberror, 46560bd37d32Smrg &xkbmajor, 46570bd37d32Smrg &xkbminor)) 46580bd37d32Smrg return 0; 46590bd37d32Smrg],[ 46600bd37d32Smrgcf_cv_xkb_query_extension=yes 46610bd37d32Smrg],[ 46620bd37d32Smrgcf_cv_xkb_query_extension=no 46630bd37d32Smrg]) 46640bd37d32Smrg]) 46650bd37d32Smrg 46660bd37d32Smrgif test $cf_cv_xkb_query_extension = yes 46670bd37d32Smrgthen 46680bd37d32Smrg AC_CHECK_FUNCS(XkbQueryExtension) 46690bd37d32Smrgfi 4670d522f475Smrg]) 4671d522f475Smrgdnl --------------------------------------------------------------------------- 4672a5ae21e4Smrgdnl CF_XOPEN_SOURCE version: 59 updated: 2021/08/28 15:20:37 4673d522f475Smrgdnl --------------- 4674d522f475Smrgdnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions, 4675d522f475Smrgdnl or adapt to the vendor's definitions to get equivalent functionality, 4676d522f475Smrgdnl without losing the common non-POSIX features. 4677d522f475Smrgdnl 4678d522f475Smrgdnl Parameters: 4679d522f475Smrgdnl $1 is the nominal value for _XOPEN_SOURCE 4680d522f475Smrgdnl $2 is the nominal value for _POSIX_C_SOURCE 4681d522f475SmrgAC_DEFUN([CF_XOPEN_SOURCE],[ 46820bd37d32SmrgAC_REQUIRE([AC_CANONICAL_HOST]) 4683f2e35a3aSmrgAC_REQUIRE([CF_POSIX_VISIBLE]) 4684f2e35a3aSmrg 4685f2e35a3aSmrgif test "$cf_cv_posix_visible" = no; then 4686d522f475Smrg 468720d2c4d2Smrgcf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) 468820d2c4d2Smrgcf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) 468920d2c4d2Smrgcf_xopen_source= 4690d522f475Smrg 4691f2e35a3aSmrgcase "$host_os" in 469201037d57Smrg(aix[[4-7]]*) 469320d2c4d2Smrg cf_xopen_source="-D_ALL_SOURCE" 469420d2c4d2Smrg ;; 4695913cc679Smrg(msys) 4696e39b573cSmrg cf_XOPEN_SOURCE=600 4697e39b573cSmrg ;; 469801037d57Smrg(darwin[[0-8]].*) 469920d2c4d2Smrg cf_xopen_source="-D_APPLE_C_SOURCE" 470020d2c4d2Smrg ;; 470101037d57Smrg(darwin*) 470220d2c4d2Smrg cf_xopen_source="-D_DARWIN_C_SOURCE" 47030bd37d32Smrg cf_XOPEN_SOURCE= 4704d522f475Smrg ;; 4705f2e35a3aSmrg(freebsd*|dragonfly*|midnightbsd*) 4706d522f475Smrg # 5.x headers associate 4707d522f475Smrg # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L 4708d522f475Smrg # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L 4709d522f475Smrg cf_POSIX_C_SOURCE=200112L 4710d522f475Smrg cf_XOPEN_SOURCE=600 471120d2c4d2Smrg cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" 471220d2c4d2Smrg ;; 471301037d57Smrg(hpux11*) 471420d2c4d2Smrg cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" 4715d522f475Smrg ;; 471601037d57Smrg(hpux*) 471720d2c4d2Smrg cf_xopen_source="-D_HPUX_SOURCE" 4718d522f475Smrg ;; 471901037d57Smrg(irix[[56]].*) 472020d2c4d2Smrg cf_xopen_source="-D_SGI_SOURCE" 47210bd37d32Smrg cf_XOPEN_SOURCE= 4722d522f475Smrg ;; 4723913cc679Smrg(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) 4724f2e35a3aSmrg CF_GNU_SOURCE($cf_XOPEN_SOURCE) 4725d522f475Smrg ;; 472601037d57Smrg(minix*) 472701037d57Smrg cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... 472801037d57Smrg ;; 472901037d57Smrg(mirbsd*) 47300bd37d32Smrg # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types 47310bd37d32Smrg cf_XOPEN_SOURCE= 47320bd37d32Smrg CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 4733d522f475Smrg ;; 473401037d57Smrg(netbsd*) 47350bd37d32Smrg cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw 47360bd37d32Smrg ;; 4737ae137402Smrg(openbsd[[6-9]]*) 4738ae137402Smrg # OpenBSD 6.x has broken locale support, both compile-time and runtime. 4739ae137402Smrg # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html 4740ae137402Smrg # Abusing the conformance level is a workaround. 4741ae137402Smrg AC_MSG_WARN(this system does not provide usable locale support) 4742ae137402Smrg cf_xopen_source="-D_BSD_SOURCE" 4743ae137402Smrg cf_XOPEN_SOURCE=700 4744ae137402Smrg ;; 4745ae137402Smrg(openbsd[[4-5]]*) 47460bd37d32Smrg # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw 47470bd37d32Smrg cf_xopen_source="-D_BSD_SOURCE" 47480bd37d32Smrg cf_XOPEN_SOURCE=600 4749d522f475Smrg ;; 475001037d57Smrg(openbsd*) 4751d522f475Smrg # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw 4752d522f475Smrg ;; 475301037d57Smrg(osf[[45]]*) 475420d2c4d2Smrg cf_xopen_source="-D_OSF_SOURCE" 4755d522f475Smrg ;; 475601037d57Smrg(nto-qnx*) 475720d2c4d2Smrg cf_xopen_source="-D_QNX_SOURCE" 4758d522f475Smrg ;; 475901037d57Smrg(sco*) 4760d522f475Smrg # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer 4761d522f475Smrg ;; 476201037d57Smrg(solaris2.*) 476320d2c4d2Smrg cf_xopen_source="-D__EXTENSIONS__" 4764894e0ac8Smrg cf_cv_xopen_source=broken 4765d522f475Smrg ;; 476601037d57Smrg(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) 476701037d57Smrg cf_XOPEN_SOURCE= 476801037d57Smrg cf_POSIX_C_SOURCE= 476901037d57Smrg ;; 477001037d57Smrg(*) 47710bd37d32Smrg CF_TRY_XOPEN_SOURCE 4772d522f475Smrg CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 4773d522f475Smrg ;; 4774d522f475Smrgesac 477520d2c4d2Smrg 477620d2c4d2Smrgif test -n "$cf_xopen_source" ; then 4777a5ae21e4Smrg CF_APPEND_CFLAGS($cf_xopen_source,true) 477820d2c4d2Smrgfi 47790bd37d32Smrg 47800bd37d32Smrgdnl In anything but the default case, we may have system-specific setting 47810bd37d32Smrgdnl which is still not guaranteed to provide all of the entrypoints that 47820bd37d32Smrgdnl _XOPEN_SOURCE would yield. 47830bd37d32Smrgif test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then 47840bd37d32Smrg AC_MSG_CHECKING(if _XOPEN_SOURCE really is set) 47850bd37d32Smrg AC_TRY_COMPILE([#include <stdlib.h>],[ 47860bd37d32Smrg#ifndef _XOPEN_SOURCE 47870bd37d32Smrgmake an error 47880bd37d32Smrg#endif], 47890bd37d32Smrg [cf_XOPEN_SOURCE_set=yes], 47900bd37d32Smrg [cf_XOPEN_SOURCE_set=no]) 47910bd37d32Smrg AC_MSG_RESULT($cf_XOPEN_SOURCE_set) 4792f2e35a3aSmrg if test "$cf_XOPEN_SOURCE_set" = yes 47930bd37d32Smrg then 47940bd37d32Smrg AC_TRY_COMPILE([#include <stdlib.h>],[ 47950bd37d32Smrg#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE 47960bd37d32Smrgmake an error 47970bd37d32Smrg#endif], 47980bd37d32Smrg [cf_XOPEN_SOURCE_set_ok=yes], 47990bd37d32Smrg [cf_XOPEN_SOURCE_set_ok=no]) 4800f2e35a3aSmrg if test "$cf_XOPEN_SOURCE_set_ok" = no 48010bd37d32Smrg then 48020bd37d32Smrg AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) 48030bd37d32Smrg fi 48040bd37d32Smrg else 48050bd37d32Smrg CF_TRY_XOPEN_SOURCE 48060bd37d32Smrg fi 48070bd37d32Smrgfi 4808f2e35a3aSmrgfi # cf_cv_posix_visible 4809d522f475Smrg]) 4810d522f475Smrgdnl --------------------------------------------------------------------------- 4811f2e35a3aSmrgdnl CF_X_ATHENA version: 24 updated: 2020/03/10 18:53:47 4812d522f475Smrgdnl ----------- 4813d522f475Smrgdnl Check for Xaw (Athena) libraries 4814d522f475Smrgdnl 4815d522f475Smrgdnl Sets $cf_x_athena according to the flavor of Xaw which is used. 4816d522f475SmrgAC_DEFUN([CF_X_ATHENA], 481720d2c4d2Smrg[ 48186879286fSmrgcf_x_athena=${cf_x_athena:-Xaw} 4819d522f475Smrg 4820d522f475SmrgAC_MSG_CHECKING(if you want to link with Xaw 3d library) 4821d522f475Smrgwithval= 4822d522f475SmrgAC_ARG_WITH(Xaw3d, 4823d522f475Smrg [ --with-Xaw3d link with Xaw 3d library]) 4824d522f475Smrgif test "$withval" = yes ; then 4825d522f475Smrg cf_x_athena=Xaw3d 4826d522f475Smrg AC_MSG_RESULT(yes) 4827d522f475Smrgelse 4828d522f475Smrg AC_MSG_RESULT(no) 4829d522f475Smrgfi 4830d522f475Smrg 483101037d57SmrgAC_MSG_CHECKING(if you want to link with Xaw 3d xft library) 483201037d57Smrgwithval= 483301037d57SmrgAC_ARG_WITH(Xaw3dxft, 483401037d57Smrg [ --with-Xaw3dxft link with Xaw 3d xft library]) 483501037d57Smrgif test "$withval" = yes ; then 483601037d57Smrg cf_x_athena=Xaw3dxft 483701037d57Smrg AC_MSG_RESULT(yes) 483801037d57Smrgelse 483901037d57Smrg AC_MSG_RESULT(no) 484001037d57Smrgfi 484101037d57Smrg 4842d522f475SmrgAC_MSG_CHECKING(if you want to link with neXT Athena library) 4843d522f475Smrgwithval= 4844d522f475SmrgAC_ARG_WITH(neXtaw, 4845d522f475Smrg [ --with-neXtaw link with neXT Athena library]) 4846d522f475Smrgif test "$withval" = yes ; then 4847d522f475Smrg cf_x_athena=neXtaw 4848d522f475Smrg AC_MSG_RESULT(yes) 4849d522f475Smrgelse 4850d522f475Smrg AC_MSG_RESULT(no) 4851d522f475Smrgfi 4852d522f475Smrg 4853d522f475SmrgAC_MSG_CHECKING(if you want to link with Athena-Plus library) 4854d522f475Smrgwithval= 4855d522f475SmrgAC_ARG_WITH(XawPlus, 4856d522f475Smrg [ --with-XawPlus link with Athena-Plus library]) 4857d522f475Smrgif test "$withval" = yes ; then 4858d522f475Smrg cf_x_athena=XawPlus 4859d522f475Smrg AC_MSG_RESULT(yes) 4860d522f475Smrgelse 4861d522f475Smrg AC_MSG_RESULT(no) 4862d522f475Smrgfi 4863d522f475Smrg 4864d522f475Smrgcf_x_athena_lib="" 4865d522f475Smrg 486620d2c4d2Smrgif test "$PKG_CONFIG" != none ; then 486720d2c4d2Smrg cf_athena_list= 486820d2c4d2Smrg test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" 486920d2c4d2Smrg for cf_athena_pkg in \ 487020d2c4d2Smrg $cf_athena_list \ 487120d2c4d2Smrg ${cf_x_athena} \ 487220d2c4d2Smrg ${cf_x_athena}-devel \ 487320d2c4d2Smrg lib${cf_x_athena} \ 487420d2c4d2Smrg lib${cf_x_athena}-devel 487520d2c4d2Smrg do 487620d2c4d2Smrg CF_TRY_PKG_CONFIG($cf_athena_pkg,[ 487720d2c4d2Smrg cf_x_athena_lib="$cf_pkgconfig_libs" 487820d2c4d2Smrg CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) 487920d2c4d2Smrg AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) 48806879286fSmrg 4881e0a2b6dfSmrg CF_TRIM_X_LIBS 4882e0a2b6dfSmrg 48836879286fSmrgAC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[ 48846879286fSmrgAC_TRY_LINK([ 48856879286fSmrg#include <X11/Xmu/CharSet.h> 48866879286fSmrg],[ 4887f2e35a3aSmrgint check = XmuCompareISOLatin1("big", "small"); 4888f2e35a3aSmrg(void)check; 48896879286fSmrg],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])]) 48906879286fSmrg 48916879286fSmrg if test "$cf_cv_xaw_compat" = no 48926879286fSmrg then 48936879286fSmrg # workaround for broken ".pc" files... 489401037d57Smrg case "$cf_x_athena_lib" in 489501037d57Smrg (*-lXmu*) 48966879286fSmrg ;; 489701037d57Smrg (*) 48986879286fSmrg CF_VERBOSE(work around broken package) 4899e0a2b6dfSmrg cf_save_xmu="$LIBS" 4900e0a2b6dfSmrg cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'` 4901e0a2b6dfSmrg CF_TRY_PKG_CONFIG(xmu,[ 4902e0a2b6dfSmrg LIBS="$cf_save_xmu" 4903e0a2b6dfSmrg CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs) 4904e0a2b6dfSmrg ],[ 4905e0a2b6dfSmrg CF_ADD_LIB_AFTER($cf_first_lib,-lXmu) 4906e0a2b6dfSmrg ]) 4907e0a2b6dfSmrg CF_TRIM_X_LIBS 49086879286fSmrg ;; 49096879286fSmrg esac 49106879286fSmrg fi 49116879286fSmrg 491220d2c4d2Smrg break]) 491320d2c4d2Smrg done 491420d2c4d2Smrgfi 491520d2c4d2Smrg 491620d2c4d2Smrgif test -z "$cf_x_athena_lib" ; then 491720d2c4d2Smrg CF_X_EXT 491820d2c4d2Smrg CF_X_TOOLKIT 491920d2c4d2Smrg CF_X_ATHENA_CPPFLAGS($cf_x_athena) 492020d2c4d2Smrg CF_X_ATHENA_LIBS($cf_x_athena) 492120d2c4d2Smrgfi 4922d522f475Smrg])dnl 4923d522f475Smrgdnl --------------------------------------------------------------------------- 4924f2e35a3aSmrgdnl CF_X_ATHENA_CPPFLAGS version: 9 updated: 2020/12/31 10:54:15 4925d522f475Smrgdnl -------------------- 4926d522f475Smrgdnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of 4927d522f475Smrgdnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. 4928d522f475SmrgAC_DEFUN([CF_X_ATHENA_CPPFLAGS], 4929d522f475Smrg[ 4930f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 493120d2c4d2Smrgcf_x_athena_root=ifelse([$1],,Xaw,[$1]) 493220d2c4d2Smrgcf_x_athena_inc="" 4933d522f475Smrg 4934d522f475Smrgfor cf_path in default \ 4935d522f475Smrg /usr/contrib/X11R6 \ 4936d522f475Smrg /usr/contrib/X11R5 \ 4937d522f475Smrg /usr/lib/X11R5 \ 4938d522f475Smrg /usr/local 4939d522f475Smrgdo 494020d2c4d2Smrg if test -z "$cf_x_athena_inc" ; then 4941f2e35a3aSmrg CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS]) 4942d522f475Smrg cf_test=X11/$cf_x_athena_root/SimpleMenu.h 4943f2e35a3aSmrg if test "$cf_path" != default ; then 4944f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include) 4945d522f475Smrg AC_MSG_CHECKING(for $cf_test in $cf_path) 4946d522f475Smrg else 4947d522f475Smrg AC_MSG_CHECKING(for $cf_test) 4948d522f475Smrg fi 4949d522f475Smrg AC_TRY_COMPILE([ 4950d522f475Smrg#include <X11/Intrinsic.h> 4951d522f475Smrg#include <$cf_test>],[], 4952d522f475Smrg [cf_result=yes], 4953d522f475Smrg [cf_result=no]) 4954d522f475Smrg AC_MSG_RESULT($cf_result) 4955f2e35a3aSmrg CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS]) 4956d522f475Smrg if test "$cf_result" = yes ; then 4957f2e35a3aSmrg test "$cf_path" = default && cf_x_athena_inc=default 4958f2e35a3aSmrg test "$cf_path" != default && cf_x_athena_inc="$cf_path/include" 4959d522f475Smrg break 4960d522f475Smrg fi 4961d522f475Smrg fi 4962d522f475Smrgdone 4963d522f475Smrg 496420d2c4d2Smrgif test -z "$cf_x_athena_inc" ; then 4965f2e35a3aSmrg AC_MSG_WARN([Unable to find Athena header files]) 496620d2c4d2Smrgelif test "$cf_x_athena_inc" != default ; then 4967f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc) 4968d522f475Smrgfi 4969d522f475Smrg]) 4970d522f475Smrgdnl --------------------------------------------------------------------------- 4971f2e35a3aSmrgdnl CF_X_ATHENA_LIBS version: 13 updated: 2020/01/11 18:16:10 4972d522f475Smrgdnl ---------------- 4973d522f475Smrgdnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of 4974d522f475Smrgdnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. 4975d522f475SmrgAC_DEFUN([CF_X_ATHENA_LIBS], 4976d522f475Smrg[AC_REQUIRE([CF_X_TOOLKIT]) 497720d2c4d2Smrgcf_x_athena_root=ifelse([$1],,Xaw,[$1]) 4978d522f475Smrgcf_x_athena_lib="" 4979d522f475Smrg 4980d522f475Smrgfor cf_path in default \ 4981d522f475Smrg /usr/contrib/X11R6 \ 4982d522f475Smrg /usr/contrib/X11R5 \ 4983d522f475Smrg /usr/lib/X11R5 \ 4984d522f475Smrg /usr/local 4985d522f475Smrgdo 4986d522f475Smrg for cf_lib in \ 49870bd37d32Smrg ${cf_x_athena_root} \ 49880bd37d32Smrg ${cf_x_athena_root}7 \ 49890bd37d32Smrg ${cf_x_athena_root}6 49900bd37d32Smrg do 49910bd37d32Smrg for cf_libs in \ 49920bd37d32Smrg "-l$cf_lib -lXmu" \ 49930bd37d32Smrg "-l$cf_lib -lXpm -lXmu" \ 49940bd37d32Smrg "-l${cf_lib}_s -lXmu_s" 4995d522f475Smrg do 4996f2e35a3aSmrg test -n "$cf_x_athena_lib" && break 4997f2e35a3aSmrg 4998f2e35a3aSmrg CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_LIBS]) 4999f2e35a3aSmrg cf_test=XawSimpleMenuAddGlobalActions 5000f2e35a3aSmrg test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs" 5001f2e35a3aSmrg CF_ADD_LIBS($cf_libs) 5002f2e35a3aSmrg AC_MSG_CHECKING(for $cf_test in $cf_libs) 5003f2e35a3aSmrg AC_TRY_LINK([ 5004a1f3da82Smrg#include <X11/Intrinsic.h> 5005a1f3da82Smrg#include <X11/$cf_x_athena_root/SimpleMenu.h> 5006a1f3da82Smrg],[ 5007a1f3da82Smrg$cf_test((XtAppContext) 0)], 5008f2e35a3aSmrg [cf_result=yes], 5009f2e35a3aSmrg [cf_result=no]) 5010f2e35a3aSmrg AC_MSG_RESULT($cf_result) 5011f2e35a3aSmrg CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_LIBS]) 5012f2e35a3aSmrg 5013f2e35a3aSmrg if test "$cf_result" = yes ; then 5014f2e35a3aSmrg cf_x_athena_lib="$cf_libs" 5015f2e35a3aSmrg break 5016d522f475Smrg fi 50170bd37d32Smrg done # cf_libs 50180bd37d32Smrg test -n "$cf_x_athena_lib" && break 50190bd37d32Smrg done # cf_lib 5020d522f475Smrgdone 5021d522f475Smrg 5022d522f475Smrgif test -z "$cf_x_athena_lib" ; then 5023d522f475Smrg AC_MSG_ERROR( 5024d522f475Smrg[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program]) 5025d522f475Smrgfi 5026d522f475Smrg 5027f2e35a3aSmrgCF_ADD_LIBS($cf_x_athena_lib) 5028d522f475SmrgCF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) 5029d522f475SmrgAC_DEFINE_UNQUOTED($cf_x_athena_LIBS) 5030d522f475Smrg]) 5031d522f475Smrgdnl --------------------------------------------------------------------------- 503220d2c4d2Smrgdnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05 503320d2c4d2Smrgdnl -------- 503420d2c4d2SmrgAC_DEFUN([CF_X_EXT],[ 503520d2c4d2SmrgCF_TRY_PKG_CONFIG(Xext,,[ 503620d2c4d2Smrg AC_CHECK_LIB(Xext,XextCreateExtension, 503720d2c4d2Smrg [CF_ADD_LIB(Xext)])]) 503820d2c4d2Smrg])dnl 503920d2c4d2Smrgdnl --------------------------------------------------------------------------- 5040f2e35a3aSmrgdnl CF_X_EXT_DOUBLE_BUFFER version: 1 updated: 2019/07/18 21:09:40 5041f2e35a3aSmrgdnl ---------------------- 5042f2e35a3aSmrgAC_DEFUN([CF_X_EXT_DOUBLE_BUFFER],[ 5043f2e35a3aSmrgAC_REQUIRE([CF_X_EXT]) 5044f2e35a3aSmrgAC_CHECK_HEADER(X11/extensions/Xdbe.h, 5045f2e35a3aSmrg AC_DEFINE(HAVE_X11_EXTENSIONS_XDBE_H,1,[Define to 1 if we have X11/extensions/Xdbe.h]) 5046f2e35a3aSmrg AC_CHECK_FUNC(XdbeSwapBuffers, 5047f2e35a3aSmrg [AC_DEFINE(HAVE_XDBESWAPBUFFERS,1,[Define to 1 if we have XdbeSwapBuffers]) 5048f2e35a3aSmrg cf_x_ext_double_buffer=yes])) 5049f2e35a3aSmrg])dnl 5050f2e35a3aSmrgdnl --------------------------------------------------------------------------- 5051f2e35a3aSmrgdnl CF_X_FONTCONFIG version: 7 updated: 2020/03/10 18:53:47 50526879286fSmrgdnl --------------- 50536879286fSmrgdnl Check for fontconfig library, a dependency of the X FreeType library. 50546879286fSmrgAC_DEFUN([CF_X_FONTCONFIG], 50556879286fSmrg[ 50566879286fSmrgAC_REQUIRE([CF_X_FREETYPE]) 50576879286fSmrg 5058e39b573cSmrgif test "$cf_cv_found_freetype" = yes ; then 50596879286fSmrgAC_CACHE_CHECK(for usable Xft/fontconfig package,cf_cv_xft_compat,[ 50606879286fSmrgAC_TRY_LINK([ 50616879286fSmrg#include <X11/Xft/Xft.h> 50626879286fSmrg],[ 5063f2e35a3aSmrg XftPattern *pat = 0; 50646879286fSmrg XftPatternBuild(pat, 50656879286fSmrg XFT_FAMILY, XftTypeString, "mono", 50666879286fSmrg (void *) 0); 50676879286fSmrg],[cf_cv_xft_compat=yes],[cf_cv_xft_compat=no]) 50686879286fSmrg]) 50696879286fSmrg 50706879286fSmrgif test "$cf_cv_xft_compat" = no 50716879286fSmrgthen 50726879286fSmrg # workaround for broken ".pc" files used for Xft. 507301037d57Smrg case "$cf_cv_x_freetype_libs" in 507401037d57Smrg (*-lfontconfig*) 50756879286fSmrg ;; 507601037d57Smrg (*) 50776879286fSmrg CF_VERBOSE(work around broken package) 5078e0a2b6dfSmrg cf_save_fontconfig="$LIBS" 5079e0a2b6dfSmrg CF_TRY_PKG_CONFIG(fontconfig,[ 5080e0a2b6dfSmrg CF_ADD_CFLAGS($cf_pkgconfig_incs) 5081e0a2b6dfSmrg LIBS="$cf_save_fontconfig" 5082e0a2b6dfSmrg CF_ADD_LIB_AFTER(-lXft,$cf_pkgconfig_libs) 5083e0a2b6dfSmrg ],[ 5084e0a2b6dfSmrg CF_ADD_LIB_AFTER(-lXft,-lfontconfig) 5085e0a2b6dfSmrg ]) 50866879286fSmrg ;; 50876879286fSmrg esac 50886879286fSmrgfi 5089e39b573cSmrgfi 50906879286fSmrg])dnl 50916879286fSmrgdnl --------------------------------------------------------------------------- 5092f2e35a3aSmrgdnl CF_X_FREETYPE version: 28 updated: 2020/03/10 18:53:47 5093d522f475Smrgdnl ------------- 5094d522f475Smrgdnl Check for X FreeType headers and libraries (XFree86 4.x, etc). 5095d522f475Smrgdnl 5096d522f475Smrgdnl First check for the appropriate config program, since the developers for 5097d522f475Smrgdnl these libraries change their configuration (and config program) more or 5098d522f475Smrgdnl less randomly. If we cannot find the config program, do not bother trying 5099d522f475Smrgdnl to guess the latest variation of include/lib directories. 5100d522f475Smrgdnl 5101d522f475Smrgdnl If either or both of these configure-script options are not given, rely on 5102d522f475Smrgdnl the output of the config program to provide the cflags/libs options: 5103d522f475Smrgdnl --with-freetype-cflags 5104d522f475Smrgdnl --with-freetype-libs 5105d522f475SmrgAC_DEFUN([CF_X_FREETYPE], 5106d522f475Smrg[ 5107956cc18dSsnjAC_REQUIRE([CF_PKG_CONFIG]) 5108956cc18dSsnj 51090bd37d32Smrgcf_cv_x_freetype_incs=no 51100bd37d32Smrgcf_cv_x_freetype_libs=no 5111d522f475Smrgcf_extra_freetype_libs= 5112956cc18dSsnjFREETYPE_CONFIG=none 5113d522f475SmrgFREETYPE_PARAMS= 5114d522f475Smrg 51150bd37d32SmrgAC_MSG_CHECKING(for FreeType configuration script) 51160bd37d32SmrgAC_ARG_WITH(freetype-config, 51170bd37d32Smrg [ --with-freetype-config configure script to use for FreeType], 51180bd37d32Smrg [cf_cv_x_freetype_cfgs="$withval"], 51190bd37d32Smrg [cf_cv_x_freetype_cfgs=auto]) 51200bd37d32Smrgtest -z $cf_cv_x_freetype_cfgs && cf_cv_x_freetype_cfgs=auto 51210bd37d32Smrgtest $cf_cv_x_freetype_cfgs = no && cf_cv_x_freetype_cfgs=none 51220bd37d32SmrgAC_MSG_RESULT($cf_cv_x_freetype_cfgs) 51230bd37d32Smrg 51240bd37d32Smrgcase $cf_cv_x_freetype_cfgs in 512501037d57Smrg(none) 51260bd37d32Smrg AC_MSG_CHECKING(if you specified -D/-I options for FreeType) 51270bd37d32Smrg AC_ARG_WITH(freetype-cflags, 51280bd37d32Smrg [ --with-freetype-cflags -D/-I options for compiling with FreeType], 51290bd37d32Smrg [cf_cv_x_freetype_incs="$with_freetype_cflags"], 51300bd37d32Smrg [cf_cv_x_freetype_incs=no]) 51310bd37d32Smrg AC_MSG_RESULT($cf_cv_x_freetype_incs) 51320bd37d32Smrg 51330bd37d32Smrg AC_MSG_CHECKING(if you specified -L/-l options for FreeType) 51340bd37d32Smrg AC_ARG_WITH(freetype-libs, 51350bd37d32Smrg [ --with-freetype-libs -L/-l options to link FreeType], 51360bd37d32Smrg [cf_cv_x_freetype_libs="$with_freetype_libs"], 51370bd37d32Smrg [cf_cv_x_freetype_libs=no]) 51380bd37d32Smrg AC_MSG_RESULT($cf_cv_x_freetype_libs) 51390bd37d32Smrg ;; 514001037d57Smrg(auto) 51410bd37d32Smrg if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xft; then 51420bd37d32Smrg FREETYPE_CONFIG=$PKG_CONFIG 51430bd37d32Smrg FREETYPE_PARAMS=xft 51440bd37d32Smrg else 51450bd37d32Smrg AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, none) 51460bd37d32Smrg if test "$FREETYPE_CONFIG" != none; then 51470bd37d32Smrg FREETYPE_CONFIG=$FREETYPE_CONFIG 51480bd37d32Smrg cf_extra_freetype_libs="-lXft" 51490bd37d32Smrg else 51500bd37d32Smrg AC_PATH_PROG(FREETYPE_OLD_CONFIG, xft-config, none) 51510bd37d32Smrg if test "$FREETYPE_OLD_CONFIG" != none; then 51520bd37d32Smrg FREETYPE_CONFIG=$FREETYPE_OLD_CONFIG 51530bd37d32Smrg fi 51540bd37d32Smrg fi 51550bd37d32Smrg fi 51560bd37d32Smrg ;; 515701037d57Smrg(pkg*) 51580bd37d32Smrg if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xft; then 51590bd37d32Smrg FREETYPE_CONFIG=$cf_cv_x_freetype_cfgs 51600bd37d32Smrg FREETYPE_PARAMS=xft 51610bd37d32Smrg else 51620bd37d32Smrg AC_MSG_WARN(cannot find pkg-config for Xft) 51630bd37d32Smrg fi 51640bd37d32Smrg ;; 516501037d57Smrg(*) 51660bd37d32Smrg AC_PATH_PROG(FREETYPE_XFT_CONFIG, $cf_cv_x_freetype_cfgs, none) 5167d522f475Smrg if test "$FREETYPE_XFT_CONFIG" != none; then 5168d522f475Smrg FREETYPE_CONFIG=$FREETYPE_XFT_CONFIG 5169d522f475Smrg else 51700bd37d32Smrg AC_MSG_WARN(cannot find config script for Xft) 5171d522f475Smrg fi 51720bd37d32Smrg ;; 51730bd37d32Smrgesac 5174d522f475Smrg 5175956cc18dSsnjif test "$FREETYPE_CONFIG" != none ; then 51760bd37d32Smrg AC_MSG_CHECKING(for FreeType config) 51770bd37d32Smrg AC_MSG_RESULT($FREETYPE_CONFIG $FREETYPE_PARAMS) 5178d522f475Smrg 5179956cc18dSsnj if test "$cf_cv_x_freetype_incs" = no ; then 5180956cc18dSsnj AC_MSG_CHECKING(for $FREETYPE_CONFIG cflags) 5181956cc18dSsnj cf_cv_x_freetype_incs="`$FREETYPE_CONFIG $FREETYPE_PARAMS --cflags 2>/dev/null`" 5182956cc18dSsnj AC_MSG_RESULT($cf_cv_x_freetype_incs) 5183956cc18dSsnj fi 5184d522f475Smrg 5185956cc18dSsnj if test "$cf_cv_x_freetype_libs" = no ; then 5186956cc18dSsnj AC_MSG_CHECKING(for $FREETYPE_CONFIG libs) 5187956cc18dSsnj cf_cv_x_freetype_libs="$cf_extra_freetype_libs `$FREETYPE_CONFIG $FREETYPE_PARAMS --libs 2>/dev/null`" 5188956cc18dSsnj AC_MSG_RESULT($cf_cv_x_freetype_libs) 5189956cc18dSsnj fi 5190d522f475Smrgfi 5191d522f475Smrg 5192d522f475Smrgif test "$cf_cv_x_freetype_incs" = no ; then 5193d522f475Smrg cf_cv_x_freetype_incs= 5194d522f475Smrgfi 5195d522f475Smrg 5196d522f475Smrgif test "$cf_cv_x_freetype_libs" = no ; then 5197d522f475Smrg cf_cv_x_freetype_libs=-lXft 5198d522f475Smrgfi 5199d522f475Smrg 5200d522f475SmrgAC_MSG_CHECKING(if we can link with FreeType libraries) 5201d522f475Smrg 5202d522f475Smrgcf_save_LIBS="$LIBS" 5203d522f475Smrgcf_save_INCS="$CPPFLAGS" 5204d522f475Smrg 520520d2c4d2SmrgCF_ADD_LIBS($cf_cv_x_freetype_libs) 5206956cc18dSsnjCPPFLAGS="$CPPFLAGS $cf_cv_x_freetype_incs" 5207d522f475Smrg 5208d522f475SmrgAC_TRY_LINK([ 5209d522f475Smrg#include <X11/Xlib.h> 5210d522f475Smrg#include <X11/extensions/Xrender.h> 5211d522f475Smrg#include <X11/Xft/Xft.h>],[ 5212f2e35a3aSmrg XftPattern *pat = XftNameParse ("name"); (void)pat], 5213d522f475Smrg [cf_cv_found_freetype=yes], 5214d522f475Smrg [cf_cv_found_freetype=no]) 5215d522f475SmrgAC_MSG_RESULT($cf_cv_found_freetype) 5216d522f475Smrg 5217d522f475SmrgLIBS="$cf_save_LIBS" 5218d522f475SmrgCPPFLAGS="$cf_save_INCS" 5219d522f475Smrg 5220d522f475Smrgif test "$cf_cv_found_freetype" = yes ; then 522120d2c4d2Smrg CF_ADD_LIBS($cf_cv_x_freetype_libs) 5222d522f475Smrg CF_ADD_CFLAGS($cf_cv_x_freetype_incs) 52230bd37d32Smrg AC_DEFINE(XRENDERFONT,1,[Define to 1 if we can/should link with FreeType libraries]) 5224d522f475Smrg 5225d522f475SmrgAC_CHECK_FUNCS( \ 5226d522f475Smrg XftDrawCharSpec \ 5227d522f475Smrg XftDrawSetClip \ 5228d522f475Smrg XftDrawSetClipRectangles \ 5229d522f475Smrg) 5230d522f475Smrg 5231d522f475Smrgelse 5232d522f475Smrg AC_MSG_WARN(No libraries found for FreeType) 5233d522f475Smrg CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//` 5234d522f475Smrgfi 5235d522f475Smrg 5236d522f475Smrg# FIXME: revisit this if needed 5237d522f475SmrgAC_SUBST(HAVE_TYPE_FCCHAR32) 5238d522f475SmrgAC_SUBST(HAVE_TYPE_XFTCHARSPEC) 5239d522f475Smrg]) 5240d522f475Smrgdnl --------------------------------------------------------------------------- 5241f2e35a3aSmrgdnl CF_X_TOOLKIT version: 26 updated: 2021/01/02 09:31:20 5242d522f475Smrgdnl ------------ 5243d522f475Smrgdnl Check for X Toolkit libraries 5244d522f475SmrgAC_DEFUN([CF_X_TOOLKIT], 5245d522f475Smrg[ 5246d522f475SmrgAC_REQUIRE([AC_PATH_XTRA]) 5247d522f475SmrgAC_REQUIRE([CF_CHECK_CACHE]) 5248d522f475Smrg 5249f2e35a3aSmrg# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and 525001037d57Smrg# in some cases has installed dummy files in the former, other cases replaced 525101037d57Smrg# it with a link to the new location). This complicates the configure script. 525201037d57Smrg# Check for that pitfall, and recover using pkg-config 525301037d57Smrg# 525401037d57Smrg# If none of these are set, the configuration is almost certainly broken. 525501037d57Smrgif test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}" 525601037d57Smrgthen 525701037d57Smrg CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)]) 525801037d57Smrg CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)]) 525901037d57Smrg CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)]) 526001037d57Smrg CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)]) 5261f2e35a3aSmrgelse 5262f2e35a3aSmrg LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS" 526301037d57Smrgfi 526401037d57Smrg 5265d522f475Smrgcf_have_X_LIBS=no 5266d522f475Smrg 526720d2c4d2SmrgCF_TRY_PKG_CONFIG(xt,[ 526820d2c4d2Smrg 526901037d57Smrg case "x$LIBS" in 527001037d57Smrg (*-lX11*) 52716879286fSmrg ;; 527201037d57Smrg (*) 52736879286fSmrg# we have an "xt" package, but it may omit Xt's dependency on X11 52746879286fSmrgAC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[ 52756879286fSmrgAC_TRY_LINK([ 52766879286fSmrg#include <X11/Xlib.h> 52776879286fSmrg],[ 52786879286fSmrg int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); 52796879286fSmrg int rc2 = XClearWindow((Display*) 0, (Window) 0); 52806879286fSmrg int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); 52816879286fSmrg int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); 52826879286fSmrg],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])]) 52836879286fSmrg if test "$cf_cv_xt_x11_compat" = no 52846879286fSmrg then 52856879286fSmrg CF_VERBOSE(work around broken X11 dependency) 52866879286fSmrg # 2010/11/19 - good enough until a working Xt on Xcb is delivered. 52876879286fSmrg CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)]) 52886879286fSmrg fi 528920d2c4d2Smrg ;; 529020d2c4d2Smrg esac 529120d2c4d2Smrg 52926879286fSmrgAC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[ 52936879286fSmrgAC_TRY_LINK([ 52946879286fSmrg#include <X11/Shell.h> 5295f2e35a3aSmrg],[int num = IceConnectionNumber(0); (void) num 52966879286fSmrg],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])]) 52976879286fSmrg 52986879286fSmrg if test "$cf_cv_xt_ice_compat" = no 52996879286fSmrg then 53006879286fSmrg # workaround for broken ".pc" files used for X Toolkit. 530101037d57Smrg case "x$X_PRE_LIBS" in 530201037d57Smrg (*-lICE*) 530301037d57Smrg case "x$LIBS" in 530401037d57Smrg (*-lICE*) 53056879286fSmrg ;; 530601037d57Smrg (*) 53076879286fSmrg CF_VERBOSE(work around broken ICE dependency) 53086879286fSmrg CF_TRY_PKG_CONFIG(ice, 53096879286fSmrg [CF_TRY_PKG_CONFIG(sm)], 53106879286fSmrg [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)]) 53116879286fSmrg ;; 53126879286fSmrg esac 53136879286fSmrg ;; 53146879286fSmrg esac 53156879286fSmrg fi 53166879286fSmrg 531720d2c4d2Smrg cf_have_X_LIBS=yes 531820d2c4d2Smrg],[ 531920d2c4d2Smrg 532020d2c4d2Smrg LDFLAGS="$X_LIBS $LDFLAGS" 532120d2c4d2Smrg CF_CHECK_CFLAGS($X_CFLAGS) 5322d522f475Smrg 532320d2c4d2Smrg AC_CHECK_FUNC(XOpenDisplay,,[ 532420d2c4d2Smrg AC_CHECK_LIB(X11,XOpenDisplay, 5325f2e35a3aSmrg [CF_ADD_LIB(X11)])]) 5326d522f475Smrg 532720d2c4d2Smrg AC_CHECK_FUNC(XtAppInitialize,,[ 532820d2c4d2Smrg AC_CHECK_LIB(Xt, XtAppInitialize, 53290bd37d32Smrg [AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library]) 533020d2c4d2Smrg cf_have_X_LIBS=Xt 5331f2e35a3aSmrg LIBS="-lXt $LIBS"])]) 533220d2c4d2Smrg]) 5333d522f475Smrg 5334f2e35a3aSmrgif test "$cf_have_X_LIBS" = no ; then 5335d522f475Smrg AC_MSG_WARN( 5336d522f475Smrg[Unable to successfully link X Toolkit library (-lXt) with 5337d522f475Smrgtest program. You will have to check and add the proper libraries by hand 5338d522f475Smrgto makefile.]) 5339d522f475Smrgfi 5340d522f475Smrg])dnl 53410bd37d32Smrgdnl --------------------------------------------------------------------------- 5342ae137402Smrgdnl CF__GRANTPT_BODY version: 6 updated: 2021/06/07 17:39:17 53430bd37d32Smrgdnl ---------------- 53440bd37d32Smrgdnl Body for workability check of grantpt. 53450bd37d32Smrgdefine([CF__GRANTPT_BODY],[ 53460bd37d32Smrg int code = 0; 53470bd37d32Smrg int pty; 53480bd37d32Smrg int tty; 53490bd37d32Smrg char *slave; 53500bd37d32Smrg struct termios tio; 53510bd37d32Smrg 5352f2e35a3aSmrg (void)tio; 53530bd37d32Smrg signal(SIGALRM, my_timeout); 53540bd37d32Smrg 53550bd37d32Smrg if (alarm(2) == 9) 53560bd37d32Smrg failed(9); 53570bd37d32Smrg else if ((pty = posix_openpt(O_RDWR)) < 0) 53580bd37d32Smrg failed(1); 5359ae137402Smrg else if (grantpt(pty) < 0) 53600bd37d32Smrg failed(2); 5361ae137402Smrg else if (unlockpt(pty) < 0) 53620bd37d32Smrg failed(3); 53630bd37d32Smrg else if ((slave = ptsname(pty)) == 0) 53640bd37d32Smrg failed(4); 53650bd37d32Smrg#if (CONFTEST == 3) || defined(CONFTEST_isatty) 53660bd37d32Smrg else if (!isatty(pty)) 53670bd37d32Smrg failed(4); 53680bd37d32Smrg#endif 53690bd37d32Smrg#if CONFTEST >= 4 5370ae137402Smrg else if (tcgetattr(pty, &tio) < 0) 53710bd37d32Smrg failed(20); 5372ae137402Smrg else if (tcsetattr(pty, TCSAFLUSH, &tio) < 0) 53730bd37d32Smrg failed(21); 53740bd37d32Smrg#endif 53750bd37d32Smrg /* BSD posix_openpt does not treat pty as a terminal until slave is opened. 53760bd37d32Smrg * Linux does treat it that way. 53770bd37d32Smrg */ 53780bd37d32Smrg else if ((tty = open(slave, O_RDWR)) < 0) 53790bd37d32Smrg failed(5); 53800bd37d32Smrg#ifdef CONFTEST 53810bd37d32Smrg#ifdef I_PUSH 53820bd37d32Smrg#if (CONFTEST == 0) || defined(CONFTEST_ptem) 5383ae137402Smrg else if (ioctl(tty, I_PUSH, "ptem") < 0) 53840bd37d32Smrg failed(10); 53850bd37d32Smrg#endif 53860bd37d32Smrg#if (CONFTEST == 1) || defined(CONFTEST_ldterm) 5387ae137402Smrg else if (ioctl(tty, I_PUSH, "ldterm") < 0) 53880bd37d32Smrg failed(11); 53890bd37d32Smrg#endif 53900bd37d32Smrg#if (CONFTEST == 2) || defined(CONFTEST_ttcompat) 5391ae137402Smrg else if (ioctl(tty, I_PUSH, "ttcompat") < 0) 53920bd37d32Smrg failed(12); 53930bd37d32Smrg#endif 53940bd37d32Smrg#endif /* I_PUSH */ 53950bd37d32Smrg#if CONFTEST >= 5 5396ae137402Smrg else if (tcgetattr(tty, &tio) < 0) 53970bd37d32Smrg failed(30); 5398ae137402Smrg else if (tcsetattr(tty, TCSAFLUSH, &tio) < 0) 53990bd37d32Smrg failed(31); 54000bd37d32Smrg#endif 54010bd37d32Smrg#endif /* CONFTEST */ 5402ae137402Smrg (void) tty; 54030bd37d32Smrg ${cf_cv_main_return:-return}(code); 54040bd37d32Smrg]) 54050bd37d32Smrgdnl --------------------------------------------------------------------------- 5406f2e35a3aSmrgdnl CF__GRANTPT_HEAD version: 4 updated: 2020/03/10 18:53:47 54070bd37d32Smrgdnl ---------------- 54080bd37d32Smrgdnl Headers for workability check of grantpt. 54090bd37d32Smrgdefine([CF__GRANTPT_HEAD],[ 54100bd37d32Smrg#include <stdlib.h> 5411f2e35a3aSmrg#include <stdio.h> 54120bd37d32Smrg#include <termios.h> 54130bd37d32Smrg#include <unistd.h> 54140bd37d32Smrg#include <signal.h> 54150bd37d32Smrg#include <fcntl.h> 54160bd37d32Smrg#include <errno.h> 54170bd37d32Smrg 54180bd37d32Smrg#ifndef HAVE_POSIX_OPENPT 54190bd37d32Smrg#undef posix_openpt 54200bd37d32Smrg#define posix_openpt(mode) open("/dev/ptmx", mode) 54210bd37d32Smrg#endif 54220bd37d32Smrg 54230bd37d32Smrg#ifdef HAVE_STROPTS_H 54240bd37d32Smrg#include <stropts.h> 54250bd37d32Smrg#endif 54260bd37d32Smrg 54270bd37d32Smrgstatic void failed(int code) 54280bd37d32Smrg{ 54290bd37d32Smrg perror("conftest"); 54300bd37d32Smrg exit(code); 54310bd37d32Smrg} 54320bd37d32Smrg 54330bd37d32Smrgstatic void my_timeout(int sig) 54340bd37d32Smrg{ 5435f2e35a3aSmrg (void)sig; 54360bd37d32Smrg exit(99); 54370bd37d32Smrg} 54380bd37d32Smrg]) 5439