xen: fix build when $(obj-y) consists of just blanks
authorJan Beulich <jbeulich@suse.com>
Fri, 11 Dec 2020 10:53:24 +0000 (11:53 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 11 Dec 2020 10:53:24 +0000 (11:53 +0100)
commit8e0fe4fe5fd89d80a362d8a9a46726aded3b49c4
tree51908c2b1f24d1655fec0ab3edf48cc15bac34ff
parenta69583cb50ec07c114cff97f8f902258d6f175d1
xen: fix build when $(obj-y) consists of just blanks

This case can occur when combining empty lists

obj-y :=
...
obj-y += $(empty)

or

obj-y := $(empty) $(empty)

where (only) blanks would accumulate. This was only a latent issue until
now, but would become an active issue for Arm once lib/ gets populated
with all respective objects going into the to be introduced lib.a.

Also address a related issue at this occasion: When an empty built_in.o
gets created, .built_in.o.d will have its dependencies recorded. If, on
a subsequent incremental build, an actual constituent of built_in.o
appeared, the $(filter-out ) would leave these recorded dependencies in
place. But of course the linker won't know what to do with C header
files. (The apparent alternative of avoiding to pass $(c_flags) or
$(a_flags) would not be reliable afaict, as among these flags there may
be some affecting information conveyed via the object file to the
linker. The linker, finding inconsistent flags across object files, may
then error out.) Using just $(obj-y) won't work either: It breaks when
the same object file is listed more than once.

Reported-by: Julien Grall <julien@xen.org>
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Wei Liu <wl@xen.org>
Reviewed-by: Bertrand Marquis <bertrand.marquis@arm.com>
Reviewed-by: Anthony PERARD <anthony.perard@citrix.com>
xen/Rules.mk