#!/usr/bin/env sh # # SPDX-License-Identifier: GPL-2.0-only # DESCR: Check for auto-included headers LINTDIR="$( cd -- "$(dirname "$0")" > /dev/null 2>&1 || return pwd -P )" # shellcheck source=helper_functions.sh . "${LINTDIR}/helper_functions.sh" INCLUDED_DIRS='^src/' EXCLUDED_FILES='src/include/kconfig.h' HEADER_FILES="k\?config rules compiler" TESTFILE1="src/lib/version.c" TESTFILE2="src/lib/string.c" TESTFILE3="src/lib/malloc.c" TESTFILE4="src/lib/hardwaremain.c" EXPECTED_FAILURES=4 # Configure to make sure tests fail if [ "$1" = "--test" ]; then sed -i.bak "s|^.*SPDX-License-Identifier.*|&\n\n#include \n|" "${TESTFILE1}" sed -i.bak "s|^.*SPDX-License-Identifier.*|&\n\n#include \"kconfig.h\"\n|" "${TESTFILE2}" sed -i.bak "s|^.*SPDX-License-Identifier.*|&\n\n#include \"compiler.h\"\n|" "${TESTFILE3}" sed -i.bak "s|^.*SPDX-License-Identifier.*|&\n\n#include \n|" "${TESTFILE4}" echo "Expect ${EXPECTED_FAILURES} failures." exit 0 elif [ "$1" = "--reset" ]; then mv "${TESTFILE1}.bak" "${TESTFILE1}" mv "${TESTFILE2}.bak" "${TESTFILE2}" mv "${TESTFILE3}.bak" "${TESTFILE3}" mv "${TESTFILE4}.bak" "${TESTFILE4}" exit 0 fi for header in $HEADER_FILES; do ${GREP_FILES} -n "#[[:blank:]]*include[[:blank:]]\+[\"<][[:blank:]]*${header}\.h[[:blank:]]*[\">]" | \ grep "$INCLUDED_DIRS" | \ grep -v "$EXCLUDED_FILES"; \ done