]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/histogram/benchmark/CMakeLists.txt
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / histogram / benchmark / CMakeLists.txt
1 # Copyright 2019 Hans Dembinski
2 # Distributed under the Boost Software License, Version 1.0.
3 # See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
4
5 include(BoostFetch)
6
7 # setup for google benchmark
8 set(CMAKE_BUILD_TYPE Release) # ok, only set in local scope
9 option(BENCHMARK_ENABLE_TESTING "" OFF)
10 boost_fetch(google/benchmark)
11
12 function(add_benchmark NAME)
13
14 cmake_parse_arguments(PARSE_ARGV 1 _ "" "" ";INCLUDE_DIRECTORIES;LINK_LIBRARIES;COMPILE_OPTIONS")
15
16 if(__UNPARSED_ARGUMENTS)
17 message(AUTHOR_WARNING "add_benchmark: extra arguments ignored: ${__UNPARSED_ARGUMENTS}")
18 endif()
19
20 set(SOURCE ${NAME}.cpp)
21 set(NAME benchmark_${NAME})
22
23 if(DEFINED BUILD_TESTING AND NOT BUILD_TESTING)
24 return()
25 endif()
26
27 add_executable(${NAME} ${SOURCE})
28 target_include_directories(${NAME} PRIVATE ${__INCLUDE_DIRECTORIES})
29 target_link_libraries(${NAME} PRIVATE Boost::histogram benchmark_main ${__LINK_LIBRARIES})
30 target_compile_options(${NAME} PRIVATE -DNDEBUG -O3 -march=native -funsafe-math-optimizations ${__COMPILE_OPTIONS})
31
32 endfunction()
33
34 add_benchmark(axis_size)
35 add_benchmark(axis_index)
36 add_benchmark(histogram_filling)
37 add_benchmark(histogram_iteration)
38
39 find_package(Threads)
40 if (Threads_FOUND)
41 add_benchmark(histogram_parallel_filling)
42 endif()
43
44 find_package(GSL)
45 if (GSL_FOUND)
46 add_benchmark(
47 histogram_filling_gsl
48 INCLUDE_DIRECTORIES ${GSL_INCLUDE_DIRS}
49 LINK_LIBRARIES ${GSL_LIBRARIES})
50 endif()
51
52 find_package(ROOT QUIET)
53 if (ROOT_FOUND)
54 add_benchmark(
55 histogram_filling_root
56 INCLUDE_DIRECTORIES ${ROOT_INCLUDE_DIRS}
57 LINK_LIBRARIES ${ROOT_LIBRARIES}
58 COMPILE_OPTIONS -frtti -fexceptions
59 )
60 # add ROOT linker flags? ${ROOT_EXE_LINKER_FLAGS}
61 endif()