From 68d5d0f372221e4772507842e0ec8fabef9d0d98 Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 1 Sep 2016 05:24:19 +0000 Subject: extmk.rb: hacks for bundled gems * ext/extmk.rb (gems): move dirty hacks for bundled gems from mkmf.rb. * lib/mkmf.rb (create_makefile): yield all configuration strings. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ ext/extmk.rb | 22 ++++++++++++++++------ lib/mkmf.rb | 22 +++++++++++----------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 97bb7363d3..36be6d971b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Thu Sep 1 14:24:16 2016 Nobuyoshi Nakada + + * ext/extmk.rb (gems): move dirty hacks for bundled gems from + mkmf.rb. + + * lib/mkmf.rb (create_makefile): yield all configuration strings. + Wed Aug 31 17:39:19 2016 Nobuyoshi Nakada * ext/extmk.rb (create_makefile): make gem.build_complete file diff --git a/ext/extmk.rb b/ext/extmk.rb index 848516d535..0a7c589063 100755 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -569,10 +569,22 @@ FileUtils::makedirs('gems') Dir.chdir('gems') extout = $extout unless gems.empty? + def self.timestamp_file(name, target_prefix = nil) + name = @sodir if name == '$(TARGET_SO_DIR)' + super + end + def self.create_makefile(*args, &block) - if super(*args, &block) - open("Makefile", "a") do |mf| - mf << %{ + super(*args) do |conf| + conf.find do |s| + s.sub!(/^(TARGET_SO_DIR *= *)\$\(RUBYARCHDIR\)/) { + $1 + @sodir + } + end + conf << %{ + +# default target +all: build_complete = $(TARGET_SO_DIR)gem.build_complete install-so: build_complete @@ -581,14 +593,12 @@ $(build_complete): $(TARGET_SO) $(Q) $(TOUCH) $@ } - end - true end end end gems.each do |d| $extout = extout.dup - $sodir = "$(extout)/gems/$(arch)/#{d[%r{\A[^/]+}]}" + @sodir = "$(extout)/gems/$(arch)/#{d[%r{\A[^/]+}]}" extmake(d, 'gems') end $extout = extout diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 8c795b0ae6..4e69f765fb 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -2260,11 +2260,8 @@ RULES dllib = target ? "$(TARGET).#{CONFIG['DLEXT']}" : "" staticlib = target ? "$(TARGET).#$LIBEXT" : "" - mfile = open("Makefile", "wb") conf = configuration(srcprefix) - conf = yield(conf) if block_given? - mfile.puts(conf) - mfile.print " + conf << "\ libpath = #{($DEFLIBPATH|$LIBPATH).join(" ")} LIBPATH = #{libpath} DEFFILE = #{deffile} @@ -2293,17 +2290,20 @@ STATIC_LIB = #{staticlib unless $static.nil?} TIMESTAMP_DIR = #{$extout ? '$(extout)/.timestamp' : '.'} " #" # TODO: fixme - install_dirs.each {|d| mfile.print("%-14s= %s\n" % d) if /^[[:upper:]]/ =~ d[0]} - sodir = !$extout ? '' : - $sodir ? $sodir+target_prefix : - '$(RUBYARCHDIR)' + install_dirs.each {|d| conf << ("%-14s= %s\n" % d) if /^[[:upper:]]/ =~ d[0]} + sodir = $extout ? '$(TARGET_SO_DIR)' : '$(RUBYARCHDIR)' n = '$(TARGET_SO_DIR)$(TARGET)' - mfile.print " -TARGET_SO_DIR =#{(sodir && !sodir.empty? ? " #{sodir}/" : '')} + conf << "\ +TARGET_SO_DIR =#{$extout ? " $(RUBYARCHDIR)/" : ''} TARGET_SO = $(TARGET_SO_DIR)$(DLLIB) CLEANLIBS = $(TARGET_SO) #{config_string('cleanlibs') {|t| t.gsub(/\$\*/) {n}}} CLEANOBJS = *.#{$OBJEXT} #{config_string('cleanobjs') {|t| t.gsub(/\$\*/, "$(TARGET)#{deffile ? '-$(arch)': ''}")} if target} *.bak +" #" + conf = yield(conf) if block_given? + mfile = open("Makefile", "wb") + mfile.puts(conf) + mfile.print " all: #{$extout ? "install" : target ? "$(DLLIB)" : "Makefile"} static: #{$extmk && !$static ? "all" : "$(STATIC_LIB)#{!$extmk ? " install-rb" : ""}"} .PHONY: all install static install-so install-rb @@ -2339,7 +2339,7 @@ static: #{$extmk && !$static ? "all" : "$(STATIC_LIB)#{!$extmk ? " install-rb" : mfile.print "\t-$(Q)$(RMDIRS) #{fseprepl[dir]}#{$ignore_error}\n" else mfile.print "#{f} #{stamp}\n" - mfile.print "\t$(INSTALL_PROG) #{fseprepl[f]} $(RUBYARCHDIR)\n" + mfile.print "\t$(INSTALL_PROG) #{fseprepl[f]} #{dir}\n" if defined?($installed_list) mfile.print "\t@echo #{dir}/#{File.basename(f)}>>$(INSTALLED_LIST)\n" end -- cgit v1.2.3