test cases: Add test ensuring that -include in gcc won't break pch

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
Marco Trevisan (Treviño) 4 years ago committed by Jussi Pakkanen
parent 739e499554
commit d5932a174d
  1. 1
      test cases/common/13 pch/meson.build
  2. 18
      test cases/common/13 pch/withIncludeFile/meson.build
  3. 6
      test cases/common/13 pch/withIncludeFile/pch/prog.h
  4. 11
      test cases/common/13 pch/withIncludeFile/prog.c

@ -13,6 +13,7 @@ subdir('cpp')
subdir('generated')
subdir('userDefined')
subdir('withIncludeDirectories')
subdir('withIncludeFile')
if meson.backend() == 'xcode'
warning('Xcode backend only supports one precompiled header per target. Skipping "mixed" which has various precompiled headers.')

@ -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…
Cancel
Save