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