123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- # 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()
|