[libc] Allows cross compilation of membenchmarks
authorGuillaume Chatelet <gchatelet@google.com>
Tue, 9 May 2023 13:53:32 +0000 (13:53 +0000)
committerGuillaume Chatelet <gchatelet@google.com>
Thu, 11 May 2023 08:57:50 +0000 (08:57 +0000)
commitb51e6bfcb6745d88a0d41be28c6204019c79bea2
treec0adaabf894a0262e488c4fe161dfc6aa378f73b
parentabacd363834f42e3a44c4eba087ec0f5698d3eef
[libc] Allows cross compilation of membenchmarks

This patch makes sure:
 - we pass the correct compiler options when building Google benchmarks,
 - we only import the C++ version of the memory functions.

The change in libc/cmake/modules/LLVMLibCTestRules.cmake is here to make sure CMake can generate the right command line in the presence of the CMAKE_CROSSCOMPILING_EMULATOR option.

Relevant documentation:
https://cmake.org/cmake/help/latest/variable/CMAKE_CROSSCOMPILING_EMULATOR.html
https://cmake.org/cmake/help/latest/command/add_custom_command.html#command:add_custom_command
"
If COMMAND specifies an executable target name (created by the `add_executable()` command), it will automatically be replaced by the location of the executable created at build time if either of the following is true:
 - The target is not being cross-compiled (i.e. the CMAKE_CROSSCOMPILING variable is not set to true).
 - New in version 3.6: The target is being cross-compiled and an emulator is provided (i.e. its CROSSCOMPILING_EMULATOR target property is set). In this case, the contents of CROSSCOMPILING_EMULATOR will be prepended to the command before the location of the target executable.
"

Reviewed By: gchatelet

Differential Revision: https://reviews.llvm.org/D150200
libc/benchmarks/CMakeLists.txt
libc/cmake/modules/LLVMLibCTestRules.cmake