# Generated by `boostdep --cmake dynamic_bitset`
# Copyright 2020 Peter Dimov
# Copyright 2025 Gennaro Prota
# Distributed under the Boost Software License, Version 1.0.
# https://www.boost.org/LICENSE_1_0.txt

cmake_minimum_required(VERSION 3.5...3.16)

project(boost_dynamic_bitset VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)

add_library(boost_dynamic_bitset INTERFACE)
add_library(Boost::dynamic_bitset ALIAS boost_dynamic_bitset)

target_include_directories(boost_dynamic_bitset INTERFACE include)

if (NOT DYNAMIC_BITSET_MRDOCS_BUILD)
    target_link_libraries(boost_dynamic_bitset
      INTERFACE
        Boost::assert
        Boost::config
        Boost::container_hash
        Boost::core
        Boost::integer
        Boost::move
        Boost::static_assert
        Boost::throw_exception
    )
endif()

if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")

  add_subdirectory(test)

endif()

if (DYNAMIC_BITSET_MRDOCS_BUILD)
    set(INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include")

    # Create a temporary source file that includes boost/dynamic_bitset.hpp.
    set(TEMP_CPP_FILE "${CMAKE_CURRENT_BINARY_DIR}/dynamic_bitset_for_mrdocs.cpp")
    file(WRITE ${TEMP_CPP_FILE} "// This file is generated automatically by CMake\n\n")
    file(APPEND ${TEMP_CPP_FILE} "#include \"boost/dynamic_bitset.hpp\"\n")

    # Create a custom target for MrDocs.
    add_library(dynamic_bitset_mrdocs_target ${TEMP_CPP_FILE})

    # This is to get some noexcept specifications which are only added
    # if the code is compiled as C++17 or later.
    set_target_properties(dynamic_bitset_mrdocs_target PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED YES)

    # Set any other target properties here.
    target_include_directories(dynamic_bitset_mrdocs_target PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
    target_link_libraries(dynamic_bitset_mrdocs_target PRIVATE boost_dynamic_bitset)
    file(GLOB BOOST_MODULE_PATHS "$ENV{BOOST_SRC_DIR}/libs/*/include")
    target_include_directories(dynamic_bitset_mrdocs_target PRIVATE ${BOOST_MODULE_PATHS})

    # Don't create any other targets.
    return()
endif()
