set(WITH_SYSTEM_CALLS "none" CACHE STRING "Choose what system calls can be used, options are: none, sbrk, mmap") set(RAW_BLOCKS_TYPE "freelist" CACHE STRING "Choose what raw blocks can be used, options are: freelist, bitmap") option(HAVE_LOCKS "Build with POSIX locking mechanisms" ON) option(WITH_REALLOC "Build with realloc" OFF) set(TRACE_LEVEL 2 CACHE INTEGER "Choose the trace level, options are: 0, 1, 2 and 3") set(STATS "global" CACHE STRING "Choose if the memory allocator keeps internally statistics per raw block or globally, options are: none, rawblock, global") option(WITH_DEBUG "Build with debugging functions" ON) option(WITH_EXAMPLES "Build with examples" OFF) option(WITH_ADAPTIVITY "Build with adaptivity" OFF) option(WITH_STATIC_LIB "Build a static library" OFF) option(WITH_SHARED_LIB "Build a shared library" OFF) option(WITH_DOC "Build with documentation" OFF) option(FREELIST_COALESCE_AFTER_SPLIT "Try to coalesce blocks after split" OFF) option(SORT_POLICY "Choose the block sorting policy, options are: lifo, fifo, size, address") set(BITMAP_RESOLUTION 256 CACHE INTEGER "Choose the size of cells in bitmap-organised raw blocks") set(REQUEST_SIZE_INFO ON) set(WITH_SYSTEM_CALLS "none") set(SEARCH_POLICY "best") set(FIT_PERCENTAGE 0.8) set(INITIAL_SEARCH_POLICY "best") set(WITH_COALESCING "never" "Build with coalescing support") set(WITH_SPLITTING "never" "Build with splitting support") set(BLOCKS_ORGANIZATION "sll" "Blocks organized in singly linked lists") option(WITH_OWNERSHIP "Build with ownership information in blocks" OFF) option(P2012 "Build for P2012 runtime" OFF) option(LEON3 "Build for Leon3" OFF) option(LINUXTEST "Build a case for Linux" ON) if (P2012) set(WITH_SYSTEM_CALLS "none") set(HAVE_LOCKS OFF) set(WITH_STATIC_LIB ON) set(SORT_POLICY "lifo") set(LINUXTEST OFF) set(WITH_COALESCING "never") set(WITH_SPLITTING "never") set(BLOCKS_ORGANIZATION "sll") set(STATS "none") set(TRACE_LEVEL 0) set(WITH_DEBUG OFF) endif (P2012) if (LEON3) set(WITH_SYSTEM_CALLS "none") set(HAVE_LOCKS OFF) set(WITH_STATIC_LIB ON) set(NUM_POOLS 1) set(LINUXTEST OFF) set(COUNT_HOPS ON) set(WITH_COALESCING "never") set(WITH_SPLITTING "never") set(BLOCKS_ORGANIZATION "sll") endif (LEON3) if (LINUXTEST) set(WITH_SYSTEM_CALLS "mmap") set(SYS_ALLOC_SIZE 4194304) set(SORT_POLICY "lifo") set(SEARCH_POLICY "first") set(FIT_PERCENTAGE 0.6f) set(HAVE_LOCKS ON) set(WITH_EXAMPLES ON) set(WITH_COALESCING "fixed") set(MAX_COALESCE_SIZE 60000) set(WITH_SPLITTING "fixed") set(MIN_SPLITTING_SIZE 300) set(COALESCE_AFTER_SPLIT ON) set(WITH_SHARED_LIB ON) set(WITH_STATIC_LIB ON) set(WITH_REALLOC ON) set(WITH_DOC ON) endif (LINUXTEST) if(RAW_BLOCKS_TYPE STREQUAL "freelist") set(FL_RB_ONLY ON) elseif(RAW_BLOCKS_TYPE STREQUAL "bitmap") set(BITMAP_RB_ONLY ON) endif(RAW_BLOCKS_TYPE STREQUAL "freelist") if(STATS STREQUAL "rawblock") set(WITH_RAWBLOCK_STATS ON) elseif(STATS STREQUAL "global") set(WITH_ALLOCATOR_STATS ON) endif(STATS STREQUAL "rawblock") if(COALESCE_AFTER_SPLIT) if(WITH_SPLITTING STREQUAL "never") message(FATAL_ERROR "You have to set WITH_SPLITTING to fixed or variable if you want to coalesce after split.") endif(WITH_SPLITTING STREQUAL "never") if(WITH_COALESCING STREQUAL "never") message(FATAL_ERROR "You have to set WITH_COALESCING to fixed or variable if you want to coalesce after split.") endif(WITH_COALESCING STREQUAL "never") endif(COALESCE_AFTER_SPLIT) if(BLOCKS_ORGANIZATION STREQUAL "dll") set(BLOCKS_IN_DLL ON) else(BLOCKS_ORGANIZATION STREQUAL "dll") set(BLOCKS_IN_SLL ON) endif(BLOCKS_ORGANIZATION STREQUAL "dll") if(SORT_POLICY STREQUAL "lifo") set(LIFO_SORT_POLICY ON) elseif(SORT_POLICY STREQUAL "fifo") set(FIFO_SORT_POLICY ON) elseif(SORT_POLICY STREQUAL "size") set(SIZE_SORT_POLICY ON) elseif(SORT_POLICY STREQUAL "address") set(ADDRESS_SORT_POLICY ON) endif(SORT_POLICY STREQUAL "lifo") if(SEARCH_POLICY STREQUAL "best") set(BEST_FIT ON) elseif(SEARCH_POLICY STREQUAL "good") set(GOOD_FIT ON) set(WITH_KNOBS ON) elseif(SEARCH_POLICY STREQUAL "exact") set(EXACT_FIT ON) elseif(SEARCH_POLICY STREQUAL "first") set(FIRST_FIT ON) elseif(SEARCH_POLICY STREQUAL "allocvar") set(ALLOC_VAR_FIT ON) elseif(SEARCH_POLICY STREQUAL "heapvar") set(HEAP_VAR_FIT ON) endif(SEARCH_POLICY STREQUAL "best") if(WITH_COALESCING STREQUAL "fixed") if(NOT DEFINED MAX_COALESCE_SIZE) message(FATAL_ERROR "You have to set MAX_COALESCE_SIZE by using -DMAX_COALESCE_SIZE={size}.") endif(NOT DEFINED MAX_COALESCE_SIZE) set(COALESCING_FIXED ON) elseif(WITH_COALESCING STREQUAL "variable") if(NOT DEFINED MAX_COALESCE_SIZE) message(FATAL_ERROR "You have to set MAX_COALESCE_SIZE by using -DMAX_COALESCE_SIZE={size}.") endif(NOT DEFINED MAX_COALESCE_SIZE) set(WITH_KNOBS ON) if (MULTIPLE_HEAPS) # Coalescing on multiple heaps requires heap ownership information per # block set(WITH_OWNERSHIP ON) endif (MULTIPLE_HEAPS) set(COALESCING_VARIABLE ON) endif(WITH_COALESCING STREQUAL "fixed") if(WITH_SPLITTING STREQUAL "fixed") if(NOT DEFINED MIN_SPLITTING_SIZE) message(FATAL_ERROR "You have to set MIN_SPLITTING_SIZE by using -DMIN_SPLITTING_SIZE={size}.") endif(NOT DEFINED MIN_SPLITTING_SIZE) set(SPLITTING_FIXED ON) elseif(WITH_SPLITTING STREQUAL "variable") if(NOT DEFINED MIN_SPLITTING_SIZE) message(FATAL_ERROR "You have to set MIN_SPLITTING_SIZE by using -DMIN_SPLITTING_SIZE={size}.") endif(NOT DEFINED MIN_SPLITTING_SIZE) set(WITH_KNOBS ON) set(SPLITTING_VARIABLE ON) endif(WITH_SPLITTING STREQUAL "fixed")