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