From 5d0fb7c155f446fd76bf7ccc5aa17c47729f5f2e Mon Sep 17 00:00:00 2001 From: tenderlove Date: Thu, 6 Jan 2011 00:18:16 +0000 Subject: [PATCH] * lib/mkmf.rb (configuration): fixing gsub when multiple error flags are passed to GCC. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30472 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ lib/mkmf.rb | 4 +++- test/mkmf/test_find_executable.rb | 16 ++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 97e8e79900..e23b87c3eb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Jan 6 09:12:31 2011 Aaron Patterson + + * lib/mkmf.rb (configuration): fixing gsub when multiple error flags + are passed to GCC. + Thu Jan 6 05:25:49 2011 Nobuyoshi Nakada * array.c (rb_ary_modify): export. diff --git a/lib/mkmf.rb b/lib/mkmf.rb index d7964d61cb..a4388862a3 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -1660,7 +1660,9 @@ VPATH = #{vpath.join(CONFIG['PATH_SEPARATOR'])} extconf_h = $extconf_h ? "-DRUBY_EXTCONF_H=\\\"$(RUBY_EXTCONF_H)\\\" " : $defs.join(" ") << " " if warnflags = CONFIG['warnflags'] and CONFIG['GCC'] == 'yes' and !$extmk # turn warnings into errors only for bundled extensions. - warnflags = warnflags.gsub(/(?:\A|\s)-Werror=/, '\1-W') + warnflags = warnflags.split.map { |flag| + flag.gsub(/(?:\A|\s)-Werror=/, '\1-W') + }.join ' ' end mk << %{ CC = #{CONFIG['CC']} diff --git a/test/mkmf/test_find_executable.rb b/test/mkmf/test_find_executable.rb index 5ccec880fd..132330bf7c 100644 --- a/test/mkmf/test_find_executable.rb +++ b/test/mkmf/test_find_executable.rb @@ -2,6 +2,22 @@ require_relative 'base' class TestMkmf class TestFindExecutable < TestMkmf + def test_valid_warnflags + val = $extmk + begin + makefile = mkmf do + $extmk = false + self.class::CONFIG['warnflags'] = "-Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32" + self.class::CONFIG['GCC'] = 'yes' + configuration '.' + end + generated_flags = makefile.grep(/warnflags/).first[/^warnflags = .*$/] + assert_equal "warnflags = -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32", generated_flags + ensure + $extmk = val + end + end + def test_find_executable bug2669 = '[ruby-core:27912]' path, ENV["PATH"] = ENV["PATH"], path