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