〜2002年9月下旬〜
更新。
更新。
タイムスタンプを見ると7月には出ていたようだ。
% mkdir uclibc; cd uclibc % ../configure --prefix=/usr --disable-nls \ CC='/usr/i386-linux-uclibc/bin/i386-uclibc-gcc -static' CFLAGS=-Os
これもたぶんvirusだな。
思いついてしまったので考える。targetがCygwinのときだけMinGWかどうか調べれば十分だろう。 で実際に入れてみて驚いたんだが、autoconf 2.5xだと
case $host_os in *mingw32* ) MINGW32=yes;; * ) MINGW32=no;; esac
となってしまう。これでは全然役に立たない。AC_CYGWINも似たようなもんだな。 というわけでautoconf 2.13を参考に
AC_DEFUN(RUBY_MINGW32, [AC_CACHE_CHECK(for mingw32 environment, rb_cv_mingw32, [AC_TRY_CPP([ #ifndef __MINGW32__ # error #endif ], rb_cv_mingw32=yes,rb_cv_mingw32=no) rm -f conftest*]) ])
としてみる。後は
case "$host_os" in *cygwin*) RUBY_MINGW32 test "$rb_cv_mingw32" = yes && target_os="mingw32" ;; esac
とすればいけそうだ。
こちらもAC_TRY_CPPを使おう。AC_DEFUNで定義するならaclocal.m4に移すべきか?
AC_DEFUN(RUBY_CPPOUTFILE, [AC_CACHE_CHECK(for ${CPP} with the -o option, rb_cv_cppoutfile, [cppflags=$CPPFLAGS CPPFLAGS='-o conftest.i' AC_TRY_CPP([], rb_cv_cppoutfile=yes, rb_cv_cppoutfile=no) CPPFLAGS=$cppflags rm -f conftest*]) ]) if test "$rb_cv_cppoutfile" = yes; then CPPOUTFILE='-o conftest.i' else CPPOUTFILE='> conftest.i' fi
3巻まで借りた。結構面白い。
-libpath:対応は凍結。
def libpathflag if $mswin ENV['LIB'] = ($LIBPATH + [ORIG_LIBPATH]).join(';') yield "" ENV['LIB'] = ORIG_LIBPATH else yield $LIBPATH.map{|x| %Q[#{LIBPATHFLAG}"#{x}"]}.join end end def try_link0(src, opt="") libpathflag do |flag| try_do(src, link_command(flag, opt)) end end
としよう。
止まってたらしく、生き返った途端どっと雪崩込んできた。 おかげで順番がばらばらだ。
拡張ライブラリに手が伸びたということは、 そのうちext/dl/*.cの無駄なsemi colonにも気づくか?
long longとoff_tは
AC_CHECK_TYPES([long long, off_t])
と
AC_CHECK_SIZEOF(long long, 0) AC_CHECK_SIZEOF(off_t, 0)
だけど、AC_CHECK_TYPESはHAVE_をdefineするのでどちらも必要と言えば必要?
次がよくわからないんだけど、 configure.inでは
AC_AIX AC_MINIX
でconfigureを実行したときのメッセージが
checking for AIX... no checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking minix/config.h usability... no checking minix/config.h presence... no
なので、どうもautoconf 2.5xではAC_MINIXを使うといろんなチェックが勝手に入るようだ。 実験してみるとやっぱそうだ。
% cat configure.in AC_INIT AC_MINIX AC_OUTPUT % autoconf-2.54 % ./configure checking for gcc... gcc checking for C compiler default output... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking how to run the C preprocessor... gcc -E checking for egrep... grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking minix/config.h usability... no checking minix/config.h presence... no checking for minix/config.h... no configure: creating ./config.status
autocofn 2.13は必要最小限って感じだ。
% autoconf % ./configure creating cache ./config.cache checking how to run the C preprocessor... cc -E checking for minix/config.h... no updating cache ./config.cache creating ./config.status
これはまた元の仕様に戻るかもしれないので、そのままのほうがよさそう。
甘かったか。
そろそろ動きがありそう。
よしだむメモを見てexpatのversionを上げようと思い立つ。expat.hを見ると1.95.2のままだった。
% mkdir cygwin; cd cygwin % NM=i686-pc-cygwin-nm DLLTOOL=i686-pc-cygwin-dlltool \ RANLIB=i686-pc-cygwin-ranlib AR=i686-pc-cygwin-ar CFLAGS=-Os \ ../configure --target=i686-pc-cygwin --host=i686-pc-cygwin \ --build=i586-pc-linux-gnu --prefix=/usr/local/cygwin-local \ --disable-shared --enable-static
例の問題があって、そのまま上げるのを忘れていたらしい。
全部女子アナだったのか。
RUBY_PROG_GNU_LDという名前にしようと思ったら、 libtoolにAC_PROG_LD_GNUというマクロがあることが判明。 やってることは [ruby-dev:5111]とほぼ同じなんだけど。つまり現在のconfigure.inから独立させてマクロにすればいいんだ。
これがたわしコロッケか。
Changes: This release integrates bugfixes and enhancements from all the vendor RPMs. It supports the new /proc layout (up to 2.5.39 or so), scheduler policy display in top and ps, understanding of threads, realtime priority and scheduling policy display for ps, and display of active and inactive memory statistics from 2.4 and 2.5 kernels in vmstat and top.
ということなので、更新しとこう。
ってことはおじいさんも100歳で大往生か。長生きだな。
更新したら
Write failed flushing stdout buffer. write stdout: Broken pipe
と謎のメッセージが遅れて出てくる。 ソースをgrepしてもヒットしないし、誰が出してるんだろう? あ、sshか。
plugin "ssh host socket pop3host pop3"
の部分だけど、うーむ。どこかのcloseか?
つながらないので、この日記が更新できない。
更新。