summaryrefslogtreecommitdiffstats
path: root/util/kconfig/Makefile.inc
diff options
context:
space:
mode:
Diffstat (limited to 'util/kconfig/Makefile.inc')
-rw-r--r--util/kconfig/Makefile.inc67
1 files changed, 62 insertions, 5 deletions
diff --git a/util/kconfig/Makefile.inc b/util/kconfig/Makefile.inc
index 27681f75a144..db8b1be1d397 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)