From: Anthony PERARD <anthony.perard@citrix.com>
To: <xen-devel@lists.xenproject.org>
Cc: Anthony PERARD <anthony.perard@citrix.com>, Wei Liu <wl@xen.org>,
"Juergen Gross" <jgross@suse.com>
Subject: [XEN PATCH v4 30/32] libs/light: Rework targets prerequisites
Date: Thu, 11 Aug 2022 17:48:43 +0100 [thread overview]
Message-ID: <20220811164845.38083-31-anthony.perard@citrix.com> (raw)
In-Reply-To: <20220811164845.38083-1-anthony.perard@citrix.com>
No need for $(AUTOSRCS), GNU make can generate them as needed when
trying to build them as needed when trying to build the object. Also,
those two AUTOSRCS don't need to be a prerequisite of "all". As for
the "clean" target, those two files are already removed via "_*.c".
We don't need $(AUTOINCS) either:
- As for both _libxl_savm_msgs*.h headers, we are adding more
selective dependencies so the headers will still be generated as
needed.
- "clean" rule already delete the _*.h files, so AUTOINCS aren't needed
there.
"libxl_internal_json.h" doesn't seems to have ever existed, so the
dependency is removed.
Add few prerequisite for "libxl_internal.h" so all headers that it
depends on should be generated. And have $(SAVE_HELPER_OBJS) depends
on "libxl_internal.h".
Rework objects prerequisites, to have them dependents on either
"libxl.h" or "libxl_internal.h". "libxl.h" is not normally included
directly in the source code as "libxl_internal.h" is used instead. But
we are adding "libxl.h" as prerequisite of "libxl_internal.h", so
generated headers will still be generated as needed.
"testidl.c" doesn't depends on "libxl.h" but "testidl.o" does. Also
use automatic variables $< and $@.
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
Notes:
v4:
- new patch
tools/libs/light/Makefile | 29 +++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)
diff --git a/tools/libs/light/Makefile b/tools/libs/light/Makefile
index 9329055c98..274e8350bb 100644
--- a/tools/libs/light/Makefile
+++ b/tools/libs/light/Makefile
@@ -147,9 +147,6 @@ LIBXL_TEST_OBJS += $(foreach t, $(LIBXL_TESTS_INSIDE),libxl_test_$t.opic)
TEST_PROG_OBJS += $(foreach t, $(LIBXL_TESTS_PROGS),test_$t.o) test_common.o
TEST_PROGS += $(foreach t, $(LIBXL_TESTS_PROGS),test_$t)
-AUTOINCS = _libxl_save_msgs_callout.h _libxl_save_msgs_helper.h
-AUTOSRCS = _libxl_save_msgs_callout.c _libxl_save_msgs_helper.c
-
CLIENTS = testidl libxl-save-helper
SAVE_HELPER_OBJS = libxl_save_helper.o _libxl_save_msgs_helper.o
@@ -177,13 +174,13 @@ libxl_x86_acpi.o libxl_x86_acpi.opic: CFLAGS += -I$(XEN_ROOT)/tools
$(SAVE_HELPER_OBJS): CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenevtchn) $(CFLAGS_libxenguest)
testidl.o: CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenlight)
-testidl.c: libxl_types.idl gentest.py $(XEN_INCLUDE)/libxl.h $(AUTOINCS)
- $(PYTHON) gentest.py libxl_types.idl testidl.c.new
- mv testidl.c.new testidl.c
+testidl.c: libxl_types.idl gentest.py
+ $(PYTHON) gentest.py $< $@.new
+ mv -f $@.new $@
-all: $(CLIENTS) $(TEST_PROGS) $(AUTOSRCS) $(AUTOINCS)
+all: $(CLIENTS) $(TEST_PROGS)
-$(OBJS-y) $(PIC_OBJS) $(SAVE_HELPER_OBJS) $(LIBXL_TEST_OBJS) $(TEST_PROG_OBJS): $(AUTOINCS) libxl.api-ok
+$(OBJS-y) $(PIC_OBJS) $(SAVE_HELPER_OBJS) $(LIBXL_TEST_OBJS) $(TEST_PROG_OBJS): libxl.api-ok
$(DSDT_FILES-y): acpi
@@ -195,7 +192,7 @@ libxl.api-ok: check-libxl-api-rules _libxl.api-for-check
$(PERL) $^
touch $@
-_libxl.api-for-check: $(XEN_INCLUDE)/libxl.h $(AUTOINCS)
+_libxl.api-for-check: $(XEN_INCLUDE)/libxl.h
$(CC) $(CPPFLAGS) $(CFLAGS) -c -E $< $(APPEND_CFLAGS) \
-DLIBXL_EXTERNAL_CALLERS_ONLY=LIBXL_EXTERNAL_CALLERS_ONLY \
>$@.new
@@ -207,13 +204,22 @@ _libxl_save_msgs_helper.h _libxl_save_msgs_callout.h: \
$(PERL) -w $< $@ >$@.new
$(call move-if-changed,$@.new,$@)
+#
+# headers dependencies on generated headers
+#
$(XEN_INCLUDE)/libxl.h: $(XEN_INCLUDE)/_libxl_types.h
$(XEN_INCLUDE)/libxl_json.h: $(XEN_INCLUDE)/_libxl_types_json.h
+libxl_internal.h: $(XEN_INCLUDE)/libxl.h $(XEN_INCLUDE)/libxl_json.h
libxl_internal.h: _libxl_types_internal.h _libxl_types_private.h _libxl_types_internal_private.h
-libxl_internal_json.h: _libxl_types_internal_json.h
+libxl_internal.h: _libxl_save_msgs_callout.h
-$(OBJS-y) $(PIC_OBJS) $(LIBXL_TEST_OBJS) $(TEST_PROG_OBJS) $(SAVE_HELPER_OBJS): $(XEN_INCLUDE)/libxl.h
+#
+# objects dependencies on headers that depends on generated headers
+#
+$(TEST_PROG_OBJS): $(XEN_INCLUDE)/libxl.h
$(OBJS-y) $(PIC_OBJS) $(LIBXL_TEST_OBJS): libxl_internal.h
+$(SAVE_HELPER_OBJS): $(XEN_INCLUDE)/libxl.h _libxl_save_msgs_helper.h
+testidl.o: $(XEN_INCLUDE)/libxl.h
# This exploits the 'multi-target pattern rule' trick.
# gentypes.py should be executed only once to make all the targets.
@@ -260,5 +266,4 @@ clean::
$(RM) testidl.c.new testidl.c *.api-ok
$(RM) $(TEST_PROGS) libxenlight_test.so libxl_test_*.opic
$(RM) -r __pycache__
- $(RM) $(AUTOSRCS) $(AUTOINCS)
$(MAKE) -C $(ACPI_PATH) ACPI_BUILD_DIR=$(CURDIR) clean
--
Anthony PERARD
next prev parent reply other threads:[~2022-08-11 16:59 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-11 16:48 [XEN PATCH v4 00/32] Toolstack build system improvement, toward non-recursive makefiles Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 01/32] tools/debugger/gdbsx: Fix and cleanup makefiles Anthony PERARD
2022-08-19 12:57 ` Ping: " Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 02/32] tools/firmware/hvmloader: rework Makefile Anthony PERARD
2022-08-12 13:36 ` Jan Beulich
2022-08-12 14:28 ` Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 03/32] tools/fuzz/x86_instruction_emulator: rework makefile Anthony PERARD
2022-08-12 13:41 ` Jan Beulich
2022-08-11 16:48 ` [XEN PATCH v4 04/32] tools/hotplug: cleanup Makefiles Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 05/32] tools/libfsimage: Cleanup makefiles Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 06/32] tools/xenpaging: Rework makefile Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 07/32] tools/xentop: rework makefile Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 08/32] tools/xentrace: rework Makefile Anthony PERARD
2022-08-19 12:59 ` Ping: " Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 09/32] .gitignore: Cleanup ignores of tools/libs/*/{headers.chk,*.pc} Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 10/32] tools/libs/util: cleanup Makefile Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 11/32] tools/flask/utils: list build targets in $(TARGETS) Anthony PERARD
2022-08-15 11:31 ` Daniel P. Smith
2022-08-11 16:48 ` [XEN PATCH v4 12/32] libs/libs.mk: Rename $(LIB) to $(TARGETS) Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 13/32] libs/libs.mk: Remove the need for $(PKG_CONFIG_INST) Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 14/32] libs/libs.mk: Rework target headers.chk dependencies Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 15/32] tools: Introduce $(xenlibs-rpath,..) to replace $(SHDEPS_lib*) Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 16/32] tools: Introduce $(xenlibs-ldlibs, ) macro Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 17/32] tools: Introduce $(xenlibs-ldflags, " Anthony PERARD
2022-08-19 13:09 ` Ping: " Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 18/32] tools/helper: Cleanup Makefile Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 19/32] tools/console: Use $(xenlibs-ldlibs,) Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 20/32] tools: Add -Werror by default to all tools/ Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 21/32] tools: Remove -Werror everywhere else Anthony PERARD
2022-08-15 11:34 ` Daniel P. Smith
2022-08-19 13:25 ` Ping: " Anthony PERARD
2022-08-19 14:56 ` Jan Beulich
2022-08-19 15:18 ` Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 22/32] tools/hotplug: Generate "hotplugpath.sh" with configure Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 23/32] libs/light/gentypes.py: allow to generate headers in subdirectory Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 24/32] git-checkout.sh: handle running git-checkout from a different directory Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 25/32] libs: Avoid exposing -Wl,--version-script to other built library Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 26/32] libs: Fix auto-generation of version-script for unstable libs Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 27/32] tools/include: Rework Makefile Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 28/32] libs/light: Rework acpi table build targets Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 29/32] libs/light: Rework generation of include/_libxl_*.h Anthony PERARD
2022-08-11 16:48 ` Anthony PERARD [this message]
2022-08-11 16:48 ` [XEN PATCH v4 31/32] libs/light: Makefile cleanup Anthony PERARD
2022-08-11 16:48 ` [XEN PATCH v4 32/32] tools/golang/xenlight: Rework gengotypes.py and generation of *.gen.go Anthony PERARD
2022-10-13 8:43 ` Henry Wang
2022-08-12 7:53 ` [XEN PATCH v4 00/32] Toolstack build system improvement, toward non-recursive makefiles Christian Lindig
2022-08-15 7:01 ` Jan Beulich
2022-08-19 13:40 ` Anthony PERARD
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220811164845.38083-31-anthony.perard@citrix.com \
--to=anthony.perard@citrix.com \
--cc=jgross@suse.com \
--cc=wl@xen.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.