aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/interpreter.py9
-rw-r--r--test cases/linuxlike/1 pkg-config/incdir/myinc.h3
-rw-r--r--test cases/linuxlike/1 pkg-config/meson.build20
3 files changed, 32 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 0f6ea1c..4f679fd 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 0000000..4b66a6c
--- /dev/null
+++ b/test cases/linuxlike/1 pkg-config/incdir/myinc.h
@@ -0,0 +1,3 @@
+#pragma once
+
+#include<zlib.h>
diff --git a/test cases/linuxlike/1 pkg-config/meson.build b/test cases/linuxlike/1 pkg-config/meson.build
index 5a8366c..36a4545 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<myinc.h>
+
+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.')
+