diff options
author | Gatgat <gaetan.champarnaud@gmail.com> | 2022-01-14 00:35:09 +0100 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2022-01-15 22:00:05 +0530 |
commit | f3a8e5d3b26410a3492952487a17909be0bfb217 (patch) | |
tree | f962b83dc14f4eebd8f5c3c5f82d7e34d583e9b8 | |
parent | 9cc222c048f343db57be3934596a9e7cec20225f (diff) | |
download | meson-f3a8e5d3b26410a3492952487a17909be0bfb217.zip meson-f3a8e5d3b26410a3492952487a17909be0bfb217.tar.gz meson-f3a8e5d3b26410a3492952487a17909be0bfb217.tar.bz2 |
Fix system include arguments for clang-cl
4 files changed, 24 insertions, 0 deletions
diff --git a/mesonbuild/compilers/mixins/visualstudio.py b/mesonbuild/compilers/mixins/visualstudio.py index 9031195..5118e41 100644 --- a/mesonbuild/compilers/mixins/visualstudio.py +++ b/mesonbuild/compilers/mixins/visualstudio.py @@ -438,6 +438,10 @@ class ClangClCompiler(VisualStudioLikeCompiler): def get_pch_base_name(self, header: str) -> str: return header + def get_include_args(self, path: str, is_system: bool) -> T.List[str]: + if path == '': + path = '.' + return ['/clang:-isystem' + path] if is_system else ['-I' + path] def get_dependency_compile_args(self, dep: 'Dependency') -> T.List[str]: if dep.get_include_type() == 'system': diff --git a/test cases/common/250 system include dir/lib/lib.hpp b/test cases/common/250 system include dir/lib/lib.hpp new file mode 100644 index 0000000..a1fbf85 --- /dev/null +++ b/test cases/common/250 system include dir/lib/lib.hpp @@ -0,0 +1,4 @@ +#pragma once + +// This will trigger -Wsign-conversion +inline unsigned convert_to_unsigned(int i) { return i; } diff --git a/test cases/common/250 system include dir/main.cpp b/test cases/common/250 system include dir/main.cpp new file mode 100644 index 0000000..9f83297 --- /dev/null +++ b/test cases/common/250 system include dir/main.cpp @@ -0,0 +1,3 @@ +#include <lib.hpp> + +int main() { return 0; } diff --git a/test cases/common/250 system include dir/meson.build b/test cases/common/250 system include dir/meson.build new file mode 100644 index 0000000..724a8e4 --- /dev/null +++ b/test cases/common/250 system include dir/meson.build @@ -0,0 +1,13 @@ +project('system_include_dir', 'cpp', + version : '0.1', + default_options : 'werror=true', +) + +compiler_id = meson.get_compiler('cpp').get_id() +if not ['gcc', 'clang', 'clang-cl'].contains(compiler_id) + error('MESON_SKIP_TEST: compiler @0@ either doesn\'t support is_system includes or needs to have support for this test added'.format(compiler_id)) +endif + +lib_include_directories = include_directories('lib', is_system: true) +add_project_arguments('-Wsign-conversion', language: 'cpp') +executable('system_include_dir_test', sources: 'main.cpp', include_directories: lib_include_directories) |