小松です。

In the message of [ruby-dev:10569] Re: environment variables
    on 2000/8/4 19:28:30 "Nobuyoshi.Nakada" <nobu.nakada / nifty.ne.jp> wrote:
> > それと、win32/Makefile.subですが、ruby.exeとrubyw.exeを作るときに
> > $(LIBS)がなくてRubyCRT.dll化に差し支えるのでした。
> 
>   これってどういう話でしたっけ。

普段は、
    [ruby-dev:9231] RubyCRT.dll (Re: xmalloc() in Windows)
の手順作ったRubyCRT.dll (かRubyCRTD.dll) を使ってmswin32版を
作っています。

で、このときmsvcrt.dll (かmsvcrtd.dll) がruby.exeやrubyw.exeに
使われないようにしたかったという理由です。

RubyCRTD.dllを使うときはwin32/Makefile.subとwin32/config.status.in
を以下のような感じで変えています。

# このパッチは参考です。本体にマージしてもらうつもりはありません。

wsock2.libではなくws2_32.libを使っているのは趣味です。

> > まとめをお願いしていいですか?>なかださん。
> 
>   では。

ひええ、djgpp/config.statusのパッチがおかしくなる。

% zcat /tmp/dllname.patch.gz | patch -p1
patching file configure.in
patching file cygwin/GNUmakefile.in
(Stripping trailing CRs from patch.)
patching file djgpp/config.status
Hunk #1 succeeded at 60 with fuzz 2.
patching file win32/Makefile.sub
patching file win32/resource.rb
patching file win32/setup.mak
% 

どうやら、以下のように-pで生成される@@の行に^MがつくとCRを
無視するモードになるようですね。

--- current/djgpp/config.status	Sat Jun 24 23:06:35 2000
+++ devel/djgpp/config.status	Fri Aug  4 16:42:33 2000
@@ -60,4 +60,5 @@ s%@DLDLIBS@%-lc%g^M ← ここにも^Mがついている。

この@@の行の^Mを削除すると正常にパッチがあたります。

patchのバージョンは2.5.4でした。

うまくあたったもので、patchを-pつきで作り直してもう一度あてても
やっぱりだめでした。

うーむ、こんな問題があったとは。

diff -ru1p ruby-1.5.5.nakada/win32/Makefile.sub ruby-1.5.5/win32/Makefile.sub --- ruby-1.5.5.nakada/win32/Makefile.sub Fri Aug 4 21:35:54 2000 +++ ruby-1.5.5/win32/Makefile.sub Thu Aug 3 12:28:10 2000 @@ -31,3 +31,3 @@ AUTOCONF = autoconf prefix = /usr -CFLAGS = -nologo -DNT=1 -Zi -O2b2x -G5 +CFLAGS = -nologo -DNT=1 -MDd -Zi CPPFLAGS = -I$(srcdir) -I$(srcdir)/missing @@ -36,3 +36,3 @@ XLDFLAGS = #EXTLIBS = -LIBS = user32.lib advapi32.lib wsock32.lib $(EXTLIBS) +LIBS = RubyCRTD.lib user32.lib advapi32.lib ws2_32.lib $(EXTLIBS) MISSING = crypt.obj alloca.obj win32.obj isinf.obj isnan.obj diff -ru1p ruby-1.5.5.nakada/win32/config.status.in ruby-1.5.5/win32/config.status.in --- ruby-1.5.5.nakada/win32/config.status.in Thu Aug 3 18:55:54 2000 +++ ruby-1.5.5/win32/config.status.in Thu Aug 3 10:03:09 2000 @@ -1,3 +1,3 @@ s%@SHELL@%%g -s%@CFLAGS@%-nologo -DNT=1 -Zi -O2b2x -G5%g +s%@CFLAGS@%-nologo -DNT=1 -MDd -Zi%g s%@CPPFLAGS@%%g @@ -7,4 +7,4 @@ s%@DEFS@% -DUSE_THREAD -DSIZEOF_INT=4 -DSIZEOF_SHORT=2 -DSIZEOF_LONG=4 -DSIZEOF_VOIDP=4 -DSIZEOF_FLOAT=4 -DSIZEOF_DOUBLE=8 -DHAVE_PROTOTYPES=1 -DHAVE_STDARG_PROTOTYPES=1 -DHAVE_STDLIB_H=1 -DHAVE_LIMITS_H=1 -DHAVE_FCNTL_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_ST_RDEV=1 -DGETGROUPS_T=int -DRETSIGTYPE=void -DHAVE_ALLOCA=1 -DHAVE_FMOD=1 -DHAVE_WAITPID=1 -DHAVE_GETCWD=1 -DHAVE_CHSIZE=1 -DHAVE_GETGROUPS=1 -DHAVE_GETLOGIN=1 -DRSHIFT=\(x,y\)\ \(\(x\)\>\>y\) -DFILE_COUNT=_cnt -DDLEXT=\".so\" -DDLEXT2=\".dll\" -DRUBY_PLATFORM=\"i586-mswin32\" %g -s%@LDFLAGS@%-nologo -Ox%g -s%@LIBS@%user32.lib advapi32.lib wsock32.lib%g +s%@LDFLAGS@%-nologo -MDd -Zi%g +s%@LIBS@%RubyCRTD.lib user32.lib advapi32.lib ws2_32.lib%g s%@exec_prefix@%${prefix}%g @@ -42,3 +42,3 @@ s%@OBJEXT@%obj%g s%@XLDFLAGS@%%g -s%@DLDFLAGS@%%g +s%@DLDFLAGS@%-MDd -Zi%g s%@STATIC@%%g @@ -61,6 +61,6 @@ s%@LIBRUBYARG@%$(topdir)/$(RUBY_SO_NAME) s%@SOLIBS@%%g -s%@DLDLIBS@%%g +s%@DLDLIBS@%RubyCRTD.lib%g s%@arch@%i586-mswin32%g s%@sitedir@%${prefix}/lib/ruby/site_ruby%g -s%@configure_args@%--with-make-prog=nmake%g +s%@configure_args@%--with-make-prog=nmake --with-tcllib=tcl83 --with-tklib=tk83%g s%@configure_input@%$configure_input%g
-- 小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>