<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/74611>74611</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [CMake][mlir] Race condition due to missing dependencies
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            cmake,
            mlir
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          e-kud
      </td>
    </tr>
</table>

<pre>
    I have two builds that failed due to absence of `mlir/Dialect/OpenMP/OmpCommon.td`
https://buildkite.com/llvm-project/github-pull-requests/builds/20376#018c3c3d-939e-437e-901d-09148aa0930b
https://buildkite.com/llvm-project/github-pull-requests/builds/20388#018c3c75-e9f2-472e-8fd1-41227938bd0d

I've made an experiment:
```
$ rm ./tools/mlir/include/mlir/Dialect/OpenMP/OmpCommon.td
$ ninja tools/mlir/python/dialects/_omp_ops_gen.py
[1/1] Building dialects/_omp_ops_gen.py...
FAILED: tools/mlir/python/dialects/_omp_ops_gen.py
cd /home/eugene/src/llvm-project/build && /home/eugene/src/llvm-project/build/bin/mlir-tblgen -gen-python-op-bindings -bind-dialect=omp -I /home/eugene/src/llvm-project/mlir/python -I/home/eugene/src/llvm-project/build/include -I/home/eugene/src/llvm-project/llvm/include -I/home/eugene/src/llvm-project/mlir/include -I/home/eugene/src/llvm-project/build/tools/mlir/include /home/eugene/src/llvm-project/mlir/python/mlir/dialects/OpenMPOps.td --write-if-changed -o tools/mlir/python/dialects/_omp_ops_gen.py -d tools/mlir/python/dialects/_omp_ops_gen.py.d
Included from /home/eugene/src/llvm-project/mlir/python/mlir/dialects/OpenMPOps.td:12:
/home/eugene/src/llvm-project/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td:36:9: error: Could not find include file 'mlir/Dialect/OpenMP/OmpCommon.td'
include "mlir/Dialect/OpenMP/OmpCommon.td"
        ^
Included from /home/eugene/src/llvm-project/mlir/python/mlir/dialects/OpenMPOps.td:12:
/home/eugene/src/llvm-project/mlir/include/mlir/Dialect/OpenMP/OpenMPOps.td:36:9: error: Unexpected token at top level
include "mlir/Dialect/OpenMP/OmpCommon.td"
        ^
ninja: build stopped: subcommand failed.
```

This patch fixes the problem
```diff
diff --git a/mlir/python/CMakeLists.txt b/mlir/python/CMakeLists.txt
index 55731943fb78..585918afc263 100644
--- a/mlir/python/CMakeLists.txt
+++ b/mlir/python/CMakeLists.txt
@@ -335,7 +335,8 @@ declare_mlir_dialect_python_bindings(
   TD_FILE dialects/OpenMPOps.td
 SOURCES
     dialects/openmp.py
-  DIALECT_NAME omp)
+ DIALECT_NAME omp
+  DEPENDS omp_common_td)

 declare_mlir_dialect_python_bindings(
   ADD_TO_PARENT MLIRPythonSources.Dialects
```
```
$ rm ./tools/mlir/include/mlir/Dialect/OpenMP/OmpCommon.td
$ ninja tools/mlir/python/dialects/_omp_ops_gen.py
[2/2] Building dialects/_omp_ops_gen.py...
```

But maybe a complete review of dependencies is required or there is a more generic approach. Otherwise, if the patch is OK, I'll open a PR.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkV99voz4S_2ucl5GRsSHAQx7SkEjRtduq7T5HBg-Jt2BzYPrjvz8Z0rTd7d621e3D6RshYmzP78-Mx7Lv9d4gLkh8RuJ8Jgd3sN0C6d2gZoVVT4stHOQ9gnuwUAy6Vj24g3RQSV2jAjUgOAuy6NGUCLYCMmdNrTvCN7mWNZaO8M1li-biyg-admWbxprAKTJnhOWELQ_OtT0RS8I3hG9GIXfaYVDahvBNXd83tO3sj4nVXrvDUNB2qGva4b8H7F3_TOUHnIlkTrhgYVqKUiiaiQxpJBKkGQsVZVkYpVKyTLDi74hP05P4JKaYVZxGCUeaViqkUch5kom0UExN4qf3lvDkHqGRCkEawMcWO92gcV6xad-cHZ_pk0fQNRAQvnHW1l720e3alPWg8GXiT3E48TPa_JDwE7v2yR2sIXyjJjZ-aWebdmfbfrdHE7RPRw7xWUj4JiRxDmfeH9rs4fdEQRBMdJvl9nydE7H8suRSAeGbg2280Tjs0fhB35W_xm8MFBA-J3z-OSL_r81RO-qKeo8G6B4NnfSktqWFNt7qHsYRPepNRG6bFuj2wwLfOADo9rOKHiHwCUr_-SXCt6D7gq7vo_drrnr5fgWZCfSXbR84BZQ-dNoh1RUtD9LsUQG1XwAeUPUFquCYbNvJSAVVZ5u_ZCoRy5C_VI8vhfO_15C3wsSciGXm0xi7znZ-sLJDrcBYB5U2Cp5DW-naxzf5YHniyWTCCzL4Ryn5RAnHH4nX_yj_fzf-HCkdeqzeoQHpwNkWarzH-n_u1PH08GKnGts727boNYN-KErbNNKoY9sQvH-kje_bg-6hla48QKUf0bcbCG1nixqbn8iUrqppyo-A0r12IN-J1OpC3uG57l0fuEcHxR-3PDtH4SPEcSLCLBJVkaRBEKdxFqayKvlcQMjYPIqmzZTSD8h-RsPZ9HxYFRIxEjGgQsSErxIg_GwapnBcUljWssOd57Y7YnI38dw9n0uEp6fg3ea7zfZ8Db-D77Tv5vL79Wp98yrkr_bbFk3Tno5hCpBvl-fr1e3u2_JiDbZpCc9OFv-6eFqBfH21_pbf-NldOUJt56GWvQbGpy1c5vnu9nJ3tbxef7uFi_Pt9dW4-cYOXYl9kD9b8i4Y_w_aLe4bzs-2W-8m3dngoJFPBYKE0jZtjQ6hw3uND76nV9iiUWhKjT3oHnznqztUYDufnh36SQmN7RB8det0CbJtOyvLQwCXfsuD7pHwFehqSugxwXUPl__ys779rWvwgAIJV9fBTC2EykQmZ7gIExamSTLnYnZYRJxnaYoK2ZyllWJlIVLBYpHIIq4Slc70gjMuQs7mYRwlTAQsLDnnc84TLgsmFIkYNlLXgS-9ge32M933Ay6SaB6Gs1oWWPfjdYjzspF36CseX50KpHf4rFuMdbsY9j2JWD3m6omd064eL1RjIpM4J_HZSBvncC1LhNIapZ225vn61Oi-H8P3ys-zoasXb-8m0-Xj1cXk1_NjNMWHf7TmPwEAAP__av1mxg">