aboutsummaryrefslogtreecommitdiff
path: root/util/kconfig/Makefile.inc
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@google.com>2021-09-06 16:59:56 +0200
committerPatrick Georgi <pgeorgi@google.com>2021-09-13 15:35:03 +0000
commit615cdfcdb9bf826d4815f0d7e7d9961da5bf33d0 (patch)
treed654e722de60f395f0dd57be1070d226488cf3e0 /util/kconfig/Makefile.inc
parent116b1449304d7dd83a480a07ae870a3a4cf6360e (diff)
util/kconfig: Add pre-built parser
It avoids the dependency on bison/flex, minimally speeds up the build and also works around weird race conditions in some versions of bison that need more investigation. The issue this avoids manifests as a build error when creating parser.tab.c: input in flex scanner failed make: *** [util/kconfig/Makefile.inc:66: build/util/kconfig/parser.tab.c] Error 2 Since the error happens within bison the alternative would be to make bison part of our crossgcc environment to ensure that no broken OS build is used. BUG=b:197515860 TEST=things build with bison not installed Change-Id: Ib35dfb7beafc0a09dc333e962b1e3f33df46a854 Signed-off-by: Patrick Georgi <pgeorgi@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/57409 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Raul Rangel <rrangel@chromium.org>
Diffstat (limited to 'util/kconfig/Makefile.inc')
-rw-r--r--util/kconfig/Makefile.inc13
1 files changed, 13 insertions, 0 deletions
diff --git a/util/kconfig/Makefile.inc b/util/kconfig/Makefile.inc
index 9277b516ee..36678daf64 100644
--- a/util/kconfig/Makefile.inc
+++ b/util/kconfig/Makefile.inc
@@ -60,12 +60,25 @@ endef
$(foreach prog,$(hostprogs),$(eval $(call hostprogs_template,$(prog))))
+# This might be a bit of a chicken & egg problem, using a kconfig flag when
+# building kconfig, but if you're messing with the parser you probably know
+# what you're doing: make CONFIG_UTIL_GENPARSER=y
+ifeq ($(CONFIG_UTIL_GENPARSER),y)
$(objk)/%.tab.c $(objk)/%.tab.h: $(srck)/%.y
bison -t -l --defines -b $(objk)/$* $<
$(objk)/%.lex.c: $(srck)/%.l
flex -L -o$@ $<
+else # !CONFIG_UTIL_GENPARSER
+
+$(objk)/parser.tab.c: | $(objk)/parser.tab.h
+
+$(objk)/%: $(srck)/%_shipped
+ cp $< $@
+
+endif
+
# Support mingw by shipping our own regex implementation
_OS=$(shell uname -s |cut -c-7)
regex-objs=