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

    <tr>
        <th>Summary</th>
        <td>
            libc: re-enable benchmarks in post submit ci
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc
      </td>
    </tr>

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

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

<pre>
    As a result of

https://github.com/llvm/llvm-zorg/pull/325
https://github.com/llvm/llvm-zorg/pull/342

The cmake option `-DLIBC_INCLUDE_BENCHMARKS=ON` now fails to build when using `llvm-projects/runtimes/` as the cmake root.

```
CMake Error at /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/benchmarks/CMakeLists.txt:35 (add_executable):
  Target "libc-benchmark-test" links to target "benchmark::benchmark" but the
  target was not found.  Perhaps a find_package() call is missing for an
  IMPORTED target, or an ALIAS target is missing?
Call Stack (most recent call first):
 /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/benchmarks/CMakeLists.txt:111 (add_libc_benchmark_unittest)
```
I was able to fix this via:
```diff
diff --git a/libc/benchmarks/CMakeLists.txt b/libc/benchmarks/CMakeLists.txt
index 60f522d7d8c6..8dae3ea94a20 100644
--- a/libc/benchmarks/CMakeLists.txt
+++ b/libc/benchmarks/CMakeLists.txt
@@ -100,7 +100,7 @@ target_include_directories(libc-benchmark
 )
 target_link_libraries(libc-benchmark
     PUBLIC
- benchmark::benchmark
+    benchmark
     LLVMSupport
 LLVMTargetParser
     Threads::Threads
```
(Not sure if that's correct?). We can then configure the build, but `ninja libc-benchmark-test` fails because it can't find the headers. Ok, fixed with:

```diff
diff --git a/libc/benchmarks/CMakeLists.txt b/libc/benchmarks/CMakeLists.txt
index 60f522d7d8c6..ccdb00459c8a 100644
--- a/libc/benchmarks/CMakeLists.txt
+++ b/libc/benchmarks/CMakeLists.txt
@@ -96,11 +96,11 @@ add_library(libc-benchmark
 )
 
 target_include_directories(libc-benchmark
-    PUBLIC ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR}
+    PUBLIC ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR} ${CMAKE_BINARY_DIR}/libc/benchmarks/google-benchmark-libc/include/
 )
 target_link_libraries(libc-benchmark
     PUBLIC
- benchmark::benchmark
+    benchmark
     LLVMSupport
 LLVMTargetParser
     Threads::Threads
```
and then we fail to find llvm/ADT/ArrayRef.h. It turns out, llvm-project/libc/benchmarks/LibcBenchmark.h depends on llvm/ADT/ArrayRef.h and llvm/ADT/SmallVector.h.

That was surprising.  To ensure llvm-libc doesn't have dependencies on LLVM itself, we should move the benchmark code to use our cpp::array and cpp::vector.  Until then, I'm just going to remove `-DLIBC_INCLUDE_BENCHMARKS=ON`  and `ninja libc-benchmark-test` from post submit to unblock the fullbuild builders. cc @gchatelet 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUV91v4jgQ_2vMy4jImBDggYcARYeWdqu2u6d7Qo4zSbwEG_mj7d5ff7IT6O7e7h26k-6jQs2HPTO_mfnNeMKtlbVCXJDJkkzWA-5do81CSXEo0XLfKonGDgpdfl7kFjgYtL51oCtCc0LzxrmTJeOcsA1hm1q6xheJ0EfCNm37fL4Mf9WmJmxz8m1L2GbMJn9ZNGWd4acGQRz5AUGfnNQKSEaH6912udpv71a7D-ub_fLmbvXTbf7w7pGM1-_vSEZB6ReouGwtOA2Fl20JLw0q8FaqOqiIJk9Gf0LhLGEb45WTRwy3QZ5bcBfDRmuXdGhIRvsfzVe3YfHGGG2AOyBs0-gjBndkIYbRaKHd-ZlzI5osHfrCK-e__3ZY-baNgsOyqM-B6VH2IoRtClSiOXJzCGgjip20zibu1ZFxPp4AYTNelnt8ReEdL1okbB4SQHOAJ25qDGhZB_Osa-jQOsIYtFIdYtjcZedlU1Ayzt8eGYPCuxCqqLuXeOEWlHZQaa_KBOAeTcNPgVSVVOX-xMWB10jYjLA5CN62IC0cpY25qUI0VVS3vb1___B0s-71EraCuAj5bps_nq29yZLxJqQlKHx0XBxCHI7aOjAoULnOVCVN8PMcj_9K1kaj0TltYf_-snvvlXRdbubfEHAbIx3yG9JVyVdwjbTwLHnn3GVvKatQxuECw2EtHfCrcEFxHXyaS1XiK2S0mjBWTsuZyJJkVnIcI5-nnFEYUZqlKaH5cDi80nrwgC273_VISEpJSmE4opSw1RQIW15uu6WON3upROtL3JfSoHDayFD8s6-LomNIiPtZKlRHyJDhPxQIf_cflrvtKrgLPyye6F7Y_Dvp3e7j7aM_nbQJHsXHrmzvubFoztueGoO8tJ3e88PXFCFsdqcdWG8QZAWu4Y6wqQWhTfA6VAybJ_AzguAq1LECoVUl6yAQOmDkdai8UOcko0qqTxy-1zoy2nfcAgX3FkGGilOETV2s-6iuQV6isQm8PwSllXzFEl6ka3rG_uukFaIsKE0nczHj_zxp5xlhq9gJlpfbbqlvDIabz3_E0i-YeiW_h290BcJSMl0Gul3O1vX2gUzXX67c5tu7b5bfqPw3FfXLq9v83c1-ub3LH345m_h-JGut6xa_oGK_qXc-nOb_9xLmXekoeMFYYF2vVyX0w1O-fgr_jeGfH7BKmgS2Dpw3yoL28dC84jzayUIszy-SBko8oSotaPUjM8C_hfB45G37MXItaZLz9Ma7ecB6czIynNIJwJMGVLEnRWgBEJQabdcsGv6MPQBUQmJEEQII0llsq-DSC4JttG9LOOrnvlOd4YPQZTwRQxPS3oA4nboA84A-Ar-8eu7wAnxQLsS2QRX0bwmbHuGTtw5qHcYSp8FgtHXV_BmN_Gm7NPoIpzCgWF8cpYuYVdFqcYgeXeaKrgvHvilE6Ai1aLjDFh0MysW4nI_nfICL0XSc0jSdstGgWUxHcz4fpZyXLJ3RGZuhKKZZlo3ZtGDVjA_kglGWjtiIsTGdMJpwWk4m2WyObEYnVZaSlOKRyzYJSUq0qQfSWo-L0Wg-nc0HLS-wtfF7opslCWPhy8IsYlILX1uS0jZ2uYsGJ12Li7h7nIPBIao4v7yREaT6KiZCDrxpF1d-RLyxPGIN1O7hPi_YbwEAAP__9CImTg">