123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- set(git_names git eg)
- if(WIN32)
- if(NOT CMAKE_GENERATOR MATCHES "MSYS")
-
-
-
-
-
- set(git_names git eg.cmd eg)
- endif()
- endif()
- find_program(GIT_EXECUTABLE ${git_names}
- PATHS
- "C:/Program Files/Git/bin"
- "C:/Program Files (x86)/Git/bin"
- DOC "git command line client")
- mark_as_advanced(GIT_EXECUTABLE)
- if(GIT_EXECUTABLE)
- macro(GIT_WC_INFO dir prefix)
- execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=7 HEAD
- WORKING_DIRECTORY ${dir}
- ERROR_VARIABLE GIT_error
- OUTPUT_VARIABLE ${prefix}_WC_REVISION_HASH
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- set(${prefix}_WC_REVISION ${${prefix}_WC_REVISION_HASH})
- if(NOT ${GIT_error} EQUAL 0)
- message(SEND_ERROR "Command \"${GIT_EXECUTBALE} rev-parse --verify -q --short=7 HEAD\" in directory ${dir} failed with output:\n${GIT_error}")
- else(NOT ${GIT_error} EQUAL 0)
- execute_process(COMMAND ${GIT_EXECUTABLE} name-rev ${${prefix}_WC_REVISION_HASH}
- WORKING_DIRECTORY ${dir}
- OUTPUT_VARIABLE ${prefix}_WC_REVISION_NAME
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- endif(NOT ${GIT_error} EQUAL 0)
- execute_process(COMMAND ${GIT_EXECUTABLE} config --get remote.origin.url
- WORKING_DIRECTORY ${dir}
- OUTPUT_VARIABLE ${prefix}_WC_URL
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- set(${prefix}_WC_GITSVN False)
-
- execute_process(COMMAND ${GIT_EXECUTABLE} config --get-regexp "^svn-remote"
- WORKING_DIRECTORY ${dir}
- OUTPUT_VARIABLE git_config_output
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
- if(NOT "${git_config_output}" STREQUAL "")
-
- execute_process(COMMAND ${GIT_EXECUTABLE} svn info
- WORKING_DIRECTORY ${dir}
- TIMEOUT 3
- ERROR_VARIABLE git_svn_info_error
- OUTPUT_VARIABLE ${prefix}_WC_INFO
- RESULT_VARIABLE git_svn_info_result
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- if(${git_svn_info_result} EQUAL 0)
- set(${prefix}_WC_GITSVN True)
- string(REGEX REPLACE "^(.*\n)?URL: ([^\n]+).*"
- "\\2" ${prefix}_WC_URL "${${prefix}_WC_INFO}")
- string(REGEX REPLACE "^(.*\n)?Revision: ([^\n]+).*"
- "\\2" ${prefix}_WC_REVISION "${${prefix}_WC_INFO}")
- string(REGEX REPLACE "^(.*\n)?Repository Root: ([^\n]+).*"
- "\\2" ${prefix}_WC_ROOT "${${prefix}_WC_INFO}")
- string(REGEX REPLACE "^(.*\n)?Last Changed Author: ([^\n]+).*"
- "\\2" ${prefix}_WC_LAST_CHANGED_AUTHOR "${${prefix}_WC_INFO}")
- string(REGEX REPLACE "^(.*\n)?Last Changed Rev: ([^\n]+).*"
- "\\2" ${prefix}_WC_LAST_CHANGED_REV "${${prefix}_WC_INFO}")
- string(REGEX REPLACE "^(.*\n)?Last Changed Date: ([^\n]+).*"
- "\\2" ${prefix}_WC_LAST_CHANGED_DATE "${${prefix}_WC_INFO}")
- endif(${git_svn_info_result} EQUAL 0)
- endif(NOT "${git_config_output}" STREQUAL "")
-
- if(NOT ${prefix}_WC_URL)
- message(WARNING "No remote origin set for git repository: ${dir}" )
- set( ${prefix}_WC_URL "NA" )
- else()
- set(${prefix}_WC_ROOT ${${prefix}_WC_URL})
- endif()
- endmacro(GIT_WC_INFO)
- endif(GIT_EXECUTABLE)
- include(FindPackageHandleStandardArgs)
- find_package_handle_standard_args(Git DEFAULT_MSG GIT_EXECUTABLE)
|