xref: /llvm-project/libcxx/test/benchmarks/CMakeLists.txt (revision 012dd8be4b5a4c00deb22345c630990f160b3aa3)
1#==============================================================================
2# Build Google Benchmark
3#==============================================================================
4
5include(ExternalProject)
6set(BENCHMARK_COMPILE_FLAGS
7    -Wno-unused-command-line-argument
8    -nostdinc++
9    -isystem "${LIBCXX_GENERATED_INCLUDE_DIR}"
10    -L${LIBCXX_LIBRARY_DIR}
11    -Wl,-rpath,${LIBCXX_LIBRARY_DIR}
12    ${SANITIZER_FLAGS}
13    )
14if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE)
15  list(APPEND BENCHMARK_COMPILE_FLAGS
16    -isystem "${LIBCXX_GENERATED_INCLUDE_TARGET_DIR}")
17endif()
18if (DEFINED LIBCXX_CXX_ABI_LIBRARY_PATH)
19  list(APPEND BENCHMARK_COMPILE_FLAGS
20          -L${LIBCXX_CXX_ABI_LIBRARY_PATH}
21          -Wl,-rpath,${LIBCXX_CXX_ABI_LIBRARY_PATH})
22endif()
23split_list(BENCHMARK_COMPILE_FLAGS)
24
25set(BENCHMARK_CXX_LIBRARIES)
26list(APPEND BENCHMARK_CXX_LIBRARIES c++)
27if (NOT LIBCXX_ENABLE_SHARED)
28  list(APPEND BENCHMARK_CXX_LIBRARIES c++abi)
29endif()
30
31ExternalProject_Add(google-benchmark
32        EXCLUDE_FROM_ALL ON
33        DEPENDS cxx cxx-headers
34        PREFIX google-benchmark
35        SOURCE_DIR ${LLVM_THIRD_PARTY_DIR}/benchmark
36        INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/google-benchmark
37        CMAKE_CACHE_ARGS
38          -DCMAKE_C_COMPILER:FILEPATH=${CMAKE_C_COMPILER}
39          -DCMAKE_CXX_COMPILER:FILEPATH=${CMAKE_CXX_COMPILER}
40          -DCMAKE_MAKE_PROGRAM:FILEPATH=${CMAKE_MAKE_PROGRAM}
41          -DCMAKE_BUILD_TYPE:STRING=RELEASE
42          -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
43          -DCMAKE_CXX_FLAGS:STRING=${BENCHMARK_COMPILE_FLAGS}
44          -DBENCHMARK_USE_LIBCXX:BOOL=ON
45          -DBENCHMARK_ENABLE_TESTING:BOOL=OFF
46          -DBENCHMARK_CXX_LIBRARIES:STRING=${BENCHMARK_CXX_LIBRARIES})
47
48add_dependencies(cxx-test-depends google-benchmark)
49