From c2109f71a6ffde319d845558c07e6eac803aa21f Mon Sep 17 00:00:00 2001 From: yugui Date: Tue, 3 Mar 2009 11:40:11 +0000 Subject: merges r22592 from trunk into ruby_1_9_1. -- * common.mk (main): split from exts and makes main program after building exts with miniruby, to get rid of overwriting running program. [ruby-core:22339] * Makefile.in, win32/Makefile.sub (RUNCMD, MKMAIN_CMD): macros to run script file. * ext/extmk.rb (parse_args): added --command-output option which creates script file to make main program. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@22737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/extmk.rb | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) (limited to 'ext') diff --git a/ext/extmk.rb b/ext/extmk.rb index 5a99f323d8..adca9b4030 100644 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -16,6 +16,7 @@ $extlibs = nil $extpath = nil $ignore = nil $message = nil +$command_output = nil $progname = $0 alias $PROGRAM_NAME $0 @@ -230,6 +231,7 @@ end def parse_args() $mflags = [] + $makeflags = [] $optparser ||= OptionParser.new do |opts| opts.on('-n') {$dryrun = true} @@ -258,11 +260,15 @@ def parse_args() if arg = v.first arg.insert(0, '-') if /\A[^-][^=]*\Z/ =~ arg end + $makeflags.concat(v.reject {|arg| /\AMINIRUBY=/ =~ arg}.quote) $mflags.concat(v) end opts.on('--message [MESSAGE]', String) do |v| $message = v end + opts.on('--command-output=FILE', String) do |v| + $command_output = v + end end begin $optparser.parse!(ARGV) @@ -521,6 +527,7 @@ void Init_ext _((void))\n{\n#$extinit} puts(*conf) $stdout.flush $mflags.concat(conf) + $makeflags.concat(conf) else FileUtils.rm_f(extinit.to_a) end @@ -537,9 +544,10 @@ Dir.chdir ".." unless $destdir.to_s.empty? $mflags.defined?("DESTDIR") or $mflags << "DESTDIR=#{$destdir}" end -puts "making #{rubies.join(', ')}" -$stdout.flush +message = "making #{rubies.join(', ')}" $mflags.concat(rubies) +$makeflags.uniq! +$makeflags.concat(rubies) if $nmake == ?b unless (vars = $mflags.grep(/\A\w+=/n)).empty? @@ -555,7 +563,27 @@ if $nmake == ?b end $mflags.unshift("topdir=#$topdir") ENV.delete("RUBYOPT") -system($make, *sysquote($mflags)) or exit($?.exitstatus) +if $command_output + message = "echo #{message}" + cmd = [$make, *sysquote($makeflags)].join(' ') + open($command_output, 'wb') do |f| + case $command_output + when /\.sh\z/ + f.puts message, "rm -f $0; exec #{cmd}" + when /\.bat\z/ + ["@echo off", message, cmd, "del %0 & exit %ERRORLEVEL%"].each do |s| + f.print s, "\r\n" + end + else + f.puts cmd + end + f.chmod(0755) + end +else + puts message + $stdout.flush + system($make, *sysquote($mflags)) or exit($?.exitstatus) +end #Local variables: # mode: ruby -- cgit v1.2.3