xref: /freebsd/contrib/byacc/aclocal.m4 (revision 822ca3276345b4a67ccbc9b54616d8b205fd37f2)
1*822ca327SBaptiste Daroussindnl $Id: aclocal.m4,v 1.65 2023/12/01 22:22:50 tom Exp $
298e903e7SBaptiste Daroussindnl Macros for byacc configure script (Thomas E. Dickey)
398e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
48e022d3cSDag-Erling Smørgravdnl Copyright 2004-2022,2023 Thomas E. Dickey
598e903e7SBaptiste Daroussindnl
698e903e7SBaptiste Daroussindnl Permission is hereby granted, free of charge, to any person obtaining a
798e903e7SBaptiste Daroussindnl copy of this software and associated documentation files (the
898e903e7SBaptiste Daroussindnl "Software"), to deal in the Software without restriction, including
998e903e7SBaptiste Daroussindnl without limitation the rights to use, copy, modify, merge, publish,
1098e903e7SBaptiste Daroussindnl distribute, distribute with modifications, sublicense, and/or sell
1198e903e7SBaptiste Daroussindnl copies of the Software, and to permit persons to whom the Software is
1298e903e7SBaptiste Daroussindnl furnished to do so, subject to the following conditions:
1398e903e7SBaptiste Daroussindnl
1498e903e7SBaptiste Daroussindnl The above copyright notice and this permission notice shall be included
1598e903e7SBaptiste Daroussindnl in all copies or portions of the Software.
1698e903e7SBaptiste Daroussindnl
1798e903e7SBaptiste Daroussindnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1898e903e7SBaptiste Daroussindnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1998e903e7SBaptiste Daroussindnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
2098e903e7SBaptiste Daroussindnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
2198e903e7SBaptiste Daroussindnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
2298e903e7SBaptiste Daroussindnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
2398e903e7SBaptiste Daroussindnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2498e903e7SBaptiste Daroussindnl
2598e903e7SBaptiste Daroussindnl Except as contained in this notice, the name(s) of the above copyright
2698e903e7SBaptiste Daroussindnl holders shall not be used in advertising or otherwise to promote the
2798e903e7SBaptiste Daroussindnl sale, use or other dealings in this Software without prior written
2898e903e7SBaptiste Daroussindnl authorization.
2998e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
3098e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
31bb9eb45aSBaptiste Daroussindnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49
325b91e83fSBaptiste Daroussindnl ------------------
335b91e83fSBaptiste Daroussindnl Conditionally generate script according to whether we're using a given autoconf.
345b91e83fSBaptiste Daroussindnl
355b91e83fSBaptiste Daroussindnl $1 = version to compare against
365b91e83fSBaptiste Daroussindnl $2 = code to use if AC_ACVERSION is at least as high as $1.
375b91e83fSBaptiste Daroussindnl $3 = code to use if AC_ACVERSION is older than $1.
385b91e83fSBaptiste Daroussindefine([CF_ACVERSION_CHECK],
395b91e83fSBaptiste Daroussin[
40bb9eb45aSBaptiste Daroussinifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl
415b91e83fSBaptiste Daroussinifdef([m4_version_compare],
425b91e83fSBaptiste Daroussin[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
435b91e83fSBaptiste Daroussin[CF_ACVERSION_COMPARE(
445b91e83fSBaptiste DaroussinAC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
455b91e83fSBaptiste DaroussinAC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
465b91e83fSBaptiste Daroussindnl ---------------------------------------------------------------------------
475b91e83fSBaptiste Daroussindnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
485b91e83fSBaptiste Daroussindnl --------------------
495b91e83fSBaptiste Daroussindnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
505b91e83fSBaptiste Daroussindnl                      MAJOR2, MINOR2, TERNARY2,
515b91e83fSBaptiste Daroussindnl                      PRINTABLE2, not FOUND, FOUND)
525b91e83fSBaptiste Daroussindefine([CF_ACVERSION_COMPARE],
535b91e83fSBaptiste Daroussin[ifelse(builtin([eval], [$2 < $5]), 1,
545b91e83fSBaptiste Daroussin[ifelse([$8], , ,[$8])],
555b91e83fSBaptiste Daroussin[ifelse([$9], , ,[$9])])])dnl
565b91e83fSBaptiste Daroussindnl ---------------------------------------------------------------------------
578e022d3cSDag-Erling Smørgravdnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15
5898e903e7SBaptiste Daroussindnl -------------
5998e903e7SBaptiste Daroussindnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
608e022d3cSDag-Erling Smørgravdnl $1 = flags to add
618e022d3cSDag-Erling Smørgravdnl $2 = if given makes this macro verbose.
6298e903e7SBaptiste Daroussindnl
6398e903e7SBaptiste Daroussindnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
6498e903e7SBaptiste Daroussindnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
6598e903e7SBaptiste Daroussindnl confused by the quotes (which require backslashes to keep them usable).
6698e903e7SBaptiste DaroussinAC_DEFUN([CF_ADD_CFLAGS],
6798e903e7SBaptiste Daroussin[
6898e903e7SBaptiste Daroussincf_fix_cppflags=no
6998e903e7SBaptiste Daroussincf_new_cflags=
7098e903e7SBaptiste Daroussincf_new_cppflags=
7198e903e7SBaptiste Daroussincf_new_extra_cppflags=
7298e903e7SBaptiste Daroussin
7398e903e7SBaptiste Daroussinfor cf_add_cflags in $1
7498e903e7SBaptiste Daroussindo
758e022d3cSDag-Erling Smørgravcase "$cf_fix_cppflags" in
760f86d14eSJung-uk Kim(no)
778e022d3cSDag-Erling Smørgrav	case "$cf_add_cflags" in
780f86d14eSJung-uk Kim	(-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
798e022d3cSDag-Erling Smørgrav		case "$cf_add_cflags" in
800f86d14eSJung-uk Kim		(-D*)
818e022d3cSDag-Erling Smørgrav			cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
8298e903e7SBaptiste Daroussin
8311fce282SBaptiste Daroussin			test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
8498e903e7SBaptiste Daroussin				&& test -z "${cf_tst_cflags}" \
8598e903e7SBaptiste Daroussin				&& cf_fix_cppflags=yes
8698e903e7SBaptiste Daroussin
878e022d3cSDag-Erling Smørgrav			if test "$cf_fix_cppflags" = yes ; then
88b53bb29fSJung-uk Kim				CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
8998e903e7SBaptiste Daroussin				continue
9098e903e7SBaptiste Daroussin			elif test "${cf_tst_cflags}" = "\"'" ; then
91b53bb29fSJung-uk Kim				CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
9298e903e7SBaptiste Daroussin				continue
9398e903e7SBaptiste Daroussin			fi
9498e903e7SBaptiste Daroussin			;;
9598e903e7SBaptiste Daroussin		esac
9698e903e7SBaptiste Daroussin		case "$CPPFLAGS" in
970f86d14eSJung-uk Kim		(*$cf_add_cflags)
9898e903e7SBaptiste Daroussin			;;
990f86d14eSJung-uk Kim		(*)
1008e022d3cSDag-Erling Smørgrav			case "$cf_add_cflags" in
1010f86d14eSJung-uk Kim			(-D*)
10298e903e7SBaptiste Daroussin				cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
10398e903e7SBaptiste Daroussin				CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags)
10498e903e7SBaptiste Daroussin				;;
10598e903e7SBaptiste Daroussin			esac
106b53bb29fSJung-uk Kim			CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags)
10798e903e7SBaptiste Daroussin			;;
10898e903e7SBaptiste Daroussin		esac
10998e903e7SBaptiste Daroussin		;;
1100f86d14eSJung-uk Kim	(*)
111b53bb29fSJung-uk Kim		CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags)
11298e903e7SBaptiste Daroussin		;;
11398e903e7SBaptiste Daroussin	esac
11498e903e7SBaptiste Daroussin	;;
1150f86d14eSJung-uk Kim(yes)
116b53bb29fSJung-uk Kim	CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags)
11798e903e7SBaptiste Daroussin
1188e022d3cSDag-Erling Smørgrav	cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'`
11998e903e7SBaptiste Daroussin
12011fce282SBaptiste Daroussin	test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \
12198e903e7SBaptiste Daroussin		&& test -z "${cf_tst_cflags}" \
12298e903e7SBaptiste Daroussin		&& cf_fix_cppflags=no
12398e903e7SBaptiste Daroussin	;;
12498e903e7SBaptiste Daroussinesac
12598e903e7SBaptiste Daroussindone
12698e903e7SBaptiste Daroussin
12798e903e7SBaptiste Daroussinif test -n "$cf_new_cflags" ; then
12898e903e7SBaptiste Daroussin	ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)])
129b53bb29fSJung-uk Kim	CF_APPEND_TEXT(CFLAGS,$cf_new_cflags)
13098e903e7SBaptiste Daroussinfi
13198e903e7SBaptiste Daroussin
13298e903e7SBaptiste Daroussinif test -n "$cf_new_cppflags" ; then
13398e903e7SBaptiste Daroussin	ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
134b53bb29fSJung-uk Kim	CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags)
13598e903e7SBaptiste Daroussinfi
13698e903e7SBaptiste Daroussin
13798e903e7SBaptiste Daroussinif test -n "$cf_new_extra_cppflags" ; then
13898e903e7SBaptiste Daroussin	ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)])
139b53bb29fSJung-uk Kim	CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags)
14098e903e7SBaptiste Daroussinfi
14198e903e7SBaptiste Daroussin
14298e903e7SBaptiste DaroussinAC_SUBST(EXTRA_CPPFLAGS)
14398e903e7SBaptiste Daroussin
14498e903e7SBaptiste Daroussin])dnl
14598e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1468e022d3cSDag-Erling Smørgravdnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40
1478e022d3cSDag-Erling Smørgravdnl ----------------
1488e022d3cSDag-Erling Smørgravdnl Use CF_ADD_CFLAGS after first checking for potential redefinitions.
1498e022d3cSDag-Erling Smørgravdnl $1 = flags to add
1508e022d3cSDag-Erling Smørgravdnl $2 = if given makes this macro verbose.
1518e022d3cSDag-Erling Smørgravdefine([CF_APPEND_CFLAGS],
1528e022d3cSDag-Erling Smørgrav[
1538e022d3cSDag-Erling Smørgravfor cf_add_cflags in $1
1548e022d3cSDag-Erling Smørgravdo
1558e022d3cSDag-Erling Smørgrav	case "x$cf_add_cflags" in
1568e022d3cSDag-Erling Smørgrav	(x-[[DU]]*)
1578e022d3cSDag-Erling Smørgrav		CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2])
1588e022d3cSDag-Erling Smørgrav		CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2])
1598e022d3cSDag-Erling Smørgrav		;;
1608e022d3cSDag-Erling Smørgrav	esac
1618e022d3cSDag-Erling Smørgrav	CF_ADD_CFLAGS([$cf_add_cflags],[$2])
1628e022d3cSDag-Erling Smørgravdone
1638e022d3cSDag-Erling Smørgrav])dnl
1648e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
165b53bb29fSJung-uk Kimdnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
166b53bb29fSJung-uk Kimdnl --------------
167b53bb29fSJung-uk Kimdnl use this macro for appending text without introducing an extra blank at
168b53bb29fSJung-uk Kimdnl the beginning
169b53bb29fSJung-uk Kimdefine([CF_APPEND_TEXT],
170b53bb29fSJung-uk Kim[
171b53bb29fSJung-uk Kim	test -n "[$]$1" && $1="[$]$1 "
172b53bb29fSJung-uk Kim	$1="[$]{$1}$2"
173b53bb29fSJung-uk Kim])dnl
174b53bb29fSJung-uk Kimdnl ---------------------------------------------------------------------------
17598e903e7SBaptiste Daroussindnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
17698e903e7SBaptiste Daroussindnl --------------
17798e903e7SBaptiste Daroussindnl Allow user to disable a normally-on option.
17898e903e7SBaptiste DaroussinAC_DEFUN([CF_ARG_DISABLE],
17998e903e7SBaptiste Daroussin[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl
18098e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1818e022d3cSDag-Erling Smørgravdnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31
1828e022d3cSDag-Erling Smørgravdnl -------------
1838e022d3cSDag-Erling Smørgravdnl Allow user to enable a normally-off option.
1848e022d3cSDag-Erling SmørgravAC_DEFUN([CF_ARG_ENABLE],
1858e022d3cSDag-Erling Smørgrav[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
1868e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
1870f86d14eSJung-uk Kimdnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14
18898e903e7SBaptiste Daroussindnl -------------
18998e903e7SBaptiste Daroussindnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus
19098e903e7SBaptiste Daroussindnl values.
19198e903e7SBaptiste Daroussindnl
19298e903e7SBaptiste Daroussindnl Parameters:
19398e903e7SBaptiste Daroussindnl $1 = option name
19498e903e7SBaptiste Daroussindnl $2 = help-string
19598e903e7SBaptiste Daroussindnl $3 = action to perform if option is not default
19698e903e7SBaptiste Daroussindnl $4 = action if perform if option is default
19798e903e7SBaptiste Daroussindnl $5 = default option value (either 'yes' or 'no')
19898e903e7SBaptiste DaroussinAC_DEFUN([CF_ARG_OPTION],
19998e903e7SBaptiste Daroussin[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes)
20098e903e7SBaptiste Daroussin	if test "$enableval" != "$5" ; then
20198e903e7SBaptiste Daroussinifelse([$3],,[    :]dnl
20298e903e7SBaptiste Daroussin,[    $3]) ifelse([$4],,,[
20398e903e7SBaptiste Daroussin	else
20498e903e7SBaptiste Daroussin		$4])
20598e903e7SBaptiste Daroussin	fi],[enableval=$5 ifelse([$4],,,[
20698e903e7SBaptiste Daroussin	$4
20798e903e7SBaptiste Daroussin])dnl
20898e903e7SBaptiste Daroussin])])dnl
20998e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
210*822ca327SBaptiste Daroussindnl CF_C11_NORETURN version: 4 updated: 2023/02/18 17:41:25
2118e022d3cSDag-Erling Smørgravdnl ---------------
2128e022d3cSDag-Erling SmørgravAC_DEFUN([CF_C11_NORETURN],
2138e022d3cSDag-Erling Smørgrav[
2148e022d3cSDag-Erling SmørgravAC_MSG_CHECKING(if you want to use C11 _Noreturn feature)
2158e022d3cSDag-Erling SmørgravCF_ARG_ENABLE(stdnoreturn,
2168e022d3cSDag-Erling Smørgrav	[  --enable-stdnoreturn    enable C11 _Noreturn feature for diagnostics],
2178e022d3cSDag-Erling Smørgrav	[enable_stdnoreturn=yes],
2188e022d3cSDag-Erling Smørgrav	[enable_stdnoreturn=no])
2198e022d3cSDag-Erling SmørgravAC_MSG_RESULT($enable_stdnoreturn)
2208e022d3cSDag-Erling Smørgrav
2218e022d3cSDag-Erling Smørgravif test $enable_stdnoreturn = yes; then
2228e022d3cSDag-Erling SmørgravAC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
2238e022d3cSDag-Erling Smørgrav	[AC_TRY_COMPILE([
224*822ca327SBaptiste Daroussin$ac_includes_default
2258e022d3cSDag-Erling Smørgrav#include <stdnoreturn.h>
2268e022d3cSDag-Erling Smørgravstatic _Noreturn void giveup(void) { exit(0); }
2278e022d3cSDag-Erling Smørgrav	],
2288e022d3cSDag-Erling Smørgrav	[if (feof(stdin)) giveup()],
2298e022d3cSDag-Erling Smørgrav	cf_cv_c11_noreturn=yes,
2308e022d3cSDag-Erling Smørgrav	cf_cv_c11_noreturn=no)
2318e022d3cSDag-Erling Smørgrav	])
2328e022d3cSDag-Erling Smørgravelse
2338e022d3cSDag-Erling Smørgrav	cf_cv_c11_noreturn=no,
2348e022d3cSDag-Erling Smørgravfi
2358e022d3cSDag-Erling Smørgrav
2368e022d3cSDag-Erling Smørgravif test "$cf_cv_c11_noreturn" = yes; then
2378e022d3cSDag-Erling Smørgrav	AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working])
2388e022d3cSDag-Erling Smørgrav	AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported])
2398e022d3cSDag-Erling Smørgrav	HAVE_STDNORETURN_H=1
2408e022d3cSDag-Erling Smørgravelse
2418e022d3cSDag-Erling Smørgrav	HAVE_STDNORETURN_H=0
2428e022d3cSDag-Erling Smørgravfi
2438e022d3cSDag-Erling Smørgrav
2448e022d3cSDag-Erling SmørgravAC_SUBST(HAVE_STDNORETURN_H)
2458e022d3cSDag-Erling SmørgravAC_SUBST(STDC_NORETURN)
2468e022d3cSDag-Erling Smørgrav])dnl
2478e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
248*822ca327SBaptiste Daroussindnl CF_CC_ENV_FLAGS version: 11 updated: 2023/02/20 11:15:46
2495b91e83fSBaptiste Daroussindnl ---------------
2505b91e83fSBaptiste Daroussindnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
2512aca18c7SJung-uk Kimdnl into CC.  This will not help with broken scripts that wrap the compiler
2522aca18c7SJung-uk Kimdnl with options, but eliminates a more common category of user confusion.
2532aca18c7SJung-uk Kimdnl
2542aca18c7SJung-uk Kimdnl In particular, it addresses the problem of being able to run the C
2552aca18c7SJung-uk Kimdnl preprocessor in a consistent manner.
256c5b5d71aSJung-uk Kimdnl
257c5b5d71aSJung-uk Kimdnl Caveat: this also disallows blanks in the pathname for the compiler, but
258c5b5d71aSJung-uk Kimdnl the nuisance of having inconsistent settings for compiler and preprocessor
259c5b5d71aSJung-uk Kimdnl outweighs that limitation.
2605b91e83fSBaptiste DaroussinAC_DEFUN([CF_CC_ENV_FLAGS],
2615b91e83fSBaptiste Daroussin[
2625b91e83fSBaptiste Daroussin# This should have been defined by AC_PROG_CC
2638e022d3cSDag-Erling Smørgrav: "${CC:=cc}"
2645b91e83fSBaptiste Daroussin
265b53bb29fSJung-uk KimAC_MSG_CHECKING(\$CFLAGS variable)
266b53bb29fSJung-uk Kimcase "x$CFLAGS" in
267b53bb29fSJung-uk Kim(*-[[IUD]]*)
268b53bb29fSJung-uk Kim	AC_MSG_RESULT(broken)
269b53bb29fSJung-uk Kim	AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
270b53bb29fSJung-uk Kim	cf_flags="$CFLAGS"
271b53bb29fSJung-uk Kim	CFLAGS=
272b53bb29fSJung-uk Kim	for cf_arg in $cf_flags
273b53bb29fSJung-uk Kim	do
274b53bb29fSJung-uk Kim		CF_ADD_CFLAGS($cf_arg)
275b53bb29fSJung-uk Kim	done
276b53bb29fSJung-uk Kim	;;
277b53bb29fSJung-uk Kim(*)
278b53bb29fSJung-uk Kim	AC_MSG_RESULT(ok)
279b53bb29fSJung-uk Kim	;;
280b53bb29fSJung-uk Kimesac
281b53bb29fSJung-uk Kim
2825b91e83fSBaptiste DaroussinAC_MSG_CHECKING(\$CC variable)
2830f86d14eSJung-uk Kimcase "$CC" in
284c5b5d71aSJung-uk Kim(*[[\ \	]]-*)
2855b91e83fSBaptiste Daroussin	AC_MSG_RESULT(broken)
286b53bb29fSJung-uk Kim	AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
2875b91e83fSBaptiste Daroussin	# humor him...
288b53bb29fSJung-uk Kim	cf_prog=`echo "$CC" | sed -e 's/	/ /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
289*822ca327SBaptiste Daroussin	cf_flags=`echo "$CC" | sed -e "s%^$cf_prog%%"`
290b53bb29fSJung-uk Kim	CC="$cf_prog"
2912aca18c7SJung-uk Kim	for cf_arg in $cf_flags
2922aca18c7SJung-uk Kim	do
2932aca18c7SJung-uk Kim		case "x$cf_arg" in
2942aca18c7SJung-uk Kim		(x-[[IUDfgOW]]*)
295b53bb29fSJung-uk Kim			CF_ADD_CFLAGS($cf_arg)
2962aca18c7SJung-uk Kim			;;
2972aca18c7SJung-uk Kim		(*)
2982aca18c7SJung-uk Kim			CC="$CC $cf_arg"
2992aca18c7SJung-uk Kim			;;
3002aca18c7SJung-uk Kim		esac
3012aca18c7SJung-uk Kim	done
302c5b5d71aSJung-uk Kim	CF_VERBOSE(resulting CC: '$CC')
303c5b5d71aSJung-uk Kim	CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
304c5b5d71aSJung-uk Kim	CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
3055b91e83fSBaptiste Daroussin	;;
3060f86d14eSJung-uk Kim(*)
3075b91e83fSBaptiste Daroussin	AC_MSG_RESULT(ok)
3085b91e83fSBaptiste Daroussin	;;
3095b91e83fSBaptiste Daroussinesac
3105b91e83fSBaptiste Daroussin])dnl
3115b91e83fSBaptiste Daroussindnl ---------------------------------------------------------------------------
3128e022d3cSDag-Erling Smørgravdnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15
31398e903e7SBaptiste Daroussindnl --------------
31498e903e7SBaptiste Daroussindnl Check if we're accidentally using a cache from a different machine.
31598e903e7SBaptiste Daroussindnl Derive the system name, as a check for reusing the autoconf cache.
31698e903e7SBaptiste Daroussindnl
31798e903e7SBaptiste Daroussindnl If we've packaged config.guess and config.sub, run that (since it does a
31898e903e7SBaptiste Daroussindnl better job than uname).  Normally we'll use AC_CANONICAL_HOST, but allow
31998e903e7SBaptiste Daroussindnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
32098e903e7SBaptiste Daroussindnl which is useful in cross-compiles.
32198e903e7SBaptiste Daroussindnl
32298e903e7SBaptiste Daroussindnl Note: we would use $ac_config_sub, but that is one of the places where
32398e903e7SBaptiste Daroussindnl autoconf 2.5x broke compatibility with autoconf 2.13
32498e903e7SBaptiste DaroussinAC_DEFUN([CF_CHECK_CACHE],
32598e903e7SBaptiste Daroussin[
3268e022d3cSDag-Erling Smørgravif test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then
32798e903e7SBaptiste Daroussin	ifelse([$1],,[AC_CANONICAL_HOST],[$1])
32898e903e7SBaptiste Daroussin	system_name="$host_os"
32998e903e7SBaptiste Daroussinelse
33098e903e7SBaptiste Daroussin	system_name="`(uname -s -r) 2>/dev/null`"
33198e903e7SBaptiste Daroussin	if test -z "$system_name" ; then
33298e903e7SBaptiste Daroussin		system_name="`(hostname) 2>/dev/null`"
33398e903e7SBaptiste Daroussin	fi
33498e903e7SBaptiste Daroussinfi
3355b91e83fSBaptiste Daroussintest -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
33698e903e7SBaptiste DaroussinAC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
33798e903e7SBaptiste Daroussin
33898e903e7SBaptiste Daroussintest -z "$system_name" && system_name="$cf_cv_system_name"
33998e903e7SBaptiste Daroussintest -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
34098e903e7SBaptiste Daroussin
34198e903e7SBaptiste Daroussinif test ".$system_name" != ".$cf_cv_system_name" ; then
34298e903e7SBaptiste Daroussin	AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
34398e903e7SBaptiste Daroussin	AC_MSG_ERROR("Please remove config.cache and try again.")
34498e903e7SBaptiste Daroussinfi
34598e903e7SBaptiste Daroussin])dnl
34698e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
347*822ca327SBaptiste Daroussindnl CF_CLANG_COMPILER version: 9 updated: 2023/02/18 17:41:25
3485b91e83fSBaptiste Daroussindnl -----------------
3495b91e83fSBaptiste Daroussindnl Check if the given compiler is really clang.  clang's C driver defines
3505b91e83fSBaptiste Daroussindnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
3515b91e83fSBaptiste Daroussindnl not ignore some gcc options.
3525b91e83fSBaptiste Daroussindnl
3535b91e83fSBaptiste Daroussindnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
3545b91e83fSBaptiste Daroussindnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
3555b91e83fSBaptiste Daroussindnl the wrappers for gcc and g++ warnings.
3565b91e83fSBaptiste Daroussindnl
3575b91e83fSBaptiste Daroussindnl $1 = GCC (default) or GXX
3584b4a8fcaSBaptiste Daroussindnl $2 = CLANG_COMPILER (default)
3595b91e83fSBaptiste Daroussindnl $3 = CFLAGS (default) or CXXFLAGS
3605b91e83fSBaptiste DaroussinAC_DEFUN([CF_CLANG_COMPILER],[
3615b91e83fSBaptiste Daroussinifelse([$2],,CLANG_COMPILER,[$2])=no
3625b91e83fSBaptiste Daroussin
3635b91e83fSBaptiste Daroussinif test "$ifelse([$1],,[$1],GCC)" = yes ; then
3645b91e83fSBaptiste Daroussin	AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
3655b91e83fSBaptiste Daroussin	cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
3665b91e83fSBaptiste Daroussin	AC_TRY_COMPILE([],[
3675b91e83fSBaptiste Daroussin#ifdef __clang__
3685b91e83fSBaptiste Daroussin#else
369*822ca327SBaptiste Daroussin#error __clang__ is not defined
3705b91e83fSBaptiste Daroussin#endif
3715b91e83fSBaptiste Daroussin],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
3725b91e83fSBaptiste Daroussin],[])
3735b91e83fSBaptiste Daroussin	ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
3745b91e83fSBaptiste Daroussin	AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
3755b91e83fSBaptiste Daroussinfi
3768e022d3cSDag-Erling Smørgrav
3778e022d3cSDag-Erling SmørgravCLANG_VERSION=none
3788e022d3cSDag-Erling Smørgrav
3798e022d3cSDag-Erling Smørgravif test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
3808e022d3cSDag-Erling Smørgrav	case "$CC" in
3818e022d3cSDag-Erling Smørgrav	(c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]])
3828e022d3cSDag-Erling Smørgrav		AC_MSG_WARN(replacing broken compiler alias $CC)
3838e022d3cSDag-Erling Smørgrav		CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
3848e022d3cSDag-Erling Smørgrav		CC=clang
3858e022d3cSDag-Erling Smørgrav		;;
3868e022d3cSDag-Erling Smørgrav	esac
3878e022d3cSDag-Erling Smørgrav
3888e022d3cSDag-Erling Smørgrav	AC_MSG_CHECKING(version of $CC)
3898e022d3cSDag-Erling Smørgrav	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.]].*//'`"
3908e022d3cSDag-Erling Smørgrav	test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
3918e022d3cSDag-Erling Smørgrav	AC_MSG_RESULT($CLANG_VERSION)
3928e022d3cSDag-Erling Smørgrav
3938e022d3cSDag-Erling Smørgrav	for cf_clang_opt in \
3948e022d3cSDag-Erling Smørgrav		-Qunused-arguments \
3958e022d3cSDag-Erling Smørgrav		-Wno-error=implicit-function-declaration
3968e022d3cSDag-Erling Smørgrav	do
3978e022d3cSDag-Erling Smørgrav		AC_MSG_CHECKING(if option $cf_clang_opt works)
3988e022d3cSDag-Erling Smørgrav		cf_save_CFLAGS="$CFLAGS"
3998e022d3cSDag-Erling Smørgrav		CFLAGS="$CFLAGS $cf_clang_opt"
4008e022d3cSDag-Erling Smørgrav		AC_TRY_LINK([
4018e022d3cSDag-Erling Smørgrav			#include <stdio.h>],[
4028e022d3cSDag-Erling Smørgrav			printf("hello!\\n");],[
4038e022d3cSDag-Erling Smørgrav			cf_clang_optok=yes],[
4048e022d3cSDag-Erling Smørgrav			cf_clang_optok=no])
4058e022d3cSDag-Erling Smørgrav		AC_MSG_RESULT($cf_clang_optok)
4068e022d3cSDag-Erling Smørgrav		CFLAGS="$cf_save_CFLAGS"
4078e022d3cSDag-Erling Smørgrav		if test "$cf_clang_optok" = yes; then
4088e022d3cSDag-Erling Smørgrav			CF_VERBOSE(adding option $cf_clang_opt)
4098e022d3cSDag-Erling Smørgrav			CF_APPEND_TEXT(CFLAGS,$cf_clang_opt)
4108e022d3cSDag-Erling Smørgrav		fi
4118e022d3cSDag-Erling Smørgrav	done
4128e022d3cSDag-Erling Smørgravfi
4135b91e83fSBaptiste Daroussin])
4145b91e83fSBaptiste Daroussindnl ---------------------------------------------------------------------------
415*822ca327SBaptiste Daroussindnl CF_CONST_X_STRING version: 8 updated: 2023/12/01 17:22:50
416b53bb29fSJung-uk Kimdnl -----------------
417b53bb29fSJung-uk Kimdnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
418b53bb29fSJung-uk Kimdnl character-strings.
419b53bb29fSJung-uk Kimdnl
420b53bb29fSJung-uk Kimdnl It is ambiguous because the specification accommodated the pre-ANSI
421b53bb29fSJung-uk Kimdnl compilers bundled by more than one vendor in lieu of providing a standard C
422b53bb29fSJung-uk Kimdnl compiler other than by costly add-ons.  Because of this, the specification
423b53bb29fSJung-uk Kimdnl did not take into account the use of const for telling the compiler that
424b53bb29fSJung-uk Kimdnl string literals would be in readonly memory.
425b53bb29fSJung-uk Kimdnl
426b53bb29fSJung-uk Kimdnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
427b53bb29fSJung-uk Kimdnl let the compiler decide how to represent Xt's strings which were #define'd.
428b53bb29fSJung-uk Kimdnl That does not solve the problem of using the block of Xt's strings which
429b53bb29fSJung-uk Kimdnl are compiled into the library (and is less efficient than one might want).
430b53bb29fSJung-uk Kimdnl
431b53bb29fSJung-uk Kimdnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
432b53bb29fSJung-uk Kimdnl when compiling the library and compiling using the library, to tell the
433b53bb29fSJung-uk Kimdnl compiler that String is const.
434b53bb29fSJung-uk KimAC_DEFUN([CF_CONST_X_STRING],
435b53bb29fSJung-uk Kim[
436b53bb29fSJung-uk KimAC_REQUIRE([AC_PATH_XTRA])
437b53bb29fSJung-uk Kim
438b53bb29fSJung-uk KimCF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
439b53bb29fSJung-uk Kim
440b53bb29fSJung-uk KimAC_TRY_COMPILE(
441b53bb29fSJung-uk Kim[
442b53bb29fSJung-uk Kim#include <stdlib.h>
443b53bb29fSJung-uk Kim#include <X11/Intrinsic.h>
444b53bb29fSJung-uk Kim],
4458e022d3cSDag-Erling Smørgrav[String foo = malloc(1); free((void*)foo)],[
446b53bb29fSJung-uk Kim
447b53bb29fSJung-uk KimAC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
448b53bb29fSJung-uk Kim	AC_TRY_COMPILE(
449b53bb29fSJung-uk Kim		[
450*822ca327SBaptiste Daroussin#undef  _CONST_X_STRING
451b53bb29fSJung-uk Kim#define _CONST_X_STRING	/* X11R7.8 (perhaps) */
452b53bb29fSJung-uk Kim#undef  XTSTRINGDEFINES	/* X11R5 and later */
453b53bb29fSJung-uk Kim#include <stdlib.h>
454b53bb29fSJung-uk Kim#include <X11/Intrinsic.h>
455b53bb29fSJung-uk Kim		],[String foo = malloc(1); *foo = 0],[
456b53bb29fSJung-uk Kim			cf_cv_const_x_string=no
457b53bb29fSJung-uk Kim		],[
458b53bb29fSJung-uk Kim			cf_cv_const_x_string=yes
459b53bb29fSJung-uk Kim		])
460b53bb29fSJung-uk Kim])
461b53bb29fSJung-uk Kim
462b53bb29fSJung-uk KimCF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING])
463b53bb29fSJung-uk Kim
4648e022d3cSDag-Erling Smørgravcase "$cf_cv_const_x_string" in
465b53bb29fSJung-uk Kim(no)
466b53bb29fSJung-uk Kim	CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES)
467b53bb29fSJung-uk Kim	;;
468b53bb29fSJung-uk Kim(*)
469b53bb29fSJung-uk Kim	CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING)
470b53bb29fSJung-uk Kim	;;
471b53bb29fSJung-uk Kimesac
472b53bb29fSJung-uk Kim
473b53bb29fSJung-uk Kim])
474b53bb29fSJung-uk Kim])dnl
475b53bb29fSJung-uk Kimdnl ---------------------------------------------------------------------------
4768e022d3cSDag-Erling Smørgravdnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04
47798e903e7SBaptiste Daroussindnl ---------------
4788e022d3cSDag-Erling Smørgravdnl You can always use "make -n" to see the actual options, but it is hard to
47998e903e7SBaptiste Daroussindnl pick out/analyze warning messages when the compile-line is long.
48098e903e7SBaptiste Daroussindnl
48198e903e7SBaptiste Daroussindnl Sets:
48298e903e7SBaptiste Daroussindnl	ECHO_LT - symbol to control if libtool is verbose
48398e903e7SBaptiste Daroussindnl	ECHO_LD - symbol to prefix "cc -o" lines
48498e903e7SBaptiste Daroussindnl	RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
48598e903e7SBaptiste Daroussindnl	SHOW_CC - symbol to put before explicit "cc -c" lines
48698e903e7SBaptiste Daroussindnl	ECHO_CC - symbol to put before any "cc" line
48798e903e7SBaptiste Daroussindnl
48898e903e7SBaptiste DaroussinAC_DEFUN([CF_DISABLE_ECHO],[
48998e903e7SBaptiste DaroussinAC_MSG_CHECKING(if you want to see long compiling messages)
49098e903e7SBaptiste DaroussinCF_ARG_DISABLE(echo,
4915b91e83fSBaptiste Daroussin	[  --disable-echo          do not display "compiling" commands],
49298e903e7SBaptiste Daroussin	[
49398e903e7SBaptiste Daroussin	ECHO_LT='--silent'
49498e903e7SBaptiste Daroussin	ECHO_LD='@echo linking [$]@;'
49598e903e7SBaptiste Daroussin	RULE_CC='@echo compiling [$]<'
49698e903e7SBaptiste Daroussin	SHOW_CC='@echo compiling [$]@'
49798e903e7SBaptiste Daroussin	ECHO_CC='@'
49898e903e7SBaptiste Daroussin],[
49998e903e7SBaptiste Daroussin	ECHO_LT=''
50098e903e7SBaptiste Daroussin	ECHO_LD=''
50198e903e7SBaptiste Daroussin	RULE_CC=''
50298e903e7SBaptiste Daroussin	SHOW_CC=''
50398e903e7SBaptiste Daroussin	ECHO_CC=''
50498e903e7SBaptiste Daroussin])
50598e903e7SBaptiste DaroussinAC_MSG_RESULT($enableval)
50698e903e7SBaptiste DaroussinAC_SUBST(ECHO_LT)
50798e903e7SBaptiste DaroussinAC_SUBST(ECHO_LD)
50898e903e7SBaptiste DaroussinAC_SUBST(RULE_CC)
50998e903e7SBaptiste DaroussinAC_SUBST(SHOW_CC)
51098e903e7SBaptiste DaroussinAC_SUBST(ECHO_CC)
51198e903e7SBaptiste Daroussin])dnl
51298e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
5138e022d3cSDag-Erling Smørgravdnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50
51498e903e7SBaptiste Daroussindnl ----------------
51598e903e7SBaptiste Daroussindnl Combine no-leak checks with the libraries or tools that are used for the
51698e903e7SBaptiste Daroussindnl checks.
51798e903e7SBaptiste DaroussinAC_DEFUN([CF_DISABLE_LEAKS],[
51898e903e7SBaptiste Daroussin
51998e903e7SBaptiste DaroussinAC_REQUIRE([CF_WITH_DMALLOC])
52098e903e7SBaptiste DaroussinAC_REQUIRE([CF_WITH_DBMALLOC])
52198e903e7SBaptiste DaroussinAC_REQUIRE([CF_WITH_VALGRIND])
52298e903e7SBaptiste Daroussin
52398e903e7SBaptiste DaroussinAC_MSG_CHECKING(if you want to perform memory-leak testing)
52498e903e7SBaptiste DaroussinAC_ARG_ENABLE(leaks,
52598e903e7SBaptiste Daroussin	[  --disable-leaks         test: free permanent memory, analyze leaks],
5268e022d3cSDag-Erling Smørgrav	[enable_leaks=$enableval],
5278e022d3cSDag-Erling Smørgrav	[enable_leaks=yes])
5288e022d3cSDag-Erling Smørgravdnl with_no_leaks is more readable...
5298e022d3cSDag-Erling Smørgravif test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi
53098e903e7SBaptiste DaroussinAC_MSG_RESULT($with_no_leaks)
53198e903e7SBaptiste Daroussin
5328e022d3cSDag-Erling Smørgravif test "$enable_leaks" = no ; then
5335b91e83fSBaptiste Daroussin	AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
5345b91e83fSBaptiste Daroussin	AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
53598e903e7SBaptiste Daroussinfi
53698e903e7SBaptiste Daroussin])dnl
53798e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
5388e022d3cSDag-Erling Smørgravdnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50
5398e022d3cSDag-Erling Smørgravdnl ------------------
5408e022d3cSDag-Erling Smørgravdnl Configure-option to enable gcc warnings
5418e022d3cSDag-Erling Smørgravdnl
5428e022d3cSDag-Erling Smørgravdnl $1 = extra options to add, if supported
5438e022d3cSDag-Erling Smørgravdnl $2 = option for checking attributes.  By default, this is done when
5448e022d3cSDag-Erling Smørgravdnl      warnings are enabled.  For other values:
5458e022d3cSDag-Erling Smørgravdnl      yes: always do this, e.g., to use in generated library-headers
5468e022d3cSDag-Erling Smørgravdnl      no: never do this
5478e022d3cSDag-Erling SmørgravAC_DEFUN([CF_ENABLE_WARNINGS],[
5488e022d3cSDag-Erling Smørgravif test "$GCC" = yes || test "$GXX" = yes
5498e022d3cSDag-Erling Smørgravthen
5508e022d3cSDag-Erling SmørgravCF_FIX_WARNINGS(CFLAGS)
5518e022d3cSDag-Erling SmørgravCF_FIX_WARNINGS(CPPFLAGS)
5528e022d3cSDag-Erling SmørgravCF_FIX_WARNINGS(LDFLAGS)
5538e022d3cSDag-Erling SmørgravAC_MSG_CHECKING(if you want to turn on gcc warnings)
5548e022d3cSDag-Erling SmørgravCF_ARG_ENABLE(warnings,
5558e022d3cSDag-Erling Smørgrav	[  --enable-warnings       test: turn on gcc compiler warnings],
5568e022d3cSDag-Erling Smørgrav	[enable_warnings=yes],
5578e022d3cSDag-Erling Smørgrav	[enable_warnings=no])
5588e022d3cSDag-Erling SmørgravAC_MSG_RESULT($enable_warnings)
5598e022d3cSDag-Erling Smørgravif test "$enable_warnings" = "yes"
5608e022d3cSDag-Erling Smørgravthen
5618e022d3cSDag-Erling Smørgrav	ifelse($2,,[CF_GCC_ATTRIBUTES])
5628e022d3cSDag-Erling Smørgrav	CF_GCC_WARNINGS($1)
5638e022d3cSDag-Erling Smørgravfi
5648e022d3cSDag-Erling Smørgravifelse($2,yes,[CF_GCC_ATTRIBUTES])
5658e022d3cSDag-Erling Smørgravfi
5668e022d3cSDag-Erling Smørgrav])dnl
5678e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
5688e022d3cSDag-Erling Smørgravdnl CF_FIX_WARNINGS version: 4 updated: 2021/12/16 18:22:31
5698e022d3cSDag-Erling Smørgravdnl ---------------
5708e022d3cSDag-Erling Smørgravdnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc.  Any of gcc's
5718e022d3cSDag-Erling Smørgravdnl "-Werror" flags can interfere with configure-checks.  Those go into
5728e022d3cSDag-Erling Smørgravdnl EXTRA_CFLAGS.
5738e022d3cSDag-Erling Smørgravdnl
5748e022d3cSDag-Erling Smørgravdnl $1 = variable name to repair
5758e022d3cSDag-Erling Smørgravdefine([CF_FIX_WARNINGS],[
5768e022d3cSDag-Erling Smørgravif test "$GCC" = yes || test "$GXX" = yes
5778e022d3cSDag-Erling Smørgravthen
5788e022d3cSDag-Erling Smørgrav	case [$]$1 in
5798e022d3cSDag-Erling Smørgrav	(*-Werror=*)
5808e022d3cSDag-Erling Smørgrav		cf_temp_flags=
5818e022d3cSDag-Erling Smørgrav		for cf_temp_scan in [$]$1
5828e022d3cSDag-Erling Smørgrav		do
5838e022d3cSDag-Erling Smørgrav			case "x$cf_temp_scan" in
5848e022d3cSDag-Erling Smørgrav			(x-Werror=format*)
5858e022d3cSDag-Erling Smørgrav				CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
5868e022d3cSDag-Erling Smørgrav				;;
5878e022d3cSDag-Erling Smørgrav			(x-Werror=*)
5888e022d3cSDag-Erling Smørgrav				CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan)
5898e022d3cSDag-Erling Smørgrav				;;
5908e022d3cSDag-Erling Smørgrav			(*)
5918e022d3cSDag-Erling Smørgrav				CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
5928e022d3cSDag-Erling Smørgrav				;;
5938e022d3cSDag-Erling Smørgrav			esac
5948e022d3cSDag-Erling Smørgrav		done
5958e022d3cSDag-Erling Smørgrav		if test "x[$]$1" != "x$cf_temp_flags"
5968e022d3cSDag-Erling Smørgrav		then
5978e022d3cSDag-Erling Smørgrav			CF_VERBOSE(repairing $1: [$]$1)
5988e022d3cSDag-Erling Smørgrav			$1="$cf_temp_flags"
5998e022d3cSDag-Erling Smørgrav			CF_VERBOSE(... fixed [$]$1)
6008e022d3cSDag-Erling Smørgrav			CF_VERBOSE(... extra $EXTRA_CFLAGS)
6018e022d3cSDag-Erling Smørgrav		fi
6028e022d3cSDag-Erling Smørgrav		;;
6038e022d3cSDag-Erling Smørgrav	esac
6048e022d3cSDag-Erling Smørgravfi
6058e022d3cSDag-Erling SmørgravAC_SUBST(EXTRA_CFLAGS)
6068e022d3cSDag-Erling Smørgrav])dnl
6078e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
6088e022d3cSDag-Erling Smørgravdnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25
60998e903e7SBaptiste Daroussindnl -----------------
61098e903e7SBaptiste Daroussindnl Test for availability of useful gcc __attribute__ directives to quiet
61198e903e7SBaptiste Daroussindnl compiler warnings.  Though useful, not all are supported -- and contrary
61298e903e7SBaptiste Daroussindnl to documentation, unrecognized directives cause older compilers to barf.
61398e903e7SBaptiste DaroussinAC_DEFUN([CF_GCC_ATTRIBUTES],
6148e022d3cSDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_FGREP])dnl
6158e022d3cSDag-Erling SmørgravAC_REQUIRE([CF_C11_NORETURN])dnl
6168e022d3cSDag-Erling Smørgrav
6178e022d3cSDag-Erling Smørgravif test "$GCC" = yes || test "$GXX" = yes
61898e903e7SBaptiste Daroussinthen
61998e903e7SBaptiste Daroussincat > conftest.i <<EOF
62098e903e7SBaptiste Daroussin#ifndef GCC_PRINTF
62198e903e7SBaptiste Daroussin#define GCC_PRINTF 0
62298e903e7SBaptiste Daroussin#endif
62398e903e7SBaptiste Daroussin#ifndef GCC_SCANF
62498e903e7SBaptiste Daroussin#define GCC_SCANF 0
62598e903e7SBaptiste Daroussin#endif
62698e903e7SBaptiste Daroussin#ifndef GCC_NORETURN
62798e903e7SBaptiste Daroussin#define GCC_NORETURN /* nothing */
62898e903e7SBaptiste Daroussin#endif
62998e903e7SBaptiste Daroussin#ifndef GCC_UNUSED
63098e903e7SBaptiste Daroussin#define GCC_UNUSED /* nothing */
63198e903e7SBaptiste Daroussin#endif
63298e903e7SBaptiste DaroussinEOF
63398e903e7SBaptiste Daroussinif test "$GCC" = yes
63498e903e7SBaptiste Daroussinthen
63598e903e7SBaptiste Daroussin	AC_CHECKING([for $CC __attribute__ directives])
6368e022d3cSDag-Erling Smørgravcat > "conftest.$ac_ext" <<EOF
63798e903e7SBaptiste Daroussin#line __oline__ "${as_me:-configure}"
6388e022d3cSDag-Erling Smørgrav#include <stdio.h>
63998e903e7SBaptiste Daroussin#include "confdefs.h"
64098e903e7SBaptiste Daroussin#include "conftest.h"
64198e903e7SBaptiste Daroussin#include "conftest.i"
64298e903e7SBaptiste Daroussin#if	GCC_PRINTF
64398e903e7SBaptiste Daroussin#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
64498e903e7SBaptiste Daroussin#else
64598e903e7SBaptiste Daroussin#define GCC_PRINTFLIKE(fmt,var) /*nothing*/
64698e903e7SBaptiste Daroussin#endif
64798e903e7SBaptiste Daroussin#if	GCC_SCANF
64898e903e7SBaptiste Daroussin#define GCC_SCANFLIKE(fmt,var)  __attribute__((format(scanf,fmt,var)))
64998e903e7SBaptiste Daroussin#else
65098e903e7SBaptiste Daroussin#define GCC_SCANFLIKE(fmt,var)  /*nothing*/
65198e903e7SBaptiste Daroussin#endif
65298e903e7SBaptiste Daroussinextern void wow(char *,...) GCC_SCANFLIKE(1,2);
6538e022d3cSDag-Erling Smørgravextern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2);
6548e022d3cSDag-Erling Smørgravextern GCC_NORETURN void foo(void);
655b53bb29fSJung-uk Kimint main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; }
65698e903e7SBaptiste DaroussinEOF
65798e903e7SBaptiste Daroussin	cf_printf_attribute=no
65898e903e7SBaptiste Daroussin	cf_scanf_attribute=no
65998e903e7SBaptiste Daroussin	for cf_attribute in scanf printf unused noreturn
66098e903e7SBaptiste Daroussin	do
66198e903e7SBaptiste Daroussin		CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
66298e903e7SBaptiste Daroussin		cf_directive="__attribute__(($cf_attribute))"
66398e903e7SBaptiste Daroussin		echo "checking for $CC $cf_directive" 1>&AC_FD_CC
66498e903e7SBaptiste Daroussin
6658e022d3cSDag-Erling Smørgrav		case "$cf_attribute" in
6660f86d14eSJung-uk Kim		(printf)
66798e903e7SBaptiste Daroussin			cf_printf_attribute=yes
66898e903e7SBaptiste Daroussin			cat >conftest.h <<EOF
66998e903e7SBaptiste Daroussin#define GCC_$cf_ATTRIBUTE 1
67098e903e7SBaptiste DaroussinEOF
67198e903e7SBaptiste Daroussin			;;
6720f86d14eSJung-uk Kim		(scanf)
67398e903e7SBaptiste Daroussin			cf_scanf_attribute=yes
67498e903e7SBaptiste Daroussin			cat >conftest.h <<EOF
67598e903e7SBaptiste Daroussin#define GCC_$cf_ATTRIBUTE 1
67698e903e7SBaptiste DaroussinEOF
67798e903e7SBaptiste Daroussin			;;
6780f86d14eSJung-uk Kim		(*)
67998e903e7SBaptiste Daroussin			cat >conftest.h <<EOF
68098e903e7SBaptiste Daroussin#define GCC_$cf_ATTRIBUTE $cf_directive
68198e903e7SBaptiste DaroussinEOF
68298e903e7SBaptiste Daroussin			;;
68398e903e7SBaptiste Daroussin		esac
68498e903e7SBaptiste Daroussin
68598e903e7SBaptiste Daroussin		if AC_TRY_EVAL(ac_compile); then
68698e903e7SBaptiste Daroussin			test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
68798e903e7SBaptiste Daroussin			cat conftest.h >>confdefs.h
6888e022d3cSDag-Erling Smørgrav			case "$cf_attribute" in
6890f86d14eSJung-uk Kim			(noreturn)
6905b91e83fSBaptiste Daroussin				AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
6915b91e83fSBaptiste Daroussin				;;
6920f86d14eSJung-uk Kim			(printf)
6935b91e83fSBaptiste Daroussin				cf_value='/* nothing */'
6945b91e83fSBaptiste Daroussin				if test "$cf_printf_attribute" != no ; then
6955b91e83fSBaptiste Daroussin					cf_value='__attribute__((format(printf,fmt,var)))'
6965b91e83fSBaptiste Daroussin					AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
69798e903e7SBaptiste Daroussin				fi
6985b91e83fSBaptiste Daroussin				AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
69998e903e7SBaptiste Daroussin				;;
7000f86d14eSJung-uk Kim			(scanf)
7015b91e83fSBaptiste Daroussin				cf_value='/* nothing */'
7025b91e83fSBaptiste Daroussin				if test "$cf_scanf_attribute" != no ; then
7035b91e83fSBaptiste Daroussin					cf_value='__attribute__((format(scanf,fmt,var)))'
7045b91e83fSBaptiste Daroussin					AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
70598e903e7SBaptiste Daroussin				fi
7065b91e83fSBaptiste Daroussin				AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
7075b91e83fSBaptiste Daroussin				;;
7080f86d14eSJung-uk Kim			(unused)
7095b91e83fSBaptiste Daroussin				AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
71098e903e7SBaptiste Daroussin				;;
71198e903e7SBaptiste Daroussin			esac
71298e903e7SBaptiste Daroussin		fi
71398e903e7SBaptiste Daroussin	done
71498e903e7SBaptiste Daroussinelse
7158e022d3cSDag-Erling Smørgrav	${FGREP-fgrep} define conftest.i >>confdefs.h
71698e903e7SBaptiste Daroussinfi
7178e022d3cSDag-Erling Smørgravrm -rf ./conftest*
71898e903e7SBaptiste Daroussinfi
71998e903e7SBaptiste Daroussin])dnl
72098e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
721*822ca327SBaptiste Daroussindnl CF_GCC_VERSION version: 9 updated: 2023/03/05 14:30:13
72298e903e7SBaptiste Daroussindnl --------------
723b53bb29fSJung-uk Kimdnl Find version of gcc, and (because icc/clang pretend to be gcc without being
724b53bb29fSJung-uk Kimdnl compatible), attempt to determine if icc/clang is actually used.
72598e903e7SBaptiste DaroussinAC_DEFUN([CF_GCC_VERSION],[
72698e903e7SBaptiste DaroussinAC_REQUIRE([AC_PROG_CC])
72798e903e7SBaptiste DaroussinGCC_VERSION=none
72898e903e7SBaptiste Daroussinif test "$GCC" = yes ; then
72998e903e7SBaptiste Daroussin	AC_MSG_CHECKING(version of $CC)
730*822ca327SBaptiste Daroussin	GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^[[^(]]*([[^)]][[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
73198e903e7SBaptiste Daroussin	test -z "$GCC_VERSION" && GCC_VERSION=unknown
73298e903e7SBaptiste Daroussin	AC_MSG_RESULT($GCC_VERSION)
73398e903e7SBaptiste Daroussinfi
734b53bb29fSJung-uk KimCF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
735b53bb29fSJung-uk KimCF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
73698e903e7SBaptiste Daroussin])dnl
73798e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
7388e022d3cSDag-Erling Smørgravdnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59
73998e903e7SBaptiste Daroussindnl ---------------
74098e903e7SBaptiste Daroussindnl Check if the compiler supports useful warning options.  There's a few that
74198e903e7SBaptiste Daroussindnl we don't use, simply because they're too noisy:
74298e903e7SBaptiste Daroussindnl
74398e903e7SBaptiste Daroussindnl	-Wconversion (useful in older versions of gcc, but not in gcc 2.7.x)
744b53bb29fSJung-uk Kimdnl	-Winline (usually not worthwhile)
74598e903e7SBaptiste Daroussindnl	-Wredundant-decls (system headers make this too noisy)
74698e903e7SBaptiste Daroussindnl	-Wtraditional (combines too many unrelated messages, only a few useful)
74798e903e7SBaptiste Daroussindnl	-Wwrite-strings (too noisy, but should review occasionally).  This
74898e903e7SBaptiste Daroussindnl		is enabled for ncurses using "--enable-const".
74998e903e7SBaptiste Daroussindnl	-pedantic
75098e903e7SBaptiste Daroussindnl
75198e903e7SBaptiste Daroussindnl Parameter:
75298e903e7SBaptiste Daroussindnl	$1 is an optional list of gcc warning flags that a particular
75398e903e7SBaptiste Daroussindnl		application might want to use, e.g., "no-unused" for
75498e903e7SBaptiste Daroussindnl		-Wno-unused
75598e903e7SBaptiste Daroussindnl Special:
75698e903e7SBaptiste Daroussindnl	If $with_ext_const is "yes", add a check for -Wwrite-strings
75798e903e7SBaptiste Daroussindnl
75898e903e7SBaptiste DaroussinAC_DEFUN([CF_GCC_WARNINGS],
75998e903e7SBaptiste Daroussin[
76098e903e7SBaptiste DaroussinAC_REQUIRE([CF_GCC_VERSION])
761b53bb29fSJung-uk Kimif test "x$have_x" = xyes; then CF_CONST_X_STRING fi
7628e022d3cSDag-Erling Smørgravcat > "conftest.$ac_ext" <<EOF
76398e903e7SBaptiste Daroussin#line __oline__ "${as_me:-configure}"
76498e903e7SBaptiste Daroussinint main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
76598e903e7SBaptiste DaroussinEOF
76698e903e7SBaptiste Daroussinif test "$INTEL_COMPILER" = yes
76798e903e7SBaptiste Daroussinthen
76898e903e7SBaptiste Daroussin# The "-wdXXX" options suppress warnings:
76998e903e7SBaptiste Daroussin# remark #1419: external declaration in primary source file
77098e903e7SBaptiste Daroussin# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
77198e903e7SBaptiste Daroussin# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
77298e903e7SBaptiste Daroussin# remark #193: zero used for undefined preprocessing identifier
77398e903e7SBaptiste Daroussin# remark #593: variable "curs_sb_left_arrow" was set but never used
77498e903e7SBaptiste Daroussin# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
77598e903e7SBaptiste Daroussin# remark #869: parameter "tw" was never referenced
77698e903e7SBaptiste Daroussin# remark #981: operands are evaluated in unspecified order
77798e903e7SBaptiste Daroussin# warning #279: controlling expression is constant
77898e903e7SBaptiste Daroussin
77998e903e7SBaptiste Daroussin	AC_CHECKING([for $CC warning options])
78098e903e7SBaptiste Daroussin	cf_save_CFLAGS="$CFLAGS"
7818e022d3cSDag-Erling Smørgrav	EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall"
78298e903e7SBaptiste Daroussin	for cf_opt in \
78398e903e7SBaptiste Daroussin		wd1419 \
78498e903e7SBaptiste Daroussin		wd1683 \
78598e903e7SBaptiste Daroussin		wd1684 \
78698e903e7SBaptiste Daroussin		wd193 \
78798e903e7SBaptiste Daroussin		wd593 \
78898e903e7SBaptiste Daroussin		wd279 \
78998e903e7SBaptiste Daroussin		wd810 \
79098e903e7SBaptiste Daroussin		wd869 \
79198e903e7SBaptiste Daroussin		wd981
79298e903e7SBaptiste Daroussin	do
79398e903e7SBaptiste Daroussin		CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
79498e903e7SBaptiste Daroussin		if AC_TRY_EVAL(ac_compile); then
79598e903e7SBaptiste Daroussin			test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
79698e903e7SBaptiste Daroussin			EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
79798e903e7SBaptiste Daroussin		fi
79898e903e7SBaptiste Daroussin	done
79998e903e7SBaptiste Daroussin	CFLAGS="$cf_save_CFLAGS"
800b53bb29fSJung-uk Kimelif test "$GCC" = yes && test "$GCC_VERSION" != "unknown"
80198e903e7SBaptiste Daroussinthen
80298e903e7SBaptiste Daroussin	AC_CHECKING([for $CC warning options])
80398e903e7SBaptiste Daroussin	cf_save_CFLAGS="$CFLAGS"
80498e903e7SBaptiste Daroussin	cf_warn_CONST=""
80598e903e7SBaptiste Daroussin	test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
8064b4a8fcaSBaptiste Daroussin	cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
8074b4a8fcaSBaptiste Daroussin	test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
80898e903e7SBaptiste Daroussin	for cf_opt in W Wall \
80998e903e7SBaptiste Daroussin		Wbad-function-cast \
81098e903e7SBaptiste Daroussin		Wcast-align \
81198e903e7SBaptiste Daroussin		Wcast-qual \
8124b4a8fcaSBaptiste Daroussin		Wdeclaration-after-statement \
8134b4a8fcaSBaptiste Daroussin		Wextra \
81498e903e7SBaptiste Daroussin		Winline \
81598e903e7SBaptiste Daroussin		Wmissing-declarations \
81698e903e7SBaptiste Daroussin		Wmissing-prototypes \
81798e903e7SBaptiste Daroussin		Wnested-externs \
81898e903e7SBaptiste Daroussin		Wpointer-arith \
81998e903e7SBaptiste Daroussin		Wshadow \
82098e903e7SBaptiste Daroussin		Wstrict-prototypes \
821b53bb29fSJung-uk Kim		Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1
82298e903e7SBaptiste Daroussin	do
82398e903e7SBaptiste Daroussin		CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
82498e903e7SBaptiste Daroussin		if AC_TRY_EVAL(ac_compile); then
82598e903e7SBaptiste Daroussin			test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
8268e022d3cSDag-Erling Smørgrav			case "$cf_opt" in
8270f86d14eSJung-uk Kim			(Winline)
8288e022d3cSDag-Erling Smørgrav				case "$GCC_VERSION" in
8290f86d14eSJung-uk Kim				([[34]].*)
83098e903e7SBaptiste Daroussin					CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
83198e903e7SBaptiste Daroussin					continue;;
83298e903e7SBaptiste Daroussin				esac
83398e903e7SBaptiste Daroussin				;;
8340f86d14eSJung-uk Kim			(Wpointer-arith)
8358e022d3cSDag-Erling Smørgrav				case "$GCC_VERSION" in
8360f86d14eSJung-uk Kim				([[12]].*)
8375b91e83fSBaptiste Daroussin					CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
8385b91e83fSBaptiste Daroussin					continue;;
8395b91e83fSBaptiste Daroussin				esac
8405b91e83fSBaptiste Daroussin				;;
84198e903e7SBaptiste Daroussin			esac
84298e903e7SBaptiste Daroussin			EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
84398e903e7SBaptiste Daroussin		fi
84498e903e7SBaptiste Daroussin	done
84598e903e7SBaptiste Daroussin	CFLAGS="$cf_save_CFLAGS"
84698e903e7SBaptiste Daroussinfi
8478e022d3cSDag-Erling Smørgravrm -rf ./conftest*
84898e903e7SBaptiste Daroussin
84998e903e7SBaptiste DaroussinAC_SUBST(EXTRA_CFLAGS)
85098e903e7SBaptiste Daroussin])dnl
85198e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
8528e022d3cSDag-Erling Smørgravdnl CF_GETOPT_HEADER version: 8 updated: 2021/06/19 19:16:16
853b53bb29fSJung-uk Kimdnl ----------------
854b53bb29fSJung-uk Kimdnl Check for getopt's variables which are commonly defined in stdlib.h,
855b53bb29fSJung-uk Kimdnl unistd.h or (nonstandard) in getopt.h
856b53bb29fSJung-uk KimAC_DEFUN([CF_GETOPT_HEADER],
857b53bb29fSJung-uk Kim[
858b53bb29fSJung-uk KimAC_HAVE_HEADERS(unistd.h getopt.h)
859b53bb29fSJung-uk KimAC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[
860b53bb29fSJung-uk Kimcf_cv_getopt_header=none
861b53bb29fSJung-uk Kimfor cf_header in stdio.h stdlib.h unistd.h getopt.h
862b53bb29fSJung-uk Kimdo
863b53bb29fSJung-uk KimAC_TRY_COMPILE([
864b53bb29fSJung-uk Kim#include <$cf_header>],
8658e022d3cSDag-Erling Smørgrav[int x = optind; char *y = optarg; (void)x; (void)y],
866b53bb29fSJung-uk Kim[cf_cv_getopt_header=$cf_header
867b53bb29fSJung-uk Kim break])
868b53bb29fSJung-uk Kimdone
869b53bb29fSJung-uk Kim])
8708e022d3cSDag-Erling Smørgravif test "$cf_cv_getopt_header" != none ; then
871b53bb29fSJung-uk Kim	AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header])
872b53bb29fSJung-uk Kimfi
8738e022d3cSDag-Erling Smørgravif test "$cf_cv_getopt_header" = getopt.h ; then
874b53bb29fSJung-uk Kim	AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h])
875b53bb29fSJung-uk Kimfi
876b53bb29fSJung-uk Kim])dnl
877b53bb29fSJung-uk Kimdnl ---------------------------------------------------------------------------
878b53bb29fSJung-uk Kimdnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41
87998e903e7SBaptiste Daroussindnl -------------
88098e903e7SBaptiste Daroussindnl Check if we must define _GNU_SOURCE to get a reasonable value for
88198e903e7SBaptiste Daroussindnl _XOPEN_SOURCE, upon which many POSIX definitions depend.  This is a defect
88298e903e7SBaptiste Daroussindnl (or misfeature) of glibc2, which breaks portability of many applications,
88398e903e7SBaptiste Daroussindnl since it is interwoven with GNU extensions.
88498e903e7SBaptiste Daroussindnl
88598e903e7SBaptiste Daroussindnl Well, yes we could work around it...
886b53bb29fSJung-uk Kimdnl
887b53bb29fSJung-uk Kimdnl Parameters:
888b53bb29fSJung-uk Kimdnl	$1 is the nominal value for _XOPEN_SOURCE
88998e903e7SBaptiste DaroussinAC_DEFUN([CF_GNU_SOURCE],
89098e903e7SBaptiste Daroussin[
891b53bb29fSJung-uk Kimcf_gnu_xopen_source=ifelse($1,,500,$1)
892b53bb29fSJung-uk Kim
893b53bb29fSJung-uk KimAC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[
894b53bb29fSJung-uk KimAC_TRY_COMPILE([#include <sys/types.h>],[
895b53bb29fSJung-uk Kim	#if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0
896b53bb29fSJung-uk Kim		return 0;
897b53bb29fSJung-uk Kim	#elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0
898b53bb29fSJung-uk Kim		return 0;
899b53bb29fSJung-uk Kim	#else
900b53bb29fSJung-uk Kim	#	error not GNU C library
901b53bb29fSJung-uk Kim	#endif],
902b53bb29fSJung-uk Kim	[cf_cv_gnu_library=yes],
903b53bb29fSJung-uk Kim	[cf_cv_gnu_library=no])
904b53bb29fSJung-uk Kim])
905b53bb29fSJung-uk Kim
906b53bb29fSJung-uk Kimif test x$cf_cv_gnu_library = xyes; then
907b53bb29fSJung-uk Kim
908b53bb29fSJung-uk Kim	# With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE
909b53bb29fSJung-uk Kim	# was changed to help a little.  newlib incorporated the change about 4
910b53bb29fSJung-uk Kim	# years later.
911b53bb29fSJung-uk Kim	AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[
912b53bb29fSJung-uk Kim		cf_save="$CPPFLAGS"
913b53bb29fSJung-uk Kim		CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
914b53bb29fSJung-uk Kim		AC_TRY_COMPILE([#include <sys/types.h>],[
915b53bb29fSJung-uk Kim			#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2)
916b53bb29fSJung-uk Kim				return 0;
917b53bb29fSJung-uk Kim			#elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3)
918b53bb29fSJung-uk Kim				return 0;
919b53bb29fSJung-uk Kim			#else
920b53bb29fSJung-uk Kim			#	error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old
921b53bb29fSJung-uk Kim			#endif],
922b53bb29fSJung-uk Kim			[cf_cv_gnu_library_219=yes],
923b53bb29fSJung-uk Kim			[cf_cv_gnu_library_219=no])
924b53bb29fSJung-uk Kim		CPPFLAGS="$cf_save"
925b53bb29fSJung-uk Kim	])
926b53bb29fSJung-uk Kim
927b53bb29fSJung-uk Kim	if test "x$cf_cv_gnu_library_219" = xyes; then
928b53bb29fSJung-uk Kim		cf_save="$CPPFLAGS"
929b53bb29fSJung-uk Kim		AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[
930b53bb29fSJung-uk Kim			CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source)
931b53bb29fSJung-uk Kim			AC_TRY_COMPILE([
932b53bb29fSJung-uk Kim				#include <limits.h>
933b53bb29fSJung-uk Kim				#include <sys/types.h>
934b53bb29fSJung-uk Kim				],[
935b53bb29fSJung-uk Kim				#if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1)
936b53bb29fSJung-uk Kim					return 0;
937b53bb29fSJung-uk Kim				#else
938b53bb29fSJung-uk Kim				#	error GNU C library is too old
939b53bb29fSJung-uk Kim				#endif],
940b53bb29fSJung-uk Kim				[cf_cv_gnu_dftsrc_219=yes],
941b53bb29fSJung-uk Kim				[cf_cv_gnu_dftsrc_219=no])
942b53bb29fSJung-uk Kim			])
943b53bb29fSJung-uk Kim		test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save"
944b53bb29fSJung-uk Kim	else
945b53bb29fSJung-uk Kim		cf_cv_gnu_dftsrc_219=maybe
946b53bb29fSJung-uk Kim	fi
947b53bb29fSJung-uk Kim
948b53bb29fSJung-uk Kim	if test "x$cf_cv_gnu_dftsrc_219" != xyes; then
949b53bb29fSJung-uk Kim
95098e903e7SBaptiste Daroussin		AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[
95198e903e7SBaptiste Daroussin		AC_TRY_COMPILE([#include <sys/types.h>],[
95298e903e7SBaptiste Daroussin			#ifndef _XOPEN_SOURCE
953b53bb29fSJung-uk Kim			#error	expected _XOPEN_SOURCE to be defined
95498e903e7SBaptiste Daroussin			#endif],
95598e903e7SBaptiste Daroussin			[cf_cv_gnu_source=no],
95698e903e7SBaptiste Daroussin			[cf_save="$CPPFLAGS"
957b53bb29fSJung-uk Kim			 CF_ADD_CFLAGS(-D_GNU_SOURCE)
95898e903e7SBaptiste Daroussin			 AC_TRY_COMPILE([#include <sys/types.h>],[
95998e903e7SBaptiste Daroussin				#ifdef _XOPEN_SOURCE
960b53bb29fSJung-uk Kim				#error	expected _XOPEN_SOURCE to be undefined
96198e903e7SBaptiste Daroussin				#endif],
96298e903e7SBaptiste Daroussin				[cf_cv_gnu_source=no],
96398e903e7SBaptiste Daroussin				[cf_cv_gnu_source=yes])
96498e903e7SBaptiste Daroussin			CPPFLAGS="$cf_save"
96598e903e7SBaptiste Daroussin			])
96698e903e7SBaptiste Daroussin		])
9672aca18c7SJung-uk Kim
9682aca18c7SJung-uk Kim		if test "$cf_cv_gnu_source" = yes
9692aca18c7SJung-uk Kim		then
9702aca18c7SJung-uk Kim		AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[
971b53bb29fSJung-uk Kim			CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE)
9722aca18c7SJung-uk Kim			AC_TRY_COMPILE([#include <sys/types.h>],[
9732aca18c7SJung-uk Kim				#ifdef _DEFAULT_SOURCE
974b53bb29fSJung-uk Kim				#error	expected _DEFAULT_SOURCE to be undefined
9752aca18c7SJung-uk Kim				#endif],
9762aca18c7SJung-uk Kim				[cf_cv_default_source=no],
9772aca18c7SJung-uk Kim				[cf_cv_default_source=yes])
9782aca18c7SJung-uk Kim			])
979b53bb29fSJung-uk Kim			if test "$cf_cv_default_source" = yes
980b53bb29fSJung-uk Kim			then
981b53bb29fSJung-uk Kim				CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE)
982b53bb29fSJung-uk Kim			fi
983b53bb29fSJung-uk Kim		fi
984b53bb29fSJung-uk Kim	fi
985b53bb29fSJung-uk Kim
9862aca18c7SJung-uk Kimfi
98798e903e7SBaptiste Daroussin])dnl
98898e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
989*822ca327SBaptiste Daroussindnl CF_INSTALL_MAN version: 5 updated: 2023/05/21 15:53:07
990*822ca327SBaptiste Daroussindnl --------------
991*822ca327SBaptiste Daroussindnl Call this to generate a script "install-man" which uses the detected
992*822ca327SBaptiste Daroussindnl manpage-format to compress the resulting manpage.  Providing this as a
993*822ca327SBaptiste Daroussindnl macro simplifies including the script in different programs.
994*822ca327SBaptiste Daroussindnl
995*822ca327SBaptiste Daroussindnl The generated script assumes that the program can be renamed, using two
996*822ca327SBaptiste Daroussindnl symbols in the manpage, e.g.,
997*822ca327SBaptiste Daroussindnl		.ds N Yacc
998*822ca327SBaptiste Daroussindnl     .ds n yacc
999*822ca327SBaptiste Daroussindnl which are later used as \*N and \*n, as well as a special case in the
1000*822ca327SBaptiste Daroussindnl synopsis to work around limitations of makewhatis.
1001*822ca327SBaptiste Daroussindnl
1002*822ca327SBaptiste Daroussindnl Script parameters:
1003*822ca327SBaptiste Daroussindnl	$1 = input file
1004*822ca327SBaptiste Daroussindnl	$2 = output filename
1005*822ca327SBaptiste Daroussindnl
1006*822ca327SBaptiste Daroussindnl or (uninstall):
1007*822ca327SBaptiste Daroussindnl	$1 = output filename
1008*822ca327SBaptiste DaroussinAC_DEFUN([CF_INSTALL_MAN],
1009*822ca327SBaptiste Daroussin[
1010*822ca327SBaptiste DaroussinAC_REQUIRE([AC_ARG_PROGRAM])
1011*822ca327SBaptiste DaroussinAC_REQUIRE([AC_PROG_INSTALL])
1012*822ca327SBaptiste DaroussinAC_REQUIRE([AC_LN_S])
1013*822ca327SBaptiste DaroussinAC_REQUIRE([CF_MANPAGE_FORMAT])
1014*822ca327SBaptiste Daroussincf_install_man=install-man
1015*822ca327SBaptiste Daroussinac_config_files="$ac_config_files $cf_install_man"
1016*822ca327SBaptiste Daroussincf_install_man=$cf_install_man.in
1017*822ca327SBaptiste Daroussinecho [$]as_me: creating $cf_install_man
1018*822ca327SBaptiste Daroussincat >[$]cf_install_man <<"CF_EOF"
1019*822ca327SBaptiste Daroussin#!/bin/sh
1020*822ca327SBaptiste Daroussin# generated by CF_INSTALL_MAN
1021*822ca327SBaptiste Daroussin
1022*822ca327SBaptiste DaroussinLANG=C;     export LANG
1023*822ca327SBaptiste DaroussinLC_ALL=C;   export LC_ALL
1024*822ca327SBaptiste DaroussinLC_CTYPE=C; export LC_CTYPE
1025*822ca327SBaptiste DaroussinLANGUAGE=C; export LANGUAGE
1026*822ca327SBaptiste Daroussin
1027*822ca327SBaptiste DaroussinINSTALL="@INSTALL@"
1028*822ca327SBaptiste DaroussinINSTALL_DATA="@INSTALL_DATA@"
1029*822ca327SBaptiste Daroussin
1030*822ca327SBaptiste Daroussinusage() {
1031*822ca327SBaptiste Daroussin	cat <<EOF
1032*822ca327SBaptiste DaroussinUsage: install-man [[-l]] [[source]] target
1033*822ca327SBaptiste DaroussinEOF
1034*822ca327SBaptiste Daroussin	exit 1
1035*822ca327SBaptiste Daroussin}
1036*822ca327SBaptiste Daroussin
1037*822ca327SBaptiste Daroussinfailed() {
1038*822ca327SBaptiste Daroussin	echo "?? [$]*" >&2
1039*822ca327SBaptiste Daroussin	exit 1
1040*822ca327SBaptiste Daroussin}
1041*822ca327SBaptiste Daroussin
1042*822ca327SBaptiste Daroussintest [$]# != 0 || usage
1043*822ca327SBaptiste DaroussinOPTS=
1044*822ca327SBaptiste Daroussincase "x[$]1" in
1045*822ca327SBaptiste Daroussin(x-l)
1046*822ca327SBaptiste Daroussin	OPTS="link"
1047*822ca327SBaptiste Daroussin	shift
1048*822ca327SBaptiste Daroussin	;;
1049*822ca327SBaptiste Daroussin(x-*)
1050*822ca327SBaptiste Daroussin	usage
1051*822ca327SBaptiste Daroussin	;;
1052*822ca327SBaptiste Daroussinesac
1053*822ca327SBaptiste Daroussin
1054*822ca327SBaptiste Daroussinsource=
1055*822ca327SBaptiste Daroussinif test [$]# = 2 ; then
1056*822ca327SBaptiste Daroussin	source=[$]1; shift
1057*822ca327SBaptiste Daroussin	target=[$]1
1058*822ca327SBaptiste Daroussinelif test [$]# = 1 ; then
1059*822ca327SBaptiste Daroussin	test -n "$OPTS" && usage
1060*822ca327SBaptiste Daroussin	target=[$]1
1061*822ca327SBaptiste Daroussinelse
1062*822ca327SBaptiste Daroussin	usage
1063*822ca327SBaptiste Daroussinfi
1064*822ca327SBaptiste Daroussin
1065*822ca327SBaptiste Daroussinorigin_name=`echo "$source" |sed -e 's%^.*/%%' -e 's%\..*%%'`
1066*822ca327SBaptiste Daroussinactual_name=`echo "$origin_name" |sed '@program_transform_name@'`
1067*822ca327SBaptiste Daroussinleading_cap=`echo "$actual_name" | sed -e 's%^\(.\).*$%\1%' | tr a-z A-Z``echo "$actual_name" | sed -e 's%^.%%'`
1068*822ca327SBaptiste Daroussincapitalized=`echo "$actual_name" | tr a-z A-Z`
1069*822ca327SBaptiste Daroussin
1070*822ca327SBaptiste Daroussincf_tmpdir=`mktemp -d`
1071*822ca327SBaptiste Daroussintrap 'rm -rf "$cf_tmpdir"; exit 1' 1 2 3 15
1072*822ca327SBaptiste Daroussintrap 'rm -rf "$cf_tmpdir"; exit 0' 0
1073*822ca327SBaptiste Daroussin
1074*822ca327SBaptiste Daroussinif test -n "$source" ; then
1075*822ca327SBaptiste Daroussin	suffix=
1076*822ca327SBaptiste Daroussin	test -n "@cf_manpage_so_strip" && suffix=".@cf_manpage_so_strip@"
1077*822ca327SBaptiste Daroussin	if test "x$OPTS" = xlink ; then
1078*822ca327SBaptiste Daroussin		source_dir=`echo "$source" | sed -e "s%/[[^/]]*$%%"`
1079*822ca327SBaptiste Daroussin		target_dir=`echo "$target" | sed -e "s%/[[^/]]*$%%"`
1080*822ca327SBaptiste Daroussin		sourcelink="${source}${suffix}"
1081*822ca327SBaptiste Daroussin		targetfile="${target}${suffix}"
1082*822ca327SBaptiste Daroussin		targetlink="${target_dir}/${sourcelink}"
1083*822ca327SBaptiste Daroussin		if test ! -d "$target_dir" ; then
1084*822ca327SBaptiste Daroussin			failed "target directory does not exist: $target_dir"
1085*822ca327SBaptiste Daroussin		elif test ! -f "$targetfile" ; then
1086*822ca327SBaptiste Daroussin			failed "target file does not exist: $targetfile"
1087*822ca327SBaptiste Daroussin		elif test "$source" != "$source_dir" ; then
1088*822ca327SBaptiste Daroussin			failed "unexpected directory for source-link: $source_dir"
1089*822ca327SBaptiste Daroussin		fi
1090*822ca327SBaptiste Daroussin		test -f "$targetlink" && failed "already exists $targetlink"
1091*822ca327SBaptiste Daroussin		( cd "$target_dir" && @LN_S@ "`echo "$targetfile" | sed -e 's%^.*/%%'`" "$sourcelink" )
1092*822ca327SBaptiste Daroussin		test -f "$targetlink" || failed "cannot create $targetlink"
1093*822ca327SBaptiste Daroussin		target="$targetlink"
1094*822ca327SBaptiste Daroussin	else
1095*822ca327SBaptiste Daroussin		echo "** installing $source to $target"
1096*822ca327SBaptiste Daroussin		interim="$cf_tmpdir"/"`basename $source`"
1097*822ca327SBaptiste Daroussin		if test "x$origin_name" != "x$actual_name" ; then
1098*822ca327SBaptiste Daroussin			sed \
1099*822ca327SBaptiste Daroussin				-e "/^.ds N/s%N.*%N $leading_cap%" \
1100*822ca327SBaptiste Daroussin				-e "/^.ds n/s%n.*%n $actual_name%" \
1101*822ca327SBaptiste Daroussin				-e "/^\.TH/s%[[ ]][[ ]]*[[^ ]][[^ ]]*% $capitalized%" \
1102*822ca327SBaptiste Daroussin				-e "/^\.SH[[ ]][[ ]]*NAME/,/[[ ]]\\\\-[[ ]]/s%^\\\\\\*[[Nn]]%$actual_name%" \
1103*822ca327SBaptiste Daroussin				"$source" >"$interim" || exit 1
1104*822ca327SBaptiste Daroussin			diff -c "$source" "$interim"
1105*822ca327SBaptiste Daroussin		else
1106*822ca327SBaptiste Daroussin			cp "$source" "$interim" || exit 1
1107*822ca327SBaptiste Daroussin		fi
1108*822ca327SBaptiste Daroussin		if test -n "@cf_manpage_compress@" ; then
1109*822ca327SBaptiste Daroussin			@cf_manpage_compress@ "$interim"
1110*822ca327SBaptiste Daroussin			source="${interim}${suffix}"
1111*822ca327SBaptiste Daroussin		fi
1112*822ca327SBaptiste Daroussin		if test -d "$target" ; then
1113*822ca327SBaptiste Daroussin			target="$target"/"$source"
1114*822ca327SBaptiste Daroussin		else
1115*822ca327SBaptiste Daroussin			test -n "@cf_manpage_compress@" && target="${target}.@cf_manpage_so_strip@"
1116*822ca327SBaptiste Daroussin		fi
1117*822ca327SBaptiste Daroussin		$INSTALL_DATA "$source" "$target" || exit 1
1118*822ca327SBaptiste Daroussin	fi
1119*822ca327SBaptiste Daroussin	echo "...installed $target"
1120*822ca327SBaptiste Daroussinelse
1121*822ca327SBaptiste Daroussin	echo "** removing $target"
1122*822ca327SBaptiste Daroussin	test -n "@cf_manpage_compress@" && target="${target}.@cf_manpage_so_strip@"
1123*822ca327SBaptiste Daroussin	if test -f "$target" ; then
1124*822ca327SBaptiste Daroussin		rm -f "$target"
1125*822ca327SBaptiste Daroussin		echo "...removed $target"
1126*822ca327SBaptiste Daroussin	else
1127*822ca327SBaptiste Daroussin		echo "...not found"
1128*822ca327SBaptiste Daroussin	fi
1129*822ca327SBaptiste Daroussinfi
1130*822ca327SBaptiste Daroussinexit 0
1131*822ca327SBaptiste DaroussinCF_EOF
1132*822ca327SBaptiste Daroussin])dnl
1133*822ca327SBaptiste Daroussindnl ---------------------------------------------------------------------------
1134*822ca327SBaptiste Daroussindnl CF_INTEL_COMPILER version: 9 updated: 2023/02/18 17:41:25
113598e903e7SBaptiste Daroussindnl -----------------
113698e903e7SBaptiste Daroussindnl Check if the given compiler is really the Intel compiler for Linux.  It
113798e903e7SBaptiste Daroussindnl tries to imitate gcc, but does not return an error when it finds a mismatch
113898e903e7SBaptiste Daroussindnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
113998e903e7SBaptiste Daroussindnl
114098e903e7SBaptiste Daroussindnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
114198e903e7SBaptiste Daroussindnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
114298e903e7SBaptiste Daroussindnl the wrappers for gcc and g++ warnings.
114398e903e7SBaptiste Daroussindnl
114498e903e7SBaptiste Daroussindnl $1 = GCC (default) or GXX
114598e903e7SBaptiste Daroussindnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
114698e903e7SBaptiste Daroussindnl $3 = CFLAGS (default) or CXXFLAGS
114798e903e7SBaptiste DaroussinAC_DEFUN([CF_INTEL_COMPILER],[
11485b91e83fSBaptiste DaroussinAC_REQUIRE([AC_CANONICAL_HOST])
114998e903e7SBaptiste Daroussinifelse([$2],,INTEL_COMPILER,[$2])=no
115098e903e7SBaptiste Daroussin
115198e903e7SBaptiste Daroussinif test "$ifelse([$1],,[$1],GCC)" = yes ; then
11528e022d3cSDag-Erling Smørgrav	case "$host_os" in
11530f86d14eSJung-uk Kim	(linux*|gnu*)
115498e903e7SBaptiste Daroussin		AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
115598e903e7SBaptiste Daroussin		cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
115698e903e7SBaptiste Daroussin		ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
115798e903e7SBaptiste Daroussin		AC_TRY_COMPILE([],[
115898e903e7SBaptiste Daroussin#ifdef __INTEL_COMPILER
115998e903e7SBaptiste Daroussin#else
1160*822ca327SBaptiste Daroussin#error __INTEL_COMPILER is not defined
116198e903e7SBaptiste Daroussin#endif
116298e903e7SBaptiste Daroussin],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
11630c8de5b0SBaptiste Daroussincf_save_CFLAGS="$cf_save_CFLAGS -we147"
116498e903e7SBaptiste Daroussin],[])
116598e903e7SBaptiste Daroussin		ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
116698e903e7SBaptiste Daroussin		AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
116798e903e7SBaptiste Daroussin		;;
116898e903e7SBaptiste Daroussin	esac
116998e903e7SBaptiste Daroussinfi
117098e903e7SBaptiste Daroussin])dnl
117198e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
11728e022d3cSDag-Erling Smørgravdnl CF_MAKE_DOCS version: 5 updated: 2021/01/10 16:05:11
11734b4a8fcaSBaptiste Daroussindnl ------------
11744b4a8fcaSBaptiste Daroussindnl $1 = name(s) to generate rules for
11754b4a8fcaSBaptiste Daroussindnl $2 = suffix of corresponding manpages used as input.
11760f86d14eSJung-uk Kimdnl
11770f86d14eSJung-uk Kimdnl This works best if called at the end of configure.in, following CF_WITH_MAN2HTML
11784b4a8fcaSBaptiste Daroussindefine([CF_MAKE_DOCS],[
11794b4a8fcaSBaptiste Daroussintest -z "$cf_make_docs" && cf_make_docs=0
11804b4a8fcaSBaptiste Daroussin
11814b4a8fcaSBaptiste Daroussincf_output=makefile
11824b4a8fcaSBaptiste Daroussintest -f "$cf_output" || cf_output=Makefile
11834b4a8fcaSBaptiste Daroussin
11844b4a8fcaSBaptiste Daroussinif test "$cf_make_docs" = 0
11854b4a8fcaSBaptiste Daroussinthen
11860f86d14eSJung-uk Kimcat >>$cf_output <<CF_EOF
11874b4a8fcaSBaptiste Daroussin################################################################################
11880f86d14eSJung-uk Kim## generated by $0
11894b4a8fcaSBaptiste Daroussin.SUFFIXES : .html .$2 .man .ps .pdf .txt
11904b4a8fcaSBaptiste Daroussin
11910f86d14eSJung-uk Kim${NROFF_NOTE}.$2.txt :
11920f86d14eSJung-uk Kim${NROFF_NOTE}	[\$](SHELL) -c "tbl [\$]*.$2 | nroff -man | col -bx" >[\$]@
11934b4a8fcaSBaptiste Daroussin
11940f86d14eSJung-uk Kim${GROFF_NOTE}.ps.pdf :
11950f86d14eSJung-uk Kim${GROFF_NOTE}	ps2pdf [\$]*.ps
11960f86d14eSJung-uk Kim${GROFF_NOTE}
11970f86d14eSJung-uk Kim${GROFF_NOTE}.$2.ps :
11980f86d14eSJung-uk Kim${GROFF_NOTE}	[\$](SHELL) -c "tbl [\$]*.$2 | groff -man" >[\$]@
11990f86d14eSJung-uk Kim${GROFF_NOTE}
12000f86d14eSJung-uk Kim${GROFF_NOTE}.$2.txt :
12018e022d3cSDag-Erling Smørgrav${GROFF_NOTE}	GROFF_NO_SGR=stupid [\$](SHELL) -c "tbl [\$]*.$2 | nroff -rHY=0 -Tascii -man | col -bx" >[\$]@
12024b4a8fcaSBaptiste Daroussin
12030f86d14eSJung-uk Kim${MAN2HTML_NOTE}.$2.html :
12040f86d14eSJung-uk Kim${MAN2HTML_NOTE}	./${MAN2HTML_TEMP} [\$]* $2 man >[\$]@
12054b4a8fcaSBaptiste Daroussin
12064b4a8fcaSBaptiste DaroussinCF_EOF
12074b4a8fcaSBaptiste Daroussin	cf_make_docs=1
12084b4a8fcaSBaptiste Daroussinfi
12094b4a8fcaSBaptiste Daroussin
12104b4a8fcaSBaptiste Daroussinfor cf_name in $1
12114b4a8fcaSBaptiste Daroussindo
12124b4a8fcaSBaptiste Daroussincat >>$cf_output <<CF_EOF
12134b4a8fcaSBaptiste Daroussin################################################################################
12140f86d14eSJung-uk Kim${NROFF_NOTE}docs docs-$cf_name :: $cf_name.txt
12150f86d14eSJung-uk Kim${MAN2HTML_NOTE}docs docs-$cf_name :: $cf_name.html
12160f86d14eSJung-uk Kim${GROFF_NOTE}docs docs-$cf_name :: $cf_name.pdf
12170f86d14eSJung-uk Kim${GROFF_NOTE}docs docs-$cf_name :: $cf_name.ps
12180f86d14eSJung-uk Kim${GROFF_NOTE}docs docs-$cf_name :: $cf_name.txt
12194b4a8fcaSBaptiste Daroussin
12204b4a8fcaSBaptiste Daroussinclean \\
12214b4a8fcaSBaptiste Daroussindocs-clean ::
12220f86d14eSJung-uk Kim${NROFF_NOTE}	rm -f $cf_name.txt
12230f86d14eSJung-uk Kim${MAN2HTML_NOTE}	rm -f $cf_name.html
12240f86d14eSJung-uk Kim${GROFF_NOTE}	rm -f $cf_name.pdf
12250f86d14eSJung-uk Kim${GROFF_NOTE}	rm -f $cf_name.ps
12260f86d14eSJung-uk Kim${GROFF_NOTE}	rm -f $cf_name.txt
12274b4a8fcaSBaptiste Daroussin
12280f86d14eSJung-uk Kim${NROFF_NOTE}$cf_name.txt  : $cf_name.$2
12290f86d14eSJung-uk Kim${MAN2HTML_NOTE}$cf_name.html : $cf_name.$2
12300f86d14eSJung-uk Kim${GROFF_NOTE}$cf_name.pdf  : $cf_name.ps
12310f86d14eSJung-uk Kim${GROFF_NOTE}$cf_name.ps   : $cf_name.$2
12320f86d14eSJung-uk Kim${GROFF_NOTE}$cf_name.txt  : $cf_name.$2
12334b4a8fcaSBaptiste DaroussinCF_EOF
12344b4a8fcaSBaptiste Daroussindone
12354b4a8fcaSBaptiste Daroussin])dnl
12364b4a8fcaSBaptiste Daroussindnl ---------------------------------------------------------------------------
123798e903e7SBaptiste Daroussindnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
123898e903e7SBaptiste Daroussindnl ------------
123998e903e7SBaptiste Daroussindnl Generate tags/TAGS targets for makefiles.  Do not generate TAGS if we have
124098e903e7SBaptiste Daroussindnl a monocase filesystem.
124198e903e7SBaptiste DaroussinAC_DEFUN([CF_MAKE_TAGS],[
124298e903e7SBaptiste DaroussinAC_REQUIRE([CF_MIXEDCASE_FILENAMES])
124398e903e7SBaptiste Daroussin
124498e903e7SBaptiste DaroussinAC_CHECK_PROGS(CTAGS, exctags ctags)
124598e903e7SBaptiste DaroussinAC_CHECK_PROGS(ETAGS, exetags etags)
124698e903e7SBaptiste Daroussin
124798e903e7SBaptiste DaroussinAC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
124898e903e7SBaptiste Daroussin
124998e903e7SBaptiste Daroussinif test "$cf_cv_mixedcase" = yes ; then
125098e903e7SBaptiste Daroussin	AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
125198e903e7SBaptiste Daroussinelse
125298e903e7SBaptiste Daroussin	MAKE_UPPER_TAGS=no
125398e903e7SBaptiste Daroussinfi
125498e903e7SBaptiste Daroussin
125598e903e7SBaptiste Daroussinif test "$MAKE_UPPER_TAGS" = yes ; then
125698e903e7SBaptiste Daroussin	MAKE_UPPER_TAGS=
125798e903e7SBaptiste Daroussinelse
125898e903e7SBaptiste Daroussin	MAKE_UPPER_TAGS="#"
125998e903e7SBaptiste Daroussinfi
126098e903e7SBaptiste Daroussin
126198e903e7SBaptiste Daroussinif test "$MAKE_LOWER_TAGS" = yes ; then
126298e903e7SBaptiste Daroussin	MAKE_LOWER_TAGS=
126398e903e7SBaptiste Daroussinelse
126498e903e7SBaptiste Daroussin	MAKE_LOWER_TAGS="#"
126598e903e7SBaptiste Daroussinfi
126698e903e7SBaptiste Daroussin
126798e903e7SBaptiste DaroussinAC_SUBST(CTAGS)
126898e903e7SBaptiste DaroussinAC_SUBST(ETAGS)
126998e903e7SBaptiste Daroussin
127098e903e7SBaptiste DaroussinAC_SUBST(MAKE_UPPER_TAGS)
127198e903e7SBaptiste DaroussinAC_SUBST(MAKE_LOWER_TAGS)
127298e903e7SBaptiste Daroussin])dnl
127398e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1274*822ca327SBaptiste Daroussindnl CF_MANPAGE_FORMAT version: 18 updated: 2023/05/19 18:35:02
1275*822ca327SBaptiste Daroussindnl -----------------
1276*822ca327SBaptiste Daroussindnl Option to allow user to override automatic configuration of manpage format.
1277*822ca327SBaptiste Daroussindnl There are several special cases:
1278*822ca327SBaptiste Daroussindnl
1279*822ca327SBaptiste Daroussindnl	compress - man checks for, can display compressed files
1280*822ca327SBaptiste Daroussindnl	bzip2 - man checks for, can display bzip2'd files
1281*822ca327SBaptiste Daroussindnl	gzip - man checks for, can display gzip'd files
1282*822ca327SBaptiste Daroussindnl	xz - man checks for, can display xz'd files
1283*822ca327SBaptiste Daroussindnl
1284*822ca327SBaptiste Daroussindnl	BSDI - files in the cat-directories are suffixed ".0"
1285*822ca327SBaptiste Daroussindnl	formatted - installer should format (put files in cat-directory)
1286*822ca327SBaptiste Daroussindnl	catonly - installer should only format, e.g., for a turnkey system.
1287*822ca327SBaptiste Daroussindnl
1288*822ca327SBaptiste Daroussindnl There are other configurations which this macro does not test, e.g., HPUX's
1289*822ca327SBaptiste Daroussindnl compressed manpages (but uncompressed manpages are fine, and HPUX's naming
1290*822ca327SBaptiste Daroussindnl convention would not match our use).
1291*822ca327SBaptiste DaroussinAC_DEFUN([CF_MANPAGE_FORMAT],
1292*822ca327SBaptiste Daroussin[
1293*822ca327SBaptiste DaroussinAC_REQUIRE([CF_PATHSEP])
1294*822ca327SBaptiste DaroussinAC_MSG_CHECKING(format of man-pages)
1295*822ca327SBaptiste Daroussin
1296*822ca327SBaptiste DaroussinAC_ARG_WITH(manpage-format,
1297*822ca327SBaptiste Daroussin	[  --with-manpage-format   specify manpage-format: gzip/compress/bzip2/xz,
1298*822ca327SBaptiste Daroussin                          BSDI/normal and optionally formatted/catonly,
1299*822ca327SBaptiste Daroussin                          e.g., gzip,formatted],
1300*822ca327SBaptiste Daroussin	[MANPAGE_FORMAT=$withval],
1301*822ca327SBaptiste Daroussin	[MANPAGE_FORMAT=unknown])
1302*822ca327SBaptiste Daroussin
1303*822ca327SBaptiste Daroussintest -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown
1304*822ca327SBaptiste DaroussinMANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'`
1305*822ca327SBaptiste Daroussin
1306*822ca327SBaptiste Daroussincf_unknown=
1307*822ca327SBaptiste Daroussin
1308*822ca327SBaptiste Daroussincase "$MANPAGE_FORMAT" in
1309*822ca327SBaptiste Daroussin(unknown)
1310*822ca327SBaptiste Daroussin	if test -z "$MANPATH" ; then
1311*822ca327SBaptiste Daroussin		MANPATH="/usr/man:/usr/share/man"
1312*822ca327SBaptiste Daroussin	fi
1313*822ca327SBaptiste Daroussin
1314*822ca327SBaptiste Daroussin	# look for the 'date' man-page (it is most likely to be installed!)
1315*822ca327SBaptiste Daroussin	MANPAGE_FORMAT=
1316*822ca327SBaptiste Daroussin	cf_preform="no"
1317*822ca327SBaptiste Daroussin	cf_catonly="yes"
1318*822ca327SBaptiste Daroussin	cf_example="date"
1319*822ca327SBaptiste Daroussin
1320*822ca327SBaptiste Daroussin	IFS="${IFS:- 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
1321*822ca327SBaptiste Daroussin	for cf_dir in $MANPATH; do
1322*822ca327SBaptiste Daroussin		test -z "$cf_dir" && cf_dir=/usr/man
1323*822ca327SBaptiste Daroussin		for cf_name in $cf_dir/man*/$cf_example.[[01]]* $cf_dir/cat*/$cf_example.[[01]]* $cf_dir/man*/$cf_example $cf_dir/cat*/$cf_example
1324*822ca327SBaptiste Daroussin		do
1325*822ca327SBaptiste Daroussin			cf_test=`echo "$cf_name" | sed -e 's/*//'`
1326*822ca327SBaptiste Daroussin			if test "x$cf_test" = "x$cf_name" ; then
1327*822ca327SBaptiste Daroussin
1328*822ca327SBaptiste Daroussin				case "$cf_name" in
1329*822ca327SBaptiste Daroussin				(*.bz2) MANPAGE_FORMAT="$MANPAGE_FORMAT bzip2";;
1330*822ca327SBaptiste Daroussin				(*.xz)  MANPAGE_FORMAT="$MANPAGE_FORMAT xz";;
1331*822ca327SBaptiste Daroussin				(*.gz)  MANPAGE_FORMAT="$MANPAGE_FORMAT gzip";;
1332*822ca327SBaptiste Daroussin				(*.Z)   MANPAGE_FORMAT="$MANPAGE_FORMAT compress";;
1333*822ca327SBaptiste Daroussin				(*.0)   MANPAGE_FORMAT="$MANPAGE_FORMAT BSDI";;
1334*822ca327SBaptiste Daroussin				(*)     MANPAGE_FORMAT="$MANPAGE_FORMAT normal";;
1335*822ca327SBaptiste Daroussin				esac
1336*822ca327SBaptiste Daroussin
1337*822ca327SBaptiste Daroussin				case "$cf_name" in
1338*822ca327SBaptiste Daroussin				($cf_dir/man*)
1339*822ca327SBaptiste Daroussin					cf_catonly=no
1340*822ca327SBaptiste Daroussin					;;
1341*822ca327SBaptiste Daroussin				($cf_dir/cat*)
1342*822ca327SBaptiste Daroussin					cf_preform=yes
1343*822ca327SBaptiste Daroussin					;;
1344*822ca327SBaptiste Daroussin				esac
1345*822ca327SBaptiste Daroussin				break
1346*822ca327SBaptiste Daroussin			fi
1347*822ca327SBaptiste Daroussin
1348*822ca327SBaptiste Daroussin			# if we found a match in either man* or cat*, stop looking
1349*822ca327SBaptiste Daroussin			if test -n "$MANPAGE_FORMAT" ; then
1350*822ca327SBaptiste Daroussin				cf_found=no
1351*822ca327SBaptiste Daroussin				test "$cf_preform" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT formatted"
1352*822ca327SBaptiste Daroussin				test "$cf_catonly" = yes && MANPAGE_FORMAT="$MANPAGE_FORMAT catonly"
1353*822ca327SBaptiste Daroussin				case "$cf_name" in
1354*822ca327SBaptiste Daroussin				($cf_dir/cat*)
1355*822ca327SBaptiste Daroussin					cf_found=yes
1356*822ca327SBaptiste Daroussin					;;
1357*822ca327SBaptiste Daroussin				esac
1358*822ca327SBaptiste Daroussin				test "$cf_found" = yes && break
1359*822ca327SBaptiste Daroussin			fi
1360*822ca327SBaptiste Daroussin		done
1361*822ca327SBaptiste Daroussin		# only check the first directory in $MANPATH where we find manpages
1362*822ca327SBaptiste Daroussin		if test -n "$MANPAGE_FORMAT" ; then
1363*822ca327SBaptiste Daroussin			break
1364*822ca327SBaptiste Daroussin		fi
1365*822ca327SBaptiste Daroussin	done
1366*822ca327SBaptiste Daroussin	# if we did not find the example, just assume it is normal
1367*822ca327SBaptiste Daroussin	test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=normal
1368*822ca327SBaptiste Daroussin	IFS="$ac_save_ifs"
1369*822ca327SBaptiste Daroussin	;;
1370*822ca327SBaptiste Daroussin(*)
1371*822ca327SBaptiste Daroussin	for cf_option in $MANPAGE_FORMAT; do
1372*822ca327SBaptiste Daroussin	case "$cf_option" in
1373*822ca327SBaptiste Daroussin	(xz|bzip2|gzip|compress|BSDI|normal|formatted|catonly)
1374*822ca327SBaptiste Daroussin		;;
1375*822ca327SBaptiste Daroussin	(*)
1376*822ca327SBaptiste Daroussin		cf_unknown="$cf_unknown $cf_option"
1377*822ca327SBaptiste Daroussin		;;
1378*822ca327SBaptiste Daroussin	esac
1379*822ca327SBaptiste Daroussin	done
1380*822ca327SBaptiste Daroussin	;;
1381*822ca327SBaptiste Daroussinesac
1382*822ca327SBaptiste Daroussin
1383*822ca327SBaptiste DaroussinAC_MSG_RESULT($MANPAGE_FORMAT)
1384*822ca327SBaptiste Daroussinif test -n "$cf_unknown" ; then
1385*822ca327SBaptiste Daroussin	AC_MSG_WARN(Unexpected manpage-format $cf_unknown)
1386*822ca327SBaptiste Daroussinfi
1387*822ca327SBaptiste Daroussin
1388*822ca327SBaptiste Daroussincf_manpage_format=no
1389*822ca327SBaptiste Daroussincf_manpage_inboth=no
1390*822ca327SBaptiste Daroussincf_manpage_so_strip=
1391*822ca327SBaptiste Daroussincf_manpage_compress=
1392*822ca327SBaptiste Daroussin
1393*822ca327SBaptiste Daroussinfor cf_item in $MANPAGE_FORMAT
1394*822ca327SBaptiste Daroussindo
1395*822ca327SBaptiste Daroussincase "$cf_item" in
1396*822ca327SBaptiste Daroussin(catonly)
1397*822ca327SBaptiste Daroussin	cf_manpage_format=yes
1398*822ca327SBaptiste Daroussin	cf_manpage_inboth=no
1399*822ca327SBaptiste Daroussin	;;
1400*822ca327SBaptiste Daroussin(formatted)
1401*822ca327SBaptiste Daroussin	cf_manpage_format=yes
1402*822ca327SBaptiste Daroussin	cf_manpage_inboth=yes
1403*822ca327SBaptiste Daroussin	;;
1404*822ca327SBaptiste Daroussin(compress)
1405*822ca327SBaptiste Daroussin	cf_manpage_so_strip="Z"
1406*822ca327SBaptiste Daroussin	cf_manpage_compress=compress
1407*822ca327SBaptiste Daroussin	;;
1408*822ca327SBaptiste Daroussin(gzip)
1409*822ca327SBaptiste Daroussin	cf_manpage_so_strip="gz"
1410*822ca327SBaptiste Daroussin	cf_manpage_compress=gzip
1411*822ca327SBaptiste Daroussin	;;
1412*822ca327SBaptiste Daroussin(bzip2)
1413*822ca327SBaptiste Daroussin	cf_manpage_so_strip="bz2"
1414*822ca327SBaptiste Daroussin	cf_manpage_compress=bzip2
1415*822ca327SBaptiste Daroussin	;;
1416*822ca327SBaptiste Daroussin(xz)
1417*822ca327SBaptiste Daroussin	cf_manpage_so_strip="xz"
1418*822ca327SBaptiste Daroussin	cf_manpage_compress=xz
1419*822ca327SBaptiste Daroussin	;;
1420*822ca327SBaptiste Daroussinesac
1421*822ca327SBaptiste Daroussindone
1422*822ca327SBaptiste Daroussin
1423*822ca327SBaptiste DaroussinAC_SUBST(cf_manpage_format)
1424*822ca327SBaptiste DaroussinAC_SUBST(cf_manpage_inboth)
1425*822ca327SBaptiste DaroussinAC_SUBST(cf_manpage_so_strip)
1426*822ca327SBaptiste DaroussinAC_SUBST(cf_manpage_compress)
1427*822ca327SBaptiste Daroussin
1428*822ca327SBaptiste Daroussin])dnl
1429*822ca327SBaptiste Daroussindnl ---------------------------------------------------------------------------
14308e022d3cSDag-Erling Smørgravdnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59
143198e903e7SBaptiste Daroussindnl ----------------------
143298e903e7SBaptiste Daroussindnl Check if the file-system supports mixed-case filenames.  If we're able to
143398e903e7SBaptiste Daroussindnl create a lowercase name and see it as uppercase, it doesn't support that.
143498e903e7SBaptiste DaroussinAC_DEFUN([CF_MIXEDCASE_FILENAMES],
143598e903e7SBaptiste Daroussin[
143698e903e7SBaptiste DaroussinAC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
143798e903e7SBaptiste Daroussinif test "$cross_compiling" = yes ; then
14388e022d3cSDag-Erling Smørgrav	case "$target_alias" in
14398e022d3cSDag-Erling Smørgrav	(*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*)
144098e903e7SBaptiste Daroussin		cf_cv_mixedcase=no
144198e903e7SBaptiste Daroussin		;;
14420f86d14eSJung-uk Kim	(*)
144398e903e7SBaptiste Daroussin		cf_cv_mixedcase=yes
144498e903e7SBaptiste Daroussin		;;
144598e903e7SBaptiste Daroussin	esac
144698e903e7SBaptiste Daroussinelse
144798e903e7SBaptiste Daroussin	rm -f conftest CONFTEST
144898e903e7SBaptiste Daroussin	echo test >conftest
144998e903e7SBaptiste Daroussin	if test -f CONFTEST ; then
145098e903e7SBaptiste Daroussin		cf_cv_mixedcase=no
145198e903e7SBaptiste Daroussin	else
145298e903e7SBaptiste Daroussin		cf_cv_mixedcase=yes
145398e903e7SBaptiste Daroussin	fi
145498e903e7SBaptiste Daroussin	rm -f conftest CONFTEST
145598e903e7SBaptiste Daroussinfi
145698e903e7SBaptiste Daroussin])
14575b91e83fSBaptiste Daroussintest "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
145898e903e7SBaptiste Daroussin])dnl
145998e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1460*822ca327SBaptiste Daroussindnl CF_MKSTEMP version: 13 updated: 2023/12/01 17:22:50
146198e903e7SBaptiste Daroussindnl ----------
146298e903e7SBaptiste Daroussindnl Check for a working mkstemp.  This creates two files, checks that they are
146398e903e7SBaptiste Daroussindnl successfully created and distinct (AmigaOS apparently fails on the last).
146498e903e7SBaptiste DaroussinAC_DEFUN([CF_MKSTEMP],[
14653e794565SJung-uk KimAC_CHECK_HEADERS( \
14663e794565SJung-uk Kimunistd.h \
14673e794565SJung-uk Kim)
146898e903e7SBaptiste DaroussinAC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
14698e022d3cSDag-Erling Smørgravrm -rf ./conftest*
147098e903e7SBaptiste DaroussinAC_TRY_RUN([
14718e022d3cSDag-Erling Smørgrav$ac_includes_default
14728e022d3cSDag-Erling Smørgrav
14733e794565SJung-uk Kimint main(void)
147498e903e7SBaptiste Daroussin{
1475*822ca327SBaptiste Daroussin	static char tmpl[] = "conftestXXXXXX";
147698e903e7SBaptiste Daroussin	char name[2][80];
147798e903e7SBaptiste Daroussin	int n;
147898e903e7SBaptiste Daroussin	int result = 0;
147998e903e7SBaptiste Daroussin	int fd;
148098e903e7SBaptiste Daroussin	struct stat sb;
148198e903e7SBaptiste Daroussin
148298e903e7SBaptiste Daroussin	umask(077);
148398e903e7SBaptiste Daroussin	for (n = 0; n < 2; ++n) {
148498e903e7SBaptiste Daroussin		strcpy(name[n], tmpl);
148598e903e7SBaptiste Daroussin		if ((fd = mkstemp(name[n])) >= 0) {
148698e903e7SBaptiste Daroussin			if (!strcmp(name[n], tmpl)
148798e903e7SBaptiste Daroussin			 || stat(name[n], &sb) != 0
148898e903e7SBaptiste Daroussin			 || (sb.st_mode & S_IFMT) != S_IFREG
148998e903e7SBaptiste Daroussin			 || (sb.st_mode & 077) != 0) {
149098e903e7SBaptiste Daroussin				result = 1;
149198e903e7SBaptiste Daroussin			}
149298e903e7SBaptiste Daroussin			close(fd);
149398e903e7SBaptiste Daroussin		}
149498e903e7SBaptiste Daroussin	}
149598e903e7SBaptiste Daroussin	if (result == 0
149698e903e7SBaptiste Daroussin	 && !strcmp(name[0], name[1]))
149798e903e7SBaptiste Daroussin		result = 1;
149898e903e7SBaptiste Daroussin	${cf_cv_main_return:-return}(result);
149998e903e7SBaptiste Daroussin}
150098e903e7SBaptiste Daroussin],[cf_cv_func_mkstemp=yes
150198e903e7SBaptiste Daroussin],[cf_cv_func_mkstemp=no
15025b91e83fSBaptiste Daroussin],[cf_cv_func_mkstemp=maybe])
150398e903e7SBaptiste Daroussin])
15045b91e83fSBaptiste Daroussinif test "x$cf_cv_func_mkstemp" = xmaybe ; then
15055b91e83fSBaptiste Daroussin	AC_CHECK_FUNC(mkstemp)
15065b91e83fSBaptiste Daroussinfi
150798e903e7SBaptiste Daroussinif test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then
15085b91e83fSBaptiste Daroussin	AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.])
150998e903e7SBaptiste Daroussinfi
151098e903e7SBaptiste Daroussin])dnl
151198e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
151298e903e7SBaptiste Daroussindnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
151398e903e7SBaptiste Daroussindnl ----------
151498e903e7SBaptiste Daroussindnl Write a debug message to config.log, along with the line number in the
151598e903e7SBaptiste Daroussindnl configure script.
151698e903e7SBaptiste DaroussinAC_DEFUN([CF_MSG_LOG],[
151798e903e7SBaptiste Daroussinecho "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
151898e903e7SBaptiste Daroussin])dnl
151998e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
15208e022d3cSDag-Erling Smørgravdnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41
152198e903e7SBaptiste Daroussindnl ------------------
152298e903e7SBaptiste Daroussindnl see CF_WITH_NO_LEAKS
15238e022d3cSDag-Erling Smørgravdnl
15248e022d3cSDag-Erling Smørgravdnl $1 = option/name
15258e022d3cSDag-Erling Smørgravdnl $2 = help-text
15268e022d3cSDag-Erling Smørgravdnl $3 = symbol to define if the option is set
15278e022d3cSDag-Erling Smørgravdnl $4 = additional actions to take if the option is set
152898e903e7SBaptiste DaroussinAC_DEFUN([CF_NO_LEAKS_OPTION],[
152998e903e7SBaptiste DaroussinAC_MSG_CHECKING(if you want to use $1 for testing)
153098e903e7SBaptiste DaroussinAC_ARG_WITH($1,
153198e903e7SBaptiste Daroussin	[$2],
15328e022d3cSDag-Erling Smørgrav	[case "x$withval" in
15338e022d3cSDag-Erling Smørgrav	(x|xno) ;;
15348e022d3cSDag-Erling Smørgrav	(*)
15358e022d3cSDag-Erling Smørgrav		: "${with_cflags:=-g}"
15368e022d3cSDag-Erling Smørgrav		: "${enable_leaks:=no}"
15378e022d3cSDag-Erling Smørgrav		with_$1=yes
15388e022d3cSDag-Erling Smørgrav		AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
153998e903e7SBaptiste Daroussin	 $4
154098e903e7SBaptiste Daroussin])
15418e022d3cSDag-Erling Smørgrav		;;
15428e022d3cSDag-Erling Smørgrav	esac],
154398e903e7SBaptiste Daroussin	[with_$1=])
154498e903e7SBaptiste DaroussinAC_MSG_RESULT(${with_$1:-no})
154598e903e7SBaptiste Daroussin
15468e022d3cSDag-Erling Smørgravcase ".$with_cflags" in
15470f86d14eSJung-uk Kim(.*-g*)
15480f86d14eSJung-uk Kim	case .$CFLAGS in
15490f86d14eSJung-uk Kim	(.*-g*)
155098e903e7SBaptiste Daroussin		;;
15510f86d14eSJung-uk Kim	(*)
155298e903e7SBaptiste Daroussin		CF_ADD_CFLAGS([-g])
155398e903e7SBaptiste Daroussin		;;
155498e903e7SBaptiste Daroussin	esac
155598e903e7SBaptiste Daroussin	;;
155698e903e7SBaptiste Daroussinesac
155798e903e7SBaptiste Daroussin])dnl
155898e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1559*822ca327SBaptiste Daroussindnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04
1560*822ca327SBaptiste Daroussindnl ----------
1561*822ca327SBaptiste Daroussindnl Provide a value for the $PATH and similar separator (or amend the value
1562*822ca327SBaptiste Daroussindnl as provided in autoconf 2.5x).
1563*822ca327SBaptiste DaroussinAC_DEFUN([CF_PATHSEP],
1564*822ca327SBaptiste Daroussin[
1565*822ca327SBaptiste Daroussin	AC_MSG_CHECKING(for PATH separator)
1566*822ca327SBaptiste Daroussin	case "$cf_cv_system_name" in
1567*822ca327SBaptiste Daroussin	(os2*)	PATH_SEPARATOR=';'  ;;
1568*822ca327SBaptiste Daroussin	(*)	${PATH_SEPARATOR:=':'}  ;;
1569*822ca327SBaptiste Daroussin	esac
1570*822ca327SBaptiste Daroussinifelse([$1],,,[$1=$PATH_SEPARATOR])
1571*822ca327SBaptiste Daroussin	AC_SUBST(PATH_SEPARATOR)
1572*822ca327SBaptiste Daroussin	AC_MSG_RESULT($PATH_SEPARATOR)
1573*822ca327SBaptiste Daroussin])dnl
1574*822ca327SBaptiste Daroussindnl ---------------------------------------------------------------------------
15758e022d3cSDag-Erling Smørgravdnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20
15760f86d14eSJung-uk Kimdnl --------------
15770f86d14eSJung-uk Kimdnl Check the argument to see that it looks like a pathname.  Rewrite it if it
15780f86d14eSJung-uk Kimdnl begins with one of the prefix/exec_prefix variables, and then again if the
15790f86d14eSJung-uk Kimdnl result begins with 'NONE'.  This is necessary to work around autoconf's
15800f86d14eSJung-uk Kimdnl delayed evaluation of those symbols.
15810f86d14eSJung-uk KimAC_DEFUN([CF_PATH_SYNTAX],[
15820f86d14eSJung-uk Kimif test "x$prefix" != xNONE; then
15830f86d14eSJung-uk Kim	cf_path_syntax="$prefix"
15840f86d14eSJung-uk Kimelse
15850f86d14eSJung-uk Kim	cf_path_syntax="$ac_default_prefix"
15860f86d14eSJung-uk Kimfi
15870f86d14eSJung-uk Kim
15880f86d14eSJung-uk Kimcase ".[$]$1" in
15890f86d14eSJung-uk Kim(.\[$]\(*\)*|.\'*\'*)
15900f86d14eSJung-uk Kim	;;
15910f86d14eSJung-uk Kim(..|./*|.\\*)
15920f86d14eSJung-uk Kim	;;
15930f86d14eSJung-uk Kim(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
15940f86d14eSJung-uk Kim	;;
15958e022d3cSDag-Erling Smørgrav(.\[$]\{*prefix\}*|.\[$]\{*dir\}*)
15960f86d14eSJung-uk Kim	eval $1="[$]$1"
15970f86d14eSJung-uk Kim	case ".[$]$1" in
15980f86d14eSJung-uk Kim	(.NONE/*)
15998e022d3cSDag-Erling Smørgrav		$1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
16000f86d14eSJung-uk Kim		;;
16010f86d14eSJung-uk Kim	esac
16020f86d14eSJung-uk Kim	;;
16030f86d14eSJung-uk Kim(.no|.NONE/*)
16048e022d3cSDag-Erling Smørgrav	$1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
16050f86d14eSJung-uk Kim	;;
16060f86d14eSJung-uk Kim(*)
16070f86d14eSJung-uk Kim	ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
16080f86d14eSJung-uk Kim	;;
16090f86d14eSJung-uk Kimesac
16100f86d14eSJung-uk Kim])dnl
16110f86d14eSJung-uk Kimdnl ---------------------------------------------------------------------------
1612*822ca327SBaptiste Daroussindnl CF_POSIX_C_SOURCE version: 12 updated: 2023/02/18 17:41:25
161398e903e7SBaptiste Daroussindnl -----------------
161498e903e7SBaptiste Daroussindnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
161598e903e7SBaptiste Daroussindnl
161698e903e7SBaptiste Daroussindnl	POSIX.1-1990				_POSIX_SOURCE
161798e903e7SBaptiste Daroussindnl	POSIX.1-1990 and			_POSIX_SOURCE and
161898e903e7SBaptiste Daroussindnl		POSIX.2-1992 C-Language			_POSIX_C_SOURCE=2
161998e903e7SBaptiste Daroussindnl		Bindings Option
162098e903e7SBaptiste Daroussindnl	POSIX.1b-1993				_POSIX_C_SOURCE=199309L
162198e903e7SBaptiste Daroussindnl	POSIX.1c-1996				_POSIX_C_SOURCE=199506L
162298e903e7SBaptiste Daroussindnl	X/Open 2000				_POSIX_C_SOURCE=200112L
162398e903e7SBaptiste Daroussindnl
162498e903e7SBaptiste Daroussindnl Parameters:
162598e903e7SBaptiste Daroussindnl	$1 is the nominal value for _POSIX_C_SOURCE
162698e903e7SBaptiste DaroussinAC_DEFUN([CF_POSIX_C_SOURCE],
1627b53bb29fSJung-uk Kim[AC_REQUIRE([CF_POSIX_VISIBLE])dnl
1628b53bb29fSJung-uk Kim
1629b53bb29fSJung-uk Kimif test "$cf_cv_posix_visible" = no; then
1630b53bb29fSJung-uk Kim
163198e903e7SBaptiste Daroussincf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
163298e903e7SBaptiste Daroussin
163398e903e7SBaptiste Daroussincf_save_CFLAGS="$CFLAGS"
163498e903e7SBaptiste Daroussincf_save_CPPFLAGS="$CPPFLAGS"
163598e903e7SBaptiste Daroussin
163698e903e7SBaptiste DaroussinCF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
163798e903e7SBaptiste DaroussinCF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
163898e903e7SBaptiste Daroussin
163998e903e7SBaptiste DaroussinAC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
164098e903e7SBaptiste Daroussin	CF_MSG_LOG(if the symbol is already defined go no further)
164198e903e7SBaptiste Daroussin	AC_TRY_COMPILE([#include <sys/types.h>],[
164298e903e7SBaptiste Daroussin#ifndef _POSIX_C_SOURCE
1643*822ca327SBaptiste Daroussin#error _POSIX_C_SOURCE is not defined
164498e903e7SBaptiste Daroussin#endif],
164598e903e7SBaptiste Daroussin	[cf_cv_posix_c_source=no],
164698e903e7SBaptiste Daroussin	[cf_want_posix_source=no
16470f86d14eSJung-uk Kim	 case .$cf_POSIX_C_SOURCE in
16480f86d14eSJung-uk Kim	 (.[[12]]??*)
164998e903e7SBaptiste Daroussin		cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
165098e903e7SBaptiste Daroussin		;;
16510f86d14eSJung-uk Kim	 (.2)
165298e903e7SBaptiste Daroussin		cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
165398e903e7SBaptiste Daroussin		cf_want_posix_source=yes
165498e903e7SBaptiste Daroussin		;;
16550f86d14eSJung-uk Kim	 (.*)
165698e903e7SBaptiste Daroussin		cf_want_posix_source=yes
165798e903e7SBaptiste Daroussin		;;
165898e903e7SBaptiste Daroussin	 esac
165998e903e7SBaptiste Daroussin	 if test "$cf_want_posix_source" = yes ; then
166098e903e7SBaptiste Daroussin		AC_TRY_COMPILE([#include <sys/types.h>],[
166198e903e7SBaptiste Daroussin#ifdef _POSIX_SOURCE
1662*822ca327SBaptiste Daroussin#error _POSIX_SOURCE is defined
166398e903e7SBaptiste Daroussin#endif],[],
166498e903e7SBaptiste Daroussin		cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
166598e903e7SBaptiste Daroussin	 fi
166698e903e7SBaptiste Daroussin	 CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
166798e903e7SBaptiste Daroussin	 CFLAGS="$cf_trim_CFLAGS"
1668b53bb29fSJung-uk Kim	 CPPFLAGS="$cf_trim_CPPFLAGS"
1669b53bb29fSJung-uk Kim	 CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
167098e903e7SBaptiste Daroussin	 CF_MSG_LOG(if the second compile does not leave our definition intact error)
167198e903e7SBaptiste Daroussin	 AC_TRY_COMPILE([#include <sys/types.h>],[
167298e903e7SBaptiste Daroussin#ifndef _POSIX_C_SOURCE
1673*822ca327SBaptiste Daroussin#error _POSIX_C_SOURCE is not defined
167498e903e7SBaptiste Daroussin#endif],,
167598e903e7SBaptiste Daroussin	 [cf_cv_posix_c_source=no])
167698e903e7SBaptiste Daroussin	 CFLAGS="$cf_save_CFLAGS"
167798e903e7SBaptiste Daroussin	 CPPFLAGS="$cf_save_CPPFLAGS"
167898e903e7SBaptiste Daroussin	])
167998e903e7SBaptiste Daroussin])
168098e903e7SBaptiste Daroussin
168198e903e7SBaptiste Daroussinif test "$cf_cv_posix_c_source" != no ; then
168298e903e7SBaptiste Daroussin	CFLAGS="$cf_trim_CFLAGS"
168398e903e7SBaptiste Daroussin	CPPFLAGS="$cf_trim_CPPFLAGS"
168498e903e7SBaptiste Daroussin	CF_ADD_CFLAGS($cf_cv_posix_c_source)
168598e903e7SBaptiste Daroussinfi
168698e903e7SBaptiste Daroussin
1687b53bb29fSJung-uk Kimfi # cf_cv_posix_visible
1688b53bb29fSJung-uk Kim
1689b53bb29fSJung-uk Kim])dnl
1690b53bb29fSJung-uk Kimdnl ---------------------------------------------------------------------------
1691b53bb29fSJung-uk Kimdnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
1692b53bb29fSJung-uk Kimdnl ----------------
1693b53bb29fSJung-uk Kimdnl POSIX documents test-macros which an application may set before any system
1694b53bb29fSJung-uk Kimdnl headers are included to make features available.
1695b53bb29fSJung-uk Kimdnl
1696b53bb29fSJung-uk Kimdnl Some BSD platforms (originally FreeBSD, but copied by a few others)
1697b53bb29fSJung-uk Kimdnl diverged from POSIX in 2002 by setting symbols which make all of the most
1698b53bb29fSJung-uk Kimdnl recent features visible in the system header files unless the application
1699b53bb29fSJung-uk Kimdnl overrides the corresponding test-macros.  Doing that introduces portability
1700b53bb29fSJung-uk Kimdnl problems.
1701b53bb29fSJung-uk Kimdnl
1702b53bb29fSJung-uk Kimdnl This macro makes a special check for the symbols used for this, to avoid a
1703b53bb29fSJung-uk Kimdnl conflicting definition.
1704b53bb29fSJung-uk KimAC_DEFUN([CF_POSIX_VISIBLE],
1705b53bb29fSJung-uk Kim[
1706b53bb29fSJung-uk KimAC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
1707b53bb29fSJung-uk KimAC_TRY_COMPILE([#include <stdio.h>],[
1708b53bb29fSJung-uk Kim#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
1709b53bb29fSJung-uk Kim	&& defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
1710b53bb29fSJung-uk Kim	&& defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
1711b53bb29fSJung-uk Kim	&& defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
1712b53bb29fSJung-uk Kim#error conflicting symbols found
1713b53bb29fSJung-uk Kim#endif
1714b53bb29fSJung-uk Kim],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
1715b53bb29fSJung-uk Kim])
171698e903e7SBaptiste Daroussin])dnl
171798e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
17180c8de5b0SBaptiste Daroussindnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59
17190c8de5b0SBaptiste Daroussindnl -----------
17200c8de5b0SBaptiste Daroussindnl Check for awk, ensure that the check found something.
17210c8de5b0SBaptiste DaroussinAC_DEFUN([CF_PROG_AWK],
17220c8de5b0SBaptiste Daroussin[
17230c8de5b0SBaptiste DaroussinAC_PROG_AWK
17240c8de5b0SBaptiste Daroussintest -z "$AWK" && AC_MSG_ERROR(No awk program found)
17250c8de5b0SBaptiste Daroussin])dnl
17260c8de5b0SBaptiste Daroussindnl ---------------------------------------------------------------------------
1727b53bb29fSJung-uk Kimdnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
17285b91e83fSBaptiste Daroussindnl ----------
17295b91e83fSBaptiste Daroussindnl standard check for CC, plus followup sanity checks
17305b91e83fSBaptiste Daroussindnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
17315b91e83fSBaptiste DaroussinAC_DEFUN([CF_PROG_CC],[
1732b53bb29fSJung-uk KimCF_ACVERSION_CHECK(2.53,
1733b53bb29fSJung-uk Kim	[AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
1734b53bb29fSJung-uk Kim	 AC_REQUIRE([AC_PROG_CC])],
1735b53bb29fSJung-uk Kim	[])
17365b91e83fSBaptiste Daroussinifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
17375b91e83fSBaptiste DaroussinCF_GCC_VERSION
17385b91e83fSBaptiste DaroussinCF_ACVERSION_CHECK(2.52,
17395b91e83fSBaptiste Daroussin	[AC_PROG_CC_STDC],
17405b91e83fSBaptiste Daroussin	[CF_ANSI_CC_REQD])
17415b91e83fSBaptiste DaroussinCF_CC_ENV_FLAGS
174298e903e7SBaptiste Daroussin])dnl
174398e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1744b53bb29fSJung-uk Kimdnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19
17450f86d14eSJung-uk Kimdnl -------------
17460f86d14eSJung-uk Kimdnl Check if groff is available, for cases (such as html output) where nroff
17470f86d14eSJung-uk Kimdnl is not enough.
17480f86d14eSJung-uk KimAC_DEFUN([CF_PROG_GROFF],[
17490f86d14eSJung-uk KimAC_PATH_PROG(GROFF_PATH,groff,no)
1750b53bb29fSJung-uk KimAC_PATH_PROGS(NROFF_PATH,nroff mandoc,no)
1751b53bb29fSJung-uk KimAC_PATH_PROG(TBL_PATH,tbl,cat)
17520f86d14eSJung-uk Kimif test "x$GROFF_PATH" = xno
17530f86d14eSJung-uk Kimthen
17540f86d14eSJung-uk Kim	NROFF_NOTE=
17550f86d14eSJung-uk Kim	GROFF_NOTE="#"
17560f86d14eSJung-uk Kimelse
17570f86d14eSJung-uk Kim	NROFF_NOTE="#"
17580f86d14eSJung-uk Kim	GROFF_NOTE=
17590f86d14eSJung-uk Kimfi
17600f86d14eSJung-uk KimAC_SUBST(GROFF_NOTE)
17610f86d14eSJung-uk KimAC_SUBST(NROFF_NOTE)
17620f86d14eSJung-uk Kim])dnl
17630f86d14eSJung-uk Kimdnl ---------------------------------------------------------------------------
17648e022d3cSDag-Erling Smørgravdnl CF_PROG_LINT version: 5 updated: 2022/08/20 15:44:13
176598e903e7SBaptiste Daroussindnl ------------
176698e903e7SBaptiste DaroussinAC_DEFUN([CF_PROG_LINT],
176798e903e7SBaptiste Daroussin[
1768c5b5d71aSJung-uk KimAC_CHECK_PROGS(LINT, lint cppcheck splint)
1769b53bb29fSJung-uk Kimcase "x$LINT" in
1770b53bb29fSJung-uk Kim(xcppcheck|x*/cppcheck)
1771b53bb29fSJung-uk Kim	test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
1772b53bb29fSJung-uk Kim	;;
1773b53bb29fSJung-uk Kimesac
177498e903e7SBaptiste DaroussinAC_SUBST(LINT_OPTS)
17758e022d3cSDag-Erling SmørgravAC_SUBST(LINT_LIBS)
17768e022d3cSDag-Erling Smørgrav])dnl
17778e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
17788e022d3cSDag-Erling Smørgravdnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40
17798e022d3cSDag-Erling Smørgravdnl ----------------
17808e022d3cSDag-Erling Smørgravdnl Remove a given option from CFLAGS/CPPFLAGS
17818e022d3cSDag-Erling Smørgravdnl $1 = option to remove
17828e022d3cSDag-Erling Smørgravdnl $2 = variable to update
17838e022d3cSDag-Erling Smørgravdnl $3 = nonempty to allow verbose message
17848e022d3cSDag-Erling Smørgravdefine([CF_REMOVE_CFLAGS],
17858e022d3cSDag-Erling Smørgrav[
17868e022d3cSDag-Erling Smørgravcf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'`
17878e022d3cSDag-Erling Smørgravwhile true
17888e022d3cSDag-Erling Smørgravdo
17898e022d3cSDag-Erling Smørgrav	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'`
17908e022d3cSDag-Erling Smørgrav	test "[$]$2" != "$cf_old_cflag" || break
17918e022d3cSDag-Erling Smørgrav	ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)])
17928e022d3cSDag-Erling Smørgrav	$2="$cf_old_cflag"
17938e022d3cSDag-Erling Smørgravdone
179498e903e7SBaptiste Daroussin])dnl
179598e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
179698e903e7SBaptiste Daroussindnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
179798e903e7SBaptiste Daroussindnl ----------------
179898e903e7SBaptiste Daroussindnl Remove all -U and -D options that refer to the given symbol from a list
179998e903e7SBaptiste Daroussindnl of C compiler options.  This works around the problem that not all
180098e903e7SBaptiste Daroussindnl compilers process -U and -D options from left-to-right, so a -U option
180198e903e7SBaptiste Daroussindnl cannot be used to cancel the effect of a preceding -D option.
180298e903e7SBaptiste Daroussindnl
180398e903e7SBaptiste Daroussindnl $1 = target (which could be the same as the source variable)
180498e903e7SBaptiste Daroussindnl $2 = source (including '$')
180598e903e7SBaptiste Daroussindnl $3 = symbol to remove
180698e903e7SBaptiste Daroussindefine([CF_REMOVE_DEFINE],
180798e903e7SBaptiste Daroussin[
180898e903e7SBaptiste Daroussin$1=`echo "$2" | \
180998e903e7SBaptiste Daroussin	sed	-e 's/-[[UD]]'"$3"'\(=[[^ 	]]*\)\?[[ 	]]/ /g' \
181098e903e7SBaptiste Daroussin		-e 's/-[[UD]]'"$3"'\(=[[^ 	]]*\)\?[$]//g'`
181198e903e7SBaptiste Daroussin])dnl
181298e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
18138e022d3cSDag-Erling Smørgravdnl CF_TRY_XOPEN_SOURCE version: 4 updated: 2022/09/10 15:16:16
181498e903e7SBaptiste Daroussindnl -------------------
181598e903e7SBaptiste Daroussindnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
181698e903e7SBaptiste Daroussindnl can define it successfully.
181798e903e7SBaptiste DaroussinAC_DEFUN([CF_TRY_XOPEN_SOURCE],[
181898e903e7SBaptiste DaroussinAC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
18198e022d3cSDag-Erling Smørgrav	AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,
182098e903e7SBaptiste Daroussin	[cf_cv_xopen_source=no],
182198e903e7SBaptiste Daroussin	[cf_save="$CPPFLAGS"
1822b53bb29fSJung-uk Kim	 CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
18238e022d3cSDag-Erling Smørgrav	 AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,
182498e903e7SBaptiste Daroussin		[cf_cv_xopen_source=no],
182598e903e7SBaptiste Daroussin		[cf_cv_xopen_source=$cf_XOPEN_SOURCE])
182698e903e7SBaptiste Daroussin		CPPFLAGS="$cf_save"
182798e903e7SBaptiste Daroussin	])
182898e903e7SBaptiste Daroussin])
182998e903e7SBaptiste Daroussin
183098e903e7SBaptiste Daroussinif test "$cf_cv_xopen_source" != no ; then
183198e903e7SBaptiste Daroussin	CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
183298e903e7SBaptiste Daroussin	CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
183398e903e7SBaptiste Daroussin	cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
18348e022d3cSDag-Erling Smørgrav	CF_APPEND_CFLAGS($cf_temp_xopen_source)
183598e903e7SBaptiste Daroussinfi
183698e903e7SBaptiste Daroussin])
183798e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
183898e903e7SBaptiste Daroussindnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
183998e903e7SBaptiste Daroussindnl --------
184098e903e7SBaptiste Daroussindnl Make an uppercase version of a variable
184198e903e7SBaptiste Daroussindnl $1=uppercase($2)
184298e903e7SBaptiste DaroussinAC_DEFUN([CF_UPPER],
184398e903e7SBaptiste Daroussin[
184498e903e7SBaptiste Daroussin$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
184598e903e7SBaptiste Daroussin])dnl
184698e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
184798e903e7SBaptiste Daroussindnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
184898e903e7SBaptiste Daroussindnl ----------
184998e903e7SBaptiste Daroussindnl Use AC_VERBOSE w/o the warnings
185098e903e7SBaptiste DaroussinAC_DEFUN([CF_VERBOSE],
185198e903e7SBaptiste Daroussin[test -n "$verbose" && echo "	$1" 1>&AC_FD_MSG
185298e903e7SBaptiste DaroussinCF_MSG_LOG([$1])
185398e903e7SBaptiste Daroussin])dnl
185498e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
18558e022d3cSDag-Erling Smørgravdnl CF_WITHOUT_X version: 3 updated: 2021/01/13 16:51:52
1856b53bb29fSJung-uk Kimdnl ------------
1857b53bb29fSJung-uk Kimdnl Use this to cancel the check for X headers/libraries which would be pulled
1858b53bb29fSJung-uk Kimdnl in via CF_GCC_WARNINGS.
1859b53bb29fSJung-uk Kimdefine([CF_WITHOUT_X],
18608e022d3cSDag-Erling SmørgravAC_DEFUN([AC_PATH_XTRA],[])
18618e022d3cSDag-Erling SmørgravAC_DEFUN([CF_SAVE_XTRA_FLAGS],[])
18628e022d3cSDag-Erling SmørgravAC_DEFUN([CF_RESTORE_XTRA_FLAGS],[])
1863b53bb29fSJung-uk KimAC_DEFUN([CF_CONST_X_STRING],[echo "skipping X-const check";])dnl
18648e022d3cSDag-Erling SmørgravAC_SUBST(X_CFLAGS)
18658e022d3cSDag-Erling SmørgravAC_SUBST(X_LIBS)
1866b53bb29fSJung-uk Kim[])dnl
1867b53bb29fSJung-uk Kimdnl ---------------------------------------------------------------------------
186898e903e7SBaptiste Daroussindnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
186998e903e7SBaptiste Daroussindnl ----------------
187098e903e7SBaptiste Daroussindnl Configure-option for dbmalloc.  The optional parameter is used to override
187198e903e7SBaptiste Daroussindnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
187298e903e7SBaptiste DaroussinAC_DEFUN([CF_WITH_DBMALLOC],[
187398e903e7SBaptiste DaroussinCF_NO_LEAKS_OPTION(dbmalloc,
187498e903e7SBaptiste Daroussin	[  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
187598e903e7SBaptiste Daroussin	[USE_DBMALLOC])
187698e903e7SBaptiste Daroussin
187798e903e7SBaptiste Daroussinif test "$with_dbmalloc" = yes ; then
187898e903e7SBaptiste Daroussin	AC_CHECK_HEADER(dbmalloc.h,
187998e903e7SBaptiste Daroussin		[AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
188098e903e7SBaptiste Daroussinfi
188198e903e7SBaptiste Daroussin])dnl
188298e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
188398e903e7SBaptiste Daroussindnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
188498e903e7SBaptiste Daroussindnl ---------------
188598e903e7SBaptiste Daroussindnl Configure-option for dmalloc.  The optional parameter is used to override
188698e903e7SBaptiste Daroussindnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
188798e903e7SBaptiste DaroussinAC_DEFUN([CF_WITH_DMALLOC],[
188898e903e7SBaptiste DaroussinCF_NO_LEAKS_OPTION(dmalloc,
188998e903e7SBaptiste Daroussin	[  --with-dmalloc          test: use Gray Watson's dmalloc library],
189098e903e7SBaptiste Daroussin	[USE_DMALLOC])
189198e903e7SBaptiste Daroussin
189298e903e7SBaptiste Daroussinif test "$with_dmalloc" = yes ; then
189398e903e7SBaptiste Daroussin	AC_CHECK_HEADER(dmalloc.h,
189498e903e7SBaptiste Daroussin		[AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
189598e903e7SBaptiste Daroussinfi
189698e903e7SBaptiste Daroussin])dnl
189798e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1898*822ca327SBaptiste Daroussindnl CF_WITH_MAN2HTML version: 13 updated: 2023/11/23 06:40:35
18990f86d14eSJung-uk Kimdnl ----------------
1900b53bb29fSJung-uk Kimdnl Check for man2html and groff.  Prefer man2html over groff, but use groff
1901b53bb29fSJung-uk Kimdnl as a fallback.  See
1902b53bb29fSJung-uk Kimdnl
1903b53bb29fSJung-uk Kimdnl		http://invisible-island.net/scripts/man2html.html
1904b53bb29fSJung-uk Kimdnl
19050f86d14eSJung-uk Kimdnl Generate a shell script which hides the differences between the two.
19060f86d14eSJung-uk Kimdnl
19070f86d14eSJung-uk Kimdnl We name that "man2html.tmp".
19080f86d14eSJung-uk Kimdnl
19090f86d14eSJung-uk Kimdnl The shell script can be removed later, e.g., using "make distclean".
19100f86d14eSJung-uk KimAC_DEFUN([CF_WITH_MAN2HTML],[
19118e022d3cSDag-Erling SmørgravAC_REQUIRE([CF_PROG_GROFF])dnl
19128e022d3cSDag-Erling SmørgravAC_REQUIRE([AC_PROG_FGREP])dnl
19130f86d14eSJung-uk Kim
1914b53bb29fSJung-uk Kimcase "x${with_man2html}" in
1915b53bb29fSJung-uk Kim(xno)
1916b53bb29fSJung-uk Kim	cf_man2html=no
1917b53bb29fSJung-uk Kim	;;
1918b53bb29fSJung-uk Kim(x|xyes)
1919b53bb29fSJung-uk Kim	AC_PATH_PROG(cf_man2html,man2html,no)
1920b53bb29fSJung-uk Kim	case "x$cf_man2html" in
1921b53bb29fSJung-uk Kim	(x/*)
1922b53bb29fSJung-uk Kim		AC_MSG_CHECKING(for the modified Earl Hood script)
1923b53bb29fSJung-uk Kim		if ( $cf_man2html -help 2>&1 | grep 'Make an index of headers at the end' >/dev/null )
1924b53bb29fSJung-uk Kim		then
1925b53bb29fSJung-uk Kim			cf_man2html_ok=yes
1926b53bb29fSJung-uk Kim		else
1927b53bb29fSJung-uk Kim			cf_man2html=no
1928b53bb29fSJung-uk Kim			cf_man2html_ok=no
1929b53bb29fSJung-uk Kim		fi
1930b53bb29fSJung-uk Kim		AC_MSG_RESULT($cf_man2html_ok)
1931b53bb29fSJung-uk Kim		;;
1932b53bb29fSJung-uk Kim	(*)
1933b53bb29fSJung-uk Kim		cf_man2html=no
1934b53bb29fSJung-uk Kim		;;
1935b53bb29fSJung-uk Kim	esac
1936b53bb29fSJung-uk Kimesac
1937b53bb29fSJung-uk Kim
19380f86d14eSJung-uk KimAC_MSG_CHECKING(for program to convert manpage to html)
19390f86d14eSJung-uk KimAC_ARG_WITH(man2html,
1940*822ca327SBaptiste Daroussin	[[  --with-man2html[=XXX]   use XXX rather than groff]],
19410f86d14eSJung-uk Kim	[cf_man2html=$withval],
1942b53bb29fSJung-uk Kim	[cf_man2html=$cf_man2html])
19430f86d14eSJung-uk Kim
19440f86d14eSJung-uk Kimcf_with_groff=no
19450f86d14eSJung-uk Kim
19460f86d14eSJung-uk Kimcase $cf_man2html in
19470f86d14eSJung-uk Kim(yes)
19480f86d14eSJung-uk Kim	AC_MSG_RESULT(man2html)
19490f86d14eSJung-uk Kim	AC_PATH_PROG(cf_man2html,man2html,no)
19500f86d14eSJung-uk Kim	;;
19510f86d14eSJung-uk Kim(no|groff|*/groff*)
19520f86d14eSJung-uk Kim	cf_with_groff=yes
19530f86d14eSJung-uk Kim	cf_man2html=$GROFF_PATH
19540f86d14eSJung-uk Kim	AC_MSG_RESULT($cf_man2html)
19550f86d14eSJung-uk Kim	;;
19560f86d14eSJung-uk Kim(*)
19570f86d14eSJung-uk Kim	AC_MSG_RESULT($cf_man2html)
19580f86d14eSJung-uk Kim	;;
19590f86d14eSJung-uk Kimesac
19600f86d14eSJung-uk Kim
19610f86d14eSJung-uk KimMAN2HTML_TEMP="man2html.tmp"
19620f86d14eSJung-uk Kim	cat >$MAN2HTML_TEMP <<CF_EOF
196320afc491SJung-uk Kim#!$SHELL
19640f86d14eSJung-uk Kim# Temporary script generated by CF_WITH_MAN2HTML
19650f86d14eSJung-uk Kim# Convert inputs to html, sending result to standard output.
19660f86d14eSJung-uk Kim#
19670f86d14eSJung-uk Kim# Parameters:
19680f86d14eSJung-uk Kim# \${1} = rootname of file to convert
19690f86d14eSJung-uk Kim# \${2} = suffix of file to convert, e.g., "1"
19700f86d14eSJung-uk Kim# \${3} = macros to use, e.g., "man"
19710f86d14eSJung-uk Kim#
19720f86d14eSJung-uk KimROOT=\[$]1
19730f86d14eSJung-uk KimTYPE=\[$]2
19740f86d14eSJung-uk KimMACS=\[$]3
19750f86d14eSJung-uk Kim
19760f86d14eSJung-uk Kimunset LANG
19770f86d14eSJung-uk Kimunset LC_ALL
19780f86d14eSJung-uk Kimunset LC_CTYPE
19790f86d14eSJung-uk Kimunset LANGUAGE
19800f86d14eSJung-uk KimGROFF_NO_SGR=stupid
19810f86d14eSJung-uk Kimexport GROFF_NO_SGR
19820f86d14eSJung-uk Kim
19830f86d14eSJung-uk KimCF_EOF
19840f86d14eSJung-uk Kim
19858e022d3cSDag-Erling SmørgravNROFF_OPTS=
19860f86d14eSJung-uk Kimif test "x$cf_with_groff" = xyes
19870f86d14eSJung-uk Kimthen
19880f86d14eSJung-uk Kim	MAN2HTML_NOTE="$GROFF_NOTE"
19890f86d14eSJung-uk Kim	MAN2HTML_PATH="$GROFF_PATH"
19900f86d14eSJung-uk Kim	cat >>$MAN2HTML_TEMP <<CF_EOF
1991b53bb29fSJung-uk Kim$SHELL -c "$TBL_PATH \${ROOT}.\${TYPE} | $GROFF_PATH -P -o0 -I\${ROOT}_ -Thtml -\${MACS}"
19920f86d14eSJung-uk KimCF_EOF
19930f86d14eSJung-uk Kimelse
19948e022d3cSDag-Erling Smørgrav	# disable hyphenation if this is groff
19958e022d3cSDag-Erling Smørgrav	if test "x$GROFF_PATH" != xno
19968e022d3cSDag-Erling Smørgrav	then
19978e022d3cSDag-Erling Smørgrav		AC_MSG_CHECKING(if nroff is really groff)
19988e022d3cSDag-Erling Smørgrav		cf_check_groff="`$NROFF_PATH --version 2>/dev/null | grep groff`"
19998e022d3cSDag-Erling Smørgrav		test -n "$cf_check_groff" && cf_check_groff=yes
20008e022d3cSDag-Erling Smørgrav		test -n "$cf_check_groff" || cf_check_groff=no
20018e022d3cSDag-Erling Smørgrav		AC_MSG_RESULT($cf_check_groff)
20028e022d3cSDag-Erling Smørgrav		test "x$cf_check_groff" = xyes && NROFF_OPTS="-rHY=0"
20038e022d3cSDag-Erling Smørgrav	fi
20040f86d14eSJung-uk Kim	MAN2HTML_NOTE=""
20050f86d14eSJung-uk Kim	CF_PATH_SYNTAX(cf_man2html)
20060f86d14eSJung-uk Kim	MAN2HTML_PATH="$cf_man2html"
20070f86d14eSJung-uk Kim	AC_MSG_CHECKING(for $cf_man2html top/bottom margins)
20080f86d14eSJung-uk Kim
20090f86d14eSJung-uk Kim	# for this example, expect 3 lines of content, the remainder is head/foot
20100f86d14eSJung-uk Kim	cat >conftest.in <<CF_EOF
20110f86d14eSJung-uk Kim.TH HEAD1 HEAD2 HEAD3 HEAD4 HEAD5
20120f86d14eSJung-uk Kim.SH SECTION
20130f86d14eSJung-uk KimMARKER
20140f86d14eSJung-uk KimCF_EOF
20150f86d14eSJung-uk Kim
2016b53bb29fSJung-uk Kim	LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out
20170f86d14eSJung-uk Kim
20188e022d3cSDag-Erling Smørgrav	cf_man2html_1st="`${FGREP-fgrep} -n MARKER conftest.out |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`"
20198e022d3cSDag-Erling Smørgrav	cf_man2html_top=`expr "$cf_man2html_1st" - 2`
20208e022d3cSDag-Erling Smørgrav	cf_man2html_bot="`wc -l conftest.out |sed -e 's/[[^0-9]]//g'`"
20218e022d3cSDag-Erling Smørgrav	cf_man2html_bot=`expr "$cf_man2html_bot" - 2 - "$cf_man2html_top"`
20220f86d14eSJung-uk Kim	cf_man2html_top_bot="-topm=$cf_man2html_top -botm=$cf_man2html_bot"
20230f86d14eSJung-uk Kim
20240f86d14eSJung-uk Kim	AC_MSG_RESULT($cf_man2html_top_bot)
20250f86d14eSJung-uk Kim
20260f86d14eSJung-uk Kim	AC_MSG_CHECKING(for pagesize to use)
20270f86d14eSJung-uk Kim	for cf_block in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
20280f86d14eSJung-uk Kim	do
20290f86d14eSJung-uk Kim	cat >>conftest.in <<CF_EOF
20300f86d14eSJung-uk Kim.nf
20310f86d14eSJung-uk Kim0
20320f86d14eSJung-uk Kim1
20330f86d14eSJung-uk Kim2
20340f86d14eSJung-uk Kim3
20350f86d14eSJung-uk Kim4
20360f86d14eSJung-uk Kim5
20370f86d14eSJung-uk Kim6
20380f86d14eSJung-uk Kim7
20390f86d14eSJung-uk Kim8
20400f86d14eSJung-uk Kim9
20410f86d14eSJung-uk KimCF_EOF
20420f86d14eSJung-uk Kim	done
20430f86d14eSJung-uk Kim
2044b53bb29fSJung-uk Kim	LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out
20458e022d3cSDag-Erling Smørgrav	cf_man2html_page="`${FGREP-fgrep} -n HEAD1 conftest.out |sed -n '$p' |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`"
20460f86d14eSJung-uk Kim	test -z "$cf_man2html_page" && cf_man2html_page=99999
20470f86d14eSJung-uk Kim	test "$cf_man2html_page" -gt 100 && cf_man2html_page=99999
20480f86d14eSJung-uk Kim
20490f86d14eSJung-uk Kim	rm -rf conftest*
20500f86d14eSJung-uk Kim	AC_MSG_RESULT($cf_man2html_page)
20510f86d14eSJung-uk Kim
20520f86d14eSJung-uk Kim	cat >>$MAN2HTML_TEMP <<CF_EOF
20530f86d14eSJung-uk Kim: \${MAN2HTML_PATH=$MAN2HTML_PATH}
20548e022d3cSDag-Erling SmørgravMAN2HTML_OPTS="\$MAN2HTML_OPTS -index -title=\"\$ROOT(\$TYPE)\" -compress -pgsize $cf_man2html_page"
20550f86d14eSJung-uk Kimcase \${TYPE} in
20560f86d14eSJung-uk Kim(ms)
20578e022d3cSDag-Erling Smørgrav	$TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH -topm=0 -botm=0 \$MAN2HTML_OPTS
20580f86d14eSJung-uk Kim	;;
20590f86d14eSJung-uk Kim(*)
20608e022d3cSDag-Erling Smørgrav	$TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH $cf_man2html_top_bot \$MAN2HTML_OPTS
20610f86d14eSJung-uk Kim	;;
20620f86d14eSJung-uk Kimesac
20630f86d14eSJung-uk KimCF_EOF
20640f86d14eSJung-uk Kimfi
20650f86d14eSJung-uk Kim
20660f86d14eSJung-uk Kimchmod 700 $MAN2HTML_TEMP
20670f86d14eSJung-uk Kim
20680f86d14eSJung-uk KimAC_SUBST(MAN2HTML_NOTE)
20690f86d14eSJung-uk KimAC_SUBST(MAN2HTML_PATH)
20700f86d14eSJung-uk KimAC_SUBST(MAN2HTML_TEMP)
20710f86d14eSJung-uk Kim])dnl
20720f86d14eSJung-uk Kimdnl ---------------------------------------------------------------------------
207398e903e7SBaptiste Daroussindnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
207498e903e7SBaptiste Daroussindnl ----------------
207598e903e7SBaptiste DaroussinAC_DEFUN([CF_WITH_VALGRIND],[
207698e903e7SBaptiste DaroussinCF_NO_LEAKS_OPTION(valgrind,
207798e903e7SBaptiste Daroussin	[  --with-valgrind         test: use valgrind],
207898e903e7SBaptiste Daroussin	[USE_VALGRIND])
207998e903e7SBaptiste Daroussin])dnl
208098e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
2081*822ca327SBaptiste Daroussindnl CF_XOPEN_SOURCE version: 67 updated: 2023/09/06 18:55:27
208298e903e7SBaptiste Daroussindnl ---------------
208398e903e7SBaptiste Daroussindnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
208498e903e7SBaptiste Daroussindnl or adapt to the vendor's definitions to get equivalent functionality,
208598e903e7SBaptiste Daroussindnl without losing the common non-POSIX features.
208698e903e7SBaptiste Daroussindnl
208798e903e7SBaptiste Daroussindnl Parameters:
208898e903e7SBaptiste Daroussindnl	$1 is the nominal value for _XOPEN_SOURCE
208998e903e7SBaptiste Daroussindnl	$2 is the nominal value for _POSIX_C_SOURCE
2090*822ca327SBaptiste Daroussindnl
2091*822ca327SBaptiste Daroussindnl The default case prefers _XOPEN_SOURCE over _POSIX_C_SOURCE if the
2092*822ca327SBaptiste Daroussindnl implementation predefines it, because X/Open and most implementations agree
2093*822ca327SBaptiste Daroussindnl that the latter is a legacy or "aligned" value.
2094*822ca327SBaptiste Daroussindnl
2095*822ca327SBaptiste Daroussindnl Because _XOPEN_SOURCE is preferred, if defining _POSIX_C_SOURCE turns
2096*822ca327SBaptiste Daroussindnl that off, then refrain from setting _POSIX_C_SOURCE explicitly.
2097*822ca327SBaptiste Daroussindnl
2098*822ca327SBaptiste Daroussindnl References:
2099*822ca327SBaptiste Daroussindnl https://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html
2100*822ca327SBaptiste Daroussindnl https://docs.oracle.com/cd/E19253-01/816-5175/standards-5/index.html
2101*822ca327SBaptiste Daroussindnl https://www.gnu.org/software/libc/manual/html_node/Feature-Test-Macros.html
210298e903e7SBaptiste DaroussinAC_DEFUN([CF_XOPEN_SOURCE],[
21035b91e83fSBaptiste DaroussinAC_REQUIRE([AC_CANONICAL_HOST])
2104b53bb29fSJung-uk KimAC_REQUIRE([CF_POSIX_VISIBLE])
2105b53bb29fSJung-uk Kim
2106b53bb29fSJung-uk Kimif test "$cf_cv_posix_visible" = no; then
210798e903e7SBaptiste Daroussin
210898e903e7SBaptiste Daroussincf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
210998e903e7SBaptiste Daroussincf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
211098e903e7SBaptiste Daroussincf_xopen_source=
211198e903e7SBaptiste Daroussin
21128e022d3cSDag-Erling Smørgravcase "$host_os" in
21130f86d14eSJung-uk Kim(aix[[4-7]]*)
211498e903e7SBaptiste Daroussin	cf_xopen_source="-D_ALL_SOURCE"
211598e903e7SBaptiste Daroussin	;;
21160f86d14eSJung-uk Kim(darwin[[0-8]].*)
211798e903e7SBaptiste Daroussin	cf_xopen_source="-D_APPLE_C_SOURCE"
211898e903e7SBaptiste Daroussin	;;
21190f86d14eSJung-uk Kim(darwin*)
212098e903e7SBaptiste Daroussin	cf_xopen_source="-D_DARWIN_C_SOURCE"
212198e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=
212298e903e7SBaptiste Daroussin	;;
2123b53bb29fSJung-uk Kim(freebsd*|dragonfly*|midnightbsd*)
212498e903e7SBaptiste Daroussin	# 5.x headers associate
212598e903e7SBaptiste Daroussin	#	_XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
212698e903e7SBaptiste Daroussin	#	_XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
212798e903e7SBaptiste Daroussin	cf_POSIX_C_SOURCE=200112L
212898e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=600
212998e903e7SBaptiste Daroussin	cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
213098e903e7SBaptiste Daroussin	;;
21310f86d14eSJung-uk Kim(hpux11*)
213298e903e7SBaptiste Daroussin	cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
213398e903e7SBaptiste Daroussin	;;
21340f86d14eSJung-uk Kim(hpux*)
213598e903e7SBaptiste Daroussin	cf_xopen_source="-D_HPUX_SOURCE"
213698e903e7SBaptiste Daroussin	;;
21370f86d14eSJung-uk Kim(irix[[56]].*)
213898e903e7SBaptiste Daroussin	cf_xopen_source="-D_SGI_SOURCE"
213998e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=
214098e903e7SBaptiste Daroussin	;;
2141*822ca327SBaptiste Daroussin(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin|msys|mingw*|linux*uclibc)
2142b53bb29fSJung-uk Kim	CF_GNU_SOURCE($cf_XOPEN_SOURCE)
214398e903e7SBaptiste Daroussin	;;
21440f86d14eSJung-uk Kim(minix*)
214511fce282SBaptiste Daroussin	cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
214611fce282SBaptiste Daroussin	;;
21470f86d14eSJung-uk Kim(mirbsd*)
214898e903e7SBaptiste Daroussin	# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
214998e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=
215098e903e7SBaptiste Daroussin	CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
215198e903e7SBaptiste Daroussin	;;
21520f86d14eSJung-uk Kim(netbsd*)
215398e903e7SBaptiste Daroussin	cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
215498e903e7SBaptiste Daroussin	;;
21558e022d3cSDag-Erling Smørgrav(openbsd[[6-9]]*)
21568e022d3cSDag-Erling Smørgrav	# OpenBSD 6.x has broken locale support, both compile-time and runtime.
21578e022d3cSDag-Erling Smørgrav	# see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
21588e022d3cSDag-Erling Smørgrav	# Abusing the conformance level is a workaround.
21598e022d3cSDag-Erling Smørgrav	AC_MSG_WARN(this system does not provide usable locale support)
21608e022d3cSDag-Erling Smørgrav	cf_xopen_source="-D_BSD_SOURCE"
21618e022d3cSDag-Erling Smørgrav	cf_XOPEN_SOURCE=700
21628e022d3cSDag-Erling Smørgrav	;;
21638e022d3cSDag-Erling Smørgrav(openbsd[[4-5]]*)
216498e903e7SBaptiste Daroussin	# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
216598e903e7SBaptiste Daroussin	cf_xopen_source="-D_BSD_SOURCE"
216698e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=600
216798e903e7SBaptiste Daroussin	;;
21680f86d14eSJung-uk Kim(openbsd*)
216998e903e7SBaptiste Daroussin	# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
217098e903e7SBaptiste Daroussin	;;
21710f86d14eSJung-uk Kim(osf[[45]]*)
217298e903e7SBaptiste Daroussin	cf_xopen_source="-D_OSF_SOURCE"
217398e903e7SBaptiste Daroussin	;;
21740f86d14eSJung-uk Kim(nto-qnx*)
217598e903e7SBaptiste Daroussin	cf_xopen_source="-D_QNX_SOURCE"
217698e903e7SBaptiste Daroussin	;;
21770f86d14eSJung-uk Kim(sco*)
217898e903e7SBaptiste Daroussin	# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
217998e903e7SBaptiste Daroussin	;;
21800f86d14eSJung-uk Kim(solaris2.*)
218198e903e7SBaptiste Daroussin	cf_xopen_source="-D__EXTENSIONS__"
21820c8de5b0SBaptiste Daroussin	cf_cv_xopen_source=broken
218398e903e7SBaptiste Daroussin	;;
21840f86d14eSJung-uk Kim(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
218511fce282SBaptiste Daroussin	cf_XOPEN_SOURCE=
218611fce282SBaptiste Daroussin	cf_POSIX_C_SOURCE=
218711fce282SBaptiste Daroussin	;;
21880f86d14eSJung-uk Kim(*)
218998e903e7SBaptiste Daroussin	CF_TRY_XOPEN_SOURCE
21908e022d3cSDag-Erling Smørgrav	cf_save_xopen_cppflags="$CPPFLAGS"
219198e903e7SBaptiste Daroussin	CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
21928e022d3cSDag-Erling Smørgrav	# Some of these niche implementations use copy/paste, double-check...
2193*822ca327SBaptiste Daroussin	if test "$cf_cv_xopen_source" = no ; then
2194*822ca327SBaptiste Daroussin		CF_VERBOSE(checking if _POSIX_C_SOURCE interferes with _XOPEN_SOURCE)
21958e022d3cSDag-Erling Smørgrav		AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[
21968e022d3cSDag-Erling Smørgrav			AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable)
21978e022d3cSDag-Erling Smørgrav			CPPFLAGS="$cf_save_xopen_cppflags"])
21988e022d3cSDag-Erling Smørgrav	fi
219998e903e7SBaptiste Daroussin	;;
220098e903e7SBaptiste Daroussinesac
220198e903e7SBaptiste Daroussin
220298e903e7SBaptiste Daroussinif test -n "$cf_xopen_source" ; then
22038e022d3cSDag-Erling Smørgrav	CF_APPEND_CFLAGS($cf_xopen_source,true)
220498e903e7SBaptiste Daroussinfi
220598e903e7SBaptiste Daroussin
220698e903e7SBaptiste Daroussindnl In anything but the default case, we may have system-specific setting
220798e903e7SBaptiste Daroussindnl which is still not guaranteed to provide all of the entrypoints that
220898e903e7SBaptiste Daroussindnl _XOPEN_SOURCE would yield.
220998e903e7SBaptiste Daroussinif test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
221098e903e7SBaptiste Daroussin	AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
221198e903e7SBaptiste Daroussin	AC_TRY_COMPILE([#include <stdlib.h>],[
221298e903e7SBaptiste Daroussin#ifndef _XOPEN_SOURCE
2213*822ca327SBaptiste Daroussin#error _XOPEN_SOURCE is not defined
221498e903e7SBaptiste Daroussin#endif],
221598e903e7SBaptiste Daroussin	[cf_XOPEN_SOURCE_set=yes],
221698e903e7SBaptiste Daroussin	[cf_XOPEN_SOURCE_set=no])
221798e903e7SBaptiste Daroussin	AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
22188e022d3cSDag-Erling Smørgrav	if test "$cf_XOPEN_SOURCE_set" = yes
221998e903e7SBaptiste Daroussin	then
222098e903e7SBaptiste Daroussin		AC_TRY_COMPILE([#include <stdlib.h>],[
222198e903e7SBaptiste Daroussin#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
2222*822ca327SBaptiste Daroussin#error (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
222398e903e7SBaptiste Daroussin#endif],
222498e903e7SBaptiste Daroussin		[cf_XOPEN_SOURCE_set_ok=yes],
222598e903e7SBaptiste Daroussin		[cf_XOPEN_SOURCE_set_ok=no])
22268e022d3cSDag-Erling Smørgrav		if test "$cf_XOPEN_SOURCE_set_ok" = no
222798e903e7SBaptiste Daroussin		then
222898e903e7SBaptiste Daroussin			AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
222998e903e7SBaptiste Daroussin		fi
223098e903e7SBaptiste Daroussin	else
223198e903e7SBaptiste Daroussin		CF_TRY_XOPEN_SOURCE
223298e903e7SBaptiste Daroussin	fi
223398e903e7SBaptiste Daroussinfi
2234b53bb29fSJung-uk Kimfi # cf_cv_posix_visible
223598e903e7SBaptiste Daroussin])
22368e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
2237*822ca327SBaptiste Daroussindnl CF__XOPEN_SOURCE_BODY version: 2 updated: 2023/02/18 17:41:25
22388e022d3cSDag-Erling Smørgravdnl ---------------------
22398e022d3cSDag-Erling Smørgravdnl body of test when test-compiling for _XOPEN_SOURCE check
22408e022d3cSDag-Erling Smørgravdefine([CF__XOPEN_SOURCE_BODY],
22418e022d3cSDag-Erling Smørgrav[
22428e022d3cSDag-Erling Smørgrav#ifndef _XOPEN_SOURCE
2243*822ca327SBaptiste Daroussin#error _XOPEN_SOURCE is not defined
22448e022d3cSDag-Erling Smørgrav#endif
22458e022d3cSDag-Erling Smørgrav])
22468e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
2247*822ca327SBaptiste Daroussindnl CF__XOPEN_SOURCE_HEAD version: 2 updated: 2023/02/18 17:41:25
22488e022d3cSDag-Erling Smørgravdnl ---------------------
22498e022d3cSDag-Erling Smørgravdnl headers to include when test-compiling for _XOPEN_SOURCE check
22508e022d3cSDag-Erling Smørgravdefine([CF__XOPEN_SOURCE_HEAD],
22518e022d3cSDag-Erling Smørgrav[
2252*822ca327SBaptiste Daroussin$ac_includes_default
22538e022d3cSDag-Erling Smørgrav])
2254