mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
cgen: use a guarded include for <inttypes.h> too
This commit is contained in:
parent
4bc38a2f6c
commit
d89986dd5e
@ -282,7 +282,7 @@ pub fn (mut g Gen) init() {
|
|||||||
g.cheaders.writeln(g.pref.custom_prelude)
|
g.cheaders.writeln(g.pref.custom_prelude)
|
||||||
} else if !g.pref.no_preludes {
|
} else if !g.pref.no_preludes {
|
||||||
g.cheaders.writeln('// Generated by the V compiler')
|
g.cheaders.writeln('// Generated by the V compiler')
|
||||||
g.cheaders.writeln('#include <inttypes.h>') // int64_t etc
|
g.cheaders.writeln(get_guarded_include_text('<inttypes.h>', 'Please install build-essentials')) // int64_t etc
|
||||||
g.cheaders.writeln(c_builtin_types)
|
g.cheaders.writeln(c_builtin_types)
|
||||||
if g.pref.is_bare {
|
if g.pref.is_bare {
|
||||||
g.cheaders.writeln(bare_c_headers)
|
g.cheaders.writeln(bare_c_headers)
|
||||||
@ -979,19 +979,7 @@ fn (mut g Gen) stmt(node ast.Stmt) {
|
|||||||
} else {
|
} else {
|
||||||
missing_message += ' Please install the corresponding development headers.'
|
missing_message += ' Please install the corresponding development headers.'
|
||||||
}
|
}
|
||||||
mut guarded_include := '
|
mut guarded_include := get_guarded_include_text(node.main, missing_message)
|
||||||
|#if defined(__has_include)
|
|
||||||
|
|
|
||||||
|#if __has_include($node.main)
|
|
||||||
|#include $node.main
|
|
||||||
|#else
|
|
||||||
|#error VERROR_MESSAGE $missing_message
|
|
||||||
|#endif
|
|
||||||
|
|
|
||||||
|#else
|
|
||||||
|#include $node.main
|
|
||||||
|#endif
|
|
||||||
'.strip_margin()
|
|
||||||
if node.main == '<errno.h>' {
|
if node.main == '<errno.h>' {
|
||||||
// fails with musl-gcc and msvc; but an unguarded include works:
|
// fails with musl-gcc and msvc; but an unguarded include works:
|
||||||
guarded_include = '#include $node.main'
|
guarded_include = '#include $node.main'
|
||||||
@ -5533,3 +5521,20 @@ fn (mut g Gen) panic_debug_info(pos token.Position) (int, string, string, string
|
|||||||
pamod := g.fn_decl.modname()
|
pamod := g.fn_decl.modname()
|
||||||
return paline, pafile, pamod, pafn
|
return paline, pafile, pamod, pafn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_guarded_include_text(iname string, imessage string) string {
|
||||||
|
res := '
|
||||||
|
|#if defined(__has_include)
|
||||||
|
|
|
||||||
|
|#if __has_include($iname)
|
||||||
|
|#include $iname
|
||||||
|
|#else
|
||||||
|
|#error VERROR_MESSAGE $imessage
|
||||||
|
|#endif
|
||||||
|
|
|
||||||
|
|#else
|
||||||
|
|#include $iname
|
||||||
|
|#endif
|
||||||
|
'.strip_margin()
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user