boards: shields: Allow adding source code to shields

Add shield CMakeLists.txt if it exists.
Useful for one-off shields that require C code

Signed-off-by: Grant Ramsay <gramsay@enphaseenergy.com>
This commit is contained in:
Grant Ramsay 2024-07-02 20:53:07 +12:00 committed by Fabio Baltieri
parent b5a3f7532f
commit 4a21035aa5
2 changed files with 20 additions and 0 deletions

View File

@ -17,3 +17,5 @@ if(EXISTS ${BOARD_DIR}/CMakeLists.txt)
add_subdirectory(${BOARD_DIR} ${build_dir})
endif()
add_subdirectory(shields)

View File

@ -0,0 +1,18 @@
# SPDX-License-Identifier: Apache-2.0
# Shield directories may contain multiple shields. Filter out duplicate
# directories to avoid including the same CMakeLists.txt file multiple times
set(unique_shield_dirs ${SHIELD_DIRS})
list(REMOVE_DUPLICATES unique_shield_dirs)
foreach(shield_dir ${unique_shield_dirs})
# To avoid a lot of empty CMakeLists.txt files we assume it is not an
# error if it is missing
if(EXISTS ${shield_dir}/CMakeLists.txt)
# Out-of-tree shield directories will not be a subdirectory,
# use the filename portion of the shield directory path as a
# relative cmake binary_dir
cmake_path(GET shield_dir FILENAME binary_dir)
add_subdirectory(${shield_dir} ${binary_dir})
endif()
endforeach()