xref: /aosp_15_r20/external/coreboot/util/vboot_list/vboot_list.sh (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1#!/usr/bin/env bash
2
3TOP="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/../.. >/dev/null 2>&1 && pwd )"
4MAINBOARDS="src/mainboard"
5OUTPUT_FILE=${1:-$TOP/Documentation/security/vboot/list_vboot.md}
6
7function has_vboot
8{
9	local DIR=$1
10
11	grep -rq "config VBOOT" $DIR
12	return $?
13}
14
15function get_vendor_name
16{
17	local VENDORDIR=$1
18
19	sed -n '/config VENDOR/{n;s/^[\t[:space:]]\+bool "\(.*\)"/\1/;p;}' \
20		$VENDORDIR/Kconfig.name
21}
22
23function get_board_name
24{
25	local BOARDDIR=$1
26
27	sed -n '/config BOARD/{n;s/^[\t[:space:]]\+bool "\(->\s\+\)\?\(.*\)"/\2/;p;}' \
28		$BOARDDIR/Kconfig.name
29}
30
31function list_vboot_boards
32{
33	local VENDORDIR=$1
34	for BOARD in $(ls -d $VENDORDIR/*/)
35	do
36		has_vboot $BOARD || continue
37		get_board_name $BOARD
38	done
39}
40
41function generate_vboot_list
42{
43for VENDOR in $(ls -d $TOP/$MAINBOARDS/*/)
44do
45	has_vboot $VENDOR || continue
46	echo -e "\n## $(get_vendor_name $VENDOR)"
47	IFS=$'\n'
48	for BOARD in $(list_vboot_boards $VENDOR)
49	do
50		echo "- $BOARD"
51	done
52done
53}
54
55(echo "# vboot-enabled devices"; generate_vboot_list) > $OUTPUT_FILE
56