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