CMakeLists.txt 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. project (dmmlib C)
  2. cmake_minimum_required (VERSION 2.6)
  3. set(APPLICATION_NAME ${PROJECT_NAME})
  4. set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules)
  5. include(DefineInstallationPaths)
  6. include(DefineOptions.cmake)
  7. include(MacroEnsureOutOfSourceBuild)
  8. macro_ensure_out_of_source_build("${PROJECT_NAME} requires an out of source build. Please create a separate build directory and run 'cmake /path/to/${PROJECT_NAME} [options]' there.")
  9. if(CMAKE_COMPILER_IS_GNUCC AND LINUXTEST)
  10. add_definitions(-std=c99)
  11. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wconversion -Wstrict-prototypes")
  12. endif(CMAKE_COMPILER_IS_GNUCC AND LINUXTEST)
  13. configure_file (
  14. "${PROJECT_SOURCE_DIR}/dmm_config.h.in"
  15. "${PROJECT_BINARY_DIR}/dmm_config.h"
  16. )
  17. include_directories("${PROJECT_BINARY_DIR}")
  18. add_subdirectory(include)
  19. add_subdirectory(src)
  20. if (WITH_EXAMPLES)
  21. add_subdirectory(examples)
  22. endif (WITH_EXAMPLES)
  23. if (WITH_DOC)
  24. add_subdirectory(doc)
  25. endif (WITH_DOC)
  26. message(STATUS "********************************************")
  27. message(STATUS "********** ${PROJECT_NAME} build options : **********")
  28. message(STATUS "OS call for memory requests: " ${WITH_SYSTEM_CALLS})
  29. if(NOT WITH_SYSTEM_CALLS STREQUAL "none")
  30. message(STATUS "Requesting blocks multiple of: " ${SYS_ALLOC_SIZE} " bytes")
  31. endif(NOT WITH_SYSTEM_CALLS STREQUAL "none")
  32. message(STATUS "POSIX locking mechanisms: " ${HAVE_LOCKS})
  33. message(STATUS "Raw blocks type: " ${RAW_BLOCKS_TYPE})
  34. if(RAW_BLOCKS_TYPE STREQUAL "freelist")
  35. if(BLOCKS_ORGANIZATION STREQUAL "dll")
  36. message(STATUS "Block organization: Doubly-Linked Lists")
  37. else(BLOCKS_ORGANIZATION STREQUAL "dll")
  38. message(STATUS "Block organization: Singly-Linked Lists")
  39. endif(BLOCKS_ORGANIZATION STREQUAL "dll")
  40. if(SORT_POLICY STREQUAL "lifo")
  41. message(STATUS "Block sorting policy: LIFO-ordered")
  42. elseif(SORT_POLICY STREQUAL "fifo")
  43. message(STATUS "Block sorting policy: FIFO-ordered")
  44. elseif(SORT_POLICY STREQUAL "size")
  45. message(STATUS "Block sorting policy: Size-ordered")
  46. elseif(SORT_POLICY STREQUAL "address")
  47. message(STATUS "Block sorting policy: Address-ordered")
  48. endif(SORT_POLICY STREQUAL "lifo")
  49. message(STATUS "Search policy: " ${SEARCH_POLICY})
  50. if(ALLOC_VAR_FIT OR HEAP_VAR_FIT)
  51. message(STATUS "Initial search policy: " ${INITIAL_SEARCH_POLICY})
  52. endif(ALLOC_VAR_FIT OR HEAP_VAR_FIT)
  53. if(GOOD_FIT)
  54. message(STATUS "Acceptable fit percentage: " ${FIT_PERCENTAGE})
  55. endif(GOOD_FIT)
  56. message(STATUS "Coalescing: " ${WITH_COALESCING})
  57. if(MAX_COALESCE_SIZE)
  58. if(WITH_COALESCING STREQUAL "fixed")
  59. message(STATUS " with max. coalescing size: " ${MAX_COALESCE_SIZE} " bytes")
  60. elseif(WITH_COALESCING STREQUAL "variable")
  61. message(STATUS " with initial max. coalescing size: " ${MAX_COALESCE_SIZE}
  62. " bytes")
  63. endif(WITH_COALESCING STREQUAL "fixed")
  64. endif(MAX_COALESCE_SIZE)
  65. message(STATUS "Splitting: " ${WITH_SPLITTING})
  66. if(MIN_SPLITTING_SIZE)
  67. if(WITH_SPLITTING STREQUAL "fixed")
  68. message(STATUS " with min. spliting size: " ${MIN_SPLITTING_SIZE} " bytes")
  69. elseif(WITH_SPLITTING STREQUAL "variable")
  70. message(STATUS " with initial min. spliting size: "
  71. ${MIN_SPLITTING_SIZE} " bytes")
  72. endif(WITH_SPLITTING STREQUAL "fixed")
  73. if(COALESCE_AFTER_SPLIT)
  74. message(STATUS "Coalesce after split: " ${COALESCE_AFTER_SPLIT})
  75. endif(COALESCE_AFTER_SPLIT)
  76. endif(MIN_SPLITTING_SIZE)
  77. endif(RAW_BLOCKS_TYPE STREQUAL "freelist")
  78. message(STATUS "Have statistics: " ${STATS})
  79. message(STATUS "Requested Size per Block: " ${REQUEST_SIZE_INFO})
  80. message(STATUS "Support for debug functions: " ${WITH_DEBUG})
  81. message(STATUS "Adaptivity: " ${WITH_ADAPTIVITY})
  82. message(STATUS "Support for realloc(): " ${WITH_REALLOC})
  83. message(STATUS "********************************************")