histogram/CMakeLists.txt
Hans Dembinski 4c1caf3462
removing callable_traits
* replacing callable_traits with private implementation
2019-10-26 13:12:45 +02:00

121 lines
3.9 KiB
CMake

# Copyright Peter Dimov, Hans Dembinski 2018-2019
# 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
# Warning: Boost-CMake support is incomplete; testing works, install target doesn't
cmake_minimum_required(VERSION 3.6)
project(BoostHistogram VERSION 1.72.0 LANGUAGES CXX)
add_library(boost_histogram INTERFACE)
set_property(TARGET boost_histogram PROPERTY EXPORT_NAME histogram)
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
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>)
target_link_libraries(boost_histogram
INTERFACE
Boost::assert
Boost::config
Boost::core
Boost::mp11
Boost::throw_exception
Boost::variant2
)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
###########################################################
# Setup `check_histogram` target to build and run all tests.
###########################################################
# `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_test.cmake)
fetch_and_include(cmake/boost_fetch.cmake)
boost_fetch(boostorg/assert TAG develop)
boost_fetch(boostorg/config TAG develop)
boost_fetch(boostorg/core TAG develop)
boost_fetch(boostorg/mp11 TAG develop)
boost_fetch(boostorg/throw_exception TAG develop)
boost_fetch(boostorg/variant2 TAG develop)
## No cmake support yet
# boost_fetch(boostorg/accumulators TAG develop)
# boost_fetch(boostorg/range TAG develop)
# boost_fetch(boostorg/serialization TAG develop)
# boost_fetch(boostorg/units TAG develop)
find_package(Threads) # for optional multi-threaded tests
enable_testing()
add_custom_target(histogram_check
COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $<CONFIG>
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Build and then run all the tests and examples.")
###########################################################
# Setup 'install' target and package config file.
###########################################################
## installings targets doesn't work currently, fails with errors like
# Target "boost_variant" INTERFACE_INCLUDE_DIRECTORIES property contains
# path:
#
# "/path/to/histogram/build/_deps/boostorg_variant-src/include"
#
# which is prefixed in the build directory.Target "boost_variant"
# INTERFACE_INCLUDE_DIRECTORIES property contains path:
#
# "/path/to/histogram/build/_deps/boostorg_variant-src/include"
#
# which is prefixed in the source directory.
# set(CONFIG_INSTALL_DIR lib/cmake/${PROJECT_NAME}-${PROJECT_VERSION})
#
# install(TARGETS boost_histogram
# boost_assert
# boost_config
# boost_core
# boost_mp11
# boost_throw_exception
# boost_variant2
# EXPORT ${PROJECT_NAME}Targets)
# install(EXPORT ${PROJECT_NAME}Targets
# DESTINATION ${CONFIG_INSTALL_DIR}
# NAMESPACE Boost::
# FILE ${PROJECT_NAME}Config.cmake)
#
# install(DIRECTORY include/ DESTINATION include)
endif()
if (COMMAND boost_test)
add_subdirectory(test)
endif()
if (COMMAND boost_fetch)
add_subdirectory(benchmark)
endif()