#!/bin/sh
# This file is part of the coreboot project.
#
# Copyright 2015 Google Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# DESCR: Check that every vendor and board has a Kconfig.name

LC_ALL=C export LC_ALL
FAIL=0

for i in src/mainboard/*/; do
  if [ -r $i/Kconfig ]; then
    if [ ! -r $i/Kconfig.name ]; then
      VENDOR="$(grep -A2 MAINBOARD_VENDOR $i/Kconfig | tail -1 | cut -f2 -d\")"
      echo "Vendor $VENDOR missing $i/Kconfig.name."
      FAIL=1
    fi
  fi
done

for i in src/mainboard/*/*/; do
  if [ -r $i/Kconfig ]; then
    if [ ! -r $i/Kconfig.name ]; then
      BOARD="$(grep -A2 MAINBOARD_PART_NUMBER $i/Kconfig | tail -1 | cut -f2 -d\")"
      echo "Mainboard $BOARD missing $i/Kconfig.name"
      FAIL=1
    fi
  fi
done

exit $FAIL
