fixed ctest/cmake files for src_MD build
[unres.git] / CMakeLists.txt
index 329c3ae..c084cff 100644 (file)
 # CMake project file for UNRES 
 #
 cmake_minimum_required(VERSION 2.8)
+   
+project(UNRESPACK Fortran C)
 
-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(UNRES_VERSION ${UNRES_MAJOR}.${UNRES_MINOR}.${UNRES_PATCH})
+#======================================
+# CTest stuff
+#======================================
+
+include(CTest)
+enable_testing()
+# Set makefile verbose on
+set( CMAKE_VERBOSE_MAKEFILE 1 )
+
+#======================================
+# Fortran compilers stuff
+#======================================
+# Get the compiler name
+get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)
 
-enable_language (Fortran)
+# Altough cmake enables you to set some compiler definitions it seems by default they are ignored.                 
+# This is a workaround to pass compiler definitions (preprocesor flags) to fortran compilers like ifort
+SET(CMAKE_Fortran_COMPILE_OBJECT "<CMAKE_Fortran_COMPILER>  ${CMAKE_START_TEMP_FILE} <FLAGS> <DEFINES> <SOURCE> -o <OBJECT> ${CMAKE_END_TEMP_FILE}")
+#set(CPPFLAGS "-DPROCOR -DLINUX -DPGI -DUNRES -DISNAN -DMP -DMPI -DSPLITELE -DLANGO -DCRYST_BOND -DCRYST_THETA -DCRYST_SC" )
+#add_definitions( ${CPPFLAGS} ) 
 
+   
 # 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."
-      FORCE)
+  set (CMAKE_BUILD_TYPE RELEASE CACHE STRING "Choose the type of build, options are: None Debug Release." FORCE)
 endif (NOT CMAKE_BUILD_TYPE)
+   
+#=======================================  
+# Set the varous build variables 
+#=======================================
 
-
-# Set the force field
+# Set 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)
+# Use of MPI library (default ON)
+option(UNRES_WITH_MPI "Choose whether or not to use MPI library" ON )
+
+#=================================
+# MPI stuff
+#=================================
+
+if(MPIF_LOCAL_DIR)
+  find_library(MPIF_LIBRARY NAMES libmpich.a  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 mpich 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 )
+  set( MPIF_FOUND TRUE )
+  message("MPIF found")
+else ( MPIF_INCLUDE_DIRECTORIES )
+  set( MPIF_FOUND FALSE )
+  message("MPIF not found - disabling MPI compile flags ")
+  set ( UNRES_WITH_MPI "OFF")
+endif ( MPIF_INCLUDE_DIRECTORIES )
+
+if (MPIF_FOUND)
+  message("MPIF_LIBRARIES=${MPIF_LIBRARY}")
+  message("MPIF_INCLUDE_DIRECTORIES=${MPIF_INCLUDE_DIRECTORIES}" )
+endif(MPIF_FOUND) 
+
+#=======================================
+#  Create diractories for build targets
+#=======================================
+execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/bin/unres/MD )
+
+#=======================================
+# Add source files
+#=======================================     
+add_subdirectory(source/unres/src_MD)
+
+