VersionConfig.cmake 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. set(OBS_COMPANY_NAME "OBS Project")
  2. set(OBS_PRODUCT_NAME "OBS Studio")
  3. set(OBS_WEBSITE "https://www.obsproject.com")
  4. set(OBS_COMMENTS
  5. "Free and open source software for video recording and live streaming")
  6. set(OBS_LEGAL_COPYRIGHT "(C) Hugh Bailey")
  7. # Configure default version strings
  8. set(_OBS_DEFAULT_VERSION "0" "0" "1")
  9. set(_OBS_RELEASE_CANDIDATE "0" "0" "0" "0")
  10. set(_OBS_BETA "0" "0" "0" "0")
  11. # Set full and canonical OBS version from current git tag or manual override
  12. if(NOT DEFINED OBS_VERSION_OVERRIDE)
  13. # Set release candidate version information Must be a string in the format of
  14. # "x.x.x-rcx"
  15. if(DEFINED RELEASE_CANDIDATE)
  16. string(REPLACE "-rc" "." _OBS_RELEASE_CANDIDATE ${RELEASE_CANDIDATE})
  17. string(REPLACE "." ";" _OBS_VERSION ${RELEASE_CANDIDATE})
  18. string(REPLACE "." ";" _OBS_RELEASE_CANDIDATE ${_OBS_RELEASE_CANDIDATE})
  19. list(GET _OBS_RELEASE_CANDIDATE 0 1 2 _OBS_VERSION_CANONICAL)
  20. # Set beta version information Must be a string in the format of
  21. # "x.x.x-betax"
  22. elseif(DEFINED BETA)
  23. string(REPLACE "-beta" "." _OBS_BETA ${BETA})
  24. string(REPLACE "." ";" _OBS_VERSION ${BETA})
  25. string(REPLACE "." ";" _OBS_BETA ${_OBS_BETA})
  26. list(GET _OBS_BETA 0 1 2 _OBS_VERSION_CANONICAL)
  27. elseif(EXISTS "${CMAKE_SOURCE_DIR}/.git")
  28. execute_process(
  29. COMMAND git describe --always --tags --dirty=-modified
  30. OUTPUT_VARIABLE _OBS_VERSION
  31. WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
  32. RESULT_VARIABLE _OBS_VERSION_RESULT
  33. OUTPUT_STRIP_TRAILING_WHITESPACE)
  34. if(NOT _OBS_VERSION_RESULT EQUAL 0)
  35. set(_OBS_VERSION "${_OBS_DEFAULT_VERSION}")
  36. endif()
  37. string(REPLACE "-" "." _CANONICAL_SPLIT ${_OBS_VERSION})
  38. string(REPLACE "." ";" _CANONICAL_SPLIT ${_CANONICAL_SPLIT})
  39. list(GET _CANONICAL_SPLIT 0 1 2 _OBS_VERSION_CANONICAL)
  40. string(REPLACE "." ";" _OBS_VERSION ${_OBS_VERSION})
  41. else()
  42. set(_OBS_VERSION ${_OBS_DEFAULT_VERSION})
  43. set(_OBS_VERSION_CANONICAL ${_OBS_DEFAULT_VERSION})
  44. endif()
  45. else()
  46. string(REPLACE "." ";" _OBS_VERSION "${OBS_VERSION_OVERRIDE}")
  47. string(REPLACE "-" ";" _OBS_VERSION_CANONICAL "${OBS_VERSION_OVERRIDE}")
  48. list(GET _OBS_VERSION_CANONICAL 0 _OBS_VERSION_CANONICAL)
  49. string(REPLACE "." ";" _OBS_VERSION_CANONICAL "${_OBS_VERSION_CANONICAL}")
  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. )
  71. elseif(OBS_BETA GREATER 0)
  72. message(
  73. AUTHOR_WARNING
  74. "******************************************************************************\n"
  75. " + OBS-Studio - Beta detected, OBS_VERSION is now: ${OBS_VERSION}\n"
  76. "******************************************************************************"
  77. )
  78. endif()
  79. # Define build number cache file
  80. set(BUILD_NUMBER_CACHE
  81. ${CMAKE_SOURCE_DIR}/cmake/.CMakeBuildNumber
  82. CACHE INTERNAL "OBS build number cache file")
  83. # Read build number from cache file or manual override
  84. if(NOT DEFINED OBS_BUILD_NUMBER AND EXISTS ${BUILD_NUMBER_CACHE})
  85. file(READ ${BUILD_NUMBER_CACHE} OBS_BUILD_NUMBER)
  86. math(EXPR OBS_BUILD_NUMBER "${OBS_BUILD_NUMBER}+1")
  87. elseif(NOT DEFINED OBS_BUILD_NUMBER)
  88. set(OBS_BUILD_NUMBER "1")
  89. endif()
  90. file(WRITE ${BUILD_NUMBER_CACHE} "${OBS_BUILD_NUMBER}")
  91. message(
  92. STATUS
  93. "OBS: Application Version: ${OBS_VERSION} - Build Number: ${OBS_BUILD_NUMBER}"
  94. )