From: Akinori MUSHA Date: 2003-01-26T08:27:54+09:00 Subject: [ruby-dev:19439] Re: recursive dryrun (Re: [ruby-cvs] ruby, ruby/ext, ruby/win32, ruby/bcc32: * instruby.rb, ext/extmk.rb, Makefile.in, win32/Makefile.sub,) At Sun, 26 Jan 2003 06:31:07 +0900, nobu wrote: > GNU makeだと$(MAKE)は直接含まれていないと特別な意味を持たないよ  この特別な意味って何でしたっけ。 > うです。+フラグってどの程度移植性があるもんなんでしょうか。  UNIX 系は大丈夫です。SUSv3 にもあるし。 > あとmake -n installで$dryrunにならなくなってますが、no-install > があるから不要ってことでしょうか。というか、だから$(MAKE)が特別 > 扱いされなくても構わない?  前のコードが MAKEFLAGS の解析や整理に頑張りすぎてバグが出ていた ので、一回そぎ落とそうと思ったのでした。でもそれでできるならいいと 思います。 > Index: instruby.rb > =================================================================== > + def $mflags.set?(flag) > + grep(Regexp.new("^-(?!-).*%c"%flag, /nmake/ =~ $nmake)) {break true} > + end  $nmake は $make でしょうか。それにしてもこの第二引数はマッチ すると 0 とかが返るので変な気がします。たぶん意図は $nmake == ?m ? true : false かな?(Regexp::IGNORECASE/nil の方がはっきりしますが)  ただ、直下のコメントに書いてあるように、 MAKEFLAGS にフラグを くっつけて渡してくるのは nmake だけみたいです。他の環境で引数を 取るオプションで誤認識したりしないよう、こうするのはどうでしょう。 if $nmake == ?m grep(/^-(?!-).*#{'%c' % flag}/i) { return true } else include?('-%c' % flag) end > $mflags << '-n' if $dryrun > + $dryrun ||= $mflags.set?(?n)  一瞬、堂々巡りに見えるので、こう書くと分かりやすいかも。 if $mflags.set?(?n) $dryrun = true else $mflags << '-n' if $dryrun end -- / /__ __ Akinori.org / MUSHA.org / ) ) ) ) / FreeBSD.org / Ruby-lang.org Akinori MUSHA aka / (_ / ( (__( @ iDaemons.org / and.or.jp "It went right by me -- At the time it went over my head I was looking out the window.. I should have looked at your face instead"