diff options
author | Patrick Georgi <pgeorgi@google.com> | 2021-09-06 16:59:56 +0200 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2021-09-13 15:35:03 +0000 |
commit | 615cdfcdb9bf826d4815f0d7e7d9961da5bf33d0 (patch) | |
tree | d654e722de60f395f0dd57be1070d226488cf3e0 /util/kconfig/Makefile.inc | |
parent | 116b1449304d7dd83a480a07ae870a3a4cf6360e (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.inc | 13 |
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= |