aclocal.m4 revision a5ae21e4
1a5ae21e4Smrgdnl $XTermId: aclocal.m4,v 1.491 2021/09/07 00:26:55 tom Exp $ 2d522f475Smrgdnl 3d522f475Smrgdnl --------------------------------------------------------------------------- 4d522f475Smrgdnl 5f2e35a3aSmrgdnl Copyright 1997-2020,2021 by Thomas E. Dickey 6d522f475Smrgdnl 7d522f475Smrgdnl All Rights Reserved 8d522f475Smrgdnl 920d2c4d2Smrgdnl Permission is hereby granted, free of charge, to any person obtaining a 1020d2c4d2Smrgdnl copy of this software and associated documentation files (the 1120d2c4d2Smrgdnl "Software"), to deal in the Software without restriction, including 1220d2c4d2Smrgdnl without limitation the rights to use, copy, modify, merge, publish, 1320d2c4d2Smrgdnl distribute, sublicense, and/or sell copies of the Software, and to 1420d2c4d2Smrgdnl permit persons to whom the Software is furnished to do so, subject to 1520d2c4d2Smrgdnl the following conditions: 160bd37d32Smrgdnl 1720d2c4d2Smrgdnl The above copyright notice and this permission notice shall be included 1820d2c4d2Smrgdnl in all copies or substantial portions of the Software. 190bd37d32Smrgdnl 2020d2c4d2Smrgdnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 2120d2c4d2Smrgdnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2220d2c4d2Smrgdnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 2320d2c4d2Smrgdnl IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY 2420d2c4d2Smrgdnl CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 2520d2c4d2Smrgdnl TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2620d2c4d2Smrgdnl SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 270bd37d32Smrgdnl 2820d2c4d2Smrgdnl Except as contained in this notice, the name(s) of the above copyright 2920d2c4d2Smrgdnl holders shall not be used in advertising or otherwise to promote the 3020d2c4d2Smrgdnl sale, use or other dealings in this Software without prior written 3120d2c4d2Smrgdnl authorization. 32d522f475Smrgdnl 33d522f475Smrgdnl --------------------------------------------------------------------------- 3420d2c4d2Smrgdnl See 35f2e35a3aSmrgdnl https://invisible-island.net/autoconf/autoconf.html 36f2e35a3aSmrgdnl https://invisible-island.net/autoconf/my-autoconf.html 3720d2c4d2Smrgdnl --------------------------------------------------------------------------- 38d522f475Smrgdnl --------------------------------------------------------------------------- 39f2e35a3aSmrgdnl AM_LANGINFO_CODESET version: 6 updated: 2021/01/01 16:53:59 40d522f475Smrgdnl ------------------- 41d522f475Smrgdnl Inserted as requested by gettext 0.10.40 42d522f475Smrgdnl File from /usr/share/aclocal 43d522f475Smrgdnl codeset.m4 44d522f475Smrgdnl ==================== 45d522f475Smrgdnl serial AM1 46d522f475Smrgdnl 47d522f475Smrgdnl From Bruno Haible. 48d522f475SmrgAC_DEFUN([AM_LANGINFO_CODESET], 49d522f475Smrg[ 502e4f8982SmrgAC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, 512e4f8982Smrg [AC_TRY_LINK([#include <langinfo.h>], 52f2e35a3aSmrg [char* cs = nl_langinfo(CODESET); (void)cs], 532e4f8982Smrg am_cv_langinfo_codeset=yes, 542e4f8982Smrg am_cv_langinfo_codeset=no) 552e4f8982Smrg ]) 56f2e35a3aSmrg if test "$am_cv_langinfo_codeset" = yes; then 572e4f8982Smrg AC_DEFINE(HAVE_LANGINFO_CODESET, 1, 582e4f8982Smrg [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) 592e4f8982Smrg fi 60d522f475Smrg])dnl 61d522f475Smrgdnl --------------------------------------------------------------------------- 6201037d57Smrgdnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49 63e39b573cSmrgdnl ------------------ 64e39b573cSmrgdnl Conditionally generate script according to whether we're using a given autoconf. 65e39b573cSmrgdnl 66e39b573cSmrgdnl $1 = version to compare against 67e39b573cSmrgdnl $2 = code to use if AC_ACVERSION is at least as high as $1. 68e39b573cSmrgdnl $3 = code to use if AC_ACVERSION is older than $1. 690bd37d32Smrgdefine([CF_ACVERSION_CHECK], 70e39b573cSmrg[ 7101037d57Smrgifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl 72e39b573cSmrgifdef([m4_version_compare], 73e39b573cSmrg[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])], 74e39b573cSmrg[CF_ACVERSION_COMPARE( 75e39b573cSmrgAC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])), 76e39b573cSmrgAC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl 77e39b573cSmrgdnl --------------------------------------------------------------------------- 780bd37d32Smrgdnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53 79e39b573cSmrgdnl -------------------- 80e39b573cSmrgdnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1, 81e39b573cSmrgdnl MAJOR2, MINOR2, TERNARY2, 82e39b573cSmrgdnl PRINTABLE2, not FOUND, FOUND) 830bd37d32Smrgdefine([CF_ACVERSION_COMPARE], 84e39b573cSmrg[ifelse(builtin([eval], [$2 < $5]), 1, 85e39b573cSmrg[ifelse([$8], , ,[$8])], 86e39b573cSmrg[ifelse([$9], , ,[$9])])])dnl 87e39b573cSmrgdnl --------------------------------------------------------------------------- 88f2e35a3aSmrgdnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15 89d522f475Smrgdnl ------------- 90d522f475Smrgdnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS 91f2e35a3aSmrgdnl $1 = flags to add 92f2e35a3aSmrgdnl $2 = if given makes this macro verbose. 93d522f475Smrgdnl 94d522f475Smrgdnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, 95d522f475Smrgdnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily 96d522f475Smrgdnl confused by the quotes (which require backslashes to keep them usable). 97d522f475SmrgAC_DEFUN([CF_ADD_CFLAGS], 98d522f475Smrg[ 99d522f475Smrgcf_fix_cppflags=no 100d522f475Smrgcf_new_cflags= 101d522f475Smrgcf_new_cppflags= 102d522f475Smrgcf_new_extra_cppflags= 103d522f475Smrg 104d522f475Smrgfor cf_add_cflags in $1 105d522f475Smrgdo 106f2e35a3aSmrgcase "$cf_fix_cppflags" in 10701037d57Smrg(no) 108f2e35a3aSmrg case "$cf_add_cflags" in 10901037d57Smrg (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) 110f2e35a3aSmrg case "$cf_add_cflags" in 11101037d57Smrg (-D*) 112f2e35a3aSmrg cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'` 113d522f475Smrg 11401037d57Smrg test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ 11520d2c4d2Smrg && test -z "${cf_tst_cflags}" \ 11620d2c4d2Smrg && cf_fix_cppflags=yes 117d522f475Smrg 118f2e35a3aSmrg if test "$cf_fix_cppflags" = yes ; then 119913cc679Smrg CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 120d522f475Smrg continue 121d522f475Smrg elif test "${cf_tst_cflags}" = "\"'" ; then 122913cc679Smrg CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 123d522f475Smrg continue 124d522f475Smrg fi 125d522f475Smrg ;; 126d522f475Smrg esac 127d522f475Smrg case "$CPPFLAGS" in 12801037d57Smrg (*$cf_add_cflags) 129d522f475Smrg ;; 13001037d57Smrg (*) 131f2e35a3aSmrg case "$cf_add_cflags" in 13201037d57Smrg (-D*) 13320d2c4d2Smrg cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` 13420d2c4d2Smrg CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) 13520d2c4d2Smrg ;; 13620d2c4d2Smrg esac 137913cc679Smrg CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags) 138d522f475Smrg ;; 139d522f475Smrg esac 140d522f475Smrg ;; 14101037d57Smrg (*) 142913cc679Smrg CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags) 143d522f475Smrg ;; 144d522f475Smrg esac 145d522f475Smrg ;; 14601037d57Smrg(yes) 147913cc679Smrg CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 148d522f475Smrg 149f2e35a3aSmrg cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'` 150d522f475Smrg 15101037d57Smrg test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ 15220d2c4d2Smrg && test -z "${cf_tst_cflags}" \ 15320d2c4d2Smrg && cf_fix_cppflags=no 154d522f475Smrg ;; 155d522f475Smrgesac 156d522f475Smrgdone 157d522f475Smrg 158d522f475Smrgif test -n "$cf_new_cflags" ; then 15920d2c4d2Smrg ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) 160913cc679Smrg CF_APPEND_TEXT(CFLAGS,$cf_new_cflags) 161d522f475Smrgfi 162d522f475Smrg 163d522f475Smrgif test -n "$cf_new_cppflags" ; then 16420d2c4d2Smrg ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) 165913cc679Smrg CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags) 166d522f475Smrgfi 167d522f475Smrg 168d522f475Smrgif test -n "$cf_new_extra_cppflags" ; then 16920d2c4d2Smrg ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) 170913cc679Smrg CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags) 171d522f475Smrgfi 172d522f475Smrg 173d522f475SmrgAC_SUBST(EXTRA_CPPFLAGS) 174d522f475Smrg 175d522f475Smrg])dnl 176d522f475Smrgdnl --------------------------------------------------------------------------- 17720d2c4d2Smrgdnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 17820d2c4d2Smrgdnl ---------- 17920d2c4d2Smrgdnl Add a library, used to enforce consistency. 18020d2c4d2Smrgdnl 18120d2c4d2Smrgdnl $1 = library to add, without the "-l" 18220d2c4d2Smrgdnl $2 = variable to update (default $LIBS) 18320d2c4d2SmrgAC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl 18420d2c4d2Smrgdnl --------------------------------------------------------------------------- 185f2e35a3aSmrgdnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33 18620d2c4d2Smrgdnl ----------- 18701037d57Smrgdnl Add one or more libraries, used to enforce consistency. Libraries are 18801037d57Smrgdnl prepended to an existing list, since their dependencies are assumed to 18901037d57Smrgdnl already exist in the list. 19020d2c4d2Smrgdnl 19120d2c4d2Smrgdnl $1 = libraries to add, with the "-l", etc. 19220d2c4d2Smrgdnl $2 = variable to update (default $LIBS) 19301037d57SmrgAC_DEFUN([CF_ADD_LIBS],[ 194f2e35a3aSmrgcf_add_libs="[$]ifelse($2,,LIBS,[$2])" 195f2e35a3aSmrg# reverse order 196f2e35a3aSmrgcf_add_0lib= 197f2e35a3aSmrgfor cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done 198f2e35a3aSmrg# filter duplicates 199f2e35a3aSmrgfor cf_add_1lib in $cf_add_0lib; do 200f2e35a3aSmrg for cf_add_2lib in $cf_add_libs; do 201f2e35a3aSmrg if test "x$cf_add_1lib" = "x$cf_add_2lib"; then 20201037d57Smrg cf_add_1lib= 20301037d57Smrg break 20401037d57Smrg fi 20501037d57Smrg done 206f2e35a3aSmrg test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" 20701037d57Smrgdone 20801037d57Smrgifelse($2,,LIBS,[$2])="$cf_add_libs" 20901037d57Smrg])dnl 21020d2c4d2Smrgdnl --------------------------------------------------------------------------- 211e0a2b6dfSmrgdnl CF_ADD_LIB_AFTER version: 3 updated: 2013/07/09 21:27:22 2126879286fSmrgdnl ---------------- 2136879286fSmrgdnl Add a given library after another, e.g., following the one it satisfies a 2146879286fSmrgdnl dependency for. 2156879286fSmrgdnl 2166879286fSmrgdnl $1 = the first library 2176879286fSmrgdnl $2 = its dependency 2186879286fSmrgAC_DEFUN([CF_ADD_LIB_AFTER],[ 2196879286fSmrgCF_VERBOSE(...before $LIBS) 220e0a2b6dfSmrgLIBS=`echo "$LIBS" | sed -e "s/[[ ]][[ ]]*/ /g" -e "s%$1 %$1 $2 %" -e 's% % %g'` 2216879286fSmrgCF_VERBOSE(...after $LIBS) 2226879286fSmrg])dnl 2236879286fSmrgdnl --------------------------------------------------------------------------- 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 --------------------------------------------------------------------------- 812f2e35a3aSmrgdnl CF_FIX_WARNINGS version: 3 updated: 2020/12/31 18:40:20 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_VERBOSE(repairing $1: [$]$1) 825f2e35a3aSmrg cf_temp_flags= 826f2e35a3aSmrg for cf_temp_scan in [$]$1 827f2e35a3aSmrg do 828f2e35a3aSmrg case "x$cf_temp_scan" in 829f2e35a3aSmrg (x-Werror=*) 830f2e35a3aSmrg CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan) 831f2e35a3aSmrg ;; 832f2e35a3aSmrg (*) 833f2e35a3aSmrg CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) 834f2e35a3aSmrg ;; 835f2e35a3aSmrg esac 836f2e35a3aSmrg done 837f2e35a3aSmrg $1="$cf_temp_flags" 838f2e35a3aSmrg CF_VERBOSE(... fixed [$]$1) 839f2e35a3aSmrg CF_VERBOSE(... extra $EXTRA_CFLAGS) 840f2e35a3aSmrg ;; 841f2e35a3aSmrg esac 842f2e35a3aSmrgfi 843f2e35a3aSmrgAC_SUBST(EXTRA_CFLAGS) 844f2e35a3aSmrg])dnl 845f2e35a3aSmrgdnl --------------------------------------------------------------------------- 846f2e35a3aSmrgdnl CF_FUNC_GRANTPT version: 15 updated: 2020/12/31 18:40:20 847d522f475Smrgdnl --------------- 8480bd37d32Smrgdnl Check for grantpt versus openpty, as well as functions that "should" be 8490bd37d32Smrgdnl available if grantpt is available. 8500bd37d32SmrgAC_DEFUN([CF_FUNC_GRANTPT],[ 8510bd37d32Smrg 8520bd37d32SmrgAC_CHECK_HEADERS( \ 8530bd37d32Smrgstropts.h \ 8540bd37d32Smrg) 8550bd37d32Smrg 8560bd37d32Smrgcf_func_grantpt="grantpt ptsname" 857f2e35a3aSmrgcf_prefer_openpt=no 85801037d57Smrgcase $host_os in 85901037d57Smrg(darwin[[0-9]].*) 8600bd37d32Smrg ;; 861f2e35a3aSmrg(openbsd[[0-9]].*) 862f2e35a3aSmrg # The POSIX entrypoints exist, but have never worked. 863f2e35a3aSmrg ;; 864f2e35a3aSmrg(linux*) 865f2e35a3aSmrg cf_func_grantpt="$cf_func_grantpt posix_openpt" 866f2e35a3aSmrg cf_prefer_openpt=yes 867f2e35a3aSmrg ;; 86801037d57Smrg(*) 8690bd37d32Smrg cf_func_grantpt="$cf_func_grantpt posix_openpt" 8700bd37d32Smrg ;; 8710bd37d32Smrgesac 8720bd37d32Smrg 8730bd37d32SmrgAC_CHECK_FUNCS($cf_func_grantpt) 8740bd37d32Smrg 8750bd37d32Smrgcf_grantpt_opts= 8760bd37d32Smrgif test "x$ac_cv_func_grantpt" = "xyes" ; then 8770bd37d32Smrg AC_MSG_CHECKING(if grantpt really works) 8780bd37d32Smrg AC_TRY_LINK(CF__GRANTPT_HEAD,CF__GRANTPT_BODY,[ 8790bd37d32Smrg AC_TRY_RUN(CF__GRANTPT_HEAD 8800bd37d32Smrgint main(void) 8810bd37d32Smrg{ 8820bd37d32SmrgCF__GRANTPT_BODY 883d522f475Smrg} 8840bd37d32Smrg, 8850bd37d32Smrg,ac_cv_func_grantpt=no 8860bd37d32Smrg,ac_cv_func_grantpt=maybe) 8870bd37d32Smrg ],ac_cv_func_grantpt=no) 8880bd37d32Smrg AC_MSG_RESULT($ac_cv_func_grantpt) 8890bd37d32Smrg 8900bd37d32Smrg if test "x$ac_cv_func_grantpt" != "xno" ; then 8910bd37d32Smrg 8920bd37d32Smrg if test "x$ac_cv_func_grantpt" = "xyes" ; then 8930bd37d32Smrg AC_MSG_CHECKING(for pty features) 8940bd37d32Smrgdnl if we have no stropts.h, skip the checks for streams modules 8950bd37d32Smrg if test "x$ac_cv_header_stropts_h" = xyes 8960bd37d32Smrg then 8970bd37d32Smrg cf_pty_this=0 8980bd37d32Smrg else 8990bd37d32Smrg cf_pty_this=3 9000bd37d32Smrg fi 9010bd37d32Smrg 9020bd37d32Smrg cf_pty_defines= 9030bd37d32Smrg while test $cf_pty_this != 6 9040bd37d32Smrg do 9050bd37d32Smrg 9060bd37d32Smrg cf_pty_feature= 907f2e35a3aSmrg cf_pty_next="`expr $cf_pty_this + 1`" 9080bd37d32Smrg CF_MSG_LOG(pty feature test $cf_pty_next:5) 9090bd37d32Smrg AC_TRY_RUN(#define CONFTEST $cf_pty_this 9100bd37d32Smrg$cf_pty_defines 9110bd37d32SmrgCF__GRANTPT_HEAD 9120bd37d32Smrgint main(void) 9130bd37d32Smrg{ 9140bd37d32SmrgCF__GRANTPT_BODY 9150bd37d32Smrg} 9160bd37d32Smrg, 9170bd37d32Smrg[ 91801037d57Smrg case $cf_pty_next in 91901037d57Smrg (1) # - streams 9200bd37d32Smrg cf_pty_feature=ptem 9210bd37d32Smrg ;; 92201037d57Smrg (2) # - streams 9230bd37d32Smrg cf_pty_feature=ldterm 9240bd37d32Smrg ;; 92501037d57Smrg (3) # - streams 9260bd37d32Smrg cf_pty_feature=ttcompat 9270bd37d32Smrg ;; 92801037d57Smrg (4) 9290bd37d32Smrg cf_pty_feature=pty_isatty 9300bd37d32Smrg ;; 93101037d57Smrg (5) 9320bd37d32Smrg cf_pty_feature=pty_tcsetattr 9330bd37d32Smrg ;; 93401037d57Smrg (6) 9350bd37d32Smrg cf_pty_feature=tty_tcsetattr 9360bd37d32Smrg ;; 9370bd37d32Smrg esac 9380bd37d32Smrg],[ 93901037d57Smrg case $cf_pty_next in 94001037d57Smrg (1|2|3) 9410bd37d32Smrg CF_MSG_LOG(skipping remaining streams features $cf_pty_this..2) 9420bd37d32Smrg cf_pty_next=3 9430bd37d32Smrg ;; 9440bd37d32Smrg esac 9450bd37d32Smrg]) 9460bd37d32Smrg if test -n "$cf_pty_feature" 9470bd37d32Smrg then 9480bd37d32Smrg cf_pty_defines="$cf_pty_defines 9490bd37d32Smrg#define CONFTEST_$cf_pty_feature 1 9500bd37d32Smrg" 9510bd37d32Smrg cf_grantpt_opts="$cf_grantpt_opts $cf_pty_feature" 9520bd37d32Smrg fi 9530bd37d32Smrg 9540bd37d32Smrg cf_pty_this=$cf_pty_next 9550bd37d32Smrg done 9560bd37d32Smrg AC_MSG_RESULT($cf_grantpt_opts) 9570bd37d32Smrg cf_grantpt_opts=`echo "$cf_grantpt_opts" | sed -e 's/ isatty//'` 9580bd37d32Smrg fi 959d522f475Smrg fi 9600bd37d32Smrgfi 9610bd37d32Smrg 9620bd37d32Smrgdnl If we found grantpt, but no features, e.g., for streams or if we are not 9630bd37d32Smrgdnl able to use tcsetattr, then give openpty a try. In particular, Darwin 10.7 9640bd37d32Smrgdnl has a more functional openpty than posix_openpt. 9650bd37d32Smrgdnl 9660bd37d32Smrgdnl There is no configure run-test for openpty, since older implementations do 9670bd37d32Smrgdnl not always run properly as a non-root user. For that reason, we also allow 9680bd37d32Smrgdnl the configure script to suppress this check entirely with $disable_openpty. 969f2e35a3aSmrgif test "x$cf_prefer_posix_openpt" = "xyes" && test "x$ac_cv_func_posix_openpt" = "xyes" ; then 970f2e35a3aSmrg CF_VERBOSE(prefer posix_openpt over openpty) 971f2e35a3aSmrgelif test "x$disable_openpty" != "xyes" || test -z "$cf_grantpt_opts" ; then 9720bd37d32Smrg AC_CHECK_LIB(util, openpty, [cf_have_openpty=yes],[cf_have_openpty=no]) 9730bd37d32Smrg if test "$cf_have_openpty" = yes ; then 9740bd37d32Smrg ac_cv_func_grantpt=no 9750bd37d32Smrg LIBS="-lutil $LIBS" 9760bd37d32Smrg AC_DEFINE(HAVE_OPENPTY,1,[Define to 1 if you have the openpty function]) 9770bd37d32Smrg AC_CHECK_HEADERS( \ 9780bd37d32Smrg util.h \ 9790bd37d32Smrg libutil.h \ 9800bd37d32Smrg pty.h \ 9810bd37d32Smrg ) 9820bd37d32Smrg fi 9830bd37d32Smrgfi 9840bd37d32Smrg 9850bd37d32Smrgdnl If we did not settle on using openpty, fill in the definitions for grantpt. 9860bd37d32Smrgif test "x$ac_cv_func_grantpt" != xno 9870bd37d32Smrgthen 9880bd37d32Smrg CF_VERBOSE(will rely upon grantpt) 9890bd37d32Smrg AC_DEFINE(HAVE_WORKING_GRANTPT,1,[Define to 1 if the grantpt function seems to work]) 9900bd37d32Smrg for cf_feature in $cf_grantpt_opts 9910bd37d32Smrg do 9920bd37d32Smrg cf_feature=`echo "$cf_feature" | sed -e 's/ //g'` 9930bd37d32Smrg CF_UPPER(cf_FEATURE,$cf_feature) 9940bd37d32Smrg AC_DEFINE_UNQUOTED(HAVE_GRANTPT_$cf_FEATURE) 9950bd37d32Smrg done 9960bd37d32Smrgelif test "x$cf_have_openpty" = xno 9970bd37d32Smrgthen 9980bd37d32Smrg CF_VERBOSE(will rely upon BSD-pseudoterminals) 9990bd37d32Smrgelse 10000bd37d32Smrg CF_VERBOSE(will rely upon openpty) 10010bd37d32Smrgfi 10020bd37d32Smrg])dnl 1003d522f475Smrgdnl --------------------------------------------------------------------------- 1004f2e35a3aSmrgdnl CF_FUNC_TGETENT version: 23 updated: 2020/06/02 20:17:00 1005d522f475Smrgdnl --------------- 1006d522f475Smrgdnl Check for tgetent function in termcap library. If we cannot find this, 1007d522f475Smrgdnl we'll use the $LINES and $COLUMNS environment variables to pass screen 1008d522f475Smrgdnl size information to subprocesses. (We cannot use terminfo's compatibility 1009d522f475Smrgdnl function, since it cannot provide the termcap-format data). 1010d522f475Smrgdnl 1011d522f475Smrgdnl If the --disable-full-tgetent option is given, we'll settle for the first 1012d522f475Smrgdnl tgetent function we find. Since the search list in that case does not 1013d522f475Smrgdnl include the termcap library, that allows us to default to terminfo. 1014d522f475SmrgAC_DEFUN([CF_FUNC_TGETENT], 1015d522f475Smrg[ 1016d522f475Smrg# compute a reasonable value for $TERM to give tgetent(), since we may be 1017d522f475Smrg# running in 'screen', which sets $TERMCAP to a specific entry that is not 1018d522f475Smrg# necessarily in /etc/termcap - unsetenv is not portable, so we cannot simply 1019d522f475Smrg# discard $TERMCAP. 1020d522f475Smrgcf_TERMVAR=vt100 1021e39b573cSmrgif test -n "$TERMCAP" 1022e39b573cSmrgthen 1023e39b573cSmrg cf_TERMCAP=`echo "$TERMCAP" | tr '\n' ' ' | sed -e 's/^..|//' -e 's/|.*//'` 102401037d57Smrg case "$cf_TERMCAP" in 102501037d57Smrg (screen*.*) 1026e39b573cSmrg ;; 102701037d57Smrg (*) 1028e39b573cSmrg cf_TERMVAR="$cf_TERMCAP" 1029e39b573cSmrg ;; 1030e39b573cSmrg esac 1031e39b573cSmrgfi 1032d522f475Smrgtest -z "$cf_TERMVAR" && cf_TERMVAR=vt100 1033d522f475Smrg 1034f2e35a3aSmrg# BSD termcap used no header file 1035f2e35a3aSmrg# SVr4 provided termcap prototypes as a legacy feature in term.h 1036f2e35a3aSmrg# GNU termcap provided termcap prototypes in termcap.h 1037f2e35a3aSmrg# ncurses provides termcap prototypes in both term.h and termcap.h 1038f2e35a3aSmrg# 1039f2e35a3aSmrg# The terminfo-based termcap interfaces do not provide a full tgetent (i.e., do 1040f2e35a3aSmrg# not return the text of the termcap entry in the buffer), but as a special 1041f2e35a3aSmrg# case, FreeBSD provides ncurses' termcap.h with a modified termcap reader that 1042f2e35a3aSmrg# returns the termcap text. 1043f2e35a3aSmrgAC_CHECK_HEADERS(termcap.h) 1044f2e35a3aSmrg 1045d522f475SmrgAC_MSG_CHECKING(if we want full tgetent function) 1046d522f475SmrgCF_ARG_DISABLE(full-tgetent, 1047d522f475Smrg [ --disable-full-tgetent disable check for full tgetent function], 1048d522f475Smrg cf_full_tgetent=no, 1049d522f475Smrg cf_full_tgetent=yes,yes) 1050d522f475SmrgAC_MSG_RESULT($cf_full_tgetent) 1051d522f475Smrg 1052d522f475Smrgif test "$cf_full_tgetent" = yes ; then 1053d522f475Smrg cf_test_message="full tgetent" 1054d522f475Smrgelse 1055d522f475Smrg cf_test_message="tgetent" 1056d522f475Smrgfi 1057d522f475Smrg 1058d522f475SmrgAC_CACHE_CHECK(for $cf_test_message function,cf_cv_lib_tgetent,[ 1059d522f475Smrgcf_save_LIBS="$LIBS" 1060d522f475Smrgcf_cv_lib_tgetent=no 1061d522f475Smrgif test "$cf_full_tgetent" = yes ; then 10620bd37d32Smrg cf_TERMLIB="otermcap termcap termlib ncurses curses" 1063d522f475Smrg cf_TERMTST="buffer[[0]] == 0" 1064d522f475Smrgelse 1065d522f475Smrg cf_TERMLIB="termlib ncurses curses" 1066d522f475Smrg cf_TERMTST="0" 1067d522f475Smrgfi 1068d522f475Smrgfor cf_termlib in '' $cf_TERMLIB ; do 1069d522f475Smrg LIBS="$cf_save_LIBS" 10702e4f8982Smrg test -n "$cf_termlib" && { CF_ADD_LIB($cf_termlib) } 1071d522f475Smrg AC_TRY_RUN([ 1072f2e35a3aSmrg#ifdef HAVE_TERMCAP_H 1073f2e35a3aSmrg#include <termcap.h> 1074f2e35a3aSmrg#endif 1075d522f475Smrg/* terminfo implementations ignore the buffer argument, making it useless for 1076d522f475Smrg * the xterm application, which uses this information to make a new TERMCAP 1077d522f475Smrg * environment variable. 1078d522f475Smrg */ 1079f2e35a3aSmrgint main(void) 1080d522f475Smrg{ 1081d522f475Smrg char buffer[1024]; 1082d522f475Smrg buffer[0] = 0; 1083d522f475Smrg tgetent(buffer, "$cf_TERMVAR"); 1084d522f475Smrg ${cf_cv_main_return:-return} ($cf_TERMTST); }], 1085d522f475Smrg [echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&AC_FD_CC 1086d522f475Smrg if test -n "$cf_termlib" ; then 1087d522f475Smrg cf_cv_lib_tgetent="-l$cf_termlib" 1088d522f475Smrg else 1089d522f475Smrg cf_cv_lib_tgetent=yes 1090d522f475Smrg fi 1091d522f475Smrg break], 1092d522f475Smrg [echo "no, there is no termcap/tgetent in $cf_termlib" 1>&AC_FD_CC], 1093d522f475Smrg [echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&AC_FD_CC]) 1094d522f475Smrgdone 1095d522f475SmrgLIBS="$cf_save_LIBS" 1096d522f475Smrg]) 1097d522f475Smrg 1098d522f475Smrg# If we found a working tgetent(), set LIBS and check for termcap.h. 1099d522f475Smrg# (LIBS cannot be set inside AC_CACHE_CHECK; the commands there should 1100d522f475Smrg# not have side effects other than setting the cache variable, because 1101d522f475Smrg# they are not executed when a cached value exists.) 1102e39b573cSmrgif test "x$cf_cv_lib_tgetent" != xno ; then 11032e4f8982Smrg test "x$cf_cv_lib_tgetent" != xyes && { CF_ADD_LIBS($cf_cv_lib_tgetent) } 11040bd37d32Smrg AC_DEFINE(USE_TERMCAP,1,[Define 1 to indicate that working tgetent is found]) 110520d2c4d2Smrg if test "$cf_full_tgetent" = no ; then 110620d2c4d2Smrg AC_TRY_COMPILE([ 1107d522f475Smrg#include <termcap.h>],[ 1108d522f475Smrg#ifdef NCURSES_VERSION 1109d522f475Smrgmake an error 1110d522f475Smrg#endif],[AC_DEFINE(HAVE_TERMCAP_H)]) 111120d2c4d2Smrg else 111220d2c4d2Smrg AC_CHECK_HEADERS(termcap.h) 111320d2c4d2Smrg fi 1114d522f475Smrgelse 1115d522f475Smrg # If we didn't find a tgetent() that supports the buffer 1116d522f475Smrg # argument, look again to see whether we can find even 1117d522f475Smrg # a crippled one. A crippled tgetent() is still useful to 1118d522f475Smrg # validate values for the TERM environment variable given to 1119d522f475Smrg # child processes. 1120d522f475Smrg AC_CACHE_CHECK(for partial tgetent function,cf_cv_lib_part_tgetent,[ 1121d522f475Smrg cf_cv_lib_part_tgetent=no 1122d522f475Smrg for cf_termlib in $cf_TERMLIB ; do 1123d522f475Smrg LIBS="$cf_save_LIBS -l$cf_termlib" 1124d522f475Smrg AC_TRY_LINK([],[tgetent(0, "$cf_TERMVAR")], 1125d522f475Smrg [echo "there is a terminfo/tgetent in $cf_termlib" 1>&AC_FD_CC 1126d522f475Smrg cf_cv_lib_part_tgetent="-l$cf_termlib" 1127d522f475Smrg break]) 1128d522f475Smrg done 1129d522f475Smrg LIBS="$cf_save_LIBS" 1130d522f475Smrg ]) 1131d522f475Smrg 1132d522f475Smrg if test "$cf_cv_lib_part_tgetent" != no ; then 113320d2c4d2Smrg CF_ADD_LIBS($cf_cv_lib_part_tgetent) 1134d522f475Smrg AC_CHECK_HEADERS(termcap.h) 1135d522f475Smrg 1136d522f475Smrg # If this is linking against ncurses, we'll trigger the 1137d522f475Smrg # ifdef in resize.c that turns the termcap stuff back off. 11380bd37d32Smrg AC_DEFINE(USE_TERMINFO,1,[Define to 1 to indicate that terminfo provides the tgetent interface]) 1139d522f475Smrg fi 1140d522f475Smrgfi 1141d522f475Smrg])dnl 1142d522f475Smrgdnl --------------------------------------------------------------------------- 1143ad37e533Smrgdnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25 1144d522f475Smrgdnl ----------------- 1145d522f475Smrgdnl Test for availability of useful gcc __attribute__ directives to quiet 1146d522f475Smrgdnl compiler warnings. Though useful, not all are supported -- and contrary 1147d522f475Smrgdnl to documentation, unrecognized directives cause older compilers to barf. 1148d522f475SmrgAC_DEFUN([CF_GCC_ATTRIBUTES], 1149f2e35a3aSmrg[AC_REQUIRE([AC_PROG_FGREP])dnl 1150ad37e533SmrgAC_REQUIRE([CF_C11_NORETURN])dnl 1151f2e35a3aSmrg 1152f2e35a3aSmrgif test "$GCC" = yes || test "$GXX" = yes 1153d522f475Smrgthen 1154d522f475Smrgcat > conftest.i <<EOF 1155d522f475Smrg#ifndef GCC_PRINTF 1156d522f475Smrg#define GCC_PRINTF 0 1157d522f475Smrg#endif 1158d522f475Smrg#ifndef GCC_SCANF 1159d522f475Smrg#define GCC_SCANF 0 1160d522f475Smrg#endif 1161d522f475Smrg#ifndef GCC_NORETURN 1162d522f475Smrg#define GCC_NORETURN /* nothing */ 1163d522f475Smrg#endif 1164d522f475Smrg#ifndef GCC_UNUSED 1165d522f475Smrg#define GCC_UNUSED /* nothing */ 1166d522f475Smrg#endif 1167d522f475SmrgEOF 1168d522f475Smrgif test "$GCC" = yes 1169d522f475Smrgthen 1170d522f475Smrg AC_CHECKING([for $CC __attribute__ directives]) 1171f2e35a3aSmrgcat > "conftest.$ac_ext" <<EOF 11726879286fSmrg#line __oline__ "${as_me:-configure}" 1173d522f475Smrg#include "confdefs.h" 1174d522f475Smrg#include "conftest.h" 1175d522f475Smrg#include "conftest.i" 1176d522f475Smrg#if GCC_PRINTF 1177d522f475Smrg#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) 1178d522f475Smrg#else 1179d522f475Smrg#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ 1180d522f475Smrg#endif 1181d522f475Smrg#if GCC_SCANF 1182d522f475Smrg#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) 1183d522f475Smrg#else 1184d522f475Smrg#define GCC_SCANFLIKE(fmt,var) /*nothing*/ 1185d522f475Smrg#endif 1186d522f475Smrgextern void wow(char *,...) GCC_SCANFLIKE(1,2); 1187ad37e533Smrgextern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2); 1188ad37e533Smrgextern GCC_NORETURN void foo(void); 1189f2e35a3aSmrgint main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; } 1190d522f475SmrgEOF 119120d2c4d2Smrg cf_printf_attribute=no 119220d2c4d2Smrg cf_scanf_attribute=no 1193d522f475Smrg for cf_attribute in scanf printf unused noreturn 1194d522f475Smrg do 1195d522f475Smrg CF_UPPER(cf_ATTRIBUTE,$cf_attribute) 1196d522f475Smrg cf_directive="__attribute__(($cf_attribute))" 1197d522f475Smrg echo "checking for $CC $cf_directive" 1>&AC_FD_CC 119820d2c4d2Smrg 1199f2e35a3aSmrg case "$cf_attribute" in 120001037d57Smrg (printf) 120120d2c4d2Smrg cf_printf_attribute=yes 120220d2c4d2Smrg cat >conftest.h <<EOF 1203d522f475Smrg#define GCC_$cf_ATTRIBUTE 1 1204d522f475SmrgEOF 1205d522f475Smrg ;; 120601037d57Smrg (scanf) 120720d2c4d2Smrg cf_scanf_attribute=yes 120820d2c4d2Smrg cat >conftest.h <<EOF 120920d2c4d2Smrg#define GCC_$cf_ATTRIBUTE 1 121020d2c4d2SmrgEOF 121120d2c4d2Smrg ;; 121201037d57Smrg (*) 121320d2c4d2Smrg cat >conftest.h <<EOF 1214d522f475Smrg#define GCC_$cf_ATTRIBUTE $cf_directive 1215d522f475SmrgEOF 1216d522f475Smrg ;; 1217d522f475Smrg esac 121820d2c4d2Smrg 1219d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1220d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute) 1221d522f475Smrg cat conftest.h >>confdefs.h 1222f2e35a3aSmrg case "$cf_attribute" in 122301037d57Smrg (noreturn) 12240bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc]) 12250bd37d32Smrg ;; 122601037d57Smrg (printf) 12270bd37d32Smrg cf_value='/* nothing */' 12280bd37d32Smrg if test "$cf_printf_attribute" != no ; then 12290bd37d32Smrg cf_value='__attribute__((format(printf,fmt,var)))' 12300bd37d32Smrg AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.]) 123120d2c4d2Smrg fi 12320bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc]) 123320d2c4d2Smrg ;; 123401037d57Smrg (scanf) 12350bd37d32Smrg cf_value='/* nothing */' 12360bd37d32Smrg if test "$cf_scanf_attribute" != no ; then 12370bd37d32Smrg cf_value='__attribute__((format(scanf,fmt,var)))' 12380bd37d32Smrg AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.]) 123920d2c4d2Smrg fi 12400bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc]) 12410bd37d32Smrg ;; 124201037d57Smrg (unused) 12430bd37d32Smrg AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc]) 124420d2c4d2Smrg ;; 124520d2c4d2Smrg esac 1246d522f475Smrg fi 1247d522f475Smrg done 1248d522f475Smrgelse 1249f2e35a3aSmrg ${FGREP-fgrep} define conftest.i >>confdefs.h 1250d522f475Smrgfi 1251f2e35a3aSmrgrm -rf ./conftest* 1252d522f475Smrgfi 1253d522f475Smrg])dnl 1254d522f475Smrgdnl --------------------------------------------------------------------------- 1255f2e35a3aSmrgdnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36 1256d522f475Smrgdnl -------------- 1257f2e35a3aSmrgdnl Find version of gcc, and (because icc/clang pretend to be gcc without being 1258f2e35a3aSmrgdnl compatible), attempt to determine if icc/clang is actually used. 1259d522f475SmrgAC_DEFUN([CF_GCC_VERSION],[ 1260d522f475SmrgAC_REQUIRE([AC_PROG_CC]) 1261d522f475SmrgGCC_VERSION=none 1262d522f475Smrgif test "$GCC" = yes ; then 1263d522f475Smrg AC_MSG_CHECKING(version of $CC) 12640bd37d32Smrg 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.]].*//'`" 1265d522f475Smrg test -z "$GCC_VERSION" && GCC_VERSION=unknown 1266d522f475Smrg AC_MSG_RESULT($GCC_VERSION) 1267d522f475Smrgfi 1268f2e35a3aSmrgCF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) 1269f2e35a3aSmrgCF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS) 1270d522f475Smrg])dnl 1271d522f475Smrgdnl --------------------------------------------------------------------------- 1272f2e35a3aSmrgdnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59 1273d522f475Smrgdnl --------------- 1274d522f475Smrgdnl Check if the compiler supports useful warning options. There's a few that 1275d522f475Smrgdnl we don't use, simply because they're too noisy: 1276d522f475Smrgdnl 1277d522f475Smrgdnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) 1278f2e35a3aSmrgdnl -Winline (usually not worthwhile) 1279d522f475Smrgdnl -Wredundant-decls (system headers make this too noisy) 1280d522f475Smrgdnl -Wtraditional (combines too many unrelated messages, only a few useful) 1281d522f475Smrgdnl -Wwrite-strings (too noisy, but should review occasionally). This 1282d522f475Smrgdnl is enabled for ncurses using "--enable-const". 1283d522f475Smrgdnl -pedantic 1284d522f475Smrgdnl 1285d522f475Smrgdnl Parameter: 1286d522f475Smrgdnl $1 is an optional list of gcc warning flags that a particular 1287d522f475Smrgdnl application might want to use, e.g., "no-unused" for 1288d522f475Smrgdnl -Wno-unused 1289d522f475Smrgdnl Special: 1290d522f475Smrgdnl If $with_ext_const is "yes", add a check for -Wwrite-strings 1291d522f475Smrgdnl 1292d522f475SmrgAC_DEFUN([CF_GCC_WARNINGS], 1293d522f475Smrg[ 1294d522f475SmrgAC_REQUIRE([CF_GCC_VERSION]) 1295f2e35a3aSmrgif test "x$have_x" = xyes; then CF_CONST_X_STRING fi 1296f2e35a3aSmrgcat > "conftest.$ac_ext" <<EOF 12976879286fSmrg#line __oline__ "${as_me:-configure}" 1298d522f475Smrgint main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; } 1299d522f475SmrgEOF 1300d522f475Smrgif test "$INTEL_COMPILER" = yes 1301d522f475Smrgthen 1302d522f475Smrg# The "-wdXXX" options suppress warnings: 1303d522f475Smrg# remark #1419: external declaration in primary source file 1304d522f475Smrg# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem) 1305d522f475Smrg# remark #1684: conversion from pointer to same-sized integral type (potential portability problem) 1306d522f475Smrg# remark #193: zero used for undefined preprocessing identifier 1307d522f475Smrg# remark #593: variable "curs_sb_left_arrow" was set but never used 1308d522f475Smrg# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits 1309d522f475Smrg# remark #869: parameter "tw" was never referenced 1310d522f475Smrg# remark #981: operands are evaluated in unspecified order 1311956cc18dSsnj# warning #279: controlling expression is constant 1312d522f475Smrg 1313d522f475Smrg AC_CHECKING([for $CC warning options]) 1314d522f475Smrg cf_save_CFLAGS="$CFLAGS" 1315f2e35a3aSmrg EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" 1316d522f475Smrg for cf_opt in \ 1317d522f475Smrg wd1419 \ 1318d522f475Smrg wd1683 \ 1319d522f475Smrg wd1684 \ 1320d522f475Smrg wd193 \ 1321d522f475Smrg wd593 \ 1322956cc18dSsnj wd279 \ 1323d522f475Smrg wd810 \ 1324d522f475Smrg wd869 \ 1325d522f475Smrg wd981 1326d522f475Smrg do 1327d522f475Smrg CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" 1328d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1329d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) 1330d522f475Smrg EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" 1331d522f475Smrg fi 1332d522f475Smrg done 1333d522f475Smrg CFLAGS="$cf_save_CFLAGS" 1334f2e35a3aSmrgelif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" 1335d522f475Smrgthen 1336d522f475Smrg AC_CHECKING([for $CC warning options]) 1337d522f475Smrg cf_save_CFLAGS="$CFLAGS" 1338d522f475Smrg cf_warn_CONST="" 1339d522f475Smrg test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" 1340e0a2b6dfSmrg cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" 1341e0a2b6dfSmrg test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= 134220d2c4d2Smrg for cf_opt in W Wall \ 1343d522f475Smrg Wbad-function-cast \ 1344d522f475Smrg Wcast-align \ 1345d522f475Smrg Wcast-qual \ 1346e0a2b6dfSmrg Wdeclaration-after-statement \ 1347e0a2b6dfSmrg Wextra \ 1348d522f475Smrg Winline \ 1349d522f475Smrg Wmissing-declarations \ 1350d522f475Smrg Wmissing-prototypes \ 1351d522f475Smrg Wnested-externs \ 1352d522f475Smrg Wpointer-arith \ 1353d522f475Smrg Wshadow \ 1354d522f475Smrg Wstrict-prototypes \ 1355f2e35a3aSmrg Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1 1356d522f475Smrg do 1357d522f475Smrg CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" 1358d522f475Smrg if AC_TRY_EVAL(ac_compile); then 1359d522f475Smrg test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) 1360f2e35a3aSmrg case "$cf_opt" in 136101037d57Smrg (Winline) 1362f2e35a3aSmrg case "$GCC_VERSION" in 136301037d57Smrg ([[34]].*) 1364d522f475Smrg CF_VERBOSE(feature is broken in gcc $GCC_VERSION) 1365d522f475Smrg continue;; 1366d522f475Smrg esac 1367d522f475Smrg ;; 136801037d57Smrg (Wpointer-arith) 1369f2e35a3aSmrg case "$GCC_VERSION" in 137001037d57Smrg ([[12]].*) 13710bd37d32Smrg CF_VERBOSE(feature is broken in gcc $GCC_VERSION) 13720bd37d32Smrg continue;; 13730bd37d32Smrg esac 13740bd37d32Smrg ;; 1375d522f475Smrg esac 1376d522f475Smrg EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" 1377d522f475Smrg fi 1378d522f475Smrg done 1379d522f475Smrg CFLAGS="$cf_save_CFLAGS" 1380d522f475Smrgfi 1381f2e35a3aSmrgrm -rf ./conftest* 1382d522f475Smrg 1383d522f475SmrgAC_SUBST(EXTRA_CFLAGS) 1384d522f475Smrg])dnl 1385d522f475Smrgdnl --------------------------------------------------------------------------- 1386f2e35a3aSmrgdnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41 1387d522f475Smrgdnl ------------- 1388d522f475Smrgdnl Check if we must define _GNU_SOURCE to get a reasonable value for 1389d522f475Smrgdnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect 1390d522f475Smrgdnl (or misfeature) of glibc2, which breaks portability of many applications, 1391d522f475Smrgdnl since it is interwoven with GNU extensions. 1392d522f475Smrgdnl 1393d522f475Smrgdnl Well, yes we could work around it... 1394f2e35a3aSmrgdnl 1395f2e35a3aSmrgdnl Parameters: 1396f2e35a3aSmrgdnl $1 is the nominal value for _XOPEN_SOURCE 1397d522f475SmrgAC_DEFUN([CF_GNU_SOURCE], 1398d522f475Smrg[ 1399f2e35a3aSmrgcf_gnu_xopen_source=ifelse($1,,500,$1) 1400f2e35a3aSmrg 1401f2e35a3aSmrgAC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[ 1402d522f475SmrgAC_TRY_COMPILE([#include <sys/types.h>],[ 1403f2e35a3aSmrg #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 1404f2e35a3aSmrg return 0; 1405f2e35a3aSmrg #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 1406f2e35a3aSmrg return 0; 1407f2e35a3aSmrg #else 1408f2e35a3aSmrg # error not GNU C library 1409f2e35a3aSmrg #endif], 1410f2e35a3aSmrg [cf_cv_gnu_library=yes], 1411f2e35a3aSmrg [cf_cv_gnu_library=no]) 1412d522f475Smrg]) 1413913cc679Smrg 1414f2e35a3aSmrgif test x$cf_cv_gnu_library = xyes; then 1415f2e35a3aSmrg 1416f2e35a3aSmrg # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE 1417f2e35a3aSmrg # was changed to help a little. newlib incorporated the change about 4 1418f2e35a3aSmrg # years later. 1419f2e35a3aSmrg AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[ 1420f2e35a3aSmrg cf_save="$CPPFLAGS" 1421f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) 1422f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1423f2e35a3aSmrg #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2) 1424f2e35a3aSmrg return 0; 1425f2e35a3aSmrg #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3) 1426f2e35a3aSmrg return 0; 1427f2e35a3aSmrg #else 1428f2e35a3aSmrg # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old 1429f2e35a3aSmrg #endif], 1430f2e35a3aSmrg [cf_cv_gnu_library_219=yes], 1431f2e35a3aSmrg [cf_cv_gnu_library_219=no]) 1432f2e35a3aSmrg CPPFLAGS="$cf_save" 1433913cc679Smrg ]) 1434f2e35a3aSmrg 1435f2e35a3aSmrg if test "x$cf_cv_gnu_library_219" = xyes; then 1436f2e35a3aSmrg cf_save="$CPPFLAGS" 1437f2e35a3aSmrg AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[ 1438f2e35a3aSmrg CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source) 1439f2e35a3aSmrg AC_TRY_COMPILE([ 1440f2e35a3aSmrg #include <limits.h> 1441f2e35a3aSmrg #include <sys/types.h> 1442f2e35a3aSmrg ],[ 1443f2e35a3aSmrg #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) 1444f2e35a3aSmrg return 0; 1445f2e35a3aSmrg #else 1446f2e35a3aSmrg # error GNU C library is too old 1447f2e35a3aSmrg #endif], 1448f2e35a3aSmrg [cf_cv_gnu_dftsrc_219=yes], 1449f2e35a3aSmrg [cf_cv_gnu_dftsrc_219=no]) 1450f2e35a3aSmrg ]) 1451f2e35a3aSmrg test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" 1452f2e35a3aSmrg else 1453f2e35a3aSmrg cf_cv_gnu_dftsrc_219=maybe 1454f2e35a3aSmrg fi 1455f2e35a3aSmrg 1456f2e35a3aSmrg if test "x$cf_cv_gnu_dftsrc_219" != xyes; then 1457f2e35a3aSmrg 1458f2e35a3aSmrg AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[ 1459f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1460f2e35a3aSmrg #ifndef _XOPEN_SOURCE 1461f2e35a3aSmrg #error expected _XOPEN_SOURCE to be defined 1462f2e35a3aSmrg #endif], 1463f2e35a3aSmrg [cf_cv_gnu_source=no], 1464f2e35a3aSmrg [cf_save="$CPPFLAGS" 1465f2e35a3aSmrg CF_ADD_CFLAGS(-D_GNU_SOURCE) 1466f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1467f2e35a3aSmrg #ifdef _XOPEN_SOURCE 1468f2e35a3aSmrg #error expected _XOPEN_SOURCE to be undefined 1469f2e35a3aSmrg #endif], 1470f2e35a3aSmrg [cf_cv_gnu_source=no], 1471f2e35a3aSmrg [cf_cv_gnu_source=yes]) 1472f2e35a3aSmrg CPPFLAGS="$cf_save" 1473f2e35a3aSmrg ]) 1474f2e35a3aSmrg ]) 1475f2e35a3aSmrg 1476f2e35a3aSmrg if test "$cf_cv_gnu_source" = yes 1477f2e35a3aSmrg then 1478f2e35a3aSmrg AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[ 1479f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE) 1480f2e35a3aSmrg AC_TRY_COMPILE([#include <sys/types.h>],[ 1481f2e35a3aSmrg #ifdef _DEFAULT_SOURCE 1482f2e35a3aSmrg #error expected _DEFAULT_SOURCE to be undefined 1483f2e35a3aSmrg #endif], 1484f2e35a3aSmrg [cf_cv_default_source=no], 1485f2e35a3aSmrg [cf_cv_default_source=yes]) 1486f2e35a3aSmrg ]) 1487f2e35a3aSmrg if test "$cf_cv_default_source" = yes 1488f2e35a3aSmrg then 1489f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) 1490f2e35a3aSmrg fi 1491f2e35a3aSmrg fi 1492f2e35a3aSmrg fi 1493f2e35a3aSmrg 1494913cc679Smrgfi 1495d522f475Smrg])dnl 1496d522f475Smrgdnl --------------------------------------------------------------------------- 1497f2e35a3aSmrgdnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54 1498d522f475Smrgdnl --------------- 1499d522f475Smrgdnl Insert text into the help-message, for readability, from AC_ARG_WITH. 1500d522f475SmrgAC_DEFUN([CF_HELP_MESSAGE], 1501f2e35a3aSmrg[CF_ACVERSION_CHECK(2.53,[],[ 1502f2e35a3aSmrgAC_DIVERT_HELP($1)])dnl 1503d522f475Smrg])dnl 1504d522f475Smrgdnl --------------------------------------------------------------------------- 1505f2e35a3aSmrgdnl CF_IMAKE_CFLAGS version: 34 updated: 2020/12/31 18:40:20 1506d522f475Smrgdnl --------------- 1507d522f475Smrgdnl Use imake to obtain compiler flags. We could, in principle, write tests to 1508d522f475Smrgdnl get these, but if imake is properly configured there is no point in doing 1509d522f475Smrgdnl this. 1510d522f475Smrgdnl 1511d522f475Smrgdnl Parameters (used in constructing a sample Imakefile): 1512d522f475Smrgdnl $1 = optional value to append to $IMAKE_CFLAGS 1513d522f475Smrgdnl $2 = optional value to append to $IMAKE_LOADFLAGS 1514d522f475SmrgAC_DEFUN([CF_IMAKE_CFLAGS], 1515d522f475Smrg[ 1516d522f475SmrgAC_PATH_PROGS(IMAKE,xmkmf imake) 1517d522f475Smrg 1518d522f475Smrgif test -n "$IMAKE" ; then 1519d522f475Smrg 152001037d57Smrgcase $IMAKE in 152101037d57Smrg(*/imake) 152201037d57Smrg cf_imake_opts="-DUseInstalled=YES" 1523d522f475Smrg ;; 152401037d57Smrg(*/util/xmkmf) 1525d522f475Smrg # A single parameter tells xmkmf where the config-files are: 1526f2e35a3aSmrg cf_imake_opts="`echo "$IMAKE"|sed -e s,/config/util/xmkmf,,`" 1527d522f475Smrg ;; 152801037d57Smrg(*) 1529d522f475Smrg cf_imake_opts= 1530d522f475Smrg ;; 1531d522f475Smrgesac 1532d522f475Smrg 1533d522f475Smrg# If it's installed properly, imake (or its wrapper, xmkmf) will point to the 1534d522f475Smrg# config directory. 1535d522f475Smrgif mkdir conftestdir; then 1536d522f475Smrg CDPATH=; export CDPATH 1537f2e35a3aSmrg cf_makefile=`cd "$srcdir" || exit;pwd`/Imakefile 1538d522f475Smrg cd conftestdir 1539d522f475Smrg 1540d522f475Smrg cat >fix_cflags.sed <<'CF_EOF' 1541d522f475Smrgs/\\//g 1542d522f475Smrgs/[[ ]][[ ]]*/ /g 1543d522f475Smrgs/"//g 1544d522f475Smrg:pack 1545d522f475Smrgs/\(=[[^ ]][[^ ]]*\) \([[^-]]\)/\1 \2/g 1546d522f475Smrgt pack 1547d522f475Smrgs/\(-D[[a-zA-Z0-9_]][[a-zA-Z0-9_]]*\)=\([[^\'0-9 ]][[^ ]]*\)/\1='\\"\2\\"'/g 1548d522f475Smrgs/^IMAKE[[ ]]/IMAKE_CFLAGS="/ 1549d522f475Smrgs/ / /g 1550d522f475Smrgs/$/"/ 1551d522f475SmrgCF_EOF 1552d522f475Smrg 1553d522f475Smrg cat >fix_lflags.sed <<'CF_EOF' 1554d522f475Smrgs/^IMAKE[[ ]]*/IMAKE_LOADFLAGS="/ 1555d522f475Smrgs/$/"/ 1556d522f475SmrgCF_EOF 1557d522f475Smrg 1558d522f475Smrg echo >./Imakefile 1559f2e35a3aSmrg test -f "$cf_makefile" && cat "$cf_makefile" >>./Imakefile 1560d522f475Smrg 1561d522f475Smrg cat >> ./Imakefile <<'CF_EOF' 1562d522f475Smrgfindstddefs: 156320d2c4d2Smrg @echo IMAKE ${ALLDEFINES}ifelse([$1],,,[ $1]) | sed -f fix_cflags.sed 156420d2c4d2Smrg @echo IMAKE ${EXTRA_LOAD_FLAGS}ifelse([$2],,,[ $2]) | sed -f fix_lflags.sed 1565d522f475SmrgCF_EOF 1566d522f475Smrg 1567f2e35a3aSmrg if ( $IMAKE "$cf_imake_opts" 1>/dev/null 2>&AC_FD_CC && test -f Makefile) 1568d522f475Smrg then 1569d522f475Smrg CF_VERBOSE(Using $IMAKE $cf_imake_opts) 1570d522f475Smrg else 1571d522f475Smrg # sometimes imake doesn't have the config path compiled in. Find it. 1572d522f475Smrg cf_config= 1573d522f475Smrg for cf_libpath in $X_LIBS $LIBS ; do 1574f2e35a3aSmrg case "$cf_libpath" in 157501037d57Smrg (-L*) 1576f2e35a3aSmrg cf_libpath=`echo ".$cf_libpath" | sed -e 's/^...//'` 1577f2e35a3aSmrg cf_libpath="$cf_libpath/X11/config" 1578f2e35a3aSmrg if test -d "$cf_libpath" ; then 1579f2e35a3aSmrg cf_config="$cf_libpath" 1580d522f475Smrg break 1581d522f475Smrg fi 1582d522f475Smrg ;; 1583d522f475Smrg esac 1584d522f475Smrg done 1585d522f475Smrg if test -z "$cf_config" ; then 1586d522f475Smrg AC_MSG_WARN(Could not find imake config-directory) 1587d522f475Smrg else 1588d522f475Smrg cf_imake_opts="$cf_imake_opts -I$cf_config" 1589f2e35a3aSmrg if ( "$IMAKE" -v "$cf_imake_opts" 2>&AC_FD_CC) 1590d522f475Smrg then 1591d522f475Smrg CF_VERBOSE(Using $IMAKE $cf_config) 1592d522f475Smrg else 1593d522f475Smrg AC_MSG_WARN(Cannot run $IMAKE) 1594d522f475Smrg fi 1595d522f475Smrg fi 1596d522f475Smrg fi 1597d522f475Smrg 1598d522f475Smrg # GNU make sometimes prints "make[1]: Entering...", which 1599d522f475Smrg # would confuse us. 1600f2e35a3aSmrg eval "`make findstddefs 2>/dev/null | grep -v make`" 1601d522f475Smrg 1602d522f475Smrg cd .. 1603d522f475Smrg rm -rf conftestdir 1604d522f475Smrg 1605d522f475Smrg # We use ${ALLDEFINES} rather than ${STD_DEFINES} because the former 1606d522f475Smrg # declares XTFUNCPROTO there. However, some vendors (e.g., SGI) have 1607d522f475Smrg # modified it to support site.cf, adding a kludge for the /usr/include 1608d522f475Smrg # directory. Try to filter that out, otherwise gcc won't find its 1609d522f475Smrg # headers. 1610d522f475Smrg if test -n "$GCC" ; then 1611d522f475Smrg if test -n "$IMAKE_CFLAGS" ; then 1612d522f475Smrg cf_nostdinc="" 1613d522f475Smrg cf_std_incl="" 1614d522f475Smrg cf_cpp_opts="" 1615d522f475Smrg for cf_opt in $IMAKE_CFLAGS 1616d522f475Smrg do 1617d522f475Smrg case "$cf_opt" in 161801037d57Smrg (-nostdinc) 1619d522f475Smrg cf_nostdinc="$cf_opt" 1620d522f475Smrg ;; 162101037d57Smrg (-I/usr/include) 1622d522f475Smrg cf_std_incl="$cf_opt" 1623d522f475Smrg ;; 162401037d57Smrg (*) 1625d522f475Smrg cf_cpp_opts="$cf_cpp_opts $cf_opt" 1626d522f475Smrg ;; 1627d522f475Smrg esac 1628d522f475Smrg done 1629d522f475Smrg if test -z "$cf_nostdinc" ; then 1630d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts $cf_std_incl" 1631d522f475Smrg elif test -z "$cf_std_incl" ; then 1632d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts $cf_nostdinc" 1633d522f475Smrg else 1634d522f475Smrg CF_VERBOSE(suppressed \"$cf_nostdinc\" and \"$cf_std_incl\") 1635d522f475Smrg IMAKE_CFLAGS="$cf_cpp_opts" 1636d522f475Smrg fi 1637d522f475Smrg fi 1638d522f475Smrg fi 1639d522f475Smrgfi 1640d522f475Smrg 1641d522f475Smrg# Some imake configurations define PROJECTROOT with an empty value. Remove 1642d522f475Smrg# the empty definition. 1643d522f475Smrgcase $IMAKE_CFLAGS in 164401037d57Smrg(*-DPROJECTROOT=/*) 1645d522f475Smrg ;; 164601037d57Smrg(*) 1647d522f475Smrg IMAKE_CFLAGS=`echo "$IMAKE_CFLAGS" |sed -e "s,-DPROJECTROOT=[[ ]], ,"` 1648d522f475Smrg ;; 1649d522f475Smrgesac 1650d522f475Smrg 1651d522f475Smrgfi 1652d522f475Smrg 1653d522f475SmrgCF_VERBOSE(IMAKE_CFLAGS $IMAKE_CFLAGS) 1654d522f475SmrgCF_VERBOSE(IMAKE_LOADFLAGS $IMAKE_LOADFLAGS) 1655d522f475Smrg 1656d522f475SmrgAC_SUBST(IMAKE_CFLAGS) 1657d522f475SmrgAC_SUBST(IMAKE_LOADFLAGS) 1658d522f475Smrg])dnl 1659d522f475Smrgdnl --------------------------------------------------------------------------- 1660ae137402Smrgdnl CF_INPUT_METHOD version: 5 updated: 2021/06/07 17:39:17 1661d522f475Smrgdnl --------------- 1662d522f475Smrgdnl Check if the X libraries support input-method 1663d522f475SmrgAC_DEFUN([CF_INPUT_METHOD], 1664d522f475Smrg[ 1665d522f475SmrgAC_CACHE_CHECK([if X libraries support input-method],cf_cv_input_method,[ 1666d522f475SmrgAC_TRY_LINK([ 1667d522f475Smrg#include <X11/IntrinsicP.h> 1668d522f475Smrg#include <X11/Xatom.h> 1669d522f475Smrg#include <X11/Xutil.h> 1670d522f475Smrg#include <X11/Xmu/Atoms.h> 1671d522f475Smrg#include <X11/Xmu/Converters.h> 1672d522f475Smrg#include <X11/Xaw/XawImP.h> 1673d522f475Smrg],[ 1674d522f475Smrg{ 1675d522f475Smrg XIM xim; 1676d522f475Smrg XIMStyles *xim_styles = 0; 1677d522f475Smrg XIMStyle input_style; 1678ae137402Smrg Widget w = XtCreateWidget("none", (WidgetClass)0, None, (ArgList)0, 0); 1679d522f475Smrg 1680d522f475Smrg XSetLocaleModifiers("@im=none"); 1681d522f475Smrg xim = XOpenIM(XtDisplay(w), NULL, NULL, NULL); 1682d522f475Smrg XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL); 1683d522f475Smrg XCloseIM(xim); 1684d522f475Smrg input_style = (XIMPreeditNothing | XIMStatusNothing); 1685f2e35a3aSmrg (void)xim_styles; 1686f2e35a3aSmrg (void)input_style; 1687d522f475Smrg} 1688d522f475Smrg], 1689d522f475Smrg[cf_cv_input_method=yes], 1690d522f475Smrg[cf_cv_input_method=no])]) 1691d522f475Smrg])dnl 1692d522f475Smrgdnl --------------------------------------------------------------------------- 1693f2e35a3aSmrgdnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59 1694d522f475Smrgdnl ----------------- 1695d522f475Smrgdnl Check if the given compiler is really the Intel compiler for Linux. It 1696d522f475Smrgdnl tries to imitate gcc, but does not return an error when it finds a mismatch 1697d522f475Smrgdnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. 1698d522f475Smrgdnl 1699d522f475Smrgdnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to 1700d522f475Smrgdnl ensure that it is not mistaken for gcc/g++. It is normally invoked from 1701d522f475Smrgdnl the wrappers for gcc and g++ warnings. 1702d522f475Smrgdnl 1703d522f475Smrgdnl $1 = GCC (default) or GXX 1704d522f475Smrgdnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS 1705d522f475Smrgdnl $3 = CFLAGS (default) or CXXFLAGS 1706d522f475SmrgAC_DEFUN([CF_INTEL_COMPILER],[ 17070bd37d32SmrgAC_REQUIRE([AC_CANONICAL_HOST]) 170820d2c4d2Smrgifelse([$2],,INTEL_COMPILER,[$2])=no 1709d522f475Smrg 171020d2c4d2Smrgif test "$ifelse([$1],,[$1],GCC)" = yes ; then 1711f2e35a3aSmrg case "$host_os" in 171201037d57Smrg (linux*|gnu*) 171320d2c4d2Smrg AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler) 171420d2c4d2Smrg cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" 171520d2c4d2Smrg ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc" 1716d522f475Smrg AC_TRY_COMPILE([],[ 1717d522f475Smrg#ifdef __INTEL_COMPILER 1718d522f475Smrg#else 1719d522f475Smrgmake an error 1720d522f475Smrg#endif 172120d2c4d2Smrg],[ifelse([$2],,INTEL_COMPILER,[$2])=yes 1722894e0ac8Smrgcf_save_CFLAGS="$cf_save_CFLAGS -we147" 1723d522f475Smrg],[]) 172420d2c4d2Smrg ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" 172520d2c4d2Smrg AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) 1726d522f475Smrg ;; 1727d522f475Smrg esac 1728d522f475Smrgfi 1729d522f475Smrg])dnl 1730d522f475Smrgdnl --------------------------------------------------------------------------- 1731f2e35a3aSmrgdnl CF_LASTLOG version: 7 updated: 2021/01/02 09:31:20 1732d522f475Smrgdnl ---------- 1733d522f475Smrgdnl Check for header defining _PATH_LASTLOG, or failing that, see if the lastlog 1734d522f475Smrgdnl file exists. 1735d522f475SmrgAC_DEFUN([CF_LASTLOG], 1736d522f475Smrg[ 1737d522f475SmrgAC_CHECK_HEADERS(lastlog.h paths.h) 1738d522f475SmrgAC_CACHE_CHECK(for lastlog path,cf_cv_path_lastlog,[ 1739d522f475SmrgAC_TRY_COMPILE([ 1740d522f475Smrg#include <sys/types.h> 1741d522f475Smrg#ifdef HAVE_LASTLOG_H 1742d522f475Smrg#include <lastlog.h> 1743d522f475Smrg#else 1744d522f475Smrg#ifdef HAVE_PATHS_H 1745d522f475Smrg#include <paths.h> 1746d522f475Smrg#endif 1747f2e35a3aSmrg#endif],[char *path = _PATH_LASTLOG; (void)path], 1748d522f475Smrg [cf_cv_path_lastlog="_PATH_LASTLOG"], 1749d522f475Smrg [if test -f /usr/adm/lastlog ; then 1750d522f475Smrg cf_cv_path_lastlog=/usr/adm/lastlog 1751d522f475Smrg else 1752d522f475Smrg cf_cv_path_lastlog=no 1753d522f475Smrg fi]) 1754d522f475Smrg]) 1755f2e35a3aSmrgtest "$cf_cv_path_lastlog" != no && AC_DEFINE(USE_LASTLOG,1,[Define to 1 if we can define lastlog pathname]) 1756d522f475Smrg])dnl 1757d522f475Smrgdnl --------------------------------------------------------------------------- 1758f2e35a3aSmrgdnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04 175920d2c4d2Smrgdnl --------------- 176020d2c4d2Smrgdnl For the given system and compiler, find the compiler flags to pass to the 176120d2c4d2Smrgdnl loader to use the "rpath" feature. 176220d2c4d2SmrgAC_DEFUN([CF_LD_RPATH_OPT], 176320d2c4d2Smrg[ 176420d2c4d2SmrgAC_REQUIRE([CF_CHECK_CACHE]) 176520d2c4d2Smrg 176620d2c4d2SmrgLD_RPATH_OPT= 1767f2e35a3aSmrgif test "x$cf_cv_enable_rpath" != xno 1768f2e35a3aSmrgthen 1769f2e35a3aSmrg AC_MSG_CHECKING(for an rpath option) 1770f2e35a3aSmrg case "$cf_cv_system_name" in 1771f2e35a3aSmrg (irix*) 1772f2e35a3aSmrg if test "$GCC" = yes; then 1773f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1774f2e35a3aSmrg else 1775f2e35a3aSmrg LD_RPATH_OPT="-rpath " 1776f2e35a3aSmrg fi 1777f2e35a3aSmrg ;; 1778f2e35a3aSmrg (linux*|gnu*|k*bsd*-gnu|freebsd*) 177920d2c4d2Smrg LD_RPATH_OPT="-Wl,-rpath," 1780f2e35a3aSmrg ;; 1781f2e35a3aSmrg (openbsd[[2-9]].*|mirbsd*) 1782f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1783f2e35a3aSmrg ;; 1784f2e35a3aSmrg (dragonfly*) 178520d2c4d2Smrg LD_RPATH_OPT="-rpath " 1786f2e35a3aSmrg ;; 1787f2e35a3aSmrg (netbsd*) 1788f2e35a3aSmrg LD_RPATH_OPT="-Wl,-rpath," 1789f2e35a3aSmrg ;; 1790f2e35a3aSmrg (osf*|mls+*) 1791f2e35a3aSmrg LD_RPATH_OPT="-rpath " 1792f2e35a3aSmrg ;; 1793f2e35a3aSmrg (solaris2*) 1794f2e35a3aSmrg LD_RPATH_OPT="-R" 1795f2e35a3aSmrg ;; 1796f2e35a3aSmrg (*) 1797f2e35a3aSmrg ;; 1798f2e35a3aSmrg esac 1799f2e35a3aSmrg AC_MSG_RESULT($LD_RPATH_OPT) 1800f2e35a3aSmrg 1801f2e35a3aSmrg case "x$LD_RPATH_OPT" in 1802f2e35a3aSmrg (x-R*) 1803f2e35a3aSmrg AC_MSG_CHECKING(if we need a space after rpath option) 1804f2e35a3aSmrg cf_save_LIBS="$LIBS" 1805f2e35a3aSmrg CF_ADD_LIBS(${LD_RPATH_OPT}$libdir) 1806f2e35a3aSmrg AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes) 1807f2e35a3aSmrg LIBS="$cf_save_LIBS" 1808f2e35a3aSmrg AC_MSG_RESULT($cf_rpath_space) 1809f2e35a3aSmrg test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " 1810f2e35a3aSmrg ;; 1811f2e35a3aSmrg esac 1812f2e35a3aSmrgfi 181320d2c4d2Smrg])dnl 181420d2c4d2Smrgdnl --------------------------------------------------------------------------- 18156879286fSmrgdnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 181620d2c4d2Smrgdnl ------------ 181720d2c4d2Smrgdnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have 181820d2c4d2Smrgdnl a monocase filesystem. 181920d2c4d2SmrgAC_DEFUN([CF_MAKE_TAGS],[ 182020d2c4d2SmrgAC_REQUIRE([CF_MIXEDCASE_FILENAMES]) 182120d2c4d2Smrg 182220d2c4d2SmrgAC_CHECK_PROGS(CTAGS, exctags ctags) 182320d2c4d2SmrgAC_CHECK_PROGS(ETAGS, exetags etags) 182420d2c4d2Smrg 18256879286fSmrgAC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) 182620d2c4d2Smrg 182720d2c4d2Smrgif test "$cf_cv_mixedcase" = yes ; then 18286879286fSmrg AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) 182920d2c4d2Smrgelse 183020d2c4d2Smrg MAKE_UPPER_TAGS=no 183120d2c4d2Smrgfi 183220d2c4d2Smrg 183320d2c4d2Smrgif test "$MAKE_UPPER_TAGS" = yes ; then 183420d2c4d2Smrg MAKE_UPPER_TAGS= 183520d2c4d2Smrgelse 183620d2c4d2Smrg MAKE_UPPER_TAGS="#" 183720d2c4d2Smrgfi 183820d2c4d2Smrg 183920d2c4d2Smrgif test "$MAKE_LOWER_TAGS" = yes ; then 184020d2c4d2Smrg MAKE_LOWER_TAGS= 184120d2c4d2Smrgelse 184220d2c4d2Smrg MAKE_LOWER_TAGS="#" 184320d2c4d2Smrgfi 184420d2c4d2Smrg 184520d2c4d2SmrgAC_SUBST(CTAGS) 184620d2c4d2SmrgAC_SUBST(ETAGS) 184720d2c4d2Smrg 184820d2c4d2SmrgAC_SUBST(MAKE_UPPER_TAGS) 184920d2c4d2SmrgAC_SUBST(MAKE_LOWER_TAGS) 185020d2c4d2Smrg])dnl 185120d2c4d2Smrgdnl --------------------------------------------------------------------------- 1852f2e35a3aSmrgdnl CF_MATH_LIB version: 10 updated: 2020/12/31 18:40:20 1853894e0ac8Smrgdnl ----------- 1854894e0ac8Smrgdnl Checks for libraries. At least one UNIX system, Apple Macintosh 1855894e0ac8Smrgdnl Rhapsody 5.5, does not have -lm. We cannot use the simpler 1856894e0ac8Smrgdnl AC_CHECK_LIB(m,sin), because that fails for C++. 1857894e0ac8SmrgAC_DEFUN([CF_MATH_LIB], 1858894e0ac8Smrg[ 1859894e0ac8SmrgAC_CACHE_CHECK(if -lm needed for math functions, 1860894e0ac8Smrg cf_cv_need_libm,[ 1861894e0ac8Smrg AC_TRY_LINK([ 1862894e0ac8Smrg #include <stdio.h> 1863913cc679Smrg #include <stdlib.h> 1864894e0ac8Smrg #include <math.h> 1865894e0ac8Smrg ], 1866f2e35a3aSmrg [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)], 1867894e0ac8Smrg [cf_cv_need_libm=no], 1868894e0ac8Smrg [cf_cv_need_libm=yes])]) 1869894e0ac8Smrgif test "$cf_cv_need_libm" = yes 1870894e0ac8Smrgthen 1871894e0ac8Smrgifelse($1,,[ 1872894e0ac8Smrg CF_ADD_LIB(m) 1873894e0ac8Smrg],[$1=-lm]) 1874894e0ac8Smrgfi 1875894e0ac8Smrg]) 1876894e0ac8Smrgdnl --------------------------------------------------------------------------- 1877f2e35a3aSmrgdnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59 187820d2c4d2Smrgdnl ---------------------- 187920d2c4d2Smrgdnl Check if the file-system supports mixed-case filenames. If we're able to 188020d2c4d2Smrgdnl create a lowercase name and see it as uppercase, it doesn't support that. 188120d2c4d2SmrgAC_DEFUN([CF_MIXEDCASE_FILENAMES], 188220d2c4d2Smrg[ 188320d2c4d2SmrgAC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ 188420d2c4d2Smrgif test "$cross_compiling" = yes ; then 1885f2e35a3aSmrg case "$target_alias" in 1886f2e35a3aSmrg (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) 188720d2c4d2Smrg cf_cv_mixedcase=no 188820d2c4d2Smrg ;; 188901037d57Smrg (*) 189020d2c4d2Smrg cf_cv_mixedcase=yes 189120d2c4d2Smrg ;; 189220d2c4d2Smrg esac 189320d2c4d2Smrgelse 189420d2c4d2Smrg rm -f conftest CONFTEST 189520d2c4d2Smrg echo test >conftest 189620d2c4d2Smrg if test -f CONFTEST ; then 189720d2c4d2Smrg cf_cv_mixedcase=no 189820d2c4d2Smrg else 189920d2c4d2Smrg cf_cv_mixedcase=yes 190020d2c4d2Smrg fi 190120d2c4d2Smrg rm -f conftest CONFTEST 190220d2c4d2Smrgfi 190320d2c4d2Smrg]) 19040bd37d32Smrgtest "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.]) 190520d2c4d2Smrg])dnl 190620d2c4d2Smrgdnl --------------------------------------------------------------------------- 19076879286fSmrgdnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 1908d522f475Smrgdnl ---------- 1909d522f475Smrgdnl Write a debug message to config.log, along with the line number in the 1910d522f475Smrgdnl configure script. 1911d522f475SmrgAC_DEFUN([CF_MSG_LOG],[ 19126879286fSmrgecho "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC 1913d522f475Smrg])dnl 1914d522f475Smrgdnl --------------------------------------------------------------------------- 1915a5ae21e4Smrgdnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41 19160bd37d32Smrgdnl ------------------ 19170bd37d32Smrgdnl see CF_WITH_NO_LEAKS 1918a5ae21e4Smrgdnl 1919a5ae21e4Smrgdnl $1 = option/name 1920a5ae21e4Smrgdnl $2 = help-text 1921a5ae21e4Smrgdnl $3 = symbol to define if the option is set 1922a5ae21e4Smrgdnl $4 = additional actions to take if the option is set 19230bd37d32SmrgAC_DEFUN([CF_NO_LEAKS_OPTION],[ 19240bd37d32SmrgAC_MSG_CHECKING(if you want to use $1 for testing) 19250bd37d32SmrgAC_ARG_WITH($1, 19260bd37d32Smrg [$2], 1927a5ae21e4Smrg [case "x$withval" in 1928a5ae21e4Smrg (x|xno) ;; 1929a5ae21e4Smrg (*) 1930a5ae21e4Smrg : "${with_cflags:=-g}" 1931a5ae21e4Smrg : "${enable_leaks:=no}" 1932a5ae21e4Smrg with_$1=yes 1933a5ae21e4Smrg AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[ 19340bd37d32Smrg $4 19350bd37d32Smrg]) 1936a5ae21e4Smrg ;; 1937a5ae21e4Smrg esac], 19380bd37d32Smrg [with_$1=]) 19390bd37d32SmrgAC_MSG_RESULT(${with_$1:-no}) 19400bd37d32Smrg 1941f2e35a3aSmrgcase ".$with_cflags" in 194201037d57Smrg(.*-g*) 194301037d57Smrg case .$CFLAGS in 194401037d57Smrg (.*-g*) 19450bd37d32Smrg ;; 194601037d57Smrg (*) 19470bd37d32Smrg CF_ADD_CFLAGS([-g]) 19480bd37d32Smrg ;; 19490bd37d32Smrg esac 19500bd37d32Smrg ;; 19510bd37d32Smrgesac 19520bd37d32Smrg])dnl 19530bd37d32Smrgdnl --------------------------------------------------------------------------- 1954f2e35a3aSmrgdnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04 1955956cc18dSsnjdnl ---------- 19560bd37d32Smrgdnl Provide a value for the $PATH and similar separator (or amend the value 19570bd37d32Smrgdnl as provided in autoconf 2.5x). 1958956cc18dSsnjAC_DEFUN([CF_PATHSEP], 1959956cc18dSsnj[ 19600bd37d32Smrg AC_MSG_CHECKING(for PATH separator) 1961f2e35a3aSmrg case "$cf_cv_system_name" in 196201037d57Smrg (os2*) PATH_SEPARATOR=';' ;; 196301037d57Smrg (*) ${PATH_SEPARATOR:=':'} ;; 1964956cc18dSsnj esac 196520d2c4d2Smrgifelse([$1],,,[$1=$PATH_SEPARATOR]) 1966956cc18dSsnj AC_SUBST(PATH_SEPARATOR) 19670bd37d32Smrg AC_MSG_RESULT($PATH_SEPARATOR) 1968956cc18dSsnj])dnl 1969956cc18dSsnjdnl --------------------------------------------------------------------------- 1970f2e35a3aSmrgdnl CF_PATH_PROG version: 12 updated: 2021/01/02 09:31:20 1971d522f475Smrgdnl ------------ 1972d522f475Smrgdnl Check for a given program, defining corresponding symbol. 1973d522f475Smrgdnl $1 = environment variable, which is suffixed by "_PATH" in the #define. 1974d522f475Smrgdnl $2 = program name to find. 1975d522f475Smrgdnl $3 = optional list of additional program names to test. 1976f2e35a3aSmrgdnl $4 = $PATH 1977d522f475Smrgdnl 1978d522f475Smrgdnl If there is more than one token in the result, #define the remaining tokens 1979d522f475Smrgdnl to $1_ARGS. We need this for 'install' in particular. 1980d522f475Smrgdnl 1981d522f475Smrgdnl FIXME: we should allow this to be overridden by environment variables 1982d522f475Smrgdnl 1983d522f475SmrgAC_DEFUN([CF_PATH_PROG],[ 1984956cc18dSsnjAC_REQUIRE([CF_PATHSEP]) 1985f2e35a3aSmrgtest -z "[$]$1" && $1="$2" 1986f2e35a3aSmrgAC_PATH_PROGS($1,[$]$1 $2 ifelse($3,,,$3),[$]$1, ifelse($4,,,$4)) 1987d522f475Smrg 1988d522f475Smrgcf_path_prog="" 1989d522f475Smrgcf_path_args="" 19906879286fSmrgIFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR" 1991d522f475Smrgfor cf_temp in $ac_cv_path_$1 1992d522f475Smrgdo 1993d522f475Smrg if test -z "$cf_path_prog" ; then 1994d522f475Smrg if test "$with_full_paths" = yes ; then 1995d522f475Smrg CF_PATH_SYNTAX(cf_temp,break) 1996d522f475Smrg cf_path_prog="$cf_temp" 1997d522f475Smrg else 1998f2e35a3aSmrg cf_path_prog="`basename "$cf_temp"`" 1999d522f475Smrg fi 2000d522f475Smrg elif test -z "$cf_path_args" ; then 2001d522f475Smrg cf_path_args="$cf_temp" 2002d522f475Smrg else 2003d522f475Smrg cf_path_args="$cf_path_args $cf_temp" 2004d522f475Smrg fi 2005d522f475Smrgdone 2006d522f475SmrgIFS="$cf_save_ifs" 2007d522f475Smrg 2008d522f475Smrgif test -n "$cf_path_prog" ; then 2009d522f475Smrg CF_MSG_LOG(defining path for ${cf_path_prog}) 20100bd37d32Smrg AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog",Define to pathname $1) 20110bd37d32Smrg test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args",Define to provide args for $1) 2012d522f475Smrgfi 2013d522f475Smrg])dnl 2014d522f475Smrgdnl --------------------------------------------------------------------------- 2015f2e35a3aSmrgdnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20 2016d522f475Smrgdnl -------------- 2017d522f475Smrgdnl Check the argument to see that it looks like a pathname. Rewrite it if it 2018d522f475Smrgdnl begins with one of the prefix/exec_prefix variables, and then again if the 2019d522f475Smrgdnl result begins with 'NONE'. This is necessary to work around autoconf's 2020d522f475Smrgdnl delayed evaluation of those symbols. 2021d522f475SmrgAC_DEFUN([CF_PATH_SYNTAX],[ 2022d522f475Smrgif test "x$prefix" != xNONE; then 20232e4f8982Smrg cf_path_syntax="$prefix" 2024d522f475Smrgelse 20252e4f8982Smrg cf_path_syntax="$ac_default_prefix" 2026d522f475Smrgfi 2027d522f475Smrg 202801037d57Smrgcase ".[$]$1" in 202901037d57Smrg(.\[$]\(*\)*|.\'*\'*) 20302e4f8982Smrg ;; 203101037d57Smrg(..|./*|.\\*) 20322e4f8982Smrg ;; 203301037d57Smrg(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX 20342e4f8982Smrg ;; 2035f2e35a3aSmrg(.\[$]\{*prefix\}*|.\[$]\{*dir\}*) 20362e4f8982Smrg eval $1="[$]$1" 20372e4f8982Smrg case ".[$]$1" in 20382e4f8982Smrg (.NONE/*) 2039f2e35a3aSmrg $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` 20402e4f8982Smrg ;; 20412e4f8982Smrg esac 20422e4f8982Smrg ;; 204301037d57Smrg(.no|.NONE/*) 2044f2e35a3aSmrg $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` 20452e4f8982Smrg ;; 204601037d57Smrg(*) 20472e4f8982Smrg ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) 20482e4f8982Smrg ;; 2049d522f475Smrgesac 2050d522f475Smrg])dnl 2051d522f475Smrgdnl --------------------------------------------------------------------------- 2052f2e35a3aSmrgdnl CF_PKG_CONFIG version: 11 updated: 2021/01/01 13:31:04 2053956cc18dSsnjdnl ------------- 2054956cc18dSsnjdnl Check for the package-config program, unless disabled by command-line. 2055956cc18dSsnjAC_DEFUN([CF_PKG_CONFIG], 2056956cc18dSsnj[ 2057956cc18dSsnjAC_MSG_CHECKING(if you want to use pkg-config) 2058956cc18dSsnjAC_ARG_WITH(pkg-config, 2059956cc18dSsnj [ --with-pkg-config{=path} enable/disable use of pkg-config], 2060956cc18dSsnj [cf_pkg_config=$withval], 2061956cc18dSsnj [cf_pkg_config=yes]) 2062956cc18dSsnjAC_MSG_RESULT($cf_pkg_config) 2063956cc18dSsnj 2064f2e35a3aSmrgcase "$cf_pkg_config" in 206501037d57Smrg(no) 2066956cc18dSsnj PKG_CONFIG=none 2067956cc18dSsnj ;; 206801037d57Smrg(yes) 2069e39b573cSmrg CF_ACVERSION_CHECK(2.52, 2070e39b573cSmrg [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)], 2071e39b573cSmrg [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)]) 2072956cc18dSsnj ;; 207301037d57Smrg(*) 2074956cc18dSsnj PKG_CONFIG=$withval 2075956cc18dSsnj ;; 2076956cc18dSsnjesac 2077956cc18dSsnj 2078956cc18dSsnjtest -z "$PKG_CONFIG" && PKG_CONFIG=none 2079956cc18dSsnjif test "$PKG_CONFIG" != none ; then 2080956cc18dSsnj CF_PATH_SYNTAX(PKG_CONFIG) 20812e4f8982Smrgelif test "x$cf_pkg_config" != xno ; then 208201037d57Smrg AC_MSG_WARN(pkg-config is not installed) 2083956cc18dSsnjfi 2084956cc18dSsnj 2085956cc18dSsnjAC_SUBST(PKG_CONFIG) 2086956cc18dSsnj])dnl 2087956cc18dSsnjdnl --------------------------------------------------------------------------- 2088f2e35a3aSmrgdnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17 2089d522f475Smrgdnl ----------------- 2090d522f475Smrgdnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. 2091d522f475Smrgdnl 2092d522f475Smrgdnl POSIX.1-1990 _POSIX_SOURCE 2093d522f475Smrgdnl POSIX.1-1990 and _POSIX_SOURCE and 2094d522f475Smrgdnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 2095d522f475Smrgdnl Bindings Option 2096d522f475Smrgdnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L 2097d522f475Smrgdnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L 2098d522f475Smrgdnl X/Open 2000 _POSIX_C_SOURCE=200112L 2099d522f475Smrgdnl 2100d522f475Smrgdnl Parameters: 2101d522f475Smrgdnl $1 is the nominal value for _POSIX_C_SOURCE 2102d522f475SmrgAC_DEFUN([CF_POSIX_C_SOURCE], 2103f2e35a3aSmrg[AC_REQUIRE([CF_POSIX_VISIBLE])dnl 2104f2e35a3aSmrg 2105f2e35a3aSmrgif test "$cf_cv_posix_visible" = no; then 2106f2e35a3aSmrg 210720d2c4d2Smrgcf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) 2108d522f475Smrg 2109d522f475Smrgcf_save_CFLAGS="$CFLAGS" 2110d522f475Smrgcf_save_CPPFLAGS="$CPPFLAGS" 2111d522f475Smrg 2112d522f475SmrgCF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) 2113d522f475SmrgCF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE) 2114d522f475Smrg 2115d522f475SmrgAC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ 2116d522f475Smrg CF_MSG_LOG(if the symbol is already defined go no further) 2117d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2118d522f475Smrg#ifndef _POSIX_C_SOURCE 2119d522f475Smrgmake an error 2120d522f475Smrg#endif], 2121d522f475Smrg [cf_cv_posix_c_source=no], 2122d522f475Smrg [cf_want_posix_source=no 212301037d57Smrg case .$cf_POSIX_C_SOURCE in 212401037d57Smrg (.[[12]]??*) 2125d522f475Smrg cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 2126d522f475Smrg ;; 212701037d57Smrg (.2) 2128d522f475Smrg cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 2129d522f475Smrg cf_want_posix_source=yes 2130d522f475Smrg ;; 213101037d57Smrg (.*) 2132d522f475Smrg cf_want_posix_source=yes 2133d522f475Smrg ;; 2134d522f475Smrg esac 2135d522f475Smrg if test "$cf_want_posix_source" = yes ; then 2136d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2137d522f475Smrg#ifdef _POSIX_SOURCE 2138d522f475Smrgmake an error 2139d522f475Smrg#endif],[], 2140d522f475Smrg cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE") 2141d522f475Smrg fi 2142d522f475Smrg CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE) 2143d522f475Smrg CFLAGS="$cf_trim_CFLAGS" 2144f2e35a3aSmrg CPPFLAGS="$cf_trim_CPPFLAGS" 2145f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source) 2146d522f475Smrg CF_MSG_LOG(if the second compile does not leave our definition intact error) 2147d522f475Smrg AC_TRY_COMPILE([#include <sys/types.h>],[ 2148d522f475Smrg#ifndef _POSIX_C_SOURCE 2149d522f475Smrgmake an error 2150d522f475Smrg#endif],, 2151d522f475Smrg [cf_cv_posix_c_source=no]) 2152d522f475Smrg CFLAGS="$cf_save_CFLAGS" 2153d522f475Smrg CPPFLAGS="$cf_save_CPPFLAGS" 2154d522f475Smrg ]) 2155d522f475Smrg]) 2156d522f475Smrg 2157d522f475Smrgif test "$cf_cv_posix_c_source" != no ; then 2158d522f475Smrg CFLAGS="$cf_trim_CFLAGS" 2159d522f475Smrg CPPFLAGS="$cf_trim_CPPFLAGS" 216020d2c4d2Smrg CF_ADD_CFLAGS($cf_cv_posix_c_source) 2161d522f475Smrgfi 2162d522f475Smrg 2163f2e35a3aSmrgfi # cf_cv_posix_visible 2164f2e35a3aSmrg 2165d522f475Smrg])dnl 2166d522f475Smrgdnl --------------------------------------------------------------------------- 2167f2e35a3aSmrgdnl CF_POSIX_SAVED_IDS version: 9 updated: 2020/03/10 18:53:47 2168d522f475Smrgdnl ------------------ 2169d522f475Smrgdnl 2170d522f475Smrgdnl Check first if saved-ids are always supported. Some systems 2171d522f475Smrgdnl may require runtime checks. 2172d522f475SmrgAC_DEFUN([CF_POSIX_SAVED_IDS], 2173d522f475Smrg[ 2174d522f475SmrgAC_CHECK_HEADERS( \ 2175d522f475Smrgsys/param.h \ 2176d522f475Smrg) 2177d522f475Smrg 2178d522f475SmrgAC_CACHE_CHECK(if POSIX saved-ids are supported,cf_cv_posix_saved_ids,[ 2179d522f475SmrgAC_TRY_LINK( 2180d522f475Smrg[ 2181d522f475Smrg#include <unistd.h> 2182d522f475Smrg#ifdef HAVE_SYS_PARAM_H 2183d522f475Smrg#include <sys/param.h> /* this may define "BSD" */ 2184d522f475Smrg#endif 2185d522f475Smrg],[ 2186d522f475Smrg#if defined(_POSIX_SAVED_IDS) && (_POSIX_SAVED_IDS > 0) 2187d522f475Smrg void *p = (void *) seteuid; 2188d522f475Smrg int x = seteuid(geteuid()); 2189f2e35a3aSmrg (void)p; 2190f2e35a3aSmrg (void)x; 2191d522f475Smrg#elif defined(BSD) && (BSD >= 199103) 2192d522f475Smrg/* The BSD's may implement the runtime check - and it fails. 2193d522f475Smrg * However, saved-ids work almost like POSIX (close enough for most uses). 2194d522f475Smrg */ 2195d522f475Smrg#else 2196d522f475Smrgmake an error 2197d522f475Smrg#endif 2198d522f475Smrg],[cf_cv_posix_saved_ids=yes 2199d522f475Smrg],[ 2200d522f475SmrgAC_TRY_RUN([ 2201d522f475Smrg#ifdef HAVE_STDLIB_H 2202d522f475Smrg#include <stdlib.h> 2203d522f475Smrg#endif 2204d522f475Smrg#include <unistd.h> 2205f2e35a3aSmrgint main(void) 2206d522f475Smrg{ 2207d522f475Smrg void *p = (void *) seteuid; 2208d522f475Smrg long code = sysconf(_SC_SAVED_IDS); 2209f2e35a3aSmrg (void)p; 2210d522f475Smrg ${cf_cv_main_return:-return} ((code > 0) ? 0 : 1); 2211d522f475Smrg}], 2212d522f475Smrg cf_cv_posix_saved_ids=yes, 2213d522f475Smrg cf_cv_posix_saved_ids=no, 2214d522f475Smrg cf_cv_posix_saved_ids=unknown) 2215d522f475Smrg]) 2216d522f475Smrg]) 2217d522f475Smrg 22180bd37d32Smrgtest "$cf_cv_posix_saved_ids" = yes && AC_DEFINE(HAVE_POSIX_SAVED_IDS,1,[Define to 1 if POSIX saved-ids are supported]) 2219d522f475Smrg]) 2220d522f475Smrgdnl --------------------------------------------------------------------------- 2221f2e35a3aSmrgdnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17 2222f2e35a3aSmrgdnl ---------------- 2223f2e35a3aSmrgdnl POSIX documents test-macros which an application may set before any system 2224f2e35a3aSmrgdnl headers are included to make features available. 2225f2e35a3aSmrgdnl 2226f2e35a3aSmrgdnl Some BSD platforms (originally FreeBSD, but copied by a few others) 2227f2e35a3aSmrgdnl diverged from POSIX in 2002 by setting symbols which make all of the most 2228f2e35a3aSmrgdnl recent features visible in the system header files unless the application 2229f2e35a3aSmrgdnl overrides the corresponding test-macros. Doing that introduces portability 2230f2e35a3aSmrgdnl problems. 2231f2e35a3aSmrgdnl 2232f2e35a3aSmrgdnl This macro makes a special check for the symbols used for this, to avoid a 2233f2e35a3aSmrgdnl conflicting definition. 2234f2e35a3aSmrgAC_DEFUN([CF_POSIX_VISIBLE], 2235f2e35a3aSmrg[ 2236f2e35a3aSmrgAC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[ 2237f2e35a3aSmrgAC_TRY_COMPILE([#include <stdio.h>],[ 2238f2e35a3aSmrg#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \ 2239f2e35a3aSmrg && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \ 2240f2e35a3aSmrg && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \ 2241f2e35a3aSmrg && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0) 2242f2e35a3aSmrg#error conflicting symbols found 2243f2e35a3aSmrg#endif 2244f2e35a3aSmrg],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes]) 2245f2e35a3aSmrg]) 2246f2e35a3aSmrg])dnl 2247f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2248f2e35a3aSmrgdnl CF_POSIX_WAIT version: 4 updated: 2020/03/10 18:53:47 2249d522f475Smrgdnl ------------- 2250d522f475Smrgdnl Check for POSIX wait support 2251d522f475SmrgAC_DEFUN([CF_POSIX_WAIT], 2252d522f475Smrg[ 2253d522f475SmrgAC_REQUIRE([AC_HEADER_SYS_WAIT]) 2254d522f475SmrgAC_CACHE_CHECK(for POSIX wait functions,cf_cv_posix_wait,[ 2255d522f475SmrgAC_TRY_LINK([ 2256d522f475Smrg#include <stdlib.h> 2257d522f475Smrg#include <stdio.h> 2258d522f475Smrg#include <sys/types.h> 2259d522f475Smrg#ifdef HAVE_SYS_WAIT_H 2260d522f475Smrg#include <sys/wait.h> 2261d522f475Smrg#endif 2262d522f475Smrg],[ 2263d522f475Smrg int stat_loc; 2264d522f475Smrg pid_t pid = waitpid(-1, &stat_loc, WNOHANG|WUNTRACED); 2265d522f475Smrg pid_t pid2 = wait(&stat_loc); 2266f2e35a3aSmrg (void)pid; 2267f2e35a3aSmrg (void)pid2; 2268d522f475Smrg], 2269d522f475Smrg[cf_cv_posix_wait=yes], 2270d522f475Smrg[cf_cv_posix_wait=no]) 2271d522f475Smrg]) 22720bd37d32Smrgtest "$cf_cv_posix_wait" = yes && AC_DEFINE(USE_POSIX_WAIT,1,[Define to 1 if we have POSIX wait functions]) 2273d522f475Smrg])dnl 2274d522f475Smrgdnl --------------------------------------------------------------------------- 2275f2e35a3aSmrgdnl CF_PROCFS_CWD version: 4 updated: 2020/12/31 18:40:20 2276d522f475Smrgdnl ------------- 2277d522f475Smrgdnl Find /proc tree (may be in a different place) which implements the "cwd" 2278d522f475Smrgdnl link. 2279d522f475SmrgAC_DEFUN([CF_PROCFS_CWD],[ 2280d522f475SmrgAC_CACHE_CHECK(for proc tree with cwd-support,cf_cv_procfs_cwd,[ 2281d522f475Smrgcf_cv_procfs_cwd=no 2282d522f475Smrgfor cf_path in /proc /compat/linux/proc /usr/compat/linux/proc 2283d522f475Smrgdo 2284f2e35a3aSmrg if test -d "$cf_path" && \ 2285f2e35a3aSmrg test -d "$cf_path"/$$ && \ 2286f2e35a3aSmrg { test -d "$cf_path"/$$/cwd || \ 2287f2e35a3aSmrg test -L "$cf_path"/$$/cwd; }; then 2288f2e35a3aSmrg cf_cv_procfs_cwd="$cf_path" 2289d522f475Smrg break 2290d522f475Smrg fi 2291d522f475Smrgdone 2292d522f475Smrg]) 2293d522f475Smrg])dnl 2294d522f475Smrgdnl --------------------------------------------------------------------------- 2295f2e35a3aSmrgdnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54 22960bd37d32Smrgdnl ---------- 22970bd37d32Smrgdnl standard check for CC, plus followup sanity checks 22980bd37d32Smrgdnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name 22990bd37d32SmrgAC_DEFUN([CF_PROG_CC],[ 2300f2e35a3aSmrgCF_ACVERSION_CHECK(2.53, 2301f2e35a3aSmrg [AC_MSG_WARN(this will incorrectly handle gnatgcc choice) 2302f2e35a3aSmrg AC_REQUIRE([AC_PROG_CC])], 2303f2e35a3aSmrg []) 23040bd37d32Smrgifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)]) 23050bd37d32SmrgCF_GCC_VERSION 23060bd37d32SmrgCF_ACVERSION_CHECK(2.52, 23070bd37d32Smrg [AC_PROG_CC_STDC], 23080bd37d32Smrg [CF_ANSI_CC_REQD]) 230901037d57SmrgCF_CC_ENV_FLAGS 2310d522f475Smrg])dnl 2311d522f475Smrgdnl --------------------------------------------------------------------------- 2312f2e35a3aSmrgdnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19 23130bd37d32Smrgdnl ------------- 23140bd37d32Smrgdnl Check if groff is available, for cases (such as html output) where nroff 23150bd37d32Smrgdnl is not enough. 23160bd37d32SmrgAC_DEFUN([CF_PROG_GROFF],[ 23170bd37d32SmrgAC_PATH_PROG(GROFF_PATH,groff,no) 2318f2e35a3aSmrgAC_PATH_PROGS(NROFF_PATH,nroff mandoc,no) 2319f2e35a3aSmrgAC_PATH_PROG(TBL_PATH,tbl,cat) 23200bd37d32Smrgif test "x$GROFF_PATH" = xno 23210bd37d32Smrgthen 23220bd37d32Smrg NROFF_NOTE= 23230bd37d32Smrg GROFF_NOTE="#" 23240bd37d32Smrgelse 23250bd37d32Smrg NROFF_NOTE="#" 23260bd37d32Smrg GROFF_NOTE= 23270bd37d32Smrgfi 23280bd37d32SmrgAC_SUBST(GROFF_NOTE) 23290bd37d32SmrgAC_SUBST(NROFF_NOTE) 2330d522f475Smrg])dnl 2331d522f475Smrgdnl --------------------------------------------------------------------------- 2332f2e35a3aSmrgdnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37 23332e4f8982Smrgdnl ------------ 23342e4f8982SmrgAC_DEFUN([CF_PROG_LINT], 23352e4f8982Smrg[ 23362e4f8982SmrgAC_CHECK_PROGS(LINT, lint cppcheck splint) 2337f2e35a3aSmrgcase "x$LINT" in 2338f2e35a3aSmrg(xcppcheck|x*/cppcheck) 2339f2e35a3aSmrg test -z "$LINT_OPTS" && LINT_OPTS="--enable=all" 2340f2e35a3aSmrg ;; 2341f2e35a3aSmrgesac 23422e4f8982SmrgAC_SUBST(LINT_OPTS) 23432e4f8982Smrg])dnl 23442e4f8982Smrgdnl --------------------------------------------------------------------------- 2345f2e35a3aSmrgdnl CF_REGEX version: 18 updated: 2021/01/01 16:53:59 2346d522f475Smrgdnl -------- 2347d522f475Smrgdnl Attempt to determine if we've got one of the flavors of regular-expression 2348d522f475Smrgdnl code that we can support. 2349d522f475SmrgAC_DEFUN([CF_REGEX], 2350d522f475Smrg[ 235120d2c4d2Smrg 235220d2c4d2Smrgcf_regex_func=no 2353f2e35a3aSmrgcf_regex_libs= 2354f2e35a3aSmrgcase "$host_os" in 235501037d57Smrg(mingw*) 2356f2e35a3aSmrg # -lsystre -ltre -lintl -liconv 2357f2e35a3aSmrg AC_CHECK_LIB(systre,regcomp,[ 2358f2e35a3aSmrg AC_CHECK_LIB(iconv,libiconv_open,[CF_ADD_LIB(iconv)]) 2359f2e35a3aSmrg AC_CHECK_LIB(intl,libintl_gettext,[CF_ADD_LIB(intl)]) 2360f2e35a3aSmrg AC_CHECK_LIB(tre,tre_regcomp,[CF_ADD_LIB(tre)]) 2361f2e35a3aSmrg CF_ADD_LIB(systre) 2362f2e35a3aSmrg cf_regex_func=regcomp 2363f2e35a3aSmrg ],[ 2364f2e35a3aSmrg AC_CHECK_LIB(gnurx,regcomp,[ 2365f2e35a3aSmrg CF_ADD_LIB(gnurx) 2366f2e35a3aSmrg cf_regex_func=regcomp]) 2367f2e35a3aSmrg ]) 2368f2e35a3aSmrg ;; 2369f2e35a3aSmrg(*) 2370f2e35a3aSmrg cf_regex_libs="regex re" 2371f2e35a3aSmrg AC_CHECK_FUNC(regcomp,[cf_regex_func=regcomp],[ 2372f2e35a3aSmrg for cf_regex_lib in $cf_regex_libs 2373f2e35a3aSmrg do 2374f2e35a3aSmrg AC_CHECK_LIB($cf_regex_lib,regcomp,[ 2375f2e35a3aSmrg CF_ADD_LIB($cf_regex_lib) 2376f2e35a3aSmrg cf_regex_func=regcomp 2377f2e35a3aSmrg break]) 2378f2e35a3aSmrg done 2379f2e35a3aSmrg ]) 23806879286fSmrg ;; 23816879286fSmrgesac 23826879286fSmrg 238320d2c4d2Smrgif test "$cf_regex_func" = no ; then 238420d2c4d2Smrg AC_CHECK_FUNC(compile,[cf_regex_func=compile],[ 238520d2c4d2Smrg AC_CHECK_LIB(gen,compile,[ 238620d2c4d2Smrg CF_ADD_LIB(gen) 238720d2c4d2Smrg cf_regex_func=compile])]) 238820d2c4d2Smrgfi 238920d2c4d2Smrg 239020d2c4d2Smrgif test "$cf_regex_func" = no ; then 239120d2c4d2Smrg AC_MSG_WARN(cannot find regular expression library) 239220d2c4d2Smrgfi 239320d2c4d2Smrg 239420d2c4d2SmrgAC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[ 239520d2c4d2Smrg 239620d2c4d2Smrgcf_cv_regex_hdrs=no 2397f2e35a3aSmrgcase "$cf_regex_func" in 239801037d57Smrg(compile) 239920d2c4d2Smrg for cf_regex_hdr in regexp.h regexpr.h 240020d2c4d2Smrg do 240120d2c4d2Smrg AC_TRY_LINK([#include <$cf_regex_hdr>],[ 240220d2c4d2Smrg char *p = compile("", "", "", 0); 2403d522f475Smrg int x = step("", ""); 2404f2e35a3aSmrg (void)p; 2405f2e35a3aSmrg (void)x; 240620d2c4d2Smrg ],[ 240720d2c4d2Smrg cf_cv_regex_hdrs=$cf_regex_hdr 240820d2c4d2Smrg break 240920d2c4d2Smrg ]) 241020d2c4d2Smrg done 241120d2c4d2Smrg ;; 241201037d57Smrg(*) 241320d2c4d2Smrg for cf_regex_hdr in regex.h 241420d2c4d2Smrg do 241520d2c4d2Smrg AC_TRY_LINK([#include <sys/types.h> 241620d2c4d2Smrg#include <$cf_regex_hdr>],[ 2417f2e35a3aSmrg regex_t *p = 0; 241820d2c4d2Smrg int x = regcomp(p, "", 0); 241920d2c4d2Smrg int y = regexec(p, "", 0, 0, 0); 2420f2e35a3aSmrg (void)x; 2421f2e35a3aSmrg (void)y; 242220d2c4d2Smrg regfree(p); 242320d2c4d2Smrg ],[ 242420d2c4d2Smrg cf_cv_regex_hdrs=$cf_regex_hdr 242520d2c4d2Smrg break 242620d2c4d2Smrg ]) 242720d2c4d2Smrg done 242820d2c4d2Smrg ;; 242920d2c4d2Smrgesac 243020d2c4d2Smrg 2431d522f475Smrg]) 243220d2c4d2Smrg 2433f2e35a3aSmrgcase "$cf_cv_regex_hdrs" in 24342e4f8982Smrg (no) AC_MSG_WARN(no regular expression header found) ;; 24352e4f8982Smrg (regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;; 24362e4f8982Smrg (regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;; 24372e4f8982Smrg (regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;; 2438d522f475Smrgesac 2439d522f475Smrg])dnl 2440d522f475Smrgdnl --------------------------------------------------------------------------- 2441a5ae21e4Smrgdnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40 2442a5ae21e4Smrgdnl ---------------- 2443a5ae21e4Smrgdnl Remove a given option from CFLAGS/CPPFLAGS 2444a5ae21e4Smrgdnl $1 = option to remove 2445a5ae21e4Smrgdnl $2 = variable to update 2446a5ae21e4Smrgdnl $3 = nonempty to allow verbose message 2447a5ae21e4Smrgdefine([CF_REMOVE_CFLAGS], 2448a5ae21e4Smrg[ 2449a5ae21e4Smrgcf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'` 2450a5ae21e4Smrgwhile true 2451a5ae21e4Smrgdo 2452a5ae21e4Smrg 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'` 2453a5ae21e4Smrg test "[$]$2" != "$cf_old_cflag" || break 2454a5ae21e4Smrg ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)]) 2455a5ae21e4Smrg $2="$cf_old_cflag" 2456a5ae21e4Smrgdone 2457a5ae21e4Smrg])dnl 2458a5ae21e4Smrgdnl --------------------------------------------------------------------------- 245920d2c4d2Smrgdnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 2460d522f475Smrgdnl ---------------- 2461d522f475Smrgdnl Remove all -U and -D options that refer to the given symbol from a list 2462d522f475Smrgdnl of C compiler options. This works around the problem that not all 2463d522f475Smrgdnl compilers process -U and -D options from left-to-right, so a -U option 2464d522f475Smrgdnl cannot be used to cancel the effect of a preceding -D option. 2465d522f475Smrgdnl 2466d522f475Smrgdnl $1 = target (which could be the same as the source variable) 2467d522f475Smrgdnl $2 = source (including '$') 2468d522f475Smrgdnl $3 = symbol to remove 2469d522f475Smrgdefine([CF_REMOVE_DEFINE], 2470d522f475Smrg[ 2471d522f475Smrg$1=`echo "$2" | \ 247220d2c4d2Smrg sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ 247320d2c4d2Smrg -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` 247420d2c4d2Smrg])dnl 247520d2c4d2Smrgdnl --------------------------------------------------------------------------- 2476f2e35a3aSmrgdnl CF_RESTORE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:47:45 2477f2e35a3aSmrgdnl --------------------- 2478f2e35a3aSmrgdnl Restore flags saved in CF_SAVE_XTRA_FLAGS 2479f2e35a3aSmrgdnl $1 = name of current macro 2480f2e35a3aSmrgdefine([CF_RESTORE_XTRA_FLAGS], 2481f2e35a3aSmrg[ 2482f2e35a3aSmrgLIBS="$cf_save_LIBS_$1" 2483f2e35a3aSmrgCFLAGS="$cf_save_CFLAGS_$1" 2484f2e35a3aSmrgCPPFLAGS="$cf_save_CPPFLAGS_$1" 2485f2e35a3aSmrg])dnl 2486f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2487f2e35a3aSmrgdnl CF_RPATH_HACK version: 13 updated: 2021/01/03 18:30:50 248820d2c4d2Smrgdnl ------------- 248920d2c4d2SmrgAC_DEFUN([CF_RPATH_HACK], 2490f2e35a3aSmrg[AC_REQUIRE([AC_PROG_FGREP])dnl 2491f2e35a3aSmrgAC_REQUIRE([CF_LD_RPATH_OPT])dnl 2492f2e35a3aSmrg 249320d2c4d2SmrgAC_MSG_CHECKING(for updated LDFLAGS) 249420d2c4d2Smrgif test -n "$LD_RPATH_OPT" ; then 249520d2c4d2Smrg AC_MSG_RESULT(maybe) 249620d2c4d2Smrg 249720d2c4d2Smrg AC_CHECK_PROGS(cf_ldd_prog,ldd,no) 249820d2c4d2Smrg cf_rpath_list="/usr/lib /lib" 249920d2c4d2Smrg if test "$cf_ldd_prog" != no 250020d2c4d2Smrg then 2501a1f3da82Smrg cf_rpath_oops= 2502a1f3da82Smrg 250320d2c4d2SmrgAC_TRY_LINK([#include <stdio.h>], 250420d2c4d2Smrg [printf("Hello");], 2505f2e35a3aSmrg [cf_rpath_oops=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} ' not found' | sed -e 's% =>.*$%%' |sort | uniq` 2506f2e35a3aSmrg cf_rpath_list=`"$cf_ldd_prog" "conftest$ac_exeext" | ${FGREP-fgrep} / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`]) 2507a1f3da82Smrg 2508a1f3da82Smrg # If we passed the link-test, but get a "not found" on a given library, 2509a1f3da82Smrg # this could be due to inept reconfiguration of gcc to make it only 2510a1f3da82Smrg # partly honor /usr/local/lib (or whatever). Sometimes this behavior 2511a1f3da82Smrg # is intentional, e.g., installing gcc in /usr/bin and suppressing the 2512a1f3da82Smrg # /usr/local libraries. 2513a1f3da82Smrg if test -n "$cf_rpath_oops" 2514a1f3da82Smrg then 2515a1f3da82Smrg for cf_rpath_src in $cf_rpath_oops 2516a1f3da82Smrg do 2517a1f3da82Smrg for cf_rpath_dir in \ 2518a1f3da82Smrg /usr/local \ 2519a1f3da82Smrg /usr/pkg \ 2520a1f3da82Smrg /opt/sfw 2521a1f3da82Smrg do 2522f2e35a3aSmrg if test -f "$cf_rpath_dir/lib/$cf_rpath_src" 2523a1f3da82Smrg then 2524a1f3da82Smrg CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src) 2525a1f3da82Smrg LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" 2526a1f3da82Smrg break 2527a1f3da82Smrg fi 2528a1f3da82Smrg done 2529a1f3da82Smrg done 2530a1f3da82Smrg fi 253120d2c4d2Smrg fi 253220d2c4d2Smrg 253320d2c4d2Smrg CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS) 253420d2c4d2Smrg 253520d2c4d2Smrg CF_RPATH_HACK_2(LDFLAGS) 253620d2c4d2Smrg CF_RPATH_HACK_2(LIBS) 253720d2c4d2Smrg 253820d2c4d2Smrg CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS) 2539e0a2b6dfSmrgelse 2540e0a2b6dfSmrg AC_MSG_RESULT(no) 254120d2c4d2Smrgfi 254220d2c4d2SmrgAC_SUBST(EXTRA_LDFLAGS) 254320d2c4d2Smrg])dnl 254420d2c4d2Smrgdnl --------------------------------------------------------------------------- 2545f2e35a3aSmrgdnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04 254620d2c4d2Smrgdnl --------------- 254720d2c4d2Smrgdnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to 254820d2c4d2Smrgdnl EXTRA_LDFLAGS for each -L option found. 254920d2c4d2Smrgdnl 255020d2c4d2Smrgdnl $cf_rpath_list contains a list of directories to ignore. 255120d2c4d2Smrgdnl 255220d2c4d2Smrgdnl $1 = variable name to update. The LDFLAGS variable should be the only one, 255320d2c4d2Smrgdnl but LIBS often has misplaced -L options. 255420d2c4d2SmrgAC_DEFUN([CF_RPATH_HACK_2], 255520d2c4d2Smrg[ 255620d2c4d2SmrgCF_VERBOSE(...checking $1 [$]$1) 255720d2c4d2Smrg 255820d2c4d2Smrgcf_rpath_dst= 255920d2c4d2Smrgfor cf_rpath_src in [$]$1 256020d2c4d2Smrgdo 2561f2e35a3aSmrg case "$cf_rpath_src" in 256201037d57Smrg (-L*) 256320d2c4d2Smrg 256420d2c4d2Smrg # check if this refers to a directory which we will ignore 256520d2c4d2Smrg cf_rpath_skip=no 256620d2c4d2Smrg if test -n "$cf_rpath_list" 256720d2c4d2Smrg then 256820d2c4d2Smrg for cf_rpath_item in $cf_rpath_list 256920d2c4d2Smrg do 257020d2c4d2Smrg if test "x$cf_rpath_src" = "x-L$cf_rpath_item" 257120d2c4d2Smrg then 257220d2c4d2Smrg cf_rpath_skip=yes 257320d2c4d2Smrg break 257420d2c4d2Smrg fi 257520d2c4d2Smrg done 257620d2c4d2Smrg fi 257720d2c4d2Smrg 257820d2c4d2Smrg if test "$cf_rpath_skip" = no 257920d2c4d2Smrg then 258020d2c4d2Smrg # transform the option 258120d2c4d2Smrg if test "$LD_RPATH_OPT" = "-R " ; then 258220d2c4d2Smrg cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` 258320d2c4d2Smrg else 258420d2c4d2Smrg cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` 258520d2c4d2Smrg fi 258620d2c4d2Smrg 258720d2c4d2Smrg # if we have not already added this, add it now 258820d2c4d2Smrg cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` 258920d2c4d2Smrg if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" 259020d2c4d2Smrg then 259120d2c4d2Smrg CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp) 259220d2c4d2Smrg EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" 259320d2c4d2Smrg fi 259420d2c4d2Smrg fi 259520d2c4d2Smrg ;; 259620d2c4d2Smrg esac 259720d2c4d2Smrg cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" 259820d2c4d2Smrgdone 259920d2c4d2Smrg$1=$cf_rpath_dst 260020d2c4d2Smrg 260120d2c4d2SmrgCF_VERBOSE(...checked $1 [$]$1) 260220d2c4d2SmrgAC_SUBST(EXTRA_LDFLAGS) 2603d522f475Smrg])dnl 2604d522f475Smrgdnl --------------------------------------------------------------------------- 2605f2e35a3aSmrgdnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44 2606f2e35a3aSmrgdnl ------------------ 2607f2e35a3aSmrgdnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers 2608f2e35a3aSmrgdnl and libraries which do not update those variables. 2609f2e35a3aSmrgdnl 2610f2e35a3aSmrgdnl $1 = name of current macro 2611f2e35a3aSmrgdefine([CF_SAVE_XTRA_FLAGS], 2612f2e35a3aSmrg[ 2613f2e35a3aSmrgcf_save_LIBS_$1="$LIBS" 2614f2e35a3aSmrgcf_save_CFLAGS_$1="$CFLAGS" 2615f2e35a3aSmrgcf_save_CPPFLAGS_$1="$CPPFLAGS" 2616f2e35a3aSmrgLIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" 2617f2e35a3aSmrgfor cf_X_CFLAGS in $X_CFLAGS 2618f2e35a3aSmrgdo 2619f2e35a3aSmrg case "x$cf_X_CFLAGS" in 2620f2e35a3aSmrg x-[[IUD]]*) 2621f2e35a3aSmrg CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" 2622f2e35a3aSmrg ;; 2623f2e35a3aSmrg *) 2624f2e35a3aSmrg CFLAGS="$CFLAGS $cf_X_CFLAGS" 2625f2e35a3aSmrg ;; 2626f2e35a3aSmrg esac 2627f2e35a3aSmrgdone 2628f2e35a3aSmrg])dnl 2629f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2630f2e35a3aSmrgdnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04 2631d522f475Smrgdnl ----------- 2632d522f475Smrgdnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all 2633d522f475Smrgdnl programs need this test). 2634d522f475Smrgdnl 2635f2e35a3aSmrgdnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE 2636d522f475Smrgdnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct 2637d522f475Smrgdnl winsize declaration is left alone - we may revisit this if Apple choose to 2638d522f475Smrgdnl break that part of the interface as well. 2639d522f475SmrgAC_DEFUN([CF_SIGWINCH], 2640d522f475Smrg[ 2641d522f475SmrgAC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[ 2642d522f475Smrg AC_TRY_COMPILE([ 2643d522f475Smrg#include <sys/types.h> 2644d522f475Smrg#include <sys/signal.h> 2645f2e35a3aSmrg],[int x = SIGWINCH; (void)x], 2646d522f475Smrg [cf_cv_define_sigwinch=yes], 2647d522f475Smrg [AC_TRY_COMPILE([ 2648d522f475Smrg#undef _XOPEN_SOURCE 2649d522f475Smrg#undef _POSIX_SOURCE 2650d522f475Smrg#undef _POSIX_C_SOURCE 2651d522f475Smrg#include <sys/types.h> 2652d522f475Smrg#include <sys/signal.h> 2653f2e35a3aSmrg],[int x = SIGWINCH; (void)x], 2654d522f475Smrg [cf_cv_define_sigwinch=maybe], 2655d522f475Smrg [cf_cv_define_sigwinch=no]) 2656d522f475Smrg]) 2657d522f475Smrg]) 2658d522f475Smrg 2659d522f475Smrgif test "$cf_cv_define_sigwinch" = maybe ; then 2660d522f475SmrgAC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[ 2661d522f475Smrgcf_cv_fixup_sigwinch=unknown 2662d522f475Smrgcf_sigwinch=32 2663f2e35a3aSmrgwhile test "$cf_sigwinch" != 1 2664d522f475Smrgdo 2665d522f475Smrg AC_TRY_COMPILE([ 2666d522f475Smrg#undef _XOPEN_SOURCE 2667d522f475Smrg#undef _POSIX_SOURCE 2668d522f475Smrg#undef _POSIX_C_SOURCE 2669d522f475Smrg#include <sys/types.h> 2670d522f475Smrg#include <sys/signal.h> 2671d522f475Smrg],[ 2672d522f475Smrg#if SIGWINCH != $cf_sigwinch 2673d522f475Smrgmake an error 2674d522f475Smrg#endif 2675f2e35a3aSmrgint x = SIGWINCH; (void)x], 2676d522f475Smrg [cf_cv_fixup_sigwinch=$cf_sigwinch 2677d522f475Smrg break]) 2678d522f475Smrg 2679f2e35a3aSmrgcf_sigwinch="`expr "$cf_sigwinch" - 1`" 2680d522f475Smrgdone 2681d522f475Smrg]) 2682d522f475Smrg 2683d522f475Smrg if test "$cf_cv_fixup_sigwinch" != unknown ; then 2684d522f475Smrg CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" 2685d522f475Smrg fi 2686d522f475Smrgfi 2687d522f475Smrg])dnl 2688d522f475Smrgdnl --------------------------------------------------------------------------- 2689f2e35a3aSmrgdnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47 2690d522f475Smrgdnl --------------- 2691f2e35a3aSmrgdnl signal handler, but there are some gcc dependencies in that recommendation. 2692d522f475Smrgdnl Try anyway. 2693d522f475SmrgAC_DEFUN([CF_SIG_ATOMIC_T], 2694d522f475Smrg[ 2695d522f475SmrgAC_MSG_CHECKING(for signal global datatype) 2696d522f475SmrgAC_CACHE_VAL(cf_cv_sig_atomic_t,[ 2697d522f475Smrg for cf_type in \ 2698d522f475Smrg "volatile sig_atomic_t" \ 2699d522f475Smrg "sig_atomic_t" \ 2700d522f475Smrg "int" 2701d522f475Smrg do 2702d522f475Smrg AC_TRY_COMPILE([ 2703d522f475Smrg#include <sys/types.h> 2704d522f475Smrg#include <signal.h> 2705d522f475Smrg#include <stdio.h> 2706d522f475Smrg 2707d522f475Smrgextern $cf_type x; 2708d522f475Smrg$cf_type x; 2709d522f475Smrgstatic void handler(int sig) 2710d522f475Smrg{ 2711f2e35a3aSmrg (void)sig; 2712d522f475Smrg x = 5; 2713d522f475Smrg}], 2714d522f475Smrg [signal(SIGINT, handler); 2715d522f475Smrg x = 1], 2716d522f475Smrg [cf_cv_sig_atomic_t=$cf_type], 2717d522f475Smrg [cf_cv_sig_atomic_t=no]) 2718d522f475Smrg test "$cf_cv_sig_atomic_t" != no && break 2719d522f475Smrg done 2720d522f475Smrg ]) 2721d522f475SmrgAC_MSG_RESULT($cf_cv_sig_atomic_t) 27220bd37d32Smrgtest "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype]) 2723d522f475Smrg])dnl 2724d522f475Smrgdnl --------------------------------------------------------------------------- 2725f2e35a3aSmrgdnl CF_STRUCT_LASTLOG version: 3 updated: 2020/03/10 18:53:47 2726d522f475Smrgdnl ----------------- 2727d522f475Smrgdnl Check for header defining struct lastlog, ensure that its .ll_time member 2728d522f475Smrgdnl is compatible with time(). 2729d522f475SmrgAC_DEFUN([CF_STRUCT_LASTLOG], 2730d522f475Smrg[ 2731d522f475SmrgAC_CHECK_HEADERS(lastlog.h) 2732d522f475SmrgAC_CACHE_CHECK(for struct lastlog,cf_cv_struct_lastlog,[ 2733d522f475SmrgAC_TRY_RUN([ 2734d522f475Smrg#include <sys/types.h> 2735d522f475Smrg#include <time.h> 2736d522f475Smrg#include <lastlog.h> 2737d522f475Smrg 2738f2e35a3aSmrgint main(void) 2739d522f475Smrg{ 2740d522f475Smrg struct lastlog data; 2741d522f475Smrg return (sizeof(data.ll_time) != sizeof(time_t)); 2742d522f475Smrg}],[ 2743d522f475Smrgcf_cv_struct_lastlog=yes],[ 2744d522f475Smrgcf_cv_struct_lastlog=no],[ 2745d522f475Smrgcf_cv_struct_lastlog=unknown])]) 2746d522f475Smrg 27470bd37d32Smrgtest $cf_cv_struct_lastlog != no && AC_DEFINE(USE_STRUCT_LASTLOG,1,[Define to 1 if we have struct lastlog]) 2748d522f475Smrg])dnl 2749d522f475Smrgdnl --------------------------------------------------------------------------- 27500bd37d32Smrgdnl CF_SVR4 version: 5 updated: 2012/10/04 05:24:07 2751d522f475Smrgdnl ------- 2752d522f475Smrgdnl Check if this is an SVR4 system. We need the definition for xterm 2753d522f475SmrgAC_DEFUN([CF_SVR4], 2754d522f475Smrg[ 2755d522f475SmrgAC_CHECK_LIB(elf, elf_begin,[ 2756d522f475SmrgAC_CACHE_CHECK(if this is an SVR4 system, cf_cv_svr4,[ 2757d522f475SmrgAC_TRY_COMPILE([ 27580bd37d32Smrg#if defined(__CYGWIN__) 27590bd37d32Smrgmake an error 27600bd37d32Smrg#endif 2761d522f475Smrg#include <elf.h> 2762d522f475Smrg#include <sys/termio.h> 2763d522f475Smrg],[ 2764d522f475Smrgstatic struct termio d_tio; 2765d522f475Smrg d_tio.c_cc[VINTR] = 0; 2766d522f475Smrg d_tio.c_cc[VQUIT] = 0; 2767d522f475Smrg d_tio.c_cc[VERASE] = 0; 2768d522f475Smrg d_tio.c_cc[VKILL] = 0; 2769d522f475Smrg d_tio.c_cc[VEOF] = 0; 2770d522f475Smrg d_tio.c_cc[VEOL] = 0; 2771d522f475Smrg d_tio.c_cc[VMIN] = 0; 2772d522f475Smrg d_tio.c_cc[VTIME] = 0; 2773d522f475Smrg d_tio.c_cc[VLNEXT] = 0; 2774d522f475Smrg], 2775d522f475Smrg[cf_cv_svr4=yes], 2776d522f475Smrg[cf_cv_svr4=no]) 2777d522f475Smrg]) 2778d522f475Smrg]) 27790bd37d32Smrgtest "$cf_cv_svr4" = yes && AC_DEFINE(SVR4,1,[Define to 1 if this is an SVR4 system]) 2780d522f475Smrg])dnl 2781d522f475Smrgdnl --------------------------------------------------------------------------- 2782f2e35a3aSmrgdnl CF_SYSV version: 16 updated: 2020/01/11 16:46:44 2783d522f475Smrgdnl ------- 2784d522f475Smrgdnl Check if this is a SYSV platform, e.g., as used in <X11/Xos.h>, and whether 2785d522f475Smrgdnl defining it will be helpful. The following features are used to check: 2786d522f475Smrgdnl 2787d522f475Smrgdnl a) bona-fide SVSV doesn't use const for sys_errlist[]. Since this is a 2788d522f475Smrgdnl legacy (pre-ANSI) feature, const should not apply. Modern systems only 2789d522f475Smrgdnl declare strerror(). Xos.h declares the legacy form of str_errlist[], and 2790d522f475Smrgdnl a compile-time error will result from trying to assign to a const array. 2791d522f475Smrgdnl 2792d522f475Smrgdnl b) compile with headers that exist on SYSV hosts. 2793d522f475Smrgdnl 2794d522f475Smrgdnl c) compile with type definitions that differ on SYSV hosts from standard C. 2795d522f475SmrgAC_DEFUN([CF_SYSV], 2796d522f475Smrg[ 2797f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 2798f2e35a3aSmrg 2799f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_SYSV]) 2800f2e35a3aSmrg 2801d522f475SmrgAC_CHECK_HEADERS( \ 2802d522f475Smrgtermios.h \ 2803d522f475Smrgstdlib.h \ 2804d522f475SmrgX11/Intrinsic.h \ 2805d522f475Smrg) 2806d522f475Smrg 2807d522f475SmrgAC_REQUIRE([CF_SYS_ERRLIST]) 2808d522f475Smrg 2809d522f475SmrgAC_CACHE_CHECK(if we should define SYSV,cf_cv_sysv,[ 2810d522f475SmrgAC_TRY_COMPILE([ 2811d522f475Smrg#undef SYSV 2812d522f475Smrg#define SYSV 1 /* get Xos.h to declare sys_errlist[] */ 2813d522f475Smrg#ifdef HAVE_STDLIB_H 2814d522f475Smrg#include <stdlib.h> /* look for wchar_t */ 2815d522f475Smrg#endif 2816d522f475Smrg#ifdef HAVE_X11_INTRINSIC_H 2817d522f475Smrg#include <X11/Intrinsic.h> /* Intrinsic.h has other traps... */ 2818d522f475Smrg#endif 28190bd37d32Smrg#ifdef HAVE_TERMIOS_H /* needed for HPUX 10.20 */ 28200bd37d32Smrg#include <termios.h> 28210bd37d32Smrg#define STRUCT_TERMIOS struct termios 28220bd37d32Smrg#else 28230bd37d32Smrg#define STRUCT_TERMIOS struct termio 28240bd37d32Smrg#endif 2825d522f475Smrg#include <curses.h> 2826d522f475Smrg#include <term.h> /* eliminate most BSD hacks */ 2827d522f475Smrg#include <errno.h> /* declare sys_errlist on older systems */ 2828d522f475Smrg#include <sys/termio.h> /* eliminate most of the remaining ones */ 2829d522f475Smrg],[ 2830d522f475Smrgstatic STRUCT_TERMIOS d_tio; 2831d522f475Smrg d_tio.c_cc[VINTR] = 0; 2832d522f475Smrg d_tio.c_cc[VQUIT] = 0; 2833d522f475Smrg d_tio.c_cc[VERASE] = 0; 2834d522f475Smrg d_tio.c_cc[VKILL] = 0; 2835d522f475Smrg d_tio.c_cc[VEOF] = 0; 2836d522f475Smrg d_tio.c_cc[VEOL] = 0; 2837d522f475Smrg d_tio.c_cc[VMIN] = 0; 2838d522f475Smrg d_tio.c_cc[VTIME] = 0; 2839d522f475Smrg#if defined(HAVE_SYS_ERRLIST) && !defined(DECL_SYS_ERRLIST) 2840d522f475Smrgsys_errlist[0] = ""; /* Cygwin mis-declares this */ 2841d522f475Smrg#endif 2842d522f475Smrg], 2843d522f475Smrg[cf_cv_sysv=yes], 2844d522f475Smrg[cf_cv_sysv=no]) 2845d522f475Smrg]) 28460bd37d32Smrgtest "$cf_cv_sysv" = yes && AC_DEFINE(SYSV,1,[Define to 1 if this is an SYSV system]) 2847f2e35a3aSmrg 2848f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_SYSV]) 2849d522f475Smrg])dnl 2850d522f475Smrgdnl --------------------------------------------------------------------------- 2851f2e35a3aSmrgdnl CF_SYSV_UTMP version: 7 updated: 2021/01/02 09:31:20 2852d522f475Smrgdnl ------------ 2853d522f475Smrgdnl Check if this is a SYSV flavor of UTMP 2854d522f475SmrgAC_DEFUN([CF_SYSV_UTMP], 2855d522f475Smrg[ 2856d522f475SmrgAC_CACHE_CHECK(if $cf_cv_have_utmp is SYSV flavor,cf_cv_sysv_utmp,[ 2857d522f475Smrgtest "$cf_cv_have_utmp" = "utmp" && cf_prefix="ut" || cf_prefix="utx" 2858d522f475SmrgAC_TRY_LINK([ 2859d522f475Smrg#include <sys/types.h> 2860d522f475Smrg#include <${cf_cv_have_utmp}.h>],[ 2861d522f475Smrgstruct $cf_cv_have_utmp x; 2862d522f475Smrg set${cf_prefix}ent (); 2863d522f475Smrg get${cf_prefix}id(&x); 2864d522f475Smrg put${cf_prefix}line(&x); 2865d522f475Smrg end${cf_prefix}ent();], 2866d522f475Smrg [cf_cv_sysv_utmp=yes], 2867d522f475Smrg [cf_cv_sysv_utmp=no]) 2868d522f475Smrg]) 2869f2e35a3aSmrgtest "$cf_cv_sysv_utmp" = yes && AC_DEFINE(USE_SYSV_UTMP,1,[Define to 1 if utmp is SYSV flavor]) 2870d522f475Smrg])dnl 2871d522f475Smrgdnl --------------------------------------------------------------------------- 2872d522f475Smrgdnl CF_SYS_ERRLIST version: 6 updated: 2001/12/30 13:03:23 2873d522f475Smrgdnl -------------- 2874d522f475Smrgdnl Check for declaration of sys_nerr and sys_errlist in one of stdio.h and 2875d522f475Smrgdnl errno.h. Declaration of sys_errlist on BSD4.4 interferes with our 2876d522f475Smrgdnl declaration. Reported by Keith Bostic. 2877d522f475SmrgAC_DEFUN([CF_SYS_ERRLIST], 2878d522f475Smrg[ 2879d522f475Smrg CF_CHECK_ERRNO(sys_nerr) 2880d522f475Smrg CF_CHECK_ERRNO(sys_errlist) 2881d522f475Smrg])dnl 2882d522f475Smrgdnl --------------------------------------------------------------------------- 2883f2e35a3aSmrgdnl CF_TERMIOS_TYPES version: 2 updated: 2020/03/10 18:53:47 2884f2e35a3aSmrgdnl ---------------- 2885f2e35a3aSmrgdnl https://pubs.opengroup.org/onlinepubs/009695399/basedefs/termios.h.html 2886f2e35a3aSmrgdnl says that tcflag_t, speed_t and cc_t are typedef'd. If they are not, 2887f2e35a3aSmrgdnl fallback to historical values. 2888f2e35a3aSmrgAC_DEFUN([CF_TERMIOS_TYPES],[ 2889f2e35a3aSmrg 2890f2e35a3aSmrgAC_CACHE_CHECK(for termios type tcflag_t, cf_cv_havetype_tcflag_t,[ 2891f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 2892f2e35a3aSmrg tcflag_t x = 0; (void)x], 2893f2e35a3aSmrg [cf_cv_havetype_tcflag_t=yes], 2894f2e35a3aSmrg [cf_cv_havetype_tcflag_t=no]) 2895f2e35a3aSmrg]) 2896f2e35a3aSmrgtest "$cf_cv_havetype_tcflag_t" = no && AC_DEFINE(tcflag_t,unsigned long,[Define usable value of tcflag_t if not declared]) 2897f2e35a3aSmrg 2898f2e35a3aSmrgAC_CACHE_CHECK(for termios type speed_t, cf_cv_havetype_speed_t,[ 2899f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 2900f2e35a3aSmrg speed_t x = 0; (void)x], 2901f2e35a3aSmrg [cf_cv_havetype_speed_t=yes], 2902f2e35a3aSmrg [cf_cv_havetype_speed_t=no]) 2903f2e35a3aSmrg]) 2904f2e35a3aSmrgtest "$cf_cv_havetype_speed_t" = no && AC_DEFINE(speed_t,unsigned short,[Define usable value of speed_t if not declared]) 2905f2e35a3aSmrg 2906f2e35a3aSmrgAC_CACHE_CHECK(for termios type cc_t, cf_cv_havetype_cc_t,[ 2907f2e35a3aSmrg AC_TRY_COMPILE([#include <termios.h>],[ 2908f2e35a3aSmrg cc_t x = 0; (void)x], 2909f2e35a3aSmrg [cf_cv_havetype_cc_t=yes], 2910f2e35a3aSmrg [cf_cv_havetype_cc_t=no]) 2911f2e35a3aSmrg]) 2912f2e35a3aSmrgtest "$cf_cv_havetype_cc_t" = no && AC_DEFINE(cc_t,unsigned char,[Define usable value of cc_t if not declared]) 2913f2e35a3aSmrg])dnl 2914f2e35a3aSmrgdnl --------------------------------------------------------------------------- 2915f2e35a3aSmrgdnl CF_TERMIO_C_ISPEED version: 4 updated: 2020/03/10 18:53:47 2916d522f475Smrgdnl ------------------ 2917d522f475Smrgdnl Check for SGI's broken redefinition of baud rates introduced in IRIX 6.5 2918d522f475Smrgdnl (there doesn't appear to be a useful predefined symbol). 2919d522f475SmrgAC_DEFUN([CF_TERMIO_C_ISPEED], 2920d522f475Smrg[ 2921d522f475SmrgAC_CACHE_CHECK(for IRIX 6.5 baud-rate redefinitions,cf_cv_termio_c_ispeed,[ 2922d522f475SmrgAC_TRY_COMPILE([ 2923d522f475Smrg#include <sys/types.h> 2924d522f475Smrg#include <sys/termio.h>],[ 2925d522f475Smrgstruct termio foo; 2926d522f475Smrgfoo.c_ispeed = B38400; 2927d522f475Smrgfoo.c_ospeed = B9600; 2928f2e35a3aSmrg(void)foo; 2929d522f475Smrg],[cf_cv_termio_c_ispeed=yes 2930d522f475Smrg],[cf_cv_termio_c_ispeed=no]) 2931d522f475Smrg]) 29320bd37d32Smrgtest "$cf_cv_termio_c_ispeed" = yes && AC_DEFINE(HAVE_TERMIO_C_ISPEED,1,[define 1 if we have IRIX 6.5 baud-rate redefinitions]) 2933d522f475Smrg])dnl 2934d522f475Smrgdnl --------------------------------------------------------------------------- 293501037d57Smrgdnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00 2936e0a2b6dfSmrgdnl -------------- 2937e0a2b6dfSmrgdnl Trim extra base X libraries added as a workaround for inconsistent library 2938e0a2b6dfSmrgdnl dependencies returned by "new" pkg-config files. 2939e0a2b6dfSmrgAC_DEFUN([CF_TRIM_X_LIBS],[ 2940e0a2b6dfSmrg for cf_trim_lib in Xmu Xt X11 2941e0a2b6dfSmrg do 2942e0a2b6dfSmrg case "$LIBS" in 294301037d57Smrg (*-l$cf_trim_lib\ *-l$cf_trim_lib*) 2944e0a2b6dfSmrg LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'` 2945e0a2b6dfSmrg CF_VERBOSE(..trimmed $LIBS) 2946e0a2b6dfSmrg ;; 2947e0a2b6dfSmrg esac 2948e0a2b6dfSmrg done 2949e0a2b6dfSmrg]) 2950e0a2b6dfSmrgdnl --------------------------------------------------------------------------- 2951f2e35a3aSmrgdnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15 295220d2c4d2Smrgdnl ----------------- 295320d2c4d2Smrgdnl This is a simple wrapper to use for pkg-config, for libraries which may be 295420d2c4d2Smrgdnl available in that form. 295520d2c4d2Smrgdnl 2956f2e35a3aSmrgdnl $1 = package name, which may be a shell variable 295720d2c4d2Smrgdnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS 295820d2c4d2Smrgdnl $3 = logic to use if pkg-config does not have the package 295920d2c4d2SmrgAC_DEFUN([CF_TRY_PKG_CONFIG],[ 296020d2c4d2SmrgAC_REQUIRE([CF_PKG_CONFIG]) 296120d2c4d2Smrg 2962f2e35a3aSmrgif test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then 296320d2c4d2Smrg CF_VERBOSE(found package $1) 2964f2e35a3aSmrg cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`" 2965f2e35a3aSmrg cf_pkgconfig_libs="`$PKG_CONFIG --libs "$1" 2>/dev/null`" 296620d2c4d2Smrg CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs) 296720d2c4d2Smrg CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs) 296820d2c4d2Smrg CF_ADD_CFLAGS($cf_pkgconfig_incs) 296920d2c4d2Smrg CF_ADD_LIBS($cf_pkgconfig_libs) 297020d2c4d2Smrg ifelse([$2],,:,[$2]) 297120d2c4d2Smrgelse 2972e0a2b6dfSmrg cf_pkgconfig_incs= 2973e0a2b6dfSmrg cf_pkgconfig_libs= 297420d2c4d2Smrg ifelse([$3],,:,[$3]) 297520d2c4d2Smrgfi 297620d2c4d2Smrg]) 297720d2c4d2Smrgdnl --------------------------------------------------------------------------- 2978a5ae21e4Smrgdnl CF_TRY_XOPEN_SOURCE version: 3 updated: 2021/08/28 15:20:37 29790bd37d32Smrgdnl ------------------- 29800bd37d32Smrgdnl If _XOPEN_SOURCE is not defined in the compile environment, check if we 29810bd37d32Smrgdnl can define it successfully. 29820bd37d32SmrgAC_DEFUN([CF_TRY_XOPEN_SOURCE],[ 29830bd37d32SmrgAC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ 29840bd37d32Smrg AC_TRY_COMPILE([ 29850bd37d32Smrg#include <stdlib.h> 29860bd37d32Smrg#include <string.h> 29870bd37d32Smrg#include <sys/types.h> 29880bd37d32Smrg],[ 29890bd37d32Smrg#ifndef _XOPEN_SOURCE 29900bd37d32Smrgmake an error 29910bd37d32Smrg#endif], 29920bd37d32Smrg [cf_cv_xopen_source=no], 29930bd37d32Smrg [cf_save="$CPPFLAGS" 2994f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE) 29950bd37d32Smrg AC_TRY_COMPILE([ 29960bd37d32Smrg#include <stdlib.h> 29970bd37d32Smrg#include <string.h> 29980bd37d32Smrg#include <sys/types.h> 29990bd37d32Smrg],[ 30000bd37d32Smrg#ifdef _XOPEN_SOURCE 30010bd37d32Smrgmake an error 30020bd37d32Smrg#endif], 30030bd37d32Smrg [cf_cv_xopen_source=no], 30040bd37d32Smrg [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) 30050bd37d32Smrg CPPFLAGS="$cf_save" 30060bd37d32Smrg ]) 30070bd37d32Smrg]) 30080bd37d32Smrg 30090bd37d32Smrgif test "$cf_cv_xopen_source" != no ; then 30100bd37d32Smrg CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) 30110bd37d32Smrg CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) 30120bd37d32Smrg cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" 3013a5ae21e4Smrg CF_APPEND_CFLAGS($cf_temp_xopen_source) 30140bd37d32Smrgfi 30150bd37d32Smrg]) 30160bd37d32Smrgdnl --------------------------------------------------------------------------- 3017f2e35a3aSmrgdnl CF_TTY_GROUP version: 14 updated: 2021/01/03 18:30:50 3018d522f475Smrgdnl ------------ 3019d522f475Smrgdnl Check if the system has a tty-group defined. This is used in xterm when 3020d522f475Smrgdnl setting pty ownership. 3021f2e35a3aSmrgdnl 3022f2e35a3aSmrgdnl The check relies upon running a test-program, which calls ttyname. If this 3023f2e35a3aSmrgdnl is run in batch mode, or if autoconf uses shell functions, the extra layer 3024f2e35a3aSmrgdnl of eval/call may close stdin, making calls to ttyname fail. To work around 3025f2e35a3aSmrgdnl that, fall back to "/dev/tty". 3026d522f475SmrgAC_DEFUN([CF_TTY_GROUP], 3027f2e35a3aSmrg[AC_REQUIRE([AC_PROG_EGREP])dnl 3028d522f475SmrgAC_MSG_CHECKING(for explicit tty group name) 3029d522f475SmrgAC_ARG_WITH(tty-group, 3030d522f475Smrg [ --with-tty-group=XXX use XXX for the tty-group], 3031d522f475Smrg [cf_tty_group=$withval], 3032d522f475Smrg [cf_tty_group=auto...]) 3033d522f475Smrgtest -z "$cf_tty_group" && cf_tty_group=auto... 3034d522f475Smrgtest "$cf_tty_group" = yes && cf_tty_group=auto... 3035d522f475SmrgAC_MSG_RESULT($cf_tty_group) 3036d522f475Smrg 3037d522f475Smrgif test "$cf_tty_group" = "auto..." ; then 3038d522f475SmrgAC_CACHE_CHECK(for tty group name,cf_cv_tty_group_name,[ 3039d522f475Smrg 3040d522f475Smrg# If we are configuring as root, it is hard to get a clue about the tty group. 3041d522f475Smrg# But we'll guess based on how our connection is set up - assuming it is done 3042d522f475Smrg# properly. 3043d522f475Smrg 3044f2e35a3aSmrgcf_uid="`id | sed -e 's/^[^=]*=//' -e 's/(.*$//'`" 3045d522f475Smrg# )vi 3046d522f475Smrgif test "$cf_uid" != 0 ; then 3047d522f475Smrgcf_cv_tty_group_name= 3048f2e35a3aSmrgcf_tty_name="`tty`" 3049d522f475Smrgtest "$cf_tty_name" = "not a tty" && cf_tty_name=/dev/tty 3050d522f475Smrgtest -z "$cf_tty_name" && cf_tty_name=/dev/tty 3051d522f475Smrgif test -c "$cf_tty_name" 3052d522f475Smrgthen 3053f2e35a3aSmrg cf_option="-lL" 3054d522f475Smrg 3055d522f475Smrg # Expect listing to have fields like this: 3056d522f475Smrg #-rwxrwxrwx 1 user group 34293 Jul 18 16:29 pathname 3057f2e35a3aSmrg ls $cf_option "$cf_tty_name" >conftest.out 3058d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out 3059d522f475Smrg if test -z "$cf_rest" ; then 3060f2e35a3aSmrg cf_option="${cf_option}g" 3061f2e35a3aSmrg ls "$cf_option" "$cf_tty_name" >conftest.out 3062d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out 3063d522f475Smrg fi 3064d522f475Smrg rm -f conftest.out 3065d522f475Smrg cf_cv_tty_group_name=$cf_grp 3066d522f475Smrgfi 3067d522f475Smrgfi 3068d522f475Smrg 3069d522f475Smrg# If we cannot deduce the tty group, fall back on hardcoded cases 3070d522f475Smrg 3071d522f475Smrgif test -z "$cf_cv_tty_group_name" 3072d522f475Smrgthen 307301037d57Smrgcase $host_os in 307401037d57Smrg(osf*) 3075d522f475Smrg cf_cv_tty_group_name="terminal" 3076d522f475Smrg ;; 307701037d57Smrg(*) 3078d522f475Smrg cf_cv_tty_group_name="unknown" 3079f2e35a3aSmrg if ( ${EGREP-egrep} '^tty:' /etc/group 2>/dev/null 1>/dev/null ) then 3080d522f475Smrg cf_cv_tty_group_name="tty" 3081d522f475Smrg fi 3082d522f475Smrg ;; 3083d522f475Smrgesac 3084d522f475Smrgfi 3085d522f475Smrg]) 3086d522f475Smrgcf_tty_group="$cf_cv_tty_group_name" 3087d522f475Smrgelse 3088d522f475Smrg # if configure option, always do this 30890bd37d32Smrg AC_DEFINE(USE_TTY_GROUP,1,[Define to 1 if we have a tty groupname]) 3090d522f475Smrgfi 3091d522f475Smrg 30920bd37d32SmrgAC_DEFINE_UNQUOTED(TTY_GROUP_NAME,"$cf_tty_group",[Define to the name use for tty group]) 3093d522f475Smrg 3094d522f475Smrg# This is only a double-check that the group-name we obtained above really 3095d522f475Smrg# does apply to the device. We cannot perform this test if we are in batch 3096d522f475Smrg# mode, or if we are cross-compiling. 3097d522f475Smrg 3098d522f475SmrgAC_CACHE_CHECK(if we may use the $cf_tty_group group,cf_cv_tty_group,[ 3099f2e35a3aSmrgcf_tty_name="`tty`" 3100d522f475Smrgif test "$cf_tty_name" != "not a tty" 3101d522f475Smrgthen 3102d522f475SmrgAC_TRY_RUN([ 3103d522f475Smrg#include <unistd.h> 3104d522f475Smrg#include <sys/types.h> 3105d522f475Smrg#include <sys/stat.h> 3106d522f475Smrg#include <grp.h> 3107f2e35a3aSmrgint main(void) 3108d522f475Smrg{ 3109d522f475Smrg struct stat sb; 3110f2e35a3aSmrg struct group *ttygrp; 3111f2e35a3aSmrg int fd; 3112f2e35a3aSmrg char *name; 3113d522f475Smrg 3114f2e35a3aSmrg for (fd = 0; fd < 3; ++fd) { 3115f2e35a3aSmrg if ((name = ttyname(fd)) != 0) 3116f2e35a3aSmrg break; 3117f2e35a3aSmrg } 3118f2e35a3aSmrg if (name == 0) 3119f2e35a3aSmrg name = "/dev/tty"; 3120f2e35a3aSmrg 3121f2e35a3aSmrg ttygrp = getgrnam(TTY_GROUP_NAME); 3122d522f475Smrg endgrent(); 3123f2e35a3aSmrg 3124d522f475Smrg if (ttygrp != 0 3125d522f475Smrg && name != 0 3126d522f475Smrg && stat(name, &sb) == 0 3127d522f475Smrg && sb.st_gid != getgid() 3128d522f475Smrg && sb.st_gid == ttygrp->gr_gid) { 3129d522f475Smrg ${cf_cv_main_return:-return} (0); 3130d522f475Smrg } 3131d522f475Smrg ${cf_cv_main_return:-return} (1); 3132d522f475Smrg} 3133d522f475Smrg ], 3134d522f475Smrg [cf_cv_tty_group=yes], 3135d522f475Smrg [cf_cv_tty_group=no], 3136d522f475Smrg [cf_cv_tty_group=unknown]) 3137d522f475Smrgelif test "$cross_compiling" = yes; then 3138d522f475Smrg cf_cv_tty_group=unknown 3139d522f475Smrgelse 3140d522f475Smrg cf_cv_tty_group=yes 3141d522f475Smrgfi 3142d522f475Smrg]) 3143d522f475Smrg 3144d522f475Smrgif test $cf_cv_tty_group = no ; then 3145d522f475Smrg AC_MSG_WARN(Cannot use $cf_tty_group group) 3146d522f475Smrgelse 3147d522f475Smrg AC_DEFINE(USE_TTY_GROUP) 3148d522f475Smrgfi 3149d522f475Smrg])dnl 3150d522f475Smrgdnl --------------------------------------------------------------------------- 3151f2e35a3aSmrgdnl CF_TYPE_CC_T version: 3 updated: 2020/03/10 18:53:47 31520bd37d32Smrgdnl ------------ 31530bd37d32Smrgdnl Check for cc_t type, used in termio. 31540bd37d32SmrgAC_DEFUN([CF_TYPE_CC_T], 31550bd37d32Smrg[ 31560bd37d32SmrgAC_MSG_CHECKING(for cc_t in <termios.h> or <termio.h>) 31570bd37d32SmrgAC_CACHE_VAL(cf_cv_type_cc_t,[ 31580bd37d32Smrg AC_TRY_COMPILE([ 31590bd37d32Smrg#include <sys/types.h> 31600bd37d32Smrg#if defined(HAVE_TERMIOS_H) 31610bd37d32Smrg#include <termios.h> 31620bd37d32Smrg#else 31630bd37d32Smrg#include <termio.h> 31640bd37d32Smrg#include <sys/ioctl.h> 31650bd37d32Smrg#endif 31660bd37d32Smrg], 3167f2e35a3aSmrg [cc_t x; (void)x], 31680bd37d32Smrg [cf_cv_type_cc_t=yes], 31690bd37d32Smrg [cf_cv_type_cc_t=no]) 31700bd37d32Smrg ]) 31710bd37d32SmrgAC_MSG_RESULT($cf_cv_type_cc_t) 31720bd37d32Smrgtest $cf_cv_type_cc_t = no && AC_DEFINE(cc_t, unsigned char,[Define to cc_t type used in termio]) 31730bd37d32Smrg])dnl 31740bd37d32Smrgdnl --------------------------------------------------------------------------- 31750bd37d32Smrgdnl CF_TYPE_FD_MASK version: 3 updated: 2012/10/04 06:57:36 3176d522f475Smrgdnl --------------- 3177d522f475Smrgdnl Check for the declaration of fd_mask, which is like fd_set, associated 3178d522f475Smrgdnl with select(). The check for fd_set should have pulled in this as well, 3179d522f475Smrgdnl but there is a special case for Mac OS X, possibly other BSD-derived 3180d522f475Smrgdnl platforms. 3181d522f475SmrgAC_DEFUN([CF_TYPE_FD_MASK], 3182d522f475Smrg[ 3183d522f475SmrgAC_REQUIRE([CF_TYPE_FD_SET]) 3184d522f475Smrg 3185d522f475SmrgAC_CACHE_CHECK(for declaration of fd_mask,cf_cv_type_fd_mask,[ 3186d522f475Smrg if test x$cf_cv_type_fd_set = xX11/Xpoll.h ; then 3187d522f475Smrg AC_TRY_COMPILE([ 3188d522f475Smrg#include <X11/Xpoll.h>],[fd_mask x],, 3189d522f475Smrg [CF_MSG_LOG(if we must define CSRG_BASED) 3190d522f475Smrg# Xosdefs.h on Mac OS X may not define this (but it should). 3191d522f475Smrg AC_TRY_COMPILE([ 3192d522f475Smrg#define CSRG_BASED 3193d522f475Smrg#include <X11/Xpoll.h>],[fd_mask x], 3194d522f475Smrg cf_cv_type_fd_mask=CSRG_BASED)]) 3195d522f475Smrg else 3196d522f475Smrg cf_cv_type_fd_mask=$cf_cv_type_fd_set 3197d522f475Smrg fi 3198d522f475Smrg]) 3199d522f475Smrgif test x$cf_cv_type_fd_mask = xCSRG_BASED ; then 32000bd37d32Smrg AC_DEFINE(CSRG_BASED,1,[Define to 1 if needed for declaring fd_mask()]) 3201d522f475Smrgfi 3202d522f475Smrg])dnl 3203d522f475Smrgdnl --------------------------------------------------------------------------- 3204f2e35a3aSmrgdnl CF_TYPE_FD_SET version: 6 updated: 2020/03/10 18:53:47 3205d522f475Smrgdnl -------------- 3206d522f475Smrgdnl Check for the declaration of fd_set. Some platforms declare it in 3207d522f475Smrgdnl <sys/types.h>, and some in <sys/select.h>, which requires <sys/types.h>. 3208d522f475Smrgdnl Finally, if we are using this for an X application, Xpoll.h may include 3209d522f475Smrgdnl <sys/select.h>, so we don't want to do it twice. 3210d522f475SmrgAC_DEFUN([CF_TYPE_FD_SET], 3211d522f475Smrg[ 3212d522f475SmrgAC_CHECK_HEADERS(X11/Xpoll.h) 3213d522f475Smrg 3214d522f475SmrgAC_CACHE_CHECK(for declaration of fd_set,cf_cv_type_fd_set, 3215d522f475Smrg [CF_MSG_LOG(sys/types alone) 3216d522f475SmrgAC_TRY_COMPILE([ 3217d522f475Smrg#include <sys/types.h>], 3218f2e35a3aSmrg [fd_set x; (void)x], 3219d522f475Smrg [cf_cv_type_fd_set=sys/types.h], 3220d522f475Smrg [CF_MSG_LOG(X11/Xpoll.h) 3221d522f475SmrgAC_TRY_COMPILE([ 3222d522f475Smrg#ifdef HAVE_X11_XPOLL_H 3223d522f475Smrg#include <X11/Xpoll.h> 3224d522f475Smrg#endif], 3225f2e35a3aSmrg [fd_set x; (void)x], 3226d522f475Smrg [cf_cv_type_fd_set=X11/Xpoll.h], 3227d522f475Smrg [CF_MSG_LOG(sys/select.h) 3228d522f475SmrgAC_TRY_COMPILE([ 3229d522f475Smrg#include <sys/types.h> 3230d522f475Smrg#include <sys/select.h>], 3231f2e35a3aSmrg [fd_set x; (void)x], 3232d522f475Smrg [cf_cv_type_fd_set=sys/select.h], 3233d522f475Smrg [cf_cv_type_fd_set=unknown])])])]) 3234d522f475Smrgif test $cf_cv_type_fd_set = sys/select.h ; then 32350bd37d32Smrg AC_DEFINE(USE_SYS_SELECT_H,1,[Define to 1 to include sys/select.h to declare fd_set]) 3236d522f475Smrgfi 3237d522f475Smrg]) 3238d522f475Smrgdnl --------------------------------------------------------------------------- 3239e39b573cSmrgdnl CF_UNDO_CFLAGS version: 1 updated: 2011/07/02 09:27:51 3240e39b573cSmrgdnl -------------- 3241e39b573cSmrgdnl Remove flags from $CFLAGS or similar shell variable using sed. 3242e39b573cSmrgdnl $1 = variable 3243e39b573cSmrgdnl $2 = message 3244e39b573cSmrgdnl $3 = pattern to remove 3245e39b573cSmrgAC_DEFUN([CF_UNDO_CFLAGS], 3246e39b573cSmrg[ 3247e39b573cSmrg CF_VERBOSE(removing $2 flags from $1) 3248e39b573cSmrg $1=`echo "[$]$1" | sed -e 's/$3//'` 3249e39b573cSmrg CF_VERBOSE(...result [$]$1) 3250e39b573cSmrg])dnl 3251e39b573cSmrgdnl --------------------------------------------------------------------------- 3252d522f475Smrgdnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 3253d522f475Smrgdnl -------- 3254d522f475Smrgdnl Make an uppercase version of a variable 3255d522f475Smrgdnl $1=uppercase($2) 3256d522f475SmrgAC_DEFUN([CF_UPPER], 3257d522f475Smrg[ 3258d522f475Smrg$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` 3259d522f475Smrg])dnl 3260d522f475Smrgdnl --------------------------------------------------------------------------- 32610bd37d32Smrgdnl CF_UTEMPTER version: 4 updated: 2012/10/04 20:12:20 3262d522f475Smrgdnl ----------- 3263d522f475Smrgdnl Try to link with utempter library 3264d522f475SmrgAC_DEFUN([CF_UTEMPTER], 3265d522f475Smrg[ 3266d522f475SmrgAC_CACHE_CHECK(if we can link with utempter library,cf_cv_have_utempter,[ 3267d522f475Smrgcf_save_LIBS="$LIBS" 326820d2c4d2SmrgCF_ADD_LIB(utempter) 3269d522f475SmrgAC_TRY_LINK([ 3270d522f475Smrg#include <utempter.h> 3271d522f475Smrg],[ 3272d522f475Smrg addToUtmp("/dev/tty", 0, 1); 3273d522f475Smrg removeFromUtmp(); 3274d522f475Smrg],[ 3275d522f475Smrg cf_cv_have_utempter=yes],[ 3276d522f475Smrg cf_cv_have_utempter=no]) 3277d522f475SmrgLIBS="$cf_save_LIBS" 3278d522f475Smrg]) 3279d522f475Smrgif test "$cf_cv_have_utempter" = yes ; then 32800bd37d32Smrg AC_DEFINE(USE_UTEMPTER,1,[Define to 1 if we can/should link with utempter]) 328120d2c4d2Smrg CF_ADD_LIB(utempter) 3282d522f475Smrgfi 3283d522f475Smrg])dnl 3284d522f475Smrgdnl --------------------------------------------------------------------------- 3285f2e35a3aSmrgdnl CF_UTMP version: 12 updated: 2021/01/02 09:31:20 3286d522f475Smrgdnl ------- 3287d522f475Smrgdnl Check for UTMP/UTMPX headers 3288d522f475SmrgAC_DEFUN([CF_UTMP], 3289d522f475Smrg[ 3290d522f475SmrgAC_REQUIRE([CF_LASTLOG]) 3291d522f475Smrg 3292d522f475SmrgAC_CACHE_CHECK(for utmp implementation,cf_cv_have_utmp,[ 3293d522f475Smrg cf_cv_have_utmp=no 3294d522f475Smrgfor cf_header in utmpx utmp ; do 3295d522f475Smrgcf_utmp_includes=" 3296d522f475Smrg#include <sys/types.h> 3297d522f475Smrg#include <${cf_header}.h> 3298d522f475Smrg#define getutent getutxent 3299d522f475Smrg#ifdef USE_LASTLOG 3300d522f475Smrg#include <lastlog.h> /* may conflict with utmpx.h on Linux */ 3301d522f475Smrg#endif 3302d522f475Smrg" 3303d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3304d522f475Smrg [struct $cf_header x; 3305d522f475Smrg char *name = x.ut_name; /* utmp.h and compatible definitions */ 3306f2e35a3aSmrg (void)x; 3307f2e35a3aSmrg (void)name; 3308d522f475Smrg ], 3309d522f475Smrg [cf_cv_have_utmp=$cf_header 3310d522f475Smrg break], 3311d522f475Smrg [ 3312d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3313d522f475Smrg [struct $cf_header x; 3314d522f475Smrg char *name = x.ut_user; /* utmpx.h must declare this */ 3315f2e35a3aSmrg (void)x; 3316f2e35a3aSmrg (void)name; 3317d522f475Smrg ], 3318d522f475Smrg [cf_cv_have_utmp=$cf_header 3319d522f475Smrg break 3320d522f475Smrg ])]) 3321d522f475Smrgdone 3322d522f475Smrg]) 3323d522f475Smrg 3324f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 33250bd37d32Smrg AC_DEFINE(HAVE_UTMP,1,[Define to 1 if the utmp interface is available]) 3326f2e35a3aSmrg test "$cf_cv_have_utmp" = utmpx && AC_DEFINE(UTMPX_FOR_UTMP,1,[Define if we have utmpx interface]) 3327d522f475Smrg CF_UTMP_UT_HOST 3328d522f475Smrg CF_UTMP_UT_SYSLEN 3329d522f475Smrg CF_UTMP_UT_NAME 3330d522f475Smrg CF_UTMP_UT_XSTATUS 3331d522f475Smrg CF_UTMP_UT_XTIME 3332d522f475Smrg CF_UTMP_UT_SESSION 3333d522f475Smrg CF_SYSV_UTMP 3334d522f475Smrgfi 3335d522f475Smrg])dnl 3336d522f475Smrgdnl --------------------------------------------------------------------------- 3337f2e35a3aSmrgdnl CF_UTMP_GROUP version: 2 updated: 2020/12/31 10:54:15 3338d522f475Smrgdnl ------------- 3339d522f475Smrgdnl Find the utmp/utmpx file and determine its group to allow setgid programs 3340d522f475Smrgdnl to manipulate it, e.g., when there is no intermediary. 3341d522f475SmrgAC_DEFUN([CF_UTMP_GROUP],[ 3342d522f475SmrgAC_REQUIRE([CF_UTMP]) 3343d522f475Smrgif test $cf_cv_have_utmp != no ; then 3344d522f475SmrgAC_CACHE_CHECK(for utmp/utmpx group,cf_cv_utmp_group,[ 3345d522f475Smrgfor cf_utmp_path in /var/adm /var/run 3346d522f475Smrgdo 3347d522f475Smrg for cf_utmp_file in utmpx utmp 3348d522f475Smrg do 3349d522f475Smrg if test -f $cf_utmp_path/$cf_utmp_file 3350d522f475Smrg then 3351d522f475Smrg cf_cv_utmp_group=root 3352d522f475Smrg 3353f2e35a3aSmrg cf_option="-lL" 3354d522f475Smrg 3355d522f475Smrg # Expect listing to have fields like this: 3356d522f475Smrg #-r--r--r-- 1 user group 34293 Jul 18 16:29 pathname 3357f2e35a3aSmrg ls "$cf_option" "$cf_utmp_path/$cf_utmp_file" >conftest 3358d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest 3359d522f475Smrg if test -z "$cf_rest" ; then 3360f2e35a3aSmrg cf_option="${cf_option}g" 3361f2e35a3aSmrg ls "$cf_option" "$cf_utmp_path/$cf_utmp_file" >conftest 3362d522f475Smrg read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest 3363d522f475Smrg fi 3364d522f475Smrg rm -f conftest 3365d522f475Smrg 3366d522f475Smrg # If we have a pathname, and the date fields look right, assume we've 3367d522f475Smrg # captured the group as well. 3368d522f475Smrg if test -n "$cf_rest" ; then 3369d522f475Smrg cf_test=`echo "${cf_date2}${cf_date3}" | sed -e 's/[[0-9:]]//g'` 3370d522f475Smrg if test -z "$cf_test" ; then 3371d522f475Smrg cf_cv_utmp_group=$cf_grp; 3372d522f475Smrg fi 3373d522f475Smrg fi 3374d522f475Smrg break 3375d522f475Smrg fi 3376d522f475Smrg done 3377d522f475Smrg test -n "$cf_cv_utmp_group" && break 3378d522f475Smrgdone 3379d522f475Smrg]) 3380d522f475Smrgelse 3381d522f475Smrg AC_MSG_ERROR(cannot find utmp group) 3382d522f475Smrgfi 3383d522f475Smrg])dnl 3384d522f475Smrgdnl --------------------------------------------------------------------------- 3385f2e35a3aSmrgdnl CF_UTMP_UT_HOST version: 10 updated: 2021/01/02 09:31:20 3386d522f475Smrgdnl --------------- 3387d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_host member 3388d522f475SmrgAC_DEFUN([CF_UTMP_UT_HOST], 3389d522f475Smrg[ 3390f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3391d522f475SmrgAC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_host is declared) 3392d522f475SmrgAC_CACHE_VAL(cf_cv_have_utmp_ut_host,[ 3393d522f475Smrg AC_TRY_COMPILE([ 3394d522f475Smrg#include <sys/types.h> 3395d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3396f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3397f2e35a3aSmrg char *y = &x.ut_host[0]; 3398f2e35a3aSmrg (void)x; 3399f2e35a3aSmrg (void)y], 3400d522f475Smrg [cf_cv_have_utmp_ut_host=yes], 3401d522f475Smrg [cf_cv_have_utmp_ut_host=no]) 3402d522f475Smrg ]) 3403d522f475SmrgAC_MSG_RESULT($cf_cv_have_utmp_ut_host) 3404f2e35a3aSmrgtest "$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]) 3405d522f475Smrgfi 3406d522f475Smrg])dnl 3407d522f475Smrgdnl --------------------------------------------------------------------------- 3408f2e35a3aSmrgdnl CF_UTMP_UT_NAME version: 8 updated: 2021/01/02 09:31:20 3409d522f475Smrgdnl --------------- 3410d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_name member 3411d522f475SmrgAC_DEFUN([CF_UTMP_UT_NAME], 3412d522f475Smrg[ 3413f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3414d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_name is declared,cf_cv_have_utmp_ut_name,[ 3415d522f475Smrg cf_cv_have_utmp_ut_name=no 3416d522f475Smrgcf_utmp_includes=" 3417d522f475Smrg#include <sys/types.h> 3418d522f475Smrg#include <${cf_cv_have_utmp}.h> 3419d522f475Smrg#define getutent getutxent 3420d522f475Smrg#ifdef USE_LASTLOG 3421d522f475Smrg#include <lastlog.h> /* may conflict with utmpx.h on Linux */ 3422d522f475Smrg#endif 3423d522f475Smrg" 3424d522f475Smrgfor cf_header in ut_name ut_user ; do 3425d522f475Smrg AC_TRY_COMPILE([$cf_utmp_includes], 3426d522f475Smrg [struct $cf_cv_have_utmp x; 3427d522f475Smrg char *name = x.$cf_header; 3428f2e35a3aSmrg (void)x; 3429f2e35a3aSmrg (void)name; 3430d522f475Smrg ], 3431d522f475Smrg [cf_cv_have_utmp_ut_name=$cf_header 3432d522f475Smrg break]) 3433d522f475Smrgdone 3434d522f475Smrg]) 3435d522f475Smrg 3436f2e35a3aSmrgcase "$cf_cv_have_utmp_ut_name" in 343701037d57Smrg(no) 3438d522f475Smrg AC_MSG_ERROR(Cannot find declaration for ut.ut_name) 3439d522f475Smrg ;; 344001037d57Smrg(ut_user) 34410bd37d32Smrg AC_DEFINE(ut_name,ut_user,[Define to rename UTMP/UTMPX struct ut_name member]) 3442d522f475Smrg ;; 3443d522f475Smrgesac 3444d522f475Smrgfi 3445d522f475Smrg])dnl 3446d522f475Smrgdnl --------------------------------------------------------------------------- 3447ae137402Smrgdnl CF_UTMP_UT_SESSION version: 9 updated: 2021/06/07 17:39:17 3448d522f475Smrgdnl ------------------ 3449d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_session member 3450d522f475SmrgAC_DEFUN([CF_UTMP_UT_SESSION], 3451d522f475Smrg[ 3452f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3453d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_session is declared, cf_cv_have_utmp_ut_session,[ 3454d522f475Smrg AC_TRY_COMPILE([ 3455d522f475Smrg#include <sys/types.h> 3456d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3457ae137402Smrg [static struct $cf_cv_have_utmp x; 3458f2e35a3aSmrg long y = x.ut_session; 3459f2e35a3aSmrg (void)x; 3460f2e35a3aSmrg (void)y], 3461d522f475Smrg [cf_cv_have_utmp_ut_session=yes], 3462d522f475Smrg [cf_cv_have_utmp_ut_session=no]) 3463d522f475Smrg]) 3464f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_session" != no ; then 34650bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_SESSION,1,[Define to 1 if UTMP/UTMPX struct defines ut_session member]) 3466d522f475Smrgfi 3467d522f475Smrgfi 3468d522f475Smrg])dnl 3469d522f475Smrgdnl --------------------------------------------------------------------------- 3470f2e35a3aSmrgdnl CF_UTMP_UT_SYSLEN version: 4 updated: 2021/01/02 09:31:20 3471d522f475Smrgdnl ----------------- 3472d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_syslen member 3473d522f475SmrgAC_DEFUN([CF_UTMP_UT_SYSLEN], 3474d522f475Smrg[ 3475f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3476d522f475SmrgAC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_syslen is declared) 3477d522f475SmrgAC_CACHE_VAL(cf_cv_have_utmp_ut_syslen,[ 3478d522f475Smrg AC_TRY_COMPILE([ 3479d522f475Smrg#include <sys/types.h> 3480d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3481f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3482f2e35a3aSmrg int y = x.ut_syslen; 3483f2e35a3aSmrg (void)x; 3484f2e35a3aSmrg (void)y], 3485d522f475Smrg [cf_cv_have_utmp_ut_syslen=yes], 3486d522f475Smrg [cf_cv_have_utmp_ut_syslen=no]) 3487d522f475Smrg ]) 3488d522f475SmrgAC_MSG_RESULT($cf_cv_have_utmp_ut_syslen) 3489f2e35a3aSmrgtest "$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]) 3490d522f475Smrgfi 3491d522f475Smrg])dnl 3492d522f475Smrgdnl --------------------------------------------------------------------------- 3493f2e35a3aSmrgdnl CF_UTMP_UT_XSTATUS version: 6 updated: 2021/01/02 09:31:20 3494d522f475Smrgdnl ------------------ 3495d522f475Smrgdnl Check for known variants on the UTMP/UTMPX struct's exit-status as reported 3496d522f475Smrgdnl by various people: 3497d522f475Smrgdnl 3498d522f475Smrgdnl ut_exit.__e_exit (HPUX 11 - David Ellement, also in glibc2) 3499d522f475Smrgdnl ut_exit.e_exit (SVR4) 3500d522f475Smrgdnl ut_exit.ut_e_exit (os390 - Greg Smith) 3501d522f475Smrgdnl ut_exit.ut_exit (Tru64 4.0f - Jeremie Petit, 4.0e - Tomas Vanhala) 3502d522f475Smrgdnl 3503d522f475Smrgdnl Note: utmp_xstatus is not a conventional compatibility definition in the 3504d522f475Smrgdnl system header files. 3505d522f475SmrgAC_DEFUN([CF_UTMP_UT_XSTATUS], 3506d522f475Smrg[ 3507f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3508d522f475SmrgAC_CACHE_CHECK(for exit-status in $cf_cv_have_utmp,cf_cv_have_utmp_ut_xstatus,[ 3509d522f475Smrgfor cf_result in \ 3510d522f475Smrg ut_exit.__e_exit \ 3511d522f475Smrg ut_exit.e_exit \ 3512d522f475Smrg ut_exit.ut_e_exit \ 3513d522f475Smrg ut_exit.ut_exit 3514d522f475Smrgdo 3515d522f475SmrgAC_TRY_COMPILE([ 3516d522f475Smrg#include <sys/types.h> 3517d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3518f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3519f2e35a3aSmrg long y = x.$cf_result = 0; 3520f2e35a3aSmrg (void)x; 3521f2e35a3aSmrg (void)y], 3522d522f475Smrg [cf_cv_have_utmp_ut_xstatus=$cf_result 3523d522f475Smrg break], 3524d522f475Smrg [cf_cv_have_utmp_ut_xstatus=no]) 3525d522f475Smrgdone 3526d522f475Smrg]) 3527f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_xstatus" != no ; then 35280bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_XSTATUS,1,[Define to 1 if UTMP/UTMPX has exit-status member]) 35290bd37d32Smrg AC_DEFINE_UNQUOTED(ut_xstatus,$cf_cv_have_utmp_ut_xstatus,[Define if needed to rename member ut_xstatus of UTMP/UTMPX]) 3530d522f475Smrgfi 3531d522f475Smrgfi 3532d522f475Smrg])dnl 3533d522f475Smrgdnl --------------------------------------------------------------------------- 3534f2e35a3aSmrgdnl CF_UTMP_UT_XTIME version: 11 updated: 2021/01/02 09:31:20 3535d522f475Smrgdnl ---------------- 3536d522f475Smrgdnl Check if UTMP/UTMPX struct defines ut_xtime member 3537d522f475SmrgAC_DEFUN([CF_UTMP_UT_XTIME], 3538d522f475Smrg[ 3539f2e35a3aSmrgif test "$cf_cv_have_utmp" != no ; then 3540d522f475SmrgAC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_xtime is declared, cf_cv_have_utmp_ut_xtime,[ 3541d522f475Smrg AC_TRY_COMPILE([ 3542d522f475Smrg#include <sys/types.h> 3543d522f475Smrg#include <${cf_cv_have_utmp}.h>], 3544f2e35a3aSmrg [struct $cf_cv_have_utmp x; 3545f2e35a3aSmrg long y = x.ut_xtime = 0; 3546f2e35a3aSmrg (void)x; 3547f2e35a3aSmrg (void)y], 3548d522f475Smrg [cf_cv_have_utmp_ut_xtime=yes], 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_tv.tv_sec; 3554f2e35a3aSmrg (void)x; 3555f2e35a3aSmrg (void)y], 3556d522f475Smrg [cf_cv_have_utmp_ut_xtime=define], 3557d522f475Smrg [cf_cv_have_utmp_ut_xtime=no]) 3558d522f475Smrg ]) 3559d522f475Smrg]) 3560f2e35a3aSmrgif test "$cf_cv_have_utmp_ut_xtime" != no ; then 35610bd37d32Smrg AC_DEFINE(HAVE_UTMP_UT_XTIME,1,[Define to 1 if UTMP/UTMPX struct defines ut_xtime member]) 3562f2e35a3aSmrg if test "$cf_cv_have_utmp_ut_xtime" = define ; then 35630bd37d32Smrg AC_DEFINE(ut_xtime,ut_tv.tv_sec,[Define if needed to alternate name for utmpx.ut_xtime member]) 3564d522f475Smrg fi 3565d522f475Smrgfi 3566d522f475Smrgfi 3567d522f475Smrg])dnl 3568d522f475Smrgdnl --------------------------------------------------------------------------- 3569d522f475Smrgdnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 3570d522f475Smrgdnl ---------- 3571d522f475Smrgdnl Use AC_VERBOSE w/o the warnings 3572d522f475SmrgAC_DEFUN([CF_VERBOSE], 3573d522f475Smrg[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG 3574d522f475SmrgCF_MSG_LOG([$1]) 3575d522f475Smrg])dnl 3576d522f475Smrgdnl --------------------------------------------------------------------------- 357701037d57Smrgdnl CF_WITH_APP_CLASS version: 3 updated: 2015/04/12 15:39:00 3578e39b573cSmrgdnl ----------------- 3579e39b573cSmrgdnl Handle configure option "--with-app-class", setting the $APP_CLASS 3580e39b573cSmrgdnl variable, used for X resources. 3581e39b573cSmrgdnl 3582e39b573cSmrgdnl $1 = default value. 35830bd37d32SmrgAC_DEFUN([CF_WITH_APP_CLASS],[ 3584e39b573cSmrgAC_MSG_CHECKING(for X applications class) 3585e39b573cSmrgAC_ARG_WITH(app-class, 3586e39b573cSmrg [ --with-app-class=XXX override X applications class (default $1)], 3587e39b573cSmrg [APP_CLASS=$withval], 3588e39b573cSmrg [APP_CLASS=$1]) 3589e39b573cSmrg 359001037d57Smrgcase x$APP_CLASS in 359101037d57Smrg(*[[/@,%]]*) 3592e39b573cSmrg AC_MSG_WARN(X applications class cannot contain punctuation) 3593e39b573cSmrg APP_CLASS=$1 3594e39b573cSmrg ;; 359501037d57Smrg(x[[A-Z]]*) 3596e39b573cSmrg ;; 359701037d57Smrg(*) 3598e39b573cSmrg AC_MSG_WARN([X applications class must start with capital, ignoring $APP_CLASS]) 3599e39b573cSmrg APP_CLASS=$1 3600e39b573cSmrg ;; 3601e39b573cSmrgesac 3602e39b573cSmrg 3603e39b573cSmrgAC_MSG_RESULT($APP_CLASS) 3604e39b573cSmrg 3605e39b573cSmrgAC_SUBST(APP_CLASS) 3606e39b573cSmrg])dnl 3607e39b573cSmrgdnl --------------------------------------------------------------------------- 360801037d57Smrgdnl CF_WITH_APP_DEFAULTS version: 6 updated: 2015/01/02 09:05:50 3609e39b573cSmrgdnl -------------------- 3610e39b573cSmrgdnl Handle configure option "--with-app-defaults", setting these shell 3611e39b573cSmrgdnl variables: 36120bd37d32Smrgdnl 36130bd37d32Smrgdnl $APPSDIR is the option value, used for installing app-defaults files. 3614e39b573cSmrgdnl $no_appsdir is a "#" (comment) if "--without-app-defaults" is given. 36150bd37d32Smrgdnl 36160bd37d32Smrgdnl Most Linux's use this: 36170bd37d32Smrgdnl /usr/share/X11/app-defaults 36180bd37d32Smrgdnl Debian uses this: 36190bd37d32Smrgdnl /etc/X11/app-defaults 36200bd37d32Smrgdnl DragonFlyBSD ports uses this: 36210bd37d32Smrgdnl /usr/pkg/lib/X11/app-defaults 36220bd37d32Smrgdnl FreeBSD ports use these: 36230bd37d32Smrgdnl /usr/local/lib/X11/app-defaults 36240bd37d32Smrgdnl /usr/local/share/X11/app-defaults 36250bd37d32Smrgdnl Mandriva has these: 36260bd37d32Smrgdnl /usr/lib/X11/app-defaults 36270bd37d32Smrgdnl /usr/lib64/X11/app-defaults 36280bd37d32Smrgdnl NetBSD has these 36290bd37d32Smrgdnl /usr/X11R7/lib/X11/app-defaults 36300bd37d32Smrgdnl OpenSolaris uses 36310bd37d32Smrgdnl 32-bit: 36320bd37d32Smrgdnl /usr/X11/etc/X11/app-defaults 36330bd37d32Smrgdnl /usr/X11/share/X11/app-defaults 36340bd37d32Smrgdnl /usr/X11/lib/X11/app-defaults 363501037d57Smrgdnl OSX uses 363601037d57Smrgdnl /opt/local/share/X11/app-defaults (MacPorts) 363701037d57Smrgdnl /opt/X11/share/X11/app-defaults (non-ports) 36380bd37d32Smrgdnl 64-bit: 36390bd37d32Smrgdnl /usr/X11/etc/X11/app-defaults 36400bd37d32Smrgdnl /usr/X11/share/X11/app-defaults (I mkdir'd this) 36410bd37d32Smrgdnl /usr/X11/lib/amd64/X11/app-defaults 36420bd37d32Smrgdnl Solaris10 uses (in this order): 36430bd37d32Smrgdnl /usr/openwin/lib/X11/app-defaults 36440bd37d32Smrgdnl /usr/X11/lib/X11/app-defaults 36450bd37d32SmrgAC_DEFUN([CF_WITH_APP_DEFAULTS],[ 3646e39b573cSmrgAC_MSG_CHECKING(for directory to install resource files) 36470bd37d32SmrgAC_ARG_WITH(app-defaults, 36480bd37d32Smrg [ --with-app-defaults=DIR directory in which to install resource files (EPREFIX/lib/X11/app-defaults)], 36490bd37d32Smrg [APPSDIR=$withval], 36500bd37d32Smrg [APPSDIR='${exec_prefix}/lib/X11/app-defaults']) 36510bd37d32Smrg 36520bd37d32Smrgif test "x[$]APPSDIR" = xauto 36530bd37d32Smrgthen 36540bd37d32Smrg APPSDIR='${exec_prefix}/lib/X11/app-defaults' 36550bd37d32Smrg for cf_path in \ 365601037d57Smrg /opt/local/share/X11/app-defaults \ 365701037d57Smrg /opt/X11/share/X11/app-defaults \ 36580bd37d32Smrg /usr/share/X11/app-defaults \ 36590bd37d32Smrg /usr/X11/share/X11/app-defaults \ 36600bd37d32Smrg /usr/X11/lib/X11/app-defaults \ 36610bd37d32Smrg /usr/lib/X11/app-defaults \ 36620bd37d32Smrg /etc/X11/app-defaults \ 36630bd37d32Smrg /usr/pkg/lib/X11/app-defaults \ 36640bd37d32Smrg /usr/X11R7/lib/X11/app-defaults \ 36650bd37d32Smrg /usr/X11R6/lib/X11/app-defaults \ 36660bd37d32Smrg /usr/X11R5/lib/X11/app-defaults \ 36670bd37d32Smrg /usr/X11R4/lib/X11/app-defaults \ 36680bd37d32Smrg /usr/local/lib/X11/app-defaults \ 36690bd37d32Smrg /usr/local/share/X11/app-defaults \ 36700bd37d32Smrg /usr/lib64/X11/app-defaults 36710bd37d32Smrg do 36720bd37d32Smrg if test -d "$cf_path" ; then 36730bd37d32Smrg APPSDIR="$cf_path" 36740bd37d32Smrg break 36750bd37d32Smrg fi 36760bd37d32Smrg done 36770bd37d32Smrgelse 36780bd37d32Smrg cf_path=$APPSDIR 36790bd37d32Smrg CF_PATH_SYNTAX(cf_path) 36800bd37d32Smrgfi 36810bd37d32Smrg 36820bd37d32SmrgAC_MSG_RESULT($APPSDIR) 36830bd37d32SmrgAC_SUBST(APPSDIR) 3684e39b573cSmrg 3685e39b573cSmrgno_appsdir= 36860bd37d32Smrgif test "$APPSDIR" = no 36870bd37d32Smrgthen 36880bd37d32Smrg no_appsdir="#" 36890bd37d32Smrgelse 36900bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(APPSDIR)" 36910bd37d32Smrgfi 3692e39b573cSmrgAC_SUBST(no_appsdir) 3693e39b573cSmrg])dnl 3694e39b573cSmrgdnl --------------------------------------------------------------------------- 36950bd37d32Smrgdnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 36960bd37d32Smrgdnl ---------------- 36970bd37d32Smrgdnl Configure-option for dbmalloc. The optional parameter is used to override 36980bd37d32Smrgdnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 36990bd37d32SmrgAC_DEFUN([CF_WITH_DBMALLOC],[ 37000bd37d32SmrgCF_NO_LEAKS_OPTION(dbmalloc, 37010bd37d32Smrg [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], 37020bd37d32Smrg [USE_DBMALLOC]) 37030bd37d32Smrg 37040bd37d32Smrgif test "$with_dbmalloc" = yes ; then 37050bd37d32Smrg AC_CHECK_HEADER(dbmalloc.h, 37060bd37d32Smrg [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) 37070bd37d32Smrgfi 37080bd37d32Smrg])dnl 37090bd37d32Smrgdnl --------------------------------------------------------------------------- 3710f2e35a3aSmrgdnl CF_WITH_DESKTOP_CATEGORY version: 9 updated: 2021/01/03 18:30:50 3711e39b573cSmrgdnl ------------------------ 3712e39b573cSmrgdnl Taking into account the absence of standardization of desktop categories 3713e39b573cSmrgdnl take a look to see whether other applications on the current system are 3714e39b573cSmrgdnl assigned any/all of a set of suggested categories. 3715e39b573cSmrgdnl 3716e39b573cSmrgdnl $1 = program name 3717e39b573cSmrgdnl $2 = case-pattern to match comparable desktop files to obtain category 3718e39b573cSmrgdnl This pattern may contain wildcards. 3719e39b573cSmrgdnl $3 = suggested categories, also a case-pattern but without wildcards, 37200bd37d32Smrgdnl since it doubles as a default value for a shell case-statement. 37210bd37d32Smrgdnl $4 = categories to use if no match is found on the build-machine for the 37220bd37d32Smrgdnl --with-desktop-category "auto" setting. 3723e39b573cSmrgdnl 3724e39b573cSmrgdnl The macro tells the configure script to substitute the $DESKTOP_CATEGORY 3725e39b573cSmrgdnl value. 3726e39b573cSmrgAC_DEFUN([CF_WITH_DESKTOP_CATEGORY],[ 3727f2e35a3aSmrgAC_REQUIRE([AC_PROG_EGREP])dnl 3728f2e35a3aSmrgAC_REQUIRE([CF_DISABLE_DESKTOP])dnl 3729e39b573cSmrgif test -z "$desktop_utils" 3730e39b573cSmrgthen 3731e39b573cSmrg AC_MSG_CHECKING(for requested desktop-category) 3732e39b573cSmrg AC_ARG_WITH(desktop-category, 3733e39b573cSmrg [ --with-desktop-category=XXX one or more desktop catgories or auto], 3734e39b573cSmrg [cf_desktop_want=$withval], 3735e39b573cSmrg [cf_desktop_want=auto]) 3736e39b573cSmrg AC_MSG_RESULT($cf_desktop_want) 3737e39b573cSmrg 3738e39b573cSmrg if test "$cf_desktop_want" = auto 3739e39b573cSmrg then 3740e39b573cSmrg rm -rf conftest* 3741e39b573cSmrg cf_desktop_also= 3742e39b573cSmrg for cf_desktop_dir in \ 3743e39b573cSmrg /usr/share/app-install \ 3744e39b573cSmrg /usr/share/applications 3745e39b573cSmrg do 3746e39b573cSmrg if test -d $cf_desktop_dir 3747e39b573cSmrg then 3748e39b573cSmrg find $cf_desktop_dir -name '*.desktop' | \ 3749e39b573cSmrg while true 3750e39b573cSmrg do 3751e39b573cSmrg read cf_desktop_path 3752e39b573cSmrg test -z "$cf_desktop_path" && break 3753f2e35a3aSmrg cf_desktop_name=`basename "$cf_desktop_path" .desktop` 375401037d57Smrg case $cf_desktop_name in 375501037d57Smrg ($1|*-$1|$2) 3756e39b573cSmrg CF_VERBOSE(inspect $cf_desktop_path) 3757f2e35a3aSmrg ${EGREP-egrep} '^Categories=' "$cf_desktop_path" | \ 3758e39b573cSmrg tr ';' '\n' | \ 3759e39b573cSmrg sed -e 's%^.*=%%' -e '/^$/d' >>conftest.1 3760e39b573cSmrg ;; 3761e39b573cSmrg esac 3762e39b573cSmrg done 3763e39b573cSmrg fi 3764e39b573cSmrg done 3765e39b573cSmrg if test -s conftest.1 3766e39b573cSmrg then 3767e39b573cSmrg cf_desktop_last= 3768e39b573cSmrg sort conftest.1 | \ 3769e39b573cSmrg while true 3770e39b573cSmrg do 3771e39b573cSmrg read cf_desktop_this 3772e39b573cSmrg test -z "$cf_desktop_this" && break 3773f2e35a3aSmrg if test -s conftest.2 3774f2e35a3aSmrg then 3775f2e35a3aSmrg grep -w "$cf_desktop_this" conftest.2 >/dev/null && continue 3776f2e35a3aSmrg elif test -s conftest.3 3777f2e35a3aSmrg then 3778f2e35a3aSmrg grep -w "$cf_desktop_this" conftest.3 >/dev/null && continue 3779f2e35a3aSmrg fi 3780f2e35a3aSmrg case "$cf_desktop_this" in 3781f2e35a3aSmrg (-*) 3782f2e35a3aSmrg ;; 3783f2e35a3aSmrg (Qt*|*Xfce*|*[[ABCDEFGHIJKLMNOPQRSTUVWXYZ]][[ABCDEFGHIJKLMNOPQRSTUVWXYZ]]*) 3784f2e35a3aSmrg CF_VERBOSE(ignored $cf_desktop_this) 3785f2e35a3aSmrg echo "$cf_desktop_this" >> conftest.3 3786e39b573cSmrg ;; 378701037d57Smrg ($3) 3788f2e35a3aSmrg CF_VERBOSE(applied $cf_desktop_this) 3789f2e35a3aSmrg test "x$cf_desktop_last" != "x$cf_desktop_this" && echo "$cf_desktop_this" >>conftest.2 3790e39b573cSmrg ;; 3791e39b573cSmrg esac 3792e39b573cSmrg cf_desktop_last=$cf_desktop_this 3793e39b573cSmrg done 3794f2e35a3aSmrg cf_desktop_want="`tr '\n' ';' < conftest.2`" 3795e39b573cSmrg fi 37960bd37d32Smrg if test -n "$cf_desktop_want" 37970bd37d32Smrg then 37980bd37d32Smrg if test "$cf_desktop_want" = auto 37990bd37d32Smrg then 38000bd37d32Smrg cf_desktop_want= 38010bd37d32Smrg else 38020bd37d32Smrg # do a sanity check on the semicolon-separated list, ignore on failure 38030bd37d32Smrg cf_desktop_test=`echo "$cf_desktop_want" | sed -e 's/[[^;]]//g'` 38040bd37d32Smrg test -z "$cf_desktop_test" && cf_desktop_want= 38050bd37d32Smrg cf_desktop_test=`echo "$cf_desktop_want" | sed -e 's/^.*;$/./g'` 38060bd37d32Smrg test -z "$cf_desktop_test" && cf_desktop_want= 38070bd37d32Smrg fi 38080bd37d32Smrg fi 38090bd37d32Smrg if test -z "$cf_desktop_want" 38100bd37d32Smrg then 38110bd37d32Smrg cf_desktop_want="ifelse([$4],,ifelse([$3],,[Application;],[`echo "$3" | sed -e 's/\*//g' -e 's/|/;/g' -e 's/[[;]]*$/;/g'`]),[$4])" 38120bd37d32Smrg CF_VERBOSE(no usable value found for desktop category, using $cf_desktop_want) 38130bd37d32Smrg fi 3814e39b573cSmrg fi 3815e39b573cSmrg DESKTOP_CATEGORY=`echo "$cf_desktop_want" | sed -e 's/[[ ,]]/;/g'` 38160bd37d32Smrg CF_VERBOSE(will use Categories=$DESKTOP_CATEGORY) 3817e39b573cSmrg AC_SUBST(DESKTOP_CATEGORY) 3818e39b573cSmrgfi 3819e39b573cSmrg]) 3820e39b573cSmrgdnl --------------------------------------------------------------------------- 38210bd37d32Smrgdnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 3822e39b573cSmrgdnl --------------- 38230bd37d32Smrgdnl Configure-option for dmalloc. The optional parameter is used to override 38240bd37d32Smrgdnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 38250bd37d32SmrgAC_DEFUN([CF_WITH_DMALLOC],[ 38260bd37d32SmrgCF_NO_LEAKS_OPTION(dmalloc, 38270bd37d32Smrg [ --with-dmalloc test: use Gray Watson's dmalloc library], 38280bd37d32Smrg [USE_DMALLOC]) 38290bd37d32Smrg 38300bd37d32Smrgif test "$with_dmalloc" = yes ; then 38310bd37d32Smrg AC_CHECK_HEADER(dmalloc.h, 38320bd37d32Smrg [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) 38330bd37d32Smrgfi 38340bd37d32Smrg])dnl 38350bd37d32Smrgdnl --------------------------------------------------------------------------- 38360bd37d32Smrgdnl CF_WITH_ICONDIR version: 5 updated: 2012/07/22 09:18:02 38370bd37d32Smrgdnl --------------- 38380bd37d32Smrgdnl Handle configure option "--with-icondir", setting these shell variables: 38390bd37d32Smrgdnl 38400bd37d32Smrgdnl $ICONDIR is the option value, used for installing icon files. 3841e39b573cSmrgdnl $no_icondir is a "#" (comment) if "--without-icondir" is given. 3842e39b573cSmrgAC_DEFUN([CF_WITH_ICONDIR],[ 3843e39b573cSmrgAC_MSG_CHECKING(for directory to install icons) 38440bd37d32SmrgAC_ARG_WITH(icondir, 38450bd37d32Smrg [ --with-icondir=DIR directory in which to install icons for desktop], 38460bd37d32Smrg [ICONDIR=$withval], 38470bd37d32Smrg [test -z "$ICONDIR" && ICONDIR=no]) 38480bd37d32Smrg 38490bd37d32Smrgif test "x[$]ICONDIR" = xauto 38500bd37d32Smrgthen 38510bd37d32Smrg ICONDIR='${datadir}/icons' 38520bd37d32Smrg for cf_path in \ 38530bd37d32Smrg /usr/share/icons \ 38540bd37d32Smrg /usr/X11R6/share/icons 38550bd37d32Smrg do 38560bd37d32Smrg if test -d "$cf_path" ; then 38570bd37d32Smrg ICONDIR="$cf_path" 38580bd37d32Smrg break 38590bd37d32Smrg fi 38600bd37d32Smrg done 38610bd37d32Smrgelse 38620bd37d32Smrg cf_path=$ICONDIR 38630bd37d32Smrg CF_PATH_SYNTAX(cf_path) 38640bd37d32Smrgfi 38650bd37d32SmrgAC_MSG_RESULT($ICONDIR) 38660bd37d32SmrgAC_SUBST(ICONDIR) 3867e39b573cSmrg 3868e39b573cSmrgno_icondir= 38690bd37d32Smrgif test "$ICONDIR" = no 38700bd37d32Smrgthen 38710bd37d32Smrg no_icondir="#" 38720bd37d32Smrgelse 38730bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(ICONDIR)" 38740bd37d32Smrgfi 3875e39b573cSmrgAC_SUBST(no_icondir) 3876e39b573cSmrg])dnl 3877e39b573cSmrgdnl --------------------------------------------------------------------------- 387801037d57Smrgdnl CF_WITH_ICON_NAME version: 3 updated: 2015/04/12 15:39:00 38790bd37d32Smrgdnl ----------------- 38800bd37d32Smrgdnl Allow a default icon-name to be overridden. 38810bd37d32Smrgdnl $1 = default icon name 38820bd37d32SmrgAC_DEFUN([CF_WITH_ICON_NAME],[ 38830bd37d32SmrgAC_MSG_CHECKING(for the icon name) 38840bd37d32SmrgAC_ARG_WITH(icon-name, 38850bd37d32Smrg [ --with-icon-name=XXXX override icon name (default: $1)], 38860bd37d32Smrg [ICON_NAME="$withval"], 38870bd37d32Smrg [ICON_NAME=$1]) 38880bd37d32Smrgcase "x$ICON_NAME" in 388901037d57Smrg(xyes|xno|x) 38900bd37d32Smrg ICON_NAME=$1 38910bd37d32Smrg ;; 38920bd37d32Smrgesac 38930bd37d32SmrgAC_SUBST(ICON_NAME) 38940bd37d32SmrgAC_MSG_RESULT($ICON_NAME) 38950bd37d32Smrg])dnl 38960bd37d32Smrgdnl --------------------------------------------------------------------------- 389701037d57Smrgdnl CF_WITH_ICON_SYMLINK version: 2 updated: 2015/04/12 15:39:00 38980bd37d32Smrgdnl -------------------- 38990bd37d32Smrgdnl Workaround for systems which are (mis)configured to map all icon references 39000bd37d32Smrgdnl for xterm into "xterm" name. For instance, recent (2013) KDE ignores both 39010bd37d32Smrgdnl the name given in the .desktop file (xterm-color) and the application name 39020bd37d32Smrgdnl (xterm-dev). 39030bd37d32Smrgdnl 39040bd37d32Smrgdnl $1 = default icon name to use if symlink is wanted 39050bd37d32SmrgAC_DEFUN([CF_WITH_ICON_SYMLINK],[ 39060bd37d32SmrgAC_MSG_CHECKING(for icon symlink to use) 39070bd37d32SmrgAC_ARG_WITH(icon-symlink, 39080bd37d32Smrg [ --with-icon-symlink=XXX make symbolic link for icon name (default: $1)], 39090bd37d32Smrg [ICON_SYMLINK="$withval"], 39100bd37d32Smrg [ICON_SYMLINK=NONE]) 39110bd37d32Smrgcase "x$ICON_SYMLINK" in 391201037d57Smrg(xyes) 39130bd37d32Smrg ICON_SYMLINK=$1 39140bd37d32Smrg ;; 391501037d57Smrg(xno|x) 39160bd37d32Smrg ICON_SYMLINK=NONE 39170bd37d32Smrg ;; 39180bd37d32Smrgesac 39190bd37d32SmrgAC_SUBST(ICON_SYMLINK) 39200bd37d32SmrgAC_MSG_RESULT($ICON_SYMLINK) 39210bd37d32Smrg])dnl 39220bd37d32Smrgdnl --------------------------------------------------------------------------- 3923f2e35a3aSmrgdnl CF_WITH_ICON_THEME version: 13 updated: 2020/12/31 10:54:15 39240bd37d32Smrgdnl ------------------ 39250bd37d32Smrgdnl If asked, check for prerequisites and setup symbols to permit installing 39260bd37d32Smrgdnl one or more application icons in the Red Hat icon-theme directory 392701037d57Smrgdnl hierarchy. 39280bd37d32Smrgdnl 39290bd37d32Smrgdnl If the prerequisites are missing, give a warning and revert to the long- 39300bd37d32Smrgdnl standing pixmaps directory. 39310bd37d32Smrgdnl 39320bd37d32Smrgdnl Parameters: 39330bd37d32Smrgdnl 39340bd37d32Smrgdnl $1 = application icon. This can be a list, and is not optional. 39350bd37d32Smrgdnl $2 = default theme (defaults to hicolor) 39360bd37d32Smrgdnl $3 = formats (defaults to list [.svg .png .xpm]) 39370bd37d32Smrgdnl $4 = alternate icon if no theme is used (defaults to $1). 39380bd37d32Smrgdnl 39390bd37d32Smrgdnl Result: 3940f2e35a3aSmrgdnl ICON_NAME = basename of first item in $1, unless already set 39410bd37d32Smrgdnl ICON_LIST = reprocessed $1 39420bd37d32Smrgdnl ICON_THEME = reprocessed $2 39430bd37d32Smrgdnl ICON_FORMAT = reprocessed $3 39440bd37d32SmrgAC_DEFUN([CF_WITH_ICON_THEME], 39450bd37d32Smrg[ 39460bd37d32Smrgifelse([$1],,[ 39470bd37d32Smrg AC_MSG_ERROR([macro [CF_WITH_ICON_THEME] requires application-icon name]) 39480bd37d32Smrg],[ 39490bd37d32Smrg 39500bd37d32SmrgCF_WITH_PIXMAPDIR 39510bd37d32SmrgCF_WITH_ICONDIR 39520bd37d32Smrg 39530bd37d32SmrgAC_MSG_CHECKING(if icon theme should be used) 39540bd37d32SmrgAC_ARG_WITH(icon-theme, 39550bd37d32Smrg [ --with-icon-theme=XXX install icons into desktop theme (hicolor)], 39560bd37d32Smrg [ICON_THEME=$withval], 39570bd37d32Smrg [ICON_THEME=no]) 39580bd37d32Smrg 395901037d57Smrgcase "x$ICON_THEME" in 396001037d57Smrg(xno) 39610bd37d32Smrg ;; 396201037d57Smrg(x|xyes) 39630bd37d32Smrg ICON_THEME=ifelse([$2],,hicolor,$2) 39640bd37d32Smrg ;; 39650bd37d32Smrgesac 39660bd37d32SmrgAC_MSG_RESULT($ICON_THEME) 39670bd37d32Smrg 39680bd37d32Smrgif test "x$ICON_THEME" = xno 39690bd37d32Smrgthen 39700bd37d32Smrg if test "x$ICONDIR" != xno 39710bd37d32Smrg then 39720bd37d32Smrg CF_VERBOSE(ignoring icondir without theme) 39730bd37d32Smrg no_icondir="#" 39740bd37d32Smrg fi 39750bd37d32Smrgelse 39760bd37d32Smrg if test "x$ICONDIR" = xno 39770bd37d32Smrg then 39780bd37d32Smrg AC_MSG_ERROR(icondir must be set for icon theme) 39790bd37d32Smrg fi 39800bd37d32Smrgfi 39810bd37d32Smrg 39820bd37d32Smrg: ${ICON_FORMAT:=ifelse([$3],,[".svg .png .xpm"],[$3])} 39830bd37d32Smrg 39840bd37d32SmrgICON_LIST= 39850bd37d32Smrg 39860bd37d32Smrgifelse([$4],,[cf_icon_list=$1],[ 39870bd37d32Smrgif test "x$ICON_THEME" != xno 39880bd37d32Smrgthen 39890bd37d32Smrg cf_icon_list="$1" 39900bd37d32Smrgelse 39910bd37d32Smrg cf_icon_list="$4" 39920bd37d32Smrgfi 39930bd37d32Smrg]) 39940bd37d32Smrg 39950bd37d32SmrgAC_MSG_CHECKING([for icon(s) to install]) 39960bd37d32Smrgfor cf_name in $cf_icon_list 39970bd37d32Smrgdo 39980bd37d32Smrg CF_VERBOSE(using $ICON_FORMAT) 39990bd37d32Smrg for cf_suffix in $ICON_FORMAT 40000bd37d32Smrg do 40010bd37d32Smrg cf_icon="${cf_name}${cf_suffix}" 40020bd37d32Smrg cf_left=`echo "$cf_icon" | sed -e 's/:.*//'` 40030bd37d32Smrg if test ! -f "${cf_left}" 40040bd37d32Smrg then 40050bd37d32Smrg if test "x$srcdir" != "x." 40060bd37d32Smrg then 40070bd37d32Smrg cf_icon="${srcdir}/${cf_left}" 40080bd37d32Smrg cf_left=`echo "$cf_icon" | sed -e 's/:.*//'` 40090bd37d32Smrg if test ! -f "${cf_left}" 40100bd37d32Smrg then 40110bd37d32Smrg continue 40120bd37d32Smrg fi 40130bd37d32Smrg else 40140bd37d32Smrg continue 40150bd37d32Smrg fi 40160bd37d32Smrg fi 40170bd37d32Smrg if test "x$ICON_THEME" != xno 40180bd37d32Smrg then 4019f2e35a3aSmrg cf_base=`basename "$cf_left"` 40200bd37d32Smrg cf_trim=`echo "$cf_base" | sed -e 's/_[[0-9]][[0-9]]x[[0-9]][[0-9]]\././'` 402101037d57Smrg case "x${cf_base}" in 402201037d57Smrg (*:*) 40230bd37d32Smrg cf_next=$cf_base 40240bd37d32Smrg # user-defined mapping 40250bd37d32Smrg ;; 402601037d57Smrg (*.png) 40270bd37d32Smrg 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'` 40280bd37d32Smrg if test -z "$cf_size" 40290bd37d32Smrg then 40300bd37d32Smrg AC_MSG_WARN(cannot determine size of $cf_left) 40310bd37d32Smrg continue 40320bd37d32Smrg fi 40330bd37d32Smrg cf_next="$cf_size/apps/$cf_trim" 40340bd37d32Smrg ;; 403501037d57Smrg (*.svg) 40360bd37d32Smrg cf_next="scalable/apps/$cf_trim" 40370bd37d32Smrg ;; 403801037d57Smrg (*.xpm) 40390bd37d32Smrg CF_VERBOSE(ignored XPM file in icon theme) 40400bd37d32Smrg continue 40410bd37d32Smrg ;; 404201037d57Smrg (*_[[0-9]][[0-9]]*x[[0-9]][[0-9]]*.*) 40430bd37d32Smrg cf_size=`echo "$cf_left"|sed -e 's/^.*_\([[0-9]][[0-9]]*x[[0-9]][[0-9]]*\)\..*$/\1/'` 40440bd37d32Smrg cf_left=`echo "$cf_left"|sed -e 's/^\(.*\)_\([[0-9]][[0-9]]*x[[0-9]][[0-9]]*\)\(\..*\)$/\1\3/'` 40450bd37d32Smrg cf_next="$cf_size/apps/$cf_base" 40460bd37d32Smrg ;; 40470bd37d32Smrg esac 40480bd37d32Smrg CF_VERBOSE(adding $cf_next) 40490bd37d32Smrg cf_icon="${cf_icon}:${cf_next}" 40500bd37d32Smrg fi 40510bd37d32Smrg test -n "$ICON_LIST" && ICON_LIST="$ICON_LIST " 40520bd37d32Smrg ICON_LIST="$ICON_LIST${cf_icon}" 40530bd37d32Smrg if test -z "$ICON_NAME" 40540bd37d32Smrg then 4055f2e35a3aSmrg ICON_NAME=`basename "$cf_icon" | sed -e 's/[[.:]].*//'` 40560bd37d32Smrg fi 40570bd37d32Smrg done 40580bd37d32Smrgdone 40590bd37d32Smrg 40600bd37d32Smrgif test -n "$verbose" 40610bd37d32Smrgthen 40620bd37d32Smrg AC_MSG_CHECKING(result) 40630bd37d32Smrgfi 40640bd37d32SmrgAC_MSG_RESULT($ICON_LIST) 40650bd37d32Smrg 40660bd37d32Smrgif test -z "$ICON_LIST" 40670bd37d32Smrgthen 40680bd37d32Smrg AC_MSG_ERROR(no icons found) 40690bd37d32Smrgfi 40700bd37d32Smrg]) 40710bd37d32Smrg 40720bd37d32SmrgAC_MSG_CHECKING(for icon name) 40730bd37d32SmrgAC_MSG_RESULT($ICON_NAME) 40740bd37d32Smrg 40750bd37d32SmrgAC_SUBST(ICON_FORMAT) 40760bd37d32SmrgAC_SUBST(ICON_THEME) 40770bd37d32SmrgAC_SUBST(ICON_LIST) 40780bd37d32SmrgAC_SUBST(ICON_NAME) 40790bd37d32Smrg])dnl 40800bd37d32Smrgdnl --------------------------------------------------------------------------- 408101037d57Smrgdnl CF_WITH_IMAKE_CFLAGS version: 10 updated: 2015/04/12 15:39:00 4082d522f475Smrgdnl -------------------- 4083d522f475Smrgdnl xterm and similar programs build more readily when propped up with imake's 4084d522f475Smrgdnl hand-tuned definitions. If we do not use imake, provide fallbacks for the 4085d522f475Smrgdnl most common definitions that we're not likely to do by autoconf tests. 4086d522f475SmrgAC_DEFUN([CF_WITH_IMAKE_CFLAGS],[ 4087d522f475SmrgAC_REQUIRE([CF_ENABLE_NARROWPROTO]) 4088d522f475Smrg 4089d522f475SmrgAC_MSG_CHECKING(if we should use imake to help) 4090d522f475SmrgCF_ARG_DISABLE(imake, 4091d522f475Smrg [ --disable-imake disable use of imake for definitions], 4092d522f475Smrg [enable_imake=no], 4093d522f475Smrg [enable_imake=yes]) 4094d522f475SmrgAC_MSG_RESULT($enable_imake) 4095d522f475Smrg 4096d522f475Smrgif test "$enable_imake" = yes ; then 409720d2c4d2Smrg CF_IMAKE_CFLAGS(ifelse([$1],,,[$1])) 4098d522f475Smrgfi 4099d522f475Smrg 4100d522f475Smrgif test -n "$IMAKE" && test -n "$IMAKE_CFLAGS" ; then 4101d522f475Smrg CF_ADD_CFLAGS($IMAKE_CFLAGS) 4102d522f475Smrgelse 4103d522f475Smrg IMAKE_CFLAGS= 4104d522f475Smrg IMAKE_LOADFLAGS= 4105d522f475Smrg CF_VERBOSE(make fallback definitions) 4106d522f475Smrg 4107d522f475Smrg # We prefer config.guess' values when we can get them, to avoid 4108d522f475Smrg # inconsistent results with uname (AIX for instance). However, 4109d522f475Smrg # config.guess is not always consistent either. 4110d522f475Smrg case $host_os in 411101037d57Smrg (*[[0-9]].[[0-9]]*) 4112d522f475Smrg UNAME_RELEASE="$host_os" 4113d522f475Smrg ;; 411401037d57Smrg (*) 4115d522f475Smrg UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown 4116d522f475Smrg ;; 4117d522f475Smrg esac 4118d522f475Smrg 4119d522f475Smrg case .$UNAME_RELEASE in 412001037d57Smrg (*[[0-9]].[[0-9]]*) 4121d522f475Smrg OSMAJORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/\..*//'` 4122d522f475Smrg OSMINORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/^[[^.]]*\.//' -e 's/\..*//' -e 's/[[^0-9]].*//' ` 4123d522f475Smrg test -z "$OSMAJORVERSION" && OSMAJORVERSION=1 4124d522f475Smrg test -z "$OSMINORVERSION" && OSMINORVERSION=0 4125d522f475Smrg IMAKE_CFLAGS="-DOSMAJORVERSION=$OSMAJORVERSION -DOSMINORVERSION=$OSMINORVERSION $IMAKE_CFLAGS" 4126d522f475Smrg ;; 4127d522f475Smrg esac 4128d522f475Smrg 4129d522f475Smrg # FUNCPROTO is standard with X11R6, but XFree86 drops it, leaving some 4130d522f475Smrg # fallback/fragments for NeedPrototypes, etc. 4131d522f475Smrg IMAKE_CFLAGS="-DFUNCPROTO=15 $IMAKE_CFLAGS" 4132d522f475Smrg 4133d522f475Smrg # If this is not set properly, Xaw's scrollbars will not work 4134d522f475Smrg if test "$enable_narrowproto" = yes ; then 4135d522f475Smrg IMAKE_CFLAGS="-DNARROWPROTO=1 $IMAKE_CFLAGS" 4136d522f475Smrg fi 4137d522f475Smrg 4138d522f475Smrg # Other special definitions: 4139d522f475Smrg case $host_os in 414001037d57Smrg (aix*) 4141d522f475Smrg # imake on AIX 5.1 defines AIXV3. really. 4142d522f475Smrg IMAKE_CFLAGS="-DAIXV3 -DAIXV4 $IMAKE_CFLAGS" 4143d522f475Smrg ;; 414401037d57Smrg (irix[[56]].*) 4145d522f475Smrg # these are needed to make SIGWINCH work in xterm 4146d522f475Smrg IMAKE_CFLAGS="-DSYSV -DSVR4 $IMAKE_CFLAGS" 4147d522f475Smrg ;; 4148d522f475Smrg esac 4149d522f475Smrg 4150d522f475Smrg CF_ADD_CFLAGS($IMAKE_CFLAGS) 4151d522f475Smrg 4152d522f475Smrg AC_SUBST(IMAKE_CFLAGS) 4153d522f475Smrg AC_SUBST(IMAKE_LOADFLAGS) 4154d522f475Smrgfi 4155d522f475Smrg])dnl 4156d522f475Smrgdnl --------------------------------------------------------------------------- 4157f2e35a3aSmrgdnl CF_WITH_MAN2HTML version: 12 updated: 2021/01/03 18:30:50 415801037d57Smrgdnl ---------------- 4159f2e35a3aSmrgdnl Check for man2html and groff. Prefer man2html over groff, but use groff 4160f2e35a3aSmrgdnl as a fallback. See 4161f2e35a3aSmrgdnl 4162f2e35a3aSmrgdnl http://invisible-island.net/scripts/man2html.html 4163f2e35a3aSmrgdnl 416401037d57Smrgdnl Generate a shell script which hides the differences between the two. 416501037d57Smrgdnl 416601037d57Smrgdnl We name that "man2html.tmp". 416701037d57Smrgdnl 416801037d57Smrgdnl The shell script can be removed later, e.g., using "make distclean". 416901037d57SmrgAC_DEFUN([CF_WITH_MAN2HTML],[ 4170f2e35a3aSmrgAC_REQUIRE([CF_PROG_GROFF])dnl 4171f2e35a3aSmrgAC_REQUIRE([AC_PROG_FGREP])dnl 4172f2e35a3aSmrg 4173f2e35a3aSmrgcase "x${with_man2html}" in 4174f2e35a3aSmrg(xno) 4175f2e35a3aSmrg cf_man2html=no 4176f2e35a3aSmrg ;; 4177f2e35a3aSmrg(x|xyes) 4178f2e35a3aSmrg AC_PATH_PROG(cf_man2html,man2html,no) 4179f2e35a3aSmrg case "x$cf_man2html" in 4180f2e35a3aSmrg (x/*) 4181f2e35a3aSmrg AC_MSG_CHECKING(for the modified Earl Hood script) 4182f2e35a3aSmrg if ( $cf_man2html -help 2>&1 | grep 'Make an index of headers at the end' >/dev/null ) 4183f2e35a3aSmrg then 4184f2e35a3aSmrg cf_man2html_ok=yes 4185f2e35a3aSmrg else 4186f2e35a3aSmrg cf_man2html=no 4187f2e35a3aSmrg cf_man2html_ok=no 4188f2e35a3aSmrg fi 4189f2e35a3aSmrg AC_MSG_RESULT($cf_man2html_ok) 4190f2e35a3aSmrg ;; 4191f2e35a3aSmrg (*) 4192f2e35a3aSmrg cf_man2html=no 4193f2e35a3aSmrg ;; 4194f2e35a3aSmrg esac 4195f2e35a3aSmrgesac 419601037d57Smrg 419701037d57SmrgAC_MSG_CHECKING(for program to convert manpage to html) 419801037d57SmrgAC_ARG_WITH(man2html, 419901037d57Smrg [ --with-man2html=XXX use XXX rather than groff], 420001037d57Smrg [cf_man2html=$withval], 4201f2e35a3aSmrg [cf_man2html=$cf_man2html]) 420201037d57Smrg 420301037d57Smrgcf_with_groff=no 420401037d57Smrg 420501037d57Smrgcase $cf_man2html in 420601037d57Smrg(yes) 420701037d57Smrg AC_MSG_RESULT(man2html) 420801037d57Smrg AC_PATH_PROG(cf_man2html,man2html,no) 420901037d57Smrg ;; 421001037d57Smrg(no|groff|*/groff*) 421101037d57Smrg cf_with_groff=yes 421201037d57Smrg cf_man2html=$GROFF_PATH 421301037d57Smrg AC_MSG_RESULT($cf_man2html) 421401037d57Smrg ;; 421501037d57Smrg(*) 421601037d57Smrg AC_MSG_RESULT($cf_man2html) 421701037d57Smrg ;; 421801037d57Smrgesac 421901037d57Smrg 422001037d57SmrgMAN2HTML_TEMP="man2html.tmp" 422101037d57Smrg cat >$MAN2HTML_TEMP <<CF_EOF 42222e4f8982Smrg#!$SHELL 422301037d57Smrg# Temporary script generated by CF_WITH_MAN2HTML 422401037d57Smrg# Convert inputs to html, sending result to standard output. 422501037d57Smrg# 422601037d57Smrg# Parameters: 42272e4f8982Smrg# \${1} = rootname of file to convert 42282e4f8982Smrg# \${2} = suffix of file to convert, e.g., "1" 42292e4f8982Smrg# \${3} = macros to use, e.g., "man" 423001037d57Smrg# 423101037d57SmrgROOT=\[$]1 423201037d57SmrgTYPE=\[$]2 423301037d57SmrgMACS=\[$]3 423401037d57Smrg 423501037d57Smrgunset LANG 423601037d57Smrgunset LC_ALL 423701037d57Smrgunset LC_CTYPE 423801037d57Smrgunset LANGUAGE 423901037d57SmrgGROFF_NO_SGR=stupid 424001037d57Smrgexport GROFF_NO_SGR 424101037d57Smrg 424201037d57SmrgCF_EOF 424301037d57Smrg 4244f2e35a3aSmrgNROFF_OPTS= 424501037d57Smrgif test "x$cf_with_groff" = xyes 424601037d57Smrgthen 424701037d57Smrg MAN2HTML_NOTE="$GROFF_NOTE" 424801037d57Smrg MAN2HTML_PATH="$GROFF_PATH" 424901037d57Smrg cat >>$MAN2HTML_TEMP <<CF_EOF 4250f2e35a3aSmrg$SHELL -c "$TBL_PATH \${ROOT}.\${TYPE} | $GROFF_PATH -P -o0 -I\${ROOT}_ -Thtml -\${MACS}" 425101037d57SmrgCF_EOF 425201037d57Smrgelse 4253f2e35a3aSmrg # disable hyphenation if this is groff 4254f2e35a3aSmrg if test "x$GROFF_PATH" != xno 4255f2e35a3aSmrg then 4256f2e35a3aSmrg AC_MSG_CHECKING(if nroff is really groff) 4257f2e35a3aSmrg cf_check_groff="`$NROFF_PATH --version 2>/dev/null | grep groff`" 4258f2e35a3aSmrg test -n "$cf_check_groff" && cf_check_groff=yes 4259f2e35a3aSmrg test -n "$cf_check_groff" || cf_check_groff=no 4260f2e35a3aSmrg AC_MSG_RESULT($cf_check_groff) 4261f2e35a3aSmrg test "x$cf_check_groff" = xyes && NROFF_OPTS="-rHY=0" 4262f2e35a3aSmrg fi 426301037d57Smrg MAN2HTML_NOTE="" 426401037d57Smrg CF_PATH_SYNTAX(cf_man2html) 426501037d57Smrg MAN2HTML_PATH="$cf_man2html" 426601037d57Smrg AC_MSG_CHECKING(for $cf_man2html top/bottom margins) 426701037d57Smrg 426801037d57Smrg # for this example, expect 3 lines of content, the remainder is head/foot 426901037d57Smrg cat >conftest.in <<CF_EOF 427001037d57Smrg.TH HEAD1 HEAD2 HEAD3 HEAD4 HEAD5 427101037d57Smrg.SH SECTION 427201037d57SmrgMARKER 427301037d57SmrgCF_EOF 427401037d57Smrg 4275f2e35a3aSmrg LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out 427601037d57Smrg 4277f2e35a3aSmrg cf_man2html_1st="`${FGREP-fgrep} -n MARKER conftest.out |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`" 4278f2e35a3aSmrg cf_man2html_top=`expr "$cf_man2html_1st" - 2` 4279f2e35a3aSmrg cf_man2html_bot="`wc -l conftest.out |sed -e 's/[[^0-9]]//g'`" 4280f2e35a3aSmrg cf_man2html_bot=`expr "$cf_man2html_bot" - 2 - "$cf_man2html_top"` 428101037d57Smrg cf_man2html_top_bot="-topm=$cf_man2html_top -botm=$cf_man2html_bot" 428201037d57Smrg 428301037d57Smrg AC_MSG_RESULT($cf_man2html_top_bot) 428401037d57Smrg 428501037d57Smrg AC_MSG_CHECKING(for pagesize to use) 428601037d57Smrg for cf_block in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 428701037d57Smrg do 428801037d57Smrg cat >>conftest.in <<CF_EOF 428901037d57Smrg.nf 429001037d57Smrg0 429101037d57Smrg1 429201037d57Smrg2 429301037d57Smrg3 429401037d57Smrg4 429501037d57Smrg5 429601037d57Smrg6 429701037d57Smrg7 429801037d57Smrg8 429901037d57Smrg9 430001037d57SmrgCF_EOF 430101037d57Smrg done 430201037d57Smrg 4303f2e35a3aSmrg LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out 4304f2e35a3aSmrg cf_man2html_page="`${FGREP-fgrep} -n HEAD1 conftest.out |sed -n '$p' |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`" 430501037d57Smrg test -z "$cf_man2html_page" && cf_man2html_page=99999 430601037d57Smrg test "$cf_man2html_page" -gt 100 && cf_man2html_page=99999 430701037d57Smrg 430801037d57Smrg rm -rf conftest* 430901037d57Smrg AC_MSG_RESULT($cf_man2html_page) 431001037d57Smrg 431101037d57Smrg cat >>$MAN2HTML_TEMP <<CF_EOF 431201037d57Smrg: \${MAN2HTML_PATH=$MAN2HTML_PATH} 4313f2e35a3aSmrgMAN2HTML_OPTS="\$MAN2HTML_OPTS -index -title=\"\$ROOT(\$TYPE)\" -compress -pgsize $cf_man2html_page" 431401037d57Smrgcase \${TYPE} in 431501037d57Smrg(ms) 4316f2e35a3aSmrg $TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH -topm=0 -botm=0 \$MAN2HTML_OPTS 431701037d57Smrg ;; 431801037d57Smrg(*) 4319f2e35a3aSmrg $TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH $cf_man2html_top_bot \$MAN2HTML_OPTS 432001037d57Smrg ;; 432101037d57Smrgesac 432201037d57SmrgCF_EOF 432301037d57Smrgfi 432401037d57Smrg 432501037d57Smrgchmod 700 $MAN2HTML_TEMP 432601037d57Smrg 432701037d57SmrgAC_SUBST(MAN2HTML_NOTE) 432801037d57SmrgAC_SUBST(MAN2HTML_PATH) 432901037d57SmrgAC_SUBST(MAN2HTML_TEMP) 433001037d57Smrg])dnl 433101037d57Smrgdnl --------------------------------------------------------------------------- 4332f2e35a3aSmrgdnl CF_WITH_PCRE version: 12 updated: 2017/07/29 22:57:34 4333d522f475Smrgdnl ------------ 4334d522f475Smrgdnl Add PCRE (Perl-compatible regular expressions) to the build if it is 4335d522f475Smrgdnl available and the user requests it. Assume the application will otherwise 4336d522f475Smrgdnl use the POSIX interface. 4337d522f475Smrgdnl 4338d522f475Smrgdnl TODO allow $withval to specify package location 4339d522f475SmrgAC_DEFUN([CF_WITH_PCRE], 4340d522f475Smrg[ 434120d2c4d2SmrgAC_REQUIRE([CF_PKG_CONFIG]) 434220d2c4d2Smrg 4343d522f475SmrgAC_MSG_CHECKING(if you want to use PCRE for regular-expressions) 4344d522f475SmrgAC_ARG_WITH(pcre, 4345d522f475Smrg [ --with-pcre use PCRE for regular-expressions]) 4346d522f475Smrgtest -z "$with_pcre" && with_pcre=no 4347d522f475SmrgAC_MSG_RESULT($with_pcre) 4348d522f475Smrg 4349d522f475Smrgif test "$with_pcre" != no ; then 435020d2c4d2Smrg CF_TRY_PKG_CONFIG(libpcre,,[ 435120d2c4d2Smrg AC_CHECK_LIB(pcre,pcre_compile,, 435220d2c4d2Smrg AC_MSG_ERROR(Cannot find PCRE library))]) 435320d2c4d2Smrg 4354f2e35a3aSmrg AC_DEFINE(HAVE_LIB_PCRE,1,[Define to 1 if we can/should compile with the PCRE library]) 435520d2c4d2Smrg 4356f2e35a3aSmrg case $LIBS in 4357f2e35a3aSmrg (*pcreposix*) 4358f2e35a3aSmrg ;; 4359f2e35a3aSmrg (*) 4360f2e35a3aSmrg AC_CHECK_LIB(pcreposix,pcreposix_regcomp, 4361f2e35a3aSmrg [AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h]) 4362f2e35a3aSmrg CF_ADD_LIB(pcreposix)], 4363f2e35a3aSmrg [AC_CHECK_LIB(pcreposix,regcomp,[ 4364f2e35a3aSmrg AC_DEFINE(HAVE_PCREPOSIX_H,1,[Define to 1 if we should include pcreposix.h]) 4365f2e35a3aSmrg CF_ADD_LIB(pcreposix)], 4366f2e35a3aSmrg AC_MSG_ERROR(Cannot find PCRE POSIX library)])) 4367f2e35a3aSmrg ;; 4368f2e35a3aSmrg esac 4369f2e35a3aSmrgfi 4370f2e35a3aSmrg])dnl 4371f2e35a3aSmrgdnl --------------------------------------------------------------------------- 4372a5ae21e4Smrgdnl CF_WITH_PCRE2 version: 6 updated: 2021/08/11 20:35:34 4373f2e35a3aSmrgdnl ------------- 4374f2e35a3aSmrgdnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is 4375f2e35a3aSmrgdnl available and the user requests it. Assume the application will otherwise 4376f2e35a3aSmrgdnl use the POSIX interface. 4377f2e35a3aSmrgdnl 4378f2e35a3aSmrgdnl TODO allow $withval to specify package location 4379f2e35a3aSmrgAC_DEFUN([CF_WITH_PCRE2], 4380f2e35a3aSmrg[ 4381f2e35a3aSmrgAC_REQUIRE([CF_PKG_CONFIG]) 4382f2e35a3aSmrg 4383f2e35a3aSmrgAC_MSG_CHECKING(if you want to use PCRE2 for regular-expressions) 4384f2e35a3aSmrgAC_ARG_WITH(pcre2, 4385f2e35a3aSmrg [ --with-pcre2 use PCRE2 for regular-expressions]) 4386f2e35a3aSmrgtest -z "$with_pcre2" && with_pcre2=no 4387f2e35a3aSmrgAC_MSG_RESULT($with_pcre2) 4388f2e35a3aSmrg 4389f2e35a3aSmrgif test "x$with_pcre2" != xno ; then 4390f2e35a3aSmrg cf_with_pcre2_ok=no 4391f2e35a3aSmrg for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre 4392f2e35a3aSmrg do 4393f2e35a3aSmrg CF_TRY_PKG_CONFIG($cf_with_pcre2,[cf_with_pcre2_ok=yes; break]) 4394f2e35a3aSmrg done 4395f2e35a3aSmrg cf_with_pcre2_ok=yes || AC_MSG_ERROR(Cannot find PCRE2 library) 4396f2e35a3aSmrg 4397f2e35a3aSmrg AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library]) 4398f2e35a3aSmrg 4399f2e35a3aSmrg # if pkgconfig gave no results, look for the libraries directly 4400f2e35a3aSmrg case "$LIBS" in 4401f2e35a3aSmrg (*pcre2-posix*|*pcreposix*) 4402f2e35a3aSmrg ;; 4403f2e35a3aSmrg (*) 4404f2e35a3aSmrg AC_CHECK_LIB(pcre2-posix,regcomp,[ 4405f2e35a3aSmrg CF_ADD_LIB(pcre2-posix)], 4406f2e35a3aSmrg [AC_CHECK_LIB(pcreposix,regcomp,[ 4407f2e35a3aSmrg CF_ADD_LIB(pcreposix) 4408f2e35a3aSmrg ],[AC_MSG_ERROR(Cannot find PCRE2 POSIX library)])]) 4409f2e35a3aSmrg ;; 4410f2e35a3aSmrg esac 4411f2e35a3aSmrg 4412f2e35a3aSmrg # either way, check for the library header files 4413f2e35a3aSmrg AC_CHECK_HEADERS(pcre2posix.h pcreposix.h) 4414a5ae21e4Smrg AC_CHECK_FUNCS(PCRE2regcomp) 4415d522f475Smrgfi 4416d522f475Smrg])dnl 4417d522f475Smrgdnl --------------------------------------------------------------------------- 44180bd37d32Smrgdnl CF_WITH_PIXMAPDIR version: 3 updated: 2012/07/22 09:18:02 44190bd37d32Smrgdnl ----------------- 44200bd37d32Smrgdnl Handle configure option "--with-pixmapdir", setting these shell variables: 44210bd37d32Smrgdnl 44220bd37d32Smrgdnl $PIXMAPDIR is the option value, used for installing pixmap files. 44230bd37d32Smrgdnl $no_pixmapdir is a "#" (comment) if "--without-pixmapdir" is given. 44240bd37d32SmrgAC_DEFUN([CF_WITH_PIXMAPDIR],[ 44250bd37d32SmrgAC_MSG_CHECKING(for directory to install pixmaps) 44260bd37d32SmrgAC_ARG_WITH(pixmapdir, 44270bd37d32Smrg [ --with-pixmapdir=DIR directory in which to install pixmaps (DATADIR/pixmaps)], 44280bd37d32Smrg [PIXMAPDIR=$withval], 44290bd37d32Smrg [test -z "$PIXMAPDIR" && PIXMAPDIR='${datadir}/pixmaps']) 44300bd37d32Smrg 44310bd37d32Smrgif test "x[$]PIXMAPDIR" = xauto 44320bd37d32Smrgthen 44330bd37d32Smrg PIXMAPDIR='${datadir}/pixmaps' 44340bd37d32Smrg for cf_path in \ 44350bd37d32Smrg /usr/share/pixmaps \ 44360bd37d32Smrg /usr/X11R6/share/pixmaps 44370bd37d32Smrg do 44380bd37d32Smrg if test -d "$cf_path" ; then 44390bd37d32Smrg PIXMAPDIR="$cf_path" 44400bd37d32Smrg break 44410bd37d32Smrg fi 44420bd37d32Smrg done 44430bd37d32Smrgelse 44440bd37d32Smrg cf_path=$PIXMAPDIR 44450bd37d32Smrg CF_PATH_SYNTAX(cf_path) 44460bd37d32Smrgfi 44470bd37d32SmrgAC_MSG_RESULT($PIXMAPDIR) 44480bd37d32SmrgAC_SUBST(PIXMAPDIR) 44490bd37d32Smrg 44500bd37d32Smrgno_pixmapdir= 44510bd37d32Smrgif test "$PIXMAPDIR" = no 44520bd37d32Smrgthen 44530bd37d32Smrg no_pixmapdir="#" 44540bd37d32Smrgelse 44550bd37d32Smrg EXTRA_INSTALL_DIRS="$EXTRA_INSTALL_DIRS \$(PIXMAPDIR)" 44560bd37d32Smrgfi 44570bd37d32SmrgAC_SUBST(no_pixmapdir) 44580bd37d32Smrg])dnl 44590bd37d32Smrgdnl --------------------------------------------------------------------------- 44600bd37d32Smrgdnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21 44610bd37d32Smrgdnl ---------------- 44620bd37d32SmrgAC_DEFUN([CF_WITH_VALGRIND],[ 44630bd37d32SmrgCF_NO_LEAKS_OPTION(valgrind, 44640bd37d32Smrg [ --with-valgrind test: use valgrind], 44650bd37d32Smrg [USE_VALGRIND]) 44660bd37d32Smrg])dnl 44670bd37d32Smrgdnl --------------------------------------------------------------------------- 44682e4f8982Smrgdnl CF_WITH_XINERAMA version: 1 updated: 2016/05/28 14:41:12 44692e4f8982Smrgdnl ---------------- 44702e4f8982SmrgAC_DEFUN([CF_WITH_XINERAMA], 44712e4f8982Smrg[ 44722e4f8982SmrgAC_MSG_CHECKING(if you want to use the Xinerama extension) 44732e4f8982SmrgAC_ARG_WITH(xinerama, 44742e4f8982Smrg[ --without-xinerama do not use Xinerama extension for multiscreen support], 44752e4f8982Smrg [cf_with_xinerama="$withval"], 44762e4f8982Smrg [cf_with_xinerama=yes]) 44772e4f8982SmrgAC_MSG_RESULT($cf_with_xinerama) 44782e4f8982Smrgif test "$cf_with_xinerama" = yes; then 44792e4f8982Smrg CF_XINERAMA 44802e4f8982Smrgfi 44812e4f8982Smrg])dnl 44822e4f8982Smrgdnl --------------------------------------------------------------------------- 44830bd37d32Smrgdnl CF_WITH_XPM version: 3 updated: 2012/10/04 06:57:36 44840bd37d32Smrgdnl ----------- 44850bd37d32Smrgdnl Test for Xpm library, update compiler/loader flags if it is wanted and 44860bd37d32Smrgdnl found. 44870bd37d32Smrgdnl 44880bd37d32Smrgdnl Also sets ICON_SUFFIX 44890bd37d32SmrgAC_DEFUN([CF_WITH_XPM], 44900bd37d32Smrg[ 44910bd37d32SmrgICON_SUFFIX=.xbm 44920bd37d32Smrg 44930bd37d32Smrgcf_save_cppflags="${CPPFLAGS}" 44940bd37d32Smrgcf_save_ldflags="${LDFLAGS}" 44950bd37d32Smrg 44960bd37d32SmrgAC_MSG_CHECKING(if you want to use the Xpm library for colored icon) 44970bd37d32SmrgAC_ARG_WITH(xpm, 44980bd37d32Smrg[ --with-xpm=DIR use Xpm library for colored icon, may specify path], 44990bd37d32Smrg [cf_Xpm_library="$withval"], 45000bd37d32Smrg [cf_Xpm_library=yes]) 45010bd37d32SmrgAC_MSG_RESULT($cf_Xpm_library) 45020bd37d32Smrg 45030bd37d32Smrgif test "$cf_Xpm_library" != no ; then 45040bd37d32Smrg if test "$cf_Xpm_library" != yes ; then 45050bd37d32Smrg CPPFLAGS="$CPPFLAGS -I$withval/include" 45060bd37d32Smrg LDFLAGS="$LDFLAGS -L$withval/lib" 45070bd37d32Smrg fi 45080bd37d32Smrg AC_CHECK_HEADER(X11/xpm.h,[ 45090bd37d32Smrg AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData,[ 45100bd37d32Smrg AC_DEFINE(HAVE_LIBXPM,1,[Define to 1 if we should use Xpm library]) 45110bd37d32Smrg ICON_SUFFIX=.xpm 45120bd37d32Smrg LIBS="-lXpm $LIBS"], 45130bd37d32Smrg [CPPFLAGS="${cf_save_cppflags}" LDFLAGS="${cf_save_ldflags}"], 45140bd37d32Smrg [-lX11 $X_LIBS])], 45150bd37d32Smrg [CPPFLAGS="${cf_save_cppflags}" LDFLAGS="${cf_save_ldflags}"]) 45160bd37d32Smrgfi 45170bd37d32Smrg 45180bd37d32SmrgAC_SUBST(ICON_SUFFIX) 45190bd37d32Smrg])dnl 45200bd37d32Smrgdnl --------------------------------------------------------------------------- 452101037d57Smrgdnl CF_XBOOL_RESULT version: 3 updated: 2015/04/12 15:39:00 45220bd37d32Smrgdnl --------------- 45230bd37d32Smrgdnl Translate an autoconf boolean yes/no into X11's booleans, e.g., True/False. 45240bd37d32Smrgdnl Allow for more than two values, e.g., "maybe", still using the same leading 45250bd37d32Smrgdnl capital convention. 45260bd37d32Smrgdnl 45270bd37d32Smrgdnl $1 = symbol to define 45280bd37d32Smrgdnl $2 = symbol holding value 45290bd37d32Smrgdnl $3 = description 45300bd37d32Smrgdefine([CF_XBOOL_RESULT],[ 45310bd37d32SmrgAC_MSG_RESULT([$]$2) 453201037d57Smrgcase [$]$2 in 453301037d57Smrg(yes) 45340bd37d32Smrg $2=true 45350bd37d32Smrg ;; 453601037d57Smrg(no) 45370bd37d32Smrg $2=false 45380bd37d32Smrg ;; 45390bd37d32Smrgesac 45400bd37d32Smrgcf_xbool1=`echo "[$]$2"|sed -e 's/^\(.\).*/\1/'` 45410bd37d32SmrgCF_UPPER(cf_xbool1,$cf_xbool1) 45420bd37d32Smrgcf_xbool2=`echo "[$]$2"|sed -e 's/^.//'` 45430bd37d32Smrg$2=${cf_xbool1}${cf_xbool2} 45440bd37d32SmrgAC_DEFINE_UNQUOTED($1,[$]$2,$3) 45450bd37d32SmrgAC_SUBST($2) 45460bd37d32Smrg]) 45470bd37d32Smrgdnl --------------------------------------------------------------------------- 454801037d57Smrgdnl CF_XINERAMA version: 2 updated: 2015/02/15 15:18:41 454901037d57Smrgdnl ----------- 455001037d57SmrgAC_DEFUN([CF_XINERAMA],[ 455101037d57SmrgCF_TRY_PKG_CONFIG(xinerama,[ 455201037d57Smrg AC_DEFINE(HAVE_X11_EXTENSIONS_XINERAMA_H)],[ 455301037d57Smrg AC_CHECK_LIB(Xinerama,XineramaQueryScreens, 455401037d57Smrg [CF_ADD_LIB(Xinerama) 455501037d57Smrg AC_CHECK_HEADERS( \ 455601037d57Smrg X11/extensions/Xinerama.h \ 455701037d57Smrg ) 455801037d57Smrg ]) 455901037d57Smrg ]) 456001037d57Smrg])dnl 456101037d57Smrgdnl --------------------------------------------------------------------------- 4562f2e35a3aSmrgdnl CF_XKB_BELL_EXT version: 6 updated: 2020/03/10 18:53:47 4563d522f475Smrgdnl --------------- 4564d522f475Smrgdnl Check for XKB bell extension 4565d522f475SmrgAC_DEFUN([CF_XKB_BELL_EXT],[ 4566f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 4567f2e35a3aSmrg 4568f2e35a3aSmrgCF_SAVE_XTRA_FLAGS([CF_XKB_BELL_EXT]) 4569f2e35a3aSmrg 4570d522f475SmrgAC_CACHE_CHECK(for XKB Bell extension, cf_cv_xkb_bell_ext,[ 4571d522f475SmrgAC_TRY_LINK([ 4572956cc18dSsnj#include <X11/Intrinsic.h> 4573d522f475Smrg#include <X11/XKBlib.h> /* has the prototype */ 4574d522f475Smrg#include <X11/extensions/XKBbells.h> /* has the XkbBI_xxx definitions */ 4575d522f475Smrg],[ 4576956cc18dSsnj int x = (XkbBI_Info |XkbBI_MinorError |XkbBI_MajorError |XkbBI_TerminalBell |XkbBI_MarginBell); 4577f2e35a3aSmrg Atom y = 0; 4578f2e35a3aSmrg (void)x; 4579956cc18dSsnj XkbBell((Display *)0, (Widget)0, 0, y); 4580d522f475Smrg],[cf_cv_xkb_bell_ext=yes],[cf_cv_xkb_bell_ext=no]) 4581d522f475Smrg]) 45820bd37d32Smrgtest "$cf_cv_xkb_bell_ext" = yes && AC_DEFINE(HAVE_XKB_BELL_EXT,1,[Define 1 if we have XKB Bell extension]) 4583f2e35a3aSmrg 4584f2e35a3aSmrgCF_RESTORE_XTRA_FLAGS([CF_XKB_BELL_EXT]) 45850bd37d32Smrg]) 45860bd37d32Smrgdnl --------------------------------------------------------------------------- 4587f2e35a3aSmrgdnl CF_XKB_KEYCODE_TO_KEYSYM version: 3 updated: 2020/03/10 18:53:47 45880bd37d32Smrgdnl ------------------------ 45890bd37d32Smrgdnl Some older vendor-unix systems made a practice of delivering fragments of 45900bd37d32Smrgdnl Xkb, requiring test-compiles. 45910bd37d32SmrgAC_DEFUN([CF_XKB_KEYCODE_TO_KEYSYM],[ 45920bd37d32SmrgAC_CACHE_CHECK(if we can use XkbKeycodeToKeysym, cf_cv_xkb_keycode_to_keysym,[ 45930bd37d32SmrgAC_TRY_COMPILE([ 45940bd37d32Smrg#include <X11/Xlib.h> 45950bd37d32Smrg#include <X11/XKBlib.h> 45960bd37d32Smrg],[ 45970bd37d32Smrg KeySym keysym = XkbKeycodeToKeysym((Display *)0, 0, 0, 0); 4598f2e35a3aSmrg (void)keysym; 45990bd37d32Smrg],[ 46000bd37d32Smrgcf_cv_xkb_keycode_to_keysym=yes 46010bd37d32Smrg],[ 46020bd37d32Smrgcf_cv_xkb_keycode_to_keysym=no 46030bd37d32Smrg]) 46040bd37d32Smrg]) 46050bd37d32Smrg 46060bd37d32Smrgif test $cf_cv_xkb_keycode_to_keysym = yes 46070bd37d32Smrgthen 46080bd37d32Smrg AC_CHECK_FUNCS(XkbKeycodeToKeysym) 46090bd37d32Smrgfi 46100bd37d32Smrg]) 46110bd37d32Smrgdnl --------------------------------------------------------------------------- 46120bd37d32Smrgdnl CF_XKB_QUERY_EXTENSION version: 2 updated: 2012/09/28 20:23:46 46130bd37d32Smrgdnl ---------------------- 46140bd37d32Smrgdnl see ifdef in scrollbar.c - iron out here 46150bd37d32SmrgAC_DEFUN([CF_XKB_QUERY_EXTENSION],[ 46160bd37d32SmrgAC_CACHE_CHECK(if we can use XkbQueryExtension, cf_cv_xkb_query_extension,[ 46170bd37d32SmrgAC_TRY_COMPILE([ 46180bd37d32Smrg#include <X11/Xlib.h> 46190bd37d32Smrg#include <X11/extensions/XKB.h> 46200bd37d32Smrg#include <X11/XKBlib.h> 46210bd37d32Smrg],[ 46220bd37d32Smrg int xkbmajor = XkbMajorVersion; 46230bd37d32Smrg int xkbminor = XkbMinorVersion; 46240bd37d32Smrg int xkbopcode, xkbevent, xkberror; 46250bd37d32Smrg 46260bd37d32Smrg if (XkbLibraryVersion(&xkbmajor, &xkbminor) 46270bd37d32Smrg && XkbQueryExtension((Display *)0, 46280bd37d32Smrg &xkbopcode, 46290bd37d32Smrg &xkbevent, 46300bd37d32Smrg &xkberror, 46310bd37d32Smrg &xkbmajor, 46320bd37d32Smrg &xkbminor)) 46330bd37d32Smrg return 0; 46340bd37d32Smrg],[ 46350bd37d32Smrgcf_cv_xkb_query_extension=yes 46360bd37d32Smrg],[ 46370bd37d32Smrgcf_cv_xkb_query_extension=no 46380bd37d32Smrg]) 46390bd37d32Smrg]) 46400bd37d32Smrg 46410bd37d32Smrgif test $cf_cv_xkb_query_extension = yes 46420bd37d32Smrgthen 46430bd37d32Smrg AC_CHECK_FUNCS(XkbQueryExtension) 46440bd37d32Smrgfi 4645d522f475Smrg]) 4646d522f475Smrgdnl --------------------------------------------------------------------------- 4647a5ae21e4Smrgdnl CF_XOPEN_SOURCE version: 59 updated: 2021/08/28 15:20:37 4648d522f475Smrgdnl --------------- 4649d522f475Smrgdnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions, 4650d522f475Smrgdnl or adapt to the vendor's definitions to get equivalent functionality, 4651d522f475Smrgdnl without losing the common non-POSIX features. 4652d522f475Smrgdnl 4653d522f475Smrgdnl Parameters: 4654d522f475Smrgdnl $1 is the nominal value for _XOPEN_SOURCE 4655d522f475Smrgdnl $2 is the nominal value for _POSIX_C_SOURCE 4656d522f475SmrgAC_DEFUN([CF_XOPEN_SOURCE],[ 46570bd37d32SmrgAC_REQUIRE([AC_CANONICAL_HOST]) 4658f2e35a3aSmrgAC_REQUIRE([CF_POSIX_VISIBLE]) 4659f2e35a3aSmrg 4660f2e35a3aSmrgif test "$cf_cv_posix_visible" = no; then 4661d522f475Smrg 466220d2c4d2Smrgcf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) 466320d2c4d2Smrgcf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) 466420d2c4d2Smrgcf_xopen_source= 4665d522f475Smrg 4666f2e35a3aSmrgcase "$host_os" in 466701037d57Smrg(aix[[4-7]]*) 466820d2c4d2Smrg cf_xopen_source="-D_ALL_SOURCE" 466920d2c4d2Smrg ;; 4670913cc679Smrg(msys) 4671e39b573cSmrg cf_XOPEN_SOURCE=600 4672e39b573cSmrg ;; 467301037d57Smrg(darwin[[0-8]].*) 467420d2c4d2Smrg cf_xopen_source="-D_APPLE_C_SOURCE" 467520d2c4d2Smrg ;; 467601037d57Smrg(darwin*) 467720d2c4d2Smrg cf_xopen_source="-D_DARWIN_C_SOURCE" 46780bd37d32Smrg cf_XOPEN_SOURCE= 4679d522f475Smrg ;; 4680f2e35a3aSmrg(freebsd*|dragonfly*|midnightbsd*) 4681d522f475Smrg # 5.x headers associate 4682d522f475Smrg # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L 4683d522f475Smrg # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L 4684d522f475Smrg cf_POSIX_C_SOURCE=200112L 4685d522f475Smrg cf_XOPEN_SOURCE=600 468620d2c4d2Smrg cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" 468720d2c4d2Smrg ;; 468801037d57Smrg(hpux11*) 468920d2c4d2Smrg cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" 4690d522f475Smrg ;; 469101037d57Smrg(hpux*) 469220d2c4d2Smrg cf_xopen_source="-D_HPUX_SOURCE" 4693d522f475Smrg ;; 469401037d57Smrg(irix[[56]].*) 469520d2c4d2Smrg cf_xopen_source="-D_SGI_SOURCE" 46960bd37d32Smrg cf_XOPEN_SOURCE= 4697d522f475Smrg ;; 4698913cc679Smrg(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) 4699f2e35a3aSmrg CF_GNU_SOURCE($cf_XOPEN_SOURCE) 4700d522f475Smrg ;; 470101037d57Smrg(minix*) 470201037d57Smrg cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... 470301037d57Smrg ;; 470401037d57Smrg(mirbsd*) 47050bd37d32Smrg # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types 47060bd37d32Smrg cf_XOPEN_SOURCE= 47070bd37d32Smrg CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 4708d522f475Smrg ;; 470901037d57Smrg(netbsd*) 47100bd37d32Smrg cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw 47110bd37d32Smrg ;; 4712ae137402Smrg(openbsd[[6-9]]*) 4713ae137402Smrg # OpenBSD 6.x has broken locale support, both compile-time and runtime. 4714ae137402Smrg # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html 4715ae137402Smrg # Abusing the conformance level is a workaround. 4716ae137402Smrg AC_MSG_WARN(this system does not provide usable locale support) 4717ae137402Smrg cf_xopen_source="-D_BSD_SOURCE" 4718ae137402Smrg cf_XOPEN_SOURCE=700 4719ae137402Smrg ;; 4720ae137402Smrg(openbsd[[4-5]]*) 47210bd37d32Smrg # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw 47220bd37d32Smrg cf_xopen_source="-D_BSD_SOURCE" 47230bd37d32Smrg cf_XOPEN_SOURCE=600 4724d522f475Smrg ;; 472501037d57Smrg(openbsd*) 4726d522f475Smrg # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw 4727d522f475Smrg ;; 472801037d57Smrg(osf[[45]]*) 472920d2c4d2Smrg cf_xopen_source="-D_OSF_SOURCE" 4730d522f475Smrg ;; 473101037d57Smrg(nto-qnx*) 473220d2c4d2Smrg cf_xopen_source="-D_QNX_SOURCE" 4733d522f475Smrg ;; 473401037d57Smrg(sco*) 4735d522f475Smrg # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer 4736d522f475Smrg ;; 473701037d57Smrg(solaris2.*) 473820d2c4d2Smrg cf_xopen_source="-D__EXTENSIONS__" 4739894e0ac8Smrg cf_cv_xopen_source=broken 4740d522f475Smrg ;; 474101037d57Smrg(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) 474201037d57Smrg cf_XOPEN_SOURCE= 474301037d57Smrg cf_POSIX_C_SOURCE= 474401037d57Smrg ;; 474501037d57Smrg(*) 47460bd37d32Smrg CF_TRY_XOPEN_SOURCE 4747d522f475Smrg CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 4748d522f475Smrg ;; 4749d522f475Smrgesac 475020d2c4d2Smrg 475120d2c4d2Smrgif test -n "$cf_xopen_source" ; then 4752a5ae21e4Smrg CF_APPEND_CFLAGS($cf_xopen_source,true) 475320d2c4d2Smrgfi 47540bd37d32Smrg 47550bd37d32Smrgdnl In anything but the default case, we may have system-specific setting 47560bd37d32Smrgdnl which is still not guaranteed to provide all of the entrypoints that 47570bd37d32Smrgdnl _XOPEN_SOURCE would yield. 47580bd37d32Smrgif test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then 47590bd37d32Smrg AC_MSG_CHECKING(if _XOPEN_SOURCE really is set) 47600bd37d32Smrg AC_TRY_COMPILE([#include <stdlib.h>],[ 47610bd37d32Smrg#ifndef _XOPEN_SOURCE 47620bd37d32Smrgmake an error 47630bd37d32Smrg#endif], 47640bd37d32Smrg [cf_XOPEN_SOURCE_set=yes], 47650bd37d32Smrg [cf_XOPEN_SOURCE_set=no]) 47660bd37d32Smrg AC_MSG_RESULT($cf_XOPEN_SOURCE_set) 4767f2e35a3aSmrg if test "$cf_XOPEN_SOURCE_set" = yes 47680bd37d32Smrg then 47690bd37d32Smrg AC_TRY_COMPILE([#include <stdlib.h>],[ 47700bd37d32Smrg#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE 47710bd37d32Smrgmake an error 47720bd37d32Smrg#endif], 47730bd37d32Smrg [cf_XOPEN_SOURCE_set_ok=yes], 47740bd37d32Smrg [cf_XOPEN_SOURCE_set_ok=no]) 4775f2e35a3aSmrg if test "$cf_XOPEN_SOURCE_set_ok" = no 47760bd37d32Smrg then 47770bd37d32Smrg AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) 47780bd37d32Smrg fi 47790bd37d32Smrg else 47800bd37d32Smrg CF_TRY_XOPEN_SOURCE 47810bd37d32Smrg fi 47820bd37d32Smrgfi 4783f2e35a3aSmrgfi # cf_cv_posix_visible 4784d522f475Smrg]) 4785d522f475Smrgdnl --------------------------------------------------------------------------- 4786f2e35a3aSmrgdnl CF_X_ATHENA version: 24 updated: 2020/03/10 18:53:47 4787d522f475Smrgdnl ----------- 4788d522f475Smrgdnl Check for Xaw (Athena) libraries 4789d522f475Smrgdnl 4790d522f475Smrgdnl Sets $cf_x_athena according to the flavor of Xaw which is used. 4791d522f475SmrgAC_DEFUN([CF_X_ATHENA], 479220d2c4d2Smrg[ 47936879286fSmrgcf_x_athena=${cf_x_athena:-Xaw} 4794d522f475Smrg 4795d522f475SmrgAC_MSG_CHECKING(if you want to link with Xaw 3d library) 4796d522f475Smrgwithval= 4797d522f475SmrgAC_ARG_WITH(Xaw3d, 4798d522f475Smrg [ --with-Xaw3d link with Xaw 3d library]) 4799d522f475Smrgif test "$withval" = yes ; then 4800d522f475Smrg cf_x_athena=Xaw3d 4801d522f475Smrg AC_MSG_RESULT(yes) 4802d522f475Smrgelse 4803d522f475Smrg AC_MSG_RESULT(no) 4804d522f475Smrgfi 4805d522f475Smrg 480601037d57SmrgAC_MSG_CHECKING(if you want to link with Xaw 3d xft library) 480701037d57Smrgwithval= 480801037d57SmrgAC_ARG_WITH(Xaw3dxft, 480901037d57Smrg [ --with-Xaw3dxft link with Xaw 3d xft library]) 481001037d57Smrgif test "$withval" = yes ; then 481101037d57Smrg cf_x_athena=Xaw3dxft 481201037d57Smrg AC_MSG_RESULT(yes) 481301037d57Smrgelse 481401037d57Smrg AC_MSG_RESULT(no) 481501037d57Smrgfi 481601037d57Smrg 4817d522f475SmrgAC_MSG_CHECKING(if you want to link with neXT Athena library) 4818d522f475Smrgwithval= 4819d522f475SmrgAC_ARG_WITH(neXtaw, 4820d522f475Smrg [ --with-neXtaw link with neXT Athena library]) 4821d522f475Smrgif test "$withval" = yes ; then 4822d522f475Smrg cf_x_athena=neXtaw 4823d522f475Smrg AC_MSG_RESULT(yes) 4824d522f475Smrgelse 4825d522f475Smrg AC_MSG_RESULT(no) 4826d522f475Smrgfi 4827d522f475Smrg 4828d522f475SmrgAC_MSG_CHECKING(if you want to link with Athena-Plus library) 4829d522f475Smrgwithval= 4830d522f475SmrgAC_ARG_WITH(XawPlus, 4831d522f475Smrg [ --with-XawPlus link with Athena-Plus library]) 4832d522f475Smrgif test "$withval" = yes ; then 4833d522f475Smrg cf_x_athena=XawPlus 4834d522f475Smrg AC_MSG_RESULT(yes) 4835d522f475Smrgelse 4836d522f475Smrg AC_MSG_RESULT(no) 4837d522f475Smrgfi 4838d522f475Smrg 4839d522f475Smrgcf_x_athena_lib="" 4840d522f475Smrg 484120d2c4d2Smrgif test "$PKG_CONFIG" != none ; then 484220d2c4d2Smrg cf_athena_list= 484320d2c4d2Smrg test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" 484420d2c4d2Smrg for cf_athena_pkg in \ 484520d2c4d2Smrg $cf_athena_list \ 484620d2c4d2Smrg ${cf_x_athena} \ 484720d2c4d2Smrg ${cf_x_athena}-devel \ 484820d2c4d2Smrg lib${cf_x_athena} \ 484920d2c4d2Smrg lib${cf_x_athena}-devel 485020d2c4d2Smrg do 485120d2c4d2Smrg CF_TRY_PKG_CONFIG($cf_athena_pkg,[ 485220d2c4d2Smrg cf_x_athena_lib="$cf_pkgconfig_libs" 485320d2c4d2Smrg CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) 485420d2c4d2Smrg AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) 48556879286fSmrg 4856e0a2b6dfSmrg CF_TRIM_X_LIBS 4857e0a2b6dfSmrg 48586879286fSmrgAC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[ 48596879286fSmrgAC_TRY_LINK([ 48606879286fSmrg#include <X11/Xmu/CharSet.h> 48616879286fSmrg],[ 4862f2e35a3aSmrgint check = XmuCompareISOLatin1("big", "small"); 4863f2e35a3aSmrg(void)check; 48646879286fSmrg],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])]) 48656879286fSmrg 48666879286fSmrg if test "$cf_cv_xaw_compat" = no 48676879286fSmrg then 48686879286fSmrg # workaround for broken ".pc" files... 486901037d57Smrg case "$cf_x_athena_lib" in 487001037d57Smrg (*-lXmu*) 48716879286fSmrg ;; 487201037d57Smrg (*) 48736879286fSmrg CF_VERBOSE(work around broken package) 4874e0a2b6dfSmrg cf_save_xmu="$LIBS" 4875e0a2b6dfSmrg cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'` 4876e0a2b6dfSmrg CF_TRY_PKG_CONFIG(xmu,[ 4877e0a2b6dfSmrg LIBS="$cf_save_xmu" 4878e0a2b6dfSmrg CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs) 4879e0a2b6dfSmrg ],[ 4880e0a2b6dfSmrg CF_ADD_LIB_AFTER($cf_first_lib,-lXmu) 4881e0a2b6dfSmrg ]) 4882e0a2b6dfSmrg CF_TRIM_X_LIBS 48836879286fSmrg ;; 48846879286fSmrg esac 48856879286fSmrg fi 48866879286fSmrg 488720d2c4d2Smrg break]) 488820d2c4d2Smrg done 488920d2c4d2Smrgfi 489020d2c4d2Smrg 489120d2c4d2Smrgif test -z "$cf_x_athena_lib" ; then 489220d2c4d2Smrg CF_X_EXT 489320d2c4d2Smrg CF_X_TOOLKIT 489420d2c4d2Smrg CF_X_ATHENA_CPPFLAGS($cf_x_athena) 489520d2c4d2Smrg CF_X_ATHENA_LIBS($cf_x_athena) 489620d2c4d2Smrgfi 4897d522f475Smrg])dnl 4898d522f475Smrgdnl --------------------------------------------------------------------------- 4899f2e35a3aSmrgdnl CF_X_ATHENA_CPPFLAGS version: 9 updated: 2020/12/31 10:54:15 4900d522f475Smrgdnl -------------------- 4901d522f475Smrgdnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of 4902d522f475Smrgdnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. 4903d522f475SmrgAC_DEFUN([CF_X_ATHENA_CPPFLAGS], 4904d522f475Smrg[ 4905f2e35a3aSmrgAC_REQUIRE([AC_PATH_XTRA]) 490620d2c4d2Smrgcf_x_athena_root=ifelse([$1],,Xaw,[$1]) 490720d2c4d2Smrgcf_x_athena_inc="" 4908d522f475Smrg 4909d522f475Smrgfor cf_path in default \ 4910d522f475Smrg /usr/contrib/X11R6 \ 4911d522f475Smrg /usr/contrib/X11R5 \ 4912d522f475Smrg /usr/lib/X11R5 \ 4913d522f475Smrg /usr/local 4914d522f475Smrgdo 491520d2c4d2Smrg if test -z "$cf_x_athena_inc" ; then 4916f2e35a3aSmrg CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS]) 4917d522f475Smrg cf_test=X11/$cf_x_athena_root/SimpleMenu.h 4918f2e35a3aSmrg if test "$cf_path" != default ; then 4919f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include) 4920d522f475Smrg AC_MSG_CHECKING(for $cf_test in $cf_path) 4921d522f475Smrg else 4922d522f475Smrg AC_MSG_CHECKING(for $cf_test) 4923d522f475Smrg fi 4924d522f475Smrg AC_TRY_COMPILE([ 4925d522f475Smrg#include <X11/Intrinsic.h> 4926d522f475Smrg#include <$cf_test>],[], 4927d522f475Smrg [cf_result=yes], 4928d522f475Smrg [cf_result=no]) 4929d522f475Smrg AC_MSG_RESULT($cf_result) 4930f2e35a3aSmrg CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS]) 4931d522f475Smrg if test "$cf_result" = yes ; then 4932f2e35a3aSmrg test "$cf_path" = default && cf_x_athena_inc=default 4933f2e35a3aSmrg test "$cf_path" != default && cf_x_athena_inc="$cf_path/include" 4934d522f475Smrg break 4935d522f475Smrg fi 4936d522f475Smrg fi 4937d522f475Smrgdone 4938d522f475Smrg 493920d2c4d2Smrgif test -z "$cf_x_athena_inc" ; then 4940f2e35a3aSmrg AC_MSG_WARN([Unable to find Athena header files]) 494120d2c4d2Smrgelif test "$cf_x_athena_inc" != default ; then 4942f2e35a3aSmrg CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc) 4943d522f475Smrgfi 4944d522f475Smrg]) 4945d522f475Smrgdnl --------------------------------------------------------------------------- 4946f2e35a3aSmrgdnl CF_X_ATHENA_LIBS version: 13 updated: 2020/01/11 18:16:10 4947d522f475Smrgdnl ---------------- 4948d522f475Smrgdnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of 4949d522f475Smrgdnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. 4950d522f475SmrgAC_DEFUN([CF_X_ATHENA_LIBS], 4951d522f475Smrg[AC_REQUIRE([CF_X_TOOLKIT]) 495220d2c4d2Smrgcf_x_athena_root=ifelse([$1],,Xaw,[$1]) 4953d522f475Smrgcf_x_athena_lib="" 4954d522f475Smrg 4955d522f475Smrgfor cf_path in default \ 4956d522f475Smrg /usr/contrib/X11R6 \ 4957d522f475Smrg /usr/contrib/X11R5 \ 4958d522f475Smrg /usr/lib/X11R5 \ 4959d522f475Smrg /usr/local 4960d522f475Smrgdo 4961d522f475Smrg for cf_lib in \ 49620bd37d32Smrg ${cf_x_athena_root} \ 49630bd37d32Smrg ${cf_x_athena_root}7 \ 49640bd37d32Smrg ${cf_x_athena_root}6 49650bd37d32Smrg do 49660bd37d32Smrg for cf_libs in \ 49670bd37d32Smrg "-l$cf_lib -lXmu" \ 49680bd37d32Smrg "-l$cf_lib -lXpm -lXmu" \ 49690bd37d32Smrg "-l${cf_lib}_s -lXmu_s" 4970d522f475Smrg do 4971f2e35a3aSmrg test -n "$cf_x_athena_lib" && break 4972f2e35a3aSmrg 4973f2e35a3aSmrg CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_LIBS]) 4974f2e35a3aSmrg cf_test=XawSimpleMenuAddGlobalActions 4975f2e35a3aSmrg test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs" 4976f2e35a3aSmrg CF_ADD_LIBS($cf_libs) 4977f2e35a3aSmrg AC_MSG_CHECKING(for $cf_test in $cf_libs) 4978f2e35a3aSmrg AC_TRY_LINK([ 4979a1f3da82Smrg#include <X11/Intrinsic.h> 4980a1f3da82Smrg#include <X11/$cf_x_athena_root/SimpleMenu.h> 4981a1f3da82Smrg],[ 4982a1f3da82Smrg$cf_test((XtAppContext) 0)], 4983f2e35a3aSmrg [cf_result=yes], 4984f2e35a3aSmrg [cf_result=no]) 4985f2e35a3aSmrg AC_MSG_RESULT($cf_result) 4986f2e35a3aSmrg CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_LIBS]) 4987f2e35a3aSmrg 4988f2e35a3aSmrg if test "$cf_result" = yes ; then 4989f2e35a3aSmrg cf_x_athena_lib="$cf_libs" 4990f2e35a3aSmrg break 4991d522f475Smrg fi 49920bd37d32Smrg done # cf_libs 49930bd37d32Smrg test -n "$cf_x_athena_lib" && break 49940bd37d32Smrg done # cf_lib 4995d522f475Smrgdone 4996d522f475Smrg 4997d522f475Smrgif test -z "$cf_x_athena_lib" ; then 4998d522f475Smrg AC_MSG_ERROR( 4999d522f475Smrg[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program]) 5000d522f475Smrgfi 5001d522f475Smrg 5002f2e35a3aSmrgCF_ADD_LIBS($cf_x_athena_lib) 5003d522f475SmrgCF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) 5004d522f475SmrgAC_DEFINE_UNQUOTED($cf_x_athena_LIBS) 5005d522f475Smrg]) 5006d522f475Smrgdnl --------------------------------------------------------------------------- 500720d2c4d2Smrgdnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05 500820d2c4d2Smrgdnl -------- 500920d2c4d2SmrgAC_DEFUN([CF_X_EXT],[ 501020d2c4d2SmrgCF_TRY_PKG_CONFIG(Xext,,[ 501120d2c4d2Smrg AC_CHECK_LIB(Xext,XextCreateExtension, 501220d2c4d2Smrg [CF_ADD_LIB(Xext)])]) 501320d2c4d2Smrg])dnl 501420d2c4d2Smrgdnl --------------------------------------------------------------------------- 5015f2e35a3aSmrgdnl CF_X_EXT_DOUBLE_BUFFER version: 1 updated: 2019/07/18 21:09:40 5016f2e35a3aSmrgdnl ---------------------- 5017f2e35a3aSmrgAC_DEFUN([CF_X_EXT_DOUBLE_BUFFER],[ 5018f2e35a3aSmrgAC_REQUIRE([CF_X_EXT]) 5019f2e35a3aSmrgAC_CHECK_HEADER(X11/extensions/Xdbe.h, 5020f2e35a3aSmrg AC_DEFINE(HAVE_X11_EXTENSIONS_XDBE_H,1,[Define to 1 if we have X11/extensions/Xdbe.h]) 5021f2e35a3aSmrg AC_CHECK_FUNC(XdbeSwapBuffers, 5022f2e35a3aSmrg [AC_DEFINE(HAVE_XDBESWAPBUFFERS,1,[Define to 1 if we have XdbeSwapBuffers]) 5023f2e35a3aSmrg cf_x_ext_double_buffer=yes])) 5024f2e35a3aSmrg])dnl 5025f2e35a3aSmrgdnl --------------------------------------------------------------------------- 5026f2e35a3aSmrgdnl CF_X_FONTCONFIG version: 7 updated: 2020/03/10 18:53:47 50276879286fSmrgdnl --------------- 50286879286fSmrgdnl Check for fontconfig library, a dependency of the X FreeType library. 50296879286fSmrgAC_DEFUN([CF_X_FONTCONFIG], 50306879286fSmrg[ 50316879286fSmrgAC_REQUIRE([CF_X_FREETYPE]) 50326879286fSmrg 5033e39b573cSmrgif test "$cf_cv_found_freetype" = yes ; then 50346879286fSmrgAC_CACHE_CHECK(for usable Xft/fontconfig package,cf_cv_xft_compat,[ 50356879286fSmrgAC_TRY_LINK([ 50366879286fSmrg#include <X11/Xft/Xft.h> 50376879286fSmrg],[ 5038f2e35a3aSmrg XftPattern *pat = 0; 50396879286fSmrg XftPatternBuild(pat, 50406879286fSmrg XFT_FAMILY, XftTypeString, "mono", 50416879286fSmrg (void *) 0); 50426879286fSmrg],[cf_cv_xft_compat=yes],[cf_cv_xft_compat=no]) 50436879286fSmrg]) 50446879286fSmrg 50456879286fSmrgif test "$cf_cv_xft_compat" = no 50466879286fSmrgthen 50476879286fSmrg # workaround for broken ".pc" files used for Xft. 504801037d57Smrg case "$cf_cv_x_freetype_libs" in 504901037d57Smrg (*-lfontconfig*) 50506879286fSmrg ;; 505101037d57Smrg (*) 50526879286fSmrg CF_VERBOSE(work around broken package) 5053e0a2b6dfSmrg cf_save_fontconfig="$LIBS" 5054e0a2b6dfSmrg CF_TRY_PKG_CONFIG(fontconfig,[ 5055e0a2b6dfSmrg CF_ADD_CFLAGS($cf_pkgconfig_incs) 5056e0a2b6dfSmrg LIBS="$cf_save_fontconfig" 5057e0a2b6dfSmrg CF_ADD_LIB_AFTER(-lXft,$cf_pkgconfig_libs) 5058e0a2b6dfSmrg ],[ 5059e0a2b6dfSmrg CF_ADD_LIB_AFTER(-lXft,-lfontconfig) 5060e0a2b6dfSmrg ]) 50616879286fSmrg ;; 50626879286fSmrg esac 50636879286fSmrgfi 5064e39b573cSmrgfi 50656879286fSmrg])dnl 50666879286fSmrgdnl --------------------------------------------------------------------------- 5067f2e35a3aSmrgdnl CF_X_FREETYPE version: 28 updated: 2020/03/10 18:53:47 5068d522f475Smrgdnl ------------- 5069d522f475Smrgdnl Check for X FreeType headers and libraries (XFree86 4.x, etc). 5070d522f475Smrgdnl 5071d522f475Smrgdnl First check for the appropriate config program, since the developers for 5072d522f475Smrgdnl these libraries change their configuration (and config program) more or 5073d522f475Smrgdnl less randomly. If we cannot find the config program, do not bother trying 5074d522f475Smrgdnl to guess the latest variation of include/lib directories. 5075d522f475Smrgdnl 5076d522f475Smrgdnl If either or both of these configure-script options are not given, rely on 5077d522f475Smrgdnl the output of the config program to provide the cflags/libs options: 5078d522f475Smrgdnl --with-freetype-cflags 5079d522f475Smrgdnl --with-freetype-libs 5080d522f475SmrgAC_DEFUN([CF_X_FREETYPE], 5081d522f475Smrg[ 5082956cc18dSsnjAC_REQUIRE([CF_PKG_CONFIG]) 5083956cc18dSsnj 50840bd37d32Smrgcf_cv_x_freetype_incs=no 50850bd37d32Smrgcf_cv_x_freetype_libs=no 5086d522f475Smrgcf_extra_freetype_libs= 5087956cc18dSsnjFREETYPE_CONFIG=none 5088d522f475SmrgFREETYPE_PARAMS= 5089d522f475Smrg 50900bd37d32SmrgAC_MSG_CHECKING(for FreeType configuration script) 50910bd37d32SmrgAC_ARG_WITH(freetype-config, 50920bd37d32Smrg [ --with-freetype-config configure script to use for FreeType], 50930bd37d32Smrg [cf_cv_x_freetype_cfgs="$withval"], 50940bd37d32Smrg [cf_cv_x_freetype_cfgs=auto]) 50950bd37d32Smrgtest -z $cf_cv_x_freetype_cfgs && cf_cv_x_freetype_cfgs=auto 50960bd37d32Smrgtest $cf_cv_x_freetype_cfgs = no && cf_cv_x_freetype_cfgs=none 50970bd37d32SmrgAC_MSG_RESULT($cf_cv_x_freetype_cfgs) 50980bd37d32Smrg 50990bd37d32Smrgcase $cf_cv_x_freetype_cfgs in 510001037d57Smrg(none) 51010bd37d32Smrg AC_MSG_CHECKING(if you specified -D/-I options for FreeType) 51020bd37d32Smrg AC_ARG_WITH(freetype-cflags, 51030bd37d32Smrg [ --with-freetype-cflags -D/-I options for compiling with FreeType], 51040bd37d32Smrg [cf_cv_x_freetype_incs="$with_freetype_cflags"], 51050bd37d32Smrg [cf_cv_x_freetype_incs=no]) 51060bd37d32Smrg AC_MSG_RESULT($cf_cv_x_freetype_incs) 51070bd37d32Smrg 51080bd37d32Smrg AC_MSG_CHECKING(if you specified -L/-l options for FreeType) 51090bd37d32Smrg AC_ARG_WITH(freetype-libs, 51100bd37d32Smrg [ --with-freetype-libs -L/-l options to link FreeType], 51110bd37d32Smrg [cf_cv_x_freetype_libs="$with_freetype_libs"], 51120bd37d32Smrg [cf_cv_x_freetype_libs=no]) 51130bd37d32Smrg AC_MSG_RESULT($cf_cv_x_freetype_libs) 51140bd37d32Smrg ;; 511501037d57Smrg(auto) 51160bd37d32Smrg if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xft; then 51170bd37d32Smrg FREETYPE_CONFIG=$PKG_CONFIG 51180bd37d32Smrg FREETYPE_PARAMS=xft 51190bd37d32Smrg else 51200bd37d32Smrg AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, none) 51210bd37d32Smrg if test "$FREETYPE_CONFIG" != none; then 51220bd37d32Smrg FREETYPE_CONFIG=$FREETYPE_CONFIG 51230bd37d32Smrg cf_extra_freetype_libs="-lXft" 51240bd37d32Smrg else 51250bd37d32Smrg AC_PATH_PROG(FREETYPE_OLD_CONFIG, xft-config, none) 51260bd37d32Smrg if test "$FREETYPE_OLD_CONFIG" != none; then 51270bd37d32Smrg FREETYPE_CONFIG=$FREETYPE_OLD_CONFIG 51280bd37d32Smrg fi 51290bd37d32Smrg fi 51300bd37d32Smrg fi 51310bd37d32Smrg ;; 513201037d57Smrg(pkg*) 51330bd37d32Smrg if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xft; then 51340bd37d32Smrg FREETYPE_CONFIG=$cf_cv_x_freetype_cfgs 51350bd37d32Smrg FREETYPE_PARAMS=xft 51360bd37d32Smrg else 51370bd37d32Smrg AC_MSG_WARN(cannot find pkg-config for Xft) 51380bd37d32Smrg fi 51390bd37d32Smrg ;; 514001037d57Smrg(*) 51410bd37d32Smrg AC_PATH_PROG(FREETYPE_XFT_CONFIG, $cf_cv_x_freetype_cfgs, none) 5142d522f475Smrg if test "$FREETYPE_XFT_CONFIG" != none; then 5143d522f475Smrg FREETYPE_CONFIG=$FREETYPE_XFT_CONFIG 5144d522f475Smrg else 51450bd37d32Smrg AC_MSG_WARN(cannot find config script for Xft) 5146d522f475Smrg fi 51470bd37d32Smrg ;; 51480bd37d32Smrgesac 5149d522f475Smrg 5150956cc18dSsnjif test "$FREETYPE_CONFIG" != none ; then 51510bd37d32Smrg AC_MSG_CHECKING(for FreeType config) 51520bd37d32Smrg AC_MSG_RESULT($FREETYPE_CONFIG $FREETYPE_PARAMS) 5153d522f475Smrg 5154956cc18dSsnj if test "$cf_cv_x_freetype_incs" = no ; then 5155956cc18dSsnj AC_MSG_CHECKING(for $FREETYPE_CONFIG cflags) 5156956cc18dSsnj cf_cv_x_freetype_incs="`$FREETYPE_CONFIG $FREETYPE_PARAMS --cflags 2>/dev/null`" 5157956cc18dSsnj AC_MSG_RESULT($cf_cv_x_freetype_incs) 5158956cc18dSsnj fi 5159d522f475Smrg 5160956cc18dSsnj if test "$cf_cv_x_freetype_libs" = no ; then 5161956cc18dSsnj AC_MSG_CHECKING(for $FREETYPE_CONFIG libs) 5162956cc18dSsnj cf_cv_x_freetype_libs="$cf_extra_freetype_libs `$FREETYPE_CONFIG $FREETYPE_PARAMS --libs 2>/dev/null`" 5163956cc18dSsnj AC_MSG_RESULT($cf_cv_x_freetype_libs) 5164956cc18dSsnj fi 5165d522f475Smrgfi 5166d522f475Smrg 5167d522f475Smrgif test "$cf_cv_x_freetype_incs" = no ; then 5168d522f475Smrg cf_cv_x_freetype_incs= 5169d522f475Smrgfi 5170d522f475Smrg 5171d522f475Smrgif test "$cf_cv_x_freetype_libs" = no ; then 5172d522f475Smrg cf_cv_x_freetype_libs=-lXft 5173d522f475Smrgfi 5174d522f475Smrg 5175d522f475SmrgAC_MSG_CHECKING(if we can link with FreeType libraries) 5176d522f475Smrg 5177d522f475Smrgcf_save_LIBS="$LIBS" 5178d522f475Smrgcf_save_INCS="$CPPFLAGS" 5179d522f475Smrg 518020d2c4d2SmrgCF_ADD_LIBS($cf_cv_x_freetype_libs) 5181956cc18dSsnjCPPFLAGS="$CPPFLAGS $cf_cv_x_freetype_incs" 5182d522f475Smrg 5183d522f475SmrgAC_TRY_LINK([ 5184d522f475Smrg#include <X11/Xlib.h> 5185d522f475Smrg#include <X11/extensions/Xrender.h> 5186d522f475Smrg#include <X11/Xft/Xft.h>],[ 5187f2e35a3aSmrg XftPattern *pat = XftNameParse ("name"); (void)pat], 5188d522f475Smrg [cf_cv_found_freetype=yes], 5189d522f475Smrg [cf_cv_found_freetype=no]) 5190d522f475SmrgAC_MSG_RESULT($cf_cv_found_freetype) 5191d522f475Smrg 5192d522f475SmrgLIBS="$cf_save_LIBS" 5193d522f475SmrgCPPFLAGS="$cf_save_INCS" 5194d522f475Smrg 5195d522f475Smrgif test "$cf_cv_found_freetype" = yes ; then 519620d2c4d2Smrg CF_ADD_LIBS($cf_cv_x_freetype_libs) 5197d522f475Smrg CF_ADD_CFLAGS($cf_cv_x_freetype_incs) 51980bd37d32Smrg AC_DEFINE(XRENDERFONT,1,[Define to 1 if we can/should link with FreeType libraries]) 5199d522f475Smrg 5200d522f475SmrgAC_CHECK_FUNCS( \ 5201d522f475Smrg XftDrawCharSpec \ 5202d522f475Smrg XftDrawSetClip \ 5203d522f475Smrg XftDrawSetClipRectangles \ 5204d522f475Smrg) 5205d522f475Smrg 5206d522f475Smrgelse 5207d522f475Smrg AC_MSG_WARN(No libraries found for FreeType) 5208d522f475Smrg CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//` 5209d522f475Smrgfi 5210d522f475Smrg 5211d522f475Smrg# FIXME: revisit this if needed 5212d522f475SmrgAC_SUBST(HAVE_TYPE_FCCHAR32) 5213d522f475SmrgAC_SUBST(HAVE_TYPE_XFTCHARSPEC) 5214d522f475Smrg]) 5215d522f475Smrgdnl --------------------------------------------------------------------------- 5216f2e35a3aSmrgdnl CF_X_TOOLKIT version: 26 updated: 2021/01/02 09:31:20 5217d522f475Smrgdnl ------------ 5218d522f475Smrgdnl Check for X Toolkit libraries 5219d522f475SmrgAC_DEFUN([CF_X_TOOLKIT], 5220d522f475Smrg[ 5221d522f475SmrgAC_REQUIRE([AC_PATH_XTRA]) 5222d522f475SmrgAC_REQUIRE([CF_CHECK_CACHE]) 5223d522f475Smrg 5224f2e35a3aSmrg# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and 522501037d57Smrg# in some cases has installed dummy files in the former, other cases replaced 522601037d57Smrg# it with a link to the new location). This complicates the configure script. 522701037d57Smrg# Check for that pitfall, and recover using pkg-config 522801037d57Smrg# 522901037d57Smrg# If none of these are set, the configuration is almost certainly broken. 523001037d57Smrgif test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}" 523101037d57Smrgthen 523201037d57Smrg CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)]) 523301037d57Smrg CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)]) 523401037d57Smrg CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)]) 523501037d57Smrg CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)]) 5236f2e35a3aSmrgelse 5237f2e35a3aSmrg LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS" 523801037d57Smrgfi 523901037d57Smrg 5240d522f475Smrgcf_have_X_LIBS=no 5241d522f475Smrg 524220d2c4d2SmrgCF_TRY_PKG_CONFIG(xt,[ 524320d2c4d2Smrg 524401037d57Smrg case "x$LIBS" in 524501037d57Smrg (*-lX11*) 52466879286fSmrg ;; 524701037d57Smrg (*) 52486879286fSmrg# we have an "xt" package, but it may omit Xt's dependency on X11 52496879286fSmrgAC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[ 52506879286fSmrgAC_TRY_LINK([ 52516879286fSmrg#include <X11/Xlib.h> 52526879286fSmrg],[ 52536879286fSmrg int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); 52546879286fSmrg int rc2 = XClearWindow((Display*) 0, (Window) 0); 52556879286fSmrg int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); 52566879286fSmrg int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); 52576879286fSmrg],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])]) 52586879286fSmrg if test "$cf_cv_xt_x11_compat" = no 52596879286fSmrg then 52606879286fSmrg CF_VERBOSE(work around broken X11 dependency) 52616879286fSmrg # 2010/11/19 - good enough until a working Xt on Xcb is delivered. 52626879286fSmrg CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)]) 52636879286fSmrg fi 526420d2c4d2Smrg ;; 526520d2c4d2Smrg esac 526620d2c4d2Smrg 52676879286fSmrgAC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[ 52686879286fSmrgAC_TRY_LINK([ 52696879286fSmrg#include <X11/Shell.h> 5270f2e35a3aSmrg],[int num = IceConnectionNumber(0); (void) num 52716879286fSmrg],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])]) 52726879286fSmrg 52736879286fSmrg if test "$cf_cv_xt_ice_compat" = no 52746879286fSmrg then 52756879286fSmrg # workaround for broken ".pc" files used for X Toolkit. 527601037d57Smrg case "x$X_PRE_LIBS" in 527701037d57Smrg (*-lICE*) 527801037d57Smrg case "x$LIBS" in 527901037d57Smrg (*-lICE*) 52806879286fSmrg ;; 528101037d57Smrg (*) 52826879286fSmrg CF_VERBOSE(work around broken ICE dependency) 52836879286fSmrg CF_TRY_PKG_CONFIG(ice, 52846879286fSmrg [CF_TRY_PKG_CONFIG(sm)], 52856879286fSmrg [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)]) 52866879286fSmrg ;; 52876879286fSmrg esac 52886879286fSmrg ;; 52896879286fSmrg esac 52906879286fSmrg fi 52916879286fSmrg 529220d2c4d2Smrg cf_have_X_LIBS=yes 529320d2c4d2Smrg],[ 529420d2c4d2Smrg 529520d2c4d2Smrg LDFLAGS="$X_LIBS $LDFLAGS" 529620d2c4d2Smrg CF_CHECK_CFLAGS($X_CFLAGS) 5297d522f475Smrg 529820d2c4d2Smrg AC_CHECK_FUNC(XOpenDisplay,,[ 529920d2c4d2Smrg AC_CHECK_LIB(X11,XOpenDisplay, 5300f2e35a3aSmrg [CF_ADD_LIB(X11)])]) 5301d522f475Smrg 530220d2c4d2Smrg AC_CHECK_FUNC(XtAppInitialize,,[ 530320d2c4d2Smrg AC_CHECK_LIB(Xt, XtAppInitialize, 53040bd37d32Smrg [AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library]) 530520d2c4d2Smrg cf_have_X_LIBS=Xt 5306f2e35a3aSmrg LIBS="-lXt $LIBS"])]) 530720d2c4d2Smrg]) 5308d522f475Smrg 5309f2e35a3aSmrgif test "$cf_have_X_LIBS" = no ; then 5310d522f475Smrg AC_MSG_WARN( 5311d522f475Smrg[Unable to successfully link X Toolkit library (-lXt) with 5312d522f475Smrgtest program. You will have to check and add the proper libraries by hand 5313d522f475Smrgto makefile.]) 5314d522f475Smrgfi 5315d522f475Smrg])dnl 53160bd37d32Smrgdnl --------------------------------------------------------------------------- 5317ae137402Smrgdnl CF__GRANTPT_BODY version: 6 updated: 2021/06/07 17:39:17 53180bd37d32Smrgdnl ---------------- 53190bd37d32Smrgdnl Body for workability check of grantpt. 53200bd37d32Smrgdefine([CF__GRANTPT_BODY],[ 53210bd37d32Smrg int code = 0; 53220bd37d32Smrg int pty; 53230bd37d32Smrg int tty; 53240bd37d32Smrg char *slave; 53250bd37d32Smrg struct termios tio; 53260bd37d32Smrg 5327f2e35a3aSmrg (void)tio; 53280bd37d32Smrg signal(SIGALRM, my_timeout); 53290bd37d32Smrg 53300bd37d32Smrg if (alarm(2) == 9) 53310bd37d32Smrg failed(9); 53320bd37d32Smrg else if ((pty = posix_openpt(O_RDWR)) < 0) 53330bd37d32Smrg failed(1); 5334ae137402Smrg else if (grantpt(pty) < 0) 53350bd37d32Smrg failed(2); 5336ae137402Smrg else if (unlockpt(pty) < 0) 53370bd37d32Smrg failed(3); 53380bd37d32Smrg else if ((slave = ptsname(pty)) == 0) 53390bd37d32Smrg failed(4); 53400bd37d32Smrg#if (CONFTEST == 3) || defined(CONFTEST_isatty) 53410bd37d32Smrg else if (!isatty(pty)) 53420bd37d32Smrg failed(4); 53430bd37d32Smrg#endif 53440bd37d32Smrg#if CONFTEST >= 4 5345ae137402Smrg else if (tcgetattr(pty, &tio) < 0) 53460bd37d32Smrg failed(20); 5347ae137402Smrg else if (tcsetattr(pty, TCSAFLUSH, &tio) < 0) 53480bd37d32Smrg failed(21); 53490bd37d32Smrg#endif 53500bd37d32Smrg /* BSD posix_openpt does not treat pty as a terminal until slave is opened. 53510bd37d32Smrg * Linux does treat it that way. 53520bd37d32Smrg */ 53530bd37d32Smrg else if ((tty = open(slave, O_RDWR)) < 0) 53540bd37d32Smrg failed(5); 53550bd37d32Smrg#ifdef CONFTEST 53560bd37d32Smrg#ifdef I_PUSH 53570bd37d32Smrg#if (CONFTEST == 0) || defined(CONFTEST_ptem) 5358ae137402Smrg else if (ioctl(tty, I_PUSH, "ptem") < 0) 53590bd37d32Smrg failed(10); 53600bd37d32Smrg#endif 53610bd37d32Smrg#if (CONFTEST == 1) || defined(CONFTEST_ldterm) 5362ae137402Smrg else if (ioctl(tty, I_PUSH, "ldterm") < 0) 53630bd37d32Smrg failed(11); 53640bd37d32Smrg#endif 53650bd37d32Smrg#if (CONFTEST == 2) || defined(CONFTEST_ttcompat) 5366ae137402Smrg else if (ioctl(tty, I_PUSH, "ttcompat") < 0) 53670bd37d32Smrg failed(12); 53680bd37d32Smrg#endif 53690bd37d32Smrg#endif /* I_PUSH */ 53700bd37d32Smrg#if CONFTEST >= 5 5371ae137402Smrg else if (tcgetattr(tty, &tio) < 0) 53720bd37d32Smrg failed(30); 5373ae137402Smrg else if (tcsetattr(tty, TCSAFLUSH, &tio) < 0) 53740bd37d32Smrg failed(31); 53750bd37d32Smrg#endif 53760bd37d32Smrg#endif /* CONFTEST */ 5377ae137402Smrg (void) tty; 53780bd37d32Smrg ${cf_cv_main_return:-return}(code); 53790bd37d32Smrg]) 53800bd37d32Smrgdnl --------------------------------------------------------------------------- 5381f2e35a3aSmrgdnl CF__GRANTPT_HEAD version: 4 updated: 2020/03/10 18:53:47 53820bd37d32Smrgdnl ---------------- 53830bd37d32Smrgdnl Headers for workability check of grantpt. 53840bd37d32Smrgdefine([CF__GRANTPT_HEAD],[ 53850bd37d32Smrg#include <stdlib.h> 5386f2e35a3aSmrg#include <stdio.h> 53870bd37d32Smrg#include <termios.h> 53880bd37d32Smrg#include <unistd.h> 53890bd37d32Smrg#include <signal.h> 53900bd37d32Smrg#include <fcntl.h> 53910bd37d32Smrg#include <errno.h> 53920bd37d32Smrg 53930bd37d32Smrg#ifndef HAVE_POSIX_OPENPT 53940bd37d32Smrg#undef posix_openpt 53950bd37d32Smrg#define posix_openpt(mode) open("/dev/ptmx", mode) 53960bd37d32Smrg#endif 53970bd37d32Smrg 53980bd37d32Smrg#ifdef HAVE_STROPTS_H 53990bd37d32Smrg#include <stropts.h> 54000bd37d32Smrg#endif 54010bd37d32Smrg 54020bd37d32Smrgstatic void failed(int code) 54030bd37d32Smrg{ 54040bd37d32Smrg perror("conftest"); 54050bd37d32Smrg exit(code); 54060bd37d32Smrg} 54070bd37d32Smrg 54080bd37d32Smrgstatic void my_timeout(int sig) 54090bd37d32Smrg{ 5410f2e35a3aSmrg (void)sig; 54110bd37d32Smrg exit(99); 54120bd37d32Smrg} 54130bd37d32Smrg]) 5414