This is just forcing the usage of -include as c_args, even though this particular case can happen easily when this is provided via a dependency cflags. We also ensure that both the headers are included by using locale definitions.pull/8750/head
parent
739e499554
commit
d5932a174d
4 changed files with 36 additions and 0 deletions
@ -0,0 +1,18 @@ |
||||
cc = meson.get_compiler('c') |
||||
cc_id = cc.get_id() |
||||
|
||||
if cc_id == 'lcc' |
||||
error('MESON_SKIP_TEST: Elbrus compiler does not support PCH.') |
||||
endif |
||||
|
||||
if cc.get_argument_syntax() == 'gcc' |
||||
c_args = ['-include', 'locale.h'] |
||||
elif cc.get_argument_syntax() == 'msvc' |
||||
c_args = ['/FI' + 'locale.h'] |
||||
else |
||||
subdir_done() |
||||
endif |
||||
|
||||
exe = executable('prog', 'prog.c', |
||||
c_args: c_args, |
||||
c_pch : 'pch/prog.h') |
@ -0,0 +1,6 @@ |
||||
#ifndef PROG_H |
||||
// Header guards for PCH confuse msvc in some situations.
|
||||
// Using them here makes sure we handle this correctly.
|
||||
#define PROG_H |
||||
#include<stdio.h> |
||||
#endif |
@ -0,0 +1,11 @@ |
||||
// No includes here, they need to come from the PCH or explicit inclusion
|
||||
|
||||
void func(void) { |
||||
fprintf(stdout, "This is a function that fails if stdio is not #included.\n"); |
||||
setlocale(LC_ALL, ""); /* This will fail if locale.h is not included */ |
||||
} |
||||
|
||||
int main(void) { |
||||
return 0; |
||||
} |
||||
|
Loading…
Reference in new issue