Bug #3632: win32 (MSVC)でsnapshotをmakeできない
http://redmine.ruby-lang.org/issues/show/3632

起票者: Akio Tajima
ステータス: Open, 優先度: Normal
ruby -v: ruby 1.9.3dev (2010-07-29 trunk 28783) [i386-mswin32]

snapshotをwin32(VC++6)でnmakeしようとすると、以下のエラーとなります。理由はsize_tが未定義だからです。

        cl -nologo -MD -Zi -W2 -O2b2xg- -G6 -Zm600 -DRUBY_EXPORT -I. -I.ext/incl
ude/i386-mswin32 -I./include -I. -I./missing     -Focbrt.obj -c -Tc./missing/cbr
t.c
cbrt.c
./include\ruby/missing.h(172) : error C2061: 構文エラー : 識別子 'strlcpy' がシンタックス
エラーを起こしました。
./include\ruby/missing.h(172) : error C2059: 構文エラー : ';'
./include\ruby/missing.h(172) : error C2059: 構文エラー : 'type'
./include\ruby/missing.h(176) : error C2061: 構文エラー : 識別子 'strlcat' がシンタックス
エラーを起こしました。
./include\ruby/missing.h(176) : error C2059: 構文エラー : ';'
./include\ruby/missing.h(176) : error C2059: 構文エラー : 'type'
NMAKE : fatal error U1077: 'cl' : リターン コード '0x2'
Stop.

cbrt.cがmissing.hをincludeして(1.9.2-preview3ではincludeしていません)、かつstddef.hのincludeがmissing.hによって行われているのですが、しかしmissing.hでstddef.hをincludeするかをHAVE_STDDEF_Hでチェックしていて、かつwin32/Makefile.subにHAVE_STDDEF_Hが未定義なのが原因です。

--- Makefile.sub~       Mon Jul 26 18:18:21 2010
+++ Makefile.sub        Sat Jul 31 00:22:37 2010
@@ -409,6 +409,7 @@
 #define HAVE_SYS_TYPES_H 1
 #define HAVE_SYS_STAT_H 1
 #define HAVE_STDLIB_H 1
+#define HAVE_STDDEF_H 1
 #define HAVE_STRING_H 1
 #define HAVE_MEMORY_H 1
 !if $(MSC_VER) >= 1400


----------------------------------------
http://redmine.ruby-lang.org