sof/scripts/cmake/version-build-counter.cmake

44 lines
1.3 KiB
CMake

# SPDX-License-Identifier: BSD-3-Clause
# Implements build counter and adds it as post-build action for sof
cmake_minimum_required(VERSION 3.13)
set(VERSION_BUILD_COUNTER_CMAKE_PATH ${CMAKE_CURRENT_LIST_DIR}/version-build-counter.cmake)
set(BUILD_COUNTER_PATH "${SOF_ROOT_BINARY_DIRECTORY}/.build")
# Among many other differences, the Zephyr build does not invoke
# sof_add_build_counter_rule() at build time. In other words, Zephyr has
# never supported incrementing the BLD_COUNTERS: SOF_BUILD is always
# equal to the starting value below when building with Zephyr.
if(NOT EXISTS "${BUILD_COUNTER_PATH}")
file(WRITE "${BUILD_COUNTER_PATH}" "1")
endif()
file(READ "${BUILD_COUNTER_PATH}" SOF_BUILD)
if(NOT SOF_BUILD MATCHES "^[0-9]+$")
message(WARNING "Invalid SOF_BUILD - setting to 1")
set(SOF_BUILD 1)
endif()
function(sof_add_build_counter_rule)
add_custom_command(
TARGET sof
POST_BUILD
COMMAND ${CMAKE_COMMAND}
-DSOF_ROOT_BINARY_DIRECTORY=${SOF_ROOT_BINARY_DIRECTORY}
-DBUILD_COUNTER_INCREMENT=ON
-P ${VERSION_BUILD_COUNTER_CMAKE_PATH}
COMMENT "Incrementing build number in ${BUILD_COUNTER_PATH}"
VERBATIM
USES_TERMINAL
)
endfunction()
if(BUILD_COUNTER_INCREMENT)
MATH(EXPR NEXT_SOF_BUILD "(${SOF_BUILD} + 1) % 65536")
file(WRITE "${BUILD_COUNTER_PATH}" ${NEXT_SOF_BUILD})
endif()