* lib/mkmf.rb ($CC): command to compile C source.

* lib/mkmf.rb (try_compile): added.

* lib/mkmf.rb (egrep_cpp): use internal grep when pattern is
  Regexp, otherwise use external egrep command but get rid of
  pipe of command.com.

* lib/mkmf.rb (have_func): local variable should be volatile not
  to be eliminated by optimization.

* lib/mkmf.rb (create_makefile): link with CONFIG["LIBS"].

* lib/mkmf.rb (create_makefile): emit .SUFFIXES:.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2811 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2002-09-06 11:23:14 +00:00
Родитель 7881363731
Коммит a449f78c89
2 изменённых файлов: 82 добавлений и 13 удалений

Просмотреть файл

@ -1,3 +1,22 @@
Fri Sep 6 20:01:38 2002 Nobuyoshi Nakada <nobu.nokada@softhome.net>
* lib/mkmf.rb ($CC): command to compile C source.
* lib/mkmf.rb (logging): added.
* lib/mkmf.rb (try_compile): added.
* lib/mkmf.rb (egrep_cpp): use internal grep when pattern is
Regexp, otherwise use external egrep command but get rid of
pipe of command.com.
* lib/mkmf.rb (have_func): local variable should be volatile not
to be eliminated by optimization.
* lib/mkmf.rb (create_makefile): link with CONFIG["LIBS"].
* lib/mkmf.rb (create_makefile): emit .SUFFIXES:.
Fri Sep 6 12:11:22 2002 Minero Aoki <aamine@loveruby.net>
* parse.y (rb_gc_mark_parser): should mark ALL global variables

Просмотреть файл

@ -86,6 +86,7 @@ else
OUTFLAG = '-o '
end
$LINK = "#{CONFIG['CC']} #{OUTFLAG}conftest -I#{$hdrdir} #{CFLAGS} %s %s #{CONFIG['LDFLAGS']} %s conftest.c %s %s #{CONFIG['LIBS']}"
$CC = "#{CONFIG['CC']} -c #{CONFIG['CPPFLAGS']} %s -I#{$hdrdir} #{CFLAGS} %s %s conftest.c"
$CPP = "#{CONFIG['CPP']} #{CONFIG['CPPFLAGS']} %s -I#{$hdrdir} #{CFLAGS} %s %s conftest.c"
def rm_f(*files)
@ -117,23 +118,41 @@ $orgerr = $stderr.dup
$orgout = $stdout.dup
$extmk = /extmk\.rb/ =~ $0
def xsystem command
Config.expand(command)
def logging
if $DEBUG
puts command
return system(command)
return yield
end
logfile = $extmk ? File.join($topdir, 'ext', 'extmk.log') : 'mkmf.log'
$log ||= open(logfile, 'w')
$stderr.reopen($log)
$stdout.reopen($log)
puts command
system(command)
$stderr.reopen($log)
$stdout.reopen($log)
yield
ensure
$stderr.reopen($orgerr)
$stdout.reopen($orgout)
end
def xsystem command
Config.expand(command)
logging do
puts command
system(command)
end
end
def xpopen command, *mode, &block
Config.expand(command)
logging do
case mode[0]
when nil, /^r/
puts "#{command} |"
else
puts "| #{command}"
end
IO.popen(command, *mode, &block)
end
end
def try_link0(src, opt="")
cfile = open("conftest.c", "w")
cfile.print src
@ -146,7 +165,7 @@ def try_link0(src, opt="")
$LIBPATH.each {|d| $LDFLAGS << " -L" + d}
end
begin
xsystem(Config.expand(format($LINK, $CFLAGS, $CPPFLAGS, $LDFLAGS, opt, $LOCAL_LIBS)))
xsystem(format($LINK, $CFLAGS, $CPPFLAGS, $LDFLAGS, opt, $LOCAL_LIBS))
ensure
$LDFLAGS = ldflags
ENV['LIB'] = ORIG_LIBPATH if /mswin32|bccwin32/ =~ RUBY_PLATFORM
@ -164,12 +183,23 @@ def try_link(src, opt="")
end
end
def try_compile(src, opt="")
cfile = open("conftest.c", "w")
cfile.print src
cfile.close
begin
xsystem(format($CC, $CPPFLAGS, $CFLAGS, opt))
ensure
rm_f "conftest*"
end
end
def try_cpp(src, opt="")
cfile = open("conftest.c", "w")
cfile.print src
cfile.close
begin
xsystem(Config.expand(format($CPP, $CPPFLAGS, $CFLAGS, opt)))
xsystem(format($CPP, $CPPFLAGS, $CFLAGS, opt))
ensure
rm_f "conftest*"
end
@ -180,7 +210,25 @@ def egrep_cpp(pat, src, opt="")
cfile.print src
cfile.close
begin
xsystem(Config.expand(format($CPP, $CPPFLAGS, $CFLAGS, opt))+"|egrep #{pat}")
xpopen(format($CPP, $CFLAGS, $CPPFLAGS, opt)) do |f|
if Regexp === pat
puts(" ruby -ne 'print if /#{pat.source}/'")
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
end
ensure
rm_f "conftest*"
end
@ -347,7 +395,7 @@ SRC
unless r
r = try_link(src + <<"SRC", libs)
int main() { return 0; }
int t() { void ((*p)()); p = (void ((*)()))#{func}; return 0; }
int t() { void ((*volatile p)()); p = (void ((*)()))#{func}; return 0; }
SRC
end
unless r
@ -478,7 +526,7 @@ def create_makefile(target, srcprefix = nil)
end
$DLDFLAGS = CONFIG["DLDFLAGS"]
$libs = CONFIG["LIBRUBYARG"] + " " + $libs
$libs = CONFIG["LIBRUBYARG"] + " " + $libs + CONFIG["LIBS"]
$configure_args['--enable-shared'] or $LIBPATH |= [$topdir]
$LIBPATH |= [CONFIG["libdir"]]
@ -651,6 +699,8 @@ EOMF
copt = '-Tc'
cxxopt = '-Tp'
end
mfile.print ".SUFFIXES: .#{SRC_EXT.join(' .')} .#{$OBJEXT}\n"
unless /nmake/i =~ $make
if /bccwin32/ =~ RUBY_PLATFORM
mfile.print "