小松です。

Ruby 1.3.3-990518ですが、今回は[ruby-dev:6837]に反応して
Build Directoryを作ってみました。

手順は、
    mkdir objdir
    cd objdir
    env CFLAGS=-O2 ../configure --with-readline-dir=/usr/local
のような感じで行っています。

(1) ruby-1.3.3-990518.tar.gzにext/kconvとext/mandelが追加されて
    いますが、ext/kconvはobsoleteになった ([ruby-dev:6710]) はず。

(2) HP-UXのccでregex.cの変数partが未初期化という警告が出てました
    が……すでに[ruby-dev:6894]で渡辺さんが報告済みでした。

(3) AIXのgccで以下が出ますが……無視してよさそうですね。

../parse.y:3134: warning: comparison is always 1 due to limited range of data type

(4) AIXで-bI:$(ruby_inc)/ruby.impではなく-bI:$(hdrdir)/ruby.impに
    しないとruby.impが読めないというエラーでext/の下の拡張ライブラリ
    のリンクに失敗してしまいました。
    添付のパッチをconfigure.inにあててautoconfかけて対処。

    $(hdrdir)/ruby.impに変えてもextの下「以外」の拡張ライブラリの
    作成が問題ないことは確認しています。

(5) ext/extmk.rbでmakeが決め打ちなので、たとえば「makeでVPATHが
    うまく動かないのでgmakeという名前のGNU makeを使おう」と
    したときにうまくいかず、拡張ライブラリのコンパイルに失敗して
    しまいます。
    extmk.rbに$(MAKE)を引数として渡すことができるといいのかな?

(6) Build Directoryを作成した場合、installがBSD互換でない
    マシンでextの下「以外」で拡張ライブラリを作成すると
    インストールに失敗します。

    対応は、Build Directoryもrbconfig.rbに、たとえば
    CONFIG["topdir"]で覚えさせておいて、lib/mkmf.rbで

        if $install =~ %r!^[^\s/]+/! then
          $install = CONFIG["topdir"]+"/"+$install
          $install_data = CONFIG["topdir"]+"/"+$install_data
        end

    とするといった感じでしょうか。

    # 他の手は[ruby-list:13908]で出ているので省略。

    下の例では、ソースツリーは
        /home/pub/lang/ruby/ruby-1.3.3-990518
    で、Build Directoryは
        /home/pub/lang/ruby/ruby-1.3.3-990518/hpux
    です。
    /tmp_mntが付いてるのはautomountのせいなので気にしないでください。

% uname -r -s
HP-UX B.10.20
% ruby extconf.rb
creating Makefile
% make
        gcc -fPIC -I/usr/local/lib/ruby/1.3/hppa1.1-hpux10.20 -I/usr/local/include -O2   -c uconv.c
        gcc -fPIC -I/usr/local/lib/ruby/1.3/hppa1.1-hpux10.20 -I/usr/local/include -O2   -c u2e.c
        gcc -fPIC -I/usr/local/lib/ruby/1.3/hppa1.1-hpux10.20 -I/usr/local/include -O2   -c ustring.c
        gcc -fPIC -I/usr/local/lib/ruby/1.3/hppa1.1-hpux10.20 -I/usr/local/include -O2   -c e2u.c
        ld -b -E  -o uconv.sl uconv.o u2e.o ustring.o e2u.o -lc 
% make install
        /tmp_mnt/home/pub/lang/ruby/ruby-1.3.3-990518/../install-sh -c uconv.sl /usr/local/lib/ruby/1.3/hppa1.1-hpux10.20/uconv.sl
Make: Cannot load /tmp_mnt/home/pub/lang/ruby/ruby-1.3.3-990518/../install-sh.  Stop.
*** Error exit code 1

Stop.
% ruby -r rbconfig -e 'include Config' \
 -e 'p CONFIG["srcdir"], CONFIG["INSTALL_PROGRAM"]'
"/tmp_mnt/home/pub/lang/ruby/ruby-1.3.3-990518"
"../install-sh -c"
% 

diff -r -u ruby-1.3.3-990518.orig/configure.in ruby-1.3.3-990518/configure.in
--- ruby-1.3.3-990518.orig/configure.in	Wed May 12 16:43:11 1999
+++ ruby-1.3.3-990518/configure.in	Tue May 19 09:25:51 1999
@@ -450,7 +450,7 @@
 			rb_cv_dlopen=yes ;;
 	aix*)		LDSHARED='/usr/ccs/bin/ld'
 			XLDFLAGS='-Wl,-bE:ruby.imp'
-			DLDFLAGS='-eInit_$(TARGET) -bI:$(ruby_inc)/ruby.imp -bM:SRE -T512 -H512 -lc'
+			DLDFLAGS='-eInit_$(TARGET) -bI:$(hdrdir)/ruby.imp -bM:SRE -T512 -H512 -lc'
 			rb_cv_dlopen=yes ;;
 
 	human*)		DLDFLAGS=''

--
小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>