CMakeVersionSource.cmake 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. # Try to identify the current development source version.
  2. set(CMake_VERSION_SOURCE "")
  3. if(EXISTS ${CMake_SOURCE_DIR}/.git/HEAD)
  4. find_program(GIT_EXECUTABLE NAMES git git.cmd)
  5. mark_as_advanced(GIT_EXECUTABLE)
  6. if(GIT_EXECUTABLE)
  7. execute_process(
  8. COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=4 HEAD
  9. OUTPUT_VARIABLE head
  10. OUTPUT_STRIP_TRAILING_WHITESPACE
  11. WORKING_DIRECTORY ${CMake_SOURCE_DIR}
  12. )
  13. if(head)
  14. set(CMake_VERSION_SOURCE "g${head}")
  15. execute_process(
  16. COMMAND ${GIT_EXECUTABLE} update-index -q --refresh
  17. WORKING_DIRECTORY ${CMake_SOURCE_DIR}
  18. )
  19. execute_process(
  20. COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
  21. OUTPUT_VARIABLE dirty
  22. OUTPUT_STRIP_TRAILING_WHITESPACE
  23. WORKING_DIRECTORY ${CMake_SOURCE_DIR}
  24. )
  25. if(dirty)
  26. set(CMake_VERSION_SOURCE "${CMake_VERSION_SOURCE}-dirty")
  27. endif()
  28. endif()
  29. endif()
  30. elseif(EXISTS ${CMake_SOURCE_DIR}/CVS/Repository)
  31. file(READ ${CMake_SOURCE_DIR}/CVS/Repository repo)
  32. set(branch "")
  33. if("${repo}" MATCHES "\\.git/")
  34. string(REGEX REPLACE ".*\\.git/([^\r\n]*).*" "-\\1" branch "${repo}")
  35. endif()
  36. set(CMake_VERSION_SOURCE "cvs${branch}")
  37. endif()