1#!/bin/sh
2# Copyright 2021 Google LLC
3# Written by Simon Glass <sjg@chromium.org>
4#
5# Check that the .config file provided does not try to disable OF_BOARD for
6# boards that use CONFIG_OF_HAS_PRIOR_STAGE
7#
8# Usage
9#    check-of.sh <path to .config> <path to allowlist file>
10#
11# For example:
12#   scripts/check-of.sh b/chromebook_link/u-boot.cfg kconfig_allowlist.txt
13#
14# Exit code is 0 if OK, 3 if the .config is wrong, as above
15
16set -e
17set -u
18
19PROG_NAME="${0##*/}"
20
21usage() {
22	echo "$PROG_NAME <path to .config> <path to allowlist file>"
23	exit 1
24}
25
26[ $# -ge 2 ] || usage
27
28path="$1"
29allowlist="$2"
30
31sys_config="$(sed -n 's/CONFIG_SYS_CONFIG_NAME="\(.*\)"$/\1/p' "${path}")"
32
33if grep -q OF_HAS_PRIOR_STAGE=y "${path}"; then
34	if ! grep -lq CONFIG_OF_BOARD=y "${path}"; then
35		echo >&2 "This board uses a prior stage to provide the device tree."
36		echo >&2 "Please enable CONFIG_OF_BOARD to ensure that it works correctly."
37		if grep -q "${sys_config}" "${allowlist}"; then
38			exit 0
39		fi
40		exit 3
41	fi
42fi
43