Anas Nashif | 3ae5262 | 2019-04-06 09:08:09 -0400 | [diff] [blame] | 1 | # SPDX-License-Identifier: Apache-2.0 |
| 2 | |
Marc Herbert | a880fb1 | 2019-05-03 18:29:08 -0700 | [diff] [blame] | 3 | #.rst: |
| 4 | # version.cmake |
| 5 | # ------------- |
| 6 | # |
| 7 | # Inputs: |
| 8 | # |
| 9 | # ``*VERSION*`` and other constants set by |
| 10 | # maintainers in ``${ZEPHYR_BASE}/VERSION`` |
| 11 | # |
| 12 | # Outputs with examples:: |
| 13 | # |
| 14 | # PROJECT_VERSION 1.14.99.07 |
| 15 | # KERNEL_VERSION_STRING "1.14.99-extraver" |
| 16 | # |
| 17 | # KERNEL_VERSION_MAJOR 1 |
| 18 | # KERNEL_VERSION_MINOR 14 |
| 19 | # KERNEL_PATCHLEVEL 99 |
| 20 | # KERNELVERSION 0x10E6307 |
| 21 | # KERNEL_VERSION_NUMBER 0x10E63 |
| 22 | # ZEPHYR_VERSION_CODE 69219 |
| 23 | # |
| 24 | # Most outputs are converted to C macros, see ``version.h.in`` |
| 25 | # |
| 26 | # See also: independent and more dynamic ``BUILD_VERSION`` in |
| 27 | # ``git.cmake``. |
| 28 | |
| 29 | |
Carles Cufi | 7d764b3 | 2018-01-11 15:46:44 +0100 | [diff] [blame] | 30 | include(${ZEPHYR_BASE}/cmake/hex.cmake) |
| 31 | file(READ ${ZEPHYR_BASE}/VERSION ver) |
Anas Nashif | 3882866 | 2017-11-07 19:32:47 -0500 | [diff] [blame] | 32 | |
| 33 | string(REGEX MATCH "VERSION_MAJOR = ([0-9]*)" _ ${ver}) |
| 34 | set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1}) |
| 35 | |
| 36 | string(REGEX MATCH "VERSION_MINOR = ([0-9]*)" _ ${ver}) |
| 37 | set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_1}) |
| 38 | |
| 39 | string(REGEX MATCH "PATCHLEVEL = ([0-9]*)" _ ${ver}) |
| 40 | set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_1}) |
| 41 | |
| 42 | string(REGEX MATCH "VERSION_TWEAK = ([0-9]*)" _ ${ver}) |
| 43 | set(PROJECT_VERSION_TWEAK ${CMAKE_MATCH_1}) |
| 44 | |
Anas Nashif | be25936 | 2017-11-19 22:42:19 -0500 | [diff] [blame] | 45 | string(REGEX MATCH "EXTRAVERSION = ([a-z0-9]*)" _ ${ver}) |
Anas Nashif | 3882866 | 2017-11-07 19:32:47 -0500 | [diff] [blame] | 46 | set(PROJECT_VERSION_EXTRA ${CMAKE_MATCH_1}) |
| 47 | |
Sebastian Bøe | 669781f | 2018-09-28 13:22:17 +0200 | [diff] [blame] | 48 | # Temporary convenience variable |
| 49 | set(PROJECT_VERSION_WITHOUT_TWEAK ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}) |
Anas Nashif | 3882866 | 2017-11-07 19:32:47 -0500 | [diff] [blame] | 50 | |
Anas Nashif | ef486b2 | 2020-02-17 10:14:09 -0500 | [diff] [blame] | 51 | |
| 52 | if(PROJECT_VERSION_EXTRA) |
| 53 | set(PROJECT_VERSION_EXTRA_STR "-${PROJECT_VERSION_EXTRA}") |
| 54 | endif() |
| 55 | |
Sebastian Bøe | 12f8f76 | 2017-10-27 15:43:34 +0200 | [diff] [blame] | 56 | if(PROJECT_VERSION_TWEAK) |
Sebastian Bøe | 669781f | 2018-09-28 13:22:17 +0200 | [diff] [blame] | 57 | set(PROJECT_VERSION ${PROJECT_VERSION_WITHOUT_TWEAK}.${PROJECT_VERSION_TWEAK}) |
| 58 | else() |
| 59 | set(PROJECT_VERSION ${PROJECT_VERSION_WITHOUT_TWEAK}) |
Sebastian Bøe | 12f8f76 | 2017-10-27 15:43:34 +0200 | [diff] [blame] | 60 | endif() |
| 61 | |
Anas Nashif | ef486b2 | 2020-02-17 10:14:09 -0500 | [diff] [blame] | 62 | set(PROJECT_VERSION_STR ${PROJECT_VERSION}${PROJECT_VERSION_EXTRA_STR}) |
| 63 | |
Torsten Rasmussen | 2a74dc2 | 2021-05-07 11:47:25 +0200 | [diff] [blame] | 64 | if(DEFINED BUILD_VERSION) |
| 65 | set(BUILD_VERSION_STR ", build: ${BUILD_VERSION}") |
| 66 | endif() |
| 67 | |
Torsten Rasmussen | 3dd96d8 | 2020-02-14 14:16:06 +0100 | [diff] [blame] | 68 | if (NOT NO_PRINT_VERSION) |
Torsten Rasmussen | 2a74dc2 | 2021-05-07 11:47:25 +0200 | [diff] [blame] | 69 | message(STATUS "Zephyr version: ${PROJECT_VERSION_STR} (${ZEPHYR_BASE})${BUILD_VERSION_STR}") |
Torsten Rasmussen | 3dd96d8 | 2020-02-14 14:16:06 +0100 | [diff] [blame] | 70 | endif() |
Sebastian Bøe | 669781f | 2018-09-28 13:22:17 +0200 | [diff] [blame] | 71 | |
Sebastian Bøe | 12f8f76 | 2017-10-27 15:43:34 +0200 | [diff] [blame] | 72 | set(MAJOR ${PROJECT_VERSION_MAJOR}) # Temporary convenience variable |
Anas Nashif | 3882866 | 2017-11-07 19:32:47 -0500 | [diff] [blame] | 73 | set(MINOR ${PROJECT_VERSION_MINOR}) # Temporary convenience variable |
| 74 | set(PATCH ${PROJECT_VERSION_PATCH}) # Temporary convenience variable |
Sebastian Bøe | 12f8f76 | 2017-10-27 15:43:34 +0200 | [diff] [blame] | 75 | |
Sebastian Bøe | 669781f | 2018-09-28 13:22:17 +0200 | [diff] [blame] | 76 | math(EXPR KERNEL_VERSION_NUMBER_INT "(${MAJOR} << 16) + (${MINOR} << 8) + (${PATCH})") |
| 77 | math(EXPR KERNELVERSION_INT "(${MAJOR} << 24) + (${MINOR} << 16) + (${PATCH} << 8) + (${PROJECT_VERSION_TWEAK})") |
Anas Nashif | 3882866 | 2017-11-07 19:32:47 -0500 | [diff] [blame] | 78 | |
Anas Nashif | 3882866 | 2017-11-07 19:32:47 -0500 | [diff] [blame] | 79 | to_hex(${KERNEL_VERSION_NUMBER_INT} KERNEL_VERSION_NUMBER) |
Sebastian Bøe | 669781f | 2018-09-28 13:22:17 +0200 | [diff] [blame] | 80 | to_hex(${KERNELVERSION_INT} KERNELVERSION) |
Sebastian Bøe | 12f8f76 | 2017-10-27 15:43:34 +0200 | [diff] [blame] | 81 | |
| 82 | set(KERNEL_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) |
| 83 | set(KERNEL_VERSION_MINOR ${PROJECT_VERSION_MINOR}) |
| 84 | set(KERNEL_PATCHLEVEL ${PROJECT_VERSION_PATCH}) |
Sebastian Bøe | 669781f | 2018-09-28 13:22:17 +0200 | [diff] [blame] | 85 | |
Anas Nashif | f746cb3 | 2018-01-06 20:48:57 -0500 | [diff] [blame] | 86 | if(PROJECT_VERSION_EXTRA) |
Sebastian Bøe | 669781f | 2018-09-28 13:22:17 +0200 | [diff] [blame] | 87 | set(KERNEL_VERSION_STRING "\"${PROJECT_VERSION_WITHOUT_TWEAK}-${PROJECT_VERSION_EXTRA}\"") |
Anas Nashif | f746cb3 | 2018-01-06 20:48:57 -0500 | [diff] [blame] | 88 | else() |
Sebastian Bøe | 669781f | 2018-09-28 13:22:17 +0200 | [diff] [blame] | 89 | set(KERNEL_VERSION_STRING "\"${PROJECT_VERSION_WITHOUT_TWEAK}\"") |
Anas Nashif | f746cb3 | 2018-01-06 20:48:57 -0500 | [diff] [blame] | 90 | endif() |
Sebastian Bøe | 12f8f76 | 2017-10-27 15:43:34 +0200 | [diff] [blame] | 91 | |
Sebastian Bøe | 669781f | 2018-09-28 13:22:17 +0200 | [diff] [blame] | 92 | set(ZEPHYR_VERSION_CODE ${KERNEL_VERSION_NUMBER_INT}) |
| 93 | |
| 94 | # Cleanup convenience variables |
| 95 | unset(MAJOR) |
| 96 | unset(MINOR) |
| 97 | unset(PATCH) |
| 98 | unset(PROJECT_VERSION_WITHOUT_TWEAK) |