Add Kconfig options to handle the blobs repository

One option to allow using the repo (defaults to no),
one to let boards state that they require it in the
current configuration.

The build system checks out the repo if allowed, and
fails if the repo is requested by the configuration
but not desired by the user.

Change-Id: If71d80b329cf528aa467fcb0b4d9d7c7434aab27
Signed-off-by: Patrick Georgi <patrick@georgi-clan.de>
Reviewed-on: http://review.coreboot.org/957
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Tested-by: build bot (Jenkins)
diff --git a/Makefile.inc b/Makefile.inc
index 53a3dad..c179784 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -67,6 +67,14 @@
 ramstage-c-ccopts:= -finstrument-functions
 endif
 
+ifeq ($(CONFIG_USE_BLOBS),y)
+forgetthis:=$(shell git submodule update --init --checkout 3rdparty)
+else
+ifeq ($(CONFIG_REQUIRES_BLOB),y)
+$(error Your current configuration requires binary-only components, but you did not choose to use them)
+endif
+endif
+
 smm-c-ccopts:=-D__SMM__
 smm-S-ccopts:=-D__SMM__
 
diff --git a/src/Kconfig b/src/Kconfig
index e8a560d..d449b30 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -175,6 +175,24 @@
 	  Make coreboot create a table of timer-ID/timer-value pairs to
 	  allow measuring time spent at different phases of the boot process.
 
+config USE_BLOBS
+	bool "Allow use of binary-only repository"
+	default n
+	help
+	  This draws in the blobs repository, which contains binary files that
+	  might be required for some chipsets or boards.
+	  This flag ensures that a "Free" option remains available for users.
+
+config REQUIRES_BLOB
+	bool
+	default n
+	help
+	  This option can be configured by boards that require the blobs
+	  repository for the default configuration. It will make the build
+	  fail if USE_BLOBS is disabled. Users that still desire to do a
+	  coreboot build for such a board can override this manually, but
+	  this option serves as warning that it might fail.
+
 endmenu
 
 source src/mainboard/Kconfig