mirror of
https://github.com/zephyrproject-rtos/zephyr.git
synced 2024-12-04 11:39:46 +08:00
3dd96d8927
When ZephyrConfig package is being version checked, then ZephyrConfigVersion.cmake loads version.cmake. This causes a print message, such as the following to happen: -- Zephyr version: 2.2.0 Now, in case a user has multiple Zephyr installations, this could result in something similar to: -- Zephyr version: 2.2.0 -- Zephyr version: 2.x.0 -- Zephyr version: 3.x.0 being printed. This commit add the possibility to disable version printing. With new Zephyr base find_package, printing of ZEPHYR_BASE is added after the version, in order to make it easy for users to see which Zephyr is used. Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no> Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no> suggested change: print ZEPHYR_BASE
95 lines
2.9 KiB
CMake
95 lines
2.9 KiB
CMake
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
#.rst:
|
|
# version.cmake
|
|
# -------------
|
|
#
|
|
# Inputs:
|
|
#
|
|
# ``*VERSION*`` and other constants set by
|
|
# maintainers in ``${ZEPHYR_BASE}/VERSION``
|
|
#
|
|
# Outputs with examples::
|
|
#
|
|
# PROJECT_VERSION 1.14.99.07
|
|
# KERNEL_VERSION_STRING "1.14.99-extraver"
|
|
#
|
|
# KERNEL_VERSION_MAJOR 1
|
|
# KERNEL_VERSION_MINOR 14
|
|
# KERNEL_PATCHLEVEL 99
|
|
# KERNELVERSION 0x10E6307
|
|
# KERNEL_VERSION_NUMBER 0x10E63
|
|
# ZEPHYR_VERSION_CODE 69219
|
|
#
|
|
# Most outputs are converted to C macros, see ``version.h.in``
|
|
#
|
|
# See also: independent and more dynamic ``BUILD_VERSION`` in
|
|
# ``git.cmake``.
|
|
|
|
|
|
include(${ZEPHYR_BASE}/cmake/hex.cmake)
|
|
file(READ ${ZEPHYR_BASE}/VERSION ver)
|
|
|
|
string(REGEX MATCH "VERSION_MAJOR = ([0-9]*)" _ ${ver})
|
|
set(PROJECT_VERSION_MAJOR ${CMAKE_MATCH_1})
|
|
|
|
string(REGEX MATCH "VERSION_MINOR = ([0-9]*)" _ ${ver})
|
|
set(PROJECT_VERSION_MINOR ${CMAKE_MATCH_1})
|
|
|
|
string(REGEX MATCH "PATCHLEVEL = ([0-9]*)" _ ${ver})
|
|
set(PROJECT_VERSION_PATCH ${CMAKE_MATCH_1})
|
|
|
|
string(REGEX MATCH "VERSION_TWEAK = ([0-9]*)" _ ${ver})
|
|
set(PROJECT_VERSION_TWEAK ${CMAKE_MATCH_1})
|
|
|
|
string(REGEX MATCH "EXTRAVERSION = ([a-z0-9]*)" _ ${ver})
|
|
set(PROJECT_VERSION_EXTRA ${CMAKE_MATCH_1})
|
|
|
|
# Temporary convenience variable
|
|
set(PROJECT_VERSION_WITHOUT_TWEAK ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
|
|
|
|
|
|
if(PROJECT_VERSION_EXTRA)
|
|
set(PROJECT_VERSION_EXTRA_STR "-${PROJECT_VERSION_EXTRA}")
|
|
endif()
|
|
|
|
if(PROJECT_VERSION_TWEAK)
|
|
set(PROJECT_VERSION ${PROJECT_VERSION_WITHOUT_TWEAK}.${PROJECT_VERSION_TWEAK})
|
|
else()
|
|
set(PROJECT_VERSION ${PROJECT_VERSION_WITHOUT_TWEAK})
|
|
endif()
|
|
|
|
set(PROJECT_VERSION_STR ${PROJECT_VERSION}${PROJECT_VERSION_EXTRA_STR})
|
|
|
|
if (NOT NO_PRINT_VERSION)
|
|
message(STATUS "Zephyr version: ${PROJECT_VERSION_STR} (${ZEPHYR_BASE})")
|
|
endif()
|
|
|
|
set(MAJOR ${PROJECT_VERSION_MAJOR}) # Temporary convenience variable
|
|
set(MINOR ${PROJECT_VERSION_MINOR}) # Temporary convenience variable
|
|
set(PATCH ${PROJECT_VERSION_PATCH}) # Temporary convenience variable
|
|
|
|
math(EXPR KERNEL_VERSION_NUMBER_INT "(${MAJOR} << 16) + (${MINOR} << 8) + (${PATCH})")
|
|
math(EXPR KERNELVERSION_INT "(${MAJOR} << 24) + (${MINOR} << 16) + (${PATCH} << 8) + (${PROJECT_VERSION_TWEAK})")
|
|
|
|
to_hex(${KERNEL_VERSION_NUMBER_INT} KERNEL_VERSION_NUMBER)
|
|
to_hex(${KERNELVERSION_INT} KERNELVERSION)
|
|
|
|
set(KERNEL_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
|
|
set(KERNEL_VERSION_MINOR ${PROJECT_VERSION_MINOR})
|
|
set(KERNEL_PATCHLEVEL ${PROJECT_VERSION_PATCH})
|
|
|
|
if(PROJECT_VERSION_EXTRA)
|
|
set(KERNEL_VERSION_STRING "\"${PROJECT_VERSION_WITHOUT_TWEAK}-${PROJECT_VERSION_EXTRA}\"")
|
|
else()
|
|
set(KERNEL_VERSION_STRING "\"${PROJECT_VERSION_WITHOUT_TWEAK}\"")
|
|
endif()
|
|
|
|
set(ZEPHYR_VERSION_CODE ${KERNEL_VERSION_NUMBER_INT})
|
|
|
|
# Cleanup convenience variables
|
|
unset(MAJOR)
|
|
unset(MINOR)
|
|
unset(PATCH)
|
|
unset(PROJECT_VERSION_WITHOUT_TWEAK)
|