* 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_8@22592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-02-24 10:01:08 +00:00
parent 6836882ac6
commit cb7bc8db56
5 changed files with 59 additions and 5 deletions

View file

@ -1,3 +1,15 @@
Tue Feb 24 19:01:05 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* 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.
Tue Feb 24 07:09:50 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
* regex.c (re_compile_pattern): \s should include \v too.

View file

@ -1,5 +1,6 @@
SHELL = /bin/sh
NULLCMD = :
RUNCMD = $(SHELL)
#### Start of system configuration section. ####
@ -93,6 +94,8 @@ OBJEXT = @OBJEXT@
MANTYPE = @MANTYPE@
INSTALLED_LIST= .installed.list
MKMAIN_CMD = mkmain.sh
#### End of variables
all:

View file

@ -80,8 +80,16 @@ TESTWORKDIR = testwork
VCS = svn
all: $(MKFILES) $(PREP) $(RBCONFIG) $(LIBRUBY)
@$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" $(EXTMK_ARGS)
all: main
main: exts
@$(RUNCMD) $(MKMAIN_CMD) MAKE=$(MAKE)
exts: $(MKMAIN_CMD)
$(MKMAIN_CMD): $(MKFILES) $(PREP) $(RBCONFIG) $(LIBRUBY)
@$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$@ $(EXTMK_ARGS)
prog: $(PROGRAM) $(WPROGRAM)
miniruby$(EXEEXT): config.status $(LIBRUBY_A) $(MAINOBJ) $(MINIOBJS) $(OBJS) $(DMYEXT)

View file

@ -16,6 +16,7 @@ $extlibs = nil
$extpath = nil
$ignore = nil
$message = nil
$command_output = nil
$progname = $0
alias $PROGRAM_NAME $0
@ -239,6 +240,7 @@ end
def parse_args()
$mflags = []
$makeflags = []
opts = nil
$optparser ||= OptionParser.new do |opts|
@ -268,11 +270,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)
@ -528,6 +534,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
@ -544,9 +551,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?
@ -560,7 +568,27 @@ if $nmake == ?b
vars.each {|flag| flag.sub!(/\A/, "-D")}
end
end
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

View file

@ -1,6 +1,7 @@
# -*- makefile -*-
SHELL = $(COMSPEC)
RUNCMD = $(COMSPEC) /c
MKFILES = Makefile
NULL = nul
@ -237,6 +238,8 @@ ASMEXT = asm
INSTALLED_LIST= .installed.list
MKMAIN_CMD = mkmain.bat
!if !defined(WINMAINOBJ)
WINMAINOBJ = winmain.$(OBJEXT)
!endif