blob: 326a33ca2a271d90f4e385836074ea213b06821c [file] [log] [blame]
Anas Nashif3ae52622019-04-06 09:08:09 -04001# SPDX-License-Identifier: Apache-2.0
2
Marc Herberta880fb12019-05-03 18:29:08 -07003#.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 Cufi7d764b32018-01-11 15:46:44 +010030include(${ZEPHYR_BASE}/cmake/hex.cmake)
31file(READ ${ZEPHYR_BASE}/VERSION ver)
Anas Nashif38828662017-11-07 19:32:47 -050032
33string(REGEX MATCH "VERSION_MAJOR = ([0-9]*)" _ ${ver})
34set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1})
35
36string(REGEX MATCH "VERSION_MINOR = ([0-9]*)" _ ${ver})
37set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_1})
38
39string(REGEX MATCH "PATCHLEVEL = ([0-9]*)" _ ${ver})
40set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_1})
41
42string(REGEX MATCH "VERSION_TWEAK = ([0-9]*)" _ ${ver})
43set(PROJECT_VERSION_TWEAK ${CMAKE_MATCH_1})
44
Anas Nashifbe259362017-11-19 22:42:19 -050045string(REGEX MATCH "EXTRAVERSION = ([a-z0-9]*)" _ ${ver})
Anas Nashif38828662017-11-07 19:32:47 -050046set(PROJECT_VERSION_EXTRA ${CMAKE_MATCH_1})
47
Sebastian Bøe669781f2018-09-28 13:22:17 +020048# Temporary convenience variable
49set(PROJECT_VERSION_WITHOUT_TWEAK ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
Anas Nashif38828662017-11-07 19:32:47 -050050
Anas Nashifef486b22020-02-17 10:14:09 -050051
52if(PROJECT_VERSION_EXTRA)
53 set(PROJECT_VERSION_EXTRA_STR "-${PROJECT_VERSION_EXTRA}")
54endif()
55
Sebastian Bøe12f8f762017-10-27 15:43:34 +020056if(PROJECT_VERSION_TWEAK)
Sebastian Bøe669781f2018-09-28 13:22:17 +020057 set(PROJECT_VERSION ${PROJECT_VERSION_WITHOUT_TWEAK}.${PROJECT_VERSION_TWEAK})
58else()
59 set(PROJECT_VERSION ${PROJECT_VERSION_WITHOUT_TWEAK})
Sebastian Bøe12f8f762017-10-27 15:43:34 +020060endif()
61
Anas Nashifef486b22020-02-17 10:14:09 -050062set(PROJECT_VERSION_STR ${PROJECT_VERSION}${PROJECT_VERSION_EXTRA_STR})
63
Torsten Rasmussen2a74dc22021-05-07 11:47:25 +020064if(DEFINED BUILD_VERSION)
65 set(BUILD_VERSION_STR ", build: ${BUILD_VERSION}")
66endif()
67
Torsten Rasmussen3dd96d82020-02-14 14:16:06 +010068if (NOT NO_PRINT_VERSION)
Torsten Rasmussen2a74dc22021-05-07 11:47:25 +020069 message(STATUS "Zephyr version: ${PROJECT_VERSION_STR} (${ZEPHYR_BASE})${BUILD_VERSION_STR}")
Torsten Rasmussen3dd96d82020-02-14 14:16:06 +010070endif()
Sebastian Bøe669781f2018-09-28 13:22:17 +020071
Sebastian Bøe12f8f762017-10-27 15:43:34 +020072set(MAJOR ${PROJECT_VERSION_MAJOR}) # Temporary convenience variable
Anas Nashif38828662017-11-07 19:32:47 -050073set(MINOR ${PROJECT_VERSION_MINOR}) # Temporary convenience variable
74set(PATCH ${PROJECT_VERSION_PATCH}) # Temporary convenience variable
Sebastian Bøe12f8f762017-10-27 15:43:34 +020075
Sebastian Bøe669781f2018-09-28 13:22:17 +020076math(EXPR KERNEL_VERSION_NUMBER_INT "(${MAJOR} << 16) + (${MINOR} << 8) + (${PATCH})")
77math(EXPR KERNELVERSION_INT "(${MAJOR} << 24) + (${MINOR} << 16) + (${PATCH} << 8) + (${PROJECT_VERSION_TWEAK})")
Anas Nashif38828662017-11-07 19:32:47 -050078
Anas Nashif38828662017-11-07 19:32:47 -050079to_hex(${KERNEL_VERSION_NUMBER_INT} KERNEL_VERSION_NUMBER)
Sebastian Bøe669781f2018-09-28 13:22:17 +020080to_hex(${KERNELVERSION_INT} KERNELVERSION)
Sebastian Bøe12f8f762017-10-27 15:43:34 +020081
82set(KERNEL_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
83set(KERNEL_VERSION_MINOR ${PROJECT_VERSION_MINOR})
84set(KERNEL_PATCHLEVEL ${PROJECT_VERSION_PATCH})
Sebastian Bøe669781f2018-09-28 13:22:17 +020085
Anas Nashiff746cb32018-01-06 20:48:57 -050086if(PROJECT_VERSION_EXTRA)
Sebastian Bøe669781f2018-09-28 13:22:17 +020087 set(KERNEL_VERSION_STRING "\"${PROJECT_VERSION_WITHOUT_TWEAK}-${PROJECT_VERSION_EXTRA}\"")
Anas Nashiff746cb32018-01-06 20:48:57 -050088else()
Sebastian Bøe669781f2018-09-28 13:22:17 +020089 set(KERNEL_VERSION_STRING "\"${PROJECT_VERSION_WITHOUT_TWEAK}\"")
Anas Nashiff746cb32018-01-06 20:48:57 -050090endif()
Sebastian Bøe12f8f762017-10-27 15:43:34 +020091
Sebastian Bøe669781f2018-09-28 13:22:17 +020092set(ZEPHYR_VERSION_CODE ${KERNEL_VERSION_NUMBER_INT})
93
94# Cleanup convenience variables
95unset(MAJOR)
96unset(MINOR)
97unset(PATCH)
98unset(PROJECT_VERSION_WITHOUT_TWEAK)