From: nobu.nakada@... Date: 2003-08-06T14:27:51+09:00 Subject: [ruby-dev:21157] Re: with-static-linked-ext なかだです。 At Wed, 6 Aug 2003 12:31:47 +0900, Yukihiro Matsumoto wrote: > 残りの修正と想定される影響はどのようなものがありますでしょう。 > ビルドに関してはもうよく分からなくなっているので(※)。 残りの修正点。 (1) --enable-sharedのときの、拡張ライブラリのリンク先 今は、(mswin/bccwin以外は)実行ファイルであるrubyにリンクさ れてますが、これがLIBRUBY_SOになります。(--disable-sharedで はLIBRUBY_SOがないので変化なし) これは、ruby単独では影響はないと思います。影響があるのは、 erubyやmod_rubyのようなruby embeddedなプログラムが LIBRUBY_SOを使う場合でしょう。それと、Windows(cygwinとmingw だけ?)では今まで--with-static-linked-extだとちゃんと動いて なかったと思われます。 (2) --disable-sharedのときの、拡張ライブラリの初期化順序 今のところ影響はありませんが、nkfより先にunkfが初期化されて いると警告が出ます。先に触れたdigestについても、ディレクト リ構造(とglobの順序)に依存するよりも、明示したほうがいいか も。 > ※ 今週の標語: 分からないことは分からないと言おう。 分かりません(何が)。 Index: Makefile.in =================================================================== RCS file: /cvs/ruby/src/ruby/Makefile.in,v retrieving revision 1.44 diff -u -2 -p -r1.44 Makefile.in --- Makefile.in 21 May 2003 11:51:55 -0000 1.44 +++ Makefile.in 6 Aug 2003 04:49:53 -0000 @@ -31,5 +31,5 @@ LIBS = @LIBS@ $(EXTLIBS) MISSING = @LIBOBJS@ @ALLOCA@ LDSHARED = @LIBRUBY_LDSHARED@ -DLDFLAGS = @LIBRUBY_DLDFLAGS@ +DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(EXTLDFLAGS) SOLIBS = @SOLIBS@ MAINLIBS = @MAINLIBS@ @@ -58,6 +58,9 @@ LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@ PREP = @PREP@ @ARCHFILE@ SETUP = +EXTSTATIC = @EXTSTATIC@ -EXTOBJS = +EXTOBJS = $(DMYEXT) +DLDOBJS = $(DMYEXT) +DMYEXT = dmyext.@OBJEXT@ MAINOBJ = main.@OBJEXT@ @@ -109,9 +112,9 @@ SCRIPT_ARGS = --dest-dir="$(DESTDIR)" all: @MAKEFILES@ miniruby$(EXEEXT) rbconfig.rb $(LIBRUBY) - @$(MINIRUBY) $(srcdir)/ext/extmk.rb --extstatic="@EXTSTATIC@" $(SCRIPT_ARGS) + @$(MINIRUBY) $(srcdir)/ext/extmk.rb --extstatic="$(EXTSTATIC)" $(SCRIPT_ARGS) -miniruby$(EXEEXT): config.status $(LIBRUBY_A) $(MAINOBJ) dmyext.@OBJEXT@ +miniruby$(EXEEXT): config.status $(LIBRUBY_A) $(MAINOBJ) $(DMYEXT) @rm -f $@ - $(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) dmyext.@OBJEXT@ $(LIBRUBY_A) $(LIBS) -o $@ + $(PURIFY) $(CC) $(LDFLAGS) $(MAINOBJ) $(DMYEXT) $(LIBRUBY_A) $(LIBS) -o $@ $(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(EXTOBJS) $(SETUP) miniruby$(EXEEXT) @@ -119,10 +122,10 @@ $(PROGRAM): $(LIBRUBY) $(MAINOBJ) $( $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@ -$(LIBRUBY_A): $(OBJS) dmyext.@OBJEXT@ - @AR@ rcu $@ $(OBJS) dmyext.@OBJEXT@ +$(LIBRUBY_A): $(OBJS) $(DMYEXT) + @AR@ rcu $@ $(OBJS) $(DMYEXT) @-@RANLIB@ $@ 2> /dev/null || true -$(LIBRUBY_SO): $(OBJS) dmyext.@OBJEXT@ miniruby$(EXEEXT) $(PREP) - $(LDSHARED) $(DLDFLAGS) $(OBJS) dmyext.@OBJEXT@ $(SOLIBS) -o $@ +$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) miniruby$(EXEEXT) $(PREP) + $(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) -o $@ @-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \ File.symlink "$(LIBRUBY_SO)", link}' \ Index: ext/extmk.rb =================================================================== RCS file: /cvs/ruby/src/ruby/ext/extmk.rb,v retrieving revision 1.37 diff -u -2 -p -r1.37 extmk.rb --- ext/extmk.rb 2 Aug 2003 06:14:53 -0000 1.37 +++ ext/extmk.rb 5 Aug 2003 07:58:59 -0000 @@ -61,4 +61,5 @@ def extmake(target) $mdir = target $srcdir = File.join($top_srcdir, "ext", $mdir) + $preload = nil unless $ignore if $static || @@ -89,5 +90,5 @@ def extmake(target) if File.exist?("./Makefile") if $static - $extlist.push [$static, $target, File.basename($target)] + $extlist.push [$static, $target, File.basename($target), $preload] end unless system($make, *sysquote($mflags)) @@ -227,5 +228,11 @@ if $extlist.size > 0 $extinit ||= "" $extobjs ||= "" - for s,t,i in $extlist + list = $extlist.dup + until list.empty? + s,t,i,r = list.shift + if r and list.any? {|l| r.include?(l[1])} + list << [s,t,i] + next + end f = format("%s/%s.%s", s, i, $LIBEXT) if File.exist?(f) -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦