cmake_minimum_required(VERSION 2.8) project(crank2 C CXX Fortran) # Set build type (release by default) if (NOT CMAKE_BUILD_TYPE) set (CMAKE_BUILD_TYPE RELEASE CACHE STRING "Type of build (None, Debug or Release)." FORCE) endif () # Set installation prefix (source dir by default) if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set (CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}" CACHE PATH "Installation prefix path." FORCE) endif () find_package(OpenMP) if (OPENMP_FOUND) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}") endif() # External libraries if(UNIX) find_library(MATH_LIBRARY m) endif() find_package(LAPACK REQUIRED) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}") find_package(CCP4 REQUIRED mmdb2 ccp4c ccp4f clipper-core clipper-mmdb clipper-minimol clipper-ccp4 clipper-contrib) include_directories(${CCP4_INCLUDE_DIRS}) # Internal libraries set(LIBBP3_DIR lib/bp3) add_library(bp3lib STATIC ${LIBBP3_DIR}/crystal.C ${LIBBP3_DIR}/gauss.C ${LIBBP3_DIR}/input.C ${LIBBP3_DIR}/likelihood.C ${LIBBP3_DIR}/minimizer.C ${LIBBP3_DIR}/misc.C ${LIBBP3_DIR}/model.C ${LIBBP3_DIR}/pavol.C ${LIBBP3_DIR}/sfdata.C) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib/bp3) set(BP3_AND_DEPS bp3lib ${CLIPPER-MINIMOL_LIBRARY} ${CLIPPER-MMDB_LIBRARY} ${CLIPPER-CCP4_LIBRARY} ${CLIPPER-CONTRIB_LIBRARY} ${CLIPPER-CORE_LIBRARIES} ${CCP4C_LIBRARY} ${MMDB2_LIBRARY} ${LAPACK_LIBRARIES} ${MATH_LIBRARY}) # AFRO set(AFRO_DIR afro) add_executable(afro ${AFRO_DIR}/afromain.C ${AFRO_DIR}/afroinput.C ${AFRO_DIR}/afrolikelihood.C ${AFRO_DIR}/sad.C) target_link_libraries(afro ${BP3_AND_DEPS}) # BP3 set(BP3_DIR bp3) add_executable(bp3 ${BP3_DIR}/bp3input.C ${BP3_DIR}/bp3main.C ${BP3_DIR}/bp3likelihood.C ${BP3_DIR}/functions.C) target_link_libraries(bp3 ${BP3_AND_DEPS}) # CRUNCH2 set(CRUNCH2_DIR crunch2) set(CRUNCH2_SOURCES ${CRUNCH2_DIR}/autofour/autofour.f ${CRUNCH2_DIR}/deter/deter.f ${CRUNCH2_DIR}/eigdet/eigdet.f ${CRUNCH2_DIR}/misc/misc.f) add_executable(crunch2 ${CRUNCH2_DIR}/crunch2_program.f ${CRUNCH2_SOURCES}) add_executable(pmf ${CRUNCH2_DIR}/pmf_program.f) target_link_libraries(crunch2 ${CCP4F_LIBRARY} ${CCP4C_LIBRARY} ${LAPACK_LIBRARIES}) target_link_libraries(pmf ${CCP4F_LIBRARY} ${CCP4C_LIBRARY}) # GCX set(GCX_DIR gcx) add_executable(gcx ${GCX_DIR}/gcxinput.C ${GCX_DIR}/gcxlikelihood.C ${GCX_DIR}/gcxmain.C) target_link_libraries(gcx ${BP3_AND_DEPS}) # MULTICOMB set(MULTICOMB_DIR multicomb) add_executable(multicomb ${MULTICOMB_DIR}/multicombmain.C ${MULTICOMB_DIR}/multicombinput.C ${MULTICOMB_DIR}/multicomblikelihood.C ${MULTICOMB_DIR}/mlhl.C ${MULTICOMB_DIR}/sad.C) target_link_libraries(multicomb ${BP3_AND_DEPS}) # SOLOMON set(SOLOMON_DIR solomon) add_executable(solomon ${SOLOMON_DIR}/solomon.c ${SOLOMON_DIR}/cmap_calc.c ${SOLOMON_DIR}/cmap_io.c ${SOLOMON_DIR}/cmsk_io.c ${SOLOMON_DIR}/matrix.c) set_property(TARGET solomon APPEND PROPERTY COMPILE_DEFINITIONS "PROTOTYPE") target_link_libraries(solomon ${CCP4C_LIBRARY} ${MATH_LIBRARY}) # MAPRO add_executable(mapro mapro/mapro.cpp) target_link_libraries(mapro ${CLIPPER-CCP4_LIBRARY} ${CLIPPER-MMDB_LIBRARY} ${CLIPPER-CORE_LIBRARIES} ${CCP4C_LIBRARY} ${MMDB2_LIBRARY}) if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set_property(TARGET afro APPEND PROPERTY RUNTIME_OUTPUT_DIRECTORY "${AFRO_DIR}") set_property(TARGET bp3 APPEND PROPERTY RUNTIME_OUTPUT_DIRECTORY "${BP3_DIR}") set_property(TARGET crunch2 APPEND PROPERTY RUNTIME_OUTPUT_DIRECTORY "${CRUNCH2_DIR}") set_property(TARGET pmf APPEND PROPERTY RUNTIME_OUTPUT_DIRECTORY "${CRUNCH2_DIR}") set_property(TARGET gcx APPEND PROPERTY RUNTIME_OUTPUT_DIRECTORY "${GCX_DIR}") set_property(TARGET multicomb APPEND PROPERTY RUNTIME_OUTPUT_DIRECTORY "${MULTICOMB_DIR}") set_property(TARGET solomon APPEND PROPERTY RUNTIME_OUTPUT_DIRECTORY "${SOLOMON_DIR}") set_property(TARGET mapro APPEND PROPERTY RUNTIME_OUTPUT_DIRECTORY mapro) endif() # INSTALLATION install(TARGETS afro bp3 crunch2 pmf gcx multicomb solomon mapro DESTINATION bin)