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