fix(build): Properly board revision keymaps.
* Handle board keymap location for boards with Zephyr board revisions included. * Includes bare non-revision file and a revision specific keymap in case newer revision changes the layout/key positions.
This commit is contained in:
parent
08ab45fc78
commit
2adaa00d10
1 changed files with 23 additions and 1 deletions
|
@ -63,6 +63,13 @@ if(DEFINED SHIELD)
|
||||||
string(REPLACE " " ";" SHIELD_AS_LIST "${SHIELD}")
|
string(REPLACE " " ";" SHIELD_AS_LIST "${SHIELD}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
string(FIND "${BOARD}" "@" REVISION_SEPARATOR_INDEX)
|
||||||
|
if(NOT (REVISION_SEPARATOR_INDEX EQUAL -1))
|
||||||
|
math(EXPR BOARD_REVISION_INDEX "${REVISION_SEPARATOR_INDEX} + 1")
|
||||||
|
string(SUBSTRING ${BOARD} ${BOARD_REVISION_INDEX} -1 BOARD_REVISION)
|
||||||
|
string(SUBSTRING ${BOARD} 0 ${REVISION_SEPARATOR_INDEX} BOARD)
|
||||||
|
endif()
|
||||||
|
|
||||||
foreach(root ${BOARD_ROOT})
|
foreach(root ${BOARD_ROOT})
|
||||||
set(shield_dir ${root}/boards/shields)
|
set(shield_dir ${root}/boards/shields)
|
||||||
# Match the Kconfig.shield files in the shield directories to make sure we are
|
# Match the Kconfig.shield files in the shield directories to make sure we are
|
||||||
|
@ -107,6 +114,21 @@ foreach(root ${BOARD_ROOT})
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
if(EXISTS ${BOARD_DIR}/revision.cmake)
|
||||||
|
# Board provides revision handling.
|
||||||
|
include(${BOARD_DIR}/revision.cmake)
|
||||||
|
elseif(BOARD_REVISION)
|
||||||
|
message(WARNING "Board revision ${BOARD_REVISION} specified for ${BOARD}, \
|
||||||
|
but board has no revision so revision will be ignored.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(DEFINED BOARD_REVISION)
|
||||||
|
string(REPLACE "." "_" BOARD_REVISION_STRING ${BOARD_REVISION})
|
||||||
|
set(KEYMAP_BOARD_REVISION_PREFIX "${BOARD}_${BOARD_REVISION_STRING}")
|
||||||
|
else()
|
||||||
|
set(KEYMAP_BOARD_REVISION_PREFIX "")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Give a shield like `kyria_rev2_left` we want to use `kyria_rev2` and `kyria` as candidate names for
|
# Give a shield like `kyria_rev2_left` we want to use `kyria_rev2` and `kyria` as candidate names for
|
||||||
# overlay/conf/keymap files.
|
# overlay/conf/keymap files.
|
||||||
if(DEFINED SHIELD)
|
if(DEFINED SHIELD)
|
||||||
|
@ -178,7 +200,7 @@ endif()
|
||||||
|
|
||||||
if(NOT KEYMAP_FILE)
|
if(NOT KEYMAP_FILE)
|
||||||
foreach(keymap_dir ${KEYMAP_DIRS})
|
foreach(keymap_dir ${KEYMAP_DIRS})
|
||||||
foreach(keymap_prefix ${shield_candidate_names} ${SHIELD_AS_LIST} ${SHIELD_DIR} ${BOARD} ${BOARD_DIR_NAME})
|
foreach(keymap_prefix ${shield_candidate_names} ${SHIELD_AS_LIST} ${SHIELD_DIR} ${KEYMAP_BOARD_REVISION_PREFIX} ${BOARD} ${BOARD_DIR_NAME})
|
||||||
if (EXISTS ${keymap_dir}/${keymap_prefix}.keymap)
|
if (EXISTS ${keymap_dir}/${keymap_prefix}.keymap)
|
||||||
set(KEYMAP_FILE "${keymap_dir}/${keymap_prefix}.keymap" CACHE STRING "Selected keymap file")
|
set(KEYMAP_FILE "${keymap_dir}/${keymap_prefix}.keymap" CACHE STRING "Selected keymap file")
|
||||||
message(STATUS "Using keymap file: ${KEYMAP_FILE}")
|
message(STATUS "Using keymap file: ${KEYMAP_FILE}")
|
||||||
|
|
Loading…
Add table
Reference in a new issue