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>
This commit is contained in:
@@ -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=
|
||||
|
Reference in New Issue
Block a user