From: ARIMA Yasuhiro Date: 1998-08-27T10:53:50+09:00 Subject: [ruby-list:9284] about make ruby-1.1c2 for NT via WATCOMC 有馬@FITECです。 VC++ 用の makefile を編集して WATCOM C/C++ 10.5J で ruby-1.1c2 を make しようと してるのですが、一筋縄では通ってくれません。作業経過を報告します。 WATCOM C/C++ には、以下の定義済みシンボルがあります。いくつかのOSをターゲットと して設定できるので、それぞれ以下のようなシンボルを利用できます。 __WATCOMC__ コンパイラ識別。 ターゲット別定義シンボル __DOS__ (DOSエクステンダを含む)MS-DOS。 MSDOS (DOSエクステンダを含む)MS-DOS。 __OS2__ OS/2(16ビットまたは32ビット)。 __QNX__ QNX。 __NETWARE_386__ Novell NetWare 386。 __NT__ WindowsNT。 以下は、コンパイラにエラーといわせないために行った変更個所です。grep の出力です。 diff でなくてすみません。ほとんどは、プロトタイプと引数の型が合わないとか、 引数の数が違うというメッセージに対して対処したものです。 __WATCOMC__ の場合は、以下を定義しない。 MISSING\NT.H 226 #ifndef __WATCOMC__ /* __WATCOMC__*/ MISSING\NT.H 227 #define O_BINARY 0x8000 /* __WATCOMC__*/ MISSING\NT.H 228 #endif /* __WATCOMC__*/ CONFIG.H 54 #ifndef __WATCOMC__ /* __WATCOMC__*/ CONFIG.H 55 #define S_IFMT _S_IFMT /* __WATCOMC__*/ CONFIG.H 56 #define S_IFDIR _S_IFDIR /* __WATCOMC__*/ CONFIG.H 57 #define S_IFCHR _S_IFCHR /* __WATCOMC__*/ CONFIG.H 58 #define S_IFREG _S_IFREG /* __WATCOMC__*/ CONFIG.H 59 #define S_IREAD _S_IREAD /* __WATCOMC__*/ CONFIG.H 60 #define S_IWRITE _S_IWRITE /* __WATCOMC__*/ CONFIG.H 61 #define S_IEXEC _S_IEXEC /* __WATCOMC__*/ CONFIG.H 62 #define S_IFIFO _S_IFIFO /* __WATCOMC__*/ CONFIG.H 63 #endif /* __WATCOMC__*/ 条件判断の追加。 EXT\WIN32API\WIN32API.C 161 #if defined(_MSC_VER) || defined(__LCC__) || defined(__WATCOMC__) EXT\WIN32API\WIN32API.C 177 #if defined(_MSC_VER) || defined(__LCC__) || defined(__WATCOMC__) FILE.C 970 # ifndef __WATCOMC__ /* __WATCOMC__*/ FILE.C 971 # define utimbuf _utimbuf /* __WATCOMC__*/ FILE.C 972 # endif /* __WATCOMC__*/ 識別子衝突。 IO.C で interrupt を interrupt_flag に変更 引数が多かったもの RE.C 244 reg_expr_str(str, RREGEXP(re)->str,RREGEXP(re)->len); /* __WATCOMC__*/ 引数が足りなかったもの HASH.C 538 hash_foreach(hash, each_value_i, 0); /* __WATCOMC__ */ HASH.C 555 hash_foreach(hash, each_key_i, 0); /* __WATCOMC__ */ 引数の型キャスト。関数定義の型にあわせようとしてるだけです。 BIGNUM.C 107 return bignorm((VALUE)RBIGNUM(x)); /* __WATCOMC__ */ BIGNUM.C 1264 return big_mod((VALUE)v, max); /* __WATCOMC__ */ DLN.C 81 # if defined(__hp9000s300) || defined(__NetBSD__) || defined(__BORLANDC__) || defined(__FreeBSD__) || defined(NeXT) || defined(__WATCOMC__) EVAL.C 1456 if (ev_const_defined((NODE *)the_frame->cbase, node->nd_vid)) { /* __WATCOMC__ */ EVAL.C 2174 ev_const_defined((NODE *)the_frame->cbase, node->nd_vid)) { /* __WATCOMC__ */ EVAL.C 2203 result = ev_const_get((NODE *)the_frame->cbase, node->nd_vid); /* __WATCOMC__ */ GC.C 611 if (p->as.basic.flags) obj_free((VALUE)p); /* __WATCOMC__*/ GC.C 1020 run_final((VALUE)p); /* __WATCOMC__*/ MARSHAL.C 668 r_regist((VALUE)big, arg); /* __WATCOMC__*/ RE.C 641 kcode_none((VALUE)re); /* __WATCOMC__ */ RE.C 644 kcode_euc((VALUE)re); /* __WATCOMC__ */ RE.C 647 kcode_sjis((VALUE)re); /* __WATCOMC__ */ RE.C 651 kcode_set_option((VALUE)re); /* __WATCOMC__ */ STRUCT.C 219 st = make_struct((VALUE)name, (VALUE)rest, klass); /* __WATCOMC__ */ STRING.C 899 str_replace(str, beg, len, (VALUE)val); /* __WATCOMC__*/ STRING.C 1094 str_replace2(str, beg, end, (VALUE *)val); /* __WATCOMC__*/ STRING.C 1104 str_replace2(str, beg, end, (VALUE *)str_to_str(val)); /* __WATCOMC__*/ IO.C 1846 VALUE line = f_gets_method(argc, &argv); /* __WATCOMC__ */ IO.C 1937 while (!NIL_P(line = f_gets_method(argc, &argv))) { /* __WATCOMC__ */ IO.C 2507 while (RTEST(str = f_gets_method(argc, &argv))) { /* __WATCOMC__ */ メッセージがたくさん出てうろたえているため、以下のファイルはまだ未検討です。 dir.c error.c parse.y -- 有馬 康弘