version.cmake 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. # This file is part of Desktop App Toolkit,
  2. # a set of libraries for developing nice desktop applications.
  3. #
  4. # For license and copyright information please follow this link:
  5. # https://github.com/desktop-app/legal/blob/master/LEGAL
  6. function(desktop_app_parse_version file)
  7. file(STRINGS ${file} lines)
  8. foreach (line ${lines})
  9. string(REPLACE " " ";" parts ${line})
  10. list(GET parts 0 name)
  11. if (${name} STREQUAL "AppVersionOriginal")
  12. list(LENGTH parts length)
  13. math(EXPR index "${length} - 1")
  14. list(GET parts ${index} version)
  15. break()
  16. endif()
  17. endforeach()
  18. if (NOT ${version} MATCHES "[0-9]+\.[0-9]+(\.[0-9]+(\.([0-9]+|beta))?)?")
  19. message(FATAL_ERROR "Bad version: ${version}, check ${file}")
  20. endif()
  21. message("Version: ${version}")
  22. set(beta 0)
  23. set(beta_bool "false")
  24. set(alpha 0)
  25. string(REPLACE "." ";" components ${version})
  26. list(LENGTH components components_count)
  27. list(GET components 0 major)
  28. list(GET components 1 minor)
  29. if (${components_count} GREATER 2)
  30. list(GET components 2 patch)
  31. if (${components_count} GREATER 3)
  32. list(GET components 3 alpha)
  33. if (${alpha} STREQUAL beta)
  34. set(beta 1)
  35. set(beta_bool "true")
  36. set(alpha 0)
  37. endif()
  38. endif()
  39. else()
  40. set(patch 0)
  41. endif()
  42. if (DESKTOP_APP_SPECIAL_TARGET STREQUAL "")
  43. set(alpha 0)
  44. endif()
  45. math(EXPR version_int "${major} * 1000000 + ${minor} * 1000 + ${patch}")
  46. set(str_major ${major}.${minor})
  47. set(str_normal ${str_major}.${patch})
  48. if (${patch} STREQUAL 0)
  49. set(str_small ${str_major})
  50. else()
  51. set(str_small ${str_normal})
  52. endif()
  53. if (NOT ${alpha} STREQUAL 0)
  54. math(EXPR version_int_alpha "${version_int} * 1000 + ${alpha}")
  55. else()
  56. set(version_int_alpha 0)
  57. endif()
  58. set(version_dot ${str_normal}.${alpha})
  59. string(REPLACE "." "," version_comma ${version_dot})
  60. set(desktop_app_version_int ${version_int} PARENT_SCOPE)
  61. set(desktop_app_version_int_alpha ${version_int_alpha} PARENT_SCOPE)
  62. set(desktop_app_version_string ${str_normal} PARENT_SCOPE)
  63. set(desktop_app_version_string_small ${str_small} PARENT_SCOPE)
  64. set(desktop_app_version_beta_bool ${beta_bool} PARENT_SCOPE)
  65. set(desktop_app_version_dot ${version_dot} PARENT_SCOPE)
  66. set(desktop_app_version_comma ${version_dot} PARENT_SCOPE)
  67. set(desktop_app_version_cmake ${version_dot} PARENT_SCOPE)
  68. endfunction()