aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/cmake/traceparser.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2019-10-02 11:58:29 -0400
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-11-27 21:12:50 +0100
commit6844ad374e0a333434782927e099b16ab1b2dfd0 (patch)
treee9de71407d0cb53931219e9d5bd610d8842faa04 /mesonbuild/cmake/traceparser.py
parentadcd70861d14ae591130cc1173093e5c83513867 (diff)
downloadmeson-6844ad374e0a333434782927e099b16ab1b2dfd0.zip
meson-6844ad374e0a333434782927e099b16ab1b2dfd0.tar.gz
meson-6844ad374e0a333434782927e099b16ab1b2dfd0.tar.bz2
cmake: Add support for add_dependencies()
Closes: #5983
Diffstat (limited to 'mesonbuild/cmake/traceparser.py')
-rw-r--r--mesonbuild/cmake/traceparser.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/mesonbuild/cmake/traceparser.py b/mesonbuild/cmake/traceparser.py
index 7daef0b..c5e0d93 100644
--- a/mesonbuild/cmake/traceparser.py
+++ b/mesonbuild/cmake/traceparser.py
@@ -43,6 +43,7 @@ class CMakeTarget:
self.properties = properties
self.imported = imported
self.tline = tline
+ self.depends = []
def __repr__(self):
s = 'CMake TARGET:\n -- name: {}\n -- type: {}\n -- imported: {}\n -- properties: {{\n{} }}\n -- tline: {}'
@@ -89,6 +90,7 @@ class CMakeTraceParser:
'target_compile_options': self._cmake_target_compile_options,
'target_include_directories': self._cmake_target_include_directories,
'target_link_options': self._cmake_target_link_options,
+ 'add_dependencies': self._cmake_add_dependencies,
}
# Primary pass -- parse everything
@@ -398,6 +400,19 @@ class CMakeTraceParser:
self.targets[i].properties[name] = value
+ def _cmake_add_dependencies(self, tline: CMakeTraceLine) -> None:
+ # DOC: https://cmake.org/cmake/help/latest/command/add_dependencies.html
+ args = list(tline.args)
+
+ if len(args) < 2:
+ return self._gen_exception('add_dependencies', 'takes at least 2 arguments', tline)
+
+ target = self.targets.get(args[0])
+ if not target:
+ return self._gen_exception('add_dependencies', 'target not found', tline)
+
+ target.depends += args[1:]
+
def _cmake_target_compile_definitions(self, tline: CMakeTraceLine) -> None:
# DOC: https://cmake.org/cmake/help/latest/command/target_compile_definitions.html
self._parse_common_target_options('target_compile_definitions', 'COMPILE_DEFINITIONS', 'INTERFACE_COMPILE_DEFINITIONS', tline)