diff mbox series

[1/2] tools/libs: fix header symlinking rule

Message ID f4daea32-89bd-dafb-833f-1288882e58d8@suse.com (mailing list archive)
State New, archived
Headers show
Series tools/libs: fix build rules to correctly deal with multiple public headers | expand

Commit Message

Jan Beulich Oct. 19, 2020, 7:21 a.m. UTC
Unlike pattern rules, ordinary rules with multiple targets have their
commands executed once per target. Hence when $(LIBHEADERS) expands to
more than just one item, multiple identical commands would have been
issued, which have been observed to cause build failures relatively
frequently after libx{c,l} code was moved to tools/libs/{ctrl,light}/.
Use a static pattern rule instead.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
I'm aware J├╝rgen has a series pending to entirely remove the rule in
question, but this being an isolated fix which ought to be easier to
review, I thought I'd still post it. Re-basing his series over this
change should be straightforward.
However, for the above reason I'm not bothering getting right the
theoretical case of headers in subdirs of the respective include/ being
mentioned in $(LIBHEADER).
diff mbox series


--- a/tools/libs/libs.mk
+++ b/tools/libs/libs.mk
@@ -79,8 +79,8 @@  headers.chk: $(LIBHEADERSGLOB) $(AUTOINC
 	echo 'VERS_$(MAJOR).$(MINOR) { global: *; };' >$@
-	for i in $(realpath $(LIBHEADERS)); do ln -sf $$i $(XEN_ROOT)/tools/include; done
+$(LIBHEADERSGLOB): $(XEN_ROOT)/tools/include/%.h: include/%.h
+	ln -sf $(CURDIR)/$< $(XEN_ROOT)/tools/include/
 	$(AR) rc $@ $^