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

    <tr>
        <th>Summary</th>
        <td>
            [MLIR] lit doesn't find supporting .dylibs for out-of-tree build
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          danpetry
      </td>
    </tr>
</table>

<pre>
    When running `check-mlir`, a number of tests fail with the following "no such file or directory" errors. The .dylibs are present, but in $SRC_DIR/build/lib. (mlir has been built into $SRC_DIR/build.) Each failing test tries to find the .dylibs in its own local directory. Looking at some similar test output in the llvm issues, it looks like the `-shared-libs` flag should be prepended with the directory where they should be found. I've tried a bunch of different flags to CMake based on looking at the lit configuration files, but haven't hit upon the right one yet.

Additionally, I've manually copied some supporting tools (FileCheck etc) rather than finding the right CMake variable. It would be nice to find the right way to do this, too.

The build commands I'm currently using are [here](https://github.com/AnacondaRecipes/mlir-feedstock/blob/update-17.0.4/recipe/build.sh). It's for building a conda package, where llvm and lit are in separate packages.

```
********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70..
FAIL: MLIR :: mlir-cpu-runner/async-func.mlir (1523 of 1913)
******************** TEST 'MLIR :: mlir-cpu-runner/async-func.mlir' FAILED ********************
Script:
--
: 'RUN: at line 1'; $SRC_DIR/build/bin/mlir-opt $SRC_DIR/mlir/test/mlir-cpu-runner/async-func.mlir -pass-pipeline="builtin.module(async-func-to-async-runtime,async-to-async-runtime,func.func(async-runtime-ref-counting,async-runtime-ref-counting-opt),convert-async-to-llvm,func.func(convert-linalg-to-loops,convert-scf-to-cf),convert-linalg-to-llvm,convert-vector-to-llvm,func.func(convert-arith-to-llvm),convert-func-to-llvm,reconcile-unrealized-casts)" | $SRC_DIR/build/bin/mlir-cpu-runner -e main -entry-point-result=void -O0 -shared-libs=libmlir_c_runner_utils.dylib -shared-libs=libmlir_runner_utils.dylib -shared-libs=libmlir_async_runtime.dylib    | $PREFIX/bin/FileCheck $SRC_DIR/mlir/test/mlir-cpu-runner/async-func.mlir --dump-input=always
--
Exit Code: 2

Command Output (stderr):
--
Failed to create MemoryBuffer for: $SRC_DIR/build/test/mlir-cpu-runner/libmlir_c_runner_utils.dylib
Error: No such file or directory
Failed to create MemoryBuffer for: $SRC_DIR/build/test/mlir-cpu-runner/libmlir_runner_utils.dylib
Error: No such file or directory
Failed to create MemoryBuffer for: $SRC_DIR/build/test/mlir-cpu-runner/libmlir_async_runtime.dylib
Error: No such file or directory
JIT session error: Symbols not found: [ __mlir_ciface_printMemrefF32, _printNewline, _printI64, _printF32, _mlirAsyncRuntimeSetValueError, _mlirAsyncRuntimeAddRef, _mlirAsyncRuntimeAwaitToken, _mlirAsyncRuntimeAwaitTokenAndExecute, _mlirAsyncRuntimeAwaitValue, _mlirAsyncRuntimeAwaitValueAndExecute, _mlirAsyncRuntimeCreateToken, _mlirAsyncRuntimeCreateValue, _mlirAsyncRuntimeDropRef, _mlirAsyncRuntimeEmplaceToken, _mlirAsyncRuntimeEmplaceValue, _mlirAsyncRuntimeExecute, _mlirAsyncRuntimeGetValueStorage, _mlirAsyncRuntimeIsTokenError, _mlirAsyncRuntimeIsValueError, _mlirAsyncRuntimeSetTokenError ]
Error: Failed to materialize symbols: { (main, { __mlir_async_func_value_assert, __mlir_async_func_empty, _async_func_assert, _main, __mlir_async_func_value_nested_assert, _async_func_empty, __mlir_printMemrefF32, __mlir_main, ___resume, _async_execute_fn, __mlir_async_func_passed_memref, _async_execute_in_async_func, __mlir_async_func_inside_memref, __mlir_async_func_return_value, _async_func_value_assert, __mlir___resume, __mlir_async_execute_fn, _async_func_nested_assert, _async_func_inside_memref, _async_func_non_blocking_await, __mlir_async_func_assert, __mlir_async_execute_in_async_func, _async_func_return_value, _async_func_value_nested_assert, __mlir_async_func_nested_assert, _async_func_passed_memref, __mlir_async_func_non_blocking_await }) }
FileCheck error: '<stdin>' is empty.
FileCheck command line: $PREFIX/bin/FileCheck $SRC_DIR/mlir/test/mlir-cpu-runner/async-func.mlir --dump-input=always
```


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWN9vIr8R_2vMy2hX4A0hPPBAIFRUd_etkvTHG_Las6wbr72yvcnRv74aLwSSQNLTqWqlyMTrmfHnMzO2xxYh6K1FnLHxLRsvB6KLtfMzJWyL0e8GpVO72d9rtOA7a7XdArseyhrlU9YY7dn1kPEFCLBdU6IHV0HEEANUQht40bGGWCNUzhj3krQ5tw5CJ2uotEFwHpT2KKPzO8Y5oPfOhxwea4Rc7YwuAwiP0HoMaCNNVnYRtAXGrx7uF5vl-p7xVdlpoxhfGV3mwPgNYYNaBCgRLdAo6UR3RitnfAp3ggAJbQgjMYDoNQaIDiptVSJxgKMt6BjAvVgwTgpzJJDDN-eeyISIEFyDEHSjjfC9SdfFtsdO5ox5bkCH0GEgVjqCce4pgNFPmATY9TALtfCoMpqXXQ-hMmILoXadUVAmp7RoFaqjp1-xwEuNPhnanWhUrrMqhzXjk2dMHBUIKDsra4qd0lWFHm1MMyX6i-_iCaEUARU4mzDuCSYSOoJ0ttLbzouonU1RDYcw1eIZLeOTCLWO0LWup-71to7gLMIOY86GSzac9-1cKU1mhDE7MrIH2gjb0SeQriXIvW-7tnU-pog5ZwLFfaUNLig7AaOkwHoRa_QQa2FTJJP0K4Se3LPwWpQGc1hHeDm4ymqJb-Lfq7yIHX1VDmKtE9Ho3BsOlLops0C6phFWhUSjAdl58q3ZQReSDz0CG99SnNh4yfhNHWMbWDFnfMX4aqtj3ZW5dA3jq7kV0lkl7lHqlhy8ohTPKkQVopNPlM3GlYyvulaJiNlokg_zK8ZXPmm8ZnuoGZ8SU8YnASrne6wJD6QpoBXySWyRuPVJlFJVWJXCTai1hYCt8CLiQTq88QHtC_1f3-W_8dc7FQNFmhVzgGGew4gaTk1BzRU1Y2quqZkM8z2c1Xz9jZS-f1vfA7m2mEPynGy7jLY09IyvRNhZmVWdlXnaORi_GY15QUtiNB0VjE9_nwc83j08AuOTX4LC-ASIw90Sft-JD9LrNtLUqZtle1bFnHDd__UH_SciGG0RRoxPWHF7fp8ttT2koGvjW5ke9oq2vIPMp87OWhFC1uoWaV5WLBnnacfWNm-c6gwyfnNUyqLL-p7vbNQN5WnfPzOQZqHm1cR-LPNYZdJRx25fLZwbJIKUAHwhnX1GH7PX2WhdvJvkIGO0FWabhJxrw4l2kBV9ltVboycKvdXDwHPaz7-YTngd66PMqeGDz_baHqWzUhvMOutRGP0vVJkUIYakxoFNFl_G_BhPyGh31hYytNHvstZpGzOPoTORFctnpxVkfwzhzUlWLI0uydBGbnozmy5qE_oT9pLsfy6ZArTZB3MvCnBg9pf7u9X6H6-EjkfG72VxprqmzbRtOyIuzIvYhbfr7O6njrBwCmmZ8dPtctEfFPBHXyEwfhOiQu8pJO9X60pog4rOIOmRNuDv2Di_u-3o6KYNvV_OZwJ4kctn0dhDp7KMDP-4WLz9t8H9H0M7k2-_hu3P60cIGAIVUHjQedg1JZU11sW-bksAx7ew2fTR0pWQuGm9tvE7Nh6rVcHp0O4__cCXtJ--flhfXx07B1GyNCf49z36B4x_E6bDHvk5iblS91idH3oROj66J6r5Ph2eW3X3E2UX8bJggvHF8Bd2FinQlwH145cnWnrXXuJ617RGyE-M7wUuW_8M-Z_2YXiIzu9LsQ8y65AmvxypdfgilA8YjyaAatC3WXtcMo2I6HU6LSD0eZmycXKbbltCJx9Qd5-c_ZKg7XHzTCA2IgT06f72UQKbNqZy__TjicLB_iXbFkNEdapx1nivfWa99APHWTZ0fjV4Ygn7WG2qCziohEG1aZLZM3rankifN6Ft0ApPTXwQ8Rg7b3vS72le8PIbLqcG3zE6sfSpNz-iPNV0dlMaJ-mGuBG0Ss_zuJALl531Sz74iP8DgE8pfozlR_0PRIFNlnTfpJ_-uDneRA_LKRXUixCVtqy4o8peB0jpmb_X2d8coa-I5_-TsuX9HS61AzUr1LSYigHORpNhMeQ348l0UM9GJQ5vikoKFFOhyimfXIkrVLwsx6IYi3KgZ3zIixEfTXnBp8U0L7lEWVyjGI1kWRQTdjXERmiTU6WaO78dpNeR2WQ8vSkGRpRoQnqm4rxnydl4OfAzEs_KbhvY1dDoEMPRQNTRpKctunOx8TJdYJXD0D9KpKv9yTPC4YWHbsWui5mrsuhxf5sfdN7MPrmh9_V1-sla7_6JkiJweOBZJRb_DgAA__-TH5Ro">