diff --git a/CMakeLists.txt b/CMakeLists.txt index 1927552f..95b2ada1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,27 +1,28 @@ -# Copyright 2025 Matt Borland +# Generated by `boostdep --cmake safe_numbers` +# Copyright 2020, 2021 Peter Dimov # Distributed under the Boost Software License, Version 1.0. # https://www.boost.org/LICENSE_1_0.txt -cmake_minimum_required(VERSION 3.12...3.20) +cmake_minimum_required(VERSION 3.12...3.31) project(boost_safe_numbers VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX) add_library(boost_safe_numbers INTERFACE) add_library(Boost::safe_numbers ALIAS boost_safe_numbers) -target_compile_features(boost_safe_numbers INTERFACE cxx_std_20) - target_include_directories(boost_safe_numbers INTERFACE include) target_link_libraries(boost_safe_numbers INTERFACE - Boost::assert Boost::charconv - Boost::config + Boost::core + Boost::random Boost::throw_exception ) -if(BUILD_TESTING) +target_compile_features(boost_safe_numbers INTERFACE cxx_std_20) + +if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt") add_subdirectory(test) diff --git a/build.jam b/build.jam index ee148fc5..6ae10c76 100644 --- a/build.jam +++ b/build.jam @@ -6,9 +6,9 @@ require-b2 5.2 ; constant boost_dependencies : - /boost/assert//boost_assert /boost/charconv//boost_charconv - /boost/config//boost_config + /boost/core//boost_core + /boost/random//boost_random /boost/throw_exception//boost_throw_exception ; project /boost/safe_numbers ; @@ -19,4 +19,5 @@ explicit ; call-if : boost-library safe_numbers + : install boost_safe_numbers ; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 94b85a94..6a372f93 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -23,9 +23,9 @@ if(HAVE_BOOST_TEST) else() if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64|amd64|i386|i686|x86" AND NOT MINGW) - boost_test_jamfile(FILE Jamfile LINK_LIBRARIES Boost::safe_numbers Boost::charconv Boost::core Boost::random Boost::safe_numerics Boost::multiprecision Boost::exception Boost::stacktrace_from_exception) + boost_test_jamfile(FILE Jamfile LINK_LIBRARIES Boost::safe_numbers Boost::config Boost::multiprecision Boost::safe_numerics Boost::throw_exception Boost::exception Boost::stacktrace_from_exception) else() - boost_test_jamfile(FILE Jamfile LINK_LIBRARIES Boost::safe_numbers Boost::charconv Boost::core Boost::random Boost::safe_numerics Boost::multiprecision Boost::exception) + boost_test_jamfile(FILE Jamfile LINK_LIBRARIES Boost::safe_numbers Boost::config Boost::multiprecision Boost::safe_numerics Boost::throw_exception Boost::exception) endif() endif() diff --git a/test/cmake_install_test/CMakeLists.txt b/test/cmake_install_test/CMakeLists.txt deleted file mode 100644 index 2a15e231..00000000 --- a/test/cmake_install_test/CMakeLists.txt +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright 2018, 2019 Peter Dimov -# 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.5...3.16) - -project(cmake_install_test LANGUAGES CXX) - -find_package(boost_safe_numbers REQUIRED) - -add_executable(quick ../quick.cpp) -target_link_libraries(quick Boost::safe_numbers) - -enable_testing() -add_test(quick quick) - -add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $) diff --git a/test/cmake_subdir_test/CMakeLists.txt b/test/cmake_subdir_test/CMakeLists.txt deleted file mode 100644 index 71bd7940..00000000 --- a/test/cmake_subdir_test/CMakeLists.txt +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright 2018, 2019 Peter Dimov -# 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.5...3.20) - -project(cmake_subdir_test LANGUAGES CXX) - -add_subdirectory(../.. boostorg/safe_numbers) - -set(deps - -# Primary dependencies - -assert -config -throw_exception -charconv - -# Secondary dependencies - -core - -) - -foreach(dep IN LISTS deps) - - add_subdirectory(../../../${dep} boostorg/${dep}) - -endforeach() - -add_executable(quick ../quick.cpp) -target_link_libraries(quick Boost::safe_numbers) - -enable_testing() -add_test(NAME quick COMMAND $) - -add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $) diff --git a/test/cmake_test/CMakeLists.txt b/test/cmake_test/CMakeLists.txt new file mode 100644 index 00000000..6d888304 --- /dev/null +++ b/test/cmake_test/CMakeLists.txt @@ -0,0 +1,80 @@ +# Copyright 2018, 2019 Peter Dimov +# 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.5...3.16) + +project(cmake_test LANGUAGES CXX) + +if(BOOST_CI_INSTALL_TEST) + + # Workaround until B2 also installs targets for header-only libs + if(BOOST_CI_INSTALLED_BY STREQUAL "B2") + find_package(Boost COMPONENTS headers charconv random REQUIRED) + add_library(boost_safe_numbers INTERFACE IMPORTED GLOBAL) + target_link_libraries(boost_safe_numbers INTERFACE Boost::headers Boost::charconv Boost::random) + add_library(Boost::safe_numbers ALIAS boost_safe_numbers) + else() + find_package(Boost COMPONENTS safe_numbers REQUIRED) + endif() + +else() + + add_subdirectory(../.. boostorg/safe_numbers) + + set(deps + + # Primary dependencies + + charconv + config + core + multiprecision + random + safe_numerics + throw_exception + + # Secondary dependencies + + assert # (from charconv) + compat # (from random) + integer # (from multiprecision) + lexical_cast # (from multiprecision) + math # (from multiprecision) + predef # (from multiprecision) + dynamic_bitset # (from random) + io # (from random) + system # (from random) + type_traits # (from random) + utility # (from random) + concept_check # (from safe_numerics) + logic # (from safe_numerics) + mp11 # (from safe_numerics) + preprocessor # (from concept_check) + container_hash # (from dynamic_bitset) + move # (from dynamic_bitset) + container # (from lexical_cast) + variant2 # (from system) + winapi # (from system) + intrusive # (from container) + describe # (from container_hash) + + ) + + foreach(dep IN LISTS deps) + + add_subdirectory(../../../${dep} boostorg/${dep}) + + endforeach() + +endif() + +add_executable(quick ../quick.cpp) +target_link_libraries(quick Boost::safe_numbers) +# B2-installed config does not propagate the C++20 requirement, so set it explicitly here. +target_compile_features(quick PRIVATE cxx_std_20) + +enable_testing() +add_test(quick quick) + +add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure -C $)