1*735d6239SKiyoung Kimdnl AC_NEED_STDINT_H ( HEADER-TO-GENERATE ) 2*735d6239SKiyoung Kimdnl Copyright 2001-2002 by Dan Fandrich <[email protected]> 3*735d6239SKiyoung Kimdnl This file may be copied and used freely without restrictions. No warranty 4*735d6239SKiyoung Kimdnl is expressed or implied. 5*735d6239SKiyoung Kimdnl 6*735d6239SKiyoung Kimdnl Look for a header file that defines size-specific integer types like the 7*735d6239SKiyoung Kimdnl ones recommended to be in stdint.h in the C99 standard (e.g. uint32_t). 8*735d6239SKiyoung Kimdnl This is a dumbed-down version of the macro of the same name in the file 9*735d6239SKiyoung Kimdnl ac_need_stdint_h.m4 which is part of the ac-archive, available at 10*735d6239SKiyoung Kimdnl <URL:http://ac-archive.sourceforge.net/> (also, another macro 11*735d6239SKiyoung Kimdnl AC_CREATE_STDINT_H by the same author). This version is not as smart, 12*735d6239SKiyoung Kimdnl but works on older autoconf versions and has a different license. 13*735d6239SKiyoung Kim 14*735d6239SKiyoung Kimdnl AX_CHECK_DEFINED_TYPE ( TYPE, FILE, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND ) 15*735d6239SKiyoung Kimdnl This is similar to _AC_CHECK_TYPE_NEW (a.k.a. new syntax version of 16*735d6239SKiyoung Kimdnl AC_CHECK_TYPE) in autoconf 2.50 but works on older versions 17*735d6239SKiyoung KimAC_DEFUN([AX_CHECK_DEFINED_TYPE], 18*735d6239SKiyoung Kim[AC_MSG_CHECKING([for $1 in $2]) 19*735d6239SKiyoung KimAC_EGREP_CPP(changequote(<<,>>)dnl 20*735d6239SKiyoung Kim<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl 21*735d6239SKiyoung Kimchangequote([,]), [#include <$2>], 22*735d6239SKiyoung Kimac_cv_type_$1=yes, ac_cv_type_$1=no)dnl 23*735d6239SKiyoung KimAC_MSG_RESULT($ac_cv_type_$1) 24*735d6239SKiyoung Kimif test $ac_cv_type_$1 = yes; then 25*735d6239SKiyoung Kim $3 26*735d6239SKiyoung Kimelse 27*735d6239SKiyoung Kim $4 28*735d6239SKiyoung Kimfi 29*735d6239SKiyoung Kim]) 30*735d6239SKiyoung Kim 31*735d6239SKiyoung Kimdnl Look for a header file that defines size-specific integer types 32*735d6239SKiyoung KimAC_DEFUN([AX_NEED_STDINT_H], 33*735d6239SKiyoung Kim[ 34*735d6239SKiyoung Kimchangequote(, )dnl 35*735d6239SKiyoung Kimac_dir=`echo "$1"|sed 's%/[^/][^/]*$%%'` 36*735d6239SKiyoung Kimchangequote([, ])dnl 37*735d6239SKiyoung Kimif test "$ac_dir" != "$1" && test "$ac_dir" != .; then 38*735d6239SKiyoung Kim # The file is in a subdirectory. 39*735d6239SKiyoung Kim test ! -d "$ac_dir" && mkdir "$ac_dir" 40*735d6239SKiyoung Kimfi 41*735d6239SKiyoung Kim 42*735d6239SKiyoung KimAX_CHECK_DEFINED_TYPE(uint8_t, 43*735d6239SKiyoung Kimstdint.h, 44*735d6239SKiyoung Kim[ 45*735d6239SKiyoung Kimcat > "$1" <<EOF 46*735d6239SKiyoung Kim/* This file is generated automatically by configure */ 47*735d6239SKiyoung Kim#include <stdint.h> 48*735d6239SKiyoung KimEOF], 49*735d6239SKiyoung Kim[AX_CHECK_DEFINED_TYPE(uint8_t, 50*735d6239SKiyoung Kiminttypes.h, 51*735d6239SKiyoung Kim[cat > "$1" <<EOF 52*735d6239SKiyoung Kim/* This file is generated automatically by configure */ 53*735d6239SKiyoung Kim#include <inttypes.h> 54*735d6239SKiyoung KimEOF], 55*735d6239SKiyoung Kim[AX_CHECK_DEFINED_TYPE(uint8_t, 56*735d6239SKiyoung Kimsys/types.h, 57*735d6239SKiyoung Kim[cat > "$1" <<EOF 58*735d6239SKiyoung Kim/* This file is generated automatically by configure */ 59*735d6239SKiyoung Kim#include <sys/types.h> 60*735d6239SKiyoung KimEOF], 61*735d6239SKiyoung Kim[AX_CHECK_DEFINED_TYPE(u_int8_t, 62*735d6239SKiyoung Kimsys/types.h, 63*735d6239SKiyoung Kim[cat > "$1" <<EOF 64*735d6239SKiyoung Kim/* This file is generated automatically by configure */ 65*735d6239SKiyoung Kim#ifndef __STDINT_H 66*735d6239SKiyoung Kim#define __STDINT_H 67*735d6239SKiyoung Kim#include <sys/types.h> 68*735d6239SKiyoung Kimtypedef u_int8_t uint8_t; 69*735d6239SKiyoung Kimtypedef u_int16_t uint16_t; 70*735d6239SKiyoung Kimtypedef u_int32_t uint32_t; 71*735d6239SKiyoung KimEOF 72*735d6239SKiyoung Kim 73*735d6239SKiyoung KimAX_CHECK_DEFINED_TYPE(u_int64_t, 74*735d6239SKiyoung Kimsys/types.h, 75*735d6239SKiyoung Kim[cat >> "$1" <<EOF 76*735d6239SKiyoung Kimtypedef u_int64_t uint64_t; 77*735d6239SKiyoung Kim#endif /*!__STDINT_H*/ 78*735d6239SKiyoung KimEOF], 79*735d6239SKiyoung Kim[cat >> "$1" <<EOF 80*735d6239SKiyoung Kim/* 64-bit types are not available on this system */ 81*735d6239SKiyoung Kim/* typedef u_int64_t uint64_t; */ 82*735d6239SKiyoung Kim#endif /*!__STDINT_H*/ 83*735d6239SKiyoung KimEOF]) 84*735d6239SKiyoung Kim 85*735d6239SKiyoung Kim], 86*735d6239SKiyoung Kim[AC_MSG_WARN([I can't find size-specific integer definitions on this system]) 87*735d6239SKiyoung Kimif test -e "$1" ; then 88*735d6239SKiyoung Kim rm -f "$1" 89*735d6239SKiyoung Kimfi 90*735d6239SKiyoung Kim])])])])dnl 91*735d6239SKiyoung Kim]) 92*735d6239SKiyoung Kim 93*735d6239SKiyoung KimAC_DEFUN([AX_CHECK_DATA_MODEL],[ 94*735d6239SKiyoung Kim AC_CHECK_SIZEOF(char) 95*735d6239SKiyoung Kim AC_CHECK_SIZEOF(short) 96*735d6239SKiyoung Kim AC_CHECK_SIZEOF(int) 97*735d6239SKiyoung Kim AC_CHECK_SIZEOF(long) 98*735d6239SKiyoung Kim AC_CHECK_SIZEOF(void*) 99*735d6239SKiyoung Kim ac_cv_char_data_model="" 100*735d6239SKiyoung Kim ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_char" 101*735d6239SKiyoung Kim ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_short" 102*735d6239SKiyoung Kim ac_cv_char_data_model="$ac_cv_char_data_model$ac_cv_sizeof_int" 103*735d6239SKiyoung Kim ac_cv_long_data_model="" 104*735d6239SKiyoung Kim ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_int" 105*735d6239SKiyoung Kim ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_long" 106*735d6239SKiyoung Kim ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_voidp" 107*735d6239SKiyoung Kim AC_MSG_CHECKING([data model]) 108*735d6239SKiyoung Kim case "$ac_cv_char_data_model/$ac_cv_long_data_model" in 109*735d6239SKiyoung Kim 122/242) ac_cv_data_model="IP16" ; n="standard 16bit machine" ;; 110*735d6239SKiyoung Kim 122/244) ac_cv_data_model="LP32" ; n="standard 32bit machine" ;; 111*735d6239SKiyoung Kim 122/*) ac_cv_data_model="i16" ; n="unusual int16 model" ;; 112*735d6239SKiyoung Kim 124/444) ac_cv_data_model="ILP32" ; n="standard 32bit unixish" ;; 113*735d6239SKiyoung Kim 124/488) ac_cv_data_model="LP64" ; n="standard 64bit unixish" ;; 114*735d6239SKiyoung Kim 124/448) ac_cv_data_model="LLP64" ; n="unusual 64bit unixish" ;; 115*735d6239SKiyoung Kim 124/*) ac_cv_data_model="i32" ; n="unusual int32 model" ;; 116*735d6239SKiyoung Kim 128/888) ac_cv_data_model="ILP64" ; n="unusual 64bit numeric" ;; 117*735d6239SKiyoung Kim 128/*) ac_cv_data_model="i64" ; n="unusual int64 model" ;; 118*735d6239SKiyoung Kim 222/*2) ac_cv_data_model="DSP16" ; n="strict 16bit dsptype" ;; 119*735d6239SKiyoung Kim 333/*3) ac_cv_data_model="DSP24" ; n="strict 24bit dsptype" ;; 120*735d6239SKiyoung Kim 444/*4) ac_cv_data_model="DSP32" ; n="strict 32bit dsptype" ;; 121*735d6239SKiyoung Kim 666/*6) ac_cv_data_model="DSP48" ; n="strict 48bit dsptype" ;; 122*735d6239SKiyoung Kim 888/*8) ac_cv_data_model="DSP64" ; n="strict 64bit dsptype" ;; 123*735d6239SKiyoung Kim 222/*|333/*|444/*|666/*|888/*) : 124*735d6239SKiyoung Kim ac_cv_data_model="iDSP" ; n="unusual dsptype" ;; 125*735d6239SKiyoung Kim *) ac_cv_data_model="none" ; n="very unusual model" ;; 126*735d6239SKiyoung Kim esac 127*735d6239SKiyoung Kim AC_MSG_RESULT([$ac_cv_data_model ($ac_cv_long_data_model, $n)]) 128*735d6239SKiyoung Kim]) 129*735d6239SKiyoung Kim 130*735d6239SKiyoung Kimdnl AX_CHECK_HEADER_STDINT_X([HEADERLIST][,ACTION-IF]) 131*735d6239SKiyoung KimAC_DEFUN([AX_CHECK_HEADER_STDINT_X],[ 132*735d6239SKiyoung KimAC_CACHE_CHECK([for stdint uintptr_t], [ac_cv_header_stdint_x],[ 133*735d6239SKiyoung Kim ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h) 134*735d6239SKiyoung Kim AC_MSG_RESULT([(..)]) 135*735d6239SKiyoung Kim for i in m4_ifval([$1],[$1],[stdint.h inttypes.h sys/inttypes.h]) ; do 136*735d6239SKiyoung Kim unset ac_cv_type_uintptr_t 137*735d6239SKiyoung Kim unset ac_cv_type_uint64_t 138*735d6239SKiyoung Kim AC_CHECK_TYPE(uintptr_t,[ac_cv_header_stdint_x=$i],continue,[#include <$i>]) 139*735d6239SKiyoung Kim AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>]) 140*735d6239SKiyoung Kim m4_ifvaln([$1],[$1]) break 141*735d6239SKiyoung Kim done 142*735d6239SKiyoung Kim AC_MSG_CHECKING([for stdint uintptr_t]) 143*735d6239SKiyoung Kim ]) 144*735d6239SKiyoung Kim]) 145*735d6239SKiyoung Kim 146*735d6239SKiyoung KimAC_DEFUN([AX_CHECK_HEADER_STDINT_O],[ 147*735d6239SKiyoung KimAC_CACHE_CHECK([for stdint uint32_t], [ac_cv_header_stdint_o],[ 148*735d6239SKiyoung Kim ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h) 149*735d6239SKiyoung Kim AC_MSG_RESULT([(..)]) 150*735d6239SKiyoung Kim for i in m4_ifval([$1],[$1],[inttypes.h sys/inttypes.h stdint.h]) ; do 151*735d6239SKiyoung Kim unset ac_cv_type_uint32_t 152*735d6239SKiyoung Kim unset ac_cv_type_uint64_t 153*735d6239SKiyoung Kim AC_CHECK_TYPE(uint32_t,[ac_cv_header_stdint_o=$i],continue,[#include <$i>]) 154*735d6239SKiyoung Kim AC_CHECK_TYPE(uint64_t,[and64="/uint64_t"],[and64=""],[#include<$i>]) 155*735d6239SKiyoung Kim m4_ifvaln([$1],[$1]) break 156*735d6239SKiyoung Kim break; 157*735d6239SKiyoung Kim done 158*735d6239SKiyoung Kim AC_MSG_CHECKING([for stdint uint32_t]) 159*735d6239SKiyoung Kim ]) 160*735d6239SKiyoung Kim]) 161*735d6239SKiyoung Kim 162*735d6239SKiyoung KimAC_DEFUN([AX_CHECK_HEADER_STDINT_U],[ 163*735d6239SKiyoung KimAC_CACHE_CHECK([for stdint u_int32_t], [ac_cv_header_stdint_u],[ 164*735d6239SKiyoung Kim ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h) 165*735d6239SKiyoung Kim AC_MSG_RESULT([(..)]) 166*735d6239SKiyoung Kim for i in m4_ifval([$1],[$1],[sys/types.h inttypes.h sys/inttypes.h]) ; do 167*735d6239SKiyoung Kim unset ac_cv_type_u_int32_t 168*735d6239SKiyoung Kim unset ac_cv_type_u_int64_t 169*735d6239SKiyoung Kim AC_CHECK_TYPE(u_int32_t,[ac_cv_header_stdint_u=$i],continue,[#include <$i>]) 170*735d6239SKiyoung Kim AC_CHECK_TYPE(u_int64_t,[and64="/u_int64_t"],[and64=""],[#include<$i>]) 171*735d6239SKiyoung Kim m4_ifvaln([$1],[$1]) break 172*735d6239SKiyoung Kim break; 173*735d6239SKiyoung Kim done 174*735d6239SKiyoung Kim AC_MSG_CHECKING([for stdint u_int32_t]) 175*735d6239SKiyoung Kim ]) 176*735d6239SKiyoung Kim]) 177*735d6239SKiyoung Kim 178*735d6239SKiyoung KimAC_DEFUN([AX_CREATE_STDINT_H], 179*735d6239SKiyoung Kim[# ------ AX CREATE STDINT H ------------------------------------- 180*735d6239SKiyoung KimAC_MSG_CHECKING([for stdint types]) 181*735d6239SKiyoung Kimac_stdint_h=`echo ifelse($1, , _stdint.h, $1)` 182*735d6239SKiyoung Kim# try to shortcircuit - if the default include path of the compiler 183*735d6239SKiyoung Kim# can find a "stdint.h" header then we assume that all compilers can. 184*735d6239SKiyoung KimAC_CACHE_VAL([ac_cv_header_stdint_t],[ 185*735d6239SKiyoung Kimold_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS="" 186*735d6239SKiyoung Kimold_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS="" 187*735d6239SKiyoung Kimold_CFLAGS="$CFLAGS" ; CFLAGS="" 188*735d6239SKiyoung KimAC_TRY_COMPILE([#include <stdint.h>],[int_least32_t v = 0;], 189*735d6239SKiyoung Kim[ac_cv_stdint_result="(assuming C99 compatible system)" 190*735d6239SKiyoung Kim ac_cv_header_stdint_t="stdint.h"; ], 191*735d6239SKiyoung Kim[ac_cv_header_stdint_t=""]) 192*735d6239SKiyoung KimCXXFLAGS="$old_CXXFLAGS" 193*735d6239SKiyoung KimCPPFLAGS="$old_CPPFLAGS" 194*735d6239SKiyoung KimCFLAGS="$old_CFLAGS" ]) 195*735d6239SKiyoung Kim 196*735d6239SKiyoung Kimv="... $ac_cv_header_stdint_h" 197*735d6239SKiyoung Kimif test "$ac_stdint_h" = "stdint.h" ; then 198*735d6239SKiyoung Kim AC_MSG_RESULT([(are you sure you want them in ./stdint.h?)]) 199*735d6239SKiyoung Kimelif test "$ac_stdint_h" = "inttypes.h" ; then 200*735d6239SKiyoung Kim AC_MSG_RESULT([(are you sure you want them in ./inttypes.h?)]) 201*735d6239SKiyoung Kimelif test "_$ac_cv_header_stdint_t" = "_" ; then 202*735d6239SKiyoung Kim AC_MSG_RESULT([(putting them into $ac_stdint_h)$v]) 203*735d6239SKiyoung Kimelse 204*735d6239SKiyoung Kim ac_cv_header_stdint="$ac_cv_header_stdint_t" 205*735d6239SKiyoung Kim AC_MSG_RESULT([$ac_cv_header_stdint (shortcircuit)]) 206*735d6239SKiyoung Kimfi 207*735d6239SKiyoung Kim 208*735d6239SKiyoung Kimif test "_$ac_cv_header_stdint_t" = "_" ; then # can not shortcircuit.. 209*735d6239SKiyoung Kim 210*735d6239SKiyoung Kimdnl .....intro message done, now do a few system checks..... 211*735d6239SKiyoung Kimdnl btw, all old CHECK_TYPE macros do automatically "DEFINE" a type, 212*735d6239SKiyoung Kimdnl therefore we use the autoconf implementation detail CHECK_TYPE_NEW 213*735d6239SKiyoung Kimdnl instead that is triggered with 3 or more arguments (see types.m4) 214*735d6239SKiyoung Kim 215*735d6239SKiyoung Kiminttype_headers=`echo $2 | sed -e 's/,/ /g'` 216*735d6239SKiyoung Kim 217*735d6239SKiyoung Kimac_cv_stdint_result="(no helpful system typedefs seen)" 218*735d6239SKiyoung KimAX_CHECK_HEADER_STDINT_X(dnl 219*735d6239SKiyoung Kim stdint.h inttypes.h sys/inttypes.h $inttype_headers, 220*735d6239SKiyoung Kim ac_cv_stdint_result="(seen uintptr_t$and64 in $i)") 221*735d6239SKiyoung Kim 222*735d6239SKiyoung Kimif test "_$ac_cv_header_stdint_x" = "_" ; then 223*735d6239SKiyoung KimAX_CHECK_HEADER_STDINT_O(dnl, 224*735d6239SKiyoung Kim inttypes.h sys/inttypes.h stdint.h $inttype_headers, 225*735d6239SKiyoung Kim ac_cv_stdint_result="(seen uint32_t$and64 in $i)") 226*735d6239SKiyoung Kimfi 227*735d6239SKiyoung Kim 228*735d6239SKiyoung Kimif test "_$ac_cv_header_stdint_x" = "_" ; then 229*735d6239SKiyoung Kimif test "_$ac_cv_header_stdint_o" = "_" ; then 230*735d6239SKiyoung KimAX_CHECK_HEADER_STDINT_U(dnl, 231*735d6239SKiyoung Kim sys/types.h inttypes.h sys/inttypes.h $inttype_headers, 232*735d6239SKiyoung Kim ac_cv_stdint_result="(seen u_int32_t$and64 in $i)") 233*735d6239SKiyoung Kimfi fi 234*735d6239SKiyoung Kim 235*735d6239SKiyoung Kimdnl if there was no good C99 header file, do some typedef checks... 236*735d6239SKiyoung Kimif test "_$ac_cv_header_stdint_x" = "_" ; then 237*735d6239SKiyoung Kim AC_MSG_CHECKING([for stdint datatype model]) 238*735d6239SKiyoung Kim AC_MSG_RESULT([(..)]) 239*735d6239SKiyoung Kim AX_CHECK_DATA_MODEL 240*735d6239SKiyoung Kimfi 241*735d6239SKiyoung Kim 242*735d6239SKiyoung Kimif test "_$ac_cv_header_stdint_x" != "_" ; then 243*735d6239SKiyoung Kim ac_cv_header_stdint="$ac_cv_header_stdint_x" 244*735d6239SKiyoung Kimelif test "_$ac_cv_header_stdint_o" != "_" ; then 245*735d6239SKiyoung Kim ac_cv_header_stdint="$ac_cv_header_stdint_o" 246*735d6239SKiyoung Kimelif test "_$ac_cv_header_stdint_u" != "_" ; then 247*735d6239SKiyoung Kim ac_cv_header_stdint="$ac_cv_header_stdint_u" 248*735d6239SKiyoung Kimelse 249*735d6239SKiyoung Kim ac_cv_header_stdint="stddef.h" 250*735d6239SKiyoung Kimfi 251*735d6239SKiyoung Kim 252*735d6239SKiyoung KimAC_MSG_CHECKING([for extra inttypes in chosen header]) 253*735d6239SKiyoung KimAC_MSG_RESULT([($ac_cv_header_stdint)]) 254*735d6239SKiyoung Kimdnl see if int_least and int_fast types are present in _this_ header. 255*735d6239SKiyoung Kimunset ac_cv_type_int_least32_t 256*735d6239SKiyoung Kimunset ac_cv_type_int_fast32_t 257*735d6239SKiyoung KimAC_CHECK_TYPE(int_least32_t,,,[#include <$ac_cv_header_stdint>]) 258*735d6239SKiyoung KimAC_CHECK_TYPE(int_fast32_t,,,[#include<$ac_cv_header_stdint>]) 259*735d6239SKiyoung KimAC_CHECK_TYPE(intmax_t,,,[#include <$ac_cv_header_stdint>]) 260*735d6239SKiyoung Kim 261*735d6239SKiyoung Kimfi # shortcircut to system "stdint.h" 262*735d6239SKiyoung Kim# ------------------ PREPARE VARIABLES ------------------------------ 263*735d6239SKiyoung Kimif test "$GCC" = "yes" ; then 264*735d6239SKiyoung Kimac_cv_stdint_message="using gnu compiler "`$CC --version | head -1` 265*735d6239SKiyoung Kimelse 266*735d6239SKiyoung Kimac_cv_stdint_message="using $CC" 267*735d6239SKiyoung Kimfi 268*735d6239SKiyoung Kim 269*735d6239SKiyoung KimAC_MSG_RESULT([make use of $ac_cv_header_stdint in $ac_stdint_h dnl 270*735d6239SKiyoung Kim$ac_cv_stdint_result]) 271*735d6239SKiyoung Kim 272*735d6239SKiyoung Kimdnl ----------------------------------------------------------------- 273*735d6239SKiyoung Kim# ----------------- DONE inttypes.h checks START header ------------- 274*735d6239SKiyoung KimAC_CONFIG_COMMANDS([$ac_stdint_h],[ 275*735d6239SKiyoung KimAC_MSG_NOTICE(creating $ac_stdint_h : $_ac_stdint_h) 276*735d6239SKiyoung Kimac_stdint=$tmp/_stdint.h 277*735d6239SKiyoung Kim 278*735d6239SKiyoung Kimecho "#ifndef" $_ac_stdint_h >$ac_stdint 279*735d6239SKiyoung Kimecho "#define" $_ac_stdint_h "1" >>$ac_stdint 280*735d6239SKiyoung Kimecho "#ifndef" _GENERATED_STDINT_H >>$ac_stdint 281*735d6239SKiyoung Kimecho "#define" _GENERATED_STDINT_H '"'$PACKAGE $VERSION'"' >>$ac_stdint 282*735d6239SKiyoung Kimecho "/* generated $ac_cv_stdint_message */" >>$ac_stdint 283*735d6239SKiyoung Kimif test "_$ac_cv_header_stdint_t" != "_" ; then 284*735d6239SKiyoung Kimecho "#define _STDINT_HAVE_STDINT_H" "1" >>$ac_stdint 285*735d6239SKiyoung Kimecho "#include <stdint.h>" >>$ac_stdint 286*735d6239SKiyoung Kimecho "#endif" >>$ac_stdint 287*735d6239SKiyoung Kimecho "#endif" >>$ac_stdint 288*735d6239SKiyoung Kimelse 289*735d6239SKiyoung Kim 290*735d6239SKiyoung Kimcat >>$ac_stdint <<STDINT_EOF 291*735d6239SKiyoung Kim 292*735d6239SKiyoung Kim/* ................... shortcircuit part ........................... */ 293*735d6239SKiyoung Kim 294*735d6239SKiyoung Kim#if defined HAVE_STDINT_H || defined _STDINT_HAVE_STDINT_H 295*735d6239SKiyoung Kim#include <stdint.h> 296*735d6239SKiyoung Kim#else 297*735d6239SKiyoung Kim#include <stddef.h> 298*735d6239SKiyoung Kim 299*735d6239SKiyoung Kim/* .................... configured part ............................ */ 300*735d6239SKiyoung Kim 301*735d6239SKiyoung KimSTDINT_EOF 302*735d6239SKiyoung Kim 303*735d6239SKiyoung Kimecho "/* whether we have a C99 compatible stdint header file */" >>$ac_stdint 304*735d6239SKiyoung Kimif test "_$ac_cv_header_stdint_x" != "_" ; then 305*735d6239SKiyoung Kim ac_header="$ac_cv_header_stdint_x" 306*735d6239SKiyoung Kim echo "#define _STDINT_HEADER_INTPTR" '"'"$ac_header"'"' >>$ac_stdint 307*735d6239SKiyoung Kimelse 308*735d6239SKiyoung Kim echo "/* #undef _STDINT_HEADER_INTPTR */" >>$ac_stdint 309*735d6239SKiyoung Kimfi 310*735d6239SKiyoung Kim 311*735d6239SKiyoung Kimecho "/* whether we have a C96 compatible inttypes header file */" >>$ac_stdint 312*735d6239SKiyoung Kimif test "_$ac_cv_header_stdint_o" != "_" ; then 313*735d6239SKiyoung Kim ac_header="$ac_cv_header_stdint_o" 314*735d6239SKiyoung Kim echo "#define _STDINT_HEADER_UINT32" '"'"$ac_header"'"' >>$ac_stdint 315*735d6239SKiyoung Kimelse 316*735d6239SKiyoung Kim echo "/* #undef _STDINT_HEADER_UINT32 */" >>$ac_stdint 317*735d6239SKiyoung Kimfi 318*735d6239SKiyoung Kim 319*735d6239SKiyoung Kimecho "/* whether we have a BSD compatible inet types header */" >>$ac_stdint 320*735d6239SKiyoung Kimif test "_$ac_cv_header_stdint_u" != "_" ; then 321*735d6239SKiyoung Kim ac_header="$ac_cv_header_stdint_u" 322*735d6239SKiyoung Kim echo "#define _STDINT_HEADER_U_INT32" '"'"$ac_header"'"' >>$ac_stdint 323*735d6239SKiyoung Kimelse 324*735d6239SKiyoung Kim echo "/* #undef _STDINT_HEADER_U_INT32 */" >>$ac_stdint 325*735d6239SKiyoung Kimfi 326*735d6239SKiyoung Kim 327*735d6239SKiyoung Kimecho "" >>$ac_stdint 328*735d6239SKiyoung Kim 329*735d6239SKiyoung Kimif test "_$ac_header" != "_" ; then if test "$ac_header" != "stddef.h" ; then 330*735d6239SKiyoung Kim echo "#include <$ac_header>" >>$ac_stdint 331*735d6239SKiyoung Kim echo "" >>$ac_stdint 332*735d6239SKiyoung Kimfi fi 333*735d6239SKiyoung Kim 334*735d6239SKiyoung Kimecho "/* which 64bit typedef has been found */" >>$ac_stdint 335*735d6239SKiyoung Kimif test "$ac_cv_type_uint64_t" = "yes" ; then 336*735d6239SKiyoung Kimecho "#define _STDINT_HAVE_UINT64_T" "1" >>$ac_stdint 337*735d6239SKiyoung Kimelse 338*735d6239SKiyoung Kimecho "/* #undef _STDINT_HAVE_UINT64_T */" >>$ac_stdint 339*735d6239SKiyoung Kimfi 340*735d6239SKiyoung Kimif test "$ac_cv_type_u_int64_t" = "yes" ; then 341*735d6239SKiyoung Kimecho "#define _STDINT_HAVE_U_INT64_T" "1" >>$ac_stdint 342*735d6239SKiyoung Kimelse 343*735d6239SKiyoung Kimecho "/* #undef _STDINT_HAVE_U_INT64_T */" >>$ac_stdint 344*735d6239SKiyoung Kimfi 345*735d6239SKiyoung Kimecho "" >>$ac_stdint 346*735d6239SKiyoung Kim 347*735d6239SKiyoung Kimecho "/* which type model has been detected */" >>$ac_stdint 348*735d6239SKiyoung Kimif test "_$ac_cv_char_data_model" != "_" ; then 349*735d6239SKiyoung Kimecho "#define _STDINT_CHAR_MODEL" "$ac_cv_char_data_model" >>$ac_stdint 350*735d6239SKiyoung Kimecho "#define _STDINT_LONG_MODEL" "$ac_cv_long_data_model" >>$ac_stdint 351*735d6239SKiyoung Kimelse 352*735d6239SKiyoung Kimecho "/* #undef _STDINT_CHAR_MODEL // skipped */" >>$ac_stdint 353*735d6239SKiyoung Kimecho "/* #undef _STDINT_LONG_MODEL // skipped */" >>$ac_stdint 354*735d6239SKiyoung Kimfi 355*735d6239SKiyoung Kimecho "" >>$ac_stdint 356*735d6239SKiyoung Kim 357*735d6239SKiyoung Kimecho "/* whether int_least types were detected */" >>$ac_stdint 358*735d6239SKiyoung Kimif test "$ac_cv_type_int_least32_t" = "yes"; then 359*735d6239SKiyoung Kimecho "#define _STDINT_HAVE_INT_LEAST32_T" "1" >>$ac_stdint 360*735d6239SKiyoung Kimelse 361*735d6239SKiyoung Kimecho "/* #undef _STDINT_HAVE_INT_LEAST32_T */" >>$ac_stdint 362*735d6239SKiyoung Kimfi 363*735d6239SKiyoung Kimecho "/* whether int_fast types were detected */" >>$ac_stdint 364*735d6239SKiyoung Kimif test "$ac_cv_type_int_fast32_t" = "yes"; then 365*735d6239SKiyoung Kimecho "#define _STDINT_HAVE_INT_FAST32_T" "1" >>$ac_stdint 366*735d6239SKiyoung Kimelse 367*735d6239SKiyoung Kimecho "/* #undef _STDINT_HAVE_INT_FAST32_T */" >>$ac_stdint 368*735d6239SKiyoung Kimfi 369*735d6239SKiyoung Kimecho "/* whether intmax_t type was detected */" >>$ac_stdint 370*735d6239SKiyoung Kimif test "$ac_cv_type_intmax_t" = "yes"; then 371*735d6239SKiyoung Kimecho "#define _STDINT_HAVE_INTMAX_T" "1" >>$ac_stdint 372*735d6239SKiyoung Kimelse 373*735d6239SKiyoung Kimecho "/* #undef _STDINT_HAVE_INTMAX_T */" >>$ac_stdint 374*735d6239SKiyoung Kimfi 375*735d6239SKiyoung Kimecho "" >>$ac_stdint 376*735d6239SKiyoung Kim 377*735d6239SKiyoung Kim cat >>$ac_stdint <<STDINT_EOF 378*735d6239SKiyoung Kim/* .................... detections part ............................ */ 379*735d6239SKiyoung Kim 380*735d6239SKiyoung Kim/* whether we need to define bitspecific types from compiler base types */ 381*735d6239SKiyoung Kim#ifndef _STDINT_HEADER_INTPTR 382*735d6239SKiyoung Kim#ifndef _STDINT_HEADER_UINT32 383*735d6239SKiyoung Kim#ifndef _STDINT_HEADER_U_INT32 384*735d6239SKiyoung Kim#define _STDINT_NEED_INT_MODEL_T 385*735d6239SKiyoung Kim#else 386*735d6239SKiyoung Kim#define _STDINT_HAVE_U_INT_TYPES 387*735d6239SKiyoung Kim#endif 388*735d6239SKiyoung Kim#endif 389*735d6239SKiyoung Kim#endif 390*735d6239SKiyoung Kim 391*735d6239SKiyoung Kim#ifdef _STDINT_HAVE_U_INT_TYPES 392*735d6239SKiyoung Kim#undef _STDINT_NEED_INT_MODEL_T 393*735d6239SKiyoung Kim#endif 394*735d6239SKiyoung Kim 395*735d6239SKiyoung Kim#ifdef _STDINT_CHAR_MODEL 396*735d6239SKiyoung Kim#if _STDINT_CHAR_MODEL+0 == 122 || _STDINT_CHAR_MODEL+0 == 124 397*735d6239SKiyoung Kim#ifndef _STDINT_BYTE_MODEL 398*735d6239SKiyoung Kim#define _STDINT_BYTE_MODEL 12 399*735d6239SKiyoung Kim#endif 400*735d6239SKiyoung Kim#endif 401*735d6239SKiyoung Kim#endif 402*735d6239SKiyoung Kim 403*735d6239SKiyoung Kim#ifndef _STDINT_HAVE_INT_LEAST32_T 404*735d6239SKiyoung Kim#define _STDINT_NEED_INT_LEAST_T 405*735d6239SKiyoung Kim#endif 406*735d6239SKiyoung Kim 407*735d6239SKiyoung Kim#ifndef _STDINT_HAVE_INT_FAST32_T 408*735d6239SKiyoung Kim#define _STDINT_NEED_INT_FAST_T 409*735d6239SKiyoung Kim#endif 410*735d6239SKiyoung Kim 411*735d6239SKiyoung Kim#ifndef _STDINT_HEADER_INTPTR 412*735d6239SKiyoung Kim#define _STDINT_NEED_INTPTR_T 413*735d6239SKiyoung Kim#ifndef _STDINT_HAVE_INTMAX_T 414*735d6239SKiyoung Kim#define _STDINT_NEED_INTMAX_T 415*735d6239SKiyoung Kim#endif 416*735d6239SKiyoung Kim#endif 417*735d6239SKiyoung Kim 418*735d6239SKiyoung Kim 419*735d6239SKiyoung Kim/* .................... definition part ............................ */ 420*735d6239SKiyoung Kim 421*735d6239SKiyoung Kim/* some system headers have good uint64_t */ 422*735d6239SKiyoung Kim#ifndef _HAVE_UINT64_T 423*735d6239SKiyoung Kim#if defined _STDINT_HAVE_UINT64_T || defined HAVE_UINT64_T 424*735d6239SKiyoung Kim#define _HAVE_UINT64_T 425*735d6239SKiyoung Kim#elif defined _STDINT_HAVE_U_INT64_T || defined HAVE_U_INT64_T 426*735d6239SKiyoung Kim#define _HAVE_UINT64_T 427*735d6239SKiyoung Kimtypedef u_int64_t uint64_t; 428*735d6239SKiyoung Kim#endif 429*735d6239SKiyoung Kim#endif 430*735d6239SKiyoung Kim 431*735d6239SKiyoung Kim#ifndef _HAVE_UINT64_T 432*735d6239SKiyoung Kim/* .. here are some common heuristics using compiler runtime specifics */ 433*735d6239SKiyoung Kim#if defined __STDC_VERSION__ && defined __STDC_VERSION__ >= 199901L 434*735d6239SKiyoung Kim#define _HAVE_UINT64_T 435*735d6239SKiyoung Kim#define _HAVE_LONGLONG_UINT64_T 436*735d6239SKiyoung Kimtypedef long long int64_t; 437*735d6239SKiyoung Kimtypedef unsigned long long uint64_t; 438*735d6239SKiyoung Kim 439*735d6239SKiyoung Kim#elif !defined __STRICT_ANSI__ 440*735d6239SKiyoung Kim#if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__ 441*735d6239SKiyoung Kim#define _HAVE_UINT64_T 442*735d6239SKiyoung Kimtypedef __int64 int64_t; 443*735d6239SKiyoung Kimtypedef unsigned __int64 uint64_t; 444*735d6239SKiyoung Kim 445*735d6239SKiyoung Kim#elif defined __GNUC__ || defined __MWERKS__ || defined __ELF__ 446*735d6239SKiyoung Kim/* note: all ELF-systems seem to have loff-support which needs 64-bit */ 447*735d6239SKiyoung Kim#if !defined _NO_LONGLONG 448*735d6239SKiyoung Kim#define _HAVE_UINT64_T 449*735d6239SKiyoung Kim#define _HAVE_LONGLONG_UINT64_T 450*735d6239SKiyoung Kimtypedef long long int64_t; 451*735d6239SKiyoung Kimtypedef unsigned long long uint64_t; 452*735d6239SKiyoung Kim#endif 453*735d6239SKiyoung Kim 454*735d6239SKiyoung Kim#elif defined __alpha || (defined __mips && defined _ABIN32) 455*735d6239SKiyoung Kim#if !defined _NO_LONGLONG 456*735d6239SKiyoung Kimtypedef long int64_t; 457*735d6239SKiyoung Kimtypedef unsigned long uint64_t; 458*735d6239SKiyoung Kim#endif 459*735d6239SKiyoung Kim /* compiler/cpu type to define int64_t */ 460*735d6239SKiyoung Kim#endif 461*735d6239SKiyoung Kim#endif 462*735d6239SKiyoung Kim#endif 463*735d6239SKiyoung Kim 464*735d6239SKiyoung Kim#if defined _STDINT_HAVE_U_INT_TYPES 465*735d6239SKiyoung Kim/* int8_t int16_t int32_t defined by inet code, redeclare the u_intXX types */ 466*735d6239SKiyoung Kimtypedef u_int8_t uint8_t; 467*735d6239SKiyoung Kimtypedef u_int16_t uint16_t; 468*735d6239SKiyoung Kimtypedef u_int32_t uint32_t; 469*735d6239SKiyoung Kim 470*735d6239SKiyoung Kim/* glibc compatibility */ 471*735d6239SKiyoung Kim#ifndef __int8_t_defined 472*735d6239SKiyoung Kim#define __int8_t_defined 473*735d6239SKiyoung Kim#endif 474*735d6239SKiyoung Kim#endif 475*735d6239SKiyoung Kim 476*735d6239SKiyoung Kim#ifdef _STDINT_NEED_INT_MODEL_T 477*735d6239SKiyoung Kim/* we must guess all the basic types. Apart from byte-adressable system, */ 478*735d6239SKiyoung Kim/* there a few 32-bit-only dsp-systems that we guard with BYTE_MODEL 8-} */ 479*735d6239SKiyoung Kim/* (btw, those nibble-addressable systems are way off, or so we assume) */ 480*735d6239SKiyoung Kim 481*735d6239SKiyoung Kimdnl /* have a look at "64bit and data size neutrality" at */ 482*735d6239SKiyoung Kimdnl /* http://unix.org/version2/whatsnew/login_64bit.html */ 483*735d6239SKiyoung Kimdnl /* (the shorthand "ILP" types always have a "P" part) */ 484*735d6239SKiyoung Kim 485*735d6239SKiyoung Kim#if defined _STDINT_BYTE_MODEL 486*735d6239SKiyoung Kim#if _STDINT_LONG_MODEL+0 == 242 487*735d6239SKiyoung Kim/* 2:4:2 = IP16 = a normal 16-bit system */ 488*735d6239SKiyoung Kimtypedef unsigned char uint8_t; 489*735d6239SKiyoung Kimtypedef unsigned short uint16_t; 490*735d6239SKiyoung Kimtypedef unsigned long uint32_t; 491*735d6239SKiyoung Kim#ifndef __int8_t_defined 492*735d6239SKiyoung Kim#define __int8_t_defined 493*735d6239SKiyoung Kimtypedef char int8_t; 494*735d6239SKiyoung Kimtypedef short int16_t; 495*735d6239SKiyoung Kimtypedef long int32_t; 496*735d6239SKiyoung Kim#endif 497*735d6239SKiyoung Kim#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL == 444 498*735d6239SKiyoung Kim/* 2:4:4 = LP32 = a 32-bit system derived from a 16-bit */ 499*735d6239SKiyoung Kim/* 4:4:4 = ILP32 = a normal 32-bit system */ 500*735d6239SKiyoung Kimtypedef unsigned char uint8_t; 501*735d6239SKiyoung Kimtypedef unsigned short uint16_t; 502*735d6239SKiyoung Kimtypedef unsigned int uint32_t; 503*735d6239SKiyoung Kim#ifndef __int8_t_defined 504*735d6239SKiyoung Kim#define __int8_t_defined 505*735d6239SKiyoung Kimtypedef char int8_t; 506*735d6239SKiyoung Kimtypedef short int16_t; 507*735d6239SKiyoung Kimtypedef int int32_t; 508*735d6239SKiyoung Kim#endif 509*735d6239SKiyoung Kim#elif _STDINT_LONG_MODEL+0 == 484 || _STDINT_LONG_MODEL+0 == 488 510*735d6239SKiyoung Kim/* 4:8:4 = IP32 = a 32-bit system prepared for 64-bit */ 511*735d6239SKiyoung Kim/* 4:8:8 = LP64 = a normal 64-bit system */ 512*735d6239SKiyoung Kimtypedef unsigned char uint8_t; 513*735d6239SKiyoung Kimtypedef unsigned short uint16_t; 514*735d6239SKiyoung Kimtypedef unsigned int uint32_t; 515*735d6239SKiyoung Kim#ifndef __int8_t_defined 516*735d6239SKiyoung Kim#define __int8_t_defined 517*735d6239SKiyoung Kimtypedef char int8_t; 518*735d6239SKiyoung Kimtypedef short int16_t; 519*735d6239SKiyoung Kimtypedef int int32_t; 520*735d6239SKiyoung Kim#endif 521*735d6239SKiyoung Kim/* this system has a "long" of 64bit */ 522*735d6239SKiyoung Kim#ifndef _HAVE_UINT64_T 523*735d6239SKiyoung Kim#define _HAVE_UINT64_T 524*735d6239SKiyoung Kimtypedef unsigned long uint64_t; 525*735d6239SKiyoung Kimtypedef long int64_t; 526*735d6239SKiyoung Kim#endif 527*735d6239SKiyoung Kim#elif _STDINT_LONG_MODEL+0 == 448 528*735d6239SKiyoung Kim/* LLP64 a 64-bit system derived from a 32-bit system */ 529*735d6239SKiyoung Kimtypedef unsigned char uint8_t; 530*735d6239SKiyoung Kimtypedef unsigned short uint16_t; 531*735d6239SKiyoung Kimtypedef unsigned int uint32_t; 532*735d6239SKiyoung Kim#ifndef __int8_t_defined 533*735d6239SKiyoung Kim#define __int8_t_defined 534*735d6239SKiyoung Kimtypedef char int8_t; 535*735d6239SKiyoung Kimtypedef short int16_t; 536*735d6239SKiyoung Kimtypedef int int32_t; 537*735d6239SKiyoung Kim#endif 538*735d6239SKiyoung Kim/* assuming the system has a "long long" */ 539*735d6239SKiyoung Kim#ifndef _HAVE_UINT64_T 540*735d6239SKiyoung Kim#define _HAVE_UINT64_T 541*735d6239SKiyoung Kim#define _HAVE_LONGLONG_UINT64_T 542*735d6239SKiyoung Kimtypedef unsigned long long uint64_t; 543*735d6239SKiyoung Kimtypedef long long int64_t; 544*735d6239SKiyoung Kim#endif 545*735d6239SKiyoung Kim#else 546*735d6239SKiyoung Kim#define _STDINT_NO_INT32_T 547*735d6239SKiyoung Kim#endif 548*735d6239SKiyoung Kim#else 549*735d6239SKiyoung Kim#define _STDINT_NO_INT8_T 550*735d6239SKiyoung Kim#define _STDINT_NO_INT32_T 551*735d6239SKiyoung Kim#endif 552*735d6239SKiyoung Kim#endif 553*735d6239SKiyoung Kim 554*735d6239SKiyoung Kim/* 555*735d6239SKiyoung Kim * quote from SunOS-5.8 sys/inttypes.h: 556*735d6239SKiyoung Kim * Use at your own risk. As of February 1996, the committee is squarely 557*735d6239SKiyoung Kim * behind the fixed sized types; the "least" and "fast" types are still being 558*735d6239SKiyoung Kim * discussed. The probability that the "fast" types may be removed before 559*735d6239SKiyoung Kim * the standard is finalized is high enough that they are not currently 560*735d6239SKiyoung Kim * implemented. 561*735d6239SKiyoung Kim */ 562*735d6239SKiyoung Kim 563*735d6239SKiyoung Kim#if defined _STDINT_NEED_INT_LEAST_T 564*735d6239SKiyoung Kimtypedef int8_t int_least8_t; 565*735d6239SKiyoung Kimtypedef int16_t int_least16_t; 566*735d6239SKiyoung Kimtypedef int32_t int_least32_t; 567*735d6239SKiyoung Kim#ifdef _HAVE_UINT64_T 568*735d6239SKiyoung Kimtypedef int64_t int_least64_t; 569*735d6239SKiyoung Kim#endif 570*735d6239SKiyoung Kim 571*735d6239SKiyoung Kimtypedef uint8_t uint_least8_t; 572*735d6239SKiyoung Kimtypedef uint16_t uint_least16_t; 573*735d6239SKiyoung Kimtypedef uint32_t uint_least32_t; 574*735d6239SKiyoung Kim#ifdef _HAVE_UINT64_T 575*735d6239SKiyoung Kimtypedef uint64_t uint_least64_t; 576*735d6239SKiyoung Kim#endif 577*735d6239SKiyoung Kim /* least types */ 578*735d6239SKiyoung Kim#endif 579*735d6239SKiyoung Kim 580*735d6239SKiyoung Kim#if defined _STDINT_NEED_INT_FAST_T 581*735d6239SKiyoung Kimtypedef int8_t int_fast8_t; 582*735d6239SKiyoung Kimtypedef int int_fast16_t; 583*735d6239SKiyoung Kimtypedef int32_t int_fast32_t; 584*735d6239SKiyoung Kim#ifdef _HAVE_UINT64_T 585*735d6239SKiyoung Kimtypedef int64_t int_fast64_t; 586*735d6239SKiyoung Kim#endif 587*735d6239SKiyoung Kim 588*735d6239SKiyoung Kimtypedef uint8_t uint_fast8_t; 589*735d6239SKiyoung Kimtypedef unsigned uint_fast16_t; 590*735d6239SKiyoung Kimtypedef uint32_t uint_fast32_t; 591*735d6239SKiyoung Kim#ifdef _HAVE_UINT64_T 592*735d6239SKiyoung Kimtypedef uint64_t uint_fast64_t; 593*735d6239SKiyoung Kim#endif 594*735d6239SKiyoung Kim /* fast types */ 595*735d6239SKiyoung Kim#endif 596*735d6239SKiyoung Kim 597*735d6239SKiyoung Kim#ifdef _STDINT_NEED_INTMAX_T 598*735d6239SKiyoung Kim#ifdef _HAVE_UINT64_T 599*735d6239SKiyoung Kimtypedef int64_t intmax_t; 600*735d6239SKiyoung Kimtypedef uint64_t uintmax_t; 601*735d6239SKiyoung Kim#else 602*735d6239SKiyoung Kimtypedef long intmax_t; 603*735d6239SKiyoung Kimtypedef unsigned long uintmax_t; 604*735d6239SKiyoung Kim#endif 605*735d6239SKiyoung Kim#endif 606*735d6239SKiyoung Kim 607*735d6239SKiyoung Kim#ifdef _STDINT_NEED_INTPTR_T 608*735d6239SKiyoung Kim#ifndef __intptr_t_defined 609*735d6239SKiyoung Kim#define __intptr_t_defined 610*735d6239SKiyoung Kim/* we encourage using "long" to store pointer values, never use "int" ! */ 611*735d6239SKiyoung Kim#if _STDINT_LONG_MODEL+0 == 242 || _STDINT_LONG_MODEL+0 == 484 612*735d6239SKiyoung Kimtypedef unsinged int uintptr_t; 613*735d6239SKiyoung Kimtypedef int intptr_t; 614*735d6239SKiyoung Kim#elif _STDINT_LONG_MODEL+0 == 244 || _STDINT_LONG_MODEL+0 == 444 615*735d6239SKiyoung Kimtypedef unsigned long uintptr_t; 616*735d6239SKiyoung Kimtypedef long intptr_t; 617*735d6239SKiyoung Kim#elif _STDINT_LONG_MODEL+0 == 448 && defined _HAVE_UINT64_T 618*735d6239SKiyoung Kimtypedef uint64_t uintptr_t; 619*735d6239SKiyoung Kimtypedef int64_t intptr_t; 620*735d6239SKiyoung Kim#else /* matches typical system types ILP32 and LP64 - but not IP16 or LLP64 */ 621*735d6239SKiyoung Kimtypedef unsigned long uintptr_t; 622*735d6239SKiyoung Kimtypedef long intptr_t; 623*735d6239SKiyoung Kim#endif 624*735d6239SKiyoung Kim#endif 625*735d6239SKiyoung Kim#endif 626*735d6239SKiyoung Kim 627*735d6239SKiyoung Kim/* The ISO C99 standard specifies that in C++ implementations these 628*735d6239SKiyoung Kim should only be defined if explicitly requested. */ 629*735d6239SKiyoung Kim#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS 630*735d6239SKiyoung Kim#ifndef UINT32_C 631*735d6239SKiyoung Kim 632*735d6239SKiyoung Kim/* Signed. */ 633*735d6239SKiyoung Kim# define INT8_C(c) c 634*735d6239SKiyoung Kim# define INT16_C(c) c 635*735d6239SKiyoung Kim# define INT32_C(c) c 636*735d6239SKiyoung Kim# ifdef _HAVE_LONGLONG_UINT64_T 637*735d6239SKiyoung Kim# define INT64_C(c) c ## L 638*735d6239SKiyoung Kim# else 639*735d6239SKiyoung Kim# define INT64_C(c) c ## LL 640*735d6239SKiyoung Kim# endif 641*735d6239SKiyoung Kim 642*735d6239SKiyoung Kim/* Unsigned. */ 643*735d6239SKiyoung Kim# define UINT8_C(c) c ## U 644*735d6239SKiyoung Kim# define UINT16_C(c) c ## U 645*735d6239SKiyoung Kim# define UINT32_C(c) c ## U 646*735d6239SKiyoung Kim# ifdef _HAVE_LONGLONG_UINT64_T 647*735d6239SKiyoung Kim# define UINT64_C(c) c ## UL 648*735d6239SKiyoung Kim# else 649*735d6239SKiyoung Kim# define UINT64_C(c) c ## ULL 650*735d6239SKiyoung Kim# endif 651*735d6239SKiyoung Kim 652*735d6239SKiyoung Kim/* Maximal type. */ 653*735d6239SKiyoung Kim# ifdef _HAVE_LONGLONG_UINT64_T 654*735d6239SKiyoung Kim# define INTMAX_C(c) c ## L 655*735d6239SKiyoung Kim# define UINTMAX_C(c) c ## UL 656*735d6239SKiyoung Kim# else 657*735d6239SKiyoung Kim# define INTMAX_C(c) c ## LL 658*735d6239SKiyoung Kim# define UINTMAX_C(c) c ## ULL 659*735d6239SKiyoung Kim# endif 660*735d6239SKiyoung Kim 661*735d6239SKiyoung Kim /* literalnumbers */ 662*735d6239SKiyoung Kim#endif 663*735d6239SKiyoung Kim#endif 664*735d6239SKiyoung Kim 665*735d6239SKiyoung Kim/* These limits are merily those of a two complement byte-oriented system */ 666*735d6239SKiyoung Kim 667*735d6239SKiyoung Kim/* Minimum of signed integral types. */ 668*735d6239SKiyoung Kim# define INT8_MIN (-128) 669*735d6239SKiyoung Kim# define INT16_MIN (-32767-1) 670*735d6239SKiyoung Kim# define INT32_MIN (-2147483647-1) 671*735d6239SKiyoung Kim# define INT64_MIN (-__INT64_C(9223372036854775807)-1) 672*735d6239SKiyoung Kim/* Maximum of signed integral types. */ 673*735d6239SKiyoung Kim# define INT8_MAX (127) 674*735d6239SKiyoung Kim# define INT16_MAX (32767) 675*735d6239SKiyoung Kim# define INT32_MAX (2147483647) 676*735d6239SKiyoung Kim# define INT64_MAX (__INT64_C(9223372036854775807)) 677*735d6239SKiyoung Kim 678*735d6239SKiyoung Kim/* Maximum of unsigned integral types. */ 679*735d6239SKiyoung Kim# define UINT8_MAX (255) 680*735d6239SKiyoung Kim# define UINT16_MAX (65535) 681*735d6239SKiyoung Kim# define UINT32_MAX (4294967295U) 682*735d6239SKiyoung Kim# define UINT64_MAX (__UINT64_C(18446744073709551615)) 683*735d6239SKiyoung Kim 684*735d6239SKiyoung Kim/* Minimum of signed integral types having a minimum size. */ 685*735d6239SKiyoung Kim# define INT_LEAST8_MIN INT8_MIN 686*735d6239SKiyoung Kim# define INT_LEAST16_MIN INT16_MIN 687*735d6239SKiyoung Kim# define INT_LEAST32_MIN INT32_MIN 688*735d6239SKiyoung Kim# define INT_LEAST64_MIN INT64_MIN 689*735d6239SKiyoung Kim/* Maximum of signed integral types having a minimum size. */ 690*735d6239SKiyoung Kim# define INT_LEAST8_MAX INT8_MAX 691*735d6239SKiyoung Kim# define INT_LEAST16_MAX INT16_MAX 692*735d6239SKiyoung Kim# define INT_LEAST32_MAX INT32_MAX 693*735d6239SKiyoung Kim# define INT_LEAST64_MAX INT64_MAX 694*735d6239SKiyoung Kim 695*735d6239SKiyoung Kim/* Maximum of unsigned integral types having a minimum size. */ 696*735d6239SKiyoung Kim# define UINT_LEAST8_MAX UINT8_MAX 697*735d6239SKiyoung Kim# define UINT_LEAST16_MAX UINT16_MAX 698*735d6239SKiyoung Kim# define UINT_LEAST32_MAX UINT32_MAX 699*735d6239SKiyoung Kim# define UINT_LEAST64_MAX UINT64_MAX 700*735d6239SKiyoung Kim 701*735d6239SKiyoung Kim /* shortcircuit*/ 702*735d6239SKiyoung Kim#endif 703*735d6239SKiyoung Kim /* once */ 704*735d6239SKiyoung Kim#endif 705*735d6239SKiyoung Kim#endif 706*735d6239SKiyoung KimSTDINT_EOF 707*735d6239SKiyoung Kimfi 708*735d6239SKiyoung Kim if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then 709*735d6239SKiyoung Kim AC_MSG_NOTICE([$ac_stdint_h is unchanged]) 710*735d6239SKiyoung Kim else 711*735d6239SKiyoung Kim ac_dir=`AS_DIRNAME(["$ac_stdint_h"])` 712*735d6239SKiyoung Kim AS_MKDIR_P(["$ac_dir"]) 713*735d6239SKiyoung Kim rm -f $ac_stdint_h 714*735d6239SKiyoung Kim mv $ac_stdint $ac_stdint_h 715*735d6239SKiyoung Kim fi 716*735d6239SKiyoung Kim],[# variables for create stdint.h replacement 717*735d6239SKiyoung KimPACKAGE="$PACKAGE" 718*735d6239SKiyoung KimVERSION="$VERSION" 719*735d6239SKiyoung Kimac_stdint_h="$ac_stdint_h" 720*735d6239SKiyoung Kim_ac_stdint_h=AS_TR_CPP(_$PACKAGE-$ac_stdint_h) 721*735d6239SKiyoung Kimac_cv_stdint_message="$ac_cv_stdint_message" 722*735d6239SKiyoung Kimac_cv_header_stdint_t="$ac_cv_header_stdint_t" 723*735d6239SKiyoung Kimac_cv_header_stdint_x="$ac_cv_header_stdint_x" 724*735d6239SKiyoung Kimac_cv_header_stdint_o="$ac_cv_header_stdint_o" 725*735d6239SKiyoung Kimac_cv_header_stdint_u="$ac_cv_header_stdint_u" 726*735d6239SKiyoung Kimac_cv_type_uint64_t="$ac_cv_type_uint64_t" 727*735d6239SKiyoung Kimac_cv_type_u_int64_t="$ac_cv_type_u_int64_t" 728*735d6239SKiyoung Kimac_cv_char_data_model="$ac_cv_char_data_model" 729*735d6239SKiyoung Kimac_cv_long_data_model="$ac_cv_long_data_model" 730*735d6239SKiyoung Kimac_cv_type_int_least32_t="$ac_cv_type_int_least32_t" 731*735d6239SKiyoung Kimac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t" 732*735d6239SKiyoung Kimac_cv_type_intmax_t="$ac_cv_type_intmax_t" 733*735d6239SKiyoung Kim]) 734*735d6239SKiyoung Kim]) 735