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

    <tr>
        <th>Summary</th>
        <td>
            Running the libc++ Benchmarks on Windows with MinGW
        </td>
    </tr>

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

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

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

<pre>
    I'm attempting to run a libc++ benchmark on Windows MinGW using the latest `mstorsjo/llvm-mingw` toolchain.

Initially, executing `./bin/llvm-lit.py a.bench` resulted in an ld.lld error:

```
ld.lld: error: undefined symbol: __declspec(dllimport) benchmark::internal::InitializeStreams()
>>> referenced by C:/Users/xxx/AppData/Local/Temp/sort_heap-a87419.o:(__cxx_global_var_init)
NOTE: a relevant symbol '_ZN9benchmark8internal17InitializeStreamsEv' is available in C:/Users/xxx/Desktop/llvm-project/build/libcxx/test/benchmarks/google-benchmark/lib/libbenchmark.a but cannot be used because it is not an import library.
```

After some searching, I added the `-DBENCHMARK_STATIC_DEFINE` flag. However, a new error occurred:

```
ld.lld: error: undefined symbol: __declspec(dllimport) SHGetValueA
>>> referenced by libbenchmark.a(sysinfo.cc.obj):(benchmark::CPUInfo::CPUInfo())
clang-21: error: linker command failed with exit code 1 (use -v to see invocation)
```

Adding `-lShlwapi` finally resolved the issue.

Since I'm not a Windows/MinGW expert, I was wondering if there's a way to make running the benchmark work out of the box.

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0Vd1u4zYTfRr6ZmBBoh1bvtCFkti7xvdtWmyyXaA3xogcWUwoUiAp__TpC0p2_rboXQFBgCjO8MycM4fovdobooLd3LKb-wn2obGuEDnVk8rKc7FlfNkChkBtF5TZQ7DgegMIWlWC8VvGb6EiI5oW3QtYAz-Vkfbo4ZsyX35C74eghkBjIB-ALdLWB-v8s2V8o_WhnbbK7I9skUKwVosGlUlYWrK03BoVFGp9ZvwO6ESiHyCwRZowvqmUuWbQKiTdGTAZkMRUjnyvA0lQBtCAlonWEsg569isHNOzRXp50nLcwGbl6x7ojaRaGZLgz21ldVzb7SQJ7TsSjOdSa9V21gXGV289iOlnpTKBnEE9fl0KUX_RY3CErWc8Z3wVMczW4wOOanJkBEmoznAXA_nmhyfnGd-cTifGN2XX3WNAxjf_twI145snajvGN966sGsIuynmy3m2SuwQnu924nTa7bWtUO8O6HbKqDAe_PDb0zpWhOBI0wFNuJQJjC93fz6sXgvKr7Vky1_qWB8YX4LygAdUGitNseH_CP6e_Euw3ZWyztlnEiHy2Cst47KqxLAz6iSuXwHEHHtr95qmb10e9o_v18UEoeoDCDTGBqgIeh-7SQJ7T6BCBBr_oIGRuChih-6cfFIDS8uyDuTA25bAEzrRKLOPMtwCSklykDRbpNP72_XD3ddv5ff_7R6fyqft3e5-vdk-rKMIa437BL7aIx3IxWAEQ8dRYWCF6J0j-d_I8fHrFwp_oO6p_BeVfWwe47k_e2VqmwiR2Oo5KmXQ0Sdx3_3-Y2tq-_FjVPSgLaHR7Kc8-4BfK_NCDoRtWzQSalSaJBxVaIBOKoCwkiADxvNI1vQQncZT1NPBCgzKmsvEfOJJyosnTPVjo4_YqaH1ykTjiD5g9eHCl_K-p4u3PCojCEZ7GzRxNS7GN6N10amj2MzI-RE9HK2R5OJhqo7pHDG-9IBwxHME2-ILRW80V8d7s8Wjjd7YB7D1-MeeIoyJLGZyNVvhhIpsuUizbDZP55OmmFWzPEchqU6pqmjGb1ayqjOeZjlJsagmquApv8nSLM0WfMbnCV9Wy1W-WvBleiPFqmbzlFpUOonDlli3nwzFF9mC58vVRGNF2g-uz_mbkzPO4y3gimFEq37v2TzVygf_lieooKn4_q7OdzfB7evMvr8KBpKHpk56p4smhM6PFhEnW4WmrxJh24s1_OoQA_RIzAX9oeB_BwAA__-GsC78">