From 14d59c122f3158356bc84b25829f752585480cb7 Mon Sep 17 00:00:00 2001 From: shirosaki Date: Wed, 17 Oct 2012 12:20:57 +0000 Subject: [PATCH] extmk.rb: fix mingw make failure with make -jN * common.mk (WPROGRAM): need same dependencies as PROGRAM. * cygwin/GNUmakefile.in (uncommon.mk): move include position below WPROGRAM definition to be defined in uncommon.mk. * ext/extmk.rb (all, static): fix make rubyw.exe failure with make -jN. If make of ruby.exe and rubyw.exe run in parallel, link dll and link exe run in parallel, which causes link failure on mingw. To fix this, we make ruby.exe and rubyw.exe in one make process. [ruby-core:48007] [Bug #7165] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37246 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 13 +++++++++++++ common.mk | 2 +- cygwin/GNUmakefile.in | 3 ++- ext/extmk.rb | 11 +++++++---- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9e569fe583..6937a95052 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +Wed Oct 17 21:16:47 2012 Hiroshi Shirosaki + + * common.mk (WPROGRAM): need same dependencies as PROGRAM. + + * cygwin/GNUmakefile.in (uncommon.mk): move include position + below WPROGRAM definition to be defined in uncommon.mk. + + * ext/extmk.rb (all, static): fix make rubyw.exe failure with make -jN. + If make of ruby.exe and rubyw.exe run in parallel, link dll and link + exe run in parallel, which causes link failure on mingw. To fix this, + we make ruby.exe and rubyw.exe in one make process. + [ruby-core:48007] [Bug #7165] + Wed Oct 17 16:25:34 2012 Koichi Sasada * benchmark/bm_vm2_method_missing.rb: add a benchmark to measure diff --git a/common.mk b/common.mk index d2818f6808..3585e1269c 100644 --- a/common.mk +++ b/common.mk @@ -212,7 +212,7 @@ Doxyfile: $(srcdir)/template/Doxyfile.tmpl $(PREP) $(srcdir)/tool/generic_erb.rb program: showflags $(PROGRAM) wprogram: showflags $(WPROGRAM) -$(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP) +$(PROGRAM) $(WPROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP) $(LIBRUBY_A): $(OBJS) $(MAINOBJ) $(DMYEXT) $(ARCHFILE) diff --git a/cygwin/GNUmakefile.in b/cygwin/GNUmakefile.in index 19d1727dd7..2b0a806c2c 100644 --- a/cygwin/GNUmakefile.in +++ b/cygwin/GNUmakefile.in @@ -1,5 +1,4 @@ include Makefile --include uncommon.mk ENABLE_SHARED=@ENABLE_SHARED@ DLLWRAP = @DLLWRAP@ --target=@target_os@ --driver-name="$(CC)" @@ -35,6 +34,8 @@ EXTOBJS += $(if $(filter-out $(RUBYW_INSTALL_NAME),$(@:$(EXEEXT)=)),$(RUBY_INSTA RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(DLL_BASE_NAME).rc RUBYDEF = $(DLL_BASE_NAME).def +-include uncommon.mk + ruby: $(PROGRAM) rubyw: $(WPROGRAM) stub: $(STUBPROGRAM) diff --git a/ext/extmk.rb b/ext/extmk.rb index df86c0f37d..40c3f40bdd 100755 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -656,13 +656,11 @@ if $configure_only and $command_output mf.puts "#{tgt}: $(extensions:/.=/#{tgt})" end mf.puts - mf.puts "all: #{rubies.join(' ')}" - mf.puts "static: #{rubies.join(' ')}" mf.puts "clean:\n\t-$(Q)$(RM) ext/extinit.#{$OBJEXT}" mf.puts "distclean:\n\t-$(Q)$(RM) ext/extinit.c" mf.puts mf.puts "#{rubies.join(' ')}: $(extensions:/.=/#{$force_static ? 'static' : 'all'})" - rubies.each do |tgt| + (["all static"] + rubies).each_with_index do |tgt, i| mf.print "#{tgt}:\n\t$(Q)$(MAKE) " mf.print "$(MFLAGS) " if enable_config("shared", $enable_shared) @@ -671,7 +669,12 @@ if $configure_only and $command_output else mf.print %[EXTOBJS="$(EXTOBJS) $(ENCOBJS)" EXTLIBS="$(EXTLIBS)" ] end - mf.puts 'EXTLDFLAGS="$(EXTLDFLAGS)" $@' + mf.print 'EXTLDFLAGS="$(EXTLDFLAGS)" ' + if i == 0 + mf.puts rubies.join(' ') + else + mf.puts '$@' + end end mf.puts exec = config_string("exec") {|str| str + " "}