Makefile: Revise support for generated sources
Handle generated source files more independently from normal source files. This allows mixing of generated specs with existing source bodies. As with the source file list, we filter the list of generated sources, `$(name)-gens`: All spec (.ads) files that have a respective body file (.adb), are moved into `$(name)-extra-gens`. This way, we can still add these files as dependencies to all pre-existing source files. Change-Id: I5479c436f39088ae9d0ebddf9a97446be0f191f3 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/libhwbase/+/27139 Reviewed-by: Angel Pons <th3fanbus@gmail.com> Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
parent
455ed64bff
commit
bd0ed91cb9
18
Makefile
18
Makefile
|
@ -190,12 +190,16 @@ $(name)-ada-dirs := $(sort $(dir $(filter %.ads %.adb,$($(name)-srcs) $($(name)-
|
|||
# *-srcs. Extract / filter all specification files that have a matching
|
||||
# body (.adb) file here (specifications without a body are valid sources
|
||||
# in Ada).
|
||||
$(name)-extra-specs := \
|
||||
# $1 source list
|
||||
filter_extra_specs = \
|
||||
$(filter \
|
||||
$(addprefix %/,$(patsubst %.adb,%.ads,$(notdir $(filter %.adb,$($(name)-srcs))))), \
|
||||
$(filter %.ads,$($(name)-srcs) $($(name)-gens)))
|
||||
$(addprefix %/,$(patsubst %.adb,%.ads, \
|
||||
$(notdir $(filter %.adb,$($(name)-srcs) $($(name)-gens))))), \
|
||||
$(filter %.ads,$(1)))
|
||||
$(name)-extra-specs := $(call filter_extra_specs,$($(name)-srcs))
|
||||
$(name)-srcs := $(filter-out $($(name)-extra-specs),$($(name)-srcs))
|
||||
$(name)-gens := $(filter-out $($(name)-extra-specs),$($(name)-gens))
|
||||
$(name)-extra-gens := $(call filter_extra_specs,$($(name)-gens))
|
||||
$(name)-gens := $(filter-out $($(name)-extra-gens),$($(name)-gens))
|
||||
|
||||
$(name)-objs := $(call src-to-obj,,$($(name)-srcs) $($(name)-gens))
|
||||
$(name)-alis := $(call src-to-ali,,$($(name)-srcs) $($(name)-gens))
|
||||
|
@ -216,8 +220,8 @@ create_ada_deps = \
|
|||
$(if $(wildcard $(1)),\
|
||||
$(filter \
|
||||
$(addprefix %/,$(shell sed -ne's/^D \([^\t]\+\).*$$/\1/p' $(1) 2>/dev/null)), \
|
||||
$($(name)-srcs) $($(name)-gens) $($(name)-extra-specs)), \
|
||||
$($(name)-gens))
|
||||
$($(name)-srcs) $($(name)-gens) $($(name)-extra-specs) $($(name)-extra-gens)), \
|
||||
$($(name)-gens) $($(name)-extra-gens))
|
||||
|
||||
# Adds dependency rules
|
||||
# $1 source file
|
||||
|
@ -283,7 +287,7 @@ $(call src-to-obj,,$(filter %.c,$($(name)-srcs))): $(obj)/%.o: %.c
|
|||
$(shell mkdir -p $(alldirs))
|
||||
|
||||
$(name)-install-srcs = $(sort \
|
||||
$($(name)-extra-specs) $(filter %.ads,$($(name)-srcs) $($(name)-gens)) \
|
||||
$($(name)-extra-specs) $($(name)-extra-gens) $(filter %.ads,$($(name)-srcs) $($(name)-gens)) \
|
||||
$(foreach adb,$(filter %.adb,$($(name)-srcs)), \
|
||||
$(shell grep -q '^U .*\<BN\>' $(call src-to-ali,,$(adb)) 2>/dev/null && echo $(adb))))
|
||||
|
||||
|
|
|
@ -18,7 +18,8 @@ quote-list = $(subst $(space),$(comma),$(patsubst %,"%",$(1)))
|
|||
|
||||
$(name)-exclude-srcs = \
|
||||
$(filter-out \
|
||||
$(sort $(notdir $($(name)-proof) $($(name)-srcs) $($(name)-gens) $($(name)-extra-specs))), \
|
||||
$(sort $(notdir $($(name)-proof) \
|
||||
$($(name)-srcs) $($(name)-gens) $($(name)-extra-specs) $($(name)-extra-gens))), \
|
||||
$(sort $(notdir \
|
||||
$(wildcard $(addsuffix *.ad[sb],$($(name)-proof-dirs))))))
|
||||
|
||||
|
@ -63,7 +64,9 @@ $(libgpr): $$(MAKEFILE_LIST)
|
|||
echo ' for Object_Dir use external ("obj", "build");' >>$@
|
||||
echo 'end lib$(name);' >>$@
|
||||
|
||||
$(obj)/gnatprove/gnatprove.out: $(gpr) $$($(name)-srcs) $$($(name)-gens) $(obj)/proofmode
|
||||
$(obj)/gnatprove/gnatprove.out: $$($(name)-srcs) $$($(name)-gens)
|
||||
$(obj)/gnatprove/gnatprove.out: $$($(name)-extra-specs) $$($(name)-extra-gens)
|
||||
$(obj)/gnatprove/gnatprove.out: $(gpr) $(obj)/proofmode
|
||||
gnatprove -P$< $(SPARKFLAGS) -Xobj=$(abspath $(obj))
|
||||
|
||||
proof:
|
||||
|
|
Loading…
Reference in New Issue