CMAKE_MINIMUM_REQUIRED(VERSION 2.6) PROJECT(ARTIS_ADDONS CXX C) ENABLE_TESTING() SET(ARTIS_ADDONS_MAJOR 1) SET(ARTIS_ADDONS_MINOR 0) SET(ARTIS_ADDONS_PATCH 0) SET(ARTIS_ADDONS_EXTRA "-dev") SET(ARTIS_ADDONS_VERSION "${ARTIS_ADDONS_MAJOR}.${ARTIS_ADDONS_MINOR}.${ARTIS_ADDONS_PATCH}") SET(ARTIS_ADDONS_VERSION_SHORT "${ARTIS_ADDONS_MAJOR}.${ARTIS_ADDONS_MINOR}") SET(ARTIS_ADDONS_NAME "artis-addons") SET(ARTIS_ADDONS_NAME_VERSION "${ARTIS_ADDONS_NAME}-${ARTIS_ADDONS_VERSION}") SET(ARTIS_ADDONS_LOCALE_NAME "${ARTIS_ADDONS_NAME}-${ARTIS_ADDONS_MAJOR}-${ARTIS_ADDONS_MINOR}") IF ("${ARTIS_ADDONS_EXTRA}" STREQUAL "") SET(ARTIS_ADDONS_COMPLETE "${ARTIS_ADDONS_MAJOR}.${ARTIS_ADDONS_MINOR}.${ARTIS_ADDONS_PATCH}") ELSE ("${ARTIS_ADDONS_EXTRA}" STREQUAL "") SET(ARTIS_ADDONS_COMPLETE "${ARTIS_ADDONS_MAJOR}.${ARTIS_ADDONS_MINOR}.${ARTIS_ADDONS_PATCH}-${ARTIS_ADDONS_EXTRA}") ENDIF ("${ARTIS_ADDONS_EXTRA}" STREQUAL "") SET(ARTIS_ADDONS_NAME_COMPLETE "${ARTIS_ADDONS_NAME}-${ARTIS_ADDONS_COMPLETE}") # # Installation variables # SET(ARTIS_ADDONS_LIBRARY_DIRS "lib/artis-addons-${ARTIS_ADDONS_VERSION_SHORT}") SET(ARTIS_ADDONS_INCLUDE_DIRS "include/artis-addons-${ARTIS_ADDONS_VERSION_SHORT}/artis-addons") SET(ARTIS_ADDONS_INCLUDE_DIR "include/artis-addons-${ARTIS_ADDONS_VERSION_SHORT}") SET(ARTIS_ADDONS_MANPAGE_PATH "share/man/man1") SET(ARTIS_ADDONS_SHARE_DIRS "share/artis-addons-${ARTIS_ADDONS_VERSION_SHORT}") # # Append the library version information to the library target # properties. # SET (ARTIS_ADDONS_LIBRARY_PROPERTIES VERSION 0) # # 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++11") IF (UNIX) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic") ENDIF (UNIX) 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 REQUIRED artis-star-1.0) # # Test the libboost header and libboost-text library. # OPTION(WITH_TEST "use the libboost test unit library [default: on]" ON) SET(Boost_USE_MULTITHREADED ON) SET(Boost_USE_STATIC_LIBS OFF) SET(Boost_NO_SYSTEM_PATHS OFF) SET(Boost_USE_STATIC_RUNTIME ON) IF (WIN32) SET(Boost_THREADAPI "win32") ENDIF (WIN32) 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 () message(STATUS "checking for Boost headers and libraries") find_package(Boost 1.55 REQUIRED COMPONENTS graph mpi timer serialization system) if (NOT Boost_FOUND) MESSAGE(FATAL_ERROR "The boost graph library is required") else () message(STATUS " Boost found") include_directories(${Boost_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) endif () # # 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) # # Generate the artis.pc pkg-config file. # SET(ARTIS_ADDONS_PKGCONFIG_PREFIXPATH "${CMAKE_INSTALL_PREFIX}") SET(ARTIS_ADDONS_PKGCONFIG_BOOSTINCLUDE_DIRS "${Boost_INCLUDE_DIRS}") SET(ARTIS_ADDONS_PKGCONFIG_LIBDIR "lib") CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/src/artis-addons.pc.in ${ARTIS_ADDONS_BINARY_DIR}/artis-addons-${ARTIS_ADDONS_VERSION_SHORT}.pc @ONLY) INSTALL(FILES ${ARTIS_ADDONS_BINARY_DIR}/artis-addons-${ARTIS_ADDONS_VERSION_SHORT}.pc DESTINATION lib/pkgconfig) # # Browse the src subdirectory # ADD_SUBDIRECTORY(src) # # Status # MESSAGE(STATUS "- - - -") MESSAGE(STATUS "${ARTIS_ADDONS_NAME} 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 "- - - -")