From: nobu.nakada@... Date: 2002-03-25T10:39:31+09:00 Subject: [ruby-dev:16578] Re: MAKEFLAGS for ext なかだです。 At Thu, 21 Mar 2002 03:09:53 +0900, Yukihiro Matsumoto wrote: > |ext以下をコンパイルするときに、makeへのオプションが渡されてほし > |いと思うのですが、なにか副作用があるでしょうか。それに、今のだ > |と-kだけを指定したときしか意味がないような。 > > それがやりたかったことだったので。^^;;; > 副作用がなければ取り込みます。 make -nしたときにはできれば実際にやることがでてきてほしいので、こうい うのはどうでしょう。aix_mksym.rbがちょっと例外的なので、configureと Makefileに頑張ってもらうことにしてみました。 Index: Makefile.in =================================================================== RCS file: /cvs/ruby/src/ruby/Makefile.in,v retrieving revision 1.31 diff -u -2 -p -r1.31 Makefile.in --- Makefile.in 2002/03/11 08:02:02 1.31 +++ Makefile.in 2002/03/25 01:18:30 @@ -85,5 +85,5 @@ OBJS = array.@OBJEXT@ \ all: miniruby$(EXEEXT) @PREP@ rbconfig.rb $(LIBRUBY) - @@MINIRUBY@ -Cext extmk.rb @EXTSTATIC@ + @@MINIRUBY@ -Cext extmk.rb @EXTSTATIC@ $(MAKE) $(MFLAGS)$(MAKEFLAGS) miniruby$(EXEEXT): config.status $(LIBRUBY_A) $(MAINOBJ) dmyext.@OBJEXT@ @@ -105,8 +105,13 @@ $(LIBRUBY_SO): $(OBJS) dmyext.@OBJEXT@ m $(LIBRUBY_ALIASES) || true +ruby.imp: miniruby$(EXEEXT) + @@NM@ -P -p $(LIBRUBY_A) | awk 'BEGIN{print "#!"}; $$2~/^[BD]$$/{print $$1}' | sort -u -o $@ + install: rbconfig.rb @MINIRUBY@ $(srcdir)/instruby.rb $(DESTDIR) + @MINIRUBY@ -Cext extmk.rb $(MAKE) $(MFLAGS)$(MAKEFLAGS) DESTDIR=$(DESTDIR) install -clean-ext:; @-@MINIRUBY@ -Cext extmk.rb clean 2> /dev/null || true +clean-ext: + @-@MINIRUBY@ -Cext extmk.rb $(MAKE) $(MFLAGS)$(MAKEFLAGS) clean 2> /dev/null || true clean-local: @@ -118,5 +123,5 @@ clean: clean-ext clean-local distclean-ext: - @-@MINIRUBY@ -Cext extmk.rb distclean 2> /dev/null || true + @-@MINIRUBY@ -Cext extmk.rb $(MAKE) $(MFLAGS)$(MAKEFLAGS) distclean 2> /dev/null || true distclean-local: clean-local Index: configure.in =================================================================== RCS file: /cvs/ruby/src/ruby/configure.in,v retrieving revision 1.112 diff -u -2 -p -r1.112 configure.in --- configure.in 2002/03/14 07:20:34 1.112 +++ configure.in 2002/03/25 01:17:17 @@ -115,4 +115,10 @@ cygwin*|mingw*) : ${enable_shared=yes} ;; +aix*) + AC_CHECK_TOOL(NM, nm, /usr/ccs/bin/nm) + ;; +*) + AC_CHECK_TOOL(NM, nm) + ;; esac @@ -770,5 +776,5 @@ AC_ARG_WITH(static-linked-ext, [case $withval in yes) STATIC= - EXTSTATIC=static;; + EXTSTATIC=-static;; *) ;; esac]) @@ -852,4 +858,9 @@ else PREP='' fi +case $target_os in +aix*) + PREP="$PREP ruby.imp" + ;; +esac AC_SUBST(MINIRUBY) AC_SUBST(PREP) Index: instruby.rb =================================================================== RCS file: /cvs/ruby/src/ruby/instruby.rb,v retrieving revision 1.19 diff -u -2 -p -r1.19 instruby.rb --- instruby.rb 2001/04/30 17:55:56 1.19 +++ instruby.rb 2002/03/25 00:21:53 @@ -69,10 +69,4 @@ if RUBY_PLATFORM =~ /-aix/ end -Dir.chdir "ext" -if defined? CROSS_COMPILING - system "#{CONFIG['MINIRUBY']} extmk.rb install #{destdir}" -else - system "../miniruby#{exeext} extmk.rb install #{destdir}" -end Dir.chdir CONFIG["srcdir"] Index: ext/extmk.rb.in =================================================================== RCS file: /cvs/ruby/src/ruby/ext/extmk.rb.in,v retrieving revision 1.67 diff -u -2 -p -r1.67 extmk.rb.in --- ext/extmk.rb.in 2002/03/22 07:39:02 1.67 +++ ext/extmk.rb.in 2002/03/25 00:25:38 @@ -1,3 +1,3 @@ -#! /usr/local/bin/ruby +#! /usr/local/bin/ruby -s # -*- ruby -*- @@ -5,20 +5,17 @@ $".push 'mkmf.rb' # " ORIG_LIBPATH = ENV['LIB'] -if ARGV[0] == 'static' - $force_static = true - ARGV.shift -elsif ARGV[0] == 'install' - $install = true - $destdir = ARGV[1] || '' - ARGV.shift -elsif ARGV[0] == 'clean' - $clean = "clean" - ARGV.shift -elsif ARGV[0] == 'distclean' - $clean = "distclean" - ARGV.shift -elsif ARGV[0] == 'realclean' - $clean = "realclean" - ARGV.shift +$force_static = $static +$static = nil +unless $message + if ARGV.size > 1 and /^[a-z]+$/ =~ ($message = ARGV[-1]) + $message = $message.sub(/^(?:dist|real)(?=clean)$/, "") + case $message + when "clean", "install" + $ignore ||= true + end + $message = $message.sub(/e?$/, "ing") + else + $message = "compiling" + end end @@ -48,5 +45,5 @@ def rm_f(*files) targets.concat Dir[file] end - if not targets.empty? + unless targets.empty? File::chmod(0777, *targets) File::unlink(*targets) @@ -602,5 +599,5 @@ def extmake(target) end - unless $install or $clean + unless $ignore return if $nodynamic and not $static end @@ -629,5 +626,5 @@ def extmake(target) $target = target $mdir = target - unless $install or $clean + unless $ignore if $static_ext.size > 0 || !File.exist?("./Makefile") || @@ -651,14 +648,6 @@ def extmake(target) $extlist.push [$static, File.basename($target)] end - if $install - system "#{$make} install DESTDIR=#{$destdir}" - elsif $clean - system "#{$make} #{$clean}" - else - unless system "#{$make} all" - if ENV["MAKEFLAGS"] != "k" and ENV["MFLAGS"] != "-k" - exit - end - end + unless system *ARGV + $ignore or $mflags.include?('k') or exit(1) end end @@ -675,6 +664,11 @@ def extmake(target) end -$make = ENV["MAKE"] +$make = ARGV[0] || ENV["MAKE"] $make ||= with_config("make-prog", "make") +if $mflags = ENV["MAKEFLAGS"] + $mflags, = $mflags.split(" ", 2) +else + $mflags = ENV["MFLAGS"] || "" +end # get static-link modules @@ -706,18 +700,9 @@ for d in Dir["#{ext_prefix}/**/*"] d.slice!(0, ext_prefix.length + 1) - if $install - print "installing ", d, "\n" - elsif $clean - print "cleaning ", d, "\n" - else - print "compiling ", d, "\n" - if RUBY_PLATFORM =~ /-aix/ and older("../ruby.imp", "../miniruby") - load "#{$top_srcdir}/ext/aix_mksym.rb" - end - end + print "#{$message} ", d, "\n" extmake(d) end -if $install or $clean +if $ignore Dir.chdir ".." exit @@ -768,10 +753,10 @@ if $extlist.size > 0 $extlibs.gsub!("-L/usr/local/lib", "") if $extlibs end - system format(%[#{$make} #{ruby} EXTOBJS='%s' EXTLIBS='%s'], $extobjs, $extlibs) + system(*(ARGV + [ruby, 'EXTOBJS='+$extobjs, 'EXTLIBS='+$extlibs])) else Dir.chdir ".." if older(ruby, miniruby) rm_f ruby - system("#{$make} #{ruby}") + system(*(ARGV + [ruby])) end end Index: win32/Makefile.sub =================================================================== RCS file: /cvs/ruby/src/ruby/win32/Makefile.sub,v retrieving revision 1.15 diff -u -2 -p -r1.15 Makefile.sub --- win32/Makefile.sub 2002/03/20 16:12:15 1.15 +++ win32/Makefile.sub 2002/03/21 17:54:48 @@ -153,5 +153,5 @@ all: miniruby$(EXEEXT) rbconfig.rb ext/ $(LIBRUBY) $(MISCLIBS) set LIB=..\..;$(ORGLIBPATH) - @.\miniruby$(EXEEXT) -Cext extmk.rb + @.\miniruby$(EXEEXT) -Cext extmk.rb $(MAKE) $(MFLAGS)$(MAKEFLAGS) ruby: $(PROGRAM) @@ -293,4 +293,5 @@ $(RUBYDEF): $(LIBRUBY_A) miniruby$(EXEEX install: rbconfig.rb .\miniruby.exe $(srcdir)/instruby.rb $(DESTDIR) + .\miniruby.exe -Cext extmk.rb $(MAKE) $(MFLAGS)$(MAKEFLAGS) DESTDIR=$(DESTDIR) install clean: clean-ext clean-local @@ -307,5 +308,5 @@ clean-local: clean-ext: - @-.\miniruby$(EXEEXT) -Cext extmk.rb clean + @-.\miniruby$(EXEEXT) -Cext extmk.rb $(MAKE) $(MFLAGS)$(MAKEFLAGS) clean distclean: distclean-ext distclean-local @@ -342,5 +343,5 @@ distclean-local: clean-local distclean-ext: - @-.\miniruby$(EXEEXT) -Cext extmk.rb distclean + @-.\miniruby$(EXEEXT) -Cext extmk.rb $(MAKE) $(MFLAGS)$(MAKEFLAGS) distclean realclean: distclean -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦