# CMakeLists.txt for DockEM

# Test cmake / make install command:
# cmake -H. -Bbuild
# make -C build && make install -C build
# -H = source directory, -B = build directory

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
enable_language(Fortran)
project(ccpem)

# Set all variables needed through whole file
# Add static flag to all.  Exception on Mac systems as statically linked libs are not supported by OS X
# See:
#    https://developer.apple.com/library/mac/qa/qa1118/_index.html
# For testing set shared to true
# set(BUILD_SHARED "${BUILD_SHARED}")
set(BUILD_SHARED TRUE)

if(BUILD_SHARED)
    set(LIBRARY_TYPE SHARED)
else()
    set(LIBRARY_TYPE STATIC)
endif()

if (CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
 # gfortran
 set (CMAKE_Fortran_FLAGS "-w  -ffixed-line-length-132")
elseif (CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
 # ifort untested)
 set (CMAKE_Fortran_FLAGS "-extend-source 132")
else ()
 set (CMAKE_Fortran_FLAGS "-O0")
endif ()

set(CMAKE_Fortran_MODULE_DIRECTORY ${BUILD_BINARY_DIR}/src/ccpem_progs/dock_em_2/modules)

# Set vars to help with cross-compilation - to make all libraries static
# add_library to create shared libraries if on (unless library explicitly added as static)
if(NOT BUILD_SHARED)
  set(BUILD_SHARED_LIBS ON)
  set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES} .a)
endif()

# Build DockEM2
message("Configuring DockEM programs")
add_library(mrc3dfourier STATIC MRC3DFOURIER.for)
install(TARGETS mrc3dfourier DESTINATION lib)
add_library(dockemlibv2 STATIC DockEMlibV2.03.f90)
install(TARGETS dockemlibv2 DESTINATION lib)

set(dock_em_2_progs DockEM2-LocalSearchV2
                    DockEM2XpeaksV2
                    DockXsolnV2
                    MakedensityV2
                    MapfilterDKM2
                    MaskConvoluteDKM2
                    DockEM2-LocalSearchV2-ROIcrop
                    DockEM2-LocalSearchV2_pll_merge
                    DockEM2-LocalSearchV2_pll
                    )

foreach(_prog ${dock_em_2_progs})
    message(STATUS "Configuring ${_prog}")
    add_executable(${_prog} ${_prog}.f90)
    target_link_libraries(${_prog} imlib2010
                                   misclib
                                   ifftlib
                                   genlib
                                   mrc3dfourier
                                   dockemlibv2
                                   )
    install(TARGETS ${_prog} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin)
endforeach()

message("Finished configuring DockEM2")
