DefineOptions.cmake 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. set(WITH_SYSTEM_CALLS "none" CACHE STRING "Choose what system calls can be used, options are: none, sbrk, mmap")
  2. set(RAW_BLOCKS_TYPE "freelist" CACHE STRING "Choose what raw blocks can be used, options are: freelist, bitmap")
  3. option(HAVE_LOCKS "Build with POSIX locking mechanisms" ON)
  4. option(WITH_REALLOC "Build with realloc" OFF)
  5. set(TRACE_LEVEL 1 CACHE INTEGER "Choose the trace level, options are: 0, 1, 2 and 3")
  6. set(STATS "global" CACHE STRING "Choose if the memory allocator keeps internally statistics per raw block or globally, options are: none, rawblock, global")
  7. option(WITH_DEBUG "Build with debugging functions" ON)
  8. option(WITH_EXAMPLES "Build with examples" OFF)
  9. option(WITH_ADAPTIVITY "Build with adaptivity" OFF)
  10. option(WITH_STATIC_LIB "Build a static library" OFF)
  11. option(WITH_SHARED_LIB "Build a shared library" OFF)
  12. option(WITH_DOC "Build with documentation" OFF)
  13. option(FREELIST_COALESCE_AFTER_SPLIT "Try to coalesce blocks after split" OFF)
  14. option(SORT_POLICY "Choose the block sorting policy, options are: lifo, fifo, size, address")
  15. set(REQUEST_SIZE_INFO ON)
  16. set(WITH_SYSTEM_CALLS "none")
  17. set(SEARCH_POLICY "best")
  18. set(FIT_PERCENTAGE 0.8)
  19. set(INITIAL_SEARCH_POLICY "best")
  20. set(WITH_COALESCING "never" "Build with coalescing support")
  21. set(WITH_SPLITTING "never" "Build with splitting support")
  22. set(BLOCKS_ORGANIZATION "sll" "Blocks organized in singly linked lists")
  23. option(WITH_OWNERSHIP "Build with ownership information in blocks" OFF)
  24. option(P2012 "Build for P2012 runtime" OFF)
  25. option(LEON3 "Build for Leon3" OFF)
  26. option(LINUXTEST "Build a case for Linux" ON)
  27. if (P2012)
  28. set(WITH_SINGLE_ALLOCATOR OFF)
  29. set(HAVE_LOCKS OFF)
  30. set(WITH_STATIC_LIB ON)
  31. set(NUM_POOLS 1)
  32. set(LINUXTEST OFF)
  33. set(WITH_COALESCING "never")
  34. set(WITH_SPLITTING "never")
  35. set(BLOCKS_ORGANIZATION "sll")
  36. endif (P2012)
  37. if (LEON3)
  38. set(WITH_SINGLE_ALLOCATOR OFF)
  39. set(HAVE_LOCKS OFF)
  40. set(WITH_STATIC_LIB ON)
  41. set(NUM_POOLS 1)
  42. set(LINUXTEST OFF)
  43. set(COUNT_HOPS ON)
  44. set(WITH_COALESCING "never")
  45. set(WITH_SPLITTING "never")
  46. set(BLOCKS_ORGANIZATION "sll")
  47. endif (LEON3)
  48. if (LINUXTEST)
  49. set(WITH_SYSTEM_CALLS "mmap")
  50. set(SYS_ALLOC_SIZE 4194304)
  51. set(SORT_POLICY "lifo")
  52. set(SEARCH_POLICY "first")
  53. set(FIT_PERCENTAGE 0.6f)
  54. set(HAVE_LOCKS ON)
  55. set(WITH_EXAMPLES ON)
  56. set(WITH_COALESCING "fixed")
  57. set(MAX_COALESCE_SIZE 60000)
  58. set(WITH_SPLITTING "fixed")
  59. set(MIN_SPLITTING_SIZE 300)
  60. set(COALESCE_AFTER_SPLIT ON)
  61. set(WITH_SHARED_LIB ON)
  62. set(WITH_STATIC_LIB ON)
  63. set(WITH_REALLOC ON)
  64. set(WITH_DOC ON)
  65. endif (LINUXTEST)
  66. if(RAW_BLOCKS_TYPE STREQUAL "freelist")
  67. set(FL_RB_ONLY ON)
  68. elseif(RAW_BLOCKS_TYPE STREQUAL "bitmap")
  69. set(BITMAP_RB_ONLY ON)
  70. endif(RAW_BLOCKS_TYPE STREQUAL "freelist")
  71. if(STATS STREQUAL "rawblock")
  72. set(WITH_RAWBLOCK_STATS ON)
  73. elseif(STATS STREQUAL "global")
  74. set(WITH_ALLOCATOR_STATS ON)
  75. endif(STATS STREQUAL "rawblock")
  76. if(COALESCE_AFTER_SPLIT)
  77. if(WITH_SPLITTING STREQUAL "never")
  78. message(FATAL_ERROR "You have to set WITH_SPLITTING to fixed or variable if you want to coalesce after split.")
  79. endif(WITH_SPLITTING STREQUAL "never")
  80. if(WITH_COALESCING STREQUAL "never")
  81. message(FATAL_ERROR "You have to set WITH_COALESCING to fixed or variable if you want to coalesce after split.")
  82. endif(WITH_COALESCING STREQUAL "never")
  83. endif(COALESCE_AFTER_SPLIT)
  84. if(BLOCKS_ORGANIZATION STREQUAL "dll")
  85. set(BLOCKS_IN_DLL ON)
  86. else(BLOCKS_ORGANIZATION STREQUAL "dll")
  87. set(BLOCKS_IN_SLL ON)
  88. endif(BLOCKS_ORGANIZATION STREQUAL "dll")
  89. if(SORT_POLICY STREQUAL "lifo")
  90. set(LIFO_SORT_POLICY ON)
  91. elseif(SORT_POLICY STREQUAL "fifo")
  92. set(FIFO_SORT_POLICY ON)
  93. elseif(SORT_POLICY STREQUAL "size")
  94. set(SIZE_SORT_POLICY ON)
  95. elseif(SORT_POLICY STREQUAL "address")
  96. set(ADDRESS_SORT_POLICY ON)
  97. endif(SORT_POLICY STREQUAL "lifo")
  98. if(SEARCH_POLICY STREQUAL "best")
  99. set(BEST_FIT ON)
  100. elseif(SEARCH_POLICY STREQUAL "good")
  101. set(GOOD_FIT ON)
  102. set(WITH_KNOBS ON)
  103. elseif(SEARCH_POLICY STREQUAL "exact")
  104. set(EXACT_FIT ON)
  105. elseif(SEARCH_POLICY STREQUAL "first")
  106. set(FIRST_FIT ON)
  107. elseif(SEARCH_POLICY STREQUAL "allocvar")
  108. set(ALLOC_VAR_FIT ON)
  109. elseif(SEARCH_POLICY STREQUAL "heapvar")
  110. set(HEAP_VAR_FIT ON)
  111. endif(SEARCH_POLICY STREQUAL "best")
  112. if(WITH_COALESCING STREQUAL "fixed")
  113. if(NOT DEFINED MAX_COALESCE_SIZE)
  114. message(FATAL_ERROR "You have to set MAX_COALESCE_SIZE by using -DMAX_COALESCE_SIZE={size}.")
  115. endif(NOT DEFINED MAX_COALESCE_SIZE)
  116. set(COALESCING_FIXED ON)
  117. elseif(WITH_COALESCING STREQUAL "variable")
  118. if(NOT DEFINED MAX_COALESCE_SIZE)
  119. message(FATAL_ERROR "You have to set MAX_COALESCE_SIZE by using -DMAX_COALESCE_SIZE={size}.")
  120. endif(NOT DEFINED MAX_COALESCE_SIZE)
  121. set(WITH_KNOBS ON)
  122. if (MULTIPLE_HEAPS)
  123. # Coalescing on multiple heaps requires heap ownership information per
  124. # block
  125. set(WITH_OWNERSHIP ON)
  126. endif (MULTIPLE_HEAPS)
  127. set(COALESCING_VARIABLE ON)
  128. endif(WITH_COALESCING STREQUAL "fixed")
  129. if(WITH_SPLITTING STREQUAL "fixed")
  130. if(NOT DEFINED MIN_SPLITTING_SIZE)
  131. message(FATAL_ERROR "You have to set MIN_SPLITTING_SIZE by using -DMIN_SPLITTING_SIZE={size}.")
  132. endif(NOT DEFINED MIN_SPLITTING_SIZE)
  133. set(SPLITTING_FIXED ON)
  134. elseif(WITH_SPLITTING STREQUAL "variable")
  135. if(NOT DEFINED MIN_SPLITTING_SIZE)
  136. message(FATAL_ERROR "You have to set MIN_SPLITTING_SIZE by using -DMIN_SPLITTING_SIZE={size}.")
  137. endif(NOT DEFINED MIN_SPLITTING_SIZE)
  138. set(WITH_KNOBS ON)
  139. set(SPLITTING_VARIABLE ON)
  140. endif(WITH_SPLITTING STREQUAL "fixed")