有馬@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
--
有馬 康弘 <fit0298 / fitec.co.jp>