DefineOptions.cmake 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. option(HAVE_LOCKS "Build with POSIX locking mechanisms" ON)
  2. option(WITH_REALLOC "Build with realloc" OFF)
  3. option(WITH_EXAMPLES "Build with examples" OFF)
  4. option(WITH_MEMORY_SPACE_AWARENESS "Build with memory space awareness" 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(WITH_KNOBS "Build with knobs support" OFF)
  8. option(WITH_ADAPTIVITY "Build with adaptivity" OFF)
  9. option(WITH_STATIC_LIB "Build a static library" OFF)
  10. option(WITH_SHARED_LIB "Build a shared library" OFF)
  11. option(WITH_DOC "Build with documentation" OFF)
  12. option(REPLACE_MALLOC "Replace function calls" OFF)
  13. set(NUM_HEAPS 1)
  14. if (NUM_HEAPS GREATER 1)
  15. set(MULTIPLE_HEAPS ON)
  16. endif (NUM_HEAPS GREATER 1)
  17. set(WITH_SYSTEM_CALLS "no" "Build with OS call support for more memory")
  18. set(WITH_COALESCING "never" "Build with coalescing support")
  19. set(WITH_SPLITTING "never" "Build with splitting support")
  20. set(BLOCKS_ORGANIZATION "sll" "Blocks organized in singly linked lists")
  21. option(WITH_OWNERSHIP "Build with ownership information in blocks" OFF)
  22. option(P2012 "Build for P2012 runtime" OFF)
  23. option(LEON3 "Build for Leon3" OFF)
  24. option(LINUXTEST "Build a case for Linux" ON)
  25. if (P2012)
  26. set(HAVE_LOCKS OFF)
  27. set(WITH_MEMORY_SPACE_AWARENESS ON)
  28. set(WITH_STATIC_LIB ON)
  29. set(NUM_HEAPS 1)
  30. set(LINUXTEST OFF)
  31. set(WITH_FIXED_LISTS OFF)
  32. set(WITH_COALESCING "never")
  33. set(WITH_SPLITTING "never")
  34. set(BLOCKS_ORGANIZATION "sll")
  35. endif (P2012)
  36. if (LEON3)
  37. set(HAVE_LOCKS OFF)
  38. set(WITH_MEMORY_SPACE_AWARENESS ON)
  39. set(WITH_STATIC_LIB ON)
  40. set(NUM_HEAPS 1)
  41. set(LINUXTEST OFF)
  42. set(WITH_FIXED_LISTS OFF)
  43. set(WITH_COALESCING "fixed")
  44. set(MAX_COALESCE_SIZE 60000)
  45. set(WITH_SPLITTING "never")
  46. set(BLOCKS_ORGANIZATION "sll")
  47. endif (LEON3)
  48. if (LINUXTEST)
  49. set(WITH_SYSTEM_CALLS "mmap")
  50. set(HAVE_LOCKS ON)
  51. set(WITH_EXAMPLES ON)
  52. set(WITH_COALESCING "variable")
  53. set(MAX_COALESCE_SIZE 60000)
  54. set(WITH_SPLITTING "variable")
  55. set(MIN_SPLITTING_SIZE 300)
  56. set(WITH_SHARED_LIB ON)
  57. set(WITH_STATIC_LIB ON)
  58. set(WITH_REALLOC ON)
  59. set(REPLACE_MALLOC ON)
  60. set(WITH_DOC ON)
  61. endif (LINUXTEST)
  62. if(BLOCKS_ORGANIZATION STREQUAL "dll")
  63. set(BLOCKS_IN_DLL ON)
  64. else(BLOCKS_ORGANIZATION STREQUAL "dll")
  65. set(BLOCKS_IN_SLL ON)
  66. endif(BLOCKS_ORGANIZATION STREQUAL "dll")
  67. if(WITH_SYSTEM_CALLS STREQUAL "mmap")
  68. set(WITH_MMAP ON)
  69. endif(WITH_SYSTEM_CALLS)
  70. if(WITH_COALESCING STREQUAL "fixed")
  71. if(NOT DEFINED MAX_COALESCE_SIZE)
  72. message(FATAL_ERROR "You have to set MAX_COALESCE_SIZE by using -DMAX_COALESCE_SIZE={size}.")
  73. endif(NOT DEFINED MAX_COALESCE_SIZE)
  74. if (MULTIPLE_HEAPS)
  75. # Coalescing on multiple heaps requires heap ownership information per
  76. # block
  77. set(WITH_OWNERSHIP ON)
  78. endif (MULTIPLE_HEAPS)
  79. set(COALESCING_FIXED ON)
  80. elseif(WITH_COALESCING STREQUAL "variable")
  81. if(NOT DEFINED MAX_COALESCE_SIZE)
  82. message(FATAL_ERROR "You have to set MAX_COALESCE_SIZE by using -DMAX_COALESCE_SIZE={size}.")
  83. endif(NOT DEFINED MAX_COALESCE_SIZE)
  84. set(WITH_KNOBS ON)
  85. if (MULTIPLE_HEAPS)
  86. # Coalescing on multiple heaps requires heap ownership information per
  87. # block
  88. set(WITH_OWNERSHIP ON)
  89. endif (MULTIPLE_HEAPS)
  90. set(COALESCING_VARIABLE ON)
  91. endif(WITH_COALESCING STREQUAL "fixed")
  92. if(WITH_SPLITTING STREQUAL "fixed")
  93. if(NOT DEFINED MIN_SPLITTING_SIZE)
  94. message(FATAL_ERROR "You have to set MIN_SPLITTING_SIZE by using -DMIN_SPLITTING_SIZE={size}.")
  95. endif(NOT DEFINED MIN_SPLITTING_SIZE)
  96. set(SPLITTING_FIXED ON)
  97. elseif(WITH_SPLITTING STREQUAL "variable")
  98. if(NOT DEFINED MIN_SPLITTING_SIZE)
  99. message(FATAL_ERROR "You have to set MIN_SPLITTING_SIZE by using -DMIN_SPLITTING_SIZE={size}.")
  100. endif(NOT DEFINED MIN_SPLITTING_SIZE)
  101. set(WITH_KNOBS ON)
  102. set(SPLITTING_VARIABLE ON)
  103. endif(WITH_SPLITTING STREQUAL "fixed")