cmake_minimum_required(VERSION 2.8) project(BlackDynamite) set(BLACKDYNAMITE_MAJOR_VERSION 1) set(BLACKDYNAMITE_MINOR_VERSION 0) set(BLACKDYNAMITE_BUILD_VERSION 0) set(BLACKDYNAMITE_VERSION "${BLACKDYNAMITE_MAJOR_VERSION}.${BLACKDYNAMITE_MINOR_VERSION}.${BLACKDYNAMITE_BUILD_VERSION}" ) include(CheckCXXCompilerFlag) check_cxx_compiler_flag (-std=c++0x HAVE_STD_CPP0X) if(HAVE_STD_CPP0X) add_definitions(-std=c++0x) else() check_cxx_compiler_flag (-std=c++11 HAVE_STD_CPP11) if(HAVE_STD_CPP11) add_definitions(-std=c++11) else() message(ABORT "You must use a compiler that support C++ 11") endif() endif() #=============================================================================== # Project includes #=============================================================================== set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries.") add_definitions(-DBLACKDYNAMITE_NDEBUG) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") find_package(PQXX REQUIRED) if(PQXX_FOUND) set(BLACKDYNAMITE_EXTERNAL_INCLUDE_DIR ${PQXX_INCLUDE_DIR}) set(BLACKDYNAMITE_EXTERNAL_LIBRARIES ${PQXX_LIBRARIES}) endif() set(_tmp ${BLACKDYNAMITE_EXTERNAL_INCLUDE_DIR}) set(BLACKDYNAMITE_EXTERNAL_INCLUDE_DIR "${_tmp}" CACHE INTERNAL "") set(BLACKDYNAMITE_SOURCES src/run_manager.cc src/quantities_manager.cc src/state_manager.cc ) set(BLACKDYNAMITE_COMMON_HEADERS src/blackdynamite.hh ) #=============================================================================== # Library definition #=============================================================================== include_directories(${BLACKDYNAMITE_EXTERNAL_INCLUDE_DIR}) add_library(blackdynamite ${BLACKDYNAMITE_SOURCES}) target_link_libraries(blackdynamite ${BLACKDYNAMITE_EXTERNAL_LIBRARIES}) set_target_properties(blackdynamite PROPERTIES PUBLIC_HEADER "${BLACKDYNAMITE_COMMON_HEADERS}" VERSION "${BLACKDYNAMITE_VERSION}" SOVERSION "${BLACKDYNAMITE_MAJOR_VERSION}.${BLACKDYNAMITE_MINOR_VERSION}" ) #=============================================================================== # Install files #=============================================================================== export(TARGETS blackdynamite FILE "${PROJECT_BINARY_DIR}/BlackDynamiteLibraryDepends.cmake") export(PACKAGE BlackDynamite) # Tweak for when BlackDynamite is a subproject if(NOT BLACKDYNAMITE_TARGETS_EXPORT) set(BLACKDYNAMITE_TARGETS_EXPORT BlackDynamiteLibraryDepends) endif() install(TARGETS blackdynamite EXPORT ${BLACKDYNAMITE_TARGETS_EXPORT} ARCHIVE DESTINATION lib COMPONENT lib LIBRARY DESTINATION lib COMPONENT lib PUBLIC_HEADER DESTINATION include/blackdynamite COMPONENT dev ) if("${BLACKDYNAMITE_TARGETS_EXPORT}" STREQUAL "BlackDynamiteLibraryDepends") install(EXPORT BlackDynamiteLibraryDepends DESTINATION lib/blackdynamite COMPONENT dev) endif() configure_file(BlackDynamiteConfig.cmake.in "${PROJECT_BINARY_DIR}/BlackDynamiteConfig.cmake" @ONLY) #=============================================================================== # Python part #=============================================================================== #file(COPY python/BlackDynamite DESTINATION python) # find_program(PYTHON python) # # if (PYTHON) # set(__SETUP_PY_CMAKE "${PROJECT_SOURCE_DIR}/python/setup.py.cmake") # set(__SETUP_PY "${CMAKE_CURRENT_BINARY_DIR}/setup.py") # set(__DEPS "${PROJECT_SOURCE_DIR}/python/BlackDynamite/__init__.py") # set(__OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/build/timestamp") # # configure_file(${__SETUP_PY_CMAKE} ${__SETUP_PY}) # # add_custom_command(OUTPUT ${__OUTPUT} # COMMAND ${PYTHON} ${__SETUP_PY} build # COMMAND ${CMAKE_COMMAND} -E touch ${__OUTPUT} # DEPENDS ${__DEPS}) # # add_custom_target(target ALL DEPENDS ${__OUTPUT}) # # install(CODE "execute_process(COMMAND ${PYTHON} ${__SETUP_PY} install -f --prefix=${CMAKE_INSTALL_PREFIX})") # endif() file(GLOB _scripts "bin/*.py") install(PROGRAMS ${_scripts} DESTINATION bin) install(FILES ${PROJECT_BINARY_DIR}/BlackDynamiteConfig.cmake DESTINATION lib/blackdynamite COMPONENT dev) install(PROGRAMS ${PROJECT_SOURCE_DIR}/bash_completion.sh DESTINATION share/BlackDynamite) #=============================================================================== # Tests #=============================================================================== option(BLACKDYNAMITE_TESTS "Activate the compilation of the tests" ON) if(BLACKDYNAMITE_TESTS) enable_testing() add_subdirectory(test) endif()