なかだです。

At Tue, 21 Jan 2003 19:59:34 +0900,
Nobuyoshi-Nakada wrote:
> > 拡張ライブラリを作るときにやはり指定したくなると思うので、
> > 各々--with-foo-dirか、面倒なら--with-opt-dirでしょうね。
> > というわけで、CROSSのときは何もなくていいと思います。
> 
> CONFIG["target_libdir"] = "$(prefix)/$(target)/lib" if CROSS_COMPILING
> とでもrbconfig.rbに入れますか。

とりあえず直接$LIBPATHに指定するようにしてみました。

および、extconf.rbとMakefileの依存ルールも入れてみましたが、
Makefile.inのAUTO_REMAKEのチェックはシェルに依存するので止めま
した。un.rbに入れば追加しますが。

ついでに、bccではDESTDIRをコマンドラインから変更できないことに
気づきました。


Index: lib/mkmf.rb =================================================================== RCS file: /cvs/ruby/src/ruby/lib/mkmf.rb,v retrieving revision 1.125 diff -u -2 -p -r1.125 mkmf.rb --- lib/mkmf.rb 21 Jan 2003 19:33:19 -0000 1.125 +++ lib/mkmf.rb 21 Jan 2003 22:52:52 -0000 @@ -536,4 +536,5 @@ end def configuration(srcdir) mk = [] + vars = [] mk << %{ SHELL = /bin/sh @@ -545,8 +546,11 @@ topdir = #{$topdir} hdrdir = #{$hdrdir} VPATH = $(srcdir) + } drive = File::PATH_SEPARATOR == ';' ? /\A\w:/ : /\A/ if destdir = CONFIG["prefix"].scan(drive)[0] and !destdir.empty? - mk << "\nDESTDIR = #{destdir}\n" + v = "DESTDIR = #{destdir}\n" + mk << v + vars << v end CONFIG.each do |key, var| @@ -579,4 +583,6 @@ arch = #{CONFIG['arch']} sitearch = #{CONFIG['sitearch']} ruby_version = #{Config::CONFIG['ruby_version']} +} + v = <<EOS.to_a RUBY = #{$ruby} RM = $(RUBY) -rftools -e "File::rm_f(*ARGV.map do|x|Dir[x]end.flatten.uniq)" @@ -584,4 +590,10 @@ MAKEDIRS = $(RUBY) -r ftools -e 'File::m INSTALL_PROG = $(RUBY) -r ftools -e 'File::install(ARGV[0], ARGV[1], 0755, true)' INSTALL_DATA = $(RUBY) -r ftools -e 'File::install(ARGV[0], ARGV[1], 0644, true)' +CONFIGURE_ARGS = #{ARGV.quote.join(' ')} +EXTCONF = #{$0} +EOS + mk.concat(v) + vars.concat(v) + mk << %{ #### End of system configuration section. #### @@ -589,11 +601,5 @@ INSTALL_DATA = $(RUBY) -r ftools -e 'Fil } if $nmake == ?b - mk.each do |x| - x.gsub!(/^(MAKEDIRS|INSTALL_(?:PROG|DATA))+\s*=.*\n/) do - "!ifndef " + $1 + "\n" + - $& + - "!endif\n" - end - end + vars.each {|x| x.sub!(/\A(\S+)\s*=.*/m, "!ifndef \\1\n\\&!endif\n")} end mk @@ -601,5 +607,5 @@ end def dummy_makefile(srcdir) - configuration(srcdir) << "all install: Makefile\n" << CLEANINGS + configuration(srcdir) << "all install: Makefile\n" << MISC_RULES end @@ -705,5 +711,5 @@ CLEANOBJS = "*.{#{$OBJEXT},#{$LIBEXT all: #{target ? "$(DLLIB)" : "Makefile"} } - mfile.print CLEANINGS + mfile.print MISC_RULES dirs = [] if not $static and target @@ -798,10 +804,10 @@ def init_mkmf(config = CONFIG) $LIBRUBYARG_STATIC = config['LIBRUBYARG_STATIC'] $LIBRUBYARG_SHARED = config['LIBRUBYARG_SHARED'] - $LIBPATH = $extmk ? ["$(topdir)"] : [] + $LIBPATH = [CROSS_COMPILING ? "$(prefix)/$(target)/lib" : "$(libdir)"] + $LIBPATH.unshift("$(topdir)") if $extmk $objs = nil $libs = "" if $enable_shared or Config.expand(config["LIBRUBY"].dup) != Config.expand(config["LIBRUBY_A"].dup) - $LIBPATH.unshift("$(libdir)") unless $extmk or CROSS_COMPILING $LIBRUBYARG = config['LIBRUBYARG'] end @@ -868,5 +874,8 @@ LIBPATHFLAG = config_string('LIBPATHFLAG LIBARG = config_string('LIBARG') || '-l%s' -CLEANINGS = " +MISC_RULES = " +Makefile: $(EXTCONF) + $(RUBY) $(EXTCONF) $(CONFIGURE_ARGS) + clean: @$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦