frasercrmck wrote:

Hmm, isn't CMake fun? Thanks for looking into this.

Unfortunately the file-level dependencies are there for a reason. With this 
patch, if I `rm builtins.link.nvptx64--.bc` and build `builtins.opt.nvptx64--` 
(with `ninja`), it builds the `link` target but doesn't actually rebuild the 
`opt` target. On `main`, it does do this. We need to preserve that behaviour, 
or developers will see stale builds and that will lead to all sorts of problems.

I found [example #5 of this 
example](https://samthursfield.wordpress.com/2015/11/21/cmake-dependencies-between-targets-and-files-and-custom-commands)
 interesting when I was initially implementing this. CMake's dependencies are 
really strange.

Going by the documentation you link, could we have _both_ the file- and the 
target-level dependency? Note how the 
[example](https://cmake.org/cmake/help/v3.29/command/add_custom_command.html#example-generating-files-for-multiple-targets)
 has `DEPENDS table.csv generate_table_csv` in *both* parallel targets, so the 
file-level dependency `foo.csv` *is* being used twice - but also supplying the 
target-level dependency prevents it from being a race condition?

https://github.com/llvm/llvm-project/pull/95018
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to