project (dmmlib-library C) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Debug) endif(NOT CMAKE_BUILD_TYPE) set(DMMLIB_PUBLIC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/include CACHE INTERNAL "dmmlib public include directories" ) set(DMMLIB_PRIVATE_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/private-include ${CMAKE_BINARY_DIR} ) if (WITH_SHARED_LIB) set(DMMLIB_SHARED_LIBRARY dmm_shared CACHE INTERNAL "dmmlib shared library" ) endif (WITH_SHARED_LIB) if (WITH_STATIC_LIB) set(DMMLIB_STATIC_LIBRARY dmm_static CACHE INTERNAL "dmmlib static library" ) endif (WITH_STATIC_LIB) set(dmmlib_SRCS malloc.c free.c realloc.c calloc.c raw_block.c release_memory.c ) if(RAW_BLOCKS_TYPE STREQUAL "freelist") set(dmmlib_SRCS ${dmmlib_SRCS} freelist/block_header_funcs.c freelist/linked_lists/linked_lists.c freelist/linked_lists/search_algorithms.c freelist/freelist_malloc.c freelist/freelist_free.c freelist/freelist_realloc.c ) if(SORT_POLICY STREQUAL "lifo") set(dmmlib_SRCS ${dmmlib_SRCS} freelist/linked_lists/lifo_order.c ) elseif(SORT_POLICY STREQUAL "fifo") set(dmmlib_SRCS ${dmmlib_SRCS} freelist/linked_lists/fifo_order.c ) elseif(SORT_POLICY STREQUAL "size") set(dmmlib_SRCS ${dmmlib_SRCS} freelist/linked_lists/add_block_in_order.c freelist/linked_lists/size_order.c ) elseif(SORT_POLICY STREQUAL "address") set(dmmlib_SRCS ${dmmlib_SRCS} freelist/linked_lists/add_block_in_order.c freelist/linked_lists/address_order.c ) endif(SORT_POLICY STREQUAL "lifo") if(COALESCING_FIXED OR COALESCING_VARIABLE) set(dmmlib_SRCS ${dmmlib_SRCS} freelist/coalesce.c ) endif(COALESCING_FIXED OR COALESCING_VARIABLE) if(SPLITTING_FIXED OR SPLITTING_VARIABLE) set(dmmlib_SRCS ${dmmlib_SRCS} freelist/split.c ) endif(SPLITTING_FIXED OR SPLITTING_VARIABLE) if(WITH_DEBUG) set(dmmlib_SRCS ${dmmlib_SRCS} freelist/freelist_debug.c ) endif(WITH_DEBUG) elseif(RAW_BLOCKS_TYPE STREQUAL "bitmap") set(dmmlib_SRCS ${dmmlib_SRCS} bitmap/bitmap_other.c bitmap/bitmap_malloc.c bitmap/bitmap_free.c bitmap/bitmap_realloc.c ) endif(RAW_BLOCKS_TYPE STREQUAL "freelist") if(WITH_SYSTEM_CALLS STREQUAL "none") set(NO_SYSTEM_CALLS ON) elseif(WITH_SYSTEM_CALLS STREQUAL "sbrk") set(dmmlib_SRCS ${dmmlib_SRCS} request_memory_sbrk.c ) elseif(WITH_SYSTEM_CALLS STREQUAL "mmap") if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(dmmlib_SRCS ${dmmlib_SRCS} request_memory_mmap_linux.c ) elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(dmmlib_SRCS ${dmmlib_SRCS} request_memory_mmap_osx.c ) endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") endif(WITH_SYSTEM_CALLS STREQUAL "none") if(WITH_DEBUG) set(dmmlib_SRCS ${dmmlib_SRCS} debug.c ) endif(WITH_DEBUG) if (WITH_REALLOC) set(dmmlib_SRCS ${dmmlib_SRCS} # custom_realloc.c ) endif (WITH_REALLOC) if (WITH_ADAPTIVITY) set(dmmlib_SRCS ${dmmlib_SRCS} dmm_adaptor.c ) endif (WITH_ADAPTIVITY) include_directories( ${DMMLIB_PUBLIC_INCLUDE_DIRS} ${DMMLIB_PRIVATE_INCLUDE_DIRS} ) if (WITH_SHARED_LIB) add_library(${DMMLIB_SHARED_LIBRARY} SHARED ${dmmlib_SRCS}) endif (WITH_SHARED_LIB) if (WITH_STATIC_LIB) add_library(${DMMLIB_STATIC_LIBRARY} STATIC ${dmmlib_SRCS}) endif (WITH_STATIC_LIB)