diff options
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) |