mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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/trunk@22592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
ff9bfed83d
commit
9632241261
5 changed files with 59 additions and 11 deletions
12
ChangeLog
12
ChangeLog
|
@ -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 17:58:07 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
|
||||
* common.mk (ripper.c): exec can't work on Windows.
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
SHELL = /bin/sh
|
||||
NULLCMD = :
|
||||
RUNCMD = $(SHELL)
|
||||
exec = exec
|
||||
|
||||
#### Start of system configuration section. ####
|
||||
|
@ -118,6 +119,8 @@ DLEXT = @DLEXT@
|
|||
MANTYPE = @MANTYPE@
|
||||
|
||||
INSTALLED_LIST= .installed.list
|
||||
|
||||
MKMAIN_CMD = mkmain.sh
|
||||
#### End of variables
|
||||
|
||||
all:
|
||||
|
|
13
common.mk
13
common.mk
|
@ -122,9 +122,16 @@ BOOTSTRAPRUBY = $(BASERUBY)
|
|||
|
||||
COMPILE_PRELUDE = $(MINIRUBY) -I$(srcdir) -rrbconfig $(srcdir)/tool/compile_prelude.rb
|
||||
|
||||
all: encs exts
|
||||
exts: $(MKFILES) incs $(PREP) $(RBCONFIG) $(LIBRUBY)
|
||||
@$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" $(EXTMK_ARGS)
|
||||
all: encs exts main
|
||||
|
||||
main: exts
|
||||
@$(RUNCMD) $(MKMAIN_CMD) MAKE=$(MAKE)
|
||||
|
||||
exts: $(MKMAIN_CMD)
|
||||
|
||||
$(MKMAIN_CMD): $(MKFILES) incs $(PREP) $(RBCONFIG) $(LIBRUBY)
|
||||
@$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$@ $(EXTMK_ARGS)
|
||||
|
||||
prog: $(PROGRAM) $(WPROGRAM)
|
||||
|
||||
loadpath: $(PREP)
|
||||
|
|
34
ext/extmk.rb
34
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
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# -*- makefile -*-
|
||||
|
||||
SHELL = $(COMSPEC)
|
||||
RUNCMD = $(COMSPEC) /c
|
||||
MKFILES = Makefile
|
||||
NULL = nul
|
||||
|
||||
|
@ -258,6 +259,8 @@ ASMEXT = asm
|
|||
|
||||
INSTALLED_LIST= .installed.list
|
||||
|
||||
MKMAIN_CMD = mkmain.bat
|
||||
|
||||
!if !defined(WINMAINOBJ)
|
||||
WINMAINOBJ = winmain.$(OBJEXT)
|
||||
!endif
|
||||
|
@ -806,20 +809,15 @@ ext/extinit.obj: ext/extinit.c $(SETUP)
|
|||
$(INSNS):
|
||||
@$(RM) $(PROGRAM)
|
||||
-$(BASERUBY) -Ks $(srcdir)/tool/insns2vm.rb $(INSNS2VMOPT) $@
|
||||
if not exist $@ copy $(srcdir:/=\)\$(@F) $@
|
||||
|
||||
node_name.inc:
|
||||
-$(BASERUBY) -n $(srcdir)/tool/node_name.rb $? > $@
|
||||
if not exist $@ copy $(srcdir:/=\)\$(@F) $@
|
||||
|
||||
known_errors.inc:
|
||||
-$(BASERUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
|
||||
if not exist $@ copy $(srcdir:/=\)\$(@F) $@
|
||||
|
||||
miniprelude.c:
|
||||
-$(BASERUBY) -I$(srcdir) $(srcdir)/tool/compile_prelude.rb $(srcdir)/prelude.rb $@
|
||||
if not exist $@ copy $(srcdir:/=\)\$(@F) $@
|
||||
|
||||
newline.c:
|
||||
-$(BASERUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo newline.c $(srcdir)/enc/trans/newline.trans
|
||||
if not exist $@ copy $(srcdir:/=\)\$(@F) $@
|
||||
|
|
Loading…
Reference in a new issue