From: nobu.nakada@... Date: 2003-02-05T09:15:56+09:00 Subject: [ruby-dev:19498] cpp in mkmf (Re: Problems building mysql ruby 2.4.4 on 1.8) なかだです。 At Wed, 5 Feb 2003 06:44:05 +0900, Richard Kilmer wrote: > checking for mysql_query() in -lmysqlclient... yes > checking for mysql.h... no > checking for mysql/mysql.h... yes > creating Makefile > extconf.rb:33: uninitialized constant CPP (NameError) [ruby-talk:63715]の件ですが、CPPではなくてcpp_commandを使わなく てはならないというのもありますが、Borlandのcpp32は出力ファイル 名が限定されているため、outfile引数は実際には意味がありません。 出力ファイルも固定にしてしまったほうがいいような気がします。 Index: mkmf.rb =================================================================== RCS file: /cvs/ruby/src/ruby/lib/mkmf.rb,v retrieving revision 1.125 diff -u -2 -p -r1.125 mkmf.rb --- mkmf.rb 21 Jan 2003 19:33:19 -0000 1.125 +++ mkmf.rb 4 Feb 2003 23:27:41 -0000 @@ -220,7 +220,7 @@ def cc_command(opt="") end -def cpp_command(outfile, opt="") +def cpp_command(opt="") "$(CPP) #$INCFLAGS -I#{$hdrdir} " \ - "#$CPPFLAGS #$CFLAGS #{outfile} #{opt} #{CONFTEST_C}" + "#$CPPFLAGS #$CFLAGS #{CPPOUTFILE} #{opt} #{CONFTEST_C}" end @@ -246,5 +246,5 @@ end def try_cpp(src, opt="") - try_do(src, cpp_command(CPPOUTFILE, opt)) + try_do(src, cpp_command(opt)) ensure rm_f "conftest*" @@ -278,22 +278,13 @@ def egrep_cpp(pat, src, opt="") src += "\n" unless /\n\z/ =~ src create_tmpsrc(src) - xpopen(cpp_command('', opt)) do |f| - if Regexp === pat - puts(" ruby -ne 'print if #{pat.inspect}'") - f.grep(pat) {|l| - puts "#{f.lineno}: #{l}" - return true - } - false - else - puts(" egrep '#{pat}'") - begin - stdin = $stdin.dup - $stdin.reopen(f) - system("egrep", pat) - ensure - $stdin.reopen(stdin) - end - end + return false unless xsystem(cpp_command(opt)) + pat = Regexp.new(pat) unless Regexp === pat + open("conftest.i") do |f| + puts("ruby -ne 'print if #{pat.inspect}' conftest.i") + f.grep(pat) {|l| + puts "#{f.lineno}: #{l}" + return true + } + false end ensure -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦