[ruby-dev:23127] Re: extconf results depend on rbconfig.rb (Re: Re:File.fnmatchとDir.glob)
From:
nobu.nakada@...
Date:
2004-03-04 10:39:45 UTC
List:
ruby-dev #23127
なかだです。
At Thu, 4 Mar 2004 17:40:06 +0900,
H.Yamamoto wrote in [ruby-dev:23124]:
> >再コンパイルはしていませんが、extconf.rbの実行結果が
> >rbconfig.rb(正確にはその中のconfigure_args)に依存するために
> >Makefileを作り直しているので、そのために時間がかかるのが気にな
> >るということでしょうか。
>
> コンパイルじゃなかったんですね。でも、できれば前みたいにスパっと終わるほうが気持ちいいです。
configure_argsの変更は検出したいので、ターゲットを分けますかねぇ。
# winceはワケ分からない状態になってるのでペンディング。
* Makefile.in: miniruby is not needed for cross compile.
* Makefile.in, */Makefile.sub, mkconfig.rb: keep rbconfig.rb old if
unchanged.
* configure.in (PREP): miniruby for native compile.
Index: Makefile.in
===================================================================
RCS file: /cvs/ruby/src/ruby/Makefile.in,v
retrieving revision 1.62
diff -u -2 -p -d -r1.62 Makefile.in
--- Makefile.in 22 Feb 2004 05:44:35 -0000 1.62
+++ Makefile.in 4 Mar 2004 10:14:35 -0000
@@ -50,4 +50,5 @@ MINIRUBY = @MINIRUBY@
RUNRUBY = @RUNRUBY@
EXTCONF = extconf.rb
+RBCONFIG = .rbconfig.time
#### End of system configuration section. ####
@@ -122,5 +123,5 @@ SCRIPT_ARGS = --dest-dir="$(DESTDIR)"
EXTMK_ARGS = $(SCRIPT_ARGS) --extout="$(EXTOUT)" --extension $(EXTS) --extstatic $(EXTSTATIC) --
-all: @MAKEFILES@ miniruby$(EXEEXT) rbconfig.rb $(LIBRUBY)
+all: @MAKEFILES@ miniruby$(EXEEXT) $(RBCONFIG) $(LIBRUBY)
@$(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTMK_ARGS)
@@ -129,5 +130,5 @@ miniruby$(EXEEXT): config.status $(LIBRU
$(PURIFY) $(CC) $(LDFLAGS) $(MAINLIBS) $(MAINOBJ) $(LIBRUBY_A) $(LIBS) -o $@
-$(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(EXTOBJS) $(SETUP) miniruby$(EXEEXT)
+$(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(EXTOBJS) $(SETUP) $(PREP)
@rm -f $@
$(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) -o $@
@@ -145,5 +146,5 @@ $(LIBRUBY_A): $(OBJS) $(DMYEXT)
@-@RANLIB@ $@ 2> /dev/null || true
-$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) miniruby$(EXEEXT) $(PREP) $(ARCHFILE)
+$(LIBRUBY_SO): $(OBJS) $(DLDOBJS) $(PREP) $(ARCHFILE)
$(LDSHARED) $(DLDFLAGS) $(OBJS) $(DLDOBJS) $(SOLIBS) -o $@
@-$(MINIRUBY) -e 'ARGV.each{|link| File.delete link if File.exist? link; \
@@ -159,7 +160,7 @@ install-all: install-nodoc install-doc
install-nodoc: install-local install-ext
-install-local: rbconfig.rb
+install-local: $(RBCONFIG)
$(MINIRUBY) $(srcdir)/instruby.rb $(SCRIPT_ARGS) --mantype="$(MANTYPE)"
-install-ext: rbconfig.rb
+install-ext: $(RBCONFIG)
$(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTMK_ARGS) install
@@ -167,8 +168,8 @@ what-where-all no-install-all: no-instal
what-where no-install: no-install-local no-install-ext
what-where-local: no-install-local
-no-install-local: rbconfig.rb
+no-install-local: $(RBCONFIG)
$(MINIRUBY) $(srcdir)/instruby.rb -n $(SCRIPT_ARGS) --mantype="$(MANTYPE)"
what-where-ext: no-install-ext
-no-install-ext: rbconfig.rb
+no-install-ext: $(RBCONFIG)
$(MINIRUBY) $(srcdir)/ext/extmk.rb -n $(EXTMK_ARGS) install
@@ -191,5 +192,5 @@ distclean-ext:
distclean-local: clean-local
- @rm -f @MAKEFILES@ config.h rbconfig.rb
+ @rm -f @MAKEFILES@ config.h rbconfig.rb $(RBCONFIG)
@rm -f ext/config.cache config.cache config.log config.status
@rm -f *~ core *.core gmon.out y.tab.c y.output ruby.imp
@@ -201,5 +202,5 @@ realclean: distclean
@rm -f lex.c
-test: miniruby$(EXEEXT) rbconfig.rb $(PROGRAM) PHONY
+test: miniruby$(EXEEXT) $(RBCONFIG) $(PROGRAM) PHONY
@./miniruby$(EXEEXT) $(srcdir)/rubytest.rb
@@ -211,8 +212,8 @@ extconf:
$(RUNRUBY) -C "$(EXTCONFDIR)" $(EXTCONF) $(EXTCONFARGS)
-rbconfig.rb: miniruby$(EXEEXT) $(srcdir)/mkconfig.rb config.status $(PREP)
- @$(MINIRUBY) $(srcdir)/mkconfig.rb rbconfig.rb
+$(RBCONFIG): $(srcdir)/mkconfig.rb config.status $(PREP)
+ @$(MINIRUBY) $(srcdir)/mkconfig.rb -timestamp=$@ rbconfig.rb
-fake.rb: miniruby$(EXEEXT) Makefile
+fake.rb: Makefile
@echo ' \
class Object; \
Index: configure.in
===================================================================
RCS file: /cvs/ruby/src/ruby/configure.in,v
retrieving revision 1.226
diff -u -2 -p -d -r1.226 configure.in
--- configure.in 16 Feb 2004 06:45:31 -0000 1.226
+++ configure.in 3 Mar 2004 01:52:44 -0000
@@ -1113,5 +1113,5 @@ if test x"$cross_compiling" = xyes; then
else
MINIRUBY='./miniruby$(EXEEXT)'
- PREP=''
+ PREP='$(MINIRUBY)'
RUNRUBY='$(MINIRUBY) $(srcdir)/runruby.rb --extout=$(EXTOUT) --'
fi
Index: mkconfig.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/mkconfig.rb,v
retrieving revision 1.35
diff -u -2 -p -d -r1.35 mkconfig.rb
--- mkconfig.rb 14 Feb 2004 15:12:40 -0000 1.35
+++ mkconfig.rb 4 Mar 2004 10:33:47 -0000
@@ -140,5 +140,16 @@ $stdout.flush
$stdout.reopen($orgout)
config.close
-File.rename(rbconfig_rb_tmp, rbconfig_rb)
+if $timestamp and
+ File.exist?(rbconfig_rb) and
+ FileUtils.compare_file(rbconfig_rb, rbconfig_rb_tmp)
+ puts "#{rbconfig_rb} unchanged"
+ File.unlink(rbconfig_rb_tmp)
+ if String === $timestamp
+ FileUtils.touch($timestamp)
+ end
+else
+ puts "#{rbconfig_rb} updated"
+ File.rename(rbconfig_rb_tmp, rbconfig_rb)
+end
# vi:set sw=2:
Index: bcc32/Makefile.sub
===================================================================
RCS file: /cvs/ruby/src/ruby/bcc32/Makefile.sub,v
retrieving revision 1.53
diff -u -2 -p -d -r1.53 Makefile.sub
--- bcc32/Makefile.sub 29 Feb 2004 08:22:48 -0000 1.53
+++ bcc32/Makefile.sub 4 Mar 2004 10:27:10 -0000
@@ -153,4 +153,5 @@ MINIRUBY = .\miniruby$(EXEEXT)
RUNRUBY = .\ruby$(EXEEXT) "$(srcdir)runruby.rb" --extout="$(EXTOUT)" --
EXTCONF = extconf.rb
+RBCONFIG = .rbconfig.time
ORGLIBPATH = $(LIB)
@@ -163,4 +164,6 @@ LIBRUBY = $(RUBY_SO_NAME).lib
LIBRUBYARG = $(LIBRUBY)
+PREP = miniruby$(EXEEXT)
+
!ifndef EXTOBJS
EXTOBJS = dmyext.obj
@@ -214,6 +217,5 @@ SCRIPT_ARGS = "--dest-dir=$(DESTDIR)"
EXTMK_ARGS = $(SCRIPT_ARGS) --extout="$(EXTOUT)" --extension $(EXTS) --extstatic $(EXTSTATIC) --
-all: miniruby$(EXEEXT) rbconfig.rb \
- $(LIBRUBY) $(MISCLIBS)
+all: $(PREP) $(RBCONFIG) $(LIBRUBY) $(MISCLIBS)
@$(MINIRUBY) $(srcdir)ext/extmk.rb $(EXTMK_ARGS)
@@ -426,5 +428,5 @@ $(LIBRUBY_SO) $(LIBRUBY): $(LIBRUBY_A) $
$(LIBRUBY_LDSHARED) $(LIBRUBY_DLDFLAGS) $(EXTOBJS:/=\),$(LIBRUBY_SO),nul,$(LIBRUBY_A) $(LIBS),$(RUBYDEF),$(RUBY_SO_NAME).res
-$(RUBYDEF): $(LIBRUBY_A) miniruby$(EXEEXT)
+$(RUBYDEF): $(LIBRUBY_A) $(PREP)
$(MINIRUBY) $(srcdir)bcc32/mkexports.rb -output=$@ $(LIBRUBY_A)
@@ -433,7 +435,7 @@ install-all: install-nodoc install-doc
install-nodoc: install-local install-ext
-install-local: rbconfig.rb
+install-local: $(RBCONFIG)
$(MINIRUBY) $(srcdir)instruby.rb $(SCRIPT_ARGS)
-install-ext: rbconfig.rb
+install-ext: $(RBCONFIG)
$(MINIRUBY) $(srcdir)ext/extmk.rb $(EXTMK_ARGS) install
@@ -441,8 +443,8 @@ what-where-all no-install-all: no-instal
what-where no-install: no-install-local no-install-ext
what-where-local: no-install-local
-no-install-local: rbconfig.rb
+no-install-local: $(RBCONFIG)
$(MINIRUBY) $(srcdir)instruby.rb -n $(SCRIPT_ARGS)
what-where-ext: no-install-ext
-no-install-ext: rbconfig.rb
+no-install-ext: $(RBCONFIG)
$(MINIRUBY) $(srcdir)ext/extmk.rb -n $(EXTMK_ARGS) install
@@ -456,4 +458,5 @@ clean-local:
@if exist $(LIBRUBY_A) del $(LIBRUBY_A)
@if exist $(MAINOBJ) del $(MAINOBJ)
+ @if exist $(RBCONFIG) del $(RBCONFIG)
@if exist rbconfig.rb del rbconfig.rb
@if exist ext\extinit.c del ext\extinit.c
@@ -516,10 +519,10 @@ extconf:
$(RUNRUBY) -C "$(EXTCONFDIR)" $(EXTCONF) $(EXTCONFARGS)
-rbconfig.rb: miniruby$(EXEEXT) config.status
- @$(MINIRUBY) $(srcdir)mkconfig.rb -srcdir=$(srcdir) \
+$(RBCONFIG): $(PREP) config.status
+ @$(MINIRUBY) $(srcdir)mkconfig.rb -srcdir=$(srcdir) -timestamp=$@ \
-install_name=$(RUBY_INSTALL_NAME) \
- -so_name=$(RUBY_SO_NAME) rbconfig.rb
+ -so_name=$(RUBY_SO_NAME) -rbconfig.rb
-$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
+$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: $(RBCONFIG)
@$(MINIRUBY) $(srcdir)win32/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) \
Index: win32/Makefile.sub
===================================================================
RCS file: /cvs/ruby/src/ruby/win32/Makefile.sub,v
retrieving revision 1.72
diff -u -2 -p -d -r1.72 Makefile.sub
--- win32/Makefile.sub 2 Mar 2004 03:26:09 -0000 1.72
+++ win32/Makefile.sub 4 Mar 2004 10:11:08 -0000
@@ -2,4 +2,5 @@
SHELL = $(COMSPEC)
+MAKEFILES = Makefile $(srcdir)/wince/Makefile.sub
#### Start of system configuration section. ####
@@ -142,4 +143,5 @@ MINIRUBY = .\miniruby$(EXEEXT)
RUNRUBY = .\ruby$(EXEEXT) "$(srcdir)/runruby.rb" --extout="$(EXTOUT)" --
EXTCONF = extconf.rb
+RBCONFIG = .rbconfig.time
!if !defined(STACK)
@@ -155,4 +157,6 @@ LIBRUBY = $(RUBY_SO_NAME).lib
LIBRUBYARG = $(LIBRUBY)
+PREP = miniruby$(EXEEXT)
+
!if !defined(EXTSTATIC)
EXTSTATIC =
@@ -210,6 +214,5 @@ SCRIPT_ARGS = "--dest-dir=$(DESTDIR)"
EXTMK_ARGS = $(SCRIPT_ARGS) --extout="$(EXTOUT)" --extension $(EXTS) --extstatic $(EXTSTATIC) --
-all: ext miniruby$(EXEEXT) rbconfig.rb \
- $(LIBRUBY) $(MISCLIBS)
+all: ext $(RBCONFIG) $(LIBRUBY) $(MISCLIBS)
@$(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTMK_ARGS)
@@ -313,5 +316,5 @@ config.h:
<<KEEP
-config.status: Makefile $(srcdir)/win32/Makefile.sub
+config.status: $(MAKEFILES)
@echo Creating <<$@
# Generated automatically by Makefile.sub.
@@ -441,5 +444,5 @@ $(LIBRUBY_SO): $(LIBRUBY_A) $(DLDOBJS) $
-Fe$@ $(LDFLAGS) $(LIBRUBY_DLDFLAGS)
-$(RUBYDEF): $(LIBRUBY_A) miniruby$(EXEEXT)
+$(RUBYDEF): $(LIBRUBY_A) $(PREP)
$(MINIRUBY) $(srcdir)/win32/mkexports.rb -output=$@ $(LIBRUBY_A)
@@ -451,7 +454,7 @@ install-all: install-nodoc install-doc
install-nodoc: install-local install-ext
-install-local: rbconfig.rb
+install-local: $(RBCONFIG)
$(MINIRUBY) $(srcdir)/instruby.rb $(SCRIPT_ARGS)
-install-ext: rbconfig.rb
+install-ext: $(RBCONFIG)
$(MINIRUBY) $(srcdir)/ext/extmk.rb $(EXTMK_ARGS) install
@@ -459,8 +462,8 @@ what-where-all no-install-all: no-instal
what-where no-install: no-install-local no-install-ext
what-where-local: no-install-local
-no-install-local: rbconfig.rb
+no-install-local: $(RBCONFIG)
$(MINIRUBY) $(srcdir)/instruby.rb -n $(SCRIPT_ARGS)
what-where-ext: no-install-ext
-no-install-ext: rbconfig.rb
+no-install-ext: $(RBCONFIG)
$(MINIRUBY) $(srcdir)/ext/extmk.rb -n $(EXTMK_ARGS) install
@@ -474,4 +477,5 @@ clean-local:
@if exist $(LIBRUBY_A) del $(LIBRUBY_A)
@if exist $(MAINOBJ) del $(MAINOBJ)
+ @if exist $(RBCONFIG) del $(RBCONFIG)
@if exist rbconfig.rb del rbconfig.rb
@if exist ext\extinit.c del ext\extinit.c
@@ -532,11 +536,11 @@ extconf:
$(RUNRUBY) -C "$(EXTCONFDIR)" $(EXTCONF) $(EXTCONFARGS)
-rbconfig.rb: miniruby$(EXEEXT) config.status
- @$(MINIRUBY) $(srcdir)/mkconfig.rb -srcdir=$(srcdir) \
+$(RBCONFIG): miniruby$(EXEEXT) config.status
+ $(MINIRUBY) $(srcdir)/mkconfig.rb -srcdir=$(srcdir) -timestamp=$@ \
-install_name=$(RUBY_INSTALL_NAME) \
-so_name=$(RUBY_SO_NAME) rbconfig.rb
-$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: rbconfig.rb
- @$(MINIRUBY) $(srcdir)/win32/resource.rb \
+$(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc: $(RBCONFIG)
+ $(MINIRUBY) $(srcdir)/win32/resource.rb \
-ruby_name=$(RUBY_INSTALL_NAME) \
-rubyw_name=$(RUBYW_INSTALL_NAME) \
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦