util/kconfig: Uprev to Linux 5.13's kconfig
This was originally several commits that had to be squashed into one because the intermediate states weren't able to build coreboot: - one to remove everything that wasn't our own code, leaving only regex.[ch], toada.c, description.md and Makefile.inc. - one to copy in Linux 5.13's scripts/kconfig and adapt Makefile.inc to make the original Makefile work again. - adapt abuild to use olddefconfig, simplifying matters. - apply patches in util/kconfig/patches. - Some more adaptations to the libpayload build system. The patches are now in util/kconfig/patches/, reverse applying them should lead to a util/kconfig/ tree that contains exactly the Linux version + our own 5 files. Change-Id: Ia0e8fe4e9022b278f34ab113a433ef4d45e5c355 Signed-off-by: Patrick Georgi <pgeorgi@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/37152 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Raul Rangel <rrangel@chromium.org>
This commit is contained in:
@@ -1,12 +1,69 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# Early configuration of coreboot specific changes
|
||||
Kconfig ?= src/Kconfig
|
||||
# Early coreboot specific configuration
|
||||
KBUILD_KCONFIG ?= src/Kconfig
|
||||
|
||||
# Include verbatim Makefile
|
||||
include $(dir $(lastword $(MAKEFILE_LIST)))Makefile
|
||||
export LC_ALL=C
|
||||
export LANG=C
|
||||
|
||||
# Extend Linux kconfig build rules
|
||||
# Include original Makefile, with just enough edits to work for us
|
||||
$(objk)/Makefile.real: $(dir $(lastword $(MAKEFILE_LIST)))Makefile
|
||||
mkdir -p $(objk)
|
||||
sed \
|
||||
-e "s,\$$(obj),\$$(objk),g" \
|
||||
-e "s,\$$(src),\$$(srck),g" \
|
||||
-e "s,^help:,help_kconfig help::," \
|
||||
-e "s,^%.config:,__disable__&," \
|
||||
-e "s,^savedefconfig:,__disable__&," \
|
||||
-e "s,\$$(srctree)/arch/\$$(SRCARCH)/configs/\$$(KBUILD_DEFCONFIG),\$$(KBUILD_DEFCONFIG)," \
|
||||
-e "s,--defconfig=arch/\$$(SRCARCH)/configs/\$$(KBUILD_DEFCONFIG),--defconfig=\$$(KBUILD_DEFCONFIG)," \
|
||||
-e "/^unexport CONFIG_$$/d" \
|
||||
$< > $@.tmp
|
||||
mv $@.tmp $@
|
||||
|
||||
kecho := echo
|
||||
|
||||
-include $(objk)/Makefile.real
|
||||
|
||||
# Fill in Linux kconfig build rules to work
|
||||
|
||||
oldconfig: KCONFIG_STRICT=
|
||||
|
||||
savedefconfig: $(objk)/conf
|
||||
cp $(DOTCONFIG) $(DEFCONFIG)
|
||||
$< --savedefconfig=$(DEFCONFIG) $(KBUILD_KCONFIG)
|
||||
|
||||
FORCE:
|
||||
|
||||
filechk=$< > $@
|
||||
|
||||
$(objk)/%.o: $(srck)/%.c
|
||||
$(HOSTCC) -I $(srck) -I $(objk) -c $(HOSTCFLAGS_$(notdir $@)) -o $@ $<
|
||||
|
||||
$(objk)/%.o: $(srck)/%.cc
|
||||
$(HOSTCXX) -I $(srck) -I $(objk) -c $(HOSTCXXFLAGS_$(notdir $@)) -o $@ $<
|
||||
|
||||
$(objk)/%.o: $(objk)/%.c
|
||||
$(HOSTCC) -I $(srck) -I $(objk) -c -o $@ $<
|
||||
|
||||
$(objk)/%.moc: $(srck)/%.h | $(objk)/qconf-cfg
|
||||
$(call cmd_moc)
|
||||
|
||||
define hostprogs_template
|
||||
# $1 entry in hostprogs
|
||||
$(objk)/$(1): $$(foreach _o,$$($(1)-objs) $$($(1)-cxxobjs),$(objk)/$$(_o)) | $(wildcard $(objk)/$(1)-cfg)
|
||||
$$(HOSTCXX) -o $$@ $$^ $$(HOSTLDLIBS_$(1))
|
||||
endef
|
||||
|
||||
$(foreach prog,$(hostprogs),$(eval $(call hostprogs_template,$(prog))))
|
||||
|
||||
$(objk)/parser.tab.h: | $(objk)/parser.tab.c
|
||||
$(objk)/%.tab.h: | $(objk)/%.tab.c
|
||||
$(objk)/%.tab.c: $(srck)/%.y
|
||||
bison -t -l --defines=$(objk)/$*.tab.h -b $(objk)/$* $<
|
||||
|
||||
$(objk)/%.lex.c: $(srck)/%.l
|
||||
flex -L -o$@ $<
|
||||
|
||||
# Support mingw by shipping our own regex implementation
|
||||
_OS=$(shell uname -s |cut -c-7)
|
||||
|
Reference in New Issue
Block a user