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