mkmf.rb: try linking at try_var

To check for variables accessible but not declared.
This commit is contained in:
Nobuyoshi Nakada 2021-07-08 16:56:32 +09:00
Родитель d6cf4c0c99
Коммит 524513be39
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 7CD2805BFA3770C6
2 изменённых файлов: 26 добавлений и 1 удалений

Просмотреть файл

@ -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