From 132909cf4bc7cb717e6f8f80f15425fd7dda78f7 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 20 Sep 2012 01:25:55 +0900 Subject: [PATCH 1/4] mkmf.rb: unexpand macros * lib/mkmf.rb: unexpand macros. --- lib/mkmf.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 07c6143af3bf27..59cc05ed44662e 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -196,10 +196,11 @@ def map_dir(dir, map = nil) $extmk = path[0, topdir.size+1] == topdir+"/" $extmk &&= %r"\A(?:ext|enc|tool|test(?:/.+)?)\z" =~ File.dirname(path[topdir.size+1..-1]) $extmk &&= true - if not $extmk and File.exist?(($hdrdir = RbConfig::CONFIG["rubyhdrdir"]) + "/ruby/ruby.h") + if not $extmk and File.exist?(RbConfig::CONFIG["rubyhdrdir"] + "/ruby/ruby.h") + $hdrdir = CONFIG["rubyhdrdir"] $topdir = $hdrdir $top_srcdir = $hdrdir - $arch_hdrdir = $hdrdir + "/$(arch)" + $arch_hdrdir = "$(hdrdir)/$(arch)" elsif File.exist?(($hdrdir = ($top_srcdir ||= topdir) + "/include") + "/ruby.h") $topdir ||= RbConfig::CONFIG["topdir"] $arch_hdrdir = "$(extout)/include/$(arch)" From cacb90bfb4d1d5c88fb5f917cfdbc6b2a97b2280 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 20 Sep 2012 01:27:23 +0900 Subject: [PATCH 2/4] mkmf.rb: directory timestamp * lib/mkmf.rb (create_makefile): use timestamp file dependencies for directories. --- lib/mkmf.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 59cc05ed44662e..216917e5765f11 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -2127,14 +2127,14 @@ def create_makefile(target, srcprefix = nil) if target f = "$(DLLIB)" dest = "#{dir}/#{f}" - mfile.puts dest if $extout + mfile.puts dest mfile.print "clean-so::\n" mfile.print "\t-$(Q)$(RM) #{fseprepl[dest]}\n" mfile.print "\t-$(Q)$(RMDIRS) #{fseprepl[dir]}#{$ignore_error}\n" else - mfile.print "#{dest}: #{f}\n\t-$(Q)$(MAKEDIRS) $(@D#{sep})\n" - mfile.print "\t$(INSTALL_PROG) #{fseprepl[f]} $(@D#{sep})\n" + mfile.print "#{f} #{timestamp_file(dir)}\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 From 7997ef6744982f5e2b263e0d49fbcc01d0a06d64 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 20 Sep 2012 01:29:30 +0900 Subject: [PATCH 3/4] mkmf.rb: library path quote * lib/mkmf.rb (LIBPATHFLAG): no needs to escape library path here. --- lib/mkmf.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 216917e5765f11..b295a46ba3bbd7 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -2399,7 +2399,7 @@ def mkmf_failed(path) "$(LDSHARED) #{OUTFLAG}$@ $(OBJS) " \ "$(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)" end - LIBPATHFLAG = config_string('LIBPATHFLAG') || ' -L"%s"' + LIBPATHFLAG = config_string('LIBPATHFLAG') || ' -L%s' RPATHFLAG = config_string('RPATHFLAG') || '' LIBARG = config_string('LIBARG') || '-l%s' MAIN_DOES_NOTHING = config_string('MAIN_DOES_NOTHING') || 'int main(void) {return 0;}' From 1357c65f90a03e0af9d9c91d7714d62b641c53fa Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 20 Sep 2012 01:32:14 +0900 Subject: [PATCH 4/4] mkmf.rb: unspace * lib/mkmf.rb (String#unspace): unescape with backslashes. normal makes need to escape spaces with backslashes. nmake is not the case. --- lib/mkmf.rb | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/mkmf.rb b/lib/mkmf.rb index b295a46ba3bbd7..2f82c2900cde45 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -12,6 +12,11 @@ def quote /\s/ =~ self ? "\"#{self}\"" : "#{self}" end + # Escape whitespaces for Makefile. + def unspace + gsub(/\s/, '\\\\\\&') + end + # Generates a string used as cpp macro name. def tr_cpp strip.upcase.tr_s("^A-Z0-9_*", "_").tr_s("*", "P") @@ -1723,7 +1728,7 @@ def mkintpath(path) end unless defined?(mkintpath) def mkintpath(path) - path + path.unspace end end @@ -1751,9 +1756,9 @@ def configuration(srcdir) #### Start of system configuration section. #### #{"top_srcdir = " + $top_srcdir.sub(%r"\A#{Regexp.quote($topdir)}/", "$(topdir)/") if $extmk} -srcdir = #{srcdir.gsub(/\$\((srcdir)\)|\$\{(srcdir)\}/) {mkintpath(CONFIG[$1||$2])}.quote} -topdir = #{mkintpath($extmk ? CONFIG["topdir"] : $topdir).quote} -hdrdir = #{mkintpath(CONFIG["hdrdir"]).quote} +srcdir = #{srcdir.gsub(/\$\((srcdir)\)|\$\{(srcdir)\}/) {mkintpath(CONFIG[$1||$2])}} +topdir = #{mkintpath($extmk ? CONFIG["topdir"] : $topdir)} +hdrdir = #{mkintpath(CONFIG["hdrdir"])} arch_hdrdir = #{$arch_hdrdir.quote} VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])} } @@ -1765,7 +1770,7 @@ def configuration(srcdir) end CONFIG.each do |key, var| next unless /prefix$/ =~ key - mk << "#{key} = #{with_destdir(var)}\n" + mk << "#{key} = #{with_destdir(var).unspace}\n" end CONFIG.each do |key, var| next if /^abs_/ =~ key