diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2019-10-01 20:37:35 -0400 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-11-27 21:12:55 +0100 |
commit | daeee32d9bf6a136fc3de6dade065a918290b429 (patch) | |
tree | e7357aa4c6b5f89b82fe1034b10f95c50575b36b /mesonbuild/cmake/traceparser.py | |
parent | 6844ad374e0a333434782927e099b16ab1b2dfd0 (diff) | |
download | meson-daeee32d9bf6a136fc3de6dade065a918290b429.zip meson-daeee32d9bf6a136fc3de6dade065a918290b429.tar.gz meson-daeee32d9bf6a136fc3de6dade065a918290b429.tar.bz2 |
cmake: Add support for add_custom_target() with a command
The command could have no output, in which case we create a dummy one.
Diffstat (limited to 'mesonbuild/cmake/traceparser.py')
-rw-r--r-- | mesonbuild/cmake/traceparser.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/mesonbuild/cmake/traceparser.py b/mesonbuild/cmake/traceparser.py index c5e0d93..50cabab 100644 --- a/mesonbuild/cmake/traceparser.py +++ b/mesonbuild/cmake/traceparser.py @@ -52,12 +52,12 @@ class CMakeTarget: propSTR += " '{}': {}\n".format(i, self.properties[i]) return s.format(self.name, self.type, self.imported, propSTR, self.tline) -class CMakeGeneratorTarget: - def __init__(self): +class CMakeGeneratorTarget(CMakeTarget): + def __init__(self, name): + super().__init__(name, 'CUSTOM', {}) self.outputs = [] # type: List[str] self.command = [] # type: List[List[str]] self.working_dir = None # type: Optional[str] - self.depends = [] # type: List[str] class CMakeTraceParser: def __init__(self, permissive: bool = False): @@ -237,7 +237,7 @@ class CMakeTraceParser: else: self.targets[args[0]] = CMakeTarget(args[0], 'NORMAL', {}, tline=tline) - def _cmake_add_custom_command(self, tline: CMakeTraceLine): + def _cmake_add_custom_command(self, tline: CMakeTraceLine, name=None): # DOC: https://cmake.org/cmake/help/latest/command/add_custom_command.html args = list(tline.args) # Make a working copy @@ -252,7 +252,7 @@ class CMakeTraceParser: 'IMPLICIT_DEPENDS', 'WORKING_DIRECTORY', 'COMMENT', 'DEPFILE', 'JOB_POOL', 'VERBATIM', 'APPEND', 'USES_TERMINAL', 'COMMAND_EXPAND_LISTS'] - target = CMakeGeneratorTarget() + target = CMakeGeneratorTarget(name) def handle_output(key: str, target: CMakeGeneratorTarget) -> None: target.outputs += [key] @@ -297,6 +297,8 @@ class CMakeTraceParser: target.command = [self._guess_files(x) for x in target.command] self.custom_targets += [target] + if name: + self.targets[name] = target def _cmake_add_custom_target(self, tline: CMakeTraceLine): # DOC: https://cmake.org/cmake/help/latest/command/add_custom_target.html @@ -304,7 +306,8 @@ class CMakeTraceParser: if len(tline.args) < 1: return self._gen_exception('add_custom_target', 'requires at least one argument', tline) - self.targets[tline.args[0]] = CMakeTarget(tline.args[0], 'CUSTOM', {}, tline=tline) + # It's pretty much the same as a custom command + self._cmake_add_custom_command(tline, tline.args[0]) def _cmake_set_property(self, tline: CMakeTraceLine) -> None: # DOC: https://cmake.org/cmake/help/latest/command/set_property.html |