From fd36ed94f302e79e5184bceff68f7e36d6a17e3d Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 12 Aug 2003 02:12:48 +0000 Subject: * Makefile.in: static link libraries to LIBRUBY_SO with static linked ext. [ruby-dev:21157] * ext/extmk.rb (extmake): sort extension library initialization order. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ Makefile.in | 19 +++++++++++-------- ext/extmk.rb | 13 ++++++++++--- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/ChangeLog b/ChangeLog index 985bdbd846..fc82388967 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Tue Aug 12 11:12:42 2003 Nobuyoshi Nakada + + * Makefile.in: static link libraries to LIBRUBY_SO with static linked + ext. [ruby-dev:21157] + + * ext/extmk.rb (extmake): sort extension library initialization order. + Tue Aug 12 02:48:56 2003 Yukihiro Matsumoto * eval.c (THREAD_SAVE_CONTEXT): should explicitly turn off the diff --git a/Makefile.in b/Makefile.in index 8414aded98..9772438db5 100644 --- a/Makefile.in +++ b/Makefile.in @@ -30,7 +30,7 @@ EXTLIBS = LIBS = @LIBS@ $(EXTLIBS) MISSING = @LIBOBJS@ @ALLOCA@ LDSHARED = @LIBRUBY_LDSHARED@ -DLDFLAGS = @LIBRUBY_DLDFLAGS@ +DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(EXTLDFLAGS) SOLIBS = @SOLIBS@ MAINLIBS = @MAINLIBS@ @@ -57,8 +57,11 @@ LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@ PREP = @PREP@ @ARCHFILE@ SETUP = +EXTSTATIC = @EXTSTATIC@ EXTOBJS = +DLDOBJS = $(DMYEXT) +DMYEXT = dmyext.@OBJEXT@ MAINOBJ = main.@OBJEXT@ @@ -108,22 +111,22 @@ SCRIPT_ARGS = --dest-dir="$(DESTDIR)" \ --make-flags="$(MAKEFLAGS)" 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) @rm -f $@ $(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}' \ $(LIBRUBY_ALIASES) || true diff --git a/ext/extmk.rb b/ext/extmk.rb index eb2a277600..b5286980a7 100644 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -60,6 +60,7 @@ def extmake(target) $target = target $mdir = target $srcdir = File.join($top_srcdir, "ext", $mdir) + $preload = nil unless $ignore if $static || !(t = modified?("./Makefile", MTIMES)) || @@ -88,7 +89,7 @@ def extmake(target) end 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)) $ignore or $continue or return false @@ -228,7 +229,13 @@ end 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) $extinit += "\tinit(Init_#{i}, \"#{t}.so\");\n" @@ -252,7 +259,7 @@ SRC $extpath.delete("$(topdir)") $extflags = libpathflag($extpath) << " " << $extflags.strip conf = [ - ['SETUP', $setup], ['EXTOBJS', $extobjs], + ['SETUP', $setup], [$enable_shared ? 'DLDOBJS' : 'EXTOBJS', $extobjs], ['EXTLIBS', $extlibs], ['EXTLDFLAGS', $extflags] ].map {|n, v| "#{n}=#{v}" if v and !(v = v.strip).empty? -- cgit v1.2.3