DefineOptions.cmake 5.1 KB

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