xref: /aosp_15_r20/external/coreboot/util/lint/lint-stable-019-header-files (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1#!/usr/bin/env sh
2#
3# SPDX-License-Identifier: GPL-2.0-only
4
5# DESCR: Check for auto-included headers
6
7LINTDIR="$(
8  cd -- "$(dirname "$0")" > /dev/null 2>&1 || return
9  pwd -P
10)"
11
12# shellcheck source=helper_functions.sh
13. "${LINTDIR}/helper_functions.sh"
14
15INCLUDED_DIRS='^src/'
16EXCLUDED_FILES='src/include/kconfig.h'
17
18HEADER_FILES="k\?config rules compiler"
19
20TESTFILE1="src/lib/version.c"
21TESTFILE2="src/lib/string.c"
22TESTFILE3="src/lib/malloc.c"
23TESTFILE4="src/lib/hardwaremain.c"
24EXPECTED_FAILURES=4
25
26# Configure to make sure tests fail
27if [ "$1" = "--test" ]; then
28	sed -i.bak "s|^.*SPDX-License-Identifier.*|&\n\n#include <config.h>\n|" "${TESTFILE1}"
29	sed -i.bak "s|^.*SPDX-License-Identifier.*|&\n\n#include \"kconfig.h\"\n|" "${TESTFILE2}"
30	sed -i.bak "s|^.*SPDX-License-Identifier.*|&\n\n#include \"compiler.h\"\n|" "${TESTFILE3}"
31	sed -i.bak "s|^.*SPDX-License-Identifier.*|&\n\n#include <rules.h>\n|" "${TESTFILE4}"
32	echo "Expect ${EXPECTED_FAILURES} failures."
33	exit 0
34elif [ "$1" = "--reset" ]; then
35	mv "${TESTFILE1}.bak" "${TESTFILE1}"
36	mv "${TESTFILE2}.bak" "${TESTFILE2}"
37	mv "${TESTFILE3}.bak" "${TESTFILE3}"
38	mv "${TESTFILE4}.bak" "${TESTFILE4}"
39	exit 0
40fi
41
42for header in $HEADER_FILES; do
43	${GREP_FILES} -n "#[[:blank:]]*include[[:blank:]]\+[\"<][[:blank:]]*${header}\.h[[:blank:]]*[\">]" | \
44		grep "$INCLUDED_DIRS" | \
45		grep -v "$EXCLUDED_FILES"; \
46done
47