diff options
author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2021-05-07 20:29:33 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2021-05-08 21:27:35 +0300 |
commit | d5932a174d1504f1efea681e5ec3fd364de1ff6f (patch) | |
tree | ed982ed005927be7bdab1ce3c931763cdf53b281 | |
parent | 739e499554850d2cb8268bed219e8ba127051f76 (diff) | |
download | meson-d5932a174d1504f1efea681e5ec3fd364de1ff6f.zip meson-d5932a174d1504f1efea681e5ec3fd364de1ff6f.tar.gz meson-d5932a174d1504f1efea681e5ec3fd364de1ff6f.tar.bz2 |
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.
-rw-r--r-- | test cases/common/13 pch/meson.build | 1 | ||||
-rw-r--r-- | test cases/common/13 pch/withIncludeFile/meson.build | 18 | ||||
-rw-r--r-- | test cases/common/13 pch/withIncludeFile/pch/prog.h | 6 | ||||
-rw-r--r-- | test cases/common/13 pch/withIncludeFile/prog.c | 11 |
4 files changed, 36 insertions, 0 deletions
diff --git a/test cases/common/13 pch/meson.build b/test cases/common/13 pch/meson.build index 334afc5..5ca9ab1 100644 --- a/test cases/common/13 pch/meson.build +++ b/test cases/common/13 pch/meson.build @@ -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.') diff --git a/test cases/common/13 pch/withIncludeFile/meson.build b/test cases/common/13 pch/withIncludeFile/meson.build new file mode 100644 index 0000000..4fd2322 --- /dev/null +++ b/test cases/common/13 pch/withIncludeFile/meson.build @@ -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') diff --git a/test cases/common/13 pch/withIncludeFile/pch/prog.h b/test cases/common/13 pch/withIncludeFile/pch/prog.h new file mode 100644 index 0000000..c89890a --- /dev/null +++ b/test cases/common/13 pch/withIncludeFile/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 diff --git a/test cases/common/13 pch/withIncludeFile/prog.c b/test cases/common/13 pch/withIncludeFile/prog.c new file mode 100644 index 0000000..7a9a93c --- /dev/null +++ b/test cases/common/13 pch/withIncludeFile/prog.c @@ -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; +} + |