|
33 | 33 | # The final load of `version.cmake` will setup correct build version values.
|
34 | 34 |
|
35 | 35 | include(${ZEPHYR_BASE}/cmake/hex.cmake)
|
36 |
| -file(READ ${ZEPHYR_BASE}/VERSION ver) |
37 |
| -set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${ZEPHYR_BASE}/VERSION) |
38 | 36 |
|
39 |
| -string(REGEX MATCH "VERSION_MAJOR = ([0-9]*)" _ ${ver}) |
40 |
| -set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1}) |
| 37 | +if(NOT DEFINED VERSION_FILE AND NOT DEFINED VERSION_TYPE) |
| 38 | + set(VERSION_FILE ${ZEPHYR_BASE}/VERSION ${APPLICATION_SOURCE_DIR}/VERSION) |
| 39 | + set(VERSION_TYPE KERNEL APP) |
| 40 | +endif() |
41 | 41 |
|
42 |
| -string(REGEX MATCH "VERSION_MINOR = ([0-9]*)" _ ${ver}) |
43 |
| -set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_1}) |
| 42 | +foreach(type file IN ZIP_LISTS VERSION_TYPE VERSION_FILE) |
| 43 | + if(NOT EXISTS ${file}) |
| 44 | + break() |
| 45 | + endif() |
| 46 | + file(READ ${file} ver) |
| 47 | + set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${file}) |
44 | 48 |
|
45 |
| -string(REGEX MATCH "PATCHLEVEL = ([0-9]*)" _ ${ver}) |
46 |
| -set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_1}) |
| 49 | + string(REGEX MATCH "VERSION_MAJOR = ([0-9]*)" _ ${ver}) |
| 50 | + set(${type}_VERSION_MAJOR ${CMAKE_MATCH_1}) |
47 | 51 |
|
48 |
| -string(REGEX MATCH "VERSION_TWEAK = ([0-9]*)" _ ${ver}) |
49 |
| -set(PROJECT_VERSION_TWEAK ${CMAKE_MATCH_1}) |
| 52 | + string(REGEX MATCH "VERSION_MINOR = ([0-9]*)" _ ${ver}) |
| 53 | + set(${type}_VERSION_MINOR ${CMAKE_MATCH_1}) |
50 | 54 |
|
51 |
| -string(REGEX MATCH "EXTRAVERSION = ([a-z0-9]*)" _ ${ver}) |
52 |
| -set(PROJECT_VERSION_EXTRA ${CMAKE_MATCH_1}) |
| 55 | + string(REGEX MATCH "PATCHLEVEL = ([0-9]*)" _ ${ver}) |
| 56 | + set(${type}_PATCHLEVEL ${CMAKE_MATCH_1}) |
53 | 57 |
|
54 |
| -# Temporary convenience variable |
55 |
| -set(PROJECT_VERSION_WITHOUT_TWEAK ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) |
| 58 | + string(REGEX MATCH "VERSION_TWEAK = ([0-9]*)" _ ${ver}) |
| 59 | + set(${type}_VERSION_TWEAK ${CMAKE_MATCH_1}) |
56 | 60 |
|
| 61 | + string(REGEX MATCH "EXTRAVERSION = ([a-z0-9]*)" _ ${ver}) |
| 62 | + set(${type}_VERSION_EXTRA ${CMAKE_MATCH_1}) |
57 | 63 |
|
58 |
| -if(PROJECT_VERSION_EXTRA) |
59 |
| - set(PROJECT_VERSION_EXTRA_STR "-${PROJECT_VERSION_EXTRA}") |
60 |
| -endif() |
| 64 | + # Temporary convenience variable |
| 65 | + set(${type}_VERSION_WITHOUT_TWEAK ${${type}_VERSION_MAJOR}.${${type}_VERSION_MINOR}.${${type}_PATCHLEVEL}) |
61 | 66 |
|
62 |
| -if(PROJECT_VERSION_TWEAK) |
63 |
| - set(PROJECT_VERSION ${PROJECT_VERSION_WITHOUT_TWEAK}.${PROJECT_VERSION_TWEAK}) |
64 |
| -else() |
65 |
| - set(PROJECT_VERSION ${PROJECT_VERSION_WITHOUT_TWEAK}) |
66 |
| -endif() |
67 | 67 |
|
68 |
| -set(PROJECT_VERSION_STR ${PROJECT_VERSION}${PROJECT_VERSION_EXTRA_STR}) |
| 68 | + set(MAJOR ${${type}_VERSION_MAJOR}) # Temporary convenience variable |
| 69 | + set(MINOR ${${type}_VERSION_MINOR}) # Temporary convenience variable |
| 70 | + set(PATCH ${${type}_PATCHLEVEL}) # Temporary convenience variable |
| 71 | + set(TWEAK ${${type}_VERSION_TWEAK}) # Temporary convenience variable |
69 | 72 |
|
70 |
| -if(DEFINED BUILD_VERSION) |
71 |
| - set(BUILD_VERSION_STR ", build: ${BUILD_VERSION}") |
72 |
| -endif() |
| 73 | + math(EXPR ${type}_VERSION_NUMBER_INT "(${MAJOR} << 16) + (${MINOR} << 8) + (${PATCH})") |
| 74 | + math(EXPR ${type}VERSION_INT "(${MAJOR} << 24) + (${MINOR} << 16) + (${PATCH} << 8) + (${TWEAK})") |
73 | 75 |
|
74 |
| -if (NOT NO_PRINT_VERSION) |
75 |
| - message(STATUS "Zephyr version: ${PROJECT_VERSION_STR} (${ZEPHYR_BASE})${BUILD_VERSION_STR}") |
76 |
| -endif() |
| 76 | + to_hex(${${type}_VERSION_NUMBER_INT} ${type}_VERSION_NUMBER) |
| 77 | + to_hex(${${type}VERSION_INT} ${type}VERSION) |
77 | 78 |
|
78 |
| -set(MAJOR ${PROJECT_VERSION_MAJOR}) # Temporary convenience variable |
79 |
| -set(MINOR ${PROJECT_VERSION_MINOR}) # Temporary convenience variable |
80 |
| -set(PATCH ${PROJECT_VERSION_PATCH}) # Temporary convenience variable |
| 79 | + if(${type}_VERSION_EXTRA) |
| 80 | + set(${type}_VERSION_STRING "${${type}_VERSION_WITHOUT_TWEAK}-${${type}_VERSION_EXTRA}") |
| 81 | + else() |
| 82 | + set(${type}_VERSION_STRING "${${type}_VERSION_WITHOUT_TWEAK}") |
| 83 | + endif() |
81 | 84 |
|
82 |
| -math(EXPR KERNEL_VERSION_NUMBER_INT "(${MAJOR} << 16) + (${MINOR} << 8) + (${PATCH})") |
83 |
| -math(EXPR KERNELVERSION_INT "(${MAJOR} << 24) + (${MINOR} << 16) + (${PATCH} << 8) + (${PROJECT_VERSION_TWEAK})") |
| 85 | + if(type STREQUAL KERNEL) |
| 86 | + set(PROJECT_VERSION_MAJOR ${${type}_VERSION_MAJOR}) |
| 87 | + set(PROJECT_VERSION_MINOR ${${type}_VERSION_MINOR}) |
| 88 | + set(PROJECT_VERSION_PATCH ${${type}_PATCHLEVEL}) |
| 89 | + set(PROJECT_VERSION_TWEAK ${${type}_VERSION_TWEAK}) |
| 90 | + set(PROJECT_VERSION_EXTRA ${${type}_VERSION_EXTRA}) |
84 | 91 |
|
85 |
| -to_hex(${KERNEL_VERSION_NUMBER_INT} KERNEL_VERSION_NUMBER) |
86 |
| -to_hex(${KERNELVERSION_INT} KERNELVERSION) |
| 92 | + if(PROJECT_VERSION_EXTRA) |
| 93 | + set(PROJECT_VERSION_EXTRA_STR "-${PROJECT_VERSION_EXTRA}") |
| 94 | + endif() |
87 | 95 |
|
88 |
| -set(KERNEL_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) |
89 |
| -set(KERNEL_VERSION_MINOR ${PROJECT_VERSION_MINOR}) |
90 |
| -set(KERNEL_PATCHLEVEL ${PROJECT_VERSION_PATCH}) |
| 96 | + if(${type}_VERSION_TWEAK) |
| 97 | + set(PROJECT_VERSION ${${type}_VERSION_WITHOUT_TWEAK}.${${type}_VERSION_TWEAK}) |
| 98 | + else() |
| 99 | + set(PROJECT_VERSION ${${type}_VERSION_WITHOUT_TWEAK}) |
| 100 | + endif() |
91 | 101 |
|
92 |
| -if(PROJECT_VERSION_EXTRA) |
93 |
| - set(KERNEL_VERSION_STRING "\"${PROJECT_VERSION_WITHOUT_TWEAK}-${PROJECT_VERSION_EXTRA}\"") |
94 |
| -else() |
95 |
| - set(KERNEL_VERSION_STRING "\"${PROJECT_VERSION_WITHOUT_TWEAK}\"") |
96 |
| -endif() |
| 102 | + set(PROJECT_VERSION_STR ${PROJECT_VERSION}${PROJECT_VERSION_EXTRA_STR}) |
| 103 | + |
| 104 | + set(ZEPHYR_VERSION_CODE ${${type}_VERSION_NUMBER_INT}) |
| 105 | + set(ZEPHYR_VERSION TRUE) |
| 106 | + |
| 107 | + if(DEFINED BUILD_VERSION) |
| 108 | + set(BUILD_VERSION_STR ", build: ${BUILD_VERSION}") |
| 109 | + endif() |
97 | 110 |
|
98 |
| -set(ZEPHYR_VERSION_CODE ${KERNEL_VERSION_NUMBER_INT}) |
| 111 | + if (NOT NO_PRINT_VERSION) |
| 112 | + message(STATUS "Zephyr version: ${PROJECT_VERSION_STR} (${ZEPHYR_BASE})${BUILD_VERSION_STR}") |
| 113 | + endif() |
| 114 | + endif() |
99 | 115 |
|
100 |
| -# Cleanup convenience variables |
101 |
| -unset(MAJOR) |
102 |
| -unset(MINOR) |
103 |
| -unset(PATCH) |
104 |
| -unset(PROJECT_VERSION_WITHOUT_TWEAK) |
| 116 | + # Cleanup convenience variables |
| 117 | + unset(MAJOR) |
| 118 | + unset(MINOR) |
| 119 | + unset(PATCH) |
| 120 | + unset(${type}_VERSION_WITHOUT_TWEAK) |
| 121 | +endforeach() |
0 commit comments