HP-UX 10.20 の話です。とりあえずお知らせだけ。
snprintf.c が簡単にはコンパイルが通りません。コマ
ンドラインで次のようにすること *と*
cc -O -Aa -D_INCLUDE_POSIX_SOURCE -D__hpux__ -c missing/snprintf.c
fpos_t の typedef を無効にするとコンパイル可能で
す。
別件のわたなべさんのパッチを含めるとこんな感じです。
------------------------------
$ diff -u snprintf.c.org snprintf.c
--- snprintf.c.org Wed Aug 12 11:28:44 1998
+++ snprintf.c Wed Aug 12 14:44:38 1998
@@ -62,6 +62,9 @@
#if defined(__STDC__)
# include <stdarg.h>
+# if !defined(__P)
+# define __P(x) x
+# endif
#else
# undef __P
# define __P(x) ()
@@ -93,7 +96,9 @@
* boundaries. THIS IS A CROCK, but for now there is no way around it.
*/
#if !defined(_ANSI_SOURCE) && !defined(__STRICT_ANSI__)
+#if !defined(__hpux__)
typedef off_t fpos_t;
+#endif
#else
typedef struct __sfpos {
char _pos[8];
@@ -347,7 +352,9 @@
#define u_int unsigned int
#include <limits.h>
+#if !defined(__CYGWIN32__)
#include <stdlib.h>
+#endif
#include <string.h>
#if defined(__STDC__)
------------------------------
cc のオプション -Aa は ANSI-C モードで、ヘッダと
か cpp のシンボルにも影響を与え、__hpux__ などの
設定が使えないので、-D__hpux__ を加えないとだめで
す。
この -Aa オプションでは UNIX 系の拡張部分なども使
えないので、Ruby 自身のコンパイルのは使えません。
コンパイルの手順は、make する前に、「手動で」
snprintf.c を先にコンパイルして、make を実施しま
した。configure が生成した Makefile ではコンパイ
ルできません(gcc/HP C ともに)。
snprintf.c を一発でコンパイルできればいいのですが、
ヘッダ関係がかなり影響を与えているので、-Aa を外
すとうまく行きません(gcc はなおさらダメでした)。
ちょっとややこしい感じです。
Linux では snprintf.c のコンパイルは必要ありませ
んが確認してみました。glibc の環境はうまく行きま
したが、glibc 以外の環境だと gcc -c でコンパイル
がうまく行きません(手元のものは TurboLinux 1.4J)。
自宅の glibc 環境(TurboLinux 2.0J)ではそのままコ
ンパイルできたと思います。
ということで、引っかかりました。
--
WATANABE Tetsuya HP Japan
e-mail tetsu / jpn.hp.com