зеркало из https://github.com/github/ruby.git
mkmf.rb: try linking at try_var
To check for variables accessible but not declared.
This commit is contained in:
Родитель
d6cf4c0c99
Коммит
524513be39
10
lib/mkmf.rb
10
lib/mkmf.rb
|
@ -812,12 +812,20 @@ SRC
|
|||
# You should use +have_var+ rather than +try_var+.
|
||||
def try_var(var, headers = nil, opt = "", &b)
|
||||
headers = cpp_include(headers)
|
||||
try_compile(<<"SRC", opt, &b)
|
||||
try_compile(<<"SRC", opt, &b) or
|
||||
#{headers}
|
||||
/*top*/
|
||||
extern int t(void);
|
||||
#{MAIN_DOES_NOTHING 't'}
|
||||
int t(void) { const volatile void *volatile p; p = &(&#{var})[0]; return !p; }
|
||||
SRC
|
||||
try_link(<<"SRC", opt, &b)
|
||||
#{headers}
|
||||
/*top*/
|
||||
extern int t(void);
|
||||
#{MAIN_DOES_NOTHING 't'}
|
||||
extern int #{var};
|
||||
int t(void) { const volatile void *volatile p; p = &(&#{var})[0]; return !p; }
|
||||
SRC
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
# frozen_string_literal: false
|
||||
require_relative 'base'
|
||||
require 'tempfile'
|
||||
|
||||
class TestMkmf
|
||||
class TestHaveVar < TestMkmf
|
||||
def test_have_var
|
||||
assert_equal(true, have_var("ruby_version"), MKMFLOG)
|
||||
assert_include($defs, '-DHAVE_RUBY_VERSION')
|
||||
end
|
||||
|
||||
def test_not_have_var
|
||||
assert_equal(false, have_var("rb_vm_something_flag"), MKMFLOG)
|
||||
assert_not_include($defs, '-DHAVE_RB_VM_SOMETHING_FLAG')
|
||||
end
|
||||
end
|
||||
end
|
Загрузка…
Ссылка в новой задаче