diff --git a/modules/build_info.cmake b/modules/build_info.cmake deleted file mode 100644 index 9128238..0000000 --- a/modules/build_info.cmake +++ /dev/null @@ -1,150 +0,0 @@ -#.rst: -# -# Generates source code that echoes configuration, version, and build -# information to the program output. - -find_package(PythonInterp REQUIRED) - -# generated cmake files will be written to this path -# only build info is generated -# everything else is static for the user -file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/generated_by_cmake) -set(CMAKE_MODULE_PATH - ${CMAKE_MODULE_PATH} - ${PROJECT_BINARY_DIR}/generated_by_cmake - ) - -#------------------------------------------------------------------------------- - -function(get_git_info - in_python_executable - out_git_last_commit_hash - out_git_last_commit_author - out_git_last_commit_date - out_git_branch - out_git_status_at_build) - - find_package(Git) - if(GIT_FOUND) - execute_process( - COMMAND ${GIT_EXECUTABLE} rev-list --max-count=1 --abbrev-commit HEAD - OUTPUT_VARIABLE _git_last_commit_hash - ERROR_QUIET - ) - - if(_git_last_commit_hash) - string(STRIP ${_git_last_commit_hash} _git_last_commit_hash) - endif() - - execute_process( - COMMAND ${GIT_EXECUTABLE} log --max-count=1 HEAD - OUTPUT_VARIABLE _git_last_commit - ERROR_QUIET - ) - - if(_git_last_commit) - string(REGEX MATCH "Author:[ ]*(.+)<" temp "${_git_last_commit}") - set(_git_last_commit_author ${CMAKE_MATCH_1}) - string(REGEX MATCH "Date:[ ]*(.+(\\+|-)[0-9][0-9][0-9][0-9])" temp "${_git_last_commit}") - set(_git_last_commit_date ${CMAKE_MATCH_1}) - endif() - - execute_process( - COMMAND ${in_python_executable} -c "import subprocess; import re; print(re.search(r'\\*.*', subprocess.Popen(['${GIT_EXECUTABLE}', 'branch'], stdout=subprocess.PIPE).communicate()[0], re.MULTILINE).group())" - OUTPUT_VARIABLE _git_branch - ERROR_QUIET - ) - - if(_git_branch) - string(REPLACE "*" "" _git_branch ${_git_branch}) - string(STRIP ${_git_branch} _git_branch) - endif() - - execute_process( - COMMAND ${GIT_EXECUTABLE} status -uno - OUTPUT_VARIABLE _git_status_at_build - ERROR_QUIET - ) - - set(${out_git_last_commit_hash} ${_git_last_commit_hash} PARENT_SCOPE) - set(${out_git_last_commit_author} ${_git_last_commit_author} PARENT_SCOPE) - set(${out_git_last_commit_date} ${_git_last_commit_date} PARENT_SCOPE) - set(${out_git_branch} ${_git_branch} PARENT_SCOPE) - set(${out_git_status_at_build} ${_git_status_at_build} PARENT_SCOPE) - else() - set(${out_git_last_commit_hash} "" PARENT_SCOPE) - set(${out_git_last_commit_author} "" PARENT_SCOPE) - set(${out_git_last_commit_date} "" PARENT_SCOPE) - set(${out_git_branch} "" PARENT_SCOPE) - set(${out_git_status_at_build} "" PARENT_SCOPE) - endif() -endfunction() - -get_git_info(${PYTHON_EXECUTABLE} - GIT_COMMIT_HASH - GIT_COMMIT_AUTHOR - GIT_COMMIT_DATE - GIT_BRANCH - GIT_STATUS_AT_BUILD) - -# get configuration time in UTC -execute_process( - COMMAND ${PYTHON_EXECUTABLE} -c "import datetime; print(datetime.datetime.utcnow())" - OUTPUT_VARIABLE _configuration_time - ) -string(STRIP ${_configuration_time} _configuration_time) # delete newline - -execute_process( - COMMAND whoami - TIMEOUT 1 - OUTPUT_VARIABLE _user_name - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - -execute_process( - COMMAND hostname - TIMEOUT 1 - OUTPUT_VARIABLE _host_name - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - -get_directory_property(_list_of_definitions DIRECTORY ${PROJECT_SOURCE_DIR} COMPILE_DEFINITIONS) - -# set python version variable when it is not defined automatically -# this can happen when cmake version is equal or less than 2.8.5 -if(NOT _python_version) - execute_process( - COMMAND ${PYTHON_EXECUTABLE} -V - OUTPUT_VARIABLE _python_version - ERROR_VARIABLE _python_version - ) - string(REGEX MATCH "Python ([0-9].[0-9].[0-9])" temp "${_python_version}") - set(_python_version ${CMAKE_MATCH_1}) -endif() - -configure_file( - ${PROJECT_SOURCE_DIR}/cmake/lib/config_info.in.py - ${PROJECT_BINARY_DIR}/config_info.py - ) - -unset(_configuration_time) -unset(_user_name) -unset(_host_name) -unset(_list_of_definitions) -unset(_python_version) - -exec_program( - ${PYTHON_EXECUTABLE} - ${PROJECT_BINARY_DIR} - ARGS config_info.py Fortran > ${PROJECT_BINARY_DIR}/config_info.F90 - OUTPUT_VARIABLE _discard # we don't care about the output - ) - -exec_program( - ${PYTHON_EXECUTABLE} - ${PROJECT_BINARY_DIR} - ARGS config_info.py CMake > ${PROJECT_BINARY_DIR}/generated_by_cmake/config_info_generated.cmake - OUTPUT_VARIABLE _discard # we don't care about the output - ) - -include(config_info_generated)