summaryrefslogtreecommitdiff
path: root/mesonbuild/cmake/data
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2019-10-01 20:37:35 -0400
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-11-27 21:12:55 +0100
commitdaeee32d9bf6a136fc3de6dade065a918290b429 (patch)
treee7357aa4c6b5f89b82fe1034b10f95c50575b36b /mesonbuild/cmake/data
parent6844ad374e0a333434782927e099b16ab1b2dfd0 (diff)
downloadmeson-daeee32d9bf6a136fc3de6dade065a918290b429.tar.gz
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/data')
-rwxr-xr-xmesonbuild/cmake/data/run_ctgt.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/mesonbuild/cmake/data/run_ctgt.py b/mesonbuild/cmake/data/run_ctgt.py
index d4e325922..4e9428335 100755
--- a/mesonbuild/cmake/data/run_ctgt.py
+++ b/mesonbuild/cmake/data/run_ctgt.py
@@ -13,13 +13,16 @@ SEPARATOR = ';;;'
parser = argparse.ArgumentParser(description='Wrapper for add_custom_command')
parser.add_argument('-d', '--directory', type=str, metavar='D', required=True, help='Working directory to cwd to')
parser.add_argument('-o', '--outputs', nargs='+', metavar='O', required=True, help='Expected output files')
-parser.add_argument('-O', '--original-outputs', nargs='+', metavar='O', required=True, help='Output files expected by CMake')
-parser.add_argument('commands', nargs=argparse.REMAINDER, help='A "{}" separated list of commands'.format(SEPARATOR))
+parser.add_argument('-O', '--original-outputs', nargs='*', metavar='O', default=[], help='Output files expected by CMake')
+parser.add_argument('commands', nargs=argparse.REMAINDER, help='A "{}" seperated list of commands'.format(SEPERATOR))
# Parse
args = parser.parse_args()
-if len(args.outputs) != len(args.original_outputs):
+dummy_target = None
+if len(args.outputs) == 1 and len(args.original_outputs) == 0:
+ dummy_target = args.outputs[0]
+elif len(args.outputs) != len(args.original_outputs):
print('Length of output list and original output list differ')
sys.exit(1)
@@ -39,6 +42,11 @@ for i in commands:
subprocess.run(i, cwd=args.directory)
+if dummy_target:
+ with open(dummy_target, 'a'):
+ os.utime(dummy_target, None)
+ exit(0)
+
# Copy outputs
zipped_outputs = zip(args.outputs, args.original_outputs)
for expected, generated in zipped_outputs: