xref: /aosp_15_r20/external/libexif/m4m/stdint.m4 (revision 735d6239c16e246968a03ef6e2db00d67bad6cdc)
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