# NOTE: when releasing the "-dev" suffix needs to be stripped off!
# REGRESSIONTEST_VERSION and REGRESSIONTEST_BRANCH should always be
# defined.
-set(PROJECT_VERSION "5.0.1-dev")
+set(PROJECT_VERSION "5.0.2-dev")
# If this is a released tarball, "-dev" will not be present in
# PROJECT_VERSION, and REGRESSIONTEST_VERSION specifies the version
# number of the regressiontest tarball against which the code tarball
# can be tested. This will be the version of the last patch release.
-set(REGRESSIONTEST_VERSION "5.0.1-dev")
+set(REGRESSIONTEST_VERSION "5.0.2-dev")
+# The MD5 checksum of the regressiontest tarball. Only used if "-dev"
+# is not present in the PROJECT_VERSION
+set(REGRESSIONTEST_MD5SUM "8c048dd4636a95a4c22870b249106bc5")
# If this is not a released tarball, "-dev" will be present in
# PROJECT_VERSION, and REGRESSIONTEST_BRANCH specifies the name of the
# gerrit.gromacs.org branch whose HEAD can test this code, *if* this
enable_language(C)
enable_language(CXX)
+set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS ON)
set(CPACK_PACKAGE_NAME "gromacs")
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
# This variable is a list of pairs of names of source and destination
# directories. Most of these are used for content GROMACS generates as
# part of the configuration or build.
-set(CPACK_SOURCE_INSTALLED_DIRECTORIES "${CMAKE_SOURCE_DIR};/;${CMAKE_BINARY_DIR}/src/programs/completion;src/programs/completion;${CMAKE_BINARY_DIR}/share/man/man1;share/man/man1;${CMAKE_BINARY_DIR}/share/man/man7;share/man/man7;${CMAKE_BINARY_DIR}/share/html/final;share/html/final;${CMAKE_BINARY_DIR}/install-guide/final;/")
+set(CPACK_SOURCE_INSTALLED_DIRECTORIES "${CMAKE_SOURCE_DIR};/;${CMAKE_BINARY_DIR}/src/programs/completion;src/programs/completion;${CMAKE_BINARY_DIR}/docs/man/man1;docs/man/man1;${CMAKE_BINARY_DIR}/docs/man/man7;docs/man/man7;${CMAKE_BINARY_DIR}/docs/old-html/final;docs/old-html/final;${CMAKE_BINARY_DIR}/docs/install-guide/final;/")
set(CPACK_PACKAGE_CONTACT "gmx-users@gromacs.org")
set(CPACK_GMX_BUILD_HELP "${GMX_BUILD_HELP}") #Works even though GMX_BUILD_HELP is defined later because it is off by default.
"Hostname of the machine where the cache was generated.")
endif()
+########################################################################
+# Detect architecture before setting options so we can alter defaults
+########################################################################
+# Detect the architecture the compiler is targetting, detect
+# SIMD instructions possibilities on that hardware, suggest SIMD instruction set
+# to use if none is specified, and populate the cache option for CPU
+# SIMD.
+include(gmxDetectTargetArchitecture)
+gmx_detect_target_architecture()
+
########################################################################
# User input options #
########################################################################
set(CMAKE_PREFIX_PATH "" CACHE STRING "Extra locations to search for external libraries and tools (give directory without lib, bin, or include)")
-option(GMX_DOUBLE "Use double precision (much slower, use only if you really need it)" OFF)
+if(GMX_TARGET_FUJITSU_SPARC64)
+ # Fujitsu only has SIMD in double precision, so this will be faster
+ set(GMX_DOUBLE_DEFAULT ON)
+else()
+ set(GMX_DOUBLE_DEFAULT OFF)
+endif()
+option(GMX_DOUBLE "Use double precision (much slower, use only if you really need it)" ${GMX_DOUBLE_DEFAULT})
+option(GMX_RELAXED_DOUBLE_PRECISION "Accept single precision 1/sqrt(x) when using Fujitsu HPC-ACE SIMD" OFF)
+mark_as_advanced(GMX_RELAXED_DOUBLE_PRECISION)
+
option(GMX_MPI "Build a parallel (message-passing) version of GROMACS" OFF)
option(GMX_THREAD_MPI "Build a thread-MPI-based multithreaded version of GROMACS (not compatible with MPI)" ON)
gmx_dependent_option(
set(REQUIRED_CUDA_COMPUTE_CAPABILITY 2.0)
include(gmxManageGPU)
-# Detect the architecture the compiler is targetting, detect
-# SIMD instructions possibilities on that hardware, suggest SIMD instruction set
-# to use if none is specified, and populate the cache option for CPU
-# SIMD.
-include(gmxDetectTargetArchitecture)
-gmx_detect_target_architecture()
-
if(GMX_CPU_ACCELERATION)
# Stay compatible with old Jenkins command line options for specific SIMD acceleration
set(GMX_SIMD "${GMX_CPU_ACCELERATION}" CACHE STRING "SIMD instruction set level and compiler optimization" FORCE)
OFF)
mark_as_advanced(GMX_BUILD_FOR_COVERAGE)
+option(GMX_DEVELOPER_BUILD
+ "Enable Developer convenience features: always build unit-tests"
+ OFF)
+mark_as_advanced(GMX_DEVELOPER_BUILD)
######################################################################
# Detect OpenMP support
#####################################################################
# The cmake/Check{C,CXX}CompilerFlag.cmake files in the GROMACS distribution
-# are used with permission from CMake v2.8.9 so that GROMACS can detect
-# invalid options with the Intel Compilers.
+# are used with permission from CMake v3.0.0 so that GROMACS can detect
+# invalid options with the Intel Compilers, and we have added a line
+# to detect warnings with the Fujitsu compilers on K computer and ICC.
+# CMake-3.0 also has a bug where the FAIL_REGEX pattern for AIX contains
+# a semicolon. Since this is also used as a separator in lists inside CMake,
+# that string ends up being split into two separate patterns, and the last
+# part is just a single word that also matches other messages. We solved this
+# by replacing the semicolon with a period that matches any character.
+#
# These files should be removed from the source tree when a CMake version that
# includes the features in question becomes required for building GROMACS.
include(CheckCCompilerFlag)
include(CheckCXXCompilerFlag)
-
include(gmxCFlags)
gmx_c_flags()
if(GMX_DOUBLE)
add_definitions(-DGMX_DOUBLE)
set(PKG_CFLAGS "${PKG_CFLAGS} -DGMX_DOUBLE")
+ if(GMX_RELAXED_DOUBLE_PRECISION)
+ add_definitions(-DGMX_RELAXED_DOUBLE_PRECISION)
+ endif()
endif()
if(GMX_SOFTWARE_INVSQRT)
set(PKG_CFLAGS "${PKG_CFLAGS} -DGMX_SOFTWARE_INVSQRT")
endif()
if(WIN32 AND NOT CYGWIN)
- set(GMX_WSOCKLIB_PATH CACHE PATH "Path to winsock (wsock32.lib) library.")
- mark_as_advanced(GMX_WSOCKLIB_PATH)
- find_library(WSOCK32_LIBRARY NAMES wsock32 PATHS ${GMX_WSOCKLIB_PATH})
- if(WSOCK32_LIBRARY)
- list(APPEND GMX_EXTRA_LIBRARIES ${WSOCK32_LIBRARY})
- add_definitions(-DGMX_HAVE_WINSOCK)
- else()
- message(STATUS "No winsock found. Cannot use interactive molecular dynamics (IMD).")
- endif(WSOCK32_LIBRARY)
+ list(APPEND GMX_EXTRA_LIBRARIES "wsock32")
+ add_definitions(-DGMX_HAVE_WINSOCK)
endif()
check_function_exists(_commit HAVE__COMMIT)
check_function_exists(sigaction HAVE_SIGACTION)
check_function_exists(sysconf HAVE_SYSCONF)
-check_function_exists(sched_setaffinity HAVE_SCHED_SETAFFINITY)
-check_function_exists(sched_getaffinity HAVE_SCHED_GETAFFINITY)
check_function_exists(rsqrt HAVE_RSQRT)
check_function_exists(rsqrtf HAVE_RSQRTF)
check_function_exists(sqrtf HAVE_SQRTF)
check_library_exists(m sqrt "" HAVE_LIBM)
check_library_exists(rt clock_gettime "" HAVE_CLOCK_GETTIME)
+include(TestSchedAffinity)
+test_sched_affinity(HAVE_SCHED_AFFINITY)
+
include(TestBigEndian)
test_big_endian(GMX_INTEGER_BIG_ENDIAN)
include(gmxManageBlueGene)
endif()
+if(GMX_TARGET_FUJITSU_SPARC64)
+ include(gmxManageFujitsuSparc64)
+endif()
+
########################################################################
#Process MPI settings
########################################################################
"Either set GMX_BUILD_UNITTESTS=OFF or tell CMake how to find a working version of libxml2.")
endif()
+if(GMX_USE_TNG AND NOT GMX_EXTERNAL_TNG)
+ # TNG wants zlib if it is available
+ find_package(ZLIB QUIET)
+ include(gmxTestZLib)
+ gmx_test_zlib(HAVE_ZLIB)
+endif()
+
########################################################################
# Generate development version info for cache
########################################################################
# so, should we use plug-ins?
if((WIN32 AND NOT CYGWIN) OR (HAVE_DLOPEN AND BUILD_SHARED_LIBS))
if(NOT VMD_QUIETLY)
- MESSAGE(STATUS
- "Found the ability to use plug-ins when building shared libaries, "
- "so will compile to use plug-ins (e.g. to read VMD-supported file "
- "formats).")
+ MESSAGE(STATUS "Using dynamic plugins (e.g VMD-supported file formats)")
endif()
if(NOT GMX_VMD_PLUGIN_PATH)
find_package(VMD)
endif()
if (NOT GMX_BUILD_MDRUN_ONLY)
- add_subdirectory(doxygen)
- add_subdirectory(install-guide)
+ add_subdirectory(docs)
add_subdirectory(share)
add_subdirectory(scripts)
endif()
###########################
set_directory_properties(PROPERTIES
ADDITIONAL_MAKE_CLEAN_FILES "install_manifest.txt")
-
-########################################################################
-# Manual #
-########################################################################
-
-option(GMX_BUILD_MANUAL "Whether to try to configure to build the PDF manual" OFF)
-mark_as_advanced(GMX_BUILD_MANUAL)
-if(GMX_BUILD_MANUAL)
- # Make sure we only do detection of manual-building dependencies
- # when the user opted in for that.
- add_subdirectory(manual)
-endif()