mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
transform_mjit_header.rb: add system_header pragma
* tool/transform_mjit_header.rb: insert GCC system_header pragma to get rid of errors caused by the contents included from system headers. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65169 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
5fa4df0e74
commit
15d0180b6e
1 changed files with 14 additions and 3 deletions
|
@ -181,10 +181,17 @@ module MJITHeader
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.with_code(code)
|
def self.with_code(code)
|
||||||
Tempfile.open(['', '.c'], mode: File::BINARY) do |f|
|
# for `system_header` pragma which can't be in the main file.
|
||||||
|
Tempfile.open(['', '.h'], mode: File::BINARY) do |f|
|
||||||
f.puts code
|
f.puts code
|
||||||
f.close
|
f.close
|
||||||
return yield(f.path)
|
Tempfile.open(['', '.c'], mode: File::BINARY) do |c|
|
||||||
|
c.puts <<SRC
|
||||||
|
#include "#{f.path}"
|
||||||
|
SRC
|
||||||
|
c.close
|
||||||
|
return yield(c.path)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
private_class_method :with_code
|
private_class_method :with_code
|
||||||
|
@ -220,7 +227,11 @@ if MJITHeader.windows? # transformation is broken with Windows headers for now
|
||||||
end
|
end
|
||||||
|
|
||||||
macro, code = MJITHeader.separate_macro_and_code(code) # note: this does not work on MinGW
|
macro, code = MJITHeader.separate_macro_and_code(code) # note: this does not work on MinGW
|
||||||
code_to_check = "#{code}#{macro}" # macro should not affect code again
|
code_to_check = "#{<<header}#{code}#{macro}" # macro should not affect code again
|
||||||
|
#ifdef __GNUC__
|
||||||
|
# pragma GCC system_header
|
||||||
|
#endif
|
||||||
|
header
|
||||||
|
|
||||||
if MJITHeader.conflicting_types?(code_to_check, cc, cflags)
|
if MJITHeader.conflicting_types?(code_to_check, cc, cflags)
|
||||||
cflags = "#{cflags} -std=c99" # For AIX gcc
|
cflags = "#{cflags} -std=c99" # For AIX gcc
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue