diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2019-11-20 18:41:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-20 18:41:18 +0200 |
commit | 5920344b9283a55939ef322ca39fdd70f5aafd31 (patch) | |
tree | 56a7a59e616f961f6fffc7f359abdf0ef7dc8483 /mesonbuild/cmake/interpreter.py | |
parent | 294b33144fbf5628d2a672f907c1f5460577234a (diff) | |
parent | 9435f11b17ac428c80ac8af80724aced6c02133a (diff) | |
download | meson-5920344b9283a55939ef322ca39fdd70f5aafd31.zip meson-5920344b9283a55939ef322ca39fdd70f5aafd31.tar.gz meson-5920344b9283a55939ef322ca39fdd70f5aafd31.tar.bz2 |
Merge pull request #6199 from mensinda/cmSysInc
cmake: Handle CMake system include dirs (closes #6079)
Diffstat (limited to 'mesonbuild/cmake/interpreter.py')
-rw-r--r-- | mesonbuild/cmake/interpreter.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py index cb63bb9..12db810 100644 --- a/mesonbuild/cmake/interpreter.py +++ b/mesonbuild/cmake/interpreter.py @@ -157,6 +157,7 @@ class ConverterTarget: self.sources = [] self.generated = [] self.includes = [] + self.sys_includes = [] self.link_with = [] self.object_libs = [] self.compile_opts = {} @@ -180,7 +181,8 @@ class ConverterTarget: self.compile_opts[lang] += [x for x in args if x not in self.compile_opts[lang]] # Handle include directories - self.includes += [x for x in i.includes if x not in self.includes] + self.includes += [x['path'] for x in i.includes if x not in self.includes and not x['isSystem']] + self.sys_includes += [x['path'] for x in i.includes if x not in self.sys_includes and x['isSystem']] # Add sources to the right array if i.is_generated: @@ -295,6 +297,7 @@ class ConverterTarget: build_dir_rel = os.path.relpath(self.build_dir, os.path.join(self.env.get_build_dir(), subdir)) self.includes = list(set([rel_path(x, True, False) for x in set(self.includes)] + [build_dir_rel])) + self.sys_includes = list(set([rel_path(x, True, False) for x in set(self.sys_includes)])) self.sources = [rel_path(x, False, False) for x in self.sources] self.generated = [rel_path(x, False, True) for x in self.generated] @@ -303,6 +306,7 @@ class ConverterTarget: # Remove delete entries self.includes = [x for x in self.includes if x is not None] + self.sys_includes = [x for x in self.sys_includes if x is not None] self.sources = [x for x in self.sources if x is not None] self.generated = [x for x in self.generated if x is not None] @@ -359,6 +363,7 @@ class ConverterTarget: mlog.log(' -- link_flags: ', mlog.bold(str(self.link_flags))) mlog.log(' -- languages: ', mlog.bold(str(self.languages))) mlog.log(' -- includes: ', mlog.bold(str(self.includes))) + mlog.log(' -- sys_includes: ', mlog.bold(str(self.sys_includes))) mlog.log(' -- sources: ', mlog.bold(str(self.sources))) mlog.log(' -- generated: ', mlog.bold(str(self.generated))) mlog.log(' -- pie: ', mlog.bold('true' if self.pie else 'false')) @@ -845,6 +850,8 @@ class CMakeInterpreter: base_name = str(tgt.name) base_name = base_name.replace('-', '_') inc_var = '{}_inc'.format(base_name) + dir_var = '{}_dir'.format(base_name) + sys_var = '{}_sys'.format(base_name) src_var = '{}_src'.format(base_name) dep_var = '{}_dep'.format(base_name) tgt_var = base_name @@ -879,8 +886,10 @@ class CMakeInterpreter: } # Generate the function nodes - inc_node = assign(inc_var, function('include_directories', tgt.includes)) - node_list = [inc_node] + dir_node = assign(dir_var, function('include_directories', tgt.includes)) + sys_node = assign(sys_var, function('include_directories', tgt.sys_includes, {'is_system': True})) + inc_node = assign(inc_var, array([id_node(dir_var), id_node(sys_var)])) + node_list = [dir_node, sys_node, inc_node] if tgt_func == 'header_only': del dep_kwargs['link_with'] dep_node = assign(dep_var, function('declare_dependency', kwargs=dep_kwargs)) |