35 lines
1.3 KiB
CMake
35 lines
1.3 KiB
CMake
# Build list of possible allocators
|
|
set(possible_allocators "")
|
|
if(GTSAM_USE_TBB)
|
|
list(APPEND possible_allocators TBB)
|
|
set(preferred_allocator TBB)
|
|
else()
|
|
list(APPEND possible_allocators BoostPool STL)
|
|
set(preferred_allocator STL)
|
|
endif()
|
|
if(GPERFTOOLS_FOUND)
|
|
list(APPEND possible_allocators tcmalloc)
|
|
endif()
|
|
|
|
# Check if current allocator choice is valid and set cache option
|
|
list(FIND possible_allocators "${GTSAM_DEFAULT_ALLOCATOR}" allocator_valid)
|
|
if(allocator_valid EQUAL -1)
|
|
set(GTSAM_DEFAULT_ALLOCATOR ${preferred_allocator} CACHE STRING "Default allocator" FORCE)
|
|
else()
|
|
set(GTSAM_DEFAULT_ALLOCATOR ${preferred_allocator} CACHE STRING "Default allocator")
|
|
endif()
|
|
set_property(CACHE GTSAM_DEFAULT_ALLOCATOR PROPERTY STRINGS ${possible_allocators})
|
|
mark_as_advanced(GTSAM_DEFAULT_ALLOCATOR)
|
|
|
|
# Define compile flags depending on allocator
|
|
if("${GTSAM_DEFAULT_ALLOCATOR}" STREQUAL "BoostPool")
|
|
set(GTSAM_ALLOCATOR_BOOSTPOOL 1)
|
|
elseif("${GTSAM_DEFAULT_ALLOCATOR}" STREQUAL "STL")
|
|
set(GTSAM_ALLOCATOR_STL 1)
|
|
elseif("${GTSAM_DEFAULT_ALLOCATOR}" STREQUAL "TBB")
|
|
set(GTSAM_ALLOCATOR_TBB 1)
|
|
elseif("${GTSAM_DEFAULT_ALLOCATOR}" STREQUAL "tcmalloc")
|
|
set(GTSAM_ALLOCATOR_STL 1) # tcmalloc replaces malloc, so to use it we use the STL allocator
|
|
list(APPEND GTSAM_ADDITIONAL_LIBRARIES "tcmalloc")
|
|
endif()
|