diff options
author | Patrick Georgi <pgeorgi@google.com> | 2019-11-22 16:55:58 +0100 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2021-07-13 20:28:14 +0000 |
commit | 53ea1d44f0435ca419de04e275e08b1bd296922c (patch) | |
tree | c1a3a39c36e9b53d0129f0e24a9a032bfea066ca /util/kconfig/Makefile.inc | |
parent | 8585eabc5d5b516f46b2980a40b25f49eef5e056 (diff) |
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>
Diffstat (limited to 'util/kconfig/Makefile.inc')
-rw-r--r-- | util/kconfig/Makefile.inc | 67 |
1 files changed, 62 insertions, 5 deletions
diff --git a/util/kconfig/Makefile.inc b/util/kconfig/Makefile.inc index 27681f75a1..db8b1be1d3 100644 --- a/util/kconfig/Makefile.inc +++ b/util/kconfig/Makefile.inc @@ -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) |