# CMake project file for UNRES
#
cmake_minimum_required(VERSION 2.8)
-
+
project(unrespack Fortran C)
set(UNRES_MAJOR 3)
set(UNRES_MINOR 1)
set(UNRES_PATCH 0)
set(UNRES_VERSION ${SIMPLE_MAJOR}.${SIMPLE_MINOR}.${SIMPLE_PATCH})
+
+# Set makefile verbose on
+set( CMAKE_VERBOSE_MAKEFILE 1 )
-enable_language (Fortran)
+# MPI stuff
+if(MPIF_LOCAL_DIR)
+ find_library(MPIF_LIBRARY NAMES mpif77 NO_DEFAULT_PATH PATHS ${MPIF_LOCAL_DIR}/lib)
+ find_path( MPIF_INCLUDE_DIRECTORIES NAMES mpif.h NO_DEFAULT_PATH PATHS ${MPIF_LOCAL_DIR}/include )
+else(MPIF_LOCAL_DIR)
+ find_library(MPIF_LIBRARY NAMES mpif77 PATHS
+ /users/local/mpi64/mpich-1.2.7p1/lib
+ /usr/lib
+ /usr/local/lib
+ /usr/local/mpi/lib
+ )
+ find_path( MPIF_INCLUDE_DIRECTORIES NAMES mpif.h PATHS
+ /users/local/mpi64/mpich-1.2.7p1/include
+ /usr/include
+ /usr/local/include
+ /usr/include/mpi
+ /usr/local/mpi/include
+ )
+endif(MPIF_LOCAL_DIR)
+
+set( MPIF_LIBRARIES ${MPIF_LIBRARY})
+
+if ( MPIF_INCLUDE_DIRECTORIES AND MPIF_LIBRARIES )
+ set( MPIF_FOUND TRUE )
+ message("MPIF found")
+else ( MPIF_INCLUDE_DIRECTORIES AND MPIF_LIBRARIES )
+ set( MPIF_FOUND FALSE )
+ message("MPIF_ID: ${MPIF_INCLUDE_DIRECTORIES} MPIF_LIB: ${MPIF_LIBRARIES}")
+ message("MPIF not found")
+endif ( MPIF_INCLUDE_DIRECTORIES AND MPIF_LIBRARIES )
+# End OF MPI stuff
+
+
+if (MPIF_FOUND)
+ messege("MPI library "${MPIF_INCLUDE_DIRECTORIES} )
+endif(MPIF_FOUND)
+
+SET(CMAKE_Fortran_COMPILE_OBJECT "<CMAKE_Fortran_COMPILER> ${CMAKE_START_TEMP_FILE} <FLAGS> <DEFINES> -c <SOURCE> -o <OBJECT> ${CMAKE_END_TEMP_FILE}")
+set(CPPFLAGS "-DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANGO -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" )
+# Apply them to *.F sources
+add_definitions( ${CPPFLAGS} )
+
+
+enable_language (Fortran)
+
# make sure that the default is a RELEASE
if (NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE RELEASE CACHE STRING
- "Choose the type of build, options are: None Debug Release."
+ "Choose the type of build, options are: None Debug Release."
FORCE)
endif (NOT CMAKE_BUILD_TYPE)
-
-
+
+
# Set the force field
if (NOT UNRES_FF)
set(UNRES_FF "GAB" "E0LL2Y" CACHE STRING "Choose the force field, options are: GAB E0LL2Y" )
#message ( "Please set the Force field (UNRES_FF) to : GAB, 0ELE" )
endif (NOT UNRES_FF)
-
+
add_subdirectory(source)
-
-
set(UNRES_MD_SRC3 energy_p_new_barrier.F energy_p_new-sep_barrier.F gradient_p.F )
+set(UNRES_MD_PP_SRC cartder.F chainbuild.F checkder_p.F compare_s1.F dihed_cons.F econstr_local.F
+ energy_p_new_barrier.F energy_p_new-sep_barrier.F energy_split-sep.F entmcm.F gen_rand_conf.F
+ geomout.F gradient_p.F initialize_p.F intcartderiv.F lagrangian_lesyng.F mc.F mcm.F MD_A-MTS.F
+ minimize_p.F minim_mcmf.F MP.F MREMD.F parmread.F prng_32.F q_measure1.F q_measure3.F q_measure.F
+ rattle.F readpdb.F readrtns.F regularize.F rmsd.F sc_move.F stochfric.F test.F thread.F timing.F
+ unres.F )
# Set compiler flags for different sourcefiles
-set(FFLAGS0 -c -O3 -ip -w )
-set(FFLAGS1 -c -w -g -d2 -CA -CB )
-set(FFLAGS2 -c -w -g -00 )
-set(FFLAGS3 -c -w -O3 -ipo -ipo_obj -opt_report )
+set(FFLAGS0 "-O3 -ip -w -I${MPIF_INCLUDE_DIRECTORIES}" )
+set(FFLAGS1 "-c -w -g -d2 -CA -CB -I${MPIF_INCLUDE_DIRECTORIES}" )
+set(FFLAGS2 "-c -w -g -00 -I${MPIF_INCLUDE_DIRECTORIES} ")
+set(FFLAGS3 "-c -w -O3 -ipo -ipo_obj -opt_report -I${MPIF_INCLUDE_DIRECTORIES}" )
-set_property(SOURCE ${UNRES_MD_SRC0} PROPERTY CMAKE_Fortran_FLAGS ${FFLAGS0} )
-set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} )
-set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} )
-set_property(SOURCE ${UNRES_MD_SRC3} PROPERTY CMAKE_Fortran_FLAGS ${FFLAGS3} )
+set_property(SOURCE ${UNRES_MD_SRC0} PROPERTY COMPILE_FLAGS ${FFLAGS0} )
+#set_property(SOURCE ${UNRES_MD_SRC1} PROPERTY COMPILE_FLAGS ${FFLAGS1} )
+#set_property(SOURCE ${UNRES_MD_SRC2} PROPERTY COMPILE_FLAGS ${FFLAGS2} )
+set_property(SOURCE ${UNRES_MD_SRC3} PROPERTY COMPILE_FLAGS ${FFLAGS3} )
# Compile code
if(UNRES_FF STREQUAL "GAB")
+# GAB forcefield compile Conditions
- set(CMAKE_CXX_FLAGS -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANGO
- -DCRYST_BOND -DCRYST_THETA -DCRYST_SC )
- set(UNRES_BIN unres_ifort_MPICH_GAB.exe )
+if (Fortran_COMPILER_NAME STREQUAL "ifort")
+# do ifort specific stuff
+# set preprocesor flags
+ set(CPPFLAGS "-DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANGO -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" )
+# Apply them to *.F sources
+#add_definitions( ${CPPFLAGS} )
-else(UNRES_FF strequal "E0LL2Y")
+#SET(CMAKE_Fortran_COMPILE_OBJECT "<CMAKE_Fortran_COMPILER> ${CMAKE_START_TEMP_FILE} <FLAGS> -DLINUX -c <SOURCE> -o <OBJECT> ${CMAKE_END_TEMP_FILE}")
+# set_property(SOURCE readrtns.F PROPERTY COMPILE_DEFINITIONS "-DMPI" )
+# Set output binary
+ set(UNRES_BIN "unres_ifort_MPICH_GAB.exe" )
+endif (Fortran_COMPILER_NAME STREQUAL "ifort")
- set(CMAKE_CXX__FLAGS -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANG0 )
+else(UNRES_FF strequal "E0LL2Y")
+ set(CPPFLAGS -DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANG0 )
endif()
-
+set_property(SOURCE compinfo.c PROPERTY CMAKE_C_FLAGS "" )
add_executable(compinfo compinfo.c)
add_custom_command(OUTPUT cinfo.f COMMAND ${CMAKE_CURRENT_BINARY_DIR}/compinfo | true )
+#set_property(TARGET ${UNRES_BIN} PROPERTY COMPILE_DEFINITIONS MPI )
add_executable(${UNRES_BIN} ${UNRES_MD_SRC0} ${UNRES_MD_SRC3} cinfo.f )