From 1e6a7c43de34abe218ea6c13418d0d85bc634802 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 3 Feb 2015 08:15:47 +0000 Subject: [PATCH] mkmf.rb: avoid interference * lib/mkmf.rb (try_cppflags, try_cflags, try_ldflags): get rid of interference by modifying global variables in have_devel? method. [ruby-core:67962] [Bug #10821] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49482 b2dd03c8-39d4-4d8f-98ff-823fe69b080e Conflicts: ChangeLog --- lib/mkmf.rb | 12 +++--------- test/mkmf/base.rb | 12 +++++++++++- test/mkmf/test_flags.rb | 21 +++++++++++++++++++++ 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/lib/mkmf.rb b/lib/mkmf.rb index b408ed780f8df9..f5c462b58e636e 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -610,9 +610,7 @@ def with_cppflags(flags) end def try_cppflags(flags) - with_cppflags(flags) do - try_header("int main() {return 0;}") - end + try_header(MAIN_DOES_NOTHING, flags) end def with_cflags(flags) @@ -624,9 +622,7 @@ def with_cflags(flags) end def try_cflags(flags) - with_cflags(flags) do - try_compile("int main() {return 0;}") - end + try_compile(MAIN_DOES_NOTHING, flags) end def with_ldflags(flags) @@ -638,9 +634,7 @@ def with_ldflags(flags) end def try_ldflags(flags) - with_ldflags(flags) do - try_link("int main() {return 0;}") - end + try_link(MAIN_DOES_NOTHING, flags) end def try_static_assert(expr, headers = nil, opt = "", &b) diff --git a/test/mkmf/base.rb b/test/mkmf/base.rb index ab1a0f04b7ee49..ea6a9d80f435f8 100644 --- a/test/mkmf/base.rb +++ b/test/mkmf/base.rb @@ -49,7 +49,9 @@ def write(s) @buffer << s if @out end end +end +module TestMkmf::Base attr_reader :stdout def mkmflog(msg) @@ -84,7 +86,7 @@ def setup @tmpdir = Dir.mktmpdir @curdir = Dir.pwd @mkmfobj = Object.new - @stdout = Capture.new + @stdout = TestMkmf::Capture.new Dir.chdir(@tmpdir) @quiet, Logging.quiet = Logging.quiet, true init_mkmf @@ -127,3 +129,11 @@ def config_value(name) nil end end + +class TestMkmf + include TestMkmf::Base + + def assert_separately(args, src, *rest) + super(args + ["-r#{__FILE__}"], "extend TestMkmf::Base; setup\n#{src}", *rest) + end +end diff --git a/test/mkmf/test_flags.rb b/test/mkmf/test_flags.rb index 3bb278071a56b3..4e0d5f66a230fc 100644 --- a/test/mkmf/test_flags.rb +++ b/test/mkmf/test_flags.rb @@ -31,5 +31,26 @@ def test_valid_warnflags $warnflags = warnflags $extmk = val end + + def test_try_ldflag_invalid_opt + assert_separately([], <<-'end;') #do + assert(!try_ldflags("----------")) + assert(have_devel?, TestMkmf::MKMFLOG) + end; + end + + def test_try_cflag_invalid_opt + assert_separately([], <<-'end;') #do + assert(!try_cflags("----------")) + assert(have_devel?, TestMkmf::MKMFLOG) + end; + end + + def test_try_cppflag_invalid_opt + assert_separately([], <<-'end;') #do + assert(!try_cppflags("----------")) + assert(have_devel?, TestMkmf::MKMFLOG) + end; + end end end