|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC PATCH] build: include/compat: figure out which other compat headers are needed
Some compat headers depends on other compat headers that may not have
been generated due to config option.
This would be a generic way to deal with deps, instead of
headers-$(call or $(CONFIG_TRACEBUFFER),$(CONFIG_HVM)) += compat/trace.h
This is just an RFC, as it only deals with "hvm_op.h" and nothing is
done to have make regenerate the new file when needed.
Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
---
xen/include/Makefile | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/xen/include/Makefile b/xen/include/Makefile
index 65be310eca..5e6de97841 100644
--- a/xen/include/Makefile
+++ b/xen/include/Makefile
@@ -34,6 +34,29 @@ headers-$(CONFIG_TRACEBUFFER) += compat/trace.h
headers-$(CONFIG_XENOPROF) += compat/xenoprof.h
headers-$(CONFIG_XSM_FLASK) += compat/xsm/flask_op.h
+# Find dependencies of compat headers.
+# e.g. hvm/hvm_op.h needs trace.h; but if CONFIG_TRACEBUFFER=n, then trace.h
would be missing.
+#
+# Using sed to remove ".." from path because unsure if something else is
available
+# There's `realpath`, but maynot be available
+# realpath --relative-to=. -mL compat/hvm/../trace.h -> compat/trace.h
+# `make` also have macro for that $(abspath), only recent version.
+#
+# The $(CC) line to gen deps is derived from $(cmd_compat_i)
+include $(obj)/.compat-header-deps.d
+$(obj)/.compat-header-deps.d: include/public/hvm/hvm_op.h
+ $(CC) -MM -MF $@.tmp $(filter-out -Wa$(comma)% -include
%/include/xen/config.h,$(XEN_CFLAGS)) $<
+ for f in $$(cat $@.tmp | sed -r '1s/^[^:]*: //; s/ \\$$//'); do \
+ echo $$f; \
+ done | sed -r \
+ -e 's#.*/public#compat#; : p; s#/[^/]+/../#/#; t p; s#$$# \\#' \
+ -e '1i headers-y-deps := \\' -e '$$a \ ' \
+ > $@
+
+headers-y-deps := $(filter-out compat/xen-compat.h,$(headers-y-deps))
+# Add compat header dependencies and eliminates duplicates
+headers-y := $(sort $(headers-y) $(headers-y-deps))
+
cppflags-y := -include public/xen-compat.h
-DXEN_GENERATING_COMPAT_HEADERS
cppflags-$(CONFIG_X86) += -m32
--
Anthony PERARD
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |