xref: /freebsd/contrib/byacc/aclocal.m4 (revision 8e022d3c)
1*8e022d3cSDag-Erling Smørgravdnl $Id: aclocal.m4,v 1.59 2023/01/05 22:53:11 tom Exp $
298e903e7SBaptiste Daroussindnl Macros for byacc configure script (Thomas E. Dickey)
398e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
4*8e022d3cSDag-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 ---------------------------------------------------------------------------
57*8e022d3cSDag-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
60*8e022d3cSDag-Erling Smørgravdnl $1 = flags to add
61*8e022d3cSDag-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
75*8e022d3cSDag-Erling Smørgravcase "$cf_fix_cppflags" in
760f86d14eSJung-uk Kim(no)
77*8e022d3cSDag-Erling Smørgrav	case "$cf_add_cflags" in
780f86d14eSJung-uk Kim	(-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C)
79*8e022d3cSDag-Erling Smørgrav		case "$cf_add_cflags" in
800f86d14eSJung-uk Kim		(-D*)
81*8e022d3cSDag-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
87*8e022d3cSDag-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		(*)
100*8e022d3cSDag-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
118*8e022d3cSDag-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 ---------------------------------------------------------------------------
146*8e022d3cSDag-Erling Smørgravdnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40
147*8e022d3cSDag-Erling Smørgravdnl ----------------
148*8e022d3cSDag-Erling Smørgravdnl Use CF_ADD_CFLAGS after first checking for potential redefinitions.
149*8e022d3cSDag-Erling Smørgravdnl $1 = flags to add
150*8e022d3cSDag-Erling Smørgravdnl $2 = if given makes this macro verbose.
151*8e022d3cSDag-Erling Smørgravdefine([CF_APPEND_CFLAGS],
152*8e022d3cSDag-Erling Smørgrav[
153*8e022d3cSDag-Erling Smørgravfor cf_add_cflags in $1
154*8e022d3cSDag-Erling Smørgravdo
155*8e022d3cSDag-Erling Smørgrav	case "x$cf_add_cflags" in
156*8e022d3cSDag-Erling Smørgrav	(x-[[DU]]*)
157*8e022d3cSDag-Erling Smørgrav		CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2])
158*8e022d3cSDag-Erling Smørgrav		CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2])
159*8e022d3cSDag-Erling Smørgrav		;;
160*8e022d3cSDag-Erling Smørgrav	esac
161*8e022d3cSDag-Erling Smørgrav	CF_ADD_CFLAGS([$cf_add_cflags],[$2])
162*8e022d3cSDag-Erling Smørgravdone
163*8e022d3cSDag-Erling Smørgrav])dnl
164*8e022d3cSDag-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 ---------------------------------------------------------------------------
181*8e022d3cSDag-Erling Smørgravdnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31
182*8e022d3cSDag-Erling Smørgravdnl -------------
183*8e022d3cSDag-Erling Smørgravdnl Allow user to enable a normally-off option.
184*8e022d3cSDag-Erling SmørgravAC_DEFUN([CF_ARG_ENABLE],
185*8e022d3cSDag-Erling Smørgrav[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl
186*8e022d3cSDag-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*8e022d3cSDag-Erling Smørgravdnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23
211*8e022d3cSDag-Erling Smørgravdnl ---------------
212*8e022d3cSDag-Erling SmørgravAC_DEFUN([CF_C11_NORETURN],
213*8e022d3cSDag-Erling Smørgrav[
214*8e022d3cSDag-Erling SmørgravAC_MSG_CHECKING(if you want to use C11 _Noreturn feature)
215*8e022d3cSDag-Erling SmørgravCF_ARG_ENABLE(stdnoreturn,
216*8e022d3cSDag-Erling Smørgrav	[  --enable-stdnoreturn    enable C11 _Noreturn feature for diagnostics],
217*8e022d3cSDag-Erling Smørgrav	[enable_stdnoreturn=yes],
218*8e022d3cSDag-Erling Smørgrav	[enable_stdnoreturn=no])
219*8e022d3cSDag-Erling SmørgravAC_MSG_RESULT($enable_stdnoreturn)
220*8e022d3cSDag-Erling Smørgrav
221*8e022d3cSDag-Erling Smørgravif test $enable_stdnoreturn = yes; then
222*8e022d3cSDag-Erling SmørgravAC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
223*8e022d3cSDag-Erling Smørgrav	[AC_TRY_COMPILE([
224*8e022d3cSDag-Erling Smørgrav#include <stdio.h>
225*8e022d3cSDag-Erling Smørgrav#include <stdlib.h>
226*8e022d3cSDag-Erling Smørgrav#include <stdnoreturn.h>
227*8e022d3cSDag-Erling Smørgravstatic _Noreturn void giveup(void) { exit(0); }
228*8e022d3cSDag-Erling Smørgrav	],
229*8e022d3cSDag-Erling Smørgrav	[if (feof(stdin)) giveup()],
230*8e022d3cSDag-Erling Smørgrav	cf_cv_c11_noreturn=yes,
231*8e022d3cSDag-Erling Smørgrav	cf_cv_c11_noreturn=no)
232*8e022d3cSDag-Erling Smørgrav	])
233*8e022d3cSDag-Erling Smørgravelse
234*8e022d3cSDag-Erling Smørgrav	cf_cv_c11_noreturn=no,
235*8e022d3cSDag-Erling Smørgravfi
236*8e022d3cSDag-Erling Smørgrav
237*8e022d3cSDag-Erling Smørgravif test "$cf_cv_c11_noreturn" = yes; then
238*8e022d3cSDag-Erling Smørgrav	AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working])
239*8e022d3cSDag-Erling Smørgrav	AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported])
240*8e022d3cSDag-Erling Smørgrav	HAVE_STDNORETURN_H=1
241*8e022d3cSDag-Erling Smørgravelse
242*8e022d3cSDag-Erling Smørgrav	HAVE_STDNORETURN_H=0
243*8e022d3cSDag-Erling Smørgravfi
244*8e022d3cSDag-Erling Smørgrav
245*8e022d3cSDag-Erling SmørgravAC_SUBST(HAVE_STDNORETURN_H)
246*8e022d3cSDag-Erling SmørgravAC_SUBST(STDC_NORETURN)
247*8e022d3cSDag-Erling Smørgrav])dnl
248*8e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
249*8e022d3cSDag-Erling Smørgravdnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20
2505b91e83fSBaptiste Daroussindnl ---------------
2515b91e83fSBaptiste Daroussindnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
2522aca18c7SJung-uk Kimdnl into CC.  This will not help with broken scripts that wrap the compiler
2532aca18c7SJung-uk Kimdnl with options, but eliminates a more common category of user confusion.
2542aca18c7SJung-uk Kimdnl
2552aca18c7SJung-uk Kimdnl In particular, it addresses the problem of being able to run the C
2562aca18c7SJung-uk Kimdnl preprocessor in a consistent manner.
257c5b5d71aSJung-uk Kimdnl
258c5b5d71aSJung-uk Kimdnl Caveat: this also disallows blanks in the pathname for the compiler, but
259c5b5d71aSJung-uk Kimdnl the nuisance of having inconsistent settings for compiler and preprocessor
260c5b5d71aSJung-uk Kimdnl outweighs that limitation.
2615b91e83fSBaptiste DaroussinAC_DEFUN([CF_CC_ENV_FLAGS],
2625b91e83fSBaptiste Daroussin[
2635b91e83fSBaptiste Daroussin# This should have been defined by AC_PROG_CC
264*8e022d3cSDag-Erling Smørgrav: "${CC:=cc}"
2655b91e83fSBaptiste Daroussin
266b53bb29fSJung-uk KimAC_MSG_CHECKING(\$CFLAGS variable)
267b53bb29fSJung-uk Kimcase "x$CFLAGS" in
268b53bb29fSJung-uk Kim(*-[[IUD]]*)
269b53bb29fSJung-uk Kim	AC_MSG_RESULT(broken)
270b53bb29fSJung-uk Kim	AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options)
271b53bb29fSJung-uk Kim	cf_flags="$CFLAGS"
272b53bb29fSJung-uk Kim	CFLAGS=
273b53bb29fSJung-uk Kim	for cf_arg in $cf_flags
274b53bb29fSJung-uk Kim	do
275b53bb29fSJung-uk Kim		CF_ADD_CFLAGS($cf_arg)
276b53bb29fSJung-uk Kim	done
277b53bb29fSJung-uk Kim	;;
278b53bb29fSJung-uk Kim(*)
279b53bb29fSJung-uk Kim	AC_MSG_RESULT(ok)
280b53bb29fSJung-uk Kim	;;
281b53bb29fSJung-uk Kimesac
282b53bb29fSJung-uk Kim
2835b91e83fSBaptiste DaroussinAC_MSG_CHECKING(\$CC variable)
2840f86d14eSJung-uk Kimcase "$CC" in
285c5b5d71aSJung-uk Kim(*[[\ \	]]-*)
2865b91e83fSBaptiste Daroussin	AC_MSG_RESULT(broken)
287b53bb29fSJung-uk Kim	AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options)
2885b91e83fSBaptiste Daroussin	# humor him...
289b53bb29fSJung-uk Kim	cf_prog=`echo "$CC" | sed -e 's/	/ /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'`
290b53bb29fSJung-uk Kim	cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'`
291b53bb29fSJung-uk Kim	CC="$cf_prog"
2922aca18c7SJung-uk Kim	for cf_arg in $cf_flags
2932aca18c7SJung-uk Kim	do
2942aca18c7SJung-uk Kim		case "x$cf_arg" in
2952aca18c7SJung-uk Kim		(x-[[IUDfgOW]]*)
296b53bb29fSJung-uk Kim			CF_ADD_CFLAGS($cf_arg)
2972aca18c7SJung-uk Kim			;;
2982aca18c7SJung-uk Kim		(*)
2992aca18c7SJung-uk Kim			CC="$CC $cf_arg"
3002aca18c7SJung-uk Kim			;;
3012aca18c7SJung-uk Kim		esac
3022aca18c7SJung-uk Kim	done
303c5b5d71aSJung-uk Kim	CF_VERBOSE(resulting CC: '$CC')
304c5b5d71aSJung-uk Kim	CF_VERBOSE(resulting CFLAGS: '$CFLAGS')
305c5b5d71aSJung-uk Kim	CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS')
3065b91e83fSBaptiste Daroussin	;;
3070f86d14eSJung-uk Kim(*)
3085b91e83fSBaptiste Daroussin	AC_MSG_RESULT(ok)
3095b91e83fSBaptiste Daroussin	;;
3105b91e83fSBaptiste Daroussinesac
3115b91e83fSBaptiste Daroussin])dnl
3125b91e83fSBaptiste Daroussindnl ---------------------------------------------------------------------------
313*8e022d3cSDag-Erling Smørgravdnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15
31498e903e7SBaptiste Daroussindnl --------------
31598e903e7SBaptiste Daroussindnl Check if we're accidentally using a cache from a different machine.
31698e903e7SBaptiste Daroussindnl Derive the system name, as a check for reusing the autoconf cache.
31798e903e7SBaptiste Daroussindnl
31898e903e7SBaptiste Daroussindnl If we've packaged config.guess and config.sub, run that (since it does a
31998e903e7SBaptiste Daroussindnl better job than uname).  Normally we'll use AC_CANONICAL_HOST, but allow
32098e903e7SBaptiste Daroussindnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
32198e903e7SBaptiste Daroussindnl which is useful in cross-compiles.
32298e903e7SBaptiste Daroussindnl
32398e903e7SBaptiste Daroussindnl Note: we would use $ac_config_sub, but that is one of the places where
32498e903e7SBaptiste Daroussindnl autoconf 2.5x broke compatibility with autoconf 2.13
32598e903e7SBaptiste DaroussinAC_DEFUN([CF_CHECK_CACHE],
32698e903e7SBaptiste Daroussin[
327*8e022d3cSDag-Erling Smørgravif test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then
32898e903e7SBaptiste Daroussin	ifelse([$1],,[AC_CANONICAL_HOST],[$1])
32998e903e7SBaptiste Daroussin	system_name="$host_os"
33098e903e7SBaptiste Daroussinelse
33198e903e7SBaptiste Daroussin	system_name="`(uname -s -r) 2>/dev/null`"
33298e903e7SBaptiste Daroussin	if test -z "$system_name" ; then
33398e903e7SBaptiste Daroussin		system_name="`(hostname) 2>/dev/null`"
33498e903e7SBaptiste Daroussin	fi
33598e903e7SBaptiste Daroussinfi
3365b91e83fSBaptiste Daroussintest -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
33798e903e7SBaptiste DaroussinAC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
33898e903e7SBaptiste Daroussin
33998e903e7SBaptiste Daroussintest -z "$system_name" && system_name="$cf_cv_system_name"
34098e903e7SBaptiste Daroussintest -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name)
34198e903e7SBaptiste Daroussin
34298e903e7SBaptiste Daroussinif test ".$system_name" != ".$cf_cv_system_name" ; then
34398e903e7SBaptiste Daroussin	AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name))
34498e903e7SBaptiste Daroussin	AC_MSG_ERROR("Please remove config.cache and try again.")
34598e903e7SBaptiste Daroussinfi
34698e903e7SBaptiste Daroussin])dnl
34798e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
348*8e022d3cSDag-Erling Smørgravdnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04
3495b91e83fSBaptiste Daroussindnl -----------------
3505b91e83fSBaptiste Daroussindnl Check if the given compiler is really clang.  clang's C driver defines
3515b91e83fSBaptiste Daroussindnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
3525b91e83fSBaptiste Daroussindnl not ignore some gcc options.
3535b91e83fSBaptiste Daroussindnl
3545b91e83fSBaptiste Daroussindnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
3555b91e83fSBaptiste Daroussindnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
3565b91e83fSBaptiste Daroussindnl the wrappers for gcc and g++ warnings.
3575b91e83fSBaptiste Daroussindnl
3585b91e83fSBaptiste Daroussindnl $1 = GCC (default) or GXX
3594b4a8fcaSBaptiste Daroussindnl $2 = CLANG_COMPILER (default)
3605b91e83fSBaptiste Daroussindnl $3 = CFLAGS (default) or CXXFLAGS
3615b91e83fSBaptiste DaroussinAC_DEFUN([CF_CLANG_COMPILER],[
3625b91e83fSBaptiste Daroussinifelse([$2],,CLANG_COMPILER,[$2])=no
3635b91e83fSBaptiste Daroussin
3645b91e83fSBaptiste Daroussinif test "$ifelse([$1],,[$1],GCC)" = yes ; then
3655b91e83fSBaptiste Daroussin	AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
3665b91e83fSBaptiste Daroussin	cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
3675b91e83fSBaptiste Daroussin	AC_TRY_COMPILE([],[
3685b91e83fSBaptiste Daroussin#ifdef __clang__
3695b91e83fSBaptiste Daroussin#else
3705b91e83fSBaptiste Daroussinmake an error
3715b91e83fSBaptiste Daroussin#endif
3725b91e83fSBaptiste Daroussin],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
3735b91e83fSBaptiste Daroussin],[])
3745b91e83fSBaptiste Daroussin	ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
3755b91e83fSBaptiste Daroussin	AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
3765b91e83fSBaptiste Daroussinfi
377*8e022d3cSDag-Erling Smørgrav
378*8e022d3cSDag-Erling SmørgravCLANG_VERSION=none
379*8e022d3cSDag-Erling Smørgrav
380*8e022d3cSDag-Erling Smørgravif test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
381*8e022d3cSDag-Erling Smørgrav	case "$CC" in
382*8e022d3cSDag-Erling Smørgrav	(c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]])
383*8e022d3cSDag-Erling Smørgrav		AC_MSG_WARN(replacing broken compiler alias $CC)
384*8e022d3cSDag-Erling Smørgrav		CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`"
385*8e022d3cSDag-Erling Smørgrav		CC=clang
386*8e022d3cSDag-Erling Smørgrav		;;
387*8e022d3cSDag-Erling Smørgrav	esac
388*8e022d3cSDag-Erling Smørgrav
389*8e022d3cSDag-Erling Smørgrav	AC_MSG_CHECKING(version of $CC)
390*8e022d3cSDag-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.]].*//'`"
391*8e022d3cSDag-Erling Smørgrav	test -z "$CLANG_VERSION" && CLANG_VERSION=unknown
392*8e022d3cSDag-Erling Smørgrav	AC_MSG_RESULT($CLANG_VERSION)
393*8e022d3cSDag-Erling Smørgrav
394*8e022d3cSDag-Erling Smørgrav	for cf_clang_opt in \
395*8e022d3cSDag-Erling Smørgrav		-Qunused-arguments \
396*8e022d3cSDag-Erling Smørgrav		-Wno-error=implicit-function-declaration
397*8e022d3cSDag-Erling Smørgrav	do
398*8e022d3cSDag-Erling Smørgrav		AC_MSG_CHECKING(if option $cf_clang_opt works)
399*8e022d3cSDag-Erling Smørgrav		cf_save_CFLAGS="$CFLAGS"
400*8e022d3cSDag-Erling Smørgrav		CFLAGS="$CFLAGS $cf_clang_opt"
401*8e022d3cSDag-Erling Smørgrav		AC_TRY_LINK([
402*8e022d3cSDag-Erling Smørgrav			#include <stdio.h>],[
403*8e022d3cSDag-Erling Smørgrav			printf("hello!\\n");],[
404*8e022d3cSDag-Erling Smørgrav			cf_clang_optok=yes],[
405*8e022d3cSDag-Erling Smørgrav			cf_clang_optok=no])
406*8e022d3cSDag-Erling Smørgrav		AC_MSG_RESULT($cf_clang_optok)
407*8e022d3cSDag-Erling Smørgrav		CFLAGS="$cf_save_CFLAGS"
408*8e022d3cSDag-Erling Smørgrav		if test "$cf_clang_optok" = yes; then
409*8e022d3cSDag-Erling Smørgrav			CF_VERBOSE(adding option $cf_clang_opt)
410*8e022d3cSDag-Erling Smørgrav			CF_APPEND_TEXT(CFLAGS,$cf_clang_opt)
411*8e022d3cSDag-Erling Smørgrav		fi
412*8e022d3cSDag-Erling Smørgrav	done
413*8e022d3cSDag-Erling Smørgravfi
4145b91e83fSBaptiste Daroussin])
4155b91e83fSBaptiste Daroussindnl ---------------------------------------------------------------------------
416*8e022d3cSDag-Erling Smørgravdnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
417b53bb29fSJung-uk Kimdnl -----------------
418b53bb29fSJung-uk Kimdnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
419b53bb29fSJung-uk Kimdnl character-strings.
420b53bb29fSJung-uk Kimdnl
421b53bb29fSJung-uk Kimdnl It is ambiguous because the specification accommodated the pre-ANSI
422b53bb29fSJung-uk Kimdnl compilers bundled by more than one vendor in lieu of providing a standard C
423b53bb29fSJung-uk Kimdnl compiler other than by costly add-ons.  Because of this, the specification
424b53bb29fSJung-uk Kimdnl did not take into account the use of const for telling the compiler that
425b53bb29fSJung-uk Kimdnl string literals would be in readonly memory.
426b53bb29fSJung-uk Kimdnl
427b53bb29fSJung-uk Kimdnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to
428b53bb29fSJung-uk Kimdnl let the compiler decide how to represent Xt's strings which were #define'd.
429b53bb29fSJung-uk Kimdnl That does not solve the problem of using the block of Xt's strings which
430b53bb29fSJung-uk Kimdnl are compiled into the library (and is less efficient than one might want).
431b53bb29fSJung-uk Kimdnl
432b53bb29fSJung-uk Kimdnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both
433b53bb29fSJung-uk Kimdnl when compiling the library and compiling using the library, to tell the
434b53bb29fSJung-uk Kimdnl compiler that String is const.
435b53bb29fSJung-uk KimAC_DEFUN([CF_CONST_X_STRING],
436b53bb29fSJung-uk Kim[
437b53bb29fSJung-uk KimAC_REQUIRE([AC_PATH_XTRA])
438b53bb29fSJung-uk Kim
439b53bb29fSJung-uk KimCF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING])
440b53bb29fSJung-uk Kim
441b53bb29fSJung-uk KimAC_TRY_COMPILE(
442b53bb29fSJung-uk Kim[
443b53bb29fSJung-uk Kim#include <stdlib.h>
444b53bb29fSJung-uk Kim#include <X11/Intrinsic.h>
445b53bb29fSJung-uk Kim],
446*8e022d3cSDag-Erling Smørgrav[String foo = malloc(1); free((void*)foo)],[
447b53bb29fSJung-uk Kim
448b53bb29fSJung-uk KimAC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
449b53bb29fSJung-uk Kim	AC_TRY_COMPILE(
450b53bb29fSJung-uk Kim		[
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
464*8e022d3cSDag-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 ---------------------------------------------------------------------------
476*8e022d3cSDag-Erling Smørgravdnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04
47798e903e7SBaptiste Daroussindnl ---------------
478*8e022d3cSDag-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 ---------------------------------------------------------------------------
513*8e022d3cSDag-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],
526*8e022d3cSDag-Erling Smørgrav	[enable_leaks=$enableval],
527*8e022d3cSDag-Erling Smørgrav	[enable_leaks=yes])
528*8e022d3cSDag-Erling Smørgravdnl with_no_leaks is more readable...
529*8e022d3cSDag-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
532*8e022d3cSDag-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 ---------------------------------------------------------------------------
538*8e022d3cSDag-Erling Smørgravdnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50
539*8e022d3cSDag-Erling Smørgravdnl ------------------
540*8e022d3cSDag-Erling Smørgravdnl Configure-option to enable gcc warnings
541*8e022d3cSDag-Erling Smørgravdnl
542*8e022d3cSDag-Erling Smørgravdnl $1 = extra options to add, if supported
543*8e022d3cSDag-Erling Smørgravdnl $2 = option for checking attributes.  By default, this is done when
544*8e022d3cSDag-Erling Smørgravdnl      warnings are enabled.  For other values:
545*8e022d3cSDag-Erling Smørgravdnl      yes: always do this, e.g., to use in generated library-headers
546*8e022d3cSDag-Erling Smørgravdnl      no: never do this
547*8e022d3cSDag-Erling SmørgravAC_DEFUN([CF_ENABLE_WARNINGS],[
548*8e022d3cSDag-Erling Smørgravif test "$GCC" = yes || test "$GXX" = yes
549*8e022d3cSDag-Erling Smørgravthen
550*8e022d3cSDag-Erling SmørgravCF_FIX_WARNINGS(CFLAGS)
551*8e022d3cSDag-Erling SmørgravCF_FIX_WARNINGS(CPPFLAGS)
552*8e022d3cSDag-Erling SmørgravCF_FIX_WARNINGS(LDFLAGS)
553*8e022d3cSDag-Erling SmørgravAC_MSG_CHECKING(if you want to turn on gcc warnings)
554*8e022d3cSDag-Erling SmørgravCF_ARG_ENABLE(warnings,
555*8e022d3cSDag-Erling Smørgrav	[  --enable-warnings       test: turn on gcc compiler warnings],
556*8e022d3cSDag-Erling Smørgrav	[enable_warnings=yes],
557*8e022d3cSDag-Erling Smørgrav	[enable_warnings=no])
558*8e022d3cSDag-Erling SmørgravAC_MSG_RESULT($enable_warnings)
559*8e022d3cSDag-Erling Smørgravif test "$enable_warnings" = "yes"
560*8e022d3cSDag-Erling Smørgravthen
561*8e022d3cSDag-Erling Smørgrav	ifelse($2,,[CF_GCC_ATTRIBUTES])
562*8e022d3cSDag-Erling Smørgrav	CF_GCC_WARNINGS($1)
563*8e022d3cSDag-Erling Smørgravfi
564*8e022d3cSDag-Erling Smørgravifelse($2,yes,[CF_GCC_ATTRIBUTES])
565*8e022d3cSDag-Erling Smørgravfi
566*8e022d3cSDag-Erling Smørgrav])dnl
567*8e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
568*8e022d3cSDag-Erling Smørgravdnl CF_FIX_WARNINGS version: 4 updated: 2021/12/16 18:22:31
569*8e022d3cSDag-Erling Smørgravdnl ---------------
570*8e022d3cSDag-Erling Smørgravdnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc.  Any of gcc's
571*8e022d3cSDag-Erling Smørgravdnl "-Werror" flags can interfere with configure-checks.  Those go into
572*8e022d3cSDag-Erling Smørgravdnl EXTRA_CFLAGS.
573*8e022d3cSDag-Erling Smørgravdnl
574*8e022d3cSDag-Erling Smørgravdnl $1 = variable name to repair
575*8e022d3cSDag-Erling Smørgravdefine([CF_FIX_WARNINGS],[
576*8e022d3cSDag-Erling Smørgravif test "$GCC" = yes || test "$GXX" = yes
577*8e022d3cSDag-Erling Smørgravthen
578*8e022d3cSDag-Erling Smørgrav	case [$]$1 in
579*8e022d3cSDag-Erling Smørgrav	(*-Werror=*)
580*8e022d3cSDag-Erling Smørgrav		cf_temp_flags=
581*8e022d3cSDag-Erling Smørgrav		for cf_temp_scan in [$]$1
582*8e022d3cSDag-Erling Smørgrav		do
583*8e022d3cSDag-Erling Smørgrav			case "x$cf_temp_scan" in
584*8e022d3cSDag-Erling Smørgrav			(x-Werror=format*)
585*8e022d3cSDag-Erling Smørgrav				CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
586*8e022d3cSDag-Erling Smørgrav				;;
587*8e022d3cSDag-Erling Smørgrav			(x-Werror=*)
588*8e022d3cSDag-Erling Smørgrav				CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan)
589*8e022d3cSDag-Erling Smørgrav				;;
590*8e022d3cSDag-Erling Smørgrav			(*)
591*8e022d3cSDag-Erling Smørgrav				CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan)
592*8e022d3cSDag-Erling Smørgrav				;;
593*8e022d3cSDag-Erling Smørgrav			esac
594*8e022d3cSDag-Erling Smørgrav		done
595*8e022d3cSDag-Erling Smørgrav		if test "x[$]$1" != "x$cf_temp_flags"
596*8e022d3cSDag-Erling Smørgrav		then
597*8e022d3cSDag-Erling Smørgrav			CF_VERBOSE(repairing $1: [$]$1)
598*8e022d3cSDag-Erling Smørgrav			$1="$cf_temp_flags"
599*8e022d3cSDag-Erling Smørgrav			CF_VERBOSE(... fixed [$]$1)
600*8e022d3cSDag-Erling Smørgrav			CF_VERBOSE(... extra $EXTRA_CFLAGS)
601*8e022d3cSDag-Erling Smørgrav		fi
602*8e022d3cSDag-Erling Smørgrav		;;
603*8e022d3cSDag-Erling Smørgrav	esac
604*8e022d3cSDag-Erling Smørgravfi
605*8e022d3cSDag-Erling SmørgravAC_SUBST(EXTRA_CFLAGS)
606*8e022d3cSDag-Erling Smørgrav])dnl
607*8e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
608*8e022d3cSDag-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],
614*8e022d3cSDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_FGREP])dnl
615*8e022d3cSDag-Erling SmørgravAC_REQUIRE([CF_C11_NORETURN])dnl
616*8e022d3cSDag-Erling Smørgrav
617*8e022d3cSDag-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])
636*8e022d3cSDag-Erling Smørgravcat > "conftest.$ac_ext" <<EOF
63798e903e7SBaptiste Daroussin#line __oline__ "${as_me:-configure}"
638*8e022d3cSDag-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);
653*8e022d3cSDag-Erling Smørgravextern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2);
654*8e022d3cSDag-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
665*8e022d3cSDag-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
688*8e022d3cSDag-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
715*8e022d3cSDag-Erling Smørgrav	${FGREP-fgrep} define conftest.i >>confdefs.h
71698e903e7SBaptiste Daroussinfi
717*8e022d3cSDag-Erling Smørgravrm -rf ./conftest*
71898e903e7SBaptiste Daroussinfi
71998e903e7SBaptiste Daroussin])dnl
72098e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
721b53bb29fSJung-uk Kimdnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36
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)
7305b91e83fSBaptiste Daroussin	GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
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 ---------------------------------------------------------------------------
738*8e022d3cSDag-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
762*8e022d3cSDag-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"
781*8e022d3cSDag-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)
826*8e022d3cSDag-Erling Smørgrav			case "$cf_opt" in
8270f86d14eSJung-uk Kim			(Winline)
828*8e022d3cSDag-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)
835*8e022d3cSDag-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
847*8e022d3cSDag-Erling Smørgravrm -rf ./conftest*
84898e903e7SBaptiste Daroussin
84998e903e7SBaptiste DaroussinAC_SUBST(EXTRA_CFLAGS)
85098e903e7SBaptiste Daroussin])dnl
85198e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
852*8e022d3cSDag-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>],
865*8e022d3cSDag-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])
870*8e022d3cSDag-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
873*8e022d3cSDag-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*8e022d3cSDag-Erling Smørgravdnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59
99098e903e7SBaptiste Daroussindnl -----------------
99198e903e7SBaptiste Daroussindnl Check if the given compiler is really the Intel compiler for Linux.  It
99298e903e7SBaptiste Daroussindnl tries to imitate gcc, but does not return an error when it finds a mismatch
99398e903e7SBaptiste Daroussindnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
99498e903e7SBaptiste Daroussindnl
99598e903e7SBaptiste Daroussindnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
99698e903e7SBaptiste Daroussindnl ensure that it is not mistaken for gcc/g++.  It is normally invoked from
99798e903e7SBaptiste Daroussindnl the wrappers for gcc and g++ warnings.
99898e903e7SBaptiste Daroussindnl
99998e903e7SBaptiste Daroussindnl $1 = GCC (default) or GXX
100098e903e7SBaptiste Daroussindnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
100198e903e7SBaptiste Daroussindnl $3 = CFLAGS (default) or CXXFLAGS
100298e903e7SBaptiste DaroussinAC_DEFUN([CF_INTEL_COMPILER],[
10035b91e83fSBaptiste DaroussinAC_REQUIRE([AC_CANONICAL_HOST])
100498e903e7SBaptiste Daroussinifelse([$2],,INTEL_COMPILER,[$2])=no
100598e903e7SBaptiste Daroussin
100698e903e7SBaptiste Daroussinif test "$ifelse([$1],,[$1],GCC)" = yes ; then
1007*8e022d3cSDag-Erling Smørgrav	case "$host_os" in
10080f86d14eSJung-uk Kim	(linux*|gnu*)
100998e903e7SBaptiste Daroussin		AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler)
101098e903e7SBaptiste Daroussin		cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
101198e903e7SBaptiste Daroussin		ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc"
101298e903e7SBaptiste Daroussin		AC_TRY_COMPILE([],[
101398e903e7SBaptiste Daroussin#ifdef __INTEL_COMPILER
101498e903e7SBaptiste Daroussin#else
101598e903e7SBaptiste Daroussinmake an error
101698e903e7SBaptiste Daroussin#endif
101798e903e7SBaptiste Daroussin],[ifelse([$2],,INTEL_COMPILER,[$2])=yes
10180c8de5b0SBaptiste Daroussincf_save_CFLAGS="$cf_save_CFLAGS -we147"
101998e903e7SBaptiste Daroussin],[])
102098e903e7SBaptiste Daroussin		ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
102198e903e7SBaptiste Daroussin		AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2]))
102298e903e7SBaptiste Daroussin		;;
102398e903e7SBaptiste Daroussin	esac
102498e903e7SBaptiste Daroussinfi
102598e903e7SBaptiste Daroussin])dnl
102698e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1027*8e022d3cSDag-Erling Smørgravdnl CF_MAKE_DOCS version: 5 updated: 2021/01/10 16:05:11
10284b4a8fcaSBaptiste Daroussindnl ------------
10294b4a8fcaSBaptiste Daroussindnl $1 = name(s) to generate rules for
10304b4a8fcaSBaptiste Daroussindnl $2 = suffix of corresponding manpages used as input.
10310f86d14eSJung-uk Kimdnl
10320f86d14eSJung-uk Kimdnl This works best if called at the end of configure.in, following CF_WITH_MAN2HTML
10334b4a8fcaSBaptiste Daroussindefine([CF_MAKE_DOCS],[
10344b4a8fcaSBaptiste Daroussintest -z "$cf_make_docs" && cf_make_docs=0
10354b4a8fcaSBaptiste Daroussin
10364b4a8fcaSBaptiste Daroussincf_output=makefile
10374b4a8fcaSBaptiste Daroussintest -f "$cf_output" || cf_output=Makefile
10384b4a8fcaSBaptiste Daroussin
10394b4a8fcaSBaptiste Daroussinif test "$cf_make_docs" = 0
10404b4a8fcaSBaptiste Daroussinthen
10410f86d14eSJung-uk Kimcat >>$cf_output <<CF_EOF
10424b4a8fcaSBaptiste Daroussin################################################################################
10430f86d14eSJung-uk Kim## generated by $0
10444b4a8fcaSBaptiste Daroussin.SUFFIXES : .html .$2 .man .ps .pdf .txt
10454b4a8fcaSBaptiste Daroussin
10460f86d14eSJung-uk Kim${NROFF_NOTE}.$2.txt :
10470f86d14eSJung-uk Kim${NROFF_NOTE}	[\$](SHELL) -c "tbl [\$]*.$2 | nroff -man | col -bx" >[\$]@
10484b4a8fcaSBaptiste Daroussin
10490f86d14eSJung-uk Kim${GROFF_NOTE}.ps.pdf :
10500f86d14eSJung-uk Kim${GROFF_NOTE}	ps2pdf [\$]*.ps
10510f86d14eSJung-uk Kim${GROFF_NOTE}
10520f86d14eSJung-uk Kim${GROFF_NOTE}.$2.ps :
10530f86d14eSJung-uk Kim${GROFF_NOTE}	[\$](SHELL) -c "tbl [\$]*.$2 | groff -man" >[\$]@
10540f86d14eSJung-uk Kim${GROFF_NOTE}
10550f86d14eSJung-uk Kim${GROFF_NOTE}.$2.txt :
1056*8e022d3cSDag-Erling Smørgrav${GROFF_NOTE}	GROFF_NO_SGR=stupid [\$](SHELL) -c "tbl [\$]*.$2 | nroff -rHY=0 -Tascii -man | col -bx" >[\$]@
10574b4a8fcaSBaptiste Daroussin
10580f86d14eSJung-uk Kim${MAN2HTML_NOTE}.$2.html :
10590f86d14eSJung-uk Kim${MAN2HTML_NOTE}	./${MAN2HTML_TEMP} [\$]* $2 man >[\$]@
10604b4a8fcaSBaptiste Daroussin
10614b4a8fcaSBaptiste DaroussinCF_EOF
10624b4a8fcaSBaptiste Daroussin	cf_make_docs=1
10634b4a8fcaSBaptiste Daroussinfi
10644b4a8fcaSBaptiste Daroussin
10654b4a8fcaSBaptiste Daroussinfor cf_name in $1
10664b4a8fcaSBaptiste Daroussindo
10674b4a8fcaSBaptiste Daroussincat >>$cf_output <<CF_EOF
10684b4a8fcaSBaptiste Daroussin################################################################################
10690f86d14eSJung-uk Kim${NROFF_NOTE}docs docs-$cf_name :: $cf_name.txt
10700f86d14eSJung-uk Kim${MAN2HTML_NOTE}docs docs-$cf_name :: $cf_name.html
10710f86d14eSJung-uk Kim${GROFF_NOTE}docs docs-$cf_name :: $cf_name.pdf
10720f86d14eSJung-uk Kim${GROFF_NOTE}docs docs-$cf_name :: $cf_name.ps
10730f86d14eSJung-uk Kim${GROFF_NOTE}docs docs-$cf_name :: $cf_name.txt
10744b4a8fcaSBaptiste Daroussin
10754b4a8fcaSBaptiste Daroussinclean \\
10764b4a8fcaSBaptiste Daroussindocs-clean ::
10770f86d14eSJung-uk Kim${NROFF_NOTE}	rm -f $cf_name.txt
10780f86d14eSJung-uk Kim${MAN2HTML_NOTE}	rm -f $cf_name.html
10790f86d14eSJung-uk Kim${GROFF_NOTE}	rm -f $cf_name.pdf
10800f86d14eSJung-uk Kim${GROFF_NOTE}	rm -f $cf_name.ps
10810f86d14eSJung-uk Kim${GROFF_NOTE}	rm -f $cf_name.txt
10824b4a8fcaSBaptiste Daroussin
10830f86d14eSJung-uk Kim${NROFF_NOTE}$cf_name.txt  : $cf_name.$2
10840f86d14eSJung-uk Kim${MAN2HTML_NOTE}$cf_name.html : $cf_name.$2
10850f86d14eSJung-uk Kim${GROFF_NOTE}$cf_name.pdf  : $cf_name.ps
10860f86d14eSJung-uk Kim${GROFF_NOTE}$cf_name.ps   : $cf_name.$2
10870f86d14eSJung-uk Kim${GROFF_NOTE}$cf_name.txt  : $cf_name.$2
10884b4a8fcaSBaptiste DaroussinCF_EOF
10894b4a8fcaSBaptiste Daroussindone
10904b4a8fcaSBaptiste Daroussin])dnl
10914b4a8fcaSBaptiste Daroussindnl ---------------------------------------------------------------------------
109298e903e7SBaptiste Daroussindnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
109398e903e7SBaptiste Daroussindnl ------------
109498e903e7SBaptiste Daroussindnl Generate tags/TAGS targets for makefiles.  Do not generate TAGS if we have
109598e903e7SBaptiste Daroussindnl a monocase filesystem.
109698e903e7SBaptiste DaroussinAC_DEFUN([CF_MAKE_TAGS],[
109798e903e7SBaptiste DaroussinAC_REQUIRE([CF_MIXEDCASE_FILENAMES])
109898e903e7SBaptiste Daroussin
109998e903e7SBaptiste DaroussinAC_CHECK_PROGS(CTAGS, exctags ctags)
110098e903e7SBaptiste DaroussinAC_CHECK_PROGS(ETAGS, exetags etags)
110198e903e7SBaptiste Daroussin
110298e903e7SBaptiste DaroussinAC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no)
110398e903e7SBaptiste Daroussin
110498e903e7SBaptiste Daroussinif test "$cf_cv_mixedcase" = yes ; then
110598e903e7SBaptiste Daroussin	AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no)
110698e903e7SBaptiste Daroussinelse
110798e903e7SBaptiste Daroussin	MAKE_UPPER_TAGS=no
110898e903e7SBaptiste Daroussinfi
110998e903e7SBaptiste Daroussin
111098e903e7SBaptiste Daroussinif test "$MAKE_UPPER_TAGS" = yes ; then
111198e903e7SBaptiste Daroussin	MAKE_UPPER_TAGS=
111298e903e7SBaptiste Daroussinelse
111398e903e7SBaptiste Daroussin	MAKE_UPPER_TAGS="#"
111498e903e7SBaptiste Daroussinfi
111598e903e7SBaptiste Daroussin
111698e903e7SBaptiste Daroussinif test "$MAKE_LOWER_TAGS" = yes ; then
111798e903e7SBaptiste Daroussin	MAKE_LOWER_TAGS=
111898e903e7SBaptiste Daroussinelse
111998e903e7SBaptiste Daroussin	MAKE_LOWER_TAGS="#"
112098e903e7SBaptiste Daroussinfi
112198e903e7SBaptiste Daroussin
112298e903e7SBaptiste DaroussinAC_SUBST(CTAGS)
112398e903e7SBaptiste DaroussinAC_SUBST(ETAGS)
112498e903e7SBaptiste Daroussin
112598e903e7SBaptiste DaroussinAC_SUBST(MAKE_UPPER_TAGS)
112698e903e7SBaptiste DaroussinAC_SUBST(MAKE_LOWER_TAGS)
112798e903e7SBaptiste Daroussin])dnl
112898e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1129*8e022d3cSDag-Erling Smørgravdnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59
113098e903e7SBaptiste Daroussindnl ----------------------
113198e903e7SBaptiste Daroussindnl Check if the file-system supports mixed-case filenames.  If we're able to
113298e903e7SBaptiste Daroussindnl create a lowercase name and see it as uppercase, it doesn't support that.
113398e903e7SBaptiste DaroussinAC_DEFUN([CF_MIXEDCASE_FILENAMES],
113498e903e7SBaptiste Daroussin[
113598e903e7SBaptiste DaroussinAC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
113698e903e7SBaptiste Daroussinif test "$cross_compiling" = yes ; then
1137*8e022d3cSDag-Erling Smørgrav	case "$target_alias" in
1138*8e022d3cSDag-Erling Smørgrav	(*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*)
113998e903e7SBaptiste Daroussin		cf_cv_mixedcase=no
114098e903e7SBaptiste Daroussin		;;
11410f86d14eSJung-uk Kim	(*)
114298e903e7SBaptiste Daroussin		cf_cv_mixedcase=yes
114398e903e7SBaptiste Daroussin		;;
114498e903e7SBaptiste Daroussin	esac
114598e903e7SBaptiste Daroussinelse
114698e903e7SBaptiste Daroussin	rm -f conftest CONFTEST
114798e903e7SBaptiste Daroussin	echo test >conftest
114898e903e7SBaptiste Daroussin	if test -f CONFTEST ; then
114998e903e7SBaptiste Daroussin		cf_cv_mixedcase=no
115098e903e7SBaptiste Daroussin	else
115198e903e7SBaptiste Daroussin		cf_cv_mixedcase=yes
115298e903e7SBaptiste Daroussin	fi
115398e903e7SBaptiste Daroussin	rm -f conftest CONFTEST
115498e903e7SBaptiste Daroussinfi
115598e903e7SBaptiste Daroussin])
11565b91e83fSBaptiste Daroussintest "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
115798e903e7SBaptiste Daroussin])dnl
115898e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1159*8e022d3cSDag-Erling Smørgravdnl CF_MKSTEMP version: 12 updated: 2023/01/05 17:53:11
116098e903e7SBaptiste Daroussindnl ----------
116198e903e7SBaptiste Daroussindnl Check for a working mkstemp.  This creates two files, checks that they are
116298e903e7SBaptiste Daroussindnl successfully created and distinct (AmigaOS apparently fails on the last).
116398e903e7SBaptiste DaroussinAC_DEFUN([CF_MKSTEMP],[
11643e794565SJung-uk KimAC_CHECK_HEADERS( \
11653e794565SJung-uk Kimunistd.h \
11663e794565SJung-uk Kim)
116798e903e7SBaptiste DaroussinAC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[
1168*8e022d3cSDag-Erling Smørgravrm -rf ./conftest*
116998e903e7SBaptiste DaroussinAC_TRY_RUN([
1170*8e022d3cSDag-Erling Smørgrav$ac_includes_default
1171*8e022d3cSDag-Erling Smørgrav
11723e794565SJung-uk Kimint main(void)
117398e903e7SBaptiste Daroussin{
117498e903e7SBaptiste Daroussin	char *tmpl = "conftestXXXXXX";
117598e903e7SBaptiste Daroussin	char name[2][80];
117698e903e7SBaptiste Daroussin	int n;
117798e903e7SBaptiste Daroussin	int result = 0;
117898e903e7SBaptiste Daroussin	int fd;
117998e903e7SBaptiste Daroussin	struct stat sb;
118098e903e7SBaptiste Daroussin
118198e903e7SBaptiste Daroussin	umask(077);
118298e903e7SBaptiste Daroussin	for (n = 0; n < 2; ++n) {
118398e903e7SBaptiste Daroussin		strcpy(name[n], tmpl);
118498e903e7SBaptiste Daroussin		if ((fd = mkstemp(name[n])) >= 0) {
118598e903e7SBaptiste Daroussin			if (!strcmp(name[n], tmpl)
118698e903e7SBaptiste Daroussin			 || stat(name[n], &sb) != 0
118798e903e7SBaptiste Daroussin			 || (sb.st_mode & S_IFMT) != S_IFREG
118898e903e7SBaptiste Daroussin			 || (sb.st_mode & 077) != 0) {
118998e903e7SBaptiste Daroussin				result = 1;
119098e903e7SBaptiste Daroussin			}
119198e903e7SBaptiste Daroussin			close(fd);
119298e903e7SBaptiste Daroussin		}
119398e903e7SBaptiste Daroussin	}
119498e903e7SBaptiste Daroussin	if (result == 0
119598e903e7SBaptiste Daroussin	 && !strcmp(name[0], name[1]))
119698e903e7SBaptiste Daroussin		result = 1;
119798e903e7SBaptiste Daroussin	${cf_cv_main_return:-return}(result);
119898e903e7SBaptiste Daroussin}
119998e903e7SBaptiste Daroussin],[cf_cv_func_mkstemp=yes
120098e903e7SBaptiste Daroussin],[cf_cv_func_mkstemp=no
12015b91e83fSBaptiste Daroussin],[cf_cv_func_mkstemp=maybe])
120298e903e7SBaptiste Daroussin])
12035b91e83fSBaptiste Daroussinif test "x$cf_cv_func_mkstemp" = xmaybe ; then
12045b91e83fSBaptiste Daroussin	AC_CHECK_FUNC(mkstemp)
12055b91e83fSBaptiste Daroussinfi
120698e903e7SBaptiste Daroussinif test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then
12075b91e83fSBaptiste Daroussin	AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.])
120898e903e7SBaptiste Daroussinfi
120998e903e7SBaptiste Daroussin])dnl
121098e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
121198e903e7SBaptiste Daroussindnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32
121298e903e7SBaptiste Daroussindnl ----------
121398e903e7SBaptiste Daroussindnl Write a debug message to config.log, along with the line number in the
121498e903e7SBaptiste Daroussindnl configure script.
121598e903e7SBaptiste DaroussinAC_DEFUN([CF_MSG_LOG],[
121698e903e7SBaptiste Daroussinecho "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC
121798e903e7SBaptiste Daroussin])dnl
121898e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1219*8e022d3cSDag-Erling Smørgravdnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41
122098e903e7SBaptiste Daroussindnl ------------------
122198e903e7SBaptiste Daroussindnl see CF_WITH_NO_LEAKS
1222*8e022d3cSDag-Erling Smørgravdnl
1223*8e022d3cSDag-Erling Smørgravdnl $1 = option/name
1224*8e022d3cSDag-Erling Smørgravdnl $2 = help-text
1225*8e022d3cSDag-Erling Smørgravdnl $3 = symbol to define if the option is set
1226*8e022d3cSDag-Erling Smørgravdnl $4 = additional actions to take if the option is set
122798e903e7SBaptiste DaroussinAC_DEFUN([CF_NO_LEAKS_OPTION],[
122898e903e7SBaptiste DaroussinAC_MSG_CHECKING(if you want to use $1 for testing)
122998e903e7SBaptiste DaroussinAC_ARG_WITH($1,
123098e903e7SBaptiste Daroussin	[$2],
1231*8e022d3cSDag-Erling Smørgrav	[case "x$withval" in
1232*8e022d3cSDag-Erling Smørgrav	(x|xno) ;;
1233*8e022d3cSDag-Erling Smørgrav	(*)
1234*8e022d3cSDag-Erling Smørgrav		: "${with_cflags:=-g}"
1235*8e022d3cSDag-Erling Smørgrav		: "${enable_leaks:=no}"
1236*8e022d3cSDag-Erling Smørgrav		with_$1=yes
1237*8e022d3cSDag-Erling Smørgrav		AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
123898e903e7SBaptiste Daroussin	 $4
123998e903e7SBaptiste Daroussin])
1240*8e022d3cSDag-Erling Smørgrav		;;
1241*8e022d3cSDag-Erling Smørgrav	esac],
124298e903e7SBaptiste Daroussin	[with_$1=])
124398e903e7SBaptiste DaroussinAC_MSG_RESULT(${with_$1:-no})
124498e903e7SBaptiste Daroussin
1245*8e022d3cSDag-Erling Smørgravcase ".$with_cflags" in
12460f86d14eSJung-uk Kim(.*-g*)
12470f86d14eSJung-uk Kim	case .$CFLAGS in
12480f86d14eSJung-uk Kim	(.*-g*)
124998e903e7SBaptiste Daroussin		;;
12500f86d14eSJung-uk Kim	(*)
125198e903e7SBaptiste Daroussin		CF_ADD_CFLAGS([-g])
125298e903e7SBaptiste Daroussin		;;
125398e903e7SBaptiste Daroussin	esac
125498e903e7SBaptiste Daroussin	;;
125598e903e7SBaptiste Daroussinesac
125698e903e7SBaptiste Daroussin])dnl
125798e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1258*8e022d3cSDag-Erling Smørgravdnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20
12590f86d14eSJung-uk Kimdnl --------------
12600f86d14eSJung-uk Kimdnl Check the argument to see that it looks like a pathname.  Rewrite it if it
12610f86d14eSJung-uk Kimdnl begins with one of the prefix/exec_prefix variables, and then again if the
12620f86d14eSJung-uk Kimdnl result begins with 'NONE'.  This is necessary to work around autoconf's
12630f86d14eSJung-uk Kimdnl delayed evaluation of those symbols.
12640f86d14eSJung-uk KimAC_DEFUN([CF_PATH_SYNTAX],[
12650f86d14eSJung-uk Kimif test "x$prefix" != xNONE; then
12660f86d14eSJung-uk Kim	cf_path_syntax="$prefix"
12670f86d14eSJung-uk Kimelse
12680f86d14eSJung-uk Kim	cf_path_syntax="$ac_default_prefix"
12690f86d14eSJung-uk Kimfi
12700f86d14eSJung-uk Kim
12710f86d14eSJung-uk Kimcase ".[$]$1" in
12720f86d14eSJung-uk Kim(.\[$]\(*\)*|.\'*\'*)
12730f86d14eSJung-uk Kim	;;
12740f86d14eSJung-uk Kim(..|./*|.\\*)
12750f86d14eSJung-uk Kim	;;
12760f86d14eSJung-uk Kim(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX
12770f86d14eSJung-uk Kim	;;
1278*8e022d3cSDag-Erling Smørgrav(.\[$]\{*prefix\}*|.\[$]\{*dir\}*)
12790f86d14eSJung-uk Kim	eval $1="[$]$1"
12800f86d14eSJung-uk Kim	case ".[$]$1" in
12810f86d14eSJung-uk Kim	(.NONE/*)
1282*8e022d3cSDag-Erling Smørgrav		$1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
12830f86d14eSJung-uk Kim		;;
12840f86d14eSJung-uk Kim	esac
12850f86d14eSJung-uk Kim	;;
12860f86d14eSJung-uk Kim(.no|.NONE/*)
1287*8e022d3cSDag-Erling Smørgrav	$1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%`
12880f86d14eSJung-uk Kim	;;
12890f86d14eSJung-uk Kim(*)
12900f86d14eSJung-uk Kim	ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2)
12910f86d14eSJung-uk Kim	;;
12920f86d14eSJung-uk Kimesac
12930f86d14eSJung-uk Kim])dnl
12940f86d14eSJung-uk Kimdnl ---------------------------------------------------------------------------
1295b53bb29fSJung-uk Kimdnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17
129698e903e7SBaptiste Daroussindnl -----------------
129798e903e7SBaptiste Daroussindnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
129898e903e7SBaptiste Daroussindnl
129998e903e7SBaptiste Daroussindnl	POSIX.1-1990				_POSIX_SOURCE
130098e903e7SBaptiste Daroussindnl	POSIX.1-1990 and			_POSIX_SOURCE and
130198e903e7SBaptiste Daroussindnl		POSIX.2-1992 C-Language			_POSIX_C_SOURCE=2
130298e903e7SBaptiste Daroussindnl		Bindings Option
130398e903e7SBaptiste Daroussindnl	POSIX.1b-1993				_POSIX_C_SOURCE=199309L
130498e903e7SBaptiste Daroussindnl	POSIX.1c-1996				_POSIX_C_SOURCE=199506L
130598e903e7SBaptiste Daroussindnl	X/Open 2000				_POSIX_C_SOURCE=200112L
130698e903e7SBaptiste Daroussindnl
130798e903e7SBaptiste Daroussindnl Parameters:
130898e903e7SBaptiste Daroussindnl	$1 is the nominal value for _POSIX_C_SOURCE
130998e903e7SBaptiste DaroussinAC_DEFUN([CF_POSIX_C_SOURCE],
1310b53bb29fSJung-uk Kim[AC_REQUIRE([CF_POSIX_VISIBLE])dnl
1311b53bb29fSJung-uk Kim
1312b53bb29fSJung-uk Kimif test "$cf_cv_posix_visible" = no; then
1313b53bb29fSJung-uk Kim
131498e903e7SBaptiste Daroussincf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1])
131598e903e7SBaptiste Daroussin
131698e903e7SBaptiste Daroussincf_save_CFLAGS="$CFLAGS"
131798e903e7SBaptiste Daroussincf_save_CPPFLAGS="$CPPFLAGS"
131898e903e7SBaptiste Daroussin
131998e903e7SBaptiste DaroussinCF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
132098e903e7SBaptiste DaroussinCF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
132198e903e7SBaptiste Daroussin
132298e903e7SBaptiste DaroussinAC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
132398e903e7SBaptiste Daroussin	CF_MSG_LOG(if the symbol is already defined go no further)
132498e903e7SBaptiste Daroussin	AC_TRY_COMPILE([#include <sys/types.h>],[
132598e903e7SBaptiste Daroussin#ifndef _POSIX_C_SOURCE
132698e903e7SBaptiste Daroussinmake an error
132798e903e7SBaptiste Daroussin#endif],
132898e903e7SBaptiste Daroussin	[cf_cv_posix_c_source=no],
132998e903e7SBaptiste Daroussin	[cf_want_posix_source=no
13300f86d14eSJung-uk Kim	 case .$cf_POSIX_C_SOURCE in
13310f86d14eSJung-uk Kim	 (.[[12]]??*)
133298e903e7SBaptiste Daroussin		cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
133398e903e7SBaptiste Daroussin		;;
13340f86d14eSJung-uk Kim	 (.2)
133598e903e7SBaptiste Daroussin		cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
133698e903e7SBaptiste Daroussin		cf_want_posix_source=yes
133798e903e7SBaptiste Daroussin		;;
13380f86d14eSJung-uk Kim	 (.*)
133998e903e7SBaptiste Daroussin		cf_want_posix_source=yes
134098e903e7SBaptiste Daroussin		;;
134198e903e7SBaptiste Daroussin	 esac
134298e903e7SBaptiste Daroussin	 if test "$cf_want_posix_source" = yes ; then
134398e903e7SBaptiste Daroussin		AC_TRY_COMPILE([#include <sys/types.h>],[
134498e903e7SBaptiste Daroussin#ifdef _POSIX_SOURCE
134598e903e7SBaptiste Daroussinmake an error
134698e903e7SBaptiste Daroussin#endif],[],
134798e903e7SBaptiste Daroussin		cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
134898e903e7SBaptiste Daroussin	 fi
134998e903e7SBaptiste Daroussin	 CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
135098e903e7SBaptiste Daroussin	 CFLAGS="$cf_trim_CFLAGS"
1351b53bb29fSJung-uk Kim	 CPPFLAGS="$cf_trim_CPPFLAGS"
1352b53bb29fSJung-uk Kim	 CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source)
135398e903e7SBaptiste Daroussin	 CF_MSG_LOG(if the second compile does not leave our definition intact error)
135498e903e7SBaptiste Daroussin	 AC_TRY_COMPILE([#include <sys/types.h>],[
135598e903e7SBaptiste Daroussin#ifndef _POSIX_C_SOURCE
135698e903e7SBaptiste Daroussinmake an error
135798e903e7SBaptiste Daroussin#endif],,
135898e903e7SBaptiste Daroussin	 [cf_cv_posix_c_source=no])
135998e903e7SBaptiste Daroussin	 CFLAGS="$cf_save_CFLAGS"
136098e903e7SBaptiste Daroussin	 CPPFLAGS="$cf_save_CPPFLAGS"
136198e903e7SBaptiste Daroussin	])
136298e903e7SBaptiste Daroussin])
136398e903e7SBaptiste Daroussin
136498e903e7SBaptiste Daroussinif test "$cf_cv_posix_c_source" != no ; then
136598e903e7SBaptiste Daroussin	CFLAGS="$cf_trim_CFLAGS"
136698e903e7SBaptiste Daroussin	CPPFLAGS="$cf_trim_CPPFLAGS"
136798e903e7SBaptiste Daroussin	CF_ADD_CFLAGS($cf_cv_posix_c_source)
136898e903e7SBaptiste Daroussinfi
136998e903e7SBaptiste Daroussin
1370b53bb29fSJung-uk Kimfi # cf_cv_posix_visible
1371b53bb29fSJung-uk Kim
1372b53bb29fSJung-uk Kim])dnl
1373b53bb29fSJung-uk Kimdnl ---------------------------------------------------------------------------
1374b53bb29fSJung-uk Kimdnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17
1375b53bb29fSJung-uk Kimdnl ----------------
1376b53bb29fSJung-uk Kimdnl POSIX documents test-macros which an application may set before any system
1377b53bb29fSJung-uk Kimdnl headers are included to make features available.
1378b53bb29fSJung-uk Kimdnl
1379b53bb29fSJung-uk Kimdnl Some BSD platforms (originally FreeBSD, but copied by a few others)
1380b53bb29fSJung-uk Kimdnl diverged from POSIX in 2002 by setting symbols which make all of the most
1381b53bb29fSJung-uk Kimdnl recent features visible in the system header files unless the application
1382b53bb29fSJung-uk Kimdnl overrides the corresponding test-macros.  Doing that introduces portability
1383b53bb29fSJung-uk Kimdnl problems.
1384b53bb29fSJung-uk Kimdnl
1385b53bb29fSJung-uk Kimdnl This macro makes a special check for the symbols used for this, to avoid a
1386b53bb29fSJung-uk Kimdnl conflicting definition.
1387b53bb29fSJung-uk KimAC_DEFUN([CF_POSIX_VISIBLE],
1388b53bb29fSJung-uk Kim[
1389b53bb29fSJung-uk KimAC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[
1390b53bb29fSJung-uk KimAC_TRY_COMPILE([#include <stdio.h>],[
1391b53bb29fSJung-uk Kim#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \
1392b53bb29fSJung-uk Kim	&& defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \
1393b53bb29fSJung-uk Kim	&& defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \
1394b53bb29fSJung-uk Kim	&& defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0)
1395b53bb29fSJung-uk Kim#error conflicting symbols found
1396b53bb29fSJung-uk Kim#endif
1397b53bb29fSJung-uk Kim],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes])
1398b53bb29fSJung-uk Kim])
139998e903e7SBaptiste Daroussin])dnl
140098e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
14010c8de5b0SBaptiste Daroussindnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59
14020c8de5b0SBaptiste Daroussindnl -----------
14030c8de5b0SBaptiste Daroussindnl Check for awk, ensure that the check found something.
14040c8de5b0SBaptiste DaroussinAC_DEFUN([CF_PROG_AWK],
14050c8de5b0SBaptiste Daroussin[
14060c8de5b0SBaptiste DaroussinAC_PROG_AWK
14070c8de5b0SBaptiste Daroussintest -z "$AWK" && AC_MSG_ERROR(No awk program found)
14080c8de5b0SBaptiste Daroussin])dnl
14090c8de5b0SBaptiste Daroussindnl ---------------------------------------------------------------------------
1410b53bb29fSJung-uk Kimdnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54
14115b91e83fSBaptiste Daroussindnl ----------
14125b91e83fSBaptiste Daroussindnl standard check for CC, plus followup sanity checks
14135b91e83fSBaptiste Daroussindnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
14145b91e83fSBaptiste DaroussinAC_DEFUN([CF_PROG_CC],[
1415b53bb29fSJung-uk KimCF_ACVERSION_CHECK(2.53,
1416b53bb29fSJung-uk Kim	[AC_MSG_WARN(this will incorrectly handle gnatgcc choice)
1417b53bb29fSJung-uk Kim	 AC_REQUIRE([AC_PROG_CC])],
1418b53bb29fSJung-uk Kim	[])
14195b91e83fSBaptiste Daroussinifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
14205b91e83fSBaptiste DaroussinCF_GCC_VERSION
14215b91e83fSBaptiste DaroussinCF_ACVERSION_CHECK(2.52,
14225b91e83fSBaptiste Daroussin	[AC_PROG_CC_STDC],
14235b91e83fSBaptiste Daroussin	[CF_ANSI_CC_REQD])
14245b91e83fSBaptiste DaroussinCF_CC_ENV_FLAGS
142598e903e7SBaptiste Daroussin])dnl
142698e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1427b53bb29fSJung-uk Kimdnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19
14280f86d14eSJung-uk Kimdnl -------------
14290f86d14eSJung-uk Kimdnl Check if groff is available, for cases (such as html output) where nroff
14300f86d14eSJung-uk Kimdnl is not enough.
14310f86d14eSJung-uk KimAC_DEFUN([CF_PROG_GROFF],[
14320f86d14eSJung-uk KimAC_PATH_PROG(GROFF_PATH,groff,no)
1433b53bb29fSJung-uk KimAC_PATH_PROGS(NROFF_PATH,nroff mandoc,no)
1434b53bb29fSJung-uk KimAC_PATH_PROG(TBL_PATH,tbl,cat)
14350f86d14eSJung-uk Kimif test "x$GROFF_PATH" = xno
14360f86d14eSJung-uk Kimthen
14370f86d14eSJung-uk Kim	NROFF_NOTE=
14380f86d14eSJung-uk Kim	GROFF_NOTE="#"
14390f86d14eSJung-uk Kimelse
14400f86d14eSJung-uk Kim	NROFF_NOTE="#"
14410f86d14eSJung-uk Kim	GROFF_NOTE=
14420f86d14eSJung-uk Kimfi
14430f86d14eSJung-uk KimAC_SUBST(GROFF_NOTE)
14440f86d14eSJung-uk KimAC_SUBST(NROFF_NOTE)
14450f86d14eSJung-uk Kim])dnl
14460f86d14eSJung-uk Kimdnl ---------------------------------------------------------------------------
1447*8e022d3cSDag-Erling Smørgravdnl CF_PROG_LINT version: 5 updated: 2022/08/20 15:44:13
144898e903e7SBaptiste Daroussindnl ------------
144998e903e7SBaptiste DaroussinAC_DEFUN([CF_PROG_LINT],
145098e903e7SBaptiste Daroussin[
1451c5b5d71aSJung-uk KimAC_CHECK_PROGS(LINT, lint cppcheck splint)
1452b53bb29fSJung-uk Kimcase "x$LINT" in
1453b53bb29fSJung-uk Kim(xcppcheck|x*/cppcheck)
1454b53bb29fSJung-uk Kim	test -z "$LINT_OPTS" && LINT_OPTS="--enable=all"
1455b53bb29fSJung-uk Kim	;;
1456b53bb29fSJung-uk Kimesac
145798e903e7SBaptiste DaroussinAC_SUBST(LINT_OPTS)
1458*8e022d3cSDag-Erling SmørgravAC_SUBST(LINT_LIBS)
1459*8e022d3cSDag-Erling Smørgrav])dnl
1460*8e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
1461*8e022d3cSDag-Erling Smørgravdnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40
1462*8e022d3cSDag-Erling Smørgravdnl ----------------
1463*8e022d3cSDag-Erling Smørgravdnl Remove a given option from CFLAGS/CPPFLAGS
1464*8e022d3cSDag-Erling Smørgravdnl $1 = option to remove
1465*8e022d3cSDag-Erling Smørgravdnl $2 = variable to update
1466*8e022d3cSDag-Erling Smørgravdnl $3 = nonempty to allow verbose message
1467*8e022d3cSDag-Erling Smørgravdefine([CF_REMOVE_CFLAGS],
1468*8e022d3cSDag-Erling Smørgrav[
1469*8e022d3cSDag-Erling Smørgravcf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'`
1470*8e022d3cSDag-Erling Smørgravwhile true
1471*8e022d3cSDag-Erling Smørgravdo
1472*8e022d3cSDag-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'`
1473*8e022d3cSDag-Erling Smørgrav	test "[$]$2" != "$cf_old_cflag" || break
1474*8e022d3cSDag-Erling Smørgrav	ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)])
1475*8e022d3cSDag-Erling Smørgrav	$2="$cf_old_cflag"
1476*8e022d3cSDag-Erling Smørgravdone
147798e903e7SBaptiste Daroussin])dnl
147898e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
147998e903e7SBaptiste Daroussindnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
148098e903e7SBaptiste Daroussindnl ----------------
148198e903e7SBaptiste Daroussindnl Remove all -U and -D options that refer to the given symbol from a list
148298e903e7SBaptiste Daroussindnl of C compiler options.  This works around the problem that not all
148398e903e7SBaptiste Daroussindnl compilers process -U and -D options from left-to-right, so a -U option
148498e903e7SBaptiste Daroussindnl cannot be used to cancel the effect of a preceding -D option.
148598e903e7SBaptiste Daroussindnl
148698e903e7SBaptiste Daroussindnl $1 = target (which could be the same as the source variable)
148798e903e7SBaptiste Daroussindnl $2 = source (including '$')
148898e903e7SBaptiste Daroussindnl $3 = symbol to remove
148998e903e7SBaptiste Daroussindefine([CF_REMOVE_DEFINE],
149098e903e7SBaptiste Daroussin[
149198e903e7SBaptiste Daroussin$1=`echo "$2" | \
149298e903e7SBaptiste Daroussin	sed	-e 's/-[[UD]]'"$3"'\(=[[^ 	]]*\)\?[[ 	]]/ /g' \
149398e903e7SBaptiste Daroussin		-e 's/-[[UD]]'"$3"'\(=[[^ 	]]*\)\?[$]//g'`
149498e903e7SBaptiste Daroussin])dnl
149598e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1496*8e022d3cSDag-Erling Smørgravdnl CF_TRY_XOPEN_SOURCE version: 4 updated: 2022/09/10 15:16:16
149798e903e7SBaptiste Daroussindnl -------------------
149898e903e7SBaptiste Daroussindnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
149998e903e7SBaptiste Daroussindnl can define it successfully.
150098e903e7SBaptiste DaroussinAC_DEFUN([CF_TRY_XOPEN_SOURCE],[
150198e903e7SBaptiste DaroussinAC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
1502*8e022d3cSDag-Erling Smørgrav	AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,
150398e903e7SBaptiste Daroussin	[cf_cv_xopen_source=no],
150498e903e7SBaptiste Daroussin	[cf_save="$CPPFLAGS"
1505b53bb29fSJung-uk Kim	 CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE)
1506*8e022d3cSDag-Erling Smørgrav	 AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,
150798e903e7SBaptiste Daroussin		[cf_cv_xopen_source=no],
150898e903e7SBaptiste Daroussin		[cf_cv_xopen_source=$cf_XOPEN_SOURCE])
150998e903e7SBaptiste Daroussin		CPPFLAGS="$cf_save"
151098e903e7SBaptiste Daroussin	])
151198e903e7SBaptiste Daroussin])
151298e903e7SBaptiste Daroussin
151398e903e7SBaptiste Daroussinif test "$cf_cv_xopen_source" != no ; then
151498e903e7SBaptiste Daroussin	CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
151598e903e7SBaptiste Daroussin	CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
151698e903e7SBaptiste Daroussin	cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
1517*8e022d3cSDag-Erling Smørgrav	CF_APPEND_CFLAGS($cf_temp_xopen_source)
151898e903e7SBaptiste Daroussinfi
151998e903e7SBaptiste Daroussin])
152098e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
152198e903e7SBaptiste Daroussindnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
152298e903e7SBaptiste Daroussindnl --------
152398e903e7SBaptiste Daroussindnl Make an uppercase version of a variable
152498e903e7SBaptiste Daroussindnl $1=uppercase($2)
152598e903e7SBaptiste DaroussinAC_DEFUN([CF_UPPER],
152698e903e7SBaptiste Daroussin[
152798e903e7SBaptiste Daroussin$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
152898e903e7SBaptiste Daroussin])dnl
152998e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
153098e903e7SBaptiste Daroussindnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
153198e903e7SBaptiste Daroussindnl ----------
153298e903e7SBaptiste Daroussindnl Use AC_VERBOSE w/o the warnings
153398e903e7SBaptiste DaroussinAC_DEFUN([CF_VERBOSE],
153498e903e7SBaptiste Daroussin[test -n "$verbose" && echo "	$1" 1>&AC_FD_MSG
153598e903e7SBaptiste DaroussinCF_MSG_LOG([$1])
153698e903e7SBaptiste Daroussin])dnl
153798e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1538*8e022d3cSDag-Erling Smørgravdnl CF_WITHOUT_X version: 3 updated: 2021/01/13 16:51:52
1539b53bb29fSJung-uk Kimdnl ------------
1540b53bb29fSJung-uk Kimdnl Use this to cancel the check for X headers/libraries which would be pulled
1541b53bb29fSJung-uk Kimdnl in via CF_GCC_WARNINGS.
1542b53bb29fSJung-uk Kimdefine([CF_WITHOUT_X],
1543*8e022d3cSDag-Erling SmørgravAC_DEFUN([AC_PATH_XTRA],[])
1544*8e022d3cSDag-Erling SmørgravAC_DEFUN([CF_SAVE_XTRA_FLAGS],[])
1545*8e022d3cSDag-Erling SmørgravAC_DEFUN([CF_RESTORE_XTRA_FLAGS],[])
1546b53bb29fSJung-uk KimAC_DEFUN([CF_CONST_X_STRING],[echo "skipping X-const check";])dnl
1547*8e022d3cSDag-Erling SmørgravAC_SUBST(X_CFLAGS)
1548*8e022d3cSDag-Erling SmørgravAC_SUBST(X_LIBS)
1549b53bb29fSJung-uk Kim[])dnl
1550b53bb29fSJung-uk Kimdnl ---------------------------------------------------------------------------
155198e903e7SBaptiste Daroussindnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47
155298e903e7SBaptiste Daroussindnl ----------------
155398e903e7SBaptiste Daroussindnl Configure-option for dbmalloc.  The optional parameter is used to override
155498e903e7SBaptiste Daroussindnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
155598e903e7SBaptiste DaroussinAC_DEFUN([CF_WITH_DBMALLOC],[
155698e903e7SBaptiste DaroussinCF_NO_LEAKS_OPTION(dbmalloc,
155798e903e7SBaptiste Daroussin	[  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
155898e903e7SBaptiste Daroussin	[USE_DBMALLOC])
155998e903e7SBaptiste Daroussin
156098e903e7SBaptiste Daroussinif test "$with_dbmalloc" = yes ; then
156198e903e7SBaptiste Daroussin	AC_CHECK_HEADER(dbmalloc.h,
156298e903e7SBaptiste Daroussin		[AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))])
156398e903e7SBaptiste Daroussinfi
156498e903e7SBaptiste Daroussin])dnl
156598e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
156698e903e7SBaptiste Daroussindnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47
156798e903e7SBaptiste Daroussindnl ---------------
156898e903e7SBaptiste Daroussindnl Configure-option for dmalloc.  The optional parameter is used to override
156998e903e7SBaptiste Daroussindnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
157098e903e7SBaptiste DaroussinAC_DEFUN([CF_WITH_DMALLOC],[
157198e903e7SBaptiste DaroussinCF_NO_LEAKS_OPTION(dmalloc,
157298e903e7SBaptiste Daroussin	[  --with-dmalloc          test: use Gray Watson's dmalloc library],
157398e903e7SBaptiste Daroussin	[USE_DMALLOC])
157498e903e7SBaptiste Daroussin
157598e903e7SBaptiste Daroussinif test "$with_dmalloc" = yes ; then
157698e903e7SBaptiste Daroussin	AC_CHECK_HEADER(dmalloc.h,
157798e903e7SBaptiste Daroussin		[AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))])
157898e903e7SBaptiste Daroussinfi
157998e903e7SBaptiste Daroussin])dnl
158098e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1581*8e022d3cSDag-Erling Smørgravdnl CF_WITH_MAN2HTML version: 12 updated: 2021/01/03 18:30:50
15820f86d14eSJung-uk Kimdnl ----------------
1583b53bb29fSJung-uk Kimdnl Check for man2html and groff.  Prefer man2html over groff, but use groff
1584b53bb29fSJung-uk Kimdnl as a fallback.  See
1585b53bb29fSJung-uk Kimdnl
1586b53bb29fSJung-uk Kimdnl		http://invisible-island.net/scripts/man2html.html
1587b53bb29fSJung-uk Kimdnl
15880f86d14eSJung-uk Kimdnl Generate a shell script which hides the differences between the two.
15890f86d14eSJung-uk Kimdnl
15900f86d14eSJung-uk Kimdnl We name that "man2html.tmp".
15910f86d14eSJung-uk Kimdnl
15920f86d14eSJung-uk Kimdnl The shell script can be removed later, e.g., using "make distclean".
15930f86d14eSJung-uk KimAC_DEFUN([CF_WITH_MAN2HTML],[
1594*8e022d3cSDag-Erling SmørgravAC_REQUIRE([CF_PROG_GROFF])dnl
1595*8e022d3cSDag-Erling SmørgravAC_REQUIRE([AC_PROG_FGREP])dnl
15960f86d14eSJung-uk Kim
1597b53bb29fSJung-uk Kimcase "x${with_man2html}" in
1598b53bb29fSJung-uk Kim(xno)
1599b53bb29fSJung-uk Kim	cf_man2html=no
1600b53bb29fSJung-uk Kim	;;
1601b53bb29fSJung-uk Kim(x|xyes)
1602b53bb29fSJung-uk Kim	AC_PATH_PROG(cf_man2html,man2html,no)
1603b53bb29fSJung-uk Kim	case "x$cf_man2html" in
1604b53bb29fSJung-uk Kim	(x/*)
1605b53bb29fSJung-uk Kim		AC_MSG_CHECKING(for the modified Earl Hood script)
1606b53bb29fSJung-uk Kim		if ( $cf_man2html -help 2>&1 | grep 'Make an index of headers at the end' >/dev/null )
1607b53bb29fSJung-uk Kim		then
1608b53bb29fSJung-uk Kim			cf_man2html_ok=yes
1609b53bb29fSJung-uk Kim		else
1610b53bb29fSJung-uk Kim			cf_man2html=no
1611b53bb29fSJung-uk Kim			cf_man2html_ok=no
1612b53bb29fSJung-uk Kim		fi
1613b53bb29fSJung-uk Kim		AC_MSG_RESULT($cf_man2html_ok)
1614b53bb29fSJung-uk Kim		;;
1615b53bb29fSJung-uk Kim	(*)
1616b53bb29fSJung-uk Kim		cf_man2html=no
1617b53bb29fSJung-uk Kim		;;
1618b53bb29fSJung-uk Kim	esac
1619b53bb29fSJung-uk Kimesac
1620b53bb29fSJung-uk Kim
16210f86d14eSJung-uk KimAC_MSG_CHECKING(for program to convert manpage to html)
16220f86d14eSJung-uk KimAC_ARG_WITH(man2html,
16230f86d14eSJung-uk Kim	[  --with-man2html=XXX     use XXX rather than groff],
16240f86d14eSJung-uk Kim	[cf_man2html=$withval],
1625b53bb29fSJung-uk Kim	[cf_man2html=$cf_man2html])
16260f86d14eSJung-uk Kim
16270f86d14eSJung-uk Kimcf_with_groff=no
16280f86d14eSJung-uk Kim
16290f86d14eSJung-uk Kimcase $cf_man2html in
16300f86d14eSJung-uk Kim(yes)
16310f86d14eSJung-uk Kim	AC_MSG_RESULT(man2html)
16320f86d14eSJung-uk Kim	AC_PATH_PROG(cf_man2html,man2html,no)
16330f86d14eSJung-uk Kim	;;
16340f86d14eSJung-uk Kim(no|groff|*/groff*)
16350f86d14eSJung-uk Kim	cf_with_groff=yes
16360f86d14eSJung-uk Kim	cf_man2html=$GROFF_PATH
16370f86d14eSJung-uk Kim	AC_MSG_RESULT($cf_man2html)
16380f86d14eSJung-uk Kim	;;
16390f86d14eSJung-uk Kim(*)
16400f86d14eSJung-uk Kim	AC_MSG_RESULT($cf_man2html)
16410f86d14eSJung-uk Kim	;;
16420f86d14eSJung-uk Kimesac
16430f86d14eSJung-uk Kim
16440f86d14eSJung-uk KimMAN2HTML_TEMP="man2html.tmp"
16450f86d14eSJung-uk Kim	cat >$MAN2HTML_TEMP <<CF_EOF
164620afc491SJung-uk Kim#!$SHELL
16470f86d14eSJung-uk Kim# Temporary script generated by CF_WITH_MAN2HTML
16480f86d14eSJung-uk Kim# Convert inputs to html, sending result to standard output.
16490f86d14eSJung-uk Kim#
16500f86d14eSJung-uk Kim# Parameters:
16510f86d14eSJung-uk Kim# \${1} = rootname of file to convert
16520f86d14eSJung-uk Kim# \${2} = suffix of file to convert, e.g., "1"
16530f86d14eSJung-uk Kim# \${3} = macros to use, e.g., "man"
16540f86d14eSJung-uk Kim#
16550f86d14eSJung-uk KimROOT=\[$]1
16560f86d14eSJung-uk KimTYPE=\[$]2
16570f86d14eSJung-uk KimMACS=\[$]3
16580f86d14eSJung-uk Kim
16590f86d14eSJung-uk Kimunset LANG
16600f86d14eSJung-uk Kimunset LC_ALL
16610f86d14eSJung-uk Kimunset LC_CTYPE
16620f86d14eSJung-uk Kimunset LANGUAGE
16630f86d14eSJung-uk KimGROFF_NO_SGR=stupid
16640f86d14eSJung-uk Kimexport GROFF_NO_SGR
16650f86d14eSJung-uk Kim
16660f86d14eSJung-uk KimCF_EOF
16670f86d14eSJung-uk Kim
1668*8e022d3cSDag-Erling SmørgravNROFF_OPTS=
16690f86d14eSJung-uk Kimif test "x$cf_with_groff" = xyes
16700f86d14eSJung-uk Kimthen
16710f86d14eSJung-uk Kim	MAN2HTML_NOTE="$GROFF_NOTE"
16720f86d14eSJung-uk Kim	MAN2HTML_PATH="$GROFF_PATH"
16730f86d14eSJung-uk Kim	cat >>$MAN2HTML_TEMP <<CF_EOF
1674b53bb29fSJung-uk Kim$SHELL -c "$TBL_PATH \${ROOT}.\${TYPE} | $GROFF_PATH -P -o0 -I\${ROOT}_ -Thtml -\${MACS}"
16750f86d14eSJung-uk KimCF_EOF
16760f86d14eSJung-uk Kimelse
1677*8e022d3cSDag-Erling Smørgrav	# disable hyphenation if this is groff
1678*8e022d3cSDag-Erling Smørgrav	if test "x$GROFF_PATH" != xno
1679*8e022d3cSDag-Erling Smørgrav	then
1680*8e022d3cSDag-Erling Smørgrav		AC_MSG_CHECKING(if nroff is really groff)
1681*8e022d3cSDag-Erling Smørgrav		cf_check_groff="`$NROFF_PATH --version 2>/dev/null | grep groff`"
1682*8e022d3cSDag-Erling Smørgrav		test -n "$cf_check_groff" && cf_check_groff=yes
1683*8e022d3cSDag-Erling Smørgrav		test -n "$cf_check_groff" || cf_check_groff=no
1684*8e022d3cSDag-Erling Smørgrav		AC_MSG_RESULT($cf_check_groff)
1685*8e022d3cSDag-Erling Smørgrav		test "x$cf_check_groff" = xyes && NROFF_OPTS="-rHY=0"
1686*8e022d3cSDag-Erling Smørgrav	fi
16870f86d14eSJung-uk Kim	MAN2HTML_NOTE=""
16880f86d14eSJung-uk Kim	CF_PATH_SYNTAX(cf_man2html)
16890f86d14eSJung-uk Kim	MAN2HTML_PATH="$cf_man2html"
16900f86d14eSJung-uk Kim	AC_MSG_CHECKING(for $cf_man2html top/bottom margins)
16910f86d14eSJung-uk Kim
16920f86d14eSJung-uk Kim	# for this example, expect 3 lines of content, the remainder is head/foot
16930f86d14eSJung-uk Kim	cat >conftest.in <<CF_EOF
16940f86d14eSJung-uk Kim.TH HEAD1 HEAD2 HEAD3 HEAD4 HEAD5
16950f86d14eSJung-uk Kim.SH SECTION
16960f86d14eSJung-uk KimMARKER
16970f86d14eSJung-uk KimCF_EOF
16980f86d14eSJung-uk Kim
1699b53bb29fSJung-uk Kim	LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out
17000f86d14eSJung-uk Kim
1701*8e022d3cSDag-Erling Smørgrav	cf_man2html_1st="`${FGREP-fgrep} -n MARKER conftest.out |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`"
1702*8e022d3cSDag-Erling Smørgrav	cf_man2html_top=`expr "$cf_man2html_1st" - 2`
1703*8e022d3cSDag-Erling Smørgrav	cf_man2html_bot="`wc -l conftest.out |sed -e 's/[[^0-9]]//g'`"
1704*8e022d3cSDag-Erling Smørgrav	cf_man2html_bot=`expr "$cf_man2html_bot" - 2 - "$cf_man2html_top"`
17050f86d14eSJung-uk Kim	cf_man2html_top_bot="-topm=$cf_man2html_top -botm=$cf_man2html_bot"
17060f86d14eSJung-uk Kim
17070f86d14eSJung-uk Kim	AC_MSG_RESULT($cf_man2html_top_bot)
17080f86d14eSJung-uk Kim
17090f86d14eSJung-uk Kim	AC_MSG_CHECKING(for pagesize to use)
17100f86d14eSJung-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
17110f86d14eSJung-uk Kim	do
17120f86d14eSJung-uk Kim	cat >>conftest.in <<CF_EOF
17130f86d14eSJung-uk Kim.nf
17140f86d14eSJung-uk Kim0
17150f86d14eSJung-uk Kim1
17160f86d14eSJung-uk Kim2
17170f86d14eSJung-uk Kim3
17180f86d14eSJung-uk Kim4
17190f86d14eSJung-uk Kim5
17200f86d14eSJung-uk Kim6
17210f86d14eSJung-uk Kim7
17220f86d14eSJung-uk Kim8
17230f86d14eSJung-uk Kim9
17240f86d14eSJung-uk KimCF_EOF
17250f86d14eSJung-uk Kim	done
17260f86d14eSJung-uk Kim
1727b53bb29fSJung-uk Kim	LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out
1728*8e022d3cSDag-Erling Smørgrav	cf_man2html_page="`${FGREP-fgrep} -n HEAD1 conftest.out |sed -n '$p' |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`"
17290f86d14eSJung-uk Kim	test -z "$cf_man2html_page" && cf_man2html_page=99999
17300f86d14eSJung-uk Kim	test "$cf_man2html_page" -gt 100 && cf_man2html_page=99999
17310f86d14eSJung-uk Kim
17320f86d14eSJung-uk Kim	rm -rf conftest*
17330f86d14eSJung-uk Kim	AC_MSG_RESULT($cf_man2html_page)
17340f86d14eSJung-uk Kim
17350f86d14eSJung-uk Kim	cat >>$MAN2HTML_TEMP <<CF_EOF
17360f86d14eSJung-uk Kim: \${MAN2HTML_PATH=$MAN2HTML_PATH}
1737*8e022d3cSDag-Erling SmørgravMAN2HTML_OPTS="\$MAN2HTML_OPTS -index -title=\"\$ROOT(\$TYPE)\" -compress -pgsize $cf_man2html_page"
17380f86d14eSJung-uk Kimcase \${TYPE} in
17390f86d14eSJung-uk Kim(ms)
1740*8e022d3cSDag-Erling Smørgrav	$TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH -topm=0 -botm=0 \$MAN2HTML_OPTS
17410f86d14eSJung-uk Kim	;;
17420f86d14eSJung-uk Kim(*)
1743*8e022d3cSDag-Erling Smørgrav	$TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH $cf_man2html_top_bot \$MAN2HTML_OPTS
17440f86d14eSJung-uk Kim	;;
17450f86d14eSJung-uk Kimesac
17460f86d14eSJung-uk KimCF_EOF
17470f86d14eSJung-uk Kimfi
17480f86d14eSJung-uk Kim
17490f86d14eSJung-uk Kimchmod 700 $MAN2HTML_TEMP
17500f86d14eSJung-uk Kim
17510f86d14eSJung-uk KimAC_SUBST(MAN2HTML_NOTE)
17520f86d14eSJung-uk KimAC_SUBST(MAN2HTML_PATH)
17530f86d14eSJung-uk KimAC_SUBST(MAN2HTML_TEMP)
17540f86d14eSJung-uk Kim])dnl
17550f86d14eSJung-uk Kimdnl ---------------------------------------------------------------------------
175698e903e7SBaptiste Daroussindnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
175798e903e7SBaptiste Daroussindnl ----------------
175898e903e7SBaptiste DaroussinAC_DEFUN([CF_WITH_VALGRIND],[
175998e903e7SBaptiste DaroussinCF_NO_LEAKS_OPTION(valgrind,
176098e903e7SBaptiste Daroussin	[  --with-valgrind         test: use valgrind],
176198e903e7SBaptiste Daroussin	[USE_VALGRIND])
176298e903e7SBaptiste Daroussin])dnl
176398e903e7SBaptiste Daroussindnl ---------------------------------------------------------------------------
1764*8e022d3cSDag-Erling Smørgravdnl CF_XOPEN_SOURCE version: 63 updated: 2022/12/29 10:10:26
176598e903e7SBaptiste Daroussindnl ---------------
176698e903e7SBaptiste Daroussindnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
176798e903e7SBaptiste Daroussindnl or adapt to the vendor's definitions to get equivalent functionality,
176898e903e7SBaptiste Daroussindnl without losing the common non-POSIX features.
176998e903e7SBaptiste Daroussindnl
177098e903e7SBaptiste Daroussindnl Parameters:
177198e903e7SBaptiste Daroussindnl	$1 is the nominal value for _XOPEN_SOURCE
177298e903e7SBaptiste Daroussindnl	$2 is the nominal value for _POSIX_C_SOURCE
177398e903e7SBaptiste DaroussinAC_DEFUN([CF_XOPEN_SOURCE],[
17745b91e83fSBaptiste DaroussinAC_REQUIRE([AC_CANONICAL_HOST])
1775b53bb29fSJung-uk KimAC_REQUIRE([CF_POSIX_VISIBLE])
1776b53bb29fSJung-uk Kim
1777b53bb29fSJung-uk Kimif test "$cf_cv_posix_visible" = no; then
177898e903e7SBaptiste Daroussin
177998e903e7SBaptiste Daroussincf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
178098e903e7SBaptiste Daroussincf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
178198e903e7SBaptiste Daroussincf_xopen_source=
178298e903e7SBaptiste Daroussin
1783*8e022d3cSDag-Erling Smørgravcase "$host_os" in
17840f86d14eSJung-uk Kim(aix[[4-7]]*)
178598e903e7SBaptiste Daroussin	cf_xopen_source="-D_ALL_SOURCE"
178698e903e7SBaptiste Daroussin	;;
17872aca18c7SJung-uk Kim(msys)
178898e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=600
178998e903e7SBaptiste Daroussin	;;
17900f86d14eSJung-uk Kim(darwin[[0-8]].*)
179198e903e7SBaptiste Daroussin	cf_xopen_source="-D_APPLE_C_SOURCE"
179298e903e7SBaptiste Daroussin	;;
17930f86d14eSJung-uk Kim(darwin*)
179498e903e7SBaptiste Daroussin	cf_xopen_source="-D_DARWIN_C_SOURCE"
179598e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=
179698e903e7SBaptiste Daroussin	;;
1797b53bb29fSJung-uk Kim(freebsd*|dragonfly*|midnightbsd*)
179898e903e7SBaptiste Daroussin	# 5.x headers associate
179998e903e7SBaptiste Daroussin	#	_XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
180098e903e7SBaptiste Daroussin	#	_XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
180198e903e7SBaptiste Daroussin	cf_POSIX_C_SOURCE=200112L
180298e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=600
180398e903e7SBaptiste Daroussin	cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
180498e903e7SBaptiste Daroussin	;;
18050f86d14eSJung-uk Kim(hpux11*)
180698e903e7SBaptiste Daroussin	cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500"
180798e903e7SBaptiste Daroussin	;;
18080f86d14eSJung-uk Kim(hpux*)
180998e903e7SBaptiste Daroussin	cf_xopen_source="-D_HPUX_SOURCE"
181098e903e7SBaptiste Daroussin	;;
18110f86d14eSJung-uk Kim(irix[[56]].*)
181298e903e7SBaptiste Daroussin	cf_xopen_source="-D_SGI_SOURCE"
181398e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=
181498e903e7SBaptiste Daroussin	;;
1815*8e022d3cSDag-Erling Smørgrav(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin)
1816b53bb29fSJung-uk Kim	CF_GNU_SOURCE($cf_XOPEN_SOURCE)
181798e903e7SBaptiste Daroussin	;;
18180f86d14eSJung-uk Kim(minix*)
181911fce282SBaptiste Daroussin	cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this...
182011fce282SBaptiste Daroussin	;;
18210f86d14eSJung-uk Kim(mirbsd*)
182298e903e7SBaptiste Daroussin	# setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
182398e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=
182498e903e7SBaptiste Daroussin	CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
182598e903e7SBaptiste Daroussin	;;
18260f86d14eSJung-uk Kim(netbsd*)
182798e903e7SBaptiste 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
182898e903e7SBaptiste Daroussin	;;
1829*8e022d3cSDag-Erling Smørgrav(openbsd[[6-9]]*)
1830*8e022d3cSDag-Erling Smørgrav	# OpenBSD 6.x has broken locale support, both compile-time and runtime.
1831*8e022d3cSDag-Erling Smørgrav	# see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
1832*8e022d3cSDag-Erling Smørgrav	# Abusing the conformance level is a workaround.
1833*8e022d3cSDag-Erling Smørgrav	AC_MSG_WARN(this system does not provide usable locale support)
1834*8e022d3cSDag-Erling Smørgrav	cf_xopen_source="-D_BSD_SOURCE"
1835*8e022d3cSDag-Erling Smørgrav	cf_XOPEN_SOURCE=700
1836*8e022d3cSDag-Erling Smørgrav	;;
1837*8e022d3cSDag-Erling Smørgrav(openbsd[[4-5]]*)
183898e903e7SBaptiste Daroussin	# setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
183998e903e7SBaptiste Daroussin	cf_xopen_source="-D_BSD_SOURCE"
184098e903e7SBaptiste Daroussin	cf_XOPEN_SOURCE=600
184198e903e7SBaptiste Daroussin	;;
18420f86d14eSJung-uk Kim(openbsd*)
184398e903e7SBaptiste Daroussin	# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
184498e903e7SBaptiste Daroussin	;;
18450f86d14eSJung-uk Kim(osf[[45]]*)
184698e903e7SBaptiste Daroussin	cf_xopen_source="-D_OSF_SOURCE"
184798e903e7SBaptiste Daroussin	;;
18480f86d14eSJung-uk Kim(nto-qnx*)
184998e903e7SBaptiste Daroussin	cf_xopen_source="-D_QNX_SOURCE"
185098e903e7SBaptiste Daroussin	;;
18510f86d14eSJung-uk Kim(sco*)
185298e903e7SBaptiste Daroussin	# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
185398e903e7SBaptiste Daroussin	;;
18540f86d14eSJung-uk Kim(solaris2.*)
185598e903e7SBaptiste Daroussin	cf_xopen_source="-D__EXTENSIONS__"
18560c8de5b0SBaptiste Daroussin	cf_cv_xopen_source=broken
185798e903e7SBaptiste Daroussin	;;
18580f86d14eSJung-uk Kim(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2)
185911fce282SBaptiste Daroussin	cf_XOPEN_SOURCE=
186011fce282SBaptiste Daroussin	cf_POSIX_C_SOURCE=
186111fce282SBaptiste Daroussin	;;
18620f86d14eSJung-uk Kim(*)
186398e903e7SBaptiste Daroussin	CF_TRY_XOPEN_SOURCE
1864*8e022d3cSDag-Erling Smørgrav	cf_save_xopen_cppflags="$CPPFLAGS"
186598e903e7SBaptiste Daroussin	CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
1866*8e022d3cSDag-Erling Smørgrav	# Some of these niche implementations use copy/paste, double-check...
1867*8e022d3cSDag-Erling Smørgrav	if test "$cf_cv_xopen_source" != no ; then
1868*8e022d3cSDag-Erling Smørgrav		CF_VERBOSE(checking if _POSIX_C_SOURCE inteferes)
1869*8e022d3cSDag-Erling Smørgrav		AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[
1870*8e022d3cSDag-Erling Smørgrav			AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable)
1871*8e022d3cSDag-Erling Smørgrav			CPPFLAGS="$cf_save_xopen_cppflags"])
1872*8e022d3cSDag-Erling Smørgrav	fi
187398e903e7SBaptiste Daroussin	;;
187498e903e7SBaptiste Daroussinesac
187598e903e7SBaptiste Daroussin
187698e903e7SBaptiste Daroussinif test -n "$cf_xopen_source" ; then
1877*8e022d3cSDag-Erling Smørgrav	CF_APPEND_CFLAGS($cf_xopen_source,true)
187898e903e7SBaptiste Daroussinfi
187998e903e7SBaptiste Daroussin
188098e903e7SBaptiste Daroussindnl In anything but the default case, we may have system-specific setting
188198e903e7SBaptiste Daroussindnl which is still not guaranteed to provide all of the entrypoints that
188298e903e7SBaptiste Daroussindnl _XOPEN_SOURCE would yield.
188398e903e7SBaptiste Daroussinif test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
188498e903e7SBaptiste Daroussin	AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
188598e903e7SBaptiste Daroussin	AC_TRY_COMPILE([#include <stdlib.h>],[
188698e903e7SBaptiste Daroussin#ifndef _XOPEN_SOURCE
188798e903e7SBaptiste Daroussinmake an error
188898e903e7SBaptiste Daroussin#endif],
188998e903e7SBaptiste Daroussin	[cf_XOPEN_SOURCE_set=yes],
189098e903e7SBaptiste Daroussin	[cf_XOPEN_SOURCE_set=no])
189198e903e7SBaptiste Daroussin	AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
1892*8e022d3cSDag-Erling Smørgrav	if test "$cf_XOPEN_SOURCE_set" = yes
189398e903e7SBaptiste Daroussin	then
189498e903e7SBaptiste Daroussin		AC_TRY_COMPILE([#include <stdlib.h>],[
189598e903e7SBaptiste Daroussin#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
189698e903e7SBaptiste Daroussinmake an error
189798e903e7SBaptiste Daroussin#endif],
189898e903e7SBaptiste Daroussin		[cf_XOPEN_SOURCE_set_ok=yes],
189998e903e7SBaptiste Daroussin		[cf_XOPEN_SOURCE_set_ok=no])
1900*8e022d3cSDag-Erling Smørgrav		if test "$cf_XOPEN_SOURCE_set_ok" = no
190198e903e7SBaptiste Daroussin		then
190298e903e7SBaptiste Daroussin			AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
190398e903e7SBaptiste Daroussin		fi
190498e903e7SBaptiste Daroussin	else
190598e903e7SBaptiste Daroussin		CF_TRY_XOPEN_SOURCE
190698e903e7SBaptiste Daroussin	fi
190798e903e7SBaptiste Daroussinfi
1908b53bb29fSJung-uk Kimfi # cf_cv_posix_visible
190998e903e7SBaptiste Daroussin])
1910*8e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
1911*8e022d3cSDag-Erling Smørgravdnl CF__XOPEN_SOURCE_BODY version: 1 updated: 2022/09/10 15:17:35
1912*8e022d3cSDag-Erling Smørgravdnl ---------------------
1913*8e022d3cSDag-Erling Smørgravdnl body of test when test-compiling for _XOPEN_SOURCE check
1914*8e022d3cSDag-Erling Smørgravdefine([CF__XOPEN_SOURCE_BODY],
1915*8e022d3cSDag-Erling Smørgrav[
1916*8e022d3cSDag-Erling Smørgrav#ifndef _XOPEN_SOURCE
1917*8e022d3cSDag-Erling Smørgravmake an error
1918*8e022d3cSDag-Erling Smørgrav#endif
1919*8e022d3cSDag-Erling Smørgrav])
1920*8e022d3cSDag-Erling Smørgravdnl ---------------------------------------------------------------------------
1921*8e022d3cSDag-Erling Smørgravdnl CF__XOPEN_SOURCE_HEAD version: 1 updated: 2022/09/10 15:17:03
1922*8e022d3cSDag-Erling Smørgravdnl ---------------------
1923*8e022d3cSDag-Erling Smørgravdnl headers to include when test-compiling for _XOPEN_SOURCE check
1924*8e022d3cSDag-Erling Smørgravdefine([CF__XOPEN_SOURCE_HEAD],
1925*8e022d3cSDag-Erling Smørgrav[
1926*8e022d3cSDag-Erling Smørgrav#include <stdlib.h>
1927*8e022d3cSDag-Erling Smørgrav#include <string.h>
1928*8e022d3cSDag-Erling Smørgrav#include <sys/types.h>
1929*8e022d3cSDag-Erling Smørgrav])
1930