1*8e022d3cSDag-Erling Smørgravdnl $Id: aclocal.m4,v 1.59 2023/01/05 22:53:11 tom Exp $ 298e903e7SBaptiste Daroussindnl Macros for byacc configure script (Thomas E. Dickey) 398e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 4*8e022d3cSDag-Erling Smørgravdnl Copyright 2004-2022,2023 Thomas E. Dickey 598e903e7SBaptiste Daroussindnl 698e903e7SBaptiste Daroussindnl Permission is hereby granted, free of charge, to any person obtaining a 798e903e7SBaptiste Daroussindnl copy of this software and associated documentation files (the 898e903e7SBaptiste Daroussindnl "Software"), to deal in the Software without restriction, including 998e903e7SBaptiste Daroussindnl without limitation the rights to use, copy, modify, merge, publish, 1098e903e7SBaptiste Daroussindnl distribute, distribute with modifications, sublicense, and/or sell 1198e903e7SBaptiste Daroussindnl copies of the Software, and to permit persons to whom the Software is 1298e903e7SBaptiste Daroussindnl furnished to do so, subject to the following conditions: 1398e903e7SBaptiste Daroussindnl 1498e903e7SBaptiste Daroussindnl The above copyright notice and this permission notice shall be included 1598e903e7SBaptiste Daroussindnl in all copies or portions of the Software. 1698e903e7SBaptiste Daroussindnl 1798e903e7SBaptiste Daroussindnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 1898e903e7SBaptiste Daroussindnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 1998e903e7SBaptiste Daroussindnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 2098e903e7SBaptiste Daroussindnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 2198e903e7SBaptiste Daroussindnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 2298e903e7SBaptiste Daroussindnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR 2398e903e7SBaptiste Daroussindnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. 2498e903e7SBaptiste Daroussindnl 2598e903e7SBaptiste Daroussindnl Except as contained in this notice, the name(s) of the above copyright 2698e903e7SBaptiste Daroussindnl holders shall not be used in advertising or otherwise to promote the 2798e903e7SBaptiste Daroussindnl sale, use or other dealings in this Software without prior written 2898e903e7SBaptiste Daroussindnl authorization. 2998e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 3098e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 31bb9eb45aSBaptiste Daroussindnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49 325b91e83fSBaptiste Daroussindnl ------------------ 335b91e83fSBaptiste Daroussindnl Conditionally generate script according to whether we're using a given autoconf. 345b91e83fSBaptiste Daroussindnl 355b91e83fSBaptiste Daroussindnl $1 = version to compare against 365b91e83fSBaptiste Daroussindnl $2 = code to use if AC_ACVERSION is at least as high as $1. 375b91e83fSBaptiste Daroussindnl $3 = code to use if AC_ACVERSION is older than $1. 385b91e83fSBaptiste Daroussindefine([CF_ACVERSION_CHECK], 395b91e83fSBaptiste Daroussin[ 40bb9eb45aSBaptiste Daroussinifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl 415b91e83fSBaptiste Daroussinifdef([m4_version_compare], 425b91e83fSBaptiste Daroussin[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])], 435b91e83fSBaptiste Daroussin[CF_ACVERSION_COMPARE( 445b91e83fSBaptiste DaroussinAC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])), 455b91e83fSBaptiste DaroussinAC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl 465b91e83fSBaptiste Daroussindnl --------------------------------------------------------------------------- 475b91e83fSBaptiste Daroussindnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53 485b91e83fSBaptiste Daroussindnl -------------------- 495b91e83fSBaptiste Daroussindnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1, 505b91e83fSBaptiste Daroussindnl MAJOR2, MINOR2, TERNARY2, 515b91e83fSBaptiste Daroussindnl PRINTABLE2, not FOUND, FOUND) 525b91e83fSBaptiste Daroussindefine([CF_ACVERSION_COMPARE], 535b91e83fSBaptiste Daroussin[ifelse(builtin([eval], [$2 < $5]), 1, 545b91e83fSBaptiste Daroussin[ifelse([$8], , ,[$8])], 555b91e83fSBaptiste Daroussin[ifelse([$9], , ,[$9])])])dnl 565b91e83fSBaptiste Daroussindnl --------------------------------------------------------------------------- 57*8e022d3cSDag-Erling Smørgravdnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15 5898e903e7SBaptiste Daroussindnl ------------- 5998e903e7SBaptiste Daroussindnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS 60*8e022d3cSDag-Erling Smørgravdnl $1 = flags to add 61*8e022d3cSDag-Erling Smørgravdnl $2 = if given makes this macro verbose. 6298e903e7SBaptiste Daroussindnl 6398e903e7SBaptiste Daroussindnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, 6498e903e7SBaptiste Daroussindnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily 6598e903e7SBaptiste Daroussindnl confused by the quotes (which require backslashes to keep them usable). 6698e903e7SBaptiste DaroussinAC_DEFUN([CF_ADD_CFLAGS], 6798e903e7SBaptiste Daroussin[ 6898e903e7SBaptiste Daroussincf_fix_cppflags=no 6998e903e7SBaptiste Daroussincf_new_cflags= 7098e903e7SBaptiste Daroussincf_new_cppflags= 7198e903e7SBaptiste Daroussincf_new_extra_cppflags= 7298e903e7SBaptiste Daroussin 7398e903e7SBaptiste Daroussinfor cf_add_cflags in $1 7498e903e7SBaptiste Daroussindo 75*8e022d3cSDag-Erling Smørgravcase "$cf_fix_cppflags" in 760f86d14eSJung-uk Kim(no) 77*8e022d3cSDag-Erling Smørgrav case "$cf_add_cflags" in 780f86d14eSJung-uk Kim (-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) 79*8e022d3cSDag-Erling Smørgrav case "$cf_add_cflags" in 800f86d14eSJung-uk Kim (-D*) 81*8e022d3cSDag-Erling Smørgrav cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'` 8298e903e7SBaptiste Daroussin 8311fce282SBaptiste Daroussin test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ 8498e903e7SBaptiste Daroussin && test -z "${cf_tst_cflags}" \ 8598e903e7SBaptiste Daroussin && cf_fix_cppflags=yes 8698e903e7SBaptiste Daroussin 87*8e022d3cSDag-Erling Smørgrav if test "$cf_fix_cppflags" = yes ; then 88b53bb29fSJung-uk Kim CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 8998e903e7SBaptiste Daroussin continue 9098e903e7SBaptiste Daroussin elif test "${cf_tst_cflags}" = "\"'" ; then 91b53bb29fSJung-uk Kim CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 9298e903e7SBaptiste Daroussin continue 9398e903e7SBaptiste Daroussin fi 9498e903e7SBaptiste Daroussin ;; 9598e903e7SBaptiste Daroussin esac 9698e903e7SBaptiste Daroussin case "$CPPFLAGS" in 970f86d14eSJung-uk Kim (*$cf_add_cflags) 9898e903e7SBaptiste Daroussin ;; 990f86d14eSJung-uk Kim (*) 100*8e022d3cSDag-Erling Smørgrav case "$cf_add_cflags" in 1010f86d14eSJung-uk Kim (-D*) 10298e903e7SBaptiste Daroussin cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` 10398e903e7SBaptiste Daroussin CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) 10498e903e7SBaptiste Daroussin ;; 10598e903e7SBaptiste Daroussin esac 106b53bb29fSJung-uk Kim CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags) 10798e903e7SBaptiste Daroussin ;; 10898e903e7SBaptiste Daroussin esac 10998e903e7SBaptiste Daroussin ;; 1100f86d14eSJung-uk Kim (*) 111b53bb29fSJung-uk Kim CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags) 11298e903e7SBaptiste Daroussin ;; 11398e903e7SBaptiste Daroussin esac 11498e903e7SBaptiste Daroussin ;; 1150f86d14eSJung-uk Kim(yes) 116b53bb29fSJung-uk Kim CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) 11798e903e7SBaptiste Daroussin 118*8e022d3cSDag-Erling Smørgrav cf_tst_cflags=`echo "${cf_add_cflags}" |sed -e 's/^[[^"]]*"'\''//'` 11998e903e7SBaptiste Daroussin 12011fce282SBaptiste Daroussin test "x${cf_add_cflags}" != "x${cf_tst_cflags}" \ 12198e903e7SBaptiste Daroussin && test -z "${cf_tst_cflags}" \ 12298e903e7SBaptiste Daroussin && cf_fix_cppflags=no 12398e903e7SBaptiste Daroussin ;; 12498e903e7SBaptiste Daroussinesac 12598e903e7SBaptiste Daroussindone 12698e903e7SBaptiste Daroussin 12798e903e7SBaptiste Daroussinif test -n "$cf_new_cflags" ; then 12898e903e7SBaptiste Daroussin ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) 129b53bb29fSJung-uk Kim CF_APPEND_TEXT(CFLAGS,$cf_new_cflags) 13098e903e7SBaptiste Daroussinfi 13198e903e7SBaptiste Daroussin 13298e903e7SBaptiste Daroussinif test -n "$cf_new_cppflags" ; then 13398e903e7SBaptiste Daroussin ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) 134b53bb29fSJung-uk Kim CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags) 13598e903e7SBaptiste Daroussinfi 13698e903e7SBaptiste Daroussin 13798e903e7SBaptiste Daroussinif test -n "$cf_new_extra_cppflags" ; then 13898e903e7SBaptiste Daroussin ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) 139b53bb29fSJung-uk Kim CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags) 14098e903e7SBaptiste Daroussinfi 14198e903e7SBaptiste Daroussin 14298e903e7SBaptiste DaroussinAC_SUBST(EXTRA_CPPFLAGS) 14398e903e7SBaptiste Daroussin 14498e903e7SBaptiste Daroussin])dnl 14598e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 146*8e022d3cSDag-Erling Smørgravdnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40 147*8e022d3cSDag-Erling Smørgravdnl ---------------- 148*8e022d3cSDag-Erling Smørgravdnl Use CF_ADD_CFLAGS after first checking for potential redefinitions. 149*8e022d3cSDag-Erling Smørgravdnl $1 = flags to add 150*8e022d3cSDag-Erling Smørgravdnl $2 = if given makes this macro verbose. 151*8e022d3cSDag-Erling Smørgravdefine([CF_APPEND_CFLAGS], 152*8e022d3cSDag-Erling Smørgrav[ 153*8e022d3cSDag-Erling Smørgravfor cf_add_cflags in $1 154*8e022d3cSDag-Erling Smørgravdo 155*8e022d3cSDag-Erling Smørgrav case "x$cf_add_cflags" in 156*8e022d3cSDag-Erling Smørgrav (x-[[DU]]*) 157*8e022d3cSDag-Erling Smørgrav CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2]) 158*8e022d3cSDag-Erling Smørgrav CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2]) 159*8e022d3cSDag-Erling Smørgrav ;; 160*8e022d3cSDag-Erling Smørgrav esac 161*8e022d3cSDag-Erling Smørgrav CF_ADD_CFLAGS([$cf_add_cflags],[$2]) 162*8e022d3cSDag-Erling Smørgravdone 163*8e022d3cSDag-Erling Smørgrav])dnl 164*8e022d3cSDag-Erling Smørgravdnl --------------------------------------------------------------------------- 165b53bb29fSJung-uk Kimdnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55 166b53bb29fSJung-uk Kimdnl -------------- 167b53bb29fSJung-uk Kimdnl use this macro for appending text without introducing an extra blank at 168b53bb29fSJung-uk Kimdnl the beginning 169b53bb29fSJung-uk Kimdefine([CF_APPEND_TEXT], 170b53bb29fSJung-uk Kim[ 171b53bb29fSJung-uk Kim test -n "[$]$1" && $1="[$]$1 " 172b53bb29fSJung-uk Kim $1="[$]{$1}$2" 173b53bb29fSJung-uk Kim])dnl 174b53bb29fSJung-uk Kimdnl --------------------------------------------------------------------------- 17598e903e7SBaptiste Daroussindnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 17698e903e7SBaptiste Daroussindnl -------------- 17798e903e7SBaptiste Daroussindnl Allow user to disable a normally-on option. 17898e903e7SBaptiste DaroussinAC_DEFUN([CF_ARG_DISABLE], 17998e903e7SBaptiste Daroussin[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl 18098e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 181*8e022d3cSDag-Erling Smørgravdnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31 182*8e022d3cSDag-Erling Smørgravdnl ------------- 183*8e022d3cSDag-Erling Smørgravdnl Allow user to enable a normally-off option. 184*8e022d3cSDag-Erling SmørgravAC_DEFUN([CF_ARG_ENABLE], 185*8e022d3cSDag-Erling Smørgrav[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl 186*8e022d3cSDag-Erling Smørgravdnl --------------------------------------------------------------------------- 1870f86d14eSJung-uk Kimdnl CF_ARG_OPTION version: 5 updated: 2015/05/10 19:52:14 18898e903e7SBaptiste Daroussindnl ------------- 18998e903e7SBaptiste Daroussindnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus 19098e903e7SBaptiste Daroussindnl values. 19198e903e7SBaptiste Daroussindnl 19298e903e7SBaptiste Daroussindnl Parameters: 19398e903e7SBaptiste Daroussindnl $1 = option name 19498e903e7SBaptiste Daroussindnl $2 = help-string 19598e903e7SBaptiste Daroussindnl $3 = action to perform if option is not default 19698e903e7SBaptiste Daroussindnl $4 = action if perform if option is default 19798e903e7SBaptiste Daroussindnl $5 = default option value (either 'yes' or 'no') 19898e903e7SBaptiste DaroussinAC_DEFUN([CF_ARG_OPTION], 19998e903e7SBaptiste Daroussin[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes) 20098e903e7SBaptiste Daroussin if test "$enableval" != "$5" ; then 20198e903e7SBaptiste Daroussinifelse([$3],,[ :]dnl 20298e903e7SBaptiste Daroussin,[ $3]) ifelse([$4],,,[ 20398e903e7SBaptiste Daroussin else 20498e903e7SBaptiste Daroussin $4]) 20598e903e7SBaptiste Daroussin fi],[enableval=$5 ifelse([$4],,,[ 20698e903e7SBaptiste Daroussin $4 20798e903e7SBaptiste Daroussin])dnl 20898e903e7SBaptiste Daroussin])])dnl 20998e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 210*8e022d3cSDag-Erling Smørgravdnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23 211*8e022d3cSDag-Erling Smørgravdnl --------------- 212*8e022d3cSDag-Erling SmørgravAC_DEFUN([CF_C11_NORETURN], 213*8e022d3cSDag-Erling Smørgrav[ 214*8e022d3cSDag-Erling SmørgravAC_MSG_CHECKING(if you want to use C11 _Noreturn feature) 215*8e022d3cSDag-Erling SmørgravCF_ARG_ENABLE(stdnoreturn, 216*8e022d3cSDag-Erling Smørgrav [ --enable-stdnoreturn enable C11 _Noreturn feature for diagnostics], 217*8e022d3cSDag-Erling Smørgrav [enable_stdnoreturn=yes], 218*8e022d3cSDag-Erling Smørgrav [enable_stdnoreturn=no]) 219*8e022d3cSDag-Erling SmørgravAC_MSG_RESULT($enable_stdnoreturn) 220*8e022d3cSDag-Erling Smørgrav 221*8e022d3cSDag-Erling Smørgravif test $enable_stdnoreturn = yes; then 222*8e022d3cSDag-Erling SmørgravAC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn, 223*8e022d3cSDag-Erling Smørgrav [AC_TRY_COMPILE([ 224*8e022d3cSDag-Erling Smørgrav#include <stdio.h> 225*8e022d3cSDag-Erling Smørgrav#include <stdlib.h> 226*8e022d3cSDag-Erling Smørgrav#include <stdnoreturn.h> 227*8e022d3cSDag-Erling Smørgravstatic _Noreturn void giveup(void) { exit(0); } 228*8e022d3cSDag-Erling Smørgrav ], 229*8e022d3cSDag-Erling Smørgrav [if (feof(stdin)) giveup()], 230*8e022d3cSDag-Erling Smørgrav cf_cv_c11_noreturn=yes, 231*8e022d3cSDag-Erling Smørgrav cf_cv_c11_noreturn=no) 232*8e022d3cSDag-Erling Smørgrav ]) 233*8e022d3cSDag-Erling Smørgravelse 234*8e022d3cSDag-Erling Smørgrav cf_cv_c11_noreturn=no, 235*8e022d3cSDag-Erling Smørgravfi 236*8e022d3cSDag-Erling Smørgrav 237*8e022d3cSDag-Erling Smørgravif test "$cf_cv_c11_noreturn" = yes; then 238*8e022d3cSDag-Erling Smørgrav AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working]) 239*8e022d3cSDag-Erling Smørgrav AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported]) 240*8e022d3cSDag-Erling Smørgrav HAVE_STDNORETURN_H=1 241*8e022d3cSDag-Erling Smørgravelse 242*8e022d3cSDag-Erling Smørgrav HAVE_STDNORETURN_H=0 243*8e022d3cSDag-Erling Smørgravfi 244*8e022d3cSDag-Erling Smørgrav 245*8e022d3cSDag-Erling SmørgravAC_SUBST(HAVE_STDNORETURN_H) 246*8e022d3cSDag-Erling SmørgravAC_SUBST(STDC_NORETURN) 247*8e022d3cSDag-Erling Smørgrav])dnl 248*8e022d3cSDag-Erling Smørgravdnl --------------------------------------------------------------------------- 249*8e022d3cSDag-Erling Smørgravdnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20 2505b91e83fSBaptiste Daroussindnl --------------- 2515b91e83fSBaptiste Daroussindnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content 2522aca18c7SJung-uk Kimdnl into CC. This will not help with broken scripts that wrap the compiler 2532aca18c7SJung-uk Kimdnl with options, but eliminates a more common category of user confusion. 2542aca18c7SJung-uk Kimdnl 2552aca18c7SJung-uk Kimdnl In particular, it addresses the problem of being able to run the C 2562aca18c7SJung-uk Kimdnl preprocessor in a consistent manner. 257c5b5d71aSJung-uk Kimdnl 258c5b5d71aSJung-uk Kimdnl Caveat: this also disallows blanks in the pathname for the compiler, but 259c5b5d71aSJung-uk Kimdnl the nuisance of having inconsistent settings for compiler and preprocessor 260c5b5d71aSJung-uk Kimdnl outweighs that limitation. 2615b91e83fSBaptiste DaroussinAC_DEFUN([CF_CC_ENV_FLAGS], 2625b91e83fSBaptiste Daroussin[ 2635b91e83fSBaptiste Daroussin# This should have been defined by AC_PROG_CC 264*8e022d3cSDag-Erling Smørgrav: "${CC:=cc}" 2655b91e83fSBaptiste Daroussin 266b53bb29fSJung-uk KimAC_MSG_CHECKING(\$CFLAGS variable) 267b53bb29fSJung-uk Kimcase "x$CFLAGS" in 268b53bb29fSJung-uk Kim(*-[[IUD]]*) 269b53bb29fSJung-uk Kim AC_MSG_RESULT(broken) 270b53bb29fSJung-uk Kim AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options) 271b53bb29fSJung-uk Kim cf_flags="$CFLAGS" 272b53bb29fSJung-uk Kim CFLAGS= 273b53bb29fSJung-uk Kim for cf_arg in $cf_flags 274b53bb29fSJung-uk Kim do 275b53bb29fSJung-uk Kim CF_ADD_CFLAGS($cf_arg) 276b53bb29fSJung-uk Kim done 277b53bb29fSJung-uk Kim ;; 278b53bb29fSJung-uk Kim(*) 279b53bb29fSJung-uk Kim AC_MSG_RESULT(ok) 280b53bb29fSJung-uk Kim ;; 281b53bb29fSJung-uk Kimesac 282b53bb29fSJung-uk Kim 2835b91e83fSBaptiste DaroussinAC_MSG_CHECKING(\$CC variable) 2840f86d14eSJung-uk Kimcase "$CC" in 285c5b5d71aSJung-uk Kim(*[[\ \ ]]-*) 2865b91e83fSBaptiste Daroussin AC_MSG_RESULT(broken) 287b53bb29fSJung-uk Kim AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options) 2885b91e83fSBaptiste Daroussin # humor him... 289b53bb29fSJung-uk Kim cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'` 290b53bb29fSJung-uk Kim cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'` 291b53bb29fSJung-uk Kim CC="$cf_prog" 2922aca18c7SJung-uk Kim for cf_arg in $cf_flags 2932aca18c7SJung-uk Kim do 2942aca18c7SJung-uk Kim case "x$cf_arg" in 2952aca18c7SJung-uk Kim (x-[[IUDfgOW]]*) 296b53bb29fSJung-uk Kim CF_ADD_CFLAGS($cf_arg) 2972aca18c7SJung-uk Kim ;; 2982aca18c7SJung-uk Kim (*) 2992aca18c7SJung-uk Kim CC="$CC $cf_arg" 3002aca18c7SJung-uk Kim ;; 3012aca18c7SJung-uk Kim esac 3022aca18c7SJung-uk Kim done 303c5b5d71aSJung-uk Kim CF_VERBOSE(resulting CC: '$CC') 304c5b5d71aSJung-uk Kim CF_VERBOSE(resulting CFLAGS: '$CFLAGS') 305c5b5d71aSJung-uk Kim CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS') 3065b91e83fSBaptiste Daroussin ;; 3070f86d14eSJung-uk Kim(*) 3085b91e83fSBaptiste Daroussin AC_MSG_RESULT(ok) 3095b91e83fSBaptiste Daroussin ;; 3105b91e83fSBaptiste Daroussinesac 3115b91e83fSBaptiste Daroussin])dnl 3125b91e83fSBaptiste Daroussindnl --------------------------------------------------------------------------- 313*8e022d3cSDag-Erling Smørgravdnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15 31498e903e7SBaptiste Daroussindnl -------------- 31598e903e7SBaptiste Daroussindnl Check if we're accidentally using a cache from a different machine. 31698e903e7SBaptiste Daroussindnl Derive the system name, as a check for reusing the autoconf cache. 31798e903e7SBaptiste Daroussindnl 31898e903e7SBaptiste Daroussindnl If we've packaged config.guess and config.sub, run that (since it does a 31998e903e7SBaptiste Daroussindnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow 32098e903e7SBaptiste Daroussindnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM 32198e903e7SBaptiste Daroussindnl which is useful in cross-compiles. 32298e903e7SBaptiste Daroussindnl 32398e903e7SBaptiste Daroussindnl Note: we would use $ac_config_sub, but that is one of the places where 32498e903e7SBaptiste Daroussindnl autoconf 2.5x broke compatibility with autoconf 2.13 32598e903e7SBaptiste DaroussinAC_DEFUN([CF_CHECK_CACHE], 32698e903e7SBaptiste Daroussin[ 327*8e022d3cSDag-Erling Smørgravif test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then 32898e903e7SBaptiste Daroussin ifelse([$1],,[AC_CANONICAL_HOST],[$1]) 32998e903e7SBaptiste Daroussin system_name="$host_os" 33098e903e7SBaptiste Daroussinelse 33198e903e7SBaptiste Daroussin system_name="`(uname -s -r) 2>/dev/null`" 33298e903e7SBaptiste Daroussin if test -z "$system_name" ; then 33398e903e7SBaptiste Daroussin system_name="`(hostname) 2>/dev/null`" 33498e903e7SBaptiste Daroussin fi 33598e903e7SBaptiste Daroussinfi 3365b91e83fSBaptiste Daroussintest -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.]) 33798e903e7SBaptiste DaroussinAC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) 33898e903e7SBaptiste Daroussin 33998e903e7SBaptiste Daroussintest -z "$system_name" && system_name="$cf_cv_system_name" 34098e903e7SBaptiste Daroussintest -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) 34198e903e7SBaptiste Daroussin 34298e903e7SBaptiste Daroussinif test ".$system_name" != ".$cf_cv_system_name" ; then 34398e903e7SBaptiste Daroussin AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) 34498e903e7SBaptiste Daroussin AC_MSG_ERROR("Please remove config.cache and try again.") 34598e903e7SBaptiste Daroussinfi 34698e903e7SBaptiste Daroussin])dnl 34798e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 348*8e022d3cSDag-Erling Smørgravdnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04 3495b91e83fSBaptiste Daroussindnl ----------------- 3505b91e83fSBaptiste Daroussindnl Check if the given compiler is really clang. clang's C driver defines 3515b91e83fSBaptiste Daroussindnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does 3525b91e83fSBaptiste Daroussindnl not ignore some gcc options. 3535b91e83fSBaptiste Daroussindnl 3545b91e83fSBaptiste Daroussindnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to 3555b91e83fSBaptiste Daroussindnl ensure that it is not mistaken for gcc/g++. It is normally invoked from 3565b91e83fSBaptiste Daroussindnl the wrappers for gcc and g++ warnings. 3575b91e83fSBaptiste Daroussindnl 3585b91e83fSBaptiste Daroussindnl $1 = GCC (default) or GXX 3594b4a8fcaSBaptiste Daroussindnl $2 = CLANG_COMPILER (default) 3605b91e83fSBaptiste Daroussindnl $3 = CFLAGS (default) or CXXFLAGS 3615b91e83fSBaptiste DaroussinAC_DEFUN([CF_CLANG_COMPILER],[ 3625b91e83fSBaptiste Daroussinifelse([$2],,CLANG_COMPILER,[$2])=no 3635b91e83fSBaptiste Daroussin 3645b91e83fSBaptiste Daroussinif test "$ifelse([$1],,[$1],GCC)" = yes ; then 3655b91e83fSBaptiste Daroussin AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler) 3665b91e83fSBaptiste Daroussin cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" 3675b91e83fSBaptiste Daroussin AC_TRY_COMPILE([],[ 3685b91e83fSBaptiste Daroussin#ifdef __clang__ 3695b91e83fSBaptiste Daroussin#else 3705b91e83fSBaptiste Daroussinmake an error 3715b91e83fSBaptiste Daroussin#endif 3725b91e83fSBaptiste Daroussin],[ifelse([$2],,CLANG_COMPILER,[$2])=yes 3735b91e83fSBaptiste Daroussin],[]) 3745b91e83fSBaptiste Daroussin ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" 3755b91e83fSBaptiste Daroussin AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2])) 3765b91e83fSBaptiste Daroussinfi 377*8e022d3cSDag-Erling Smørgrav 378*8e022d3cSDag-Erling SmørgravCLANG_VERSION=none 379*8e022d3cSDag-Erling Smørgrav 380*8e022d3cSDag-Erling Smørgravif test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then 381*8e022d3cSDag-Erling Smørgrav case "$CC" in 382*8e022d3cSDag-Erling Smørgrav (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]]) 383*8e022d3cSDag-Erling Smørgrav AC_MSG_WARN(replacing broken compiler alias $CC) 384*8e022d3cSDag-Erling Smørgrav CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`" 385*8e022d3cSDag-Erling Smørgrav CC=clang 386*8e022d3cSDag-Erling Smørgrav ;; 387*8e022d3cSDag-Erling Smørgrav esac 388*8e022d3cSDag-Erling Smørgrav 389*8e022d3cSDag-Erling Smørgrav AC_MSG_CHECKING(version of $CC) 390*8e022d3cSDag-Erling Smørgrav CLANG_VERSION="`$CC --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(CLANG[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" 391*8e022d3cSDag-Erling Smørgrav test -z "$CLANG_VERSION" && CLANG_VERSION=unknown 392*8e022d3cSDag-Erling Smørgrav AC_MSG_RESULT($CLANG_VERSION) 393*8e022d3cSDag-Erling Smørgrav 394*8e022d3cSDag-Erling Smørgrav for cf_clang_opt in \ 395*8e022d3cSDag-Erling Smørgrav -Qunused-arguments \ 396*8e022d3cSDag-Erling Smørgrav -Wno-error=implicit-function-declaration 397*8e022d3cSDag-Erling Smørgrav do 398*8e022d3cSDag-Erling Smørgrav AC_MSG_CHECKING(if option $cf_clang_opt works) 399*8e022d3cSDag-Erling Smørgrav cf_save_CFLAGS="$CFLAGS" 400*8e022d3cSDag-Erling Smørgrav CFLAGS="$CFLAGS $cf_clang_opt" 401*8e022d3cSDag-Erling Smørgrav AC_TRY_LINK([ 402*8e022d3cSDag-Erling Smørgrav #include <stdio.h>],[ 403*8e022d3cSDag-Erling Smørgrav printf("hello!\\n");],[ 404*8e022d3cSDag-Erling Smørgrav cf_clang_optok=yes],[ 405*8e022d3cSDag-Erling Smørgrav cf_clang_optok=no]) 406*8e022d3cSDag-Erling Smørgrav AC_MSG_RESULT($cf_clang_optok) 407*8e022d3cSDag-Erling Smørgrav CFLAGS="$cf_save_CFLAGS" 408*8e022d3cSDag-Erling Smørgrav if test "$cf_clang_optok" = yes; then 409*8e022d3cSDag-Erling Smørgrav CF_VERBOSE(adding option $cf_clang_opt) 410*8e022d3cSDag-Erling Smørgrav CF_APPEND_TEXT(CFLAGS,$cf_clang_opt) 411*8e022d3cSDag-Erling Smørgrav fi 412*8e022d3cSDag-Erling Smørgrav done 413*8e022d3cSDag-Erling Smørgravfi 4145b91e83fSBaptiste Daroussin]) 4155b91e83fSBaptiste Daroussindnl --------------------------------------------------------------------------- 416*8e022d3cSDag-Erling Smørgravdnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17 417b53bb29fSJung-uk Kimdnl ----------------- 418b53bb29fSJung-uk Kimdnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most 419b53bb29fSJung-uk Kimdnl character-strings. 420b53bb29fSJung-uk Kimdnl 421b53bb29fSJung-uk Kimdnl It is ambiguous because the specification accommodated the pre-ANSI 422b53bb29fSJung-uk Kimdnl compilers bundled by more than one vendor in lieu of providing a standard C 423b53bb29fSJung-uk Kimdnl compiler other than by costly add-ons. Because of this, the specification 424b53bb29fSJung-uk Kimdnl did not take into account the use of const for telling the compiler that 425b53bb29fSJung-uk Kimdnl string literals would be in readonly memory. 426b53bb29fSJung-uk Kimdnl 427b53bb29fSJung-uk Kimdnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to 428b53bb29fSJung-uk Kimdnl let the compiler decide how to represent Xt's strings which were #define'd. 429b53bb29fSJung-uk Kimdnl That does not solve the problem of using the block of Xt's strings which 430b53bb29fSJung-uk Kimdnl are compiled into the library (and is less efficient than one might want). 431b53bb29fSJung-uk Kimdnl 432b53bb29fSJung-uk Kimdnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both 433b53bb29fSJung-uk Kimdnl when compiling the library and compiling using the library, to tell the 434b53bb29fSJung-uk Kimdnl compiler that String is const. 435b53bb29fSJung-uk KimAC_DEFUN([CF_CONST_X_STRING], 436b53bb29fSJung-uk Kim[ 437b53bb29fSJung-uk KimAC_REQUIRE([AC_PATH_XTRA]) 438b53bb29fSJung-uk Kim 439b53bb29fSJung-uk KimCF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING]) 440b53bb29fSJung-uk Kim 441b53bb29fSJung-uk KimAC_TRY_COMPILE( 442b53bb29fSJung-uk Kim[ 443b53bb29fSJung-uk Kim#include <stdlib.h> 444b53bb29fSJung-uk Kim#include <X11/Intrinsic.h> 445b53bb29fSJung-uk Kim], 446*8e022d3cSDag-Erling Smørgrav[String foo = malloc(1); free((void*)foo)],[ 447b53bb29fSJung-uk Kim 448b53bb29fSJung-uk KimAC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[ 449b53bb29fSJung-uk Kim AC_TRY_COMPILE( 450b53bb29fSJung-uk Kim [ 451b53bb29fSJung-uk Kim#define _CONST_X_STRING /* X11R7.8 (perhaps) */ 452b53bb29fSJung-uk Kim#undef XTSTRINGDEFINES /* X11R5 and later */ 453b53bb29fSJung-uk Kim#include <stdlib.h> 454b53bb29fSJung-uk Kim#include <X11/Intrinsic.h> 455b53bb29fSJung-uk Kim ],[String foo = malloc(1); *foo = 0],[ 456b53bb29fSJung-uk Kim cf_cv_const_x_string=no 457b53bb29fSJung-uk Kim ],[ 458b53bb29fSJung-uk Kim cf_cv_const_x_string=yes 459b53bb29fSJung-uk Kim ]) 460b53bb29fSJung-uk Kim]) 461b53bb29fSJung-uk Kim 462b53bb29fSJung-uk KimCF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING]) 463b53bb29fSJung-uk Kim 464*8e022d3cSDag-Erling Smørgravcase "$cf_cv_const_x_string" in 465b53bb29fSJung-uk Kim(no) 466b53bb29fSJung-uk Kim CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES) 467b53bb29fSJung-uk Kim ;; 468b53bb29fSJung-uk Kim(*) 469b53bb29fSJung-uk Kim CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING) 470b53bb29fSJung-uk Kim ;; 471b53bb29fSJung-uk Kimesac 472b53bb29fSJung-uk Kim 473b53bb29fSJung-uk Kim]) 474b53bb29fSJung-uk Kim])dnl 475b53bb29fSJung-uk Kimdnl --------------------------------------------------------------------------- 476*8e022d3cSDag-Erling Smørgravdnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04 47798e903e7SBaptiste Daroussindnl --------------- 478*8e022d3cSDag-Erling Smørgravdnl You can always use "make -n" to see the actual options, but it is hard to 47998e903e7SBaptiste Daroussindnl pick out/analyze warning messages when the compile-line is long. 48098e903e7SBaptiste Daroussindnl 48198e903e7SBaptiste Daroussindnl Sets: 48298e903e7SBaptiste Daroussindnl ECHO_LT - symbol to control if libtool is verbose 48398e903e7SBaptiste Daroussindnl ECHO_LD - symbol to prefix "cc -o" lines 48498e903e7SBaptiste Daroussindnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o) 48598e903e7SBaptiste Daroussindnl SHOW_CC - symbol to put before explicit "cc -c" lines 48698e903e7SBaptiste Daroussindnl ECHO_CC - symbol to put before any "cc" line 48798e903e7SBaptiste Daroussindnl 48898e903e7SBaptiste DaroussinAC_DEFUN([CF_DISABLE_ECHO],[ 48998e903e7SBaptiste DaroussinAC_MSG_CHECKING(if you want to see long compiling messages) 49098e903e7SBaptiste DaroussinCF_ARG_DISABLE(echo, 4915b91e83fSBaptiste Daroussin [ --disable-echo do not display "compiling" commands], 49298e903e7SBaptiste Daroussin [ 49398e903e7SBaptiste Daroussin ECHO_LT='--silent' 49498e903e7SBaptiste Daroussin ECHO_LD='@echo linking [$]@;' 49598e903e7SBaptiste Daroussin RULE_CC='@echo compiling [$]<' 49698e903e7SBaptiste Daroussin SHOW_CC='@echo compiling [$]@' 49798e903e7SBaptiste Daroussin ECHO_CC='@' 49898e903e7SBaptiste Daroussin],[ 49998e903e7SBaptiste Daroussin ECHO_LT='' 50098e903e7SBaptiste Daroussin ECHO_LD='' 50198e903e7SBaptiste Daroussin RULE_CC='' 50298e903e7SBaptiste Daroussin SHOW_CC='' 50398e903e7SBaptiste Daroussin ECHO_CC='' 50498e903e7SBaptiste Daroussin]) 50598e903e7SBaptiste DaroussinAC_MSG_RESULT($enableval) 50698e903e7SBaptiste DaroussinAC_SUBST(ECHO_LT) 50798e903e7SBaptiste DaroussinAC_SUBST(ECHO_LD) 50898e903e7SBaptiste DaroussinAC_SUBST(RULE_CC) 50998e903e7SBaptiste DaroussinAC_SUBST(SHOW_CC) 51098e903e7SBaptiste DaroussinAC_SUBST(ECHO_CC) 51198e903e7SBaptiste Daroussin])dnl 51298e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 513*8e022d3cSDag-Erling Smørgravdnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50 51498e903e7SBaptiste Daroussindnl ---------------- 51598e903e7SBaptiste Daroussindnl Combine no-leak checks with the libraries or tools that are used for the 51698e903e7SBaptiste Daroussindnl checks. 51798e903e7SBaptiste DaroussinAC_DEFUN([CF_DISABLE_LEAKS],[ 51898e903e7SBaptiste Daroussin 51998e903e7SBaptiste DaroussinAC_REQUIRE([CF_WITH_DMALLOC]) 52098e903e7SBaptiste DaroussinAC_REQUIRE([CF_WITH_DBMALLOC]) 52198e903e7SBaptiste DaroussinAC_REQUIRE([CF_WITH_VALGRIND]) 52298e903e7SBaptiste Daroussin 52398e903e7SBaptiste DaroussinAC_MSG_CHECKING(if you want to perform memory-leak testing) 52498e903e7SBaptiste DaroussinAC_ARG_ENABLE(leaks, 52598e903e7SBaptiste Daroussin [ --disable-leaks test: free permanent memory, analyze leaks], 526*8e022d3cSDag-Erling Smørgrav [enable_leaks=$enableval], 527*8e022d3cSDag-Erling Smørgrav [enable_leaks=yes]) 528*8e022d3cSDag-Erling Smørgravdnl with_no_leaks is more readable... 529*8e022d3cSDag-Erling Smørgravif test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi 53098e903e7SBaptiste DaroussinAC_MSG_RESULT($with_no_leaks) 53198e903e7SBaptiste Daroussin 532*8e022d3cSDag-Erling Smørgravif test "$enable_leaks" = no ; then 5335b91e83fSBaptiste Daroussin AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) 5345b91e83fSBaptiste Daroussin AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) 53598e903e7SBaptiste Daroussinfi 53698e903e7SBaptiste Daroussin])dnl 53798e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 538*8e022d3cSDag-Erling Smørgravdnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50 539*8e022d3cSDag-Erling Smørgravdnl ------------------ 540*8e022d3cSDag-Erling Smørgravdnl Configure-option to enable gcc warnings 541*8e022d3cSDag-Erling Smørgravdnl 542*8e022d3cSDag-Erling Smørgravdnl $1 = extra options to add, if supported 543*8e022d3cSDag-Erling Smørgravdnl $2 = option for checking attributes. By default, this is done when 544*8e022d3cSDag-Erling Smørgravdnl warnings are enabled. For other values: 545*8e022d3cSDag-Erling Smørgravdnl yes: always do this, e.g., to use in generated library-headers 546*8e022d3cSDag-Erling Smørgravdnl no: never do this 547*8e022d3cSDag-Erling SmørgravAC_DEFUN([CF_ENABLE_WARNINGS],[ 548*8e022d3cSDag-Erling Smørgravif test "$GCC" = yes || test "$GXX" = yes 549*8e022d3cSDag-Erling Smørgravthen 550*8e022d3cSDag-Erling SmørgravCF_FIX_WARNINGS(CFLAGS) 551*8e022d3cSDag-Erling SmørgravCF_FIX_WARNINGS(CPPFLAGS) 552*8e022d3cSDag-Erling SmørgravCF_FIX_WARNINGS(LDFLAGS) 553*8e022d3cSDag-Erling SmørgravAC_MSG_CHECKING(if you want to turn on gcc warnings) 554*8e022d3cSDag-Erling SmørgravCF_ARG_ENABLE(warnings, 555*8e022d3cSDag-Erling Smørgrav [ --enable-warnings test: turn on gcc compiler warnings], 556*8e022d3cSDag-Erling Smørgrav [enable_warnings=yes], 557*8e022d3cSDag-Erling Smørgrav [enable_warnings=no]) 558*8e022d3cSDag-Erling SmørgravAC_MSG_RESULT($enable_warnings) 559*8e022d3cSDag-Erling Smørgravif test "$enable_warnings" = "yes" 560*8e022d3cSDag-Erling Smørgravthen 561*8e022d3cSDag-Erling Smørgrav ifelse($2,,[CF_GCC_ATTRIBUTES]) 562*8e022d3cSDag-Erling Smørgrav CF_GCC_WARNINGS($1) 563*8e022d3cSDag-Erling Smørgravfi 564*8e022d3cSDag-Erling Smørgravifelse($2,yes,[CF_GCC_ATTRIBUTES]) 565*8e022d3cSDag-Erling Smørgravfi 566*8e022d3cSDag-Erling Smørgrav])dnl 567*8e022d3cSDag-Erling Smørgravdnl --------------------------------------------------------------------------- 568*8e022d3cSDag-Erling Smørgravdnl CF_FIX_WARNINGS version: 4 updated: 2021/12/16 18:22:31 569*8e022d3cSDag-Erling Smørgravdnl --------------- 570*8e022d3cSDag-Erling Smørgravdnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc. Any of gcc's 571*8e022d3cSDag-Erling Smørgravdnl "-Werror" flags can interfere with configure-checks. Those go into 572*8e022d3cSDag-Erling Smørgravdnl EXTRA_CFLAGS. 573*8e022d3cSDag-Erling Smørgravdnl 574*8e022d3cSDag-Erling Smørgravdnl $1 = variable name to repair 575*8e022d3cSDag-Erling Smørgravdefine([CF_FIX_WARNINGS],[ 576*8e022d3cSDag-Erling Smørgravif test "$GCC" = yes || test "$GXX" = yes 577*8e022d3cSDag-Erling Smørgravthen 578*8e022d3cSDag-Erling Smørgrav case [$]$1 in 579*8e022d3cSDag-Erling Smørgrav (*-Werror=*) 580*8e022d3cSDag-Erling Smørgrav cf_temp_flags= 581*8e022d3cSDag-Erling Smørgrav for cf_temp_scan in [$]$1 582*8e022d3cSDag-Erling Smørgrav do 583*8e022d3cSDag-Erling Smørgrav case "x$cf_temp_scan" in 584*8e022d3cSDag-Erling Smørgrav (x-Werror=format*) 585*8e022d3cSDag-Erling Smørgrav CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) 586*8e022d3cSDag-Erling Smørgrav ;; 587*8e022d3cSDag-Erling Smørgrav (x-Werror=*) 588*8e022d3cSDag-Erling Smørgrav CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan) 589*8e022d3cSDag-Erling Smørgrav ;; 590*8e022d3cSDag-Erling Smørgrav (*) 591*8e022d3cSDag-Erling Smørgrav CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) 592*8e022d3cSDag-Erling Smørgrav ;; 593*8e022d3cSDag-Erling Smørgrav esac 594*8e022d3cSDag-Erling Smørgrav done 595*8e022d3cSDag-Erling Smørgrav if test "x[$]$1" != "x$cf_temp_flags" 596*8e022d3cSDag-Erling Smørgrav then 597*8e022d3cSDag-Erling Smørgrav CF_VERBOSE(repairing $1: [$]$1) 598*8e022d3cSDag-Erling Smørgrav $1="$cf_temp_flags" 599*8e022d3cSDag-Erling Smørgrav CF_VERBOSE(... fixed [$]$1) 600*8e022d3cSDag-Erling Smørgrav CF_VERBOSE(... extra $EXTRA_CFLAGS) 601*8e022d3cSDag-Erling Smørgrav fi 602*8e022d3cSDag-Erling Smørgrav ;; 603*8e022d3cSDag-Erling Smørgrav esac 604*8e022d3cSDag-Erling Smørgravfi 605*8e022d3cSDag-Erling SmørgravAC_SUBST(EXTRA_CFLAGS) 606*8e022d3cSDag-Erling Smørgrav])dnl 607*8e022d3cSDag-Erling Smørgravdnl --------------------------------------------------------------------------- 608*8e022d3cSDag-Erling Smørgravdnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25 60998e903e7SBaptiste Daroussindnl ----------------- 61098e903e7SBaptiste Daroussindnl Test for availability of useful gcc __attribute__ directives to quiet 61198e903e7SBaptiste Daroussindnl compiler warnings. Though useful, not all are supported -- and contrary 61298e903e7SBaptiste Daroussindnl to documentation, unrecognized directives cause older compilers to barf. 61398e903e7SBaptiste DaroussinAC_DEFUN([CF_GCC_ATTRIBUTES], 614*8e022d3cSDag-Erling Smørgrav[AC_REQUIRE([AC_PROG_FGREP])dnl 615*8e022d3cSDag-Erling SmørgravAC_REQUIRE([CF_C11_NORETURN])dnl 616*8e022d3cSDag-Erling Smørgrav 617*8e022d3cSDag-Erling Smørgravif test "$GCC" = yes || test "$GXX" = yes 61898e903e7SBaptiste Daroussinthen 61998e903e7SBaptiste Daroussincat > conftest.i <<EOF 62098e903e7SBaptiste Daroussin#ifndef GCC_PRINTF 62198e903e7SBaptiste Daroussin#define GCC_PRINTF 0 62298e903e7SBaptiste Daroussin#endif 62398e903e7SBaptiste Daroussin#ifndef GCC_SCANF 62498e903e7SBaptiste Daroussin#define GCC_SCANF 0 62598e903e7SBaptiste Daroussin#endif 62698e903e7SBaptiste Daroussin#ifndef GCC_NORETURN 62798e903e7SBaptiste Daroussin#define GCC_NORETURN /* nothing */ 62898e903e7SBaptiste Daroussin#endif 62998e903e7SBaptiste Daroussin#ifndef GCC_UNUSED 63098e903e7SBaptiste Daroussin#define GCC_UNUSED /* nothing */ 63198e903e7SBaptiste Daroussin#endif 63298e903e7SBaptiste DaroussinEOF 63398e903e7SBaptiste Daroussinif test "$GCC" = yes 63498e903e7SBaptiste Daroussinthen 63598e903e7SBaptiste Daroussin AC_CHECKING([for $CC __attribute__ directives]) 636*8e022d3cSDag-Erling Smørgravcat > "conftest.$ac_ext" <<EOF 63798e903e7SBaptiste Daroussin#line __oline__ "${as_me:-configure}" 638*8e022d3cSDag-Erling Smørgrav#include <stdio.h> 63998e903e7SBaptiste Daroussin#include "confdefs.h" 64098e903e7SBaptiste Daroussin#include "conftest.h" 64198e903e7SBaptiste Daroussin#include "conftest.i" 64298e903e7SBaptiste Daroussin#if GCC_PRINTF 64398e903e7SBaptiste Daroussin#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) 64498e903e7SBaptiste Daroussin#else 64598e903e7SBaptiste Daroussin#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ 64698e903e7SBaptiste Daroussin#endif 64798e903e7SBaptiste Daroussin#if GCC_SCANF 64898e903e7SBaptiste Daroussin#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) 64998e903e7SBaptiste Daroussin#else 65098e903e7SBaptiste Daroussin#define GCC_SCANFLIKE(fmt,var) /*nothing*/ 65198e903e7SBaptiste Daroussin#endif 65298e903e7SBaptiste Daroussinextern void wow(char *,...) GCC_SCANFLIKE(1,2); 653*8e022d3cSDag-Erling Smørgravextern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2); 654*8e022d3cSDag-Erling Smørgravextern GCC_NORETURN void foo(void); 655b53bb29fSJung-uk Kimint main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; } 65698e903e7SBaptiste DaroussinEOF 65798e903e7SBaptiste Daroussin cf_printf_attribute=no 65898e903e7SBaptiste Daroussin cf_scanf_attribute=no 65998e903e7SBaptiste Daroussin for cf_attribute in scanf printf unused noreturn 66098e903e7SBaptiste Daroussin do 66198e903e7SBaptiste Daroussin CF_UPPER(cf_ATTRIBUTE,$cf_attribute) 66298e903e7SBaptiste Daroussin cf_directive="__attribute__(($cf_attribute))" 66398e903e7SBaptiste Daroussin echo "checking for $CC $cf_directive" 1>&AC_FD_CC 66498e903e7SBaptiste Daroussin 665*8e022d3cSDag-Erling Smørgrav case "$cf_attribute" in 6660f86d14eSJung-uk Kim (printf) 66798e903e7SBaptiste Daroussin cf_printf_attribute=yes 66898e903e7SBaptiste Daroussin cat >conftest.h <<EOF 66998e903e7SBaptiste Daroussin#define GCC_$cf_ATTRIBUTE 1 67098e903e7SBaptiste DaroussinEOF 67198e903e7SBaptiste Daroussin ;; 6720f86d14eSJung-uk Kim (scanf) 67398e903e7SBaptiste Daroussin cf_scanf_attribute=yes 67498e903e7SBaptiste Daroussin cat >conftest.h <<EOF 67598e903e7SBaptiste Daroussin#define GCC_$cf_ATTRIBUTE 1 67698e903e7SBaptiste DaroussinEOF 67798e903e7SBaptiste Daroussin ;; 6780f86d14eSJung-uk Kim (*) 67998e903e7SBaptiste Daroussin cat >conftest.h <<EOF 68098e903e7SBaptiste Daroussin#define GCC_$cf_ATTRIBUTE $cf_directive 68198e903e7SBaptiste DaroussinEOF 68298e903e7SBaptiste Daroussin ;; 68398e903e7SBaptiste Daroussin esac 68498e903e7SBaptiste Daroussin 68598e903e7SBaptiste Daroussin if AC_TRY_EVAL(ac_compile); then 68698e903e7SBaptiste Daroussin test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute) 68798e903e7SBaptiste Daroussin cat conftest.h >>confdefs.h 688*8e022d3cSDag-Erling Smørgrav case "$cf_attribute" in 6890f86d14eSJung-uk Kim (noreturn) 6905b91e83fSBaptiste Daroussin AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc]) 6915b91e83fSBaptiste Daroussin ;; 6920f86d14eSJung-uk Kim (printf) 6935b91e83fSBaptiste Daroussin cf_value='/* nothing */' 6945b91e83fSBaptiste Daroussin if test "$cf_printf_attribute" != no ; then 6955b91e83fSBaptiste Daroussin cf_value='__attribute__((format(printf,fmt,var)))' 6965b91e83fSBaptiste Daroussin AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.]) 69798e903e7SBaptiste Daroussin fi 6985b91e83fSBaptiste Daroussin AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc]) 69998e903e7SBaptiste Daroussin ;; 7000f86d14eSJung-uk Kim (scanf) 7015b91e83fSBaptiste Daroussin cf_value='/* nothing */' 7025b91e83fSBaptiste Daroussin if test "$cf_scanf_attribute" != no ; then 7035b91e83fSBaptiste Daroussin cf_value='__attribute__((format(scanf,fmt,var)))' 7045b91e83fSBaptiste Daroussin AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.]) 70598e903e7SBaptiste Daroussin fi 7065b91e83fSBaptiste Daroussin AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc]) 7075b91e83fSBaptiste Daroussin ;; 7080f86d14eSJung-uk Kim (unused) 7095b91e83fSBaptiste Daroussin AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc]) 71098e903e7SBaptiste Daroussin ;; 71198e903e7SBaptiste Daroussin esac 71298e903e7SBaptiste Daroussin fi 71398e903e7SBaptiste Daroussin done 71498e903e7SBaptiste Daroussinelse 715*8e022d3cSDag-Erling Smørgrav ${FGREP-fgrep} define conftest.i >>confdefs.h 71698e903e7SBaptiste Daroussinfi 717*8e022d3cSDag-Erling Smørgravrm -rf ./conftest* 71898e903e7SBaptiste Daroussinfi 71998e903e7SBaptiste Daroussin])dnl 72098e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 721b53bb29fSJung-uk Kimdnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36 72298e903e7SBaptiste Daroussindnl -------------- 723b53bb29fSJung-uk Kimdnl Find version of gcc, and (because icc/clang pretend to be gcc without being 724b53bb29fSJung-uk Kimdnl compatible), attempt to determine if icc/clang is actually used. 72598e903e7SBaptiste DaroussinAC_DEFUN([CF_GCC_VERSION],[ 72698e903e7SBaptiste DaroussinAC_REQUIRE([AC_PROG_CC]) 72798e903e7SBaptiste DaroussinGCC_VERSION=none 72898e903e7SBaptiste Daroussinif test "$GCC" = yes ; then 72998e903e7SBaptiste Daroussin AC_MSG_CHECKING(version of $CC) 7305b91e83fSBaptiste Daroussin GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" 73198e903e7SBaptiste Daroussin test -z "$GCC_VERSION" && GCC_VERSION=unknown 73298e903e7SBaptiste Daroussin AC_MSG_RESULT($GCC_VERSION) 73398e903e7SBaptiste Daroussinfi 734b53bb29fSJung-uk KimCF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) 735b53bb29fSJung-uk KimCF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS) 73698e903e7SBaptiste Daroussin])dnl 73798e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 738*8e022d3cSDag-Erling Smørgravdnl CF_GCC_WARNINGS version: 41 updated: 2021/01/01 16:53:59 73998e903e7SBaptiste Daroussindnl --------------- 74098e903e7SBaptiste Daroussindnl Check if the compiler supports useful warning options. There's a few that 74198e903e7SBaptiste Daroussindnl we don't use, simply because they're too noisy: 74298e903e7SBaptiste Daroussindnl 74398e903e7SBaptiste Daroussindnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) 744b53bb29fSJung-uk Kimdnl -Winline (usually not worthwhile) 74598e903e7SBaptiste Daroussindnl -Wredundant-decls (system headers make this too noisy) 74698e903e7SBaptiste Daroussindnl -Wtraditional (combines too many unrelated messages, only a few useful) 74798e903e7SBaptiste Daroussindnl -Wwrite-strings (too noisy, but should review occasionally). This 74898e903e7SBaptiste Daroussindnl is enabled for ncurses using "--enable-const". 74998e903e7SBaptiste Daroussindnl -pedantic 75098e903e7SBaptiste Daroussindnl 75198e903e7SBaptiste Daroussindnl Parameter: 75298e903e7SBaptiste Daroussindnl $1 is an optional list of gcc warning flags that a particular 75398e903e7SBaptiste Daroussindnl application might want to use, e.g., "no-unused" for 75498e903e7SBaptiste Daroussindnl -Wno-unused 75598e903e7SBaptiste Daroussindnl Special: 75698e903e7SBaptiste Daroussindnl If $with_ext_const is "yes", add a check for -Wwrite-strings 75798e903e7SBaptiste Daroussindnl 75898e903e7SBaptiste DaroussinAC_DEFUN([CF_GCC_WARNINGS], 75998e903e7SBaptiste Daroussin[ 76098e903e7SBaptiste DaroussinAC_REQUIRE([CF_GCC_VERSION]) 761b53bb29fSJung-uk Kimif test "x$have_x" = xyes; then CF_CONST_X_STRING fi 762*8e022d3cSDag-Erling Smørgravcat > "conftest.$ac_ext" <<EOF 76398e903e7SBaptiste Daroussin#line __oline__ "${as_me:-configure}" 76498e903e7SBaptiste Daroussinint main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; } 76598e903e7SBaptiste DaroussinEOF 76698e903e7SBaptiste Daroussinif test "$INTEL_COMPILER" = yes 76798e903e7SBaptiste Daroussinthen 76898e903e7SBaptiste Daroussin# The "-wdXXX" options suppress warnings: 76998e903e7SBaptiste Daroussin# remark #1419: external declaration in primary source file 77098e903e7SBaptiste Daroussin# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem) 77198e903e7SBaptiste Daroussin# remark #1684: conversion from pointer to same-sized integral type (potential portability problem) 77298e903e7SBaptiste Daroussin# remark #193: zero used for undefined preprocessing identifier 77398e903e7SBaptiste Daroussin# remark #593: variable "curs_sb_left_arrow" was set but never used 77498e903e7SBaptiste Daroussin# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits 77598e903e7SBaptiste Daroussin# remark #869: parameter "tw" was never referenced 77698e903e7SBaptiste Daroussin# remark #981: operands are evaluated in unspecified order 77798e903e7SBaptiste Daroussin# warning #279: controlling expression is constant 77898e903e7SBaptiste Daroussin 77998e903e7SBaptiste Daroussin AC_CHECKING([for $CC warning options]) 78098e903e7SBaptiste Daroussin cf_save_CFLAGS="$CFLAGS" 781*8e022d3cSDag-Erling Smørgrav EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" 78298e903e7SBaptiste Daroussin for cf_opt in \ 78398e903e7SBaptiste Daroussin wd1419 \ 78498e903e7SBaptiste Daroussin wd1683 \ 78598e903e7SBaptiste Daroussin wd1684 \ 78698e903e7SBaptiste Daroussin wd193 \ 78798e903e7SBaptiste Daroussin wd593 \ 78898e903e7SBaptiste Daroussin wd279 \ 78998e903e7SBaptiste Daroussin wd810 \ 79098e903e7SBaptiste Daroussin wd869 \ 79198e903e7SBaptiste Daroussin wd981 79298e903e7SBaptiste Daroussin do 79398e903e7SBaptiste Daroussin CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" 79498e903e7SBaptiste Daroussin if AC_TRY_EVAL(ac_compile); then 79598e903e7SBaptiste Daroussin test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) 79698e903e7SBaptiste Daroussin EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" 79798e903e7SBaptiste Daroussin fi 79898e903e7SBaptiste Daroussin done 79998e903e7SBaptiste Daroussin CFLAGS="$cf_save_CFLAGS" 800b53bb29fSJung-uk Kimelif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" 80198e903e7SBaptiste Daroussinthen 80298e903e7SBaptiste Daroussin AC_CHECKING([for $CC warning options]) 80398e903e7SBaptiste Daroussin cf_save_CFLAGS="$CFLAGS" 80498e903e7SBaptiste Daroussin cf_warn_CONST="" 80598e903e7SBaptiste Daroussin test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" 8064b4a8fcaSBaptiste Daroussin cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" 8074b4a8fcaSBaptiste Daroussin test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= 80898e903e7SBaptiste Daroussin for cf_opt in W Wall \ 80998e903e7SBaptiste Daroussin Wbad-function-cast \ 81098e903e7SBaptiste Daroussin Wcast-align \ 81198e903e7SBaptiste Daroussin Wcast-qual \ 8124b4a8fcaSBaptiste Daroussin Wdeclaration-after-statement \ 8134b4a8fcaSBaptiste Daroussin Wextra \ 81498e903e7SBaptiste Daroussin Winline \ 81598e903e7SBaptiste Daroussin Wmissing-declarations \ 81698e903e7SBaptiste Daroussin Wmissing-prototypes \ 81798e903e7SBaptiste Daroussin Wnested-externs \ 81898e903e7SBaptiste Daroussin Wpointer-arith \ 81998e903e7SBaptiste Daroussin Wshadow \ 82098e903e7SBaptiste Daroussin Wstrict-prototypes \ 821b53bb29fSJung-uk Kim Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1 82298e903e7SBaptiste Daroussin do 82398e903e7SBaptiste Daroussin CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" 82498e903e7SBaptiste Daroussin if AC_TRY_EVAL(ac_compile); then 82598e903e7SBaptiste Daroussin test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) 826*8e022d3cSDag-Erling Smørgrav case "$cf_opt" in 8270f86d14eSJung-uk Kim (Winline) 828*8e022d3cSDag-Erling Smørgrav case "$GCC_VERSION" in 8290f86d14eSJung-uk Kim ([[34]].*) 83098e903e7SBaptiste Daroussin CF_VERBOSE(feature is broken in gcc $GCC_VERSION) 83198e903e7SBaptiste Daroussin continue;; 83298e903e7SBaptiste Daroussin esac 83398e903e7SBaptiste Daroussin ;; 8340f86d14eSJung-uk Kim (Wpointer-arith) 835*8e022d3cSDag-Erling Smørgrav case "$GCC_VERSION" in 8360f86d14eSJung-uk Kim ([[12]].*) 8375b91e83fSBaptiste Daroussin CF_VERBOSE(feature is broken in gcc $GCC_VERSION) 8385b91e83fSBaptiste Daroussin continue;; 8395b91e83fSBaptiste Daroussin esac 8405b91e83fSBaptiste Daroussin ;; 84198e903e7SBaptiste Daroussin esac 84298e903e7SBaptiste Daroussin EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" 84398e903e7SBaptiste Daroussin fi 84498e903e7SBaptiste Daroussin done 84598e903e7SBaptiste Daroussin CFLAGS="$cf_save_CFLAGS" 84698e903e7SBaptiste Daroussinfi 847*8e022d3cSDag-Erling Smørgravrm -rf ./conftest* 84898e903e7SBaptiste Daroussin 84998e903e7SBaptiste DaroussinAC_SUBST(EXTRA_CFLAGS) 85098e903e7SBaptiste Daroussin])dnl 85198e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 852*8e022d3cSDag-Erling Smørgravdnl CF_GETOPT_HEADER version: 8 updated: 2021/06/19 19:16:16 853b53bb29fSJung-uk Kimdnl ---------------- 854b53bb29fSJung-uk Kimdnl Check for getopt's variables which are commonly defined in stdlib.h, 855b53bb29fSJung-uk Kimdnl unistd.h or (nonstandard) in getopt.h 856b53bb29fSJung-uk KimAC_DEFUN([CF_GETOPT_HEADER], 857b53bb29fSJung-uk Kim[ 858b53bb29fSJung-uk KimAC_HAVE_HEADERS(unistd.h getopt.h) 859b53bb29fSJung-uk KimAC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[ 860b53bb29fSJung-uk Kimcf_cv_getopt_header=none 861b53bb29fSJung-uk Kimfor cf_header in stdio.h stdlib.h unistd.h getopt.h 862b53bb29fSJung-uk Kimdo 863b53bb29fSJung-uk KimAC_TRY_COMPILE([ 864b53bb29fSJung-uk Kim#include <$cf_header>], 865*8e022d3cSDag-Erling Smørgrav[int x = optind; char *y = optarg; (void)x; (void)y], 866b53bb29fSJung-uk Kim[cf_cv_getopt_header=$cf_header 867b53bb29fSJung-uk Kim break]) 868b53bb29fSJung-uk Kimdone 869b53bb29fSJung-uk Kim]) 870*8e022d3cSDag-Erling Smørgravif test "$cf_cv_getopt_header" != none ; then 871b53bb29fSJung-uk Kim AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header]) 872b53bb29fSJung-uk Kimfi 873*8e022d3cSDag-Erling Smørgravif test "$cf_cv_getopt_header" = getopt.h ; then 874b53bb29fSJung-uk Kim AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h]) 875b53bb29fSJung-uk Kimfi 876b53bb29fSJung-uk Kim])dnl 877b53bb29fSJung-uk Kimdnl --------------------------------------------------------------------------- 878b53bb29fSJung-uk Kimdnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41 87998e903e7SBaptiste Daroussindnl ------------- 88098e903e7SBaptiste Daroussindnl Check if we must define _GNU_SOURCE to get a reasonable value for 88198e903e7SBaptiste Daroussindnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect 88298e903e7SBaptiste Daroussindnl (or misfeature) of glibc2, which breaks portability of many applications, 88398e903e7SBaptiste Daroussindnl since it is interwoven with GNU extensions. 88498e903e7SBaptiste Daroussindnl 88598e903e7SBaptiste Daroussindnl Well, yes we could work around it... 886b53bb29fSJung-uk Kimdnl 887b53bb29fSJung-uk Kimdnl Parameters: 888b53bb29fSJung-uk Kimdnl $1 is the nominal value for _XOPEN_SOURCE 88998e903e7SBaptiste DaroussinAC_DEFUN([CF_GNU_SOURCE], 89098e903e7SBaptiste Daroussin[ 891b53bb29fSJung-uk Kimcf_gnu_xopen_source=ifelse($1,,500,$1) 892b53bb29fSJung-uk Kim 893b53bb29fSJung-uk KimAC_CACHE_CHECK(if this is the GNU C library,cf_cv_gnu_library,[ 894b53bb29fSJung-uk KimAC_TRY_COMPILE([#include <sys/types.h>],[ 895b53bb29fSJung-uk Kim #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 896b53bb29fSJung-uk Kim return 0; 897b53bb29fSJung-uk Kim #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 898b53bb29fSJung-uk Kim return 0; 899b53bb29fSJung-uk Kim #else 900b53bb29fSJung-uk Kim # error not GNU C library 901b53bb29fSJung-uk Kim #endif], 902b53bb29fSJung-uk Kim [cf_cv_gnu_library=yes], 903b53bb29fSJung-uk Kim [cf_cv_gnu_library=no]) 904b53bb29fSJung-uk Kim]) 905b53bb29fSJung-uk Kim 906b53bb29fSJung-uk Kimif test x$cf_cv_gnu_library = xyes; then 907b53bb29fSJung-uk Kim 908b53bb29fSJung-uk Kim # With glibc 2.19 (13 years after this check was begun), _DEFAULT_SOURCE 909b53bb29fSJung-uk Kim # was changed to help a little. newlib incorporated the change about 4 910b53bb29fSJung-uk Kim # years later. 911b53bb29fSJung-uk Kim AC_CACHE_CHECK(if _DEFAULT_SOURCE can be used as a basis,cf_cv_gnu_library_219,[ 912b53bb29fSJung-uk Kim cf_save="$CPPFLAGS" 913b53bb29fSJung-uk Kim CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) 914b53bb29fSJung-uk Kim AC_TRY_COMPILE([#include <sys/types.h>],[ 915b53bb29fSJung-uk Kim #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 19) || (__GLIBC__ > 2) 916b53bb29fSJung-uk Kim return 0; 917b53bb29fSJung-uk Kim #elif (__NEWLIB__ == 2 && __NEWLIB_MINOR__ >= 4) || (__GLIBC__ > 3) 918b53bb29fSJung-uk Kim return 0; 919b53bb29fSJung-uk Kim #else 920b53bb29fSJung-uk Kim # error GNU C library __GLIBC__.__GLIBC_MINOR__ is too old 921b53bb29fSJung-uk Kim #endif], 922b53bb29fSJung-uk Kim [cf_cv_gnu_library_219=yes], 923b53bb29fSJung-uk Kim [cf_cv_gnu_library_219=no]) 924b53bb29fSJung-uk Kim CPPFLAGS="$cf_save" 925b53bb29fSJung-uk Kim ]) 926b53bb29fSJung-uk Kim 927b53bb29fSJung-uk Kim if test "x$cf_cv_gnu_library_219" = xyes; then 928b53bb29fSJung-uk Kim cf_save="$CPPFLAGS" 929b53bb29fSJung-uk Kim AC_CACHE_CHECK(if _XOPEN_SOURCE=$cf_gnu_xopen_source works with _DEFAULT_SOURCE,cf_cv_gnu_dftsrc_219,[ 930b53bb29fSJung-uk Kim CF_ADD_CFLAGS(-D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source) 931b53bb29fSJung-uk Kim AC_TRY_COMPILE([ 932b53bb29fSJung-uk Kim #include <limits.h> 933b53bb29fSJung-uk Kim #include <sys/types.h> 934b53bb29fSJung-uk Kim ],[ 935b53bb29fSJung-uk Kim #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) 936b53bb29fSJung-uk Kim return 0; 937b53bb29fSJung-uk Kim #else 938b53bb29fSJung-uk Kim # error GNU C library is too old 939b53bb29fSJung-uk Kim #endif], 940b53bb29fSJung-uk Kim [cf_cv_gnu_dftsrc_219=yes], 941b53bb29fSJung-uk Kim [cf_cv_gnu_dftsrc_219=no]) 942b53bb29fSJung-uk Kim ]) 943b53bb29fSJung-uk Kim test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" 944b53bb29fSJung-uk Kim else 945b53bb29fSJung-uk Kim cf_cv_gnu_dftsrc_219=maybe 946b53bb29fSJung-uk Kim fi 947b53bb29fSJung-uk Kim 948b53bb29fSJung-uk Kim if test "x$cf_cv_gnu_dftsrc_219" != xyes; then 949b53bb29fSJung-uk Kim 95098e903e7SBaptiste Daroussin AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[ 95198e903e7SBaptiste Daroussin AC_TRY_COMPILE([#include <sys/types.h>],[ 95298e903e7SBaptiste Daroussin #ifndef _XOPEN_SOURCE 953b53bb29fSJung-uk Kim #error expected _XOPEN_SOURCE to be defined 95498e903e7SBaptiste Daroussin #endif], 95598e903e7SBaptiste Daroussin [cf_cv_gnu_source=no], 95698e903e7SBaptiste Daroussin [cf_save="$CPPFLAGS" 957b53bb29fSJung-uk Kim CF_ADD_CFLAGS(-D_GNU_SOURCE) 95898e903e7SBaptiste Daroussin AC_TRY_COMPILE([#include <sys/types.h>],[ 95998e903e7SBaptiste Daroussin #ifdef _XOPEN_SOURCE 960b53bb29fSJung-uk Kim #error expected _XOPEN_SOURCE to be undefined 96198e903e7SBaptiste Daroussin #endif], 96298e903e7SBaptiste Daroussin [cf_cv_gnu_source=no], 96398e903e7SBaptiste Daroussin [cf_cv_gnu_source=yes]) 96498e903e7SBaptiste Daroussin CPPFLAGS="$cf_save" 96598e903e7SBaptiste Daroussin ]) 96698e903e7SBaptiste Daroussin ]) 9672aca18c7SJung-uk Kim 9682aca18c7SJung-uk Kim if test "$cf_cv_gnu_source" = yes 9692aca18c7SJung-uk Kim then 9702aca18c7SJung-uk Kim AC_CACHE_CHECK(if we should also define _DEFAULT_SOURCE,cf_cv_default_source,[ 971b53bb29fSJung-uk Kim CF_APPEND_TEXT(CPPFLAGS,-D_GNU_SOURCE) 9722aca18c7SJung-uk Kim AC_TRY_COMPILE([#include <sys/types.h>],[ 9732aca18c7SJung-uk Kim #ifdef _DEFAULT_SOURCE 974b53bb29fSJung-uk Kim #error expected _DEFAULT_SOURCE to be undefined 9752aca18c7SJung-uk Kim #endif], 9762aca18c7SJung-uk Kim [cf_cv_default_source=no], 9772aca18c7SJung-uk Kim [cf_cv_default_source=yes]) 9782aca18c7SJung-uk Kim ]) 979b53bb29fSJung-uk Kim if test "$cf_cv_default_source" = yes 980b53bb29fSJung-uk Kim then 981b53bb29fSJung-uk Kim CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) 982b53bb29fSJung-uk Kim fi 983b53bb29fSJung-uk Kim fi 984b53bb29fSJung-uk Kim fi 985b53bb29fSJung-uk Kim 9862aca18c7SJung-uk Kimfi 98798e903e7SBaptiste Daroussin])dnl 98898e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 989*8e022d3cSDag-Erling Smørgravdnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59 99098e903e7SBaptiste Daroussindnl ----------------- 99198e903e7SBaptiste Daroussindnl Check if the given compiler is really the Intel compiler for Linux. It 99298e903e7SBaptiste Daroussindnl tries to imitate gcc, but does not return an error when it finds a mismatch 99398e903e7SBaptiste Daroussindnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. 99498e903e7SBaptiste Daroussindnl 99598e903e7SBaptiste Daroussindnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to 99698e903e7SBaptiste Daroussindnl ensure that it is not mistaken for gcc/g++. It is normally invoked from 99798e903e7SBaptiste Daroussindnl the wrappers for gcc and g++ warnings. 99898e903e7SBaptiste Daroussindnl 99998e903e7SBaptiste Daroussindnl $1 = GCC (default) or GXX 100098e903e7SBaptiste Daroussindnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS 100198e903e7SBaptiste Daroussindnl $3 = CFLAGS (default) or CXXFLAGS 100298e903e7SBaptiste DaroussinAC_DEFUN([CF_INTEL_COMPILER],[ 10035b91e83fSBaptiste DaroussinAC_REQUIRE([AC_CANONICAL_HOST]) 100498e903e7SBaptiste Daroussinifelse([$2],,INTEL_COMPILER,[$2])=no 100598e903e7SBaptiste Daroussin 100698e903e7SBaptiste Daroussinif test "$ifelse([$1],,[$1],GCC)" = yes ; then 1007*8e022d3cSDag-Erling Smørgrav case "$host_os" in 10080f86d14eSJung-uk Kim (linux*|gnu*) 100998e903e7SBaptiste Daroussin AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler) 101098e903e7SBaptiste Daroussin cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" 101198e903e7SBaptiste Daroussin ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc" 101298e903e7SBaptiste Daroussin AC_TRY_COMPILE([],[ 101398e903e7SBaptiste Daroussin#ifdef __INTEL_COMPILER 101498e903e7SBaptiste Daroussin#else 101598e903e7SBaptiste Daroussinmake an error 101698e903e7SBaptiste Daroussin#endif 101798e903e7SBaptiste Daroussin],[ifelse([$2],,INTEL_COMPILER,[$2])=yes 10180c8de5b0SBaptiste Daroussincf_save_CFLAGS="$cf_save_CFLAGS -we147" 101998e903e7SBaptiste Daroussin],[]) 102098e903e7SBaptiste Daroussin ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" 102198e903e7SBaptiste Daroussin AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) 102298e903e7SBaptiste Daroussin ;; 102398e903e7SBaptiste Daroussin esac 102498e903e7SBaptiste Daroussinfi 102598e903e7SBaptiste Daroussin])dnl 102698e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 1027*8e022d3cSDag-Erling Smørgravdnl CF_MAKE_DOCS version: 5 updated: 2021/01/10 16:05:11 10284b4a8fcaSBaptiste Daroussindnl ------------ 10294b4a8fcaSBaptiste Daroussindnl $1 = name(s) to generate rules for 10304b4a8fcaSBaptiste Daroussindnl $2 = suffix of corresponding manpages used as input. 10310f86d14eSJung-uk Kimdnl 10320f86d14eSJung-uk Kimdnl This works best if called at the end of configure.in, following CF_WITH_MAN2HTML 10334b4a8fcaSBaptiste Daroussindefine([CF_MAKE_DOCS],[ 10344b4a8fcaSBaptiste Daroussintest -z "$cf_make_docs" && cf_make_docs=0 10354b4a8fcaSBaptiste Daroussin 10364b4a8fcaSBaptiste Daroussincf_output=makefile 10374b4a8fcaSBaptiste Daroussintest -f "$cf_output" || cf_output=Makefile 10384b4a8fcaSBaptiste Daroussin 10394b4a8fcaSBaptiste Daroussinif test "$cf_make_docs" = 0 10404b4a8fcaSBaptiste Daroussinthen 10410f86d14eSJung-uk Kimcat >>$cf_output <<CF_EOF 10424b4a8fcaSBaptiste Daroussin################################################################################ 10430f86d14eSJung-uk Kim## generated by $0 10444b4a8fcaSBaptiste Daroussin.SUFFIXES : .html .$2 .man .ps .pdf .txt 10454b4a8fcaSBaptiste Daroussin 10460f86d14eSJung-uk Kim${NROFF_NOTE}.$2.txt : 10470f86d14eSJung-uk Kim${NROFF_NOTE} [\$](SHELL) -c "tbl [\$]*.$2 | nroff -man | col -bx" >[\$]@ 10484b4a8fcaSBaptiste Daroussin 10490f86d14eSJung-uk Kim${GROFF_NOTE}.ps.pdf : 10500f86d14eSJung-uk Kim${GROFF_NOTE} ps2pdf [\$]*.ps 10510f86d14eSJung-uk Kim${GROFF_NOTE} 10520f86d14eSJung-uk Kim${GROFF_NOTE}.$2.ps : 10530f86d14eSJung-uk Kim${GROFF_NOTE} [\$](SHELL) -c "tbl [\$]*.$2 | groff -man" >[\$]@ 10540f86d14eSJung-uk Kim${GROFF_NOTE} 10550f86d14eSJung-uk Kim${GROFF_NOTE}.$2.txt : 1056*8e022d3cSDag-Erling Smørgrav${GROFF_NOTE} GROFF_NO_SGR=stupid [\$](SHELL) -c "tbl [\$]*.$2 | nroff -rHY=0 -Tascii -man | col -bx" >[\$]@ 10574b4a8fcaSBaptiste Daroussin 10580f86d14eSJung-uk Kim${MAN2HTML_NOTE}.$2.html : 10590f86d14eSJung-uk Kim${MAN2HTML_NOTE} ./${MAN2HTML_TEMP} [\$]* $2 man >[\$]@ 10604b4a8fcaSBaptiste Daroussin 10614b4a8fcaSBaptiste DaroussinCF_EOF 10624b4a8fcaSBaptiste Daroussin cf_make_docs=1 10634b4a8fcaSBaptiste Daroussinfi 10644b4a8fcaSBaptiste Daroussin 10654b4a8fcaSBaptiste Daroussinfor cf_name in $1 10664b4a8fcaSBaptiste Daroussindo 10674b4a8fcaSBaptiste Daroussincat >>$cf_output <<CF_EOF 10684b4a8fcaSBaptiste Daroussin################################################################################ 10690f86d14eSJung-uk Kim${NROFF_NOTE}docs docs-$cf_name :: $cf_name.txt 10700f86d14eSJung-uk Kim${MAN2HTML_NOTE}docs docs-$cf_name :: $cf_name.html 10710f86d14eSJung-uk Kim${GROFF_NOTE}docs docs-$cf_name :: $cf_name.pdf 10720f86d14eSJung-uk Kim${GROFF_NOTE}docs docs-$cf_name :: $cf_name.ps 10730f86d14eSJung-uk Kim${GROFF_NOTE}docs docs-$cf_name :: $cf_name.txt 10744b4a8fcaSBaptiste Daroussin 10754b4a8fcaSBaptiste Daroussinclean \\ 10764b4a8fcaSBaptiste Daroussindocs-clean :: 10770f86d14eSJung-uk Kim${NROFF_NOTE} rm -f $cf_name.txt 10780f86d14eSJung-uk Kim${MAN2HTML_NOTE} rm -f $cf_name.html 10790f86d14eSJung-uk Kim${GROFF_NOTE} rm -f $cf_name.pdf 10800f86d14eSJung-uk Kim${GROFF_NOTE} rm -f $cf_name.ps 10810f86d14eSJung-uk Kim${GROFF_NOTE} rm -f $cf_name.txt 10824b4a8fcaSBaptiste Daroussin 10830f86d14eSJung-uk Kim${NROFF_NOTE}$cf_name.txt : $cf_name.$2 10840f86d14eSJung-uk Kim${MAN2HTML_NOTE}$cf_name.html : $cf_name.$2 10850f86d14eSJung-uk Kim${GROFF_NOTE}$cf_name.pdf : $cf_name.ps 10860f86d14eSJung-uk Kim${GROFF_NOTE}$cf_name.ps : $cf_name.$2 10870f86d14eSJung-uk Kim${GROFF_NOTE}$cf_name.txt : $cf_name.$2 10884b4a8fcaSBaptiste DaroussinCF_EOF 10894b4a8fcaSBaptiste Daroussindone 10904b4a8fcaSBaptiste Daroussin])dnl 10914b4a8fcaSBaptiste Daroussindnl --------------------------------------------------------------------------- 109298e903e7SBaptiste Daroussindnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 109398e903e7SBaptiste Daroussindnl ------------ 109498e903e7SBaptiste Daroussindnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have 109598e903e7SBaptiste Daroussindnl a monocase filesystem. 109698e903e7SBaptiste DaroussinAC_DEFUN([CF_MAKE_TAGS],[ 109798e903e7SBaptiste DaroussinAC_REQUIRE([CF_MIXEDCASE_FILENAMES]) 109898e903e7SBaptiste Daroussin 109998e903e7SBaptiste DaroussinAC_CHECK_PROGS(CTAGS, exctags ctags) 110098e903e7SBaptiste DaroussinAC_CHECK_PROGS(ETAGS, exetags etags) 110198e903e7SBaptiste Daroussin 110298e903e7SBaptiste DaroussinAC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) 110398e903e7SBaptiste Daroussin 110498e903e7SBaptiste Daroussinif test "$cf_cv_mixedcase" = yes ; then 110598e903e7SBaptiste Daroussin AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) 110698e903e7SBaptiste Daroussinelse 110798e903e7SBaptiste Daroussin MAKE_UPPER_TAGS=no 110898e903e7SBaptiste Daroussinfi 110998e903e7SBaptiste Daroussin 111098e903e7SBaptiste Daroussinif test "$MAKE_UPPER_TAGS" = yes ; then 111198e903e7SBaptiste Daroussin MAKE_UPPER_TAGS= 111298e903e7SBaptiste Daroussinelse 111398e903e7SBaptiste Daroussin MAKE_UPPER_TAGS="#" 111498e903e7SBaptiste Daroussinfi 111598e903e7SBaptiste Daroussin 111698e903e7SBaptiste Daroussinif test "$MAKE_LOWER_TAGS" = yes ; then 111798e903e7SBaptiste Daroussin MAKE_LOWER_TAGS= 111898e903e7SBaptiste Daroussinelse 111998e903e7SBaptiste Daroussin MAKE_LOWER_TAGS="#" 112098e903e7SBaptiste Daroussinfi 112198e903e7SBaptiste Daroussin 112298e903e7SBaptiste DaroussinAC_SUBST(CTAGS) 112398e903e7SBaptiste DaroussinAC_SUBST(ETAGS) 112498e903e7SBaptiste Daroussin 112598e903e7SBaptiste DaroussinAC_SUBST(MAKE_UPPER_TAGS) 112698e903e7SBaptiste DaroussinAC_SUBST(MAKE_LOWER_TAGS) 112798e903e7SBaptiste Daroussin])dnl 112898e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 1129*8e022d3cSDag-Erling Smørgravdnl CF_MIXEDCASE_FILENAMES version: 9 updated: 2021/01/01 16:53:59 113098e903e7SBaptiste Daroussindnl ---------------------- 113198e903e7SBaptiste Daroussindnl Check if the file-system supports mixed-case filenames. If we're able to 113298e903e7SBaptiste Daroussindnl create a lowercase name and see it as uppercase, it doesn't support that. 113398e903e7SBaptiste DaroussinAC_DEFUN([CF_MIXEDCASE_FILENAMES], 113498e903e7SBaptiste Daroussin[ 113598e903e7SBaptiste DaroussinAC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ 113698e903e7SBaptiste Daroussinif test "$cross_compiling" = yes ; then 1137*8e022d3cSDag-Erling Smørgrav case "$target_alias" in 1138*8e022d3cSDag-Erling Smørgrav (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) 113998e903e7SBaptiste Daroussin cf_cv_mixedcase=no 114098e903e7SBaptiste Daroussin ;; 11410f86d14eSJung-uk Kim (*) 114298e903e7SBaptiste Daroussin cf_cv_mixedcase=yes 114398e903e7SBaptiste Daroussin ;; 114498e903e7SBaptiste Daroussin esac 114598e903e7SBaptiste Daroussinelse 114698e903e7SBaptiste Daroussin rm -f conftest CONFTEST 114798e903e7SBaptiste Daroussin echo test >conftest 114898e903e7SBaptiste Daroussin if test -f CONFTEST ; then 114998e903e7SBaptiste Daroussin cf_cv_mixedcase=no 115098e903e7SBaptiste Daroussin else 115198e903e7SBaptiste Daroussin cf_cv_mixedcase=yes 115298e903e7SBaptiste Daroussin fi 115398e903e7SBaptiste Daroussin rm -f conftest CONFTEST 115498e903e7SBaptiste Daroussinfi 115598e903e7SBaptiste Daroussin]) 11565b91e83fSBaptiste Daroussintest "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.]) 115798e903e7SBaptiste Daroussin])dnl 115898e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 1159*8e022d3cSDag-Erling Smørgravdnl CF_MKSTEMP version: 12 updated: 2023/01/05 17:53:11 116098e903e7SBaptiste Daroussindnl ---------- 116198e903e7SBaptiste Daroussindnl Check for a working mkstemp. This creates two files, checks that they are 116298e903e7SBaptiste Daroussindnl successfully created and distinct (AmigaOS apparently fails on the last). 116398e903e7SBaptiste DaroussinAC_DEFUN([CF_MKSTEMP],[ 11643e794565SJung-uk KimAC_CHECK_HEADERS( \ 11653e794565SJung-uk Kimunistd.h \ 11663e794565SJung-uk Kim) 116798e903e7SBaptiste DaroussinAC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[ 1168*8e022d3cSDag-Erling Smørgravrm -rf ./conftest* 116998e903e7SBaptiste DaroussinAC_TRY_RUN([ 1170*8e022d3cSDag-Erling Smørgrav$ac_includes_default 1171*8e022d3cSDag-Erling Smørgrav 11723e794565SJung-uk Kimint main(void) 117398e903e7SBaptiste Daroussin{ 117498e903e7SBaptiste Daroussin char *tmpl = "conftestXXXXXX"; 117598e903e7SBaptiste Daroussin char name[2][80]; 117698e903e7SBaptiste Daroussin int n; 117798e903e7SBaptiste Daroussin int result = 0; 117898e903e7SBaptiste Daroussin int fd; 117998e903e7SBaptiste Daroussin struct stat sb; 118098e903e7SBaptiste Daroussin 118198e903e7SBaptiste Daroussin umask(077); 118298e903e7SBaptiste Daroussin for (n = 0; n < 2; ++n) { 118398e903e7SBaptiste Daroussin strcpy(name[n], tmpl); 118498e903e7SBaptiste Daroussin if ((fd = mkstemp(name[n])) >= 0) { 118598e903e7SBaptiste Daroussin if (!strcmp(name[n], tmpl) 118698e903e7SBaptiste Daroussin || stat(name[n], &sb) != 0 118798e903e7SBaptiste Daroussin || (sb.st_mode & S_IFMT) != S_IFREG 118898e903e7SBaptiste Daroussin || (sb.st_mode & 077) != 0) { 118998e903e7SBaptiste Daroussin result = 1; 119098e903e7SBaptiste Daroussin } 119198e903e7SBaptiste Daroussin close(fd); 119298e903e7SBaptiste Daroussin } 119398e903e7SBaptiste Daroussin } 119498e903e7SBaptiste Daroussin if (result == 0 119598e903e7SBaptiste Daroussin && !strcmp(name[0], name[1])) 119698e903e7SBaptiste Daroussin result = 1; 119798e903e7SBaptiste Daroussin ${cf_cv_main_return:-return}(result); 119898e903e7SBaptiste Daroussin} 119998e903e7SBaptiste Daroussin],[cf_cv_func_mkstemp=yes 120098e903e7SBaptiste Daroussin],[cf_cv_func_mkstemp=no 12015b91e83fSBaptiste Daroussin],[cf_cv_func_mkstemp=maybe]) 120298e903e7SBaptiste Daroussin]) 12035b91e83fSBaptiste Daroussinif test "x$cf_cv_func_mkstemp" = xmaybe ; then 12045b91e83fSBaptiste Daroussin AC_CHECK_FUNC(mkstemp) 12055b91e83fSBaptiste Daroussinfi 120698e903e7SBaptiste Daroussinif test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then 12075b91e83fSBaptiste Daroussin AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.]) 120898e903e7SBaptiste Daroussinfi 120998e903e7SBaptiste Daroussin])dnl 121098e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 121198e903e7SBaptiste Daroussindnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 121298e903e7SBaptiste Daroussindnl ---------- 121398e903e7SBaptiste Daroussindnl Write a debug message to config.log, along with the line number in the 121498e903e7SBaptiste Daroussindnl configure script. 121598e903e7SBaptiste DaroussinAC_DEFUN([CF_MSG_LOG],[ 121698e903e7SBaptiste Daroussinecho "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC 121798e903e7SBaptiste Daroussin])dnl 121898e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 1219*8e022d3cSDag-Erling Smørgravdnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41 122098e903e7SBaptiste Daroussindnl ------------------ 122198e903e7SBaptiste Daroussindnl see CF_WITH_NO_LEAKS 1222*8e022d3cSDag-Erling Smørgravdnl 1223*8e022d3cSDag-Erling Smørgravdnl $1 = option/name 1224*8e022d3cSDag-Erling Smørgravdnl $2 = help-text 1225*8e022d3cSDag-Erling Smørgravdnl $3 = symbol to define if the option is set 1226*8e022d3cSDag-Erling Smørgravdnl $4 = additional actions to take if the option is set 122798e903e7SBaptiste DaroussinAC_DEFUN([CF_NO_LEAKS_OPTION],[ 122898e903e7SBaptiste DaroussinAC_MSG_CHECKING(if you want to use $1 for testing) 122998e903e7SBaptiste DaroussinAC_ARG_WITH($1, 123098e903e7SBaptiste Daroussin [$2], 1231*8e022d3cSDag-Erling Smørgrav [case "x$withval" in 1232*8e022d3cSDag-Erling Smørgrav (x|xno) ;; 1233*8e022d3cSDag-Erling Smørgrav (*) 1234*8e022d3cSDag-Erling Smørgrav : "${with_cflags:=-g}" 1235*8e022d3cSDag-Erling Smørgrav : "${enable_leaks:=no}" 1236*8e022d3cSDag-Erling Smørgrav with_$1=yes 1237*8e022d3cSDag-Erling Smørgrav AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[ 123898e903e7SBaptiste Daroussin $4 123998e903e7SBaptiste Daroussin]) 1240*8e022d3cSDag-Erling Smørgrav ;; 1241*8e022d3cSDag-Erling Smørgrav esac], 124298e903e7SBaptiste Daroussin [with_$1=]) 124398e903e7SBaptiste DaroussinAC_MSG_RESULT(${with_$1:-no}) 124498e903e7SBaptiste Daroussin 1245*8e022d3cSDag-Erling Smørgravcase ".$with_cflags" in 12460f86d14eSJung-uk Kim(.*-g*) 12470f86d14eSJung-uk Kim case .$CFLAGS in 12480f86d14eSJung-uk Kim (.*-g*) 124998e903e7SBaptiste Daroussin ;; 12500f86d14eSJung-uk Kim (*) 125198e903e7SBaptiste Daroussin CF_ADD_CFLAGS([-g]) 125298e903e7SBaptiste Daroussin ;; 125398e903e7SBaptiste Daroussin esac 125498e903e7SBaptiste Daroussin ;; 125598e903e7SBaptiste Daroussinesac 125698e903e7SBaptiste Daroussin])dnl 125798e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 1258*8e022d3cSDag-Erling Smørgravdnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20 12590f86d14eSJung-uk Kimdnl -------------- 12600f86d14eSJung-uk Kimdnl Check the argument to see that it looks like a pathname. Rewrite it if it 12610f86d14eSJung-uk Kimdnl begins with one of the prefix/exec_prefix variables, and then again if the 12620f86d14eSJung-uk Kimdnl result begins with 'NONE'. This is necessary to work around autoconf's 12630f86d14eSJung-uk Kimdnl delayed evaluation of those symbols. 12640f86d14eSJung-uk KimAC_DEFUN([CF_PATH_SYNTAX],[ 12650f86d14eSJung-uk Kimif test "x$prefix" != xNONE; then 12660f86d14eSJung-uk Kim cf_path_syntax="$prefix" 12670f86d14eSJung-uk Kimelse 12680f86d14eSJung-uk Kim cf_path_syntax="$ac_default_prefix" 12690f86d14eSJung-uk Kimfi 12700f86d14eSJung-uk Kim 12710f86d14eSJung-uk Kimcase ".[$]$1" in 12720f86d14eSJung-uk Kim(.\[$]\(*\)*|.\'*\'*) 12730f86d14eSJung-uk Kim ;; 12740f86d14eSJung-uk Kim(..|./*|.\\*) 12750f86d14eSJung-uk Kim ;; 12760f86d14eSJung-uk Kim(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX 12770f86d14eSJung-uk Kim ;; 1278*8e022d3cSDag-Erling Smørgrav(.\[$]\{*prefix\}*|.\[$]\{*dir\}*) 12790f86d14eSJung-uk Kim eval $1="[$]$1" 12800f86d14eSJung-uk Kim case ".[$]$1" in 12810f86d14eSJung-uk Kim (.NONE/*) 1282*8e022d3cSDag-Erling Smørgrav $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` 12830f86d14eSJung-uk Kim ;; 12840f86d14eSJung-uk Kim esac 12850f86d14eSJung-uk Kim ;; 12860f86d14eSJung-uk Kim(.no|.NONE/*) 1287*8e022d3cSDag-Erling Smørgrav $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` 12880f86d14eSJung-uk Kim ;; 12890f86d14eSJung-uk Kim(*) 12900f86d14eSJung-uk Kim ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) 12910f86d14eSJung-uk Kim ;; 12920f86d14eSJung-uk Kimesac 12930f86d14eSJung-uk Kim])dnl 12940f86d14eSJung-uk Kimdnl --------------------------------------------------------------------------- 1295b53bb29fSJung-uk Kimdnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17 129698e903e7SBaptiste Daroussindnl ----------------- 129798e903e7SBaptiste Daroussindnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. 129898e903e7SBaptiste Daroussindnl 129998e903e7SBaptiste Daroussindnl POSIX.1-1990 _POSIX_SOURCE 130098e903e7SBaptiste Daroussindnl POSIX.1-1990 and _POSIX_SOURCE and 130198e903e7SBaptiste Daroussindnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 130298e903e7SBaptiste Daroussindnl Bindings Option 130398e903e7SBaptiste Daroussindnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L 130498e903e7SBaptiste Daroussindnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L 130598e903e7SBaptiste Daroussindnl X/Open 2000 _POSIX_C_SOURCE=200112L 130698e903e7SBaptiste Daroussindnl 130798e903e7SBaptiste Daroussindnl Parameters: 130898e903e7SBaptiste Daroussindnl $1 is the nominal value for _POSIX_C_SOURCE 130998e903e7SBaptiste DaroussinAC_DEFUN([CF_POSIX_C_SOURCE], 1310b53bb29fSJung-uk Kim[AC_REQUIRE([CF_POSIX_VISIBLE])dnl 1311b53bb29fSJung-uk Kim 1312b53bb29fSJung-uk Kimif test "$cf_cv_posix_visible" = no; then 1313b53bb29fSJung-uk Kim 131498e903e7SBaptiste Daroussincf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) 131598e903e7SBaptiste Daroussin 131698e903e7SBaptiste Daroussincf_save_CFLAGS="$CFLAGS" 131798e903e7SBaptiste Daroussincf_save_CPPFLAGS="$CPPFLAGS" 131898e903e7SBaptiste Daroussin 131998e903e7SBaptiste DaroussinCF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) 132098e903e7SBaptiste DaroussinCF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE) 132198e903e7SBaptiste Daroussin 132298e903e7SBaptiste DaroussinAC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ 132398e903e7SBaptiste Daroussin CF_MSG_LOG(if the symbol is already defined go no further) 132498e903e7SBaptiste Daroussin AC_TRY_COMPILE([#include <sys/types.h>],[ 132598e903e7SBaptiste Daroussin#ifndef _POSIX_C_SOURCE 132698e903e7SBaptiste Daroussinmake an error 132798e903e7SBaptiste Daroussin#endif], 132898e903e7SBaptiste Daroussin [cf_cv_posix_c_source=no], 132998e903e7SBaptiste Daroussin [cf_want_posix_source=no 13300f86d14eSJung-uk Kim case .$cf_POSIX_C_SOURCE in 13310f86d14eSJung-uk Kim (.[[12]]??*) 133298e903e7SBaptiste Daroussin cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 133398e903e7SBaptiste Daroussin ;; 13340f86d14eSJung-uk Kim (.2) 133598e903e7SBaptiste Daroussin cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" 133698e903e7SBaptiste Daroussin cf_want_posix_source=yes 133798e903e7SBaptiste Daroussin ;; 13380f86d14eSJung-uk Kim (.*) 133998e903e7SBaptiste Daroussin cf_want_posix_source=yes 134098e903e7SBaptiste Daroussin ;; 134198e903e7SBaptiste Daroussin esac 134298e903e7SBaptiste Daroussin if test "$cf_want_posix_source" = yes ; then 134398e903e7SBaptiste Daroussin AC_TRY_COMPILE([#include <sys/types.h>],[ 134498e903e7SBaptiste Daroussin#ifdef _POSIX_SOURCE 134598e903e7SBaptiste Daroussinmake an error 134698e903e7SBaptiste Daroussin#endif],[], 134798e903e7SBaptiste Daroussin cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE") 134898e903e7SBaptiste Daroussin fi 134998e903e7SBaptiste Daroussin CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE) 135098e903e7SBaptiste Daroussin CFLAGS="$cf_trim_CFLAGS" 1351b53bb29fSJung-uk Kim CPPFLAGS="$cf_trim_CPPFLAGS" 1352b53bb29fSJung-uk Kim CF_APPEND_TEXT(CPPFLAGS,$cf_cv_posix_c_source) 135398e903e7SBaptiste Daroussin CF_MSG_LOG(if the second compile does not leave our definition intact error) 135498e903e7SBaptiste Daroussin AC_TRY_COMPILE([#include <sys/types.h>],[ 135598e903e7SBaptiste Daroussin#ifndef _POSIX_C_SOURCE 135698e903e7SBaptiste Daroussinmake an error 135798e903e7SBaptiste Daroussin#endif],, 135898e903e7SBaptiste Daroussin [cf_cv_posix_c_source=no]) 135998e903e7SBaptiste Daroussin CFLAGS="$cf_save_CFLAGS" 136098e903e7SBaptiste Daroussin CPPFLAGS="$cf_save_CPPFLAGS" 136198e903e7SBaptiste Daroussin ]) 136298e903e7SBaptiste Daroussin]) 136398e903e7SBaptiste Daroussin 136498e903e7SBaptiste Daroussinif test "$cf_cv_posix_c_source" != no ; then 136598e903e7SBaptiste Daroussin CFLAGS="$cf_trim_CFLAGS" 136698e903e7SBaptiste Daroussin CPPFLAGS="$cf_trim_CPPFLAGS" 136798e903e7SBaptiste Daroussin CF_ADD_CFLAGS($cf_cv_posix_c_source) 136898e903e7SBaptiste Daroussinfi 136998e903e7SBaptiste Daroussin 1370b53bb29fSJung-uk Kimfi # cf_cv_posix_visible 1371b53bb29fSJung-uk Kim 1372b53bb29fSJung-uk Kim])dnl 1373b53bb29fSJung-uk Kimdnl --------------------------------------------------------------------------- 1374b53bb29fSJung-uk Kimdnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17 1375b53bb29fSJung-uk Kimdnl ---------------- 1376b53bb29fSJung-uk Kimdnl POSIX documents test-macros which an application may set before any system 1377b53bb29fSJung-uk Kimdnl headers are included to make features available. 1378b53bb29fSJung-uk Kimdnl 1379b53bb29fSJung-uk Kimdnl Some BSD platforms (originally FreeBSD, but copied by a few others) 1380b53bb29fSJung-uk Kimdnl diverged from POSIX in 2002 by setting symbols which make all of the most 1381b53bb29fSJung-uk Kimdnl recent features visible in the system header files unless the application 1382b53bb29fSJung-uk Kimdnl overrides the corresponding test-macros. Doing that introduces portability 1383b53bb29fSJung-uk Kimdnl problems. 1384b53bb29fSJung-uk Kimdnl 1385b53bb29fSJung-uk Kimdnl This macro makes a special check for the symbols used for this, to avoid a 1386b53bb29fSJung-uk Kimdnl conflicting definition. 1387b53bb29fSJung-uk KimAC_DEFUN([CF_POSIX_VISIBLE], 1388b53bb29fSJung-uk Kim[ 1389b53bb29fSJung-uk KimAC_CACHE_CHECK(if the POSIX test-macros are already defined,cf_cv_posix_visible,[ 1390b53bb29fSJung-uk KimAC_TRY_COMPILE([#include <stdio.h>],[ 1391b53bb29fSJung-uk Kim#if defined(__POSIX_VISIBLE) && ((__POSIX_VISIBLE - 0L) > 0) \ 1392b53bb29fSJung-uk Kim && defined(__XSI_VISIBLE) && ((__XSI_VISIBLE - 0L) > 0) \ 1393b53bb29fSJung-uk Kim && defined(__BSD_VISIBLE) && ((__BSD_VISIBLE - 0L) > 0) \ 1394b53bb29fSJung-uk Kim && defined(__ISO_C_VISIBLE) && ((__ISO_C_VISIBLE - 0L) > 0) 1395b53bb29fSJung-uk Kim#error conflicting symbols found 1396b53bb29fSJung-uk Kim#endif 1397b53bb29fSJung-uk Kim],[cf_cv_posix_visible=no],[cf_cv_posix_visible=yes]) 1398b53bb29fSJung-uk Kim]) 139998e903e7SBaptiste Daroussin])dnl 140098e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 14010c8de5b0SBaptiste Daroussindnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59 14020c8de5b0SBaptiste Daroussindnl ----------- 14030c8de5b0SBaptiste Daroussindnl Check for awk, ensure that the check found something. 14040c8de5b0SBaptiste DaroussinAC_DEFUN([CF_PROG_AWK], 14050c8de5b0SBaptiste Daroussin[ 14060c8de5b0SBaptiste DaroussinAC_PROG_AWK 14070c8de5b0SBaptiste Daroussintest -z "$AWK" && AC_MSG_ERROR(No awk program found) 14080c8de5b0SBaptiste Daroussin])dnl 14090c8de5b0SBaptiste Daroussindnl --------------------------------------------------------------------------- 1410b53bb29fSJung-uk Kimdnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54 14115b91e83fSBaptiste Daroussindnl ---------- 14125b91e83fSBaptiste Daroussindnl standard check for CC, plus followup sanity checks 14135b91e83fSBaptiste Daroussindnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name 14145b91e83fSBaptiste DaroussinAC_DEFUN([CF_PROG_CC],[ 1415b53bb29fSJung-uk KimCF_ACVERSION_CHECK(2.53, 1416b53bb29fSJung-uk Kim [AC_MSG_WARN(this will incorrectly handle gnatgcc choice) 1417b53bb29fSJung-uk Kim AC_REQUIRE([AC_PROG_CC])], 1418b53bb29fSJung-uk Kim []) 14195b91e83fSBaptiste Daroussinifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)]) 14205b91e83fSBaptiste DaroussinCF_GCC_VERSION 14215b91e83fSBaptiste DaroussinCF_ACVERSION_CHECK(2.52, 14225b91e83fSBaptiste Daroussin [AC_PROG_CC_STDC], 14235b91e83fSBaptiste Daroussin [CF_ANSI_CC_REQD]) 14245b91e83fSBaptiste DaroussinCF_CC_ENV_FLAGS 142598e903e7SBaptiste Daroussin])dnl 142698e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 1427b53bb29fSJung-uk Kimdnl CF_PROG_GROFF version: 3 updated: 2018/01/07 13:16:19 14280f86d14eSJung-uk Kimdnl ------------- 14290f86d14eSJung-uk Kimdnl Check if groff is available, for cases (such as html output) where nroff 14300f86d14eSJung-uk Kimdnl is not enough. 14310f86d14eSJung-uk KimAC_DEFUN([CF_PROG_GROFF],[ 14320f86d14eSJung-uk KimAC_PATH_PROG(GROFF_PATH,groff,no) 1433b53bb29fSJung-uk KimAC_PATH_PROGS(NROFF_PATH,nroff mandoc,no) 1434b53bb29fSJung-uk KimAC_PATH_PROG(TBL_PATH,tbl,cat) 14350f86d14eSJung-uk Kimif test "x$GROFF_PATH" = xno 14360f86d14eSJung-uk Kimthen 14370f86d14eSJung-uk Kim NROFF_NOTE= 14380f86d14eSJung-uk Kim GROFF_NOTE="#" 14390f86d14eSJung-uk Kimelse 14400f86d14eSJung-uk Kim NROFF_NOTE="#" 14410f86d14eSJung-uk Kim GROFF_NOTE= 14420f86d14eSJung-uk Kimfi 14430f86d14eSJung-uk KimAC_SUBST(GROFF_NOTE) 14440f86d14eSJung-uk KimAC_SUBST(NROFF_NOTE) 14450f86d14eSJung-uk Kim])dnl 14460f86d14eSJung-uk Kimdnl --------------------------------------------------------------------------- 1447*8e022d3cSDag-Erling Smørgravdnl CF_PROG_LINT version: 5 updated: 2022/08/20 15:44:13 144898e903e7SBaptiste Daroussindnl ------------ 144998e903e7SBaptiste DaroussinAC_DEFUN([CF_PROG_LINT], 145098e903e7SBaptiste Daroussin[ 1451c5b5d71aSJung-uk KimAC_CHECK_PROGS(LINT, lint cppcheck splint) 1452b53bb29fSJung-uk Kimcase "x$LINT" in 1453b53bb29fSJung-uk Kim(xcppcheck|x*/cppcheck) 1454b53bb29fSJung-uk Kim test -z "$LINT_OPTS" && LINT_OPTS="--enable=all" 1455b53bb29fSJung-uk Kim ;; 1456b53bb29fSJung-uk Kimesac 145798e903e7SBaptiste DaroussinAC_SUBST(LINT_OPTS) 1458*8e022d3cSDag-Erling SmørgravAC_SUBST(LINT_LIBS) 1459*8e022d3cSDag-Erling Smørgrav])dnl 1460*8e022d3cSDag-Erling Smørgravdnl --------------------------------------------------------------------------- 1461*8e022d3cSDag-Erling Smørgravdnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40 1462*8e022d3cSDag-Erling Smørgravdnl ---------------- 1463*8e022d3cSDag-Erling Smørgravdnl Remove a given option from CFLAGS/CPPFLAGS 1464*8e022d3cSDag-Erling Smørgravdnl $1 = option to remove 1465*8e022d3cSDag-Erling Smørgravdnl $2 = variable to update 1466*8e022d3cSDag-Erling Smørgravdnl $3 = nonempty to allow verbose message 1467*8e022d3cSDag-Erling Smørgravdefine([CF_REMOVE_CFLAGS], 1468*8e022d3cSDag-Erling Smørgrav[ 1469*8e022d3cSDag-Erling Smørgravcf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'` 1470*8e022d3cSDag-Erling Smørgravwhile true 1471*8e022d3cSDag-Erling Smørgravdo 1472*8e022d3cSDag-Erling Smørgrav cf_old_cflag=`echo "x[$]$2" | sed -e 's/^.//' -e 's/[[ ]][[ ]]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[[^ ]][[^ ]]*\\)\?%%" -e 's/^[[ ]]*//' -e 's%[[ ]][[ ]]*-D% -D%g' -e 's%[[ ]][[ ]]*-I% -I%g'` 1473*8e022d3cSDag-Erling Smørgrav test "[$]$2" != "$cf_old_cflag" || break 1474*8e022d3cSDag-Erling Smørgrav ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)]) 1475*8e022d3cSDag-Erling Smørgrav $2="$cf_old_cflag" 1476*8e022d3cSDag-Erling Smørgravdone 147798e903e7SBaptiste Daroussin])dnl 147898e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 147998e903e7SBaptiste Daroussindnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 148098e903e7SBaptiste Daroussindnl ---------------- 148198e903e7SBaptiste Daroussindnl Remove all -U and -D options that refer to the given symbol from a list 148298e903e7SBaptiste Daroussindnl of C compiler options. This works around the problem that not all 148398e903e7SBaptiste Daroussindnl compilers process -U and -D options from left-to-right, so a -U option 148498e903e7SBaptiste Daroussindnl cannot be used to cancel the effect of a preceding -D option. 148598e903e7SBaptiste Daroussindnl 148698e903e7SBaptiste Daroussindnl $1 = target (which could be the same as the source variable) 148798e903e7SBaptiste Daroussindnl $2 = source (including '$') 148898e903e7SBaptiste Daroussindnl $3 = symbol to remove 148998e903e7SBaptiste Daroussindefine([CF_REMOVE_DEFINE], 149098e903e7SBaptiste Daroussin[ 149198e903e7SBaptiste Daroussin$1=`echo "$2" | \ 149298e903e7SBaptiste Daroussin sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ 149398e903e7SBaptiste Daroussin -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` 149498e903e7SBaptiste Daroussin])dnl 149598e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 1496*8e022d3cSDag-Erling Smørgravdnl CF_TRY_XOPEN_SOURCE version: 4 updated: 2022/09/10 15:16:16 149798e903e7SBaptiste Daroussindnl ------------------- 149898e903e7SBaptiste Daroussindnl If _XOPEN_SOURCE is not defined in the compile environment, check if we 149998e903e7SBaptiste Daroussindnl can define it successfully. 150098e903e7SBaptiste DaroussinAC_DEFUN([CF_TRY_XOPEN_SOURCE],[ 150198e903e7SBaptiste DaroussinAC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ 1502*8e022d3cSDag-Erling Smørgrav AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY, 150398e903e7SBaptiste Daroussin [cf_cv_xopen_source=no], 150498e903e7SBaptiste Daroussin [cf_save="$CPPFLAGS" 1505b53bb29fSJung-uk Kim CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE) 1506*8e022d3cSDag-Erling Smørgrav AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY, 150798e903e7SBaptiste Daroussin [cf_cv_xopen_source=no], 150898e903e7SBaptiste Daroussin [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) 150998e903e7SBaptiste Daroussin CPPFLAGS="$cf_save" 151098e903e7SBaptiste Daroussin ]) 151198e903e7SBaptiste Daroussin]) 151298e903e7SBaptiste Daroussin 151398e903e7SBaptiste Daroussinif test "$cf_cv_xopen_source" != no ; then 151498e903e7SBaptiste Daroussin CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) 151598e903e7SBaptiste Daroussin CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) 151698e903e7SBaptiste Daroussin cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" 1517*8e022d3cSDag-Erling Smørgrav CF_APPEND_CFLAGS($cf_temp_xopen_source) 151898e903e7SBaptiste Daroussinfi 151998e903e7SBaptiste Daroussin]) 152098e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 152198e903e7SBaptiste Daroussindnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 152298e903e7SBaptiste Daroussindnl -------- 152398e903e7SBaptiste Daroussindnl Make an uppercase version of a variable 152498e903e7SBaptiste Daroussindnl $1=uppercase($2) 152598e903e7SBaptiste DaroussinAC_DEFUN([CF_UPPER], 152698e903e7SBaptiste Daroussin[ 152798e903e7SBaptiste Daroussin$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` 152898e903e7SBaptiste Daroussin])dnl 152998e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 153098e903e7SBaptiste Daroussindnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 153198e903e7SBaptiste Daroussindnl ---------- 153298e903e7SBaptiste Daroussindnl Use AC_VERBOSE w/o the warnings 153398e903e7SBaptiste DaroussinAC_DEFUN([CF_VERBOSE], 153498e903e7SBaptiste Daroussin[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG 153598e903e7SBaptiste DaroussinCF_MSG_LOG([$1]) 153698e903e7SBaptiste Daroussin])dnl 153798e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 1538*8e022d3cSDag-Erling Smørgravdnl CF_WITHOUT_X version: 3 updated: 2021/01/13 16:51:52 1539b53bb29fSJung-uk Kimdnl ------------ 1540b53bb29fSJung-uk Kimdnl Use this to cancel the check for X headers/libraries which would be pulled 1541b53bb29fSJung-uk Kimdnl in via CF_GCC_WARNINGS. 1542b53bb29fSJung-uk Kimdefine([CF_WITHOUT_X], 1543*8e022d3cSDag-Erling SmørgravAC_DEFUN([AC_PATH_XTRA],[]) 1544*8e022d3cSDag-Erling SmørgravAC_DEFUN([CF_SAVE_XTRA_FLAGS],[]) 1545*8e022d3cSDag-Erling SmørgravAC_DEFUN([CF_RESTORE_XTRA_FLAGS],[]) 1546b53bb29fSJung-uk KimAC_DEFUN([CF_CONST_X_STRING],[echo "skipping X-const check";])dnl 1547*8e022d3cSDag-Erling SmørgravAC_SUBST(X_CFLAGS) 1548*8e022d3cSDag-Erling SmørgravAC_SUBST(X_LIBS) 1549b53bb29fSJung-uk Kim[])dnl 1550b53bb29fSJung-uk Kimdnl --------------------------------------------------------------------------- 155198e903e7SBaptiste Daroussindnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 155298e903e7SBaptiste Daroussindnl ---------------- 155398e903e7SBaptiste Daroussindnl Configure-option for dbmalloc. The optional parameter is used to override 155498e903e7SBaptiste Daroussindnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 155598e903e7SBaptiste DaroussinAC_DEFUN([CF_WITH_DBMALLOC],[ 155698e903e7SBaptiste DaroussinCF_NO_LEAKS_OPTION(dbmalloc, 155798e903e7SBaptiste Daroussin [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], 155898e903e7SBaptiste Daroussin [USE_DBMALLOC]) 155998e903e7SBaptiste Daroussin 156098e903e7SBaptiste Daroussinif test "$with_dbmalloc" = yes ; then 156198e903e7SBaptiste Daroussin AC_CHECK_HEADER(dbmalloc.h, 156298e903e7SBaptiste Daroussin [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) 156398e903e7SBaptiste Daroussinfi 156498e903e7SBaptiste Daroussin])dnl 156598e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 156698e903e7SBaptiste Daroussindnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 156798e903e7SBaptiste Daroussindnl --------------- 156898e903e7SBaptiste Daroussindnl Configure-option for dmalloc. The optional parameter is used to override 156998e903e7SBaptiste Daroussindnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. 157098e903e7SBaptiste DaroussinAC_DEFUN([CF_WITH_DMALLOC],[ 157198e903e7SBaptiste DaroussinCF_NO_LEAKS_OPTION(dmalloc, 157298e903e7SBaptiste Daroussin [ --with-dmalloc test: use Gray Watson's dmalloc library], 157398e903e7SBaptiste Daroussin [USE_DMALLOC]) 157498e903e7SBaptiste Daroussin 157598e903e7SBaptiste Daroussinif test "$with_dmalloc" = yes ; then 157698e903e7SBaptiste Daroussin AC_CHECK_HEADER(dmalloc.h, 157798e903e7SBaptiste Daroussin [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) 157898e903e7SBaptiste Daroussinfi 157998e903e7SBaptiste Daroussin])dnl 158098e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 1581*8e022d3cSDag-Erling Smørgravdnl CF_WITH_MAN2HTML version: 12 updated: 2021/01/03 18:30:50 15820f86d14eSJung-uk Kimdnl ---------------- 1583b53bb29fSJung-uk Kimdnl Check for man2html and groff. Prefer man2html over groff, but use groff 1584b53bb29fSJung-uk Kimdnl as a fallback. See 1585b53bb29fSJung-uk Kimdnl 1586b53bb29fSJung-uk Kimdnl http://invisible-island.net/scripts/man2html.html 1587b53bb29fSJung-uk Kimdnl 15880f86d14eSJung-uk Kimdnl Generate a shell script which hides the differences between the two. 15890f86d14eSJung-uk Kimdnl 15900f86d14eSJung-uk Kimdnl We name that "man2html.tmp". 15910f86d14eSJung-uk Kimdnl 15920f86d14eSJung-uk Kimdnl The shell script can be removed later, e.g., using "make distclean". 15930f86d14eSJung-uk KimAC_DEFUN([CF_WITH_MAN2HTML],[ 1594*8e022d3cSDag-Erling SmørgravAC_REQUIRE([CF_PROG_GROFF])dnl 1595*8e022d3cSDag-Erling SmørgravAC_REQUIRE([AC_PROG_FGREP])dnl 15960f86d14eSJung-uk Kim 1597b53bb29fSJung-uk Kimcase "x${with_man2html}" in 1598b53bb29fSJung-uk Kim(xno) 1599b53bb29fSJung-uk Kim cf_man2html=no 1600b53bb29fSJung-uk Kim ;; 1601b53bb29fSJung-uk Kim(x|xyes) 1602b53bb29fSJung-uk Kim AC_PATH_PROG(cf_man2html,man2html,no) 1603b53bb29fSJung-uk Kim case "x$cf_man2html" in 1604b53bb29fSJung-uk Kim (x/*) 1605b53bb29fSJung-uk Kim AC_MSG_CHECKING(for the modified Earl Hood script) 1606b53bb29fSJung-uk Kim if ( $cf_man2html -help 2>&1 | grep 'Make an index of headers at the end' >/dev/null ) 1607b53bb29fSJung-uk Kim then 1608b53bb29fSJung-uk Kim cf_man2html_ok=yes 1609b53bb29fSJung-uk Kim else 1610b53bb29fSJung-uk Kim cf_man2html=no 1611b53bb29fSJung-uk Kim cf_man2html_ok=no 1612b53bb29fSJung-uk Kim fi 1613b53bb29fSJung-uk Kim AC_MSG_RESULT($cf_man2html_ok) 1614b53bb29fSJung-uk Kim ;; 1615b53bb29fSJung-uk Kim (*) 1616b53bb29fSJung-uk Kim cf_man2html=no 1617b53bb29fSJung-uk Kim ;; 1618b53bb29fSJung-uk Kim esac 1619b53bb29fSJung-uk Kimesac 1620b53bb29fSJung-uk Kim 16210f86d14eSJung-uk KimAC_MSG_CHECKING(for program to convert manpage to html) 16220f86d14eSJung-uk KimAC_ARG_WITH(man2html, 16230f86d14eSJung-uk Kim [ --with-man2html=XXX use XXX rather than groff], 16240f86d14eSJung-uk Kim [cf_man2html=$withval], 1625b53bb29fSJung-uk Kim [cf_man2html=$cf_man2html]) 16260f86d14eSJung-uk Kim 16270f86d14eSJung-uk Kimcf_with_groff=no 16280f86d14eSJung-uk Kim 16290f86d14eSJung-uk Kimcase $cf_man2html in 16300f86d14eSJung-uk Kim(yes) 16310f86d14eSJung-uk Kim AC_MSG_RESULT(man2html) 16320f86d14eSJung-uk Kim AC_PATH_PROG(cf_man2html,man2html,no) 16330f86d14eSJung-uk Kim ;; 16340f86d14eSJung-uk Kim(no|groff|*/groff*) 16350f86d14eSJung-uk Kim cf_with_groff=yes 16360f86d14eSJung-uk Kim cf_man2html=$GROFF_PATH 16370f86d14eSJung-uk Kim AC_MSG_RESULT($cf_man2html) 16380f86d14eSJung-uk Kim ;; 16390f86d14eSJung-uk Kim(*) 16400f86d14eSJung-uk Kim AC_MSG_RESULT($cf_man2html) 16410f86d14eSJung-uk Kim ;; 16420f86d14eSJung-uk Kimesac 16430f86d14eSJung-uk Kim 16440f86d14eSJung-uk KimMAN2HTML_TEMP="man2html.tmp" 16450f86d14eSJung-uk Kim cat >$MAN2HTML_TEMP <<CF_EOF 164620afc491SJung-uk Kim#!$SHELL 16470f86d14eSJung-uk Kim# Temporary script generated by CF_WITH_MAN2HTML 16480f86d14eSJung-uk Kim# Convert inputs to html, sending result to standard output. 16490f86d14eSJung-uk Kim# 16500f86d14eSJung-uk Kim# Parameters: 16510f86d14eSJung-uk Kim# \${1} = rootname of file to convert 16520f86d14eSJung-uk Kim# \${2} = suffix of file to convert, e.g., "1" 16530f86d14eSJung-uk Kim# \${3} = macros to use, e.g., "man" 16540f86d14eSJung-uk Kim# 16550f86d14eSJung-uk KimROOT=\[$]1 16560f86d14eSJung-uk KimTYPE=\[$]2 16570f86d14eSJung-uk KimMACS=\[$]3 16580f86d14eSJung-uk Kim 16590f86d14eSJung-uk Kimunset LANG 16600f86d14eSJung-uk Kimunset LC_ALL 16610f86d14eSJung-uk Kimunset LC_CTYPE 16620f86d14eSJung-uk Kimunset LANGUAGE 16630f86d14eSJung-uk KimGROFF_NO_SGR=stupid 16640f86d14eSJung-uk Kimexport GROFF_NO_SGR 16650f86d14eSJung-uk Kim 16660f86d14eSJung-uk KimCF_EOF 16670f86d14eSJung-uk Kim 1668*8e022d3cSDag-Erling SmørgravNROFF_OPTS= 16690f86d14eSJung-uk Kimif test "x$cf_with_groff" = xyes 16700f86d14eSJung-uk Kimthen 16710f86d14eSJung-uk Kim MAN2HTML_NOTE="$GROFF_NOTE" 16720f86d14eSJung-uk Kim MAN2HTML_PATH="$GROFF_PATH" 16730f86d14eSJung-uk Kim cat >>$MAN2HTML_TEMP <<CF_EOF 1674b53bb29fSJung-uk Kim$SHELL -c "$TBL_PATH \${ROOT}.\${TYPE} | $GROFF_PATH -P -o0 -I\${ROOT}_ -Thtml -\${MACS}" 16750f86d14eSJung-uk KimCF_EOF 16760f86d14eSJung-uk Kimelse 1677*8e022d3cSDag-Erling Smørgrav # disable hyphenation if this is groff 1678*8e022d3cSDag-Erling Smørgrav if test "x$GROFF_PATH" != xno 1679*8e022d3cSDag-Erling Smørgrav then 1680*8e022d3cSDag-Erling Smørgrav AC_MSG_CHECKING(if nroff is really groff) 1681*8e022d3cSDag-Erling Smørgrav cf_check_groff="`$NROFF_PATH --version 2>/dev/null | grep groff`" 1682*8e022d3cSDag-Erling Smørgrav test -n "$cf_check_groff" && cf_check_groff=yes 1683*8e022d3cSDag-Erling Smørgrav test -n "$cf_check_groff" || cf_check_groff=no 1684*8e022d3cSDag-Erling Smørgrav AC_MSG_RESULT($cf_check_groff) 1685*8e022d3cSDag-Erling Smørgrav test "x$cf_check_groff" = xyes && NROFF_OPTS="-rHY=0" 1686*8e022d3cSDag-Erling Smørgrav fi 16870f86d14eSJung-uk Kim MAN2HTML_NOTE="" 16880f86d14eSJung-uk Kim CF_PATH_SYNTAX(cf_man2html) 16890f86d14eSJung-uk Kim MAN2HTML_PATH="$cf_man2html" 16900f86d14eSJung-uk Kim AC_MSG_CHECKING(for $cf_man2html top/bottom margins) 16910f86d14eSJung-uk Kim 16920f86d14eSJung-uk Kim # for this example, expect 3 lines of content, the remainder is head/foot 16930f86d14eSJung-uk Kim cat >conftest.in <<CF_EOF 16940f86d14eSJung-uk Kim.TH HEAD1 HEAD2 HEAD3 HEAD4 HEAD5 16950f86d14eSJung-uk Kim.SH SECTION 16960f86d14eSJung-uk KimMARKER 16970f86d14eSJung-uk KimCF_EOF 16980f86d14eSJung-uk Kim 1699b53bb29fSJung-uk Kim LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out 17000f86d14eSJung-uk Kim 1701*8e022d3cSDag-Erling Smørgrav cf_man2html_1st="`${FGREP-fgrep} -n MARKER conftest.out |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`" 1702*8e022d3cSDag-Erling Smørgrav cf_man2html_top=`expr "$cf_man2html_1st" - 2` 1703*8e022d3cSDag-Erling Smørgrav cf_man2html_bot="`wc -l conftest.out |sed -e 's/[[^0-9]]//g'`" 1704*8e022d3cSDag-Erling Smørgrav cf_man2html_bot=`expr "$cf_man2html_bot" - 2 - "$cf_man2html_top"` 17050f86d14eSJung-uk Kim cf_man2html_top_bot="-topm=$cf_man2html_top -botm=$cf_man2html_bot" 17060f86d14eSJung-uk Kim 17070f86d14eSJung-uk Kim AC_MSG_RESULT($cf_man2html_top_bot) 17080f86d14eSJung-uk Kim 17090f86d14eSJung-uk Kim AC_MSG_CHECKING(for pagesize to use) 17100f86d14eSJung-uk Kim for cf_block in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 17110f86d14eSJung-uk Kim do 17120f86d14eSJung-uk Kim cat >>conftest.in <<CF_EOF 17130f86d14eSJung-uk Kim.nf 17140f86d14eSJung-uk Kim0 17150f86d14eSJung-uk Kim1 17160f86d14eSJung-uk Kim2 17170f86d14eSJung-uk Kim3 17180f86d14eSJung-uk Kim4 17190f86d14eSJung-uk Kim5 17200f86d14eSJung-uk Kim6 17210f86d14eSJung-uk Kim7 17220f86d14eSJung-uk Kim8 17230f86d14eSJung-uk Kim9 17240f86d14eSJung-uk KimCF_EOF 17250f86d14eSJung-uk Kim done 17260f86d14eSJung-uk Kim 1727b53bb29fSJung-uk Kim LC_ALL=C LC_CTYPE=C LANG=C LANGUAGE=C $NROFF_PATH -man conftest.in >conftest.out 1728*8e022d3cSDag-Erling Smørgrav cf_man2html_page="`${FGREP-fgrep} -n HEAD1 conftest.out |sed -n '$p' |sed -e 's/^[[^0-9]]*://' -e 's/:.*//'`" 17290f86d14eSJung-uk Kim test -z "$cf_man2html_page" && cf_man2html_page=99999 17300f86d14eSJung-uk Kim test "$cf_man2html_page" -gt 100 && cf_man2html_page=99999 17310f86d14eSJung-uk Kim 17320f86d14eSJung-uk Kim rm -rf conftest* 17330f86d14eSJung-uk Kim AC_MSG_RESULT($cf_man2html_page) 17340f86d14eSJung-uk Kim 17350f86d14eSJung-uk Kim cat >>$MAN2HTML_TEMP <<CF_EOF 17360f86d14eSJung-uk Kim: \${MAN2HTML_PATH=$MAN2HTML_PATH} 1737*8e022d3cSDag-Erling SmørgravMAN2HTML_OPTS="\$MAN2HTML_OPTS -index -title=\"\$ROOT(\$TYPE)\" -compress -pgsize $cf_man2html_page" 17380f86d14eSJung-uk Kimcase \${TYPE} in 17390f86d14eSJung-uk Kim(ms) 1740*8e022d3cSDag-Erling Smørgrav $TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH -topm=0 -botm=0 \$MAN2HTML_OPTS 17410f86d14eSJung-uk Kim ;; 17420f86d14eSJung-uk Kim(*) 1743*8e022d3cSDag-Erling Smørgrav $TBL_PATH \${ROOT}.\${TYPE} | $NROFF_PATH $NROFF_OPTS -\${MACS} | \$MAN2HTML_PATH $cf_man2html_top_bot \$MAN2HTML_OPTS 17440f86d14eSJung-uk Kim ;; 17450f86d14eSJung-uk Kimesac 17460f86d14eSJung-uk KimCF_EOF 17470f86d14eSJung-uk Kimfi 17480f86d14eSJung-uk Kim 17490f86d14eSJung-uk Kimchmod 700 $MAN2HTML_TEMP 17500f86d14eSJung-uk Kim 17510f86d14eSJung-uk KimAC_SUBST(MAN2HTML_NOTE) 17520f86d14eSJung-uk KimAC_SUBST(MAN2HTML_PATH) 17530f86d14eSJung-uk KimAC_SUBST(MAN2HTML_TEMP) 17540f86d14eSJung-uk Kim])dnl 17550f86d14eSJung-uk Kimdnl --------------------------------------------------------------------------- 175698e903e7SBaptiste Daroussindnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21 175798e903e7SBaptiste Daroussindnl ---------------- 175898e903e7SBaptiste DaroussinAC_DEFUN([CF_WITH_VALGRIND],[ 175998e903e7SBaptiste DaroussinCF_NO_LEAKS_OPTION(valgrind, 176098e903e7SBaptiste Daroussin [ --with-valgrind test: use valgrind], 176198e903e7SBaptiste Daroussin [USE_VALGRIND]) 176298e903e7SBaptiste Daroussin])dnl 176398e903e7SBaptiste Daroussindnl --------------------------------------------------------------------------- 1764*8e022d3cSDag-Erling Smørgravdnl CF_XOPEN_SOURCE version: 63 updated: 2022/12/29 10:10:26 176598e903e7SBaptiste Daroussindnl --------------- 176698e903e7SBaptiste Daroussindnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions, 176798e903e7SBaptiste Daroussindnl or adapt to the vendor's definitions to get equivalent functionality, 176898e903e7SBaptiste Daroussindnl without losing the common non-POSIX features. 176998e903e7SBaptiste Daroussindnl 177098e903e7SBaptiste Daroussindnl Parameters: 177198e903e7SBaptiste Daroussindnl $1 is the nominal value for _XOPEN_SOURCE 177298e903e7SBaptiste Daroussindnl $2 is the nominal value for _POSIX_C_SOURCE 177398e903e7SBaptiste DaroussinAC_DEFUN([CF_XOPEN_SOURCE],[ 17745b91e83fSBaptiste DaroussinAC_REQUIRE([AC_CANONICAL_HOST]) 1775b53bb29fSJung-uk KimAC_REQUIRE([CF_POSIX_VISIBLE]) 1776b53bb29fSJung-uk Kim 1777b53bb29fSJung-uk Kimif test "$cf_cv_posix_visible" = no; then 177898e903e7SBaptiste Daroussin 177998e903e7SBaptiste Daroussincf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) 178098e903e7SBaptiste Daroussincf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) 178198e903e7SBaptiste Daroussincf_xopen_source= 178298e903e7SBaptiste Daroussin 1783*8e022d3cSDag-Erling Smørgravcase "$host_os" in 17840f86d14eSJung-uk Kim(aix[[4-7]]*) 178598e903e7SBaptiste Daroussin cf_xopen_source="-D_ALL_SOURCE" 178698e903e7SBaptiste Daroussin ;; 17872aca18c7SJung-uk Kim(msys) 178898e903e7SBaptiste Daroussin cf_XOPEN_SOURCE=600 178998e903e7SBaptiste Daroussin ;; 17900f86d14eSJung-uk Kim(darwin[[0-8]].*) 179198e903e7SBaptiste Daroussin cf_xopen_source="-D_APPLE_C_SOURCE" 179298e903e7SBaptiste Daroussin ;; 17930f86d14eSJung-uk Kim(darwin*) 179498e903e7SBaptiste Daroussin cf_xopen_source="-D_DARWIN_C_SOURCE" 179598e903e7SBaptiste Daroussin cf_XOPEN_SOURCE= 179698e903e7SBaptiste Daroussin ;; 1797b53bb29fSJung-uk Kim(freebsd*|dragonfly*|midnightbsd*) 179898e903e7SBaptiste Daroussin # 5.x headers associate 179998e903e7SBaptiste Daroussin # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L 180098e903e7SBaptiste Daroussin # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L 180198e903e7SBaptiste Daroussin cf_POSIX_C_SOURCE=200112L 180298e903e7SBaptiste Daroussin cf_XOPEN_SOURCE=600 180398e903e7SBaptiste Daroussin cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" 180498e903e7SBaptiste Daroussin ;; 18050f86d14eSJung-uk Kim(hpux11*) 180698e903e7SBaptiste Daroussin cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" 180798e903e7SBaptiste Daroussin ;; 18080f86d14eSJung-uk Kim(hpux*) 180998e903e7SBaptiste Daroussin cf_xopen_source="-D_HPUX_SOURCE" 181098e903e7SBaptiste Daroussin ;; 18110f86d14eSJung-uk Kim(irix[[56]].*) 181298e903e7SBaptiste Daroussin cf_xopen_source="-D_SGI_SOURCE" 181398e903e7SBaptiste Daroussin cf_XOPEN_SOURCE= 181498e903e7SBaptiste Daroussin ;; 1815*8e022d3cSDag-Erling Smørgrav(linux*gnu|linux*gnuabi64|linux*gnuabin32|linux*gnueabi|linux*gnueabihf|linux*gnux32|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) 1816b53bb29fSJung-uk Kim CF_GNU_SOURCE($cf_XOPEN_SOURCE) 181798e903e7SBaptiste Daroussin ;; 18180f86d14eSJung-uk Kim(minix*) 181911fce282SBaptiste Daroussin cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... 182011fce282SBaptiste Daroussin ;; 18210f86d14eSJung-uk Kim(mirbsd*) 182298e903e7SBaptiste Daroussin # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types 182398e903e7SBaptiste Daroussin cf_XOPEN_SOURCE= 182498e903e7SBaptiste Daroussin CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 182598e903e7SBaptiste Daroussin ;; 18260f86d14eSJung-uk Kim(netbsd*) 182798e903e7SBaptiste Daroussin cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw 182898e903e7SBaptiste Daroussin ;; 1829*8e022d3cSDag-Erling Smørgrav(openbsd[[6-9]]*) 1830*8e022d3cSDag-Erling Smørgrav # OpenBSD 6.x has broken locale support, both compile-time and runtime. 1831*8e022d3cSDag-Erling Smørgrav # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html 1832*8e022d3cSDag-Erling Smørgrav # Abusing the conformance level is a workaround. 1833*8e022d3cSDag-Erling Smørgrav AC_MSG_WARN(this system does not provide usable locale support) 1834*8e022d3cSDag-Erling Smørgrav cf_xopen_source="-D_BSD_SOURCE" 1835*8e022d3cSDag-Erling Smørgrav cf_XOPEN_SOURCE=700 1836*8e022d3cSDag-Erling Smørgrav ;; 1837*8e022d3cSDag-Erling Smørgrav(openbsd[[4-5]]*) 183898e903e7SBaptiste Daroussin # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw 183998e903e7SBaptiste Daroussin cf_xopen_source="-D_BSD_SOURCE" 184098e903e7SBaptiste Daroussin cf_XOPEN_SOURCE=600 184198e903e7SBaptiste Daroussin ;; 18420f86d14eSJung-uk Kim(openbsd*) 184398e903e7SBaptiste Daroussin # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw 184498e903e7SBaptiste Daroussin ;; 18450f86d14eSJung-uk Kim(osf[[45]]*) 184698e903e7SBaptiste Daroussin cf_xopen_source="-D_OSF_SOURCE" 184798e903e7SBaptiste Daroussin ;; 18480f86d14eSJung-uk Kim(nto-qnx*) 184998e903e7SBaptiste Daroussin cf_xopen_source="-D_QNX_SOURCE" 185098e903e7SBaptiste Daroussin ;; 18510f86d14eSJung-uk Kim(sco*) 185298e903e7SBaptiste Daroussin # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer 185398e903e7SBaptiste Daroussin ;; 18540f86d14eSJung-uk Kim(solaris2.*) 185598e903e7SBaptiste Daroussin cf_xopen_source="-D__EXTENSIONS__" 18560c8de5b0SBaptiste Daroussin cf_cv_xopen_source=broken 185798e903e7SBaptiste Daroussin ;; 18580f86d14eSJung-uk Kim(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) 185911fce282SBaptiste Daroussin cf_XOPEN_SOURCE= 186011fce282SBaptiste Daroussin cf_POSIX_C_SOURCE= 186111fce282SBaptiste Daroussin ;; 18620f86d14eSJung-uk Kim(*) 186398e903e7SBaptiste Daroussin CF_TRY_XOPEN_SOURCE 1864*8e022d3cSDag-Erling Smørgrav cf_save_xopen_cppflags="$CPPFLAGS" 186598e903e7SBaptiste Daroussin CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) 1866*8e022d3cSDag-Erling Smørgrav # Some of these niche implementations use copy/paste, double-check... 1867*8e022d3cSDag-Erling Smørgrav if test "$cf_cv_xopen_source" != no ; then 1868*8e022d3cSDag-Erling Smørgrav CF_VERBOSE(checking if _POSIX_C_SOURCE inteferes) 1869*8e022d3cSDag-Erling Smørgrav AC_TRY_COMPILE(CF__XOPEN_SOURCE_HEAD,CF__XOPEN_SOURCE_BODY,,[ 1870*8e022d3cSDag-Erling Smørgrav AC_MSG_WARN(_POSIX_C_SOURCE definition is not usable) 1871*8e022d3cSDag-Erling Smørgrav CPPFLAGS="$cf_save_xopen_cppflags"]) 1872*8e022d3cSDag-Erling Smørgrav fi 187398e903e7SBaptiste Daroussin ;; 187498e903e7SBaptiste Daroussinesac 187598e903e7SBaptiste Daroussin 187698e903e7SBaptiste Daroussinif test -n "$cf_xopen_source" ; then 1877*8e022d3cSDag-Erling Smørgrav CF_APPEND_CFLAGS($cf_xopen_source,true) 187898e903e7SBaptiste Daroussinfi 187998e903e7SBaptiste Daroussin 188098e903e7SBaptiste Daroussindnl In anything but the default case, we may have system-specific setting 188198e903e7SBaptiste Daroussindnl which is still not guaranteed to provide all of the entrypoints that 188298e903e7SBaptiste Daroussindnl _XOPEN_SOURCE would yield. 188398e903e7SBaptiste Daroussinif test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then 188498e903e7SBaptiste Daroussin AC_MSG_CHECKING(if _XOPEN_SOURCE really is set) 188598e903e7SBaptiste Daroussin AC_TRY_COMPILE([#include <stdlib.h>],[ 188698e903e7SBaptiste Daroussin#ifndef _XOPEN_SOURCE 188798e903e7SBaptiste Daroussinmake an error 188898e903e7SBaptiste Daroussin#endif], 188998e903e7SBaptiste Daroussin [cf_XOPEN_SOURCE_set=yes], 189098e903e7SBaptiste Daroussin [cf_XOPEN_SOURCE_set=no]) 189198e903e7SBaptiste Daroussin AC_MSG_RESULT($cf_XOPEN_SOURCE_set) 1892*8e022d3cSDag-Erling Smørgrav if test "$cf_XOPEN_SOURCE_set" = yes 189398e903e7SBaptiste Daroussin then 189498e903e7SBaptiste Daroussin AC_TRY_COMPILE([#include <stdlib.h>],[ 189598e903e7SBaptiste Daroussin#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE 189698e903e7SBaptiste Daroussinmake an error 189798e903e7SBaptiste Daroussin#endif], 189898e903e7SBaptiste Daroussin [cf_XOPEN_SOURCE_set_ok=yes], 189998e903e7SBaptiste Daroussin [cf_XOPEN_SOURCE_set_ok=no]) 1900*8e022d3cSDag-Erling Smørgrav if test "$cf_XOPEN_SOURCE_set_ok" = no 190198e903e7SBaptiste Daroussin then 190298e903e7SBaptiste Daroussin AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) 190398e903e7SBaptiste Daroussin fi 190498e903e7SBaptiste Daroussin else 190598e903e7SBaptiste Daroussin CF_TRY_XOPEN_SOURCE 190698e903e7SBaptiste Daroussin fi 190798e903e7SBaptiste Daroussinfi 1908b53bb29fSJung-uk Kimfi # cf_cv_posix_visible 190998e903e7SBaptiste Daroussin]) 1910*8e022d3cSDag-Erling Smørgravdnl --------------------------------------------------------------------------- 1911*8e022d3cSDag-Erling Smørgravdnl CF__XOPEN_SOURCE_BODY version: 1 updated: 2022/09/10 15:17:35 1912*8e022d3cSDag-Erling Smørgravdnl --------------------- 1913*8e022d3cSDag-Erling Smørgravdnl body of test when test-compiling for _XOPEN_SOURCE check 1914*8e022d3cSDag-Erling Smørgravdefine([CF__XOPEN_SOURCE_BODY], 1915*8e022d3cSDag-Erling Smørgrav[ 1916*8e022d3cSDag-Erling Smørgrav#ifndef _XOPEN_SOURCE 1917*8e022d3cSDag-Erling Smørgravmake an error 1918*8e022d3cSDag-Erling Smørgrav#endif 1919*8e022d3cSDag-Erling Smørgrav]) 1920*8e022d3cSDag-Erling Smørgravdnl --------------------------------------------------------------------------- 1921*8e022d3cSDag-Erling Smørgravdnl CF__XOPEN_SOURCE_HEAD version: 1 updated: 2022/09/10 15:17:03 1922*8e022d3cSDag-Erling Smørgravdnl --------------------- 1923*8e022d3cSDag-Erling Smørgravdnl headers to include when test-compiling for _XOPEN_SOURCE check 1924*8e022d3cSDag-Erling Smørgravdefine([CF__XOPEN_SOURCE_HEAD], 1925*8e022d3cSDag-Erling Smørgrav[ 1926*8e022d3cSDag-Erling Smørgrav#include <stdlib.h> 1927*8e022d3cSDag-Erling Smørgrav#include <string.h> 1928*8e022d3cSDag-Erling Smørgrav#include <sys/types.h> 1929*8e022d3cSDag-Erling Smørgrav]) 1930