########################################################################
option(GMX_DOUBLE "Use double precision" OFF)
option(GMX_MPI "Build a parallel (message-passing) version of GROMACS" OFF)
-option(GMX_THREADS "Build a parallel (threaded-based) version of GROMACS)" ON)
+option(GMX_THREADS "Build a parallel (thread-based) version of GROMACS)" ON)
option(GMX_SOFTWARE_INVSQRT "Use GROMACS software 1/sqrt" ON)
option(GMX_FAHCORE "Build a library with mdrun functionality" OFF)
option(GMX_OPENMM "Accelerated execution on GPUs through the OpenMM library" OFF)
if(GMX_OPENMM)
cmake_minimum_required(VERSION 2.6.4)
# we'll use the built-in fft to avoid unnecessary dependencies
- set (GMX_FFT_LIBRARY "fftpack")
+ message(STATUS "No external FFT libraries needed for the OpenMM build, using fftpack!")
+ set (GMX_FFT_LIBRARY "fftpack" CACHE STRING
+ "No external FFT libraries needed for the OpenMM build, using fftpack!" FORCE)
if(GMX_MPI)
message(FATAL_ERROR "The OpenMM build is not compatible with MPI!")
endif(GMX_MPI)
if(GMX_THREADS)
- message(STATUS "Threads not compatible with OpenMM build, disabled")
- set(GMX_THREADS OFF)
+ message(STATUS "Threads not compatible with OpenMM build, disabled!")
+ set(GMX_THREADS OFF CACHE BOOL
+ "Threads not compatible with OpenMM build, disabled!" FORCE)
endif(GMX_THREADS)
if(GMX_SOFTWARE_INVSQRT)
- set(GMX_SOFTWARE_INVSQRT OFF)
+ set(GMX_SOFTWARE_INVSQRT OFF FORCE)
endif(GMX_SOFTWARE_INVSQRT)
- if(NOT GMX_ACCELERATION MATCHES "auto|none|None|NONE" OR NOT ${GMX_ACCELERATION} STREQUAL "")
- message(WARNING "The OpenMM build does not support other acceleration modes!")
- set(GMX_ACCELERATION "none")
+ if(NOT GMX_ACCELERATION MATCHES "^(none|None|NONE)")
+ message(WARNING "CPU-based acceleration turned off, OpenMM does not support/need any!")
+ unset(GMX_ACCELERATION CACHE)
+ set(GMX_ACCELERATION "none" CACHE STRING
+ "CPU-based acceleration turned off, OpenMM does not support/need any!" FORCE)
endif()
if(GMX_FAHCORE)
message(FATAL_ERROR "The OpenMM build does not support FAH build!")
gmx_test_inline_asm_msvc_x86(GMX_X86_MSVC_INLINE_ASM)
# turn on SSE if supported with reasonable defaults.
-if (${GMX_ACCELERATION} STREQUAL "auto")
+if (${GMX_ACCELERATION} STREQUAL "auto" AND NOT GMX_OPENMM)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86|x64|x86_64|AMD64|amd64)")
set(GMX_ACCELERATION "SSE" CACHE STRING "Accelerated kernels. Pick one of: none, SSE, BlueGene, Power6, ia64, altivec" FORCE)
else()
set(GMX_ACCELERATION "none" CACHE STRING "Accelerated kernels. Pick one of: none, SSE, BlueGene, Power6, ia64, altivec" FORCE)
endif()
-endif (${GMX_ACCELERATION} STREQUAL "auto")
+endif (${GMX_ACCELERATION} STREQUAL "auto" AND NOT GMX_OPENMM)
include(gmxTestXDR)