What is the purpose of running cp there at all? meson doesn't need it in order to trigger `install: true` -- you can just use `install_data(..., rename: 'new-name')`. And you don't save the custom_target in a variable and add it as an order dependency on another target, so if it actually needs to be present in the build tree then you have no guarantee it will be there.
Failing all that, ninja only runs the cp command when the input is newer than the output, you don't need cp to duplicate that check.