92a873c746
* introduce offset for faster linearization of non-growing axes * added traits::is_inclusive and constexpr bool inclusive() methods for builtin axes * bug fixes for fill method when weight array is used with non-inclusive axis and when growing axes are used * bug fix of axis::options::test(...) * coverage tested with gcc-8, updated CONTRIBUTING.md with coverage info
80 lines
2.8 KiB
CMake
80 lines
2.8 KiB
CMake
# Copyright 2019 Hans Dembinski
|
|
# Distributed under the Boost Software License, Version 1.0.
|
|
# See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt
|
|
|
|
cmake_minimum_required(VERSION 3.6)
|
|
|
|
set(CMAKE_BUILD_TYPE Release) # ok, only set in local scope
|
|
|
|
if (NOT COMMAND boost_fetch)
|
|
# `function` confuses FetchContent, sees empty CMAKE_CURRENT_LIST_DIR
|
|
macro(fetch_and_include name)
|
|
message(STATUS "Fetching ${name}")
|
|
|
|
set(fetch_and_include_local_path "${CMAKE_BINARY_DIR}/fetch_and_include/${name}")
|
|
if(NOT EXISTS ${fetch_and_include_local_path})
|
|
file(DOWNLOAD
|
|
"https://raw.githubusercontent.com/boostorg/mincmake/develop/${name}"
|
|
"${CMAKE_BINARY_DIR}/fetch_and_include/${name}"
|
|
)
|
|
endif()
|
|
include("${CMAKE_BINARY_DIR}/fetch_and_include/${name}")
|
|
endmacro()
|
|
|
|
fetch_and_include(cmake/boost_fetch.cmake)
|
|
endif()
|
|
|
|
# allow benchmarks to build old versions of the code if we sit inside the boost metaproject
|
|
if (NOT TARGET boost_histogram)
|
|
add_library(boost_histogram INTERFACE)
|
|
add_library(Boost::histogram ALIAS boost_histogram)
|
|
target_compile_features(boost_histogram INTERFACE
|
|
cxx_alias_templates cxx_variadic_templates cxx_decltype_auto
|
|
cxx_defaulted_functions cxx_generic_lambdas cxx_range_for
|
|
cxx_relaxed_constexpr cxx_return_type_deduction)
|
|
target_include_directories(boost_histogram
|
|
INTERFACE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../include
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../../
|
|
)
|
|
set(BENCHMARK_FLAGS) # old versions don't work with -fno-exceptions
|
|
else()
|
|
set(BENCHMARK_FLAGS -fno-exceptions -fno-rtti)
|
|
endif()
|
|
|
|
option(BENCHMARK_ENABLE_TESTING "" OFF)
|
|
boost_fetch(hdembinski/benchmark)
|
|
|
|
macro(add_benchmark name)
|
|
add_executable(${name} "${name}.cpp")
|
|
target_compile_options(${name} PRIVATE
|
|
-DNDEBUG -O3 -march=native ${BENCHMARK_FLAGS} -funsafe-math-optimizations)
|
|
target_link_libraries(${name} PRIVATE Boost::histogram benchmark_main)
|
|
endmacro()
|
|
|
|
add_benchmark(axis_index)
|
|
add_benchmark(histogram_filling)
|
|
add_benchmark(histogram_iteration)
|
|
if (Threads_FOUND)
|
|
add_benchmark(histogram_parallel_filling)
|
|
endif()
|
|
|
|
find_package(GSL)
|
|
if (GSL_FOUND)
|
|
add_benchmark(histogram_filling_gsl)
|
|
target_include_directories(histogram_filling_gsl PRIVATE ${GSL_INCLUDE_DIRS})
|
|
target_link_libraries(histogram_filling_gsl
|
|
PRIVATE ${GSL_LIBRARIES} benchmark_main)
|
|
endif()
|
|
|
|
find_package(ROOT QUIET)
|
|
if (ROOT_FOUND)
|
|
add_benchmark(histogram_filling_root)
|
|
target_include_directories(histogram_filling_root PRIVATE ${ROOT_INCLUDE_DIRS})
|
|
target_link_libraries(histogram_filling_root
|
|
PRIVATE ${ROOT_LIBRARIES} benchmark_main)
|
|
target_compile_options(histogram_filling_root PRIVATE -frtti -fexceptions)
|
|
# target_link_options(histogram_filling_root
|
|
# PRIVATE ${ROOT_EXE_LINKER_FLAGS})
|
|
endif()
|