aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2014-04-06 21:21:26 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2014-04-06 21:21:26 +0300
commite2e95c7bf2920a7a515e19926534f9b81338e736 (patch)
tree79841c173a6a6ec0d049699b57fee5c2cd8645c6
parentc55ceee0801de9e4ac5ed0106920e88e6f021528 (diff)
downloadmeson-e2e95c7bf2920a7a515e19926534f9b81338e736.zip
meson-e2e95c7bf2920a7a515e19926534f9b81338e736.tar.gz
meson-e2e95c7bf2920a7a515e19926534f9b81338e736.tar.bz2
Allow source files to include moc files manually.
-rw-r--r--ninjabackend.py11
-rw-r--r--test cases/frameworks/4 qt5/manualinclude.cpp9
-rw-r--r--test cases/frameworks/4 qt5/manualinclude.h11
-rw-r--r--test cases/frameworks/4 qt5/meson.build7
4 files changed, 37 insertions, 1 deletions
diff --git a/ninjabackend.py b/ninjabackend.py
index d29ddb4..eb4c579 100644
--- a/ninjabackend.py
+++ b/ninjabackend.py
@@ -811,7 +811,16 @@ class NinjaBackend(backends.Backend):
elem = NinjaBuildElement(outfilename, rule.name, infilename)
elem.write(outfile)
if self.is_compilable_file(outfilename):
- src_deps.append(outfilename)
+ if rule.name == 'moc_hdr_compile':
+ include_mocs = target.get_original_kwargs().get('include_moc_files', True)
+ if not isinstance(include_mocs, bool):
+ raise InvalidArguments('Include_moc_files kwarg must be boolean.')
+ if include_mocs:
+ src_deps.append(outfilename)
+ else:
+ other_deps.append(outfilename)
+ else:
+ src_deps.append(outfilename)
else:
other_deps.append(outfilename)
if rule.name == 'moc_src_compile': #HACK
diff --git a/test cases/frameworks/4 qt5/manualinclude.cpp b/test cases/frameworks/4 qt5/manualinclude.cpp
new file mode 100644
index 0000000..b5f5674
--- /dev/null
+++ b/test cases/frameworks/4 qt5/manualinclude.cpp
@@ -0,0 +1,9 @@
+#include<QCoreApplication>
+#include"manualinclude.h"
+
+#include"moc_manualinclude.cpp"
+
+int main(int argc, char **argv) {
+ ManualInclude mi;
+ return 0;
+}
diff --git a/test cases/frameworks/4 qt5/manualinclude.h b/test cases/frameworks/4 qt5/manualinclude.h
new file mode 100644
index 0000000..c81c20e
--- /dev/null
+++ b/test cases/frameworks/4 qt5/manualinclude.h
@@ -0,0 +1,11 @@
+#ifndef MANUALINCLUDE_H_
+#define MANUALINCLUDE_H_
+
+
+#include<QObject>
+
+class ManualInclude : public QObject {
+ Q_OBJECT
+};
+
+#endif
diff --git a/test cases/frameworks/4 qt5/meson.build b/test cases/frameworks/4 qt5/meson.build
index dc0a2d3..237db33 100644
--- a/test cases/frameworks/4 qt5/meson.build
+++ b/test cases/frameworks/4 qt5/meson.build
@@ -28,3 +28,10 @@ deps : qt5core)
test('q5moc', q5moc)
+q5maninclude = executable('q5maninclude',
+sources : 'manualinclude.cpp',
+moc_headers : 'manualinclude.h',
+include_moc_files : false,
+deps : qt5core)
+
+test('q5maninclude', q5maninclude)