@@ -239,10 +239,46 @@ AC_CHECK_SIZEOF(float, 4)
239
239
AC_CHECK_SIZEOF(double, 8)
240
240
AC_CHECK_SIZEOF(time_t, 0)
241
241
242
- for id in pid_t gid_t uid_t; do
243
- AC_CHECK_TYPE($id, [typ=$id], [typ=int])
244
- AC_DEFINE_UNQUOTED(rb_$id, $typ)
245
- done
242
+ AC_DEFUN([RUBY_REPLACE_TYPE], [dnl
243
+ AC_CHECK_SIZEOF($1, 0, $3)
244
+ u=
245
+ size=$ac_cv_sizeof_[$1]
246
+ if test $size -gt 0; then
247
+ typ=$1
248
+ AC_COMPILE_IFELSE(
249
+ [AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT]
250
+ [$3], [($typ)-1 > 0])],
251
+ [u=U])
252
+ else
253
+ typ=$2
254
+ size=$ac_cv_sizeof_[$2]
255
+ fi
256
+ if test $size -gt $ac_cv_sizeof_long; then
257
+ f=LL
258
+ elif test $size = $ac_cv_sizeof_long; then
259
+ f=LONG
260
+ else
261
+ f=INT
262
+ fi
263
+ AC_DEFINE_UNQUOTED(rb_$1, $typ)
264
+ AC_DEFINE_UNQUOTED(SIZEOF_RB_`echo $1 | tr a-z A-Z`,
265
+ SIZEOF_`echo $typ | tr a-z A-Z`)
266
+ typ=`echo $1 | tr a-z A-Z | tr -d _`
267
+ AC_DEFINE_UNQUOTED(${typ}2NUM, ${u}${f}2NUM)
268
+ AC_DEFINE_UNQUOTED(NUM2${typ}, NUM2${u}${f})
269
+ ])
270
+ RUBY_REPLACE_TYPE(pid_t, int, [
271
+ #include <sys/types.h>
272
+ #include <unistd.h>
273
+ ])
274
+ RUBY_REPLACE_TYPE(uid_t, int, [
275
+ #include <sys/types.h>
276
+ #include <pwd.h>
277
+ ])
278
+ RUBY_REPLACE_TYPE(gid_t, int, [
279
+ #include <sys/types.h>
280
+ #include <grp.h>
281
+ ])
246
282
247
283
AC_CACHE_CHECK(for prototypes, rb_cv_have_prototypes,
248
284
[AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],
0 commit comments