ScmRevGen.cmake 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. cmake_minimum_required(VERSION 3.13)
  2. # for revision info
  3. if(GIT_FOUND)
  4. # defines DOLPHIN_WC_REVISION
  5. execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
  6. OUTPUT_VARIABLE DOLPHIN_WC_REVISION
  7. OUTPUT_STRIP_TRAILING_WHITESPACE)
  8. # defines DOLPHIN_WC_DESCRIBE
  9. execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} describe --always --long --dirty
  10. OUTPUT_VARIABLE DOLPHIN_WC_DESCRIBE
  11. OUTPUT_STRIP_TRAILING_WHITESPACE)
  12. # remove hash (and trailing "-0" if needed) from description
  13. string(REGEX REPLACE "(-0)?-[^-]+((-dirty)?)$" "\\2" DOLPHIN_WC_DESCRIBE "${DOLPHIN_WC_DESCRIBE}")
  14. # defines DOLPHIN_WC_BRANCH
  15. execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD
  16. OUTPUT_VARIABLE DOLPHIN_WC_BRANCH
  17. OUTPUT_STRIP_TRAILING_WHITESPACE)
  18. # defines DOLPHIN_WC_COMMITS_AHEAD_MASTER
  19. execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} rev-list --count HEAD ^master
  20. OUTPUT_VARIABLE DOLPHIN_WC_COMMITS_AHEAD_MASTER
  21. OUTPUT_STRIP_TRAILING_WHITESPACE)
  22. # defines DOLPHIN_WC_TAG
  23. execute_process(WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMAND ${GIT_EXECUTABLE} describe --exact-match HEAD
  24. OUTPUT_VARIABLE DOLPHIN_WC_TAG
  25. OUTPUT_STRIP_TRAILING_WHITESPACE
  26. ERROR_QUIET)
  27. endif()
  28. string(TIMESTAMP DOLPHIN_WC_BUILD_DATE "%Y-%m-%d" UTC)
  29. # version number
  30. set(DOLPHIN_VERSION_MAJOR "2412")
  31. set(DOLPHIN_VERSION_MINOR "0")
  32. set(DOLPHIN_VERSION_PATCH ${DOLPHIN_WC_REVISION})
  33. # If Dolphin is not built from a Git repository, default the version info to
  34. # reasonable values.
  35. if(NOT DOLPHIN_WC_REVISION)
  36. set(DOLPHIN_WC_DESCRIBE "${DOLPHIN_VERSION_MAJOR}.${DOLPHIN_VERSION_MINOR}")
  37. set(DOLPHIN_WC_REVISION "${DOLPHIN_WC_DESCRIBE} (no further info)")
  38. set(DOLPHIN_WC_BRANCH "master")
  39. set(DOLPHIN_WC_COMMITS_AHEAD_MASTER 0)
  40. endif()
  41. # If this is a tag (i.e. a release), then set the current patch version and
  42. # the number of commits ahead to zero.
  43. if(DOLPHIN_WC_TAG)
  44. set(DOLPHIN_VERSION_PATCH "0")
  45. set(DOLPHIN_WC_COMMITS_AHEAD_MASTER 0)
  46. endif()
  47. function(configure_source_file path)
  48. configure_file(
  49. "${PROJECT_SOURCE_DIR}/${path}.in"
  50. "${PROJECT_BINARY_DIR}/${path}.tmp"
  51. )
  52. execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${PROJECT_BINARY_DIR}/${path}.tmp" "${PROJECT_BINARY_DIR}/${path}")
  53. file(REMOVE "${PROJECT_BINARY_DIR}/${path}.tmp")
  54. endfunction()
  55. configure_source_file("Source/Core/Common/scmrev.h")
  56. if(APPLE)
  57. configure_source_file("Source/Core/VersionInfo.plist")
  58. endif()
  59. if(LINUX)
  60. configure_source_file("Flatpak/org.DolphinEmu.dolphin-emu.metainfo.xml")
  61. endif()