diff --git a/ChangeLog b/ChangeLog index 8b84f776c2..e61c826103 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,8 @@ -Sun Sep 23 21:48:08 2012 Nobuyoshi Nakada +Sun Sep 23 21:51:59 2012 Nobuyoshi Nakada + + * lib/mkmf.rb (String#unspace): unescape with backslashes. normal + makes need to escape spaces with backslashes. nmake is not the + case. [Bug #7036] * lib/mkmf.rb (create_makefile): use timestamp file dependencies for directories. diff --git a/lib/mkmf.rb b/lib/mkmf.rb index a01d317756..b77e7da231 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -12,6 +12,11 @@ class String /\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") @@ -1749,9 +1754,9 @@ ECHO = $(ECHO1:0=@echo) #### 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]).unspace}} +topdir = #{mkintpath($extmk ? CONFIG["topdir"] : $topdir).unspace} +hdrdir = #{mkintpath(CONFIG["hdrdir"]).unspace} arch_hdrdir = #{$arch_hdrdir.quote} VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])} } @@ -1762,9 +1767,9 @@ VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])} if destdir = prefix[$dest_prefix_pattern, 1] mk << "\nDESTDIR = #{destdir}\n" end - mk << "prefix = #{with_destdir(prefix)}\n" + mk << "prefix = #{with_destdir(prefix).unspace}\n" CONFIG.each do |key, var| - mk << "#{key} = #{with_destdir(mkintpath(var))}\n" if /.prefix$/ =~ key + mk << "#{key} = #{with_destdir(mkintpath(var)).unspace}\n" if /.prefix$/ =~ key end CONFIG.each do |key, var| next if /^abs_/ =~ key