cmake: zephyr_file() now accepts BOARD and BOARD_REVISION as argument

With the introduction of #32556 changing the BOARD now prints a warning.

Zephyr provides `zephyr_file()` to look up overlays and Kconfig
fragments for a specified board, and it used to be possible and safe to
do:
```
function(my_func)
  set(BOARD <local_scope_board>)
  zephyr_file(CONF_FILES ...)
endfunction(my_func)
```

As the BOARD inside `my_func` is locally scoped, this is safe to do.
But with introduction of #32556 a warning is now printed when running
CMake.

Therefore `zephyr_file` has been extended to allow for optional BOARD
and BOARD_REVISION arguments.
If BOARD is not given as argument the current BOARD in the build system
will be used.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
This commit is contained in:
Torsten Rasmussen 2021-03-16 09:25:30 +01:00 committed by Kumar Gala
parent b3bb1d6ad2
commit ffff2124d3

View File

@ -1874,6 +1874,13 @@ endfunction()
# The conf file search will return existing configuration
# files for the current board.
# CONF_FILES takes the following additional arguments:
# BOARD <board>: Find configuration files for specified board.
# BOARD_REVISION <revision>: Find configuration files for specified board
# revision. Requires BOARD to be specified.
#
# If no board is given the current BOARD and
# BOARD_REVISION will be used.
#
# DTS <list>: List to populate with DTS overlay files
# KCONF <list>: List to populate with Kconfig fragment files
# BUILD <type>: Build type to include for search.
@ -1892,7 +1899,7 @@ Please provide one of following: APPLICATION_ROOT, CONF_FILES")
if(${ARGV0} STREQUAL APPLICATION_ROOT)
set(single_args APPLICATION_ROOT)
elseif(${ARGV0} STREQUAL CONF_FILES)
set(single_args CONF_FILES DTS KCONF BUILD)
set(single_args CONF_FILES BOARD BOARD_REVISION DTS KCONF BUILD)
endif()
cmake_parse_arguments(FILE "" "${single_args}" "" ${ARGN})
@ -1937,10 +1944,26 @@ Relative paths are only allowed with `-D${ARGV1}=<path>`")
endif()
if(FILE_CONF_FILES)
set(FILENAMES ${BOARD})
if(DEFINED FILE_BOARD_REVISION AND NOT FILE_BOARD)
message(FATAL_ERROR
"zephyr_file(${ARGV0} <path> BOARD_REVISION ${FILE_BOARD_REVISION} ...)"
" given without BOARD argument, please specify BOARD"
)
endif()
if(DEFINED BOARD_REVISION)
list(APPEND FILENAMES "${BOARD}_${BOARD_REVISION_STRING}")
if(NOT DEFINED FILE_BOARD)
# Defaulting to system wide settings when BOARD is not given as argument
set(FILE_BOARD ${BOARD})
if(DEFINED BOARD_REVISION)
set(FILE_BOARD_REVISION ${BOARD_REVISION})
endif()
endif()
set(FILENAMES ${FILE_BOARD})
if(DEFINED FILE_BOARD_REVISION)
string(REPLACE "." "_" revision_string ${FILE_BOARD_REVISION})
list(APPEND FILENAMES "${FILE_BOARD}_${revision_string}")
endif()
if(FILE_DTS)