versionconfig.cmake 3.1 KB

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