versionconfig.cmake 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # OBS CMake common version helper module
  2. # cmake-format: off
  3. # cmake-lint: disable=C0301
  4. # cmake-format: on
  5. # Attempt to automatically discover expected OBS version
  6. if(NOT DEFINED OBS_VERSION_OVERRIDE)
  7. if(DEFINED RELEASE_CANDIDATE)
  8. if(RELEASE_CANDIDATE MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+-rc[0-9]+")
  9. string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)-rc([0-9])+" "\\1;\\2;\\3;\\4" _obs_release_candidate
  10. ${RELEASE_CANDIDATE})
  11. list(GET _obs_release_candidate 0 1 2 _obs_version_canonical)
  12. set(_obs_version ${RELEASE_CANDIDATE})
  13. else()
  14. message(FATAL_ERROR "Invalid release candidate version supplied - must be <MAJOR>.<MINOR>.<PATCH>-rc<CANDIDATE>.")
  15. endif()
  16. elseif(DEFINED BETA)
  17. if(BETA MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+-beta[0-9]+")
  18. string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+)-beta([0-9])+" "\\1;\\2;\\3;\\4" _obs_beta ${BETA})
  19. list(GET _beta 0 1 2 _obs_version_canonical)
  20. set(_obs_version ${BETA})
  21. else()
  22. message(FATAL_ERROR "Invalid beta version supplied - must be <MAJOR>.<MINOR>.<PATCH>-beta<RELEASE>.")
  23. endif()
  24. elseif(EXISTS "${CMAKE_SOURCE_DIR}/.git")
  25. execute_process(
  26. COMMAND git describe --always --tags --dirty=-modified
  27. OUTPUT_VARIABLE _obs_version
  28. WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
  29. RESULT_VARIABLE _obs_version_result
  30. OUTPUT_STRIP_TRAILING_WHITESPACE)
  31. if(_obs_version_result EQUAL 0)
  32. if(_obs_version MATCHES "rc[0-9]+$")
  33. set(RELEASE_CANDIDATE ${_obs_version})
  34. elseif(_obs_version MATCHES "beta[0-9]+$")
  35. set(BETA ${_obs_version})
  36. endif()
  37. string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1;\\2;\\3" _obs_version_canonical ${_obs_version})
  38. else()
  39. set(_obs_version ${_obs_default_version})
  40. set(_obs_version_canonical ${_obs_default_version})
  41. endif()
  42. endif()
  43. else()
  44. if(OBS_VERSION_OVERRIDE MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+).*")
  45. string(REGEX REPLACE "([0-9]+)\\.([0-9]+)\\.([0-9]+).*" "\\1;\\2;\\3" _obs_version_canonical ${_obs_version})
  46. set(_obs_version ${OBS_VERSION_OVERRIDE})
  47. else()
  48. message(FATAL_ERROR "Invalid version supplied - must be <MAJOR>.<MINOR>.<PATCH>.")
  49. endif()
  50. endif()
  51. list(GET _obs_version_canonical 0 OBS_VERSION_MAJOR)
  52. list(GET _obs_version_canonical 1 OBS_VERSION_MINOR)
  53. list(GET _obs_version_canonical 2 OBS_VERSION_PATCH)
  54. list(GET _obs_release_candidate 0 OBS_RELEASE_CANDIDATE_MAJOR)
  55. list(GET _obs_release_candidate 1 OBS_RELEASE_CANDIDATE_MINOR)
  56. list(GET _obs_release_candidate 2 OBS_RELEASE_CANDIDATE_PATCH)
  57. list(GET _obs_release_candidate 3 OBS_RELEASE_CANDIDATE)
  58. list(GET _obs_beta 0 OBS_BETA_MAJOR)
  59. list(GET _obs_beta 1 OBS_BETA_MINOR)
  60. list(GET _obs_beta 2 OBS_BETA_PATCH)
  61. list(GET _obs_beta 3 OBS_BETA)
  62. string(REPLACE ";" "." OBS_VERSION_CANONICAL "${_obs_version_canonical}")
  63. string(REPLACE ";" "." OBS_VERSION "${_obs_version}")
  64. if(OBS_RELEASE_CANDIDATE GREATER 0)
  65. message(
  66. AUTHOR_WARNING
  67. "******************************************************************************\n"
  68. " + OBS-Studio - Release candidate detected, OBS_VERSION is now: ${OBS_VERSION}\n"
  69. "******************************************************************************")
  70. elseif(OBS_BETA GREATER 0)
  71. message(
  72. AUTHOR_WARNING
  73. "******************************************************************************\n"
  74. " + OBS-Studio - Beta detected, OBS_VERSION is now: ${OBS_VERSION}\n"
  75. "******************************************************************************")
  76. endif()
  77. unset(_obs_default_version)
  78. unset(_obs_version)
  79. unset(_obs_version_canonical)
  80. unset(_obs_release_candidate)
  81. unset(_obs_beta)
  82. unset(_obs_version_result)