diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 0f6ea1c64..4f679fdb7 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -636,6 +636,15 @@ class CompilerHolder(InterpreterObject): if not isinstance(nobuiltins, bool): raise InterpreterException('Type of no_builtin_args not a boolean.') args = [] + incdirs = kwargs.get('include_directories', []) + if not isinstance(incdirs, list): + incdirs = [incdirs] + for i in incdirs: + if not isinstance(i, IncludeDirsHolder): + raise InterpreterException('Include directories argument must be an include_directories object.') + for idir in i.held_object.get_incdirs(): + idir = os.path.join(self.environment.get_source_dir(), idir) + args += self.compiler.get_include_args(idir, False) if not nobuiltins: opts = self.environment.coredata.compiler_options args += self.compiler.get_option_compile_args(opts) diff --git a/test cases/linuxlike/1 pkg-config/incdir/myinc.h b/test cases/linuxlike/1 pkg-config/incdir/myinc.h new file mode 100644 index 000000000..4b66a6caa --- /dev/null +++ b/test cases/linuxlike/1 pkg-config/incdir/myinc.h @@ -0,0 +1,3 @@ +#pragma once + +#include diff --git a/test cases/linuxlike/1 pkg-config/meson.build b/test cases/linuxlike/1 pkg-config/meson.build index 5a8366c6a..36a454538 100644 --- a/test cases/linuxlike/1 pkg-config/meson.build +++ b/test cases/linuxlike/1 pkg-config/meson.build @@ -26,3 +26,23 @@ test('zlibtest2', exe2) # Try to find a nonexistant library to ensure requires:false works. dep = dependency('nvakuhrabnsdfasdf', required : false) + +# Try to compile a test that takes a dep and an include_directories + +cc = meson.get_compiler('c') +zlibdep = cc.find_library('z') +code = '''#include + +int main(int argc, char **argv) { + void * something = deflate; + if(something != 0) + return 0; + return 1; +} +''' + +inc = include_directories('incdir') + +r = cc.run(code, include_directories : inc, dependencies : zlibdep) +assert(r.returncode() == 0, 'Running manual zlib test failed.') +