summaryrefslogtreecommitdiff
path: root/lib/mkmf.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-09-02 08:47:33 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-09-02 08:47:47 +0900
commitcb5a41c0a02962da838990853f5d6632d8abb92d (patch)
tree2783e3329b4860b8d1c86cdb4619e176953c55ae /lib/mkmf.rb
parent9c5ad5d42d026a1acc123e7597a4f92ef6e09e6b (diff)
Get rid of incompatible-pointer-types-discards-qualifiers warning
Diffstat (limited to 'lib/mkmf.rb')
-rw-r--r--lib/mkmf.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
index 04b5f26a5e..cab9a3f646 100644
--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -771,11 +771,20 @@ int main() {printf("%"PRI_CONFTEST_PREFIX"#{neg ? 'd' : 'u'}\\n", conftest_const
# files.
def try_func(func, libs, headers = nil, opt = "", &b)
headers = cpp_include(headers)
+ prepare = String.new
case func
when /^&/
decltype = proc {|x|"const volatile void *#{x}"}
when /\)$/
- call = func
+ strvars = []
+ call = func.gsub(/""/) {
+ v = "s#{strvars.size + 1}"
+ strvars << v
+ v
+ }
+ unless strvars.empty?
+ prepare << "char " << strvars.map {|v| "#{v}[1024]"}.join(", ") << "; "
+ end
when nil
call = ""
else
@@ -805,7 +814,7 @@ SRC
extern int t(void);
#{MAIN_DOES_NOTHING 't'}
#{"extern void #{call};" if decltype}
-int t(void) { #{call}; return 0; }
+int t(void) { #{prepare}#{call}; return 0; }
SRC
end