versionconfig.cmake 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # OBS CMake common version helper module
  2. include_guard(GLOBAL)
  3. set(_obs_version ${_obs_default_version})
  4. set(_obs_version_canonical ${_obs_default_version})
  5. # Attempt to automatically discover expected OBS version
  6. if(NOT DEFINED OBS_VERSION_OVERRIDE AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git")
  7. execute_process(
  8. COMMAND git describe --always --tags --dirty=-modified
  9. OUTPUT_VARIABLE _obs_version
  10. ERROR_VARIABLE _git_describe_err
  11. WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
  12. RESULT_VARIABLE _obs_version_result
  13. OUTPUT_STRIP_TRAILING_WHITESPACE
  14. )
  15. if(_git_describe_err)
  16. message(FATAL_ERROR "Could not fetch OBS version tag from git.\n" ${_git_describe_err})
  17. endif()
  18. if(_obs_version_result EQUAL 0)
  19. string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1;\\2;\\3" _obs_version_canonical ${_obs_version})
  20. endif()
  21. elseif(DEFINED OBS_VERSION_OVERRIDE)
  22. if(OBS_VERSION_OVERRIDE MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+).*")
  23. string(
  24. REGEX REPLACE
  25. "([0-9]+)\\.([0-9]+)\\.([0-9]+).*"
  26. "\\1;\\2;\\3"
  27. _obs_version_canonical
  28. ${OBS_VERSION_OVERRIDE}
  29. )
  30. set(_obs_version ${OBS_VERSION_OVERRIDE})
  31. else()
  32. message(FATAL_ERROR "Invalid version supplied - must be <MAJOR>.<MINOR>.<PATCH>[-(rc|beta)<NUMBER>].")
  33. endif()
  34. endif()
  35. # Set beta/rc versions if suffix included in version string
  36. if(_obs_version MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+-rc[0-9]+")
  37. string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.[0-9]+-rc([0-9]+).*$" "\\1" _obs_release_candidate ${_obs_version})
  38. elseif(_obs_version MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+-beta[0-9]+")
  39. string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.[0-9]+-beta([0-9]+).*$" "\\1" _obs_beta ${_obs_version})
  40. endif()
  41. list(GET _obs_version_canonical 0 OBS_VERSION_MAJOR)
  42. list(GET _obs_version_canonical 1 OBS_VERSION_MINOR)
  43. list(GET _obs_version_canonical 2 OBS_VERSION_PATCH)
  44. set(OBS_RELEASE_CANDIDATE ${_obs_release_candidate})
  45. set(OBS_BETA ${_obs_beta})
  46. string(REPLACE ";" "." OBS_VERSION_CANONICAL "${_obs_version_canonical}")
  47. string(REPLACE ";" "." OBS_VERSION "${_obs_version}")
  48. if(OBS_RELEASE_CANDIDATE GREATER 0)
  49. message(
  50. AUTHOR_WARNING
  51. "******************************************************************************\n"
  52. " + OBS-Studio - Release candidate detected, OBS_VERSION is now: ${OBS_VERSION}\n"
  53. "******************************************************************************"
  54. )
  55. elseif(OBS_BETA GREATER 0)
  56. message(
  57. AUTHOR_WARNING
  58. "******************************************************************************\n"
  59. " + OBS-Studio - Beta detected, OBS_VERSION is now: ${OBS_VERSION}\n"
  60. "******************************************************************************"
  61. )
  62. endif()
  63. unset(_obs_default_version)
  64. unset(_obs_version)
  65. unset(_obs_version_canonical)
  66. unset(_obs_release_candidate)
  67. unset(_obs_beta)
  68. unset(_obs_version_result)