CMAKE_MINIMUM_REQUIRED(VERSION 3.18) PROJECT(ARTIS_TEST CXX) ENABLE_TESTING() SET(ARTIS_TEST_MAJOR 0) SET(ARTIS_TEST_MINOR 1) SET(ARTIS_TEST_PATCH 0) SET(ARTIS_TEST_EXTRA "-dev") SET(ARTIS_TEST_VERSION "${ARTIS_TEST_MAJOR}.${ARTIS_TEST_MINOR}.${ARTIS_TEST_PATCH}") SET(ARTIS_TEST_VERSION_SHORT "${ARTIS_TEST_MAJOR}.${ARTIS_TEST_MINOR}") SET(ARTIS_TEST_NAME "artis-test") SET(ARTIS_TEST_NAME_VERSION "${ARTIS_TEST_NAME}-${ARTIS_TEST_VERSION}") SET(ARTIS_TEST_LOCALE_NAME "${ARTIS_TEST_NAME}-${ARTIS_TEST_MAJOR}-${ARTIS_TEST_MINOR}") IF ("${ARTIS_TEST_EXTRA}" STREQUAL "") SET(ARTIS_TEST_COMPLETE "${ARTIS_TEST_MAJOR}.${ARTIS_TEST_MINOR}.${ARTIS_TEST_PATCH}") ELSE ("${ARTIS_TEST_EXTRA}" STREQUAL "") SET(ARTIS_TEST_COMPLETE "${ARTIS_TEST_MAJOR}.${ARTIS_TEST_MINOR}.${ARTIS_TEST_PATCH}-${ARTIS_TEST_EXTRA}") ENDIF ("${ARTIS_TEST_EXTRA}" STREQUAL "") SET(ARTIS_TEST_NAME_COMPLETE "${ARTIS_TEST_NAME}-${ARTIS_TEST_COMPLETE}") # # CPack configuration # INCLUDE(CMakeCPack.cmake) # # Debug mode # IF (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--no-as-needed -Wall -Wextra -std=c++17") IF (UNIX) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic") ENDIF (UNIX) ENDIF () if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") add_compile_options(-fprofile-instr-generate -fcoverage-mapping) add_link_options(-fprofile-instr-generate) #Uncomment in case of linker errors #link_libraries(clang_rt.profile-x86_64) elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") add_compile_options(--coverage) #Uncomment in case of linker errors link_libraries(gcov) endif () if (CMAKE_BUILD_TYPE STREQUAL "") SET(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "Choose the type of build" FORCE) endif () # # Thread # message(STATUS "checking for a (p)thread library") find_package(Threads REQUIRED) if (NOT Threads_FOUND) message(ERROR " failed to found a (p)thread support.") else () message(STATUS " threads support enabled (${CMAKE_THREAD_LIBS_INIT})") endif () # # Modules # INCLUDE(CheckIncludeFileCXX) INCLUDE(CheckIncludeFile) INCLUDE(CheckLibraryExists) INCLUDE(CMakeDetermineCCompiler) # # Check libraries with pkgconfig # FIND_PACKAGE(PkgConfig REQUIRED) PKG_CHECK_MODULES(ARTIS_STAR REQUIRED artis-star-1.0) PKG_CHECK_MODULES(ARTIS_ADDONS REQUIRED artis-addons-1.0) # # Boost libraries. # set( Boost_USE_STATIC_LIBS OFF ) set( Boost_USE_MULTITHREADED ON ) set( Boost_USE_STATIC_RUNTIME OFF ) include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_BINARY_DIR}) find_package(MPI REQUIRED) if (NOT MPI_CXX_FOUND) message(ERROR " failed to found a C++ compiler with MPI support.") else () message(STATUS " MPI support enabled") include_directories(${MPI_CXX_INCLUDE_PATH}) endif () find_package( Boost 1.72.0 COMPONENTS mpi serialization system thread timer ) # # Generate the config.h # CHECK_INCLUDE_FILE_CXX(cxxabi.h ARTIS_HAVE_GCC_ABI_DEMANGLE) CHECK_INCLUDE_FILE_CXX(execinfo.h ARTIS_HAVE_EXECINFO) CHECK_INCLUDE_FILE_CXX(signal.h ARTIS_HAVE_SIGNAL) # # Browse the src subdirectory # ADD_SUBDIRECTORY(src) # # Status # MESSAGE(STATUS "- - - -") MESSAGE(STATUS "${ARTIS_TEST_NAME_COMPLETE} configured successfully") MESSAGE(STATUS "Using ${CMAKE_INSTALL_PREFIX} for installation") MESSAGE(STATUS "Build type ${CMAKE_BUILD_TYPE}") IF (ARTIS_HAVE_GCC_ABI_DEMANGLE) MESSAGE(STATUS "Build with GCC ABI Demangle...: yes") ENDIF (ARTIS_HAVE_GCC_ABI_DEMANGLE) IF (ARTIS_HAVE_EXECINFO) MESSAGE(STATUS "Build with execinfo.h.........: yes") ENDIF (ARTIS_HAVE_EXECINFO) IF (Boost_FOUND) MESSAGE(STATUS "Build with boost..............: yes") ENDIF (Boost_FOUND) MESSAGE(STATUS "- - - -")