Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add option to use header-only Boost::container #294

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 27 additions & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,49 @@ cmake_minimum_required(VERSION 3.5...3.16)

project(boost_container VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES C CXX)

add_library(boost_container
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
)
option(Boost_CONTAINER_HEADER_ONLY "Build Extended Allocators and Some Polymorphic Memory Resources classes" OFF)

if(Boost_CONTAINER_HEADER_ONLY)
add_library(boost_container INTERFACE)
set(_populate INTERFACE)
else()
add_library(boost_container
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
)
set(_populate PUBLIC)
endif()


add_library(Boost::container ALIAS boost_container)

target_include_directories(boost_container PUBLIC include)
target_include_directories(boost_container ${_populate} include)

target_link_libraries(boost_container
PUBLIC
${_populate}
Boost::assert
Boost::config
Boost::intrusive
Boost::move
)

target_compile_definitions(boost_container
PUBLIC BOOST_CONTAINER_NO_LIB
${_populate} 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)
if(NOT Boost_CONTAINER_HEADER_ONLY)
if(BUILD_SHARED_LIBS)
target_compile_definitions(boost_container ${_populate} BOOST_CONTAINER_DYN_LINK)
else()
target_compile_definitions(boost_container ${_populate} BOOST_CONTAINER_STATIC_LINK)
endif()
endif()

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