55 lines
1.9 KiB
CMake
55 lines
1.9 KiB
CMake
|
|
macro(HEXCHAR2DEC VAR VAL)
|
|
if(${VAL} MATCHES "[0-9]")
|
|
SET(${VAR} ${VAL})
|
|
elseif(${VAL} MATCHES "[aA]")
|
|
SET(${VAR} 10)
|
|
elseif(${VAL} MATCHES "[bB]")
|
|
SET(${VAR} 11)
|
|
elseif(${VAL} MATCHES "[cC]")
|
|
SET(${VAR} 12)
|
|
elseif(${VAL} MATCHES "[dD]")
|
|
SET(${VAR} 13)
|
|
elseif(${VAL} MATCHES "[eE]")
|
|
SET(${VAR} 14)
|
|
elseif(${VAL} MATCHES "[fF]")
|
|
SET(${VAR} 15)
|
|
else()
|
|
MESSAGE(FATAL_ERROR "Invalid format for hexidecimal character")
|
|
endif()
|
|
endmacro(HEXCHAR2DEC)
|
|
|
|
macro(HEX2DEC VAR VAL)
|
|
SET(CURINDEX 0)
|
|
STRING(LENGTH "${VAL}" CURLENGTH)
|
|
SET(${VAR} 0)
|
|
while(CURINDEX LESS CURLENGTH)
|
|
STRING(SUBSTRING "${VAL}" ${CURINDEX} 1 CHAR)
|
|
HEXCHAR2DEC(CHAR ${CHAR})
|
|
MATH(EXPR POWAH "(1<<((${CURLENGTH}-${CURINDEX}-1)*4))")
|
|
MATH(EXPR CHAR "(${CHAR}*${POWAH})")
|
|
MATH(EXPR ${VAR} "${${VAR}}+${CHAR}")
|
|
MATH(EXPR CURINDEX "${CURINDEX}+1")
|
|
endwhile()
|
|
endmacro(HEX2DEC)
|
|
|
|
macro(SET_VERSION MAJOR MINOR FILE ROLLBACK)
|
|
file(READ ${FILE} ver)
|
|
string(REGEX MATCHALL "0x([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])" _ ${ver})
|
|
string(CONCAT ver_major ${CMAKE_MATCH_1}${CMAKE_MATCH_2})
|
|
string(CONCAT ver_minor ${CMAKE_MATCH_3}${CMAKE_MATCH_4})
|
|
HEX2DEC(ver_major ${ver_major})
|
|
HEX2DEC(ver_minor ${ver_minor})
|
|
message(STATUS "Found version:\t\t ${ver_major}.${ver_minor}")
|
|
if(PICO_PLATFORM)
|
|
if (PICO_RP2350 AND SECURE_BOOT_PKEY)
|
|
message(STATUS "Setting rollback version:\t ${ROLLBACK}")
|
|
pico_set_binary_version(${CMAKE_PROJECT_NAME} MAJOR ${ver_major} MINOR ${ver_minor} ROLLBACK ${ROLLBACK})
|
|
else()
|
|
pico_set_binary_version(${CMAKE_PROJECT_NAME} MAJOR ${ver_major} MINOR ${ver_minor})
|
|
endif()
|
|
endif()
|
|
set(${MAJOR} ${ver_major})
|
|
set(${MINOR} ${ver_minor})
|
|
endmacro(SET_VERSION)
|