CMakeLists.txt 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
  2. PROJECT(ARTIS_TEST CXX)
  3. ENABLE_TESTING()
  4. SET(ARTIS_TEST_MAJOR 0)
  5. SET(ARTIS_TEST_MINOR 1)
  6. SET(ARTIS_TEST_PATCH 0)
  7. SET(ARTIS_TEST_EXTRA "-dev")
  8. SET(ARTIS_TEST_VERSION "${ARTIS_TEST_MAJOR}.${ARTIS_TEST_MINOR}.${ARTIS_TEST_PATCH}")
  9. SET(ARTIS_TEST_VERSION_SHORT "${ARTIS_TEST_MAJOR}.${ARTIS_TEST_MINOR}")
  10. SET(ARTIS_TEST_NAME "artis-test")
  11. SET(ARTIS_TEST_NAME_VERSION "${ARTIS_TEST_NAME}-${ARTIS_TEST_VERSION}")
  12. SET(ARTIS_TEST_LOCALE_NAME "${ARTIS_TEST_NAME}-${ARTIS_TEST_MAJOR}-${ARTIS_TEST_MINOR}")
  13. IF ("${ARTIS_TEST_EXTRA}" STREQUAL "")
  14. SET(ARTIS_TEST_COMPLETE "${ARTIS_TEST_MAJOR}.${ARTIS_TEST_MINOR}.${ARTIS_TEST_PATCH}")
  15. ELSE ("${ARTIS_TEST_EXTRA}" STREQUAL "")
  16. SET(ARTIS_TEST_COMPLETE "${ARTIS_TEST_MAJOR}.${ARTIS_TEST_MINOR}.${ARTIS_TEST_PATCH}-${ARTIS_TEST_EXTRA}")
  17. ENDIF ("${ARTIS_TEST_EXTRA}" STREQUAL "")
  18. SET(ARTIS_TEST_NAME_COMPLETE "${ARTIS_TEST_NAME}-${ARTIS_TEST_COMPLETE}")
  19. #
  20. # CPack configuration
  21. #
  22. INCLUDE(CMakeCPack.cmake)
  23. #
  24. # Debug mode
  25. #
  26. IF (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR
  27. ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
  28. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra")
  29. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-as-needed -Wall -Wextra -std=c++11")
  30. IF (UNIX)
  31. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic")
  32. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
  33. ENDIF (UNIX)
  34. ENDIF ()
  35. if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
  36. add_compile_options(-fprofile-instr-generate -fcoverage-mapping)
  37. add_link_options(-fprofile-instr-generate)
  38. #Uncomment in case of linker errors
  39. #link_libraries(clang_rt.profile-x86_64)
  40. elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
  41. add_compile_options(--coverage)
  42. #Uncomment in case of linker errors
  43. link_libraries(gcov)
  44. endif ()
  45. if (CMAKE_BUILD_TYPE STREQUAL "")
  46. SET(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build" FORCE)
  47. endif ()
  48. #
  49. # Thread
  50. #
  51. message(STATUS "checking for a (p)thread library")
  52. find_package(Threads REQUIRED)
  53. if (NOT Threads_FOUND)
  54. message(ERROR " failed to found a (p)thread support.")
  55. else ()
  56. message(STATUS " threads support enabled (${CMAKE_THREAD_LIBS_INIT})")
  57. endif ()
  58. #
  59. # Modules
  60. #
  61. INCLUDE(CheckIncludeFileCXX)
  62. INCLUDE(CheckIncludeFile)
  63. INCLUDE(CheckLibraryExists)
  64. INCLUDE(CMakeDetermineCCompiler)
  65. #
  66. # Check libraries with pkgconfig
  67. #
  68. FIND_PACKAGE(PkgConfig REQUIRED)
  69. PKG_CHECK_MODULES(ARTIS REQUIRED artis-star-1.0)
  70. PKG_CHECK_MODULES(ARTIS_ADDONS REQUIRED artis-addons-1.0)
  71. #
  72. # Test the libboost header and libboost-text library.
  73. #
  74. OPTION(WITH_TEST "use the libboost test unit library [default: on]" ON)
  75. SET(Boost_USE_MULTITHREADED ON)
  76. SET(Boost_USE_STATIC_LIBS OFF)
  77. SET(Boost_NO_SYSTEM_PATHS OFF)
  78. SET(Boost_USE_STATIC_RUNTIME ON)
  79. IF (WIN32)
  80. SET(Boost_THREADAPI "win32")
  81. ENDIF (WIN32)
  82. include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR})
  83. find_package(MPI REQUIRED)
  84. if (NOT MPI_CXX_FOUND)
  85. message(ERROR " failed to found a C++ compiler with MPI support.")
  86. else ()
  87. message(STATUS " MPI support enabled")
  88. include_directories(${MPI_CXX_INCLUDE_PATH})
  89. endif ()
  90. message(STATUS "checking for Boost headers and libraries")
  91. find_package(Boost 1.55 REQUIRED COMPONENTS graph mpi timer serialization
  92. system)
  93. if (NOT Boost_FOUND)
  94. MESSAGE(FATAL_ERROR "The boost graph library is required")
  95. else ()
  96. message(STATUS " Boost found")
  97. include_directories(${Boost_INCLUDE_DIRS})
  98. link_directories(${Boost_LIBRARY_DIRS})
  99. endif ()
  100. #
  101. # Generate the config.h
  102. #
  103. CHECK_INCLUDE_FILE_CXX(cxxabi.h ARTIS_HAVE_GCC_ABI_DEMANGLE)
  104. CHECK_INCLUDE_FILE_CXX(execinfo.h ARTIS_HAVE_EXECINFO)
  105. CHECK_INCLUDE_FILE_CXX(signal.h ARTIS_HAVE_SIGNAL)
  106. #
  107. # Browse the src subdirectory
  108. #
  109. ADD_SUBDIRECTORY(src)
  110. #
  111. # Status
  112. #
  113. MESSAGE(STATUS "- - - -")
  114. MESSAGE(STATUS "${ARTIS_TEST_NAME_COMPLETE} configured successfully")
  115. MESSAGE(STATUS "Using ${CMAKE_INSTALL_PREFIX} for installation")
  116. MESSAGE(STATUS "Build type ${CMAKE_BUILD_TYPE}")
  117. IF (ARTIS_HAVE_GCC_ABI_DEMANGLE)
  118. MESSAGE(STATUS "Build with GCC ABI Demangle...: yes")
  119. ENDIF (ARTIS_HAVE_GCC_ABI_DEMANGLE)
  120. IF (ARTIS_HAVE_EXECINFO)
  121. MESSAGE(STATUS "Build with execinfo.h.........: yes")
  122. ENDIF (ARTIS_HAVE_EXECINFO)
  123. IF (Boost_FOUND)
  124. MESSAGE(STATUS "Build with boost..............: yes")
  125. ENDIF (Boost_FOUND)
  126. MESSAGE(STATUS "- - - -")