diff options
author | Nico Huber <nico.h@gmx.de> | 2019-01-01 22:06:01 +0100 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2019-02-06 16:20:35 +0000 |
commit | b56797707541a596427d59558f5a147415ea844f (patch) | |
tree | 9877667459c5a8d311e30c720efa1e5f58a8c421 | |
parent | 0226789dcca9e92591daf61aa288bbf01ceabdeb (diff) |
Hook up Kconfig Ada spec file
We generate a $(obj)/cb-config.ads once and copy it per stage that uses
it to $(obj)/<stage>/cb-config.ads (to simplify the gnat-bind step). The
Ada package is called `CB.Config`. As there was no `CB` package yet, add
that too.
Change-Id: I963a6517ef4bcf84f2c8e9ae8d24a0d6b971d2b0
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/30584
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
-rw-r--r-- | Makefile | 10 | ||||
-rw-r--r-- | Makefile.inc | 4 | ||||
-rw-r--r-- | src/lib/Makefile.inc | 2 | ||||
-rw-r--r-- | src/lib/cb.ads | 2 |
4 files changed, 16 insertions, 2 deletions
@@ -188,6 +188,9 @@ $(KCONFIG_AUTOCONFIG): $(KCONFIG_AUTOHEADER) $(KCONFIG_AUTOADS): $(KCONFIG_AUTOCONFIG) $(objutil)/kconfig/toada $(objutil)/kconfig/toada CB.Config <$< >$@ +$(obj)/%/$(notdir $(KCONFIG_AUTOADS)): $(KCONFIG_AUTOADS) + cp $< $@ + # Add a new class of source/object files to the build system add-class= \ $(eval $(1)-srcs:=) \ @@ -272,6 +275,11 @@ $(eval $(postinclude-hooks)) # Eliminate duplicate mentions of source files in a class $(foreach class,$(classes),$(eval $(class)-srcs:=$(sort $($(class)-srcs)))) +# Build Kconfig .ads if necessary +ifeq ($(CONFIG_RAMSTAGE_ADA),y) +ramstage-srcs += $(obj)/ramstage/$(notdir $(KCONFIG_AUTOADS)) +endif + # To track dependencies, we need all Ada specification (.ads) files in # *-srcs. Extract / filter all specification files that have a matching # body (.adb) file here (specifications without a body are valid sources @@ -320,7 +328,7 @@ define create_cc_template ifn$(EMPTY)def $(1)-objs_$(2)_template de$(EMPTY)fine $(1)-objs_$(2)_template ifn$(EMPTY)eq ($(filter ads adb,$(2)),) -$$(call src-to-obj,$1,$$(1).$2): $$(1).$2 $$(call create_ada_deps,$1,$$(call src-to-ali,$1,$$(1).$2)) $(KCONFIG_AUTOHEADER) $(4) +$$(call src-to-obj,$1,$$(1).$2): $$(1).$2 $$(call create_ada_deps,$1,$$(call src-to-ali,$1,$$(1).$2)) $(4) @printf " GCC $$$$(subst $$$$(obj)/,,$$$$(@))\n" $(GCC_$(1)) \ $$$$(ADAFLAGS_$(1)) $$$$(addprefix -I,$$$$($(1)-ada-dirs)) \ diff --git a/Makefile.inc b/Makefile.inc index 594ef36ad7..7d6bc7ce47 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -215,7 +215,9 @@ verstage-c-deps:=$$(OPTION_TABLE_H) bootblock-c-deps:=$$(OPTION_TABLE_H) $(foreach type,ads adb, \ $(foreach stage,$(COREBOOT_STANDARD_STAGES), \ - $(eval $(stage)-$(type)-deps := $(obj)/libgnat-$(ARCH-$(stage)-y)/libgnat.a))) + $(eval $(stage)-$(type)-deps := \ + $(obj)/$(stage)/$(notdir $(KCONFIG_AUTOADS)) \ + $(obj)/libgnat-$(ARCH-$(stage)-y)/libgnat.a))) # Add handler to copy linker scripts define generic-objs_ld_template_gen diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc index 68431f9ce5..fa1ff8bccd 100644 --- a/src/lib/Makefile.inc +++ b/src/lib/Makefile.inc @@ -296,6 +296,8 @@ $(objcbfs)/%.debug.rmod: $(objcbfs)/%.debug | $(RMODTOOL) $(obj)/%.elf.rmod: $(obj)/%.elf | $(RMODTOOL) $(RMODTOOL) -i $< -o $@ +ramstage-$(CONFIG_RAMSTAGE_ADA) += cb.ads + ifeq ($(CONFIG_RAMSTAGE_LIBHWBASE),y) to-ada-hex = $(eval $(1) := 16\\\#$(patsubst 0x%,%,$($(1)))\\\#) diff --git a/src/lib/cb.ads b/src/lib/cb.ads new file mode 100644 index 0000000000..41a2a427de --- /dev/null +++ b/src/lib/cb.ads @@ -0,0 +1,2 @@ +package CB is +end CB; |