list(APPEND FULL_PATH_DIRECTORIES "${PROJECT_SOURCE_DIR}/${DIR}")
endforeach()
-# Prepare for checking source tree file hashes.
-# To notify the user during compilation and at runtime that the build source
-# has not been modified after unpacking the source tarball, the contents are hashed
-# to be compared to a hash computed during the release process. If the hash matches
-# all is fine and the user gets a message in the log file indicating that.
-# If either the release hash file is missing, or if the hash does not match
-# a different message is printed to indicate that the source has been changed
-# compared to the version actually released. This is not needed in case a build
-# is done in git, as we have the information there already.
-# This is not done if the user has explicitly set an additional custom version string with
-# -DGMX_VERSION_STRING_OF_FORK, as this indicates that they are knowing that a custom
-# version of GROMACS is in use.
-set(RELEASE_CHECKSUM_FILE "${PROJECT_SOURCE_DIR}/src/reference_checksum")
-if(NOT VERSION_STRING_OF_FORK OR "${VERSION_STRING_OF_FORK}" STREQUAL "")
- if(EXISTS ${RELEASE_CHECKSUM_FILE} AND PYTHON_EXECUTABLE)
- file(READ ${RELEASE_CHECKSUM_FILE} GMX_RELEASE_SOURCE_FILE_CHECKSUM)
- string(STRIP ${GMX_RELEASE_SOURCE_FILE_CHECKSUM} GMX_RELEASE_SOURCE_FILE_CHECKSUM)
- set(CHECKSUM_RESULT_FILE "${CMAKE_CURRENT_BINARY_DIR}/computed_checksum")
- execute_process(COMMAND ${PYTHON_EXECUTABLE}
- ${PROJECT_SOURCE_DIR}/admin/createFileHash.py
- -s ${FULL_PATH_DIRECTORIES}
- -o ${CHECKSUM_RESULT_FILE}
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- OUTPUT_QUIET)
- file(READ ${CHECKSUM_RESULT_FILE} GMX_CURRENT_SOURCE_FILE_CHECKSUM)
- string(STRIP ${GMX_CURRENT_SOURCE_FILE_CHECKSUM} GMX_CURRENT_SOURCE_FILE_CHECKSUM)
- if(NOT ${GMX_RELEASE_SOURCE_FILE_CHECKSUM} STREQUAL ${GMX_CURRENT_SOURCE_FILE_CHECKSUM})
- set(GMX_VERSION_STRING_FULL "${GMX_VERSION_STRING_FULL}-MODIFIED")
- message(STATUS "The source code for this GROMACS installation is different from the officially released version.")
+# Change path depending on if this is a source distribution (e.g. release tarball)
+# or just a source directory that is managed by something else, like an IDE.
+# If the git executable isn't found by CMake, there will not be version info even
+# if the .git folder is present and SOURCE_IS_GIT_REPOSITORY is true.
+# Don't issue warnings in this case.
+if (SOURCE_IS_SOURCE_DISTRIBUTION)
+ # Prepare for checking source tree file hashes.
+ # To notify the user during compilation and at runtime that the build source
+ # has not been modified after unpacking the source tarball, the contents are hashed
+ # to be compared to a hash computed during the release process. If the hash matches
+ # all is fine and the user gets a message in the log file indicating that.
+ # If either the release hash file is missing, or if the hash does not match
+ # a different message is printed to indicate that the source has been changed
+ # compared to the version actually released. This is not needed in case a build
+ # is done in git, as we have the information there already.
+ # This is not done if the user has explicitly set an additional custom version string with
+ # -DGMX_VERSION_STRING_OF_FORK, as this indicates that they are knowing that a custom
+ # version of GROMACS is in use.
+ set(RELEASE_CHECKSUM_FILE "${PROJECT_SOURCE_DIR}/src/reference_checksum")
+ if(NOT VERSION_STRING_OF_FORK OR "${VERSION_STRING_OF_FORK}" STREQUAL "")
+ if(EXISTS ${RELEASE_CHECKSUM_FILE} AND PYTHON_EXECUTABLE)
+ file(READ ${RELEASE_CHECKSUM_FILE} GMX_RELEASE_SOURCE_FILE_CHECKSUM)
+ string(STRIP ${GMX_RELEASE_SOURCE_FILE_CHECKSUM} GMX_RELEASE_SOURCE_FILE_CHECKSUM)
+ set(CHECKSUM_RESULT_FILE "${CMAKE_CURRENT_BINARY_DIR}/computed_checksum")
+ execute_process(COMMAND ${PYTHON_EXECUTABLE}
+ ${PROJECT_SOURCE_DIR}/admin/createFileHash.py
+ -s ${FULL_PATH_DIRECTORIES}
+ -o ${CHECKSUM_RESULT_FILE}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ OUTPUT_QUIET)
+ file(READ ${CHECKSUM_RESULT_FILE} GMX_CURRENT_SOURCE_FILE_CHECKSUM)
+ string(STRIP ${GMX_CURRENT_SOURCE_FILE_CHECKSUM} GMX_CURRENT_SOURCE_FILE_CHECKSUM)
+ if(NOT ${GMX_RELEASE_SOURCE_FILE_CHECKSUM} STREQUAL ${GMX_CURRENT_SOURCE_FILE_CHECKSUM})
+ set(GMX_VERSION_STRING_FULL "${GMX_VERSION_STRING_FULL}-MODIFIED")
+ message(STATUS "The source code for this GROMACS installation is different from the officially released version.")
+ endif()
+ elseif(PYTHON_EXECUTABLE)
+ set(GMX_VERSION_STRING_FULL "${GMX_VERSION_STRING_FULL}-UNCHECKED")
+ set(GMX_RELEASE_SOURCE_FILE_CHECKSUM "NoChecksumFile")
+ set(GMX_CURRENT_SOURCE_FILE_CHECKSUM "NoChecksumFile")
+ message(WARNING "Could not valdiate the GROMACS source due to missing reference checksum file.")
+ else()
+ set(GMX_VERSION_STRING_FULL "${GMX_VERSION_STRING_FULL}-UNCHECKED")
+ set(GMX_RELEASE_SOURCE_FILE_CHECKSUM "NoPythonAvailable")
+ set(GMX_CURRENT_SOURCE_FILE_CHECKSUM "NoPythonAvailable")
+ message(STATUS "Could not calculate checksum of source files without Python")
endif()
- elseif(PYTHON_EXECUTABLE)
- set(GMX_VERSION_STRING_FULL "${GMX_VERSION_STRING_FULL}-UNCHECKED")
- set(GMX_RELEASE_SOURCE_FILE_CHECKSUM "NoChecksumFile")
- set(GMX_CURRENT_SOURCE_FILE_CHECKSUM "NoChecksumFile")
- message(WARNING "Could not valdiate the GROMACS source due to missing reference checksum file.")
- else()
- set(GMX_VERSION_STRING_FULL "${GMX_VERSION_STRING_FULL}-UNCHECKED")
- set(GMX_RELEASE_SOURCE_FILE_CHECKSUM "NoPythonAvailable")
- set(GMX_CURRENT_SOURCE_FILE_CHECKSUM "NoPythonAvailable")
- message(STATUS "Could not calculate checksum of source files without Python")
endif()
+else()
+ set(GMX_VERSION_STRING_FULL "${GMX_VERSION_STRING_FULL}-UNCHECKED")
+ set(GMX_RELEASE_SOURCE_FILE_CHECKSUM "NotSourceDistribution")
+ set(GMX_CURRENT_SOURCE_FILE_CHECKSUM "NotSourceDistribution")
+ message(STATUS "Build without git or source information")
endif()
# Generate the output file.