-# Copyright 2019 Mike Dev
+# Copyright 2020, 2021 Peter Dimov
# Distributed under the Boost Software License, Version 1.0.
-# See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
-#
-# NOTE: CMake support for Boost.Container is currently experimental at best
-# and the interface is likely to change in the future
+# https://www.boost.org/LICENSE_1_0.txt
-cmake_minimum_required( VERSION 3.5 )
-project( BoostContainer LANGUAGES C CXX )
+cmake_minimum_required(VERSION 3.5...3.16)
-file( GLOB boost_container_cpp_files src/*.cpp )
+project(boost_container VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES C CXX)
add_library(boost_container
- ${boost_container_cpp_files}
- src/alloc_lib.c
+ src/alloc_lib.c
+ src/dlmalloc.cpp
+ src/global_resource.cpp
+ src/monotonic_buffer_resource.cpp
+ src/pool_resource.cpp
+ src/synchronized_pool_resource.cpp
+ src/unsynchronized_pool_resource.cpp
)
-# This is the public target name, other libraries should link to
-add_library( Boost::container ALIAS boost_container )
-
-target_include_directories( boost_container PUBLIC include )
-
-# NOTE:
-# We deactivate autolinking, because cmake based builds don't need it and
-# we don't implement name mangling for the library file anyway.
-# Ususally the parent CMakeLists.txt file should already have globally defined BOOST_ALL_NO_LIB
-target_compile_definitions( boost_container PUBLIC BOOST_CONTAINER_NO_LIB )
-
-target_link_libraries( boost_container
- PUBLIC
- Boost::assert
- Boost::config
- Boost::container_hash
- Boost::core
- Boost::intrusive
- Boost::move
- Boost::static_assert
- Boost::type_traits
+add_library(Boost::container ALIAS boost_container)
+
+target_include_directories(boost_container PUBLIC include)
+
+target_link_libraries(boost_container
+ PUBLIC
+ Boost::assert
+ Boost::config
+ Boost::core
+ Boost::intrusive
+ Boost::move
+ Boost::static_assert
+ Boost::type_traits
+ Boost::winapi
+)
+
+target_compile_definitions(boost_container
+ PUBLIC BOOST_CONTAINER_NO_LIB
+ # Source files already define BOOST_CONTAINER_SOURCE
+ # PRIVATE BOOST_CONTAINER_SOURCE
)
+
+if(BUILD_SHARED_LIBS)
+ target_compile_definitions(boost_container PUBLIC BOOST_CONTAINER_DYN_LINK)
+else()
+ target_compile_definitions(boost_container PUBLIC BOOST_CONTAINER_STATIC_LINK)
+endif()
+
+if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
+
+ add_subdirectory(test)
+
+endif()