include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
+# Get compiler version information, needs to be done early as check that depend
+# on compiler verison follow below.
+include(gmxGetCompilerInfo)
+get_compiler_version()
+
# First exclude compilers known to not work with OpenMP although claim to support it:
# gcc 4.2.1 and gcc-llvm 4.2.1 (also claims to be 4.2.1) on Mac OS X
# This fixes redmine 900 and needs to run before OpenMP flags are set below.
-message("CMAKE_COMPILER_IS_GNUCC: ${CMAKE_COMPILER_IS_GNUCC}")
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND
- CMAKE_COMPILER_IS_GNUCC AND C_COMPILER_VERSION VERSION_LESS 4.3)
+ (CMAKE_COMPILER_IS_GNUCC AND C_COMPILER_VERSION AND C_COMPILER_VERSION VERSION_LESS 4.3))
message(STATUS "OpenMP multithreading not supported with gcc/llvm-gcc 4.2 on Mac OS X, disabled")
set(GMX_OPENMP OFF CACHE BOOL
"OpenMP multithreading not not supported with gcc/llvm-gcc 4.2 on Mac OS X, disabled!" FORCE)
include(gmxCFlags)
gmx_c_flags()
-include(gmxGetCompilerInfo)
-get_compiler_version()
-
# gcc 4.4.x is buggy and crashes when compiling some files with O3 and OpenMP on.
# Detect here whether applying a workaround is needed and will apply it later
# on the affected files.
set (GMX_BINARY_SUFFIX "${GMX_BINARY_SUFFIX}_d")
set (GMX_LIBS_SUFFIX "${GMX_LIBS_SUFFIX}_d")
endif(GMX_DOUBLE)
- if (GMX_OPENMM)
- set (GMX_BINARY_SUFFIX "-openmm")
- set (GMX_LIBS_SUFFIX "_openmm")
- endif(GMX_OPENMM)
mark_as_advanced(FORCE GMX_BINARY_SUFFIX GMX_LIBS_SUFFIX)
if (NOT SUFFIX_QUIETLY)
message(STATUS "Using default binary suffix: \"${GMX_BINARY_SUFFIX}\"")
set(PKG_CFLAGS "${PKG_CFLAGS} -DGMX_SOFTWARE_INVSQRT")
endif(GMX_SOFTWARE_INVSQRT)
-#######################################################################
-# Check for options incompatible with OpenMM build #
-#######################################################################
-if(GMX_OPENMM)
- # we'll use the built-in fft to avoid unnecessary dependencies
- string(TOUPPER ${GMX_FFT_LIBRARY} GMX_FFT_LIBRARY)
- if(NOT ${GMX_FFT_LIBRARY} STREQUAL "FFTPACK")
- message(STATUS "No external FFT libraries needed for the OpenMM build, switching to fftpack!")
- set(GMX_FFT_LIBRARY "fftpack" CACHE STRING
- "No external FFT libraries needed for the OpenMM build, switching to fftpack!" FORCE)
- endif()
- if(GMX_MPI)
- message(FATAL_ERROR "The OpenMM build is not compatible with MPI!")
- endif(GMX_MPI)
- if(GMX_THREAD_MPI)
- message(STATUS "Thread-MPI not compatible with OpenMM, disabled!")
- set(GMX_THREAD_MPI OFF CACHE BOOL
- "Thread-MPI not compatible with OpenMM build, disabled!" FORCE)
- endif(GMX_THREAD_MPI)
- if(GMX_OPENMP)
- message(STATUS "OpenMP multithreading not compatible with OpenMM, disabled")
- set(GMX_OPENMP OFF CACHE BOOL
- "OpenMP multithreading not compatible with OpenMM, disabled!" FORCE)
- endif()
- if(GMX_SOFTWARE_INVSQRT)
- set(GMX_SOFTWARE_INVSQRT OFF CACHE STRING
- "The OpenMM build does not need GROMACS software 1/sqrt!" FORCE)
- endif(GMX_SOFTWARE_INVSQRT)
- string(TOUPPER ${GMX_CPU_ACCELERATION} GMX_CPU_ACCELERATION)
- if(NOT GMX_CPU_ACCELERATION STREQUAL "NONE")
- message(STATUS "Switching off CPU-based acceleration, the OpenMM build does not support/need any!")
- set(GMX_CPU_ACCELERATION "None" CACHE STRING
- "Switching off CPU-based acceleration, the OpenMM build does not support/need any!" FORCE)
- endif()
- if(GMX_FAHCORE)
- message(FATAL_ERROR "The OpenMM build does not support FAH build!")
- endif(GMX_FAHCORE)
- if(GMX_DOUBLE)
- message(FATAL_ERROR "The OpenMM-build does not support double precision calculations!")
- endif()
- # mark as advanced the unused variables
- mark_as_advanced(FORCE GMX_CPU_ACCELERATION GMX_MPI GMX_FFT_LIBRARY
- GMX_QMMM_PROGRAM GMX_THREAD_MPI GMX_DOUBLE)
-else(GMX_OPENMM)
- mark_as_advanced(CLEAR GMX_CPU_ACCELERATION GMX_MPI GMX_FFT_LIBRARY
- GMX_QMMM_PROGRAM GMX_THREAD_MPI GMX_DOUBLE)
-endif(GMX_OPENMM)
########################################################################
tmpi_get_source_list(THREAD_MPI_SRC CXX NOMPI)
endif(GMX_THREAD_MPI)
-if(GMX_OPENMM)
- set(CUDA_BUILD_EMULATION OFF)
- find_package(CUDA 3.1 REQUIRED)
- add_definitions(-DGMX_OPENMM)
- if(CMAKE_BUILD_TYPE STREQUAL "DEBUG")
- set(CUDA_VERBOSE_BUILD ON)
- endif()
- find_package(OpenMM)
-endif(GMX_OPENMM)
-
if(GMX_GPU)
# now that we have detected the dependencies, do the second configure pass
gmx_gpu_setup()
endif()
endif(NOT GNU_SSE4_CFLAG AND NOT MSVC_SSE4_CFLAG)
- GMX_TEST_CXXFLAG(GNU_SSE4_CXXFLAG "-msse4.1" GROMACS_CXX_FLAG)
+ GMX_TEST_CXXFLAG(GNU_SSE4_CXXFLAG "-msse4.1" ACCELERATION_CXX_FLAGS)
if (NOT GNU_SSE4_CXXFLAG AND GMX_NATIVE_WINDOWS)
GMX_TEST_CXXFLAG(MSVC_SSE4_CXXFLAG "/arch:SSE4.1" ACCELERATION_CXX_FLAGS)
endif(NOT GNU_SSE4_CXXFLAG AND GMX_NATIVE_WINDOWS)
MESSAGE(FATAL_ERROR "Invalid QM/MM program option: ${GMX_QMMM_PROGRAM}. Choose one of: Gaussian, Mopac, Gamess, Orca, None")
endif(${GMX_QMMM_PROGRAM} STREQUAL "GAUSSIAN")
-# Process FFT library settings - if not OpenMM build
+# Process FFT library settings
string(TOUPPER ${GMX_FFT_LIBRARY} ${GMX_FFT_LIBRARY})
set(PKG_FFT "")
set(PKG_FFT_LIBS "")
include(CTest)
mark_as_advanced(BUILD_TESTING)
+#gmxtests target builds all binaries required for running gmxtest
+add_custom_target(gmxtests DEPENDS grompp mdrun pdb2gmx gmxcheck gmx)
IF(BUILD_TESTING)
enable_testing()
add_subdirectory(tests)
+ if(REGRESSIONTEST_PATH)
+ #check target builds all to run tests and the runs tests
+ add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure)
+ add_dependencies(check gmxtests)
+ else()
+ add_custom_target(check COMMAND ${CMAKE_COMMAND} -E echo "WARNING: No tests are run. Running the tests requires either of the cmake variables REGRESSIONTEST_PATH or REGRESSIONTEST_DOWNLOAD to be set.")
+ endif()
ENDIF()