* [PATCH v2 0/4] configure: reduce number of files created
@ 2025-11-14 11:32 Juergen Gross
2025-11-14 11:32 ` [PATCH v2 1/4] build: add make macro for making file from file.in Juergen Gross
` (3 more replies)
0 siblings, 4 replies; 29+ messages in thread
From: Juergen Gross @ 2025-11-14 11:32 UTC (permalink / raw)
To: xen-devel
Cc: Juergen Gross, Andrew Cooper, Anthony PERARD, Michal Orzel,
Jan Beulich, Julien Grall, Roger Pau Monné,
Stefano Stabellini, Christian Lindig, David Scott
Instead of creating lots of files during configure, create those
files (where possible) rather at build time. This reduces the need
to run configure when e.g. changing a man page containing a path
defined by the configure run.
Changes in V2:
- dropped patch 1 as already applied
- no longer rename files to *.src
- don't use pattern rule
Juergen Gross (4):
build: add make macro for making file from file.in
docs: replace @xxx@ markers at build time
config: remove unused paths from config/Paths.mk.in
tools: replace @xxx@ markers at build time
.gitignore | 1 +
Config.mk | 13 +++++++++++++
config/Paths.mk.in | 5 -----
config/Tools-paths.mk.in | 10 ++++++++++
docs/Makefile | 8 +++++++-
docs/configure | 7 +------
docs/configure.ac | 9 +--------
tools/configure | 21 ++-------------------
tools/configure.ac | 19 +------------------
tools/hotplug/FreeBSD/Makefile | 7 ++++++-
tools/hotplug/Linux/Makefile | 10 +++++++++-
tools/hotplug/NetBSD/Makefile | 7 ++++++-
tools/hotplug/common/Makefile | 7 ++++++-
tools/ocaml/libs/xs/Makefile | 9 +++++++++
tools/ocaml/xenstored/Makefile | 9 ++++++++-
15 files changed, 80 insertions(+), 62 deletions(-)
create mode 100644 config/Tools-paths.mk.in
--
2.51.0
^ permalink raw reply [flat|nested] 29+ messages in thread* [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-14 11:32 [PATCH v2 0/4] configure: reduce number of files created Juergen Gross @ 2025-11-14 11:32 ` Juergen Gross 2025-11-14 11:42 ` Andrew Cooper 2025-11-17 12:29 ` Jan Beulich 2025-11-14 11:32 ` [PATCH v2 2/4] docs: replace @xxx@ markers at build time Juergen Gross ` (2 subsequent siblings) 3 siblings, 2 replies; 29+ messages in thread From: Juergen Gross @ 2025-11-14 11:32 UTC (permalink / raw) To: xen-devel Cc: Juergen Gross, Andrew Cooper, Anthony PERARD, Michal Orzel, Jan Beulich, Julien Grall, Roger Pau Monné, Stefano Stabellini Add a new make macro for creating <file> from <file>.in at build time. To be used like this: $(foreach file,$(IN_FILES),$(eval $(call apply-build-vars,$(file)))) This can be used instead of the current approach to perform the similar step for file.in during ./configure. This will avoid having to run ./configure just because of modifying a file depending on a variable set by configure. Prepare to have multiple files as source for the replacement patterns. Signed-off-by: Juergen Gross <jgross@suse.com> --- V2: - don't use pattern rule, but create explicit dependency in macro, don't require to rename source files (Jan Beulich, Andrew Cooper) --- Config.mk | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Config.mk b/Config.mk index e1556dfbfa..d21d67945a 100644 --- a/Config.mk +++ b/Config.mk @@ -159,6 +159,19 @@ define move-if-changed if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi endef +PATH_FILES := Paths +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) + +include $(INC_FILES) + +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) + +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) +define apply-build-vars + $(1): $(1).in + sed $$(foreach v, $$(BUILD_MAKE_VARS), -e 's#@$$(v)@#$$($$(v))#g') <$$< >$$@ +endef + CFLAGS += -fno-strict-aliasing CFLAGS += -std=gnu99 -- 2.51.0 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-14 11:32 ` [PATCH v2 1/4] build: add make macro for making file from file.in Juergen Gross @ 2025-11-14 11:42 ` Andrew Cooper 2025-11-14 12:54 ` Jürgen Groß 2025-11-17 12:29 ` Jan Beulich 1 sibling, 1 reply; 29+ messages in thread From: Andrew Cooper @ 2025-11-14 11:42 UTC (permalink / raw) To: Juergen Gross, xen-devel Cc: Anthony PERARD, Michal Orzel, Jan Beulich, Julien Grall, Roger Pau Monné, Stefano Stabellini On 14/11/2025 11:32 am, Juergen Gross wrote: > diff --git a/Config.mk b/Config.mk > index e1556dfbfa..d21d67945a 100644 > --- a/Config.mk > +++ b/Config.mk > @@ -159,6 +159,19 @@ define move-if-changed > if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi > endef > > +PATH_FILES := Paths > +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) > + > +include $(INC_FILES) > + > +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) > + > +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) > +define apply-build-vars > + $(1): $(1).in > + sed $$(foreach v, $$(BUILD_MAKE_VARS), -e 's#@$$(v)@#$$($$(v))#g') <$$< >$$@ > +endef Shouldn't this write to a tmp file, and use move-if-changed? Most of the time the markers won't have changed, and we'll want to short circuit dependent rules. ~Andrew ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-14 11:42 ` Andrew Cooper @ 2025-11-14 12:54 ` Jürgen Groß 2025-11-17 12:24 ` Jan Beulich 0 siblings, 1 reply; 29+ messages in thread From: Jürgen Groß @ 2025-11-14 12:54 UTC (permalink / raw) To: Andrew Cooper, xen-devel Cc: Anthony PERARD, Michal Orzel, Jan Beulich, Julien Grall, Roger Pau Monné, Stefano Stabellini [-- Attachment #1.1.1: Type: text/plain, Size: 1695 bytes --] On 14.11.25 12:42, Andrew Cooper wrote: > On 14/11/2025 11:32 am, Juergen Gross wrote: >> diff --git a/Config.mk b/Config.mk >> index e1556dfbfa..d21d67945a 100644 >> --- a/Config.mk >> +++ b/Config.mk >> @@ -159,6 +159,19 @@ define move-if-changed >> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >> endef >> >> +PATH_FILES := Paths >> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >> + >> +include $(INC_FILES) >> + >> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) >> + >> +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) >> +define apply-build-vars >> + $(1): $(1).in >> + sed $$(foreach v, $$(BUILD_MAKE_VARS), -e 's#@$$(v)@#$$($$(v))#g') <$$< >$$@ >> +endef > > Shouldn't this write to a tmp file, and use move-if-changed? Most of > the time the markers won't have changed, and we'll want to short circuit > dependent rules. I can see this being an advantage when e.g. generating header files, as those being generated again would potentially cause lots of rebuilds. In this case I can hardly see any case where make wouldn't do the right thing already. Either the *.in file is newer than the generated file due to a git update or a manual edit, so make will regenerate the target (and this is what we want), or the *.in file hasn't changed, so make won't regenerate the file as it is newer than the *.in file already. Or did I miss some aspect? What IS needed is probably a dependency on $(PATH_FILES) in case someone did a new ./configure call without a make distclean. Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-14 12:54 ` Jürgen Groß @ 2025-11-17 12:24 ` Jan Beulich 2025-11-17 12:30 ` Andrew Cooper 2025-11-17 12:37 ` Jürgen Groß 0 siblings, 2 replies; 29+ messages in thread From: Jan Beulich @ 2025-11-17 12:24 UTC (permalink / raw) To: Jürgen Groß Cc: Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, Andrew Cooper, xen-devel On 14.11.2025 13:54, Jürgen Groß wrote: > On 14.11.25 12:42, Andrew Cooper wrote: >> On 14/11/2025 11:32 am, Juergen Gross wrote: >>> diff --git a/Config.mk b/Config.mk >>> index e1556dfbfa..d21d67945a 100644 >>> --- a/Config.mk >>> +++ b/Config.mk >>> @@ -159,6 +159,19 @@ define move-if-changed >>> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >>> endef >>> >>> +PATH_FILES := Paths >>> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >>> + >>> +include $(INC_FILES) >>> + >>> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) >>> + >>> +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) >>> +define apply-build-vars >>> + $(1): $(1).in >>> + sed $$(foreach v, $$(BUILD_MAKE_VARS), -e 's#@$$(v)@#$$($$(v))#g') <$$< >$$@ >>> +endef >> >> Shouldn't this write to a tmp file, and use move-if-changed? Most of >> the time the markers won't have changed, and we'll want to short circuit >> dependent rules. > > I can see this being an advantage when e.g. generating header files, as > those being generated again would potentially cause lots of rebuilds. > > In this case I can hardly see any case where make wouldn't do the right > thing already. Either the *.in file is newer than the generated file due > to a git update or a manual edit, so make will regenerate the target (and > this is what we want), or the *.in file hasn't changed, so make won't > regenerate the file as it is newer than the *.in file already. > > Or did I miss some aspect? Aren't some of the generated files Makefile fragments? Them being re-generated means make re-invoking itself, which could be avoided if the contents don't really change. (This isn't just a performance concern; this re-invocation has been the source of, well, surprising behavior in certain cases.) Jan ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-17 12:24 ` Jan Beulich @ 2025-11-17 12:30 ` Andrew Cooper 2025-11-17 12:51 ` Jürgen Groß 2025-11-17 12:37 ` Jürgen Groß 1 sibling, 1 reply; 29+ messages in thread From: Andrew Cooper @ 2025-11-17 12:30 UTC (permalink / raw) To: Jan Beulich, Jürgen Groß Cc: Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, xen-devel On 17/11/2025 12:24 pm, Jan Beulich wrote: > On 14.11.2025 13:54, Jürgen Groß wrote: >> On 14.11.25 12:42, Andrew Cooper wrote: >>> On 14/11/2025 11:32 am, Juergen Gross wrote: >>>> diff --git a/Config.mk b/Config.mk >>>> index e1556dfbfa..d21d67945a 100644 >>>> --- a/Config.mk >>>> +++ b/Config.mk >>>> @@ -159,6 +159,19 @@ define move-if-changed >>>> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >>>> endef >>>> >>>> +PATH_FILES := Paths >>>> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >>>> + >>>> +include $(INC_FILES) >>>> + >>>> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) >>>> + >>>> +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) >>>> +define apply-build-vars >>>> + $(1): $(1).in >>>> + sed $$(foreach v, $$(BUILD_MAKE_VARS), -e 's#@$$(v)@#$$($$(v))#g') <$$< >$$@ >>>> +endef >>> Shouldn't this write to a tmp file, and use move-if-changed? Most of >>> the time the markers won't have changed, and we'll want to short circuit >>> dependent rules. >> I can see this being an advantage when e.g. generating header files, as >> those being generated again would potentially cause lots of rebuilds. >> >> In this case I can hardly see any case where make wouldn't do the right >> thing already. Either the *.in file is newer than the generated file due >> to a git update or a manual edit, so make will regenerate the target (and >> this is what we want), or the *.in file hasn't changed, so make won't >> regenerate the file as it is newer than the *.in file already. >> >> Or did I miss some aspect? > Aren't some of the generated files Makefile fragments? Them being re-generated > means make re-invoking itself, which could be avoided if the contents don't > really change. (This isn't just a performance concern; this re-invocation has > been the source of, well, surprising behavior in certain cases.) Having thought about this some more, it needs to be FORCE and move-if-changed, or to express a dependency on Paths.mk Otherwise, if you ./configure --libdir=something/else and then do an incremental build, the generated files will be wrong. ~Andrew ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-17 12:30 ` Andrew Cooper @ 2025-11-17 12:51 ` Jürgen Groß 0 siblings, 0 replies; 29+ messages in thread From: Jürgen Groß @ 2025-11-17 12:51 UTC (permalink / raw) To: Andrew Cooper, Jan Beulich Cc: Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, xen-devel [-- Attachment #1.1.1: Type: text/plain, Size: 2338 bytes --] On 17.11.25 13:30, Andrew Cooper wrote: > On 17/11/2025 12:24 pm, Jan Beulich wrote: >> On 14.11.2025 13:54, Jürgen Groß wrote: >>> On 14.11.25 12:42, Andrew Cooper wrote: >>>> On 14/11/2025 11:32 am, Juergen Gross wrote: >>>>> diff --git a/Config.mk b/Config.mk >>>>> index e1556dfbfa..d21d67945a 100644 >>>>> --- a/Config.mk >>>>> +++ b/Config.mk >>>>> @@ -159,6 +159,19 @@ define move-if-changed >>>>> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >>>>> endef >>>>> >>>>> +PATH_FILES := Paths >>>>> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >>>>> + >>>>> +include $(INC_FILES) >>>>> + >>>>> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) >>>>> + >>>>> +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) >>>>> +define apply-build-vars >>>>> + $(1): $(1).in >>>>> + sed $$(foreach v, $$(BUILD_MAKE_VARS), -e 's#@$$(v)@#$$($$(v))#g') <$$< >$$@ >>>>> +endef >>>> Shouldn't this write to a tmp file, and use move-if-changed? Most of >>>> the time the markers won't have changed, and we'll want to short circuit >>>> dependent rules. >>> I can see this being an advantage when e.g. generating header files, as >>> those being generated again would potentially cause lots of rebuilds. >>> >>> In this case I can hardly see any case where make wouldn't do the right >>> thing already. Either the *.in file is newer than the generated file due >>> to a git update or a manual edit, so make will regenerate the target (and >>> this is what we want), or the *.in file hasn't changed, so make won't >>> regenerate the file as it is newer than the *.in file already. >>> >>> Or did I miss some aspect? >> Aren't some of the generated files Makefile fragments? Them being re-generated >> means make re-invoking itself, which could be avoided if the contents don't >> really change. (This isn't just a performance concern; this re-invocation has >> been the source of, well, surprising behavior in certain cases.) > > Having thought about this some more, it needs to be FORCE and > move-if-changed, or to express a dependency on Paths.mk I said that already in the paragraph just after the part of my response you cited. Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-17 12:24 ` Jan Beulich 2025-11-17 12:30 ` Andrew Cooper @ 2025-11-17 12:37 ` Jürgen Groß 2025-11-17 12:51 ` Jan Beulich 1 sibling, 1 reply; 29+ messages in thread From: Jürgen Groß @ 2025-11-17 12:37 UTC (permalink / raw) To: Jan Beulich Cc: Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, Andrew Cooper, xen-devel [-- Attachment #1.1.1: Type: text/plain, Size: 2855 bytes --] On 17.11.25 13:24, Jan Beulich wrote: > On 14.11.2025 13:54, Jürgen Groß wrote: >> On 14.11.25 12:42, Andrew Cooper wrote: >>> On 14/11/2025 11:32 am, Juergen Gross wrote: >>>> diff --git a/Config.mk b/Config.mk >>>> index e1556dfbfa..d21d67945a 100644 >>>> --- a/Config.mk >>>> +++ b/Config.mk >>>> @@ -159,6 +159,19 @@ define move-if-changed >>>> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >>>> endef >>>> >>>> +PATH_FILES := Paths >>>> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >>>> + >>>> +include $(INC_FILES) >>>> + >>>> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) >>>> + >>>> +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) >>>> +define apply-build-vars >>>> + $(1): $(1).in >>>> + sed $$(foreach v, $$(BUILD_MAKE_VARS), -e 's#@$$(v)@#$$($$(v))#g') <$$< >$$@ >>>> +endef >>> >>> Shouldn't this write to a tmp file, and use move-if-changed? Most of >>> the time the markers won't have changed, and we'll want to short circuit >>> dependent rules. >> >> I can see this being an advantage when e.g. generating header files, as >> those being generated again would potentially cause lots of rebuilds. >> >> In this case I can hardly see any case where make wouldn't do the right >> thing already. Either the *.in file is newer than the generated file due >> to a git update or a manual edit, so make will regenerate the target (and >> this is what we want), or the *.in file hasn't changed, so make won't >> regenerate the file as it is newer than the *.in file already. >> >> Or did I miss some aspect? > > Aren't some of the generated files Makefile fragments? Them being re-generated No. Man-pages, shell scripts and some Ocaml files (one config file and one .ml file, which is similar to an include file I believe). > means make re-invoking itself, which could be avoided if the contents don't > really change. (This isn't just a performance concern; this re-invocation has > been the source of, well, surprising behavior in certain cases.) I still don't see a case where make would consider rebuilding the file from its .in file without the .in file having changed, thus resulting in the built file to change, too. Well, with one probably very rare exception: in case a different @marker@ is used in the .in file, but without changing the resulting file due to old and new marker resulting in the same output. In case we really care about such cases, we should think about using move-if-changed everywhere, as e.g. building a program with $HOSTCC could result in an unchanged binary even with source files having changed, and the resulting program could be used to generate other files ... Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-17 12:37 ` Jürgen Groß @ 2025-11-17 12:51 ` Jan Beulich 2025-11-17 13:03 ` Jürgen Groß 0 siblings, 1 reply; 29+ messages in thread From: Jan Beulich @ 2025-11-17 12:51 UTC (permalink / raw) To: Jürgen Groß Cc: Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, Andrew Cooper, xen-devel On 17.11.2025 13:37, Jürgen Groß wrote: > On 17.11.25 13:24, Jan Beulich wrote: >> On 14.11.2025 13:54, Jürgen Groß wrote: >>> On 14.11.25 12:42, Andrew Cooper wrote: >>>> On 14/11/2025 11:32 am, Juergen Gross wrote: >>>>> diff --git a/Config.mk b/Config.mk >>>>> index e1556dfbfa..d21d67945a 100644 >>>>> --- a/Config.mk >>>>> +++ b/Config.mk >>>>> @@ -159,6 +159,19 @@ define move-if-changed >>>>> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >>>>> endef >>>>> >>>>> +PATH_FILES := Paths >>>>> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >>>>> + >>>>> +include $(INC_FILES) >>>>> + >>>>> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) >>>>> + >>>>> +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) >>>>> +define apply-build-vars >>>>> + $(1): $(1).in >>>>> + sed $$(foreach v, $$(BUILD_MAKE_VARS), -e 's#@$$(v)@#$$($$(v))#g') <$$< >$$@ >>>>> +endef >>>> >>>> Shouldn't this write to a tmp file, and use move-if-changed? Most of >>>> the time the markers won't have changed, and we'll want to short circuit >>>> dependent rules. >>> >>> I can see this being an advantage when e.g. generating header files, as >>> those being generated again would potentially cause lots of rebuilds. >>> >>> In this case I can hardly see any case where make wouldn't do the right >>> thing already. Either the *.in file is newer than the generated file due >>> to a git update or a manual edit, so make will regenerate the target (and >>> this is what we want), or the *.in file hasn't changed, so make won't >>> regenerate the file as it is newer than the *.in file already. >>> >>> Or did I miss some aspect? >> >> Aren't some of the generated files Makefile fragments? Them being re-generated > > No. > > Man-pages, shell scripts and some Ocaml files (one config file and one .ml file, > which is similar to an include file I believe). > >> means make re-invoking itself, which could be avoided if the contents don't >> really change. (This isn't just a performance concern; this re-invocation has >> been the source of, well, surprising behavior in certain cases.) > > I still don't see a case where make would consider rebuilding the file from > its .in file without the .in file having changed, thus resulting in the built > file to change, too. As Andrew indicated, Paths.mk might have changed, so at the very least an explicit dependency would need adding. But as alluded to elsewhere, I'm not quite convinced Paths.mk should be hard-coded as the sole source of patterns in Config.mk. At the point further such file come into play, dealing with the dependencies might get interesting / clumsy. > Well, with one probably very rare exception: in case a > different @marker@ is used in the .in file, but without changing the resulting > file due to old and new marker resulting in the same output. > > In case we really care about such cases, we should think about using > move-if-changed everywhere, as e.g. building a program with $HOSTCC could > result in an unchanged binary even with source files having changed, and the > resulting program could be used to generate other files ... For some of the cases this might actually be worthwhile. It all depends on how much of a knock-on effect the re-building of a particular file has. Jan ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-17 12:51 ` Jan Beulich @ 2025-11-17 13:03 ` Jürgen Groß 0 siblings, 0 replies; 29+ messages in thread From: Jürgen Groß @ 2025-11-17 13:03 UTC (permalink / raw) To: Jan Beulich Cc: Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, Andrew Cooper, xen-devel [-- Attachment #1.1.1: Type: text/plain, Size: 4157 bytes --] On 17.11.25 13:51, Jan Beulich wrote: > On 17.11.2025 13:37, Jürgen Groß wrote: >> On 17.11.25 13:24, Jan Beulich wrote: >>> On 14.11.2025 13:54, Jürgen Groß wrote: >>>> On 14.11.25 12:42, Andrew Cooper wrote: >>>>> On 14/11/2025 11:32 am, Juergen Gross wrote: >>>>>> diff --git a/Config.mk b/Config.mk >>>>>> index e1556dfbfa..d21d67945a 100644 >>>>>> --- a/Config.mk >>>>>> +++ b/Config.mk >>>>>> @@ -159,6 +159,19 @@ define move-if-changed >>>>>> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >>>>>> endef >>>>>> >>>>>> +PATH_FILES := Paths >>>>>> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >>>>>> + >>>>>> +include $(INC_FILES) >>>>>> + >>>>>> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) >>>>>> + >>>>>> +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) >>>>>> +define apply-build-vars >>>>>> + $(1): $(1).in >>>>>> + sed $$(foreach v, $$(BUILD_MAKE_VARS), -e 's#@$$(v)@#$$($$(v))#g') <$$< >$$@ >>>>>> +endef >>>>> >>>>> Shouldn't this write to a tmp file, and use move-if-changed? Most of >>>>> the time the markers won't have changed, and we'll want to short circuit >>>>> dependent rules. >>>> >>>> I can see this being an advantage when e.g. generating header files, as >>>> those being generated again would potentially cause lots of rebuilds. >>>> >>>> In this case I can hardly see any case where make wouldn't do the right >>>> thing already. Either the *.in file is newer than the generated file due >>>> to a git update or a manual edit, so make will regenerate the target (and >>>> this is what we want), or the *.in file hasn't changed, so make won't >>>> regenerate the file as it is newer than the *.in file already. >>>> >>>> Or did I miss some aspect? >>> >>> Aren't some of the generated files Makefile fragments? Them being re-generated >> >> No. >> >> Man-pages, shell scripts and some Ocaml files (one config file and one .ml file, >> which is similar to an include file I believe). >> >>> means make re-invoking itself, which could be avoided if the contents don't >>> really change. (This isn't just a performance concern; this re-invocation has >>> been the source of, well, surprising behavior in certain cases.) >> >> I still don't see a case where make would consider rebuilding the file from >> its .in file without the .in file having changed, thus resulting in the built >> file to change, too. > > As Andrew indicated, Paths.mk might have changed, so at the very least an > explicit dependency would need adding. But as alluded to elsewhere, I'm not Yes, and I said that already. > quite convinced Paths.mk should be hard-coded as the sole source of patterns > in Config.mk. At the point further such file come into play, dealing with the > dependencies might get interesting / clumsy. See my answer to your next reply. > >> Well, with one probably very rare exception: in case a >> different @marker@ is used in the .in file, but without changing the resulting >> file due to old and new marker resulting in the same output. >> >> In case we really care about such cases, we should think about using >> move-if-changed everywhere, as e.g. building a program with $HOSTCC could >> result in an unchanged binary even with source files having changed, and the >> resulting program could be used to generate other files ... > > For some of the cases this might actually be worthwhile. It all depends on > how much of a knock-on effect the re-building of a particular file has. As long as the effect is not WRONG (which isn't the case with my patch series), I think we have to consider how often this would be the case. Optimizing the build time for one case in 10.000 builds (and I think the ratio in the case of my series is even more extreme) while making the build time even only a tiny bit longer for all the other cases is a bad idea IMHO. And the build time will be slower with using a tmp file and invoking the move-if-changed macro. Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-14 11:32 ` [PATCH v2 1/4] build: add make macro for making file from file.in Juergen Gross 2025-11-14 11:42 ` Andrew Cooper @ 2025-11-17 12:29 ` Jan Beulich 2025-11-17 12:48 ` Jürgen Groß 1 sibling, 1 reply; 29+ messages in thread From: Jan Beulich @ 2025-11-17 12:29 UTC (permalink / raw) To: Juergen Gross Cc: Andrew Cooper, Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, xen-devel On 14.11.2025 12:32, Juergen Gross wrote: > Add a new make macro for creating <file> from <file>.in at build > time. To be used like this: > > $(foreach file,$(IN_FILES),$(eval $(call apply-build-vars,$(file)))) > > This can be used instead of the current approach to perform the similar > step for file.in during ./configure. > > This will avoid having to run ./configure just because of modifying a > file depending on a variable set by configure. > > Prepare to have multiple files as source for the replacement patterns. > > Signed-off-by: Juergen Gross <jgross@suse.com> > --- > V2: > - don't use pattern rule, but create explicit dependency in macro, > don't require to rename source files (Jan Beulich, Andrew Cooper) > --- > Config.mk | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/Config.mk b/Config.mk > index e1556dfbfa..d21d67945a 100644 > --- a/Config.mk > +++ b/Config.mk > @@ -159,6 +159,19 @@ define move-if-changed > if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi > endef > > +PATH_FILES := Paths > +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) > + > +include $(INC_FILES) Is any of the above part of introducing the macro? "Paths" is already a specific case of holding patterns that want replacing. In turn ... > +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) ... it's not quite clear to me how it can be $(PATH_FILES) here. > +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) > +define apply-build-vars > + $(1): $(1).in This being indented by a space looks a little unusual. Jan > + sed $$(foreach v, $$(BUILD_MAKE_VARS), -e 's#@$$(v)@#$$($$(v))#g') <$$< >$$@ > +endef > + > CFLAGS += -fno-strict-aliasing > > CFLAGS += -std=gnu99 ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-17 12:29 ` Jan Beulich @ 2025-11-17 12:48 ` Jürgen Groß 2025-11-17 12:54 ` Jan Beulich 0 siblings, 1 reply; 29+ messages in thread From: Jürgen Groß @ 2025-11-17 12:48 UTC (permalink / raw) To: Jan Beulich Cc: Andrew Cooper, Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, xen-devel [-- Attachment #1.1.1: Type: text/plain, Size: 2183 bytes --] On 17.11.25 13:29, Jan Beulich wrote: > On 14.11.2025 12:32, Juergen Gross wrote: >> Add a new make macro for creating <file> from <file>.in at build >> time. To be used like this: >> >> $(foreach file,$(IN_FILES),$(eval $(call apply-build-vars,$(file)))) >> >> This can be used instead of the current approach to perform the similar >> step for file.in during ./configure. >> >> This will avoid having to run ./configure just because of modifying a >> file depending on a variable set by configure. >> >> Prepare to have multiple files as source for the replacement patterns. >> >> Signed-off-by: Juergen Gross <jgross@suse.com> >> --- >> V2: >> - don't use pattern rule, but create explicit dependency in macro, >> don't require to rename source files (Jan Beulich, Andrew Cooper) >> --- >> Config.mk | 13 +++++++++++++ >> 1 file changed, 13 insertions(+) >> >> diff --git a/Config.mk b/Config.mk >> index e1556dfbfa..d21d67945a 100644 >> --- a/Config.mk >> +++ b/Config.mk >> @@ -159,6 +159,19 @@ define move-if-changed >> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >> endef >> >> +PATH_FILES := Paths >> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >> + >> +include $(INC_FILES) > > Is any of the above part of introducing the macro? "Paths" is already a > specific case of holding patterns that want replacing. In turn ... > >> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) > > ... it's not quite clear to me how it can be $(PATH_FILES) here. See patch 4. PATH_FILES is specifying the .mk files containing the marker definitions. I need the ability to have multiple such files in order to be able to let tools/configure build its own definitions. > >> +# Replace @xxx@ markers in $(1).in with $(xxx) variable contents, write to $(1) >> +define apply-build-vars >> + $(1): $(1).in > > This being indented by a space looks a little unusual. There are instances of that in tools/Rules.mk and stunbdom/Makefile. OTOH it might have been me introducing those. :-) Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-17 12:48 ` Jürgen Groß @ 2025-11-17 12:54 ` Jan Beulich 2025-11-17 13:10 ` Jürgen Groß 0 siblings, 1 reply; 29+ messages in thread From: Jan Beulich @ 2025-11-17 12:54 UTC (permalink / raw) To: Jürgen Groß Cc: Andrew Cooper, Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, xen-devel On 17.11.2025 13:48, Jürgen Groß wrote: > On 17.11.25 13:29, Jan Beulich wrote: >> On 14.11.2025 12:32, Juergen Gross wrote: >>> --- a/Config.mk >>> +++ b/Config.mk >>> @@ -159,6 +159,19 @@ define move-if-changed >>> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >>> endef >>> >>> +PATH_FILES := Paths >>> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >>> + >>> +include $(INC_FILES) >> >> Is any of the above part of introducing the macro? "Paths" is already a >> specific case of holding patterns that want replacing. In turn ... >> >>> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) >> >> ... it's not quite clear to me how it can be $(PATH_FILES) here. > > See patch 4. > > PATH_FILES is specifying the .mk files containing the marker definitions. > I need the ability to have multiple such files in order to be able to let > tools/configure build its own definitions. That's a good example - why would that affect the stubdom/ part of the tree? Imo what pattern file(s) to use wants leaving to the invokee of the macro, not pinning down globally for everyone. Jan ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-17 12:54 ` Jan Beulich @ 2025-11-17 13:10 ` Jürgen Groß 2025-11-17 14:05 ` Jan Beulich 0 siblings, 1 reply; 29+ messages in thread From: Jürgen Groß @ 2025-11-17 13:10 UTC (permalink / raw) To: Jan Beulich Cc: Andrew Cooper, Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, xen-devel [-- Attachment #1.1.1: Type: text/plain, Size: 1596 bytes --] On 17.11.25 13:54, Jan Beulich wrote: > On 17.11.2025 13:48, Jürgen Groß wrote: >> On 17.11.25 13:29, Jan Beulich wrote: >>> On 14.11.2025 12:32, Juergen Gross wrote: >>>> --- a/Config.mk >>>> +++ b/Config.mk >>>> @@ -159,6 +159,19 @@ define move-if-changed >>>> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >>>> endef >>>> >>>> +PATH_FILES := Paths >>>> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >>>> + >>>> +include $(INC_FILES) >>> >>> Is any of the above part of introducing the macro? "Paths" is already a >>> specific case of holding patterns that want replacing. In turn ... >>> >>>> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) >>> >>> ... it's not quite clear to me how it can be $(PATH_FILES) here. >> >> See patch 4. >> >> PATH_FILES is specifying the .mk files containing the marker definitions. >> I need the ability to have multiple such files in order to be able to let >> tools/configure build its own definitions. > > That's a good example - why would that affect the stubdom/ part of the tree? > Imo what pattern file(s) to use wants leaving to the invokee of the macro, > not pinning down globally for everyone. Yes, I could add the tools specific marker file in the use cases under tools. The question is whether adding it to 6 Makefiles is really worth that optimization, especially as only building the man files would be effected right now (which could change in future, of course). Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 1/4] build: add make macro for making file from file.in 2025-11-17 13:10 ` Jürgen Groß @ 2025-11-17 14:05 ` Jan Beulich 0 siblings, 0 replies; 29+ messages in thread From: Jan Beulich @ 2025-11-17 14:05 UTC (permalink / raw) To: Jürgen Groß Cc: Andrew Cooper, Anthony PERARD, Michal Orzel, Julien Grall, Roger Pau Monné, Stefano Stabellini, xen-devel On 17.11.2025 14:10, Jürgen Groß wrote: > On 17.11.25 13:54, Jan Beulich wrote: >> On 17.11.2025 13:48, Jürgen Groß wrote: >>> On 17.11.25 13:29, Jan Beulich wrote: >>>> On 14.11.2025 12:32, Juergen Gross wrote: >>>>> --- a/Config.mk >>>>> +++ b/Config.mk >>>>> @@ -159,6 +159,19 @@ define move-if-changed >>>>> if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi >>>>> endef >>>>> >>>>> +PATH_FILES := Paths >>>>> +INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) >>>>> + >>>>> +include $(INC_FILES) >>>> >>>> Is any of the above part of introducing the macro? "Paths" is already a >>>> specific case of holding patterns that want replacing. In turn ... >>>> >>>>> +BUILD_MAKE_VARS := $(foreach f, $(PATH_FILES), $(shell awk '$$2 == ":=" { print $$1; }' $(XEN_ROOT)/config/$(f).mk.in)) >>>> >>>> ... it's not quite clear to me how it can be $(PATH_FILES) here. >>> >>> See patch 4. >>> >>> PATH_FILES is specifying the .mk files containing the marker definitions. >>> I need the ability to have multiple such files in order to be able to let >>> tools/configure build its own definitions. >> >> That's a good example - why would that affect the stubdom/ part of the tree? >> Imo what pattern file(s) to use wants leaving to the invokee of the macro, >> not pinning down globally for everyone. > > Yes, I could add the tools specific marker file in the use cases under tools. > > The question is whether adding it to 6 Makefiles is really worth that > optimization, especially as only building the man files would be effected > right now (which could change in future, of course). Sticking to Paths.mk (which sits in the global config/ subtree anyway) might be okay. The new (tools/ specific aiui) file you add later doesn't really belong there, though. Therefore the macro may want to be constructed such that it can be used both ways. Jan ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v2 2/4] docs: replace @xxx@ markers at build time 2025-11-14 11:32 [PATCH v2 0/4] configure: reduce number of files created Juergen Gross 2025-11-14 11:32 ` [PATCH v2 1/4] build: add make macro for making file from file.in Juergen Gross @ 2025-11-14 11:32 ` Juergen Gross 2025-11-14 11:40 ` Andrew Cooper 2025-11-14 11:32 ` [PATCH v2 3/4] config: remove unused paths from config/Paths.mk.in Juergen Gross 2025-11-14 11:32 ` [PATCH v2 4/4] tools: replace @xxx@ markers at build time Juergen Gross 3 siblings, 1 reply; 29+ messages in thread From: Juergen Gross @ 2025-11-14 11:32 UTC (permalink / raw) To: xen-devel; +Cc: Juergen Gross, Anthony PERARD Use the apply-build-vars make macro to replace the @xxx@ markers in *.in files only at build time. This allows to change the affected document files without having to run "configure" for making the change effective. While at it add the generated files to the distclean make target. Signed-off-by: Juergen Gross <jgross@suse.com> --- V2: - don't rename source files --- docs/Makefile | 8 +++++++- docs/configure | 7 +------ docs/configure.ac | 9 +-------- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/docs/Makefile b/docs/Makefile index 37776d303c..e5f4a8ca86 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -8,8 +8,11 @@ DATE := $(call date,"+%Y-%m-%d") DOC_ARCHES := arm ppc riscv x86_32 x86_64 MAN_SECTIONS := 1 5 7 8 +IN_FILES := man/xl-disk-configuration.5.pod man/xl-network-configuration.5.pod +IN_FILES += man/xl.1.pod man/xl.cfg.5.pod man/xl.conf.5.pod + # Documentation sources to build -MAN-SRC-y := $(sort $(basename $(wildcard man/*.pod man/*.pandoc))) +MAN-SRC-y := $(sort $(basename $(wildcard man/*.pod man/*.pandoc) $(IN_FILES))) RST-SRC-y := $(sort $(filter-out %index.rst,$(shell find * -type f -name '*.rst' -print))) @@ -77,11 +80,14 @@ clean: clean-man-pages distclean: clean rm -rf $(XEN_ROOT)/config/Docs.mk config.log config.status config.cache \ autom4te.cache + rm -f $(IN_FILES) # Top level install targets .PHONY: man-pages install-man-pages clean-man-pages uninstall-man-pages +$(foreach file,$(IN_FILES),$(eval $(call apply-build-vars,$(file)))) + # Metarules for generating manpages. Run with $(1) substitued for section define GENERATE_MANPAGE_RULES diff --git a/docs/configure b/docs/configure index 98dda3cd0f..8871914dcb 100755 --- a/docs/configure +++ b/docs/configure @@ -1794,7 +1794,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_config_files="$ac_config_files ../config/Docs.mk man/xl.cfg.5.pod man/xl.1.pod man/xl-disk-configuration.5.pod man/xl-network-configuration.5.pod man/xl.conf.5.pod" +ac_config_files="$ac_config_files ../config/Docs.mk" @@ -3063,11 +3063,6 @@ for ac_config_target in $ac_config_targets do case $ac_config_target in "../config/Docs.mk") CONFIG_FILES="$CONFIG_FILES ../config/Docs.mk" ;; - "man/xl.cfg.5.pod") CONFIG_FILES="$CONFIG_FILES man/xl.cfg.5.pod" ;; - "man/xl.1.pod") CONFIG_FILES="$CONFIG_FILES man/xl.1.pod" ;; - "man/xl-disk-configuration.5.pod") CONFIG_FILES="$CONFIG_FILES man/xl-disk-configuration.5.pod" ;; - "man/xl-network-configuration.5.pod") CONFIG_FILES="$CONFIG_FILES man/xl-network-configuration.5.pod" ;; - "man/xl.conf.5.pod") CONFIG_FILES="$CONFIG_FILES man/xl.conf.5.pod" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac diff --git a/docs/configure.ac b/docs/configure.ac index c2e5edd3b3..43dc516056 100644 --- a/docs/configure.ac +++ b/docs/configure.ac @@ -5,14 +5,7 @@ AC_PREREQ([2.67]) AC_INIT([Xen Hypervisor Documentation], m4_esyscmd([../version.sh ../xen/Makefile]), [xen-devel@lists.xen.org], [xen], [https://www.xen.org/]) AC_CONFIG_SRCDIR([misc/xen-command-line.pandoc]) -AC_CONFIG_FILES([ -../config/Docs.mk -man/xl.cfg.5.pod -man/xl.1.pod -man/xl-disk-configuration.5.pod -man/xl-network-configuration.5.pod -man/xl.conf.5.pod -]) +AC_CONFIG_FILES([../config/Docs.mk]) AC_CONFIG_AUX_DIR([../]) # M4 Macro includes -- 2.51.0 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v2 2/4] docs: replace @xxx@ markers at build time 2025-11-14 11:32 ` [PATCH v2 2/4] docs: replace @xxx@ markers at build time Juergen Gross @ 2025-11-14 11:40 ` Andrew Cooper 2025-11-14 13:00 ` Jürgen Groß 0 siblings, 1 reply; 29+ messages in thread From: Andrew Cooper @ 2025-11-14 11:40 UTC (permalink / raw) To: Juergen Gross, xen-devel; +Cc: Anthony PERARD On 14/11/2025 11:32 am, Juergen Gross wrote: > diff --git a/docs/Makefile b/docs/Makefile > index 37776d303c..e5f4a8ca86 100644 > --- a/docs/Makefile > +++ b/docs/Makefile > @@ -8,8 +8,11 @@ DATE := $(call date,"+%Y-%m-%d") > DOC_ARCHES := arm ppc riscv x86_32 x86_64 > MAN_SECTIONS := 1 5 7 8 > > +IN_FILES := man/xl-disk-configuration.5.pod man/xl-network-configuration.5.pod > +IN_FILES += man/xl.1.pod man/xl.cfg.5.pod man/xl.conf.5.pod Sorry, I meant to say this on the previous revision. Can we please list these one per line, for the future ease of inserting/removing. Is IN_FILES really correct? These are the generated (non-.in) files, rather than the .in files themselves. GEN_FILES from v1 would seem to be a better fit. But, overall I think this is a nicer change. > + > # Documentation sources to build > -MAN-SRC-y := $(sort $(basename $(wildcard man/*.pod man/*.pandoc))) > +MAN-SRC-y := $(sort $(basename $(wildcard man/*.pod man/*.pandoc) $(IN_FILES))) Doesn't the man/*.pod wildcard do this already ? ~Andrew ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 2/4] docs: replace @xxx@ markers at build time 2025-11-14 11:40 ` Andrew Cooper @ 2025-11-14 13:00 ` Jürgen Groß 2025-11-17 12:33 ` Jan Beulich 0 siblings, 1 reply; 29+ messages in thread From: Jürgen Groß @ 2025-11-14 13:00 UTC (permalink / raw) To: Andrew Cooper, xen-devel; +Cc: Anthony PERARD [-- Attachment #1.1.1: Type: text/plain, Size: 1514 bytes --] On 14.11.25 12:40, Andrew Cooper wrote: > On 14/11/2025 11:32 am, Juergen Gross wrote: >> diff --git a/docs/Makefile b/docs/Makefile >> index 37776d303c..e5f4a8ca86 100644 >> --- a/docs/Makefile >> +++ b/docs/Makefile >> @@ -8,8 +8,11 @@ DATE := $(call date,"+%Y-%m-%d") >> DOC_ARCHES := arm ppc riscv x86_32 x86_64 >> MAN_SECTIONS := 1 5 7 8 >> >> +IN_FILES := man/xl-disk-configuration.5.pod man/xl-network-configuration.5.pod >> +IN_FILES += man/xl.1.pod man/xl.cfg.5.pod man/xl.conf.5.pod > > Sorry, I meant to say this on the previous revision. Can we please list > these one per line, for the future ease of inserting/removing. Okay. > Is IN_FILES really correct? These are the generated (non-.in) files, > rather than the .in files themselves. GEN_FILES from v1 would seem to > be a better fit. I wanted to make clear this is related to *.in files. And IMHO GEN_FILES was too generic on a second thought. GENERATED_FROM_IN_SUFFIXED_FILES seems a little bit clumsy. ;-) Seriously, if you have any better name, I'd be happy to use it. > But, overall I think this is a nicer change. > >> + >> # Documentation sources to build >> -MAN-SRC-y := $(sort $(basename $(wildcard man/*.pod man/*.pandoc))) >> +MAN-SRC-y := $(sort $(basename $(wildcard man/*.pod man/*.pandoc) $(IN_FILES))) > > Doesn't the man/*.pod wildcard do this already ? Not if only the man/*.pod.in file is there, so the man/*.pod file needs to be made first. Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 2/4] docs: replace @xxx@ markers at build time 2025-11-14 13:00 ` Jürgen Groß @ 2025-11-17 12:33 ` Jan Beulich 2025-11-17 12:55 ` Jürgen Groß 0 siblings, 1 reply; 29+ messages in thread From: Jan Beulich @ 2025-11-17 12:33 UTC (permalink / raw) To: Jürgen Groß; +Cc: Anthony PERARD, Andrew Cooper, xen-devel On 14.11.2025 14:00, Jürgen Groß wrote: > On 14.11.25 12:40, Andrew Cooper wrote: >> On 14/11/2025 11:32 am, Juergen Gross wrote: >>> diff --git a/docs/Makefile b/docs/Makefile >>> index 37776d303c..e5f4a8ca86 100644 >>> --- a/docs/Makefile >>> +++ b/docs/Makefile >>> @@ -8,8 +8,11 @@ DATE := $(call date,"+%Y-%m-%d") >>> DOC_ARCHES := arm ppc riscv x86_32 x86_64 >>> MAN_SECTIONS := 1 5 7 8 >>> >>> +IN_FILES := man/xl-disk-configuration.5.pod man/xl-network-configuration.5.pod >>> +IN_FILES += man/xl.1.pod man/xl.cfg.5.pod man/xl.conf.5.pod >> >> Sorry, I meant to say this on the previous revision. Can we please list >> these one per line, for the future ease of inserting/removing. > > Okay. > >> Is IN_FILES really correct? These are the generated (non-.in) files, >> rather than the .in files themselves. GEN_FILES from v1 would seem to >> be a better fit. > > I wanted to make clear this is related to *.in files. And IMHO GEN_FILES > was too generic on a second thought. > > GENERATED_FROM_IN_SUFFIXED_FILES seems a little bit clumsy. ;-) > Seriously, if you have any better name, I'd be happy to use it. GEN_POD_FILES, seeing they're all *.pod? Jan ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 2/4] docs: replace @xxx@ markers at build time 2025-11-17 12:33 ` Jan Beulich @ 2025-11-17 12:55 ` Jürgen Groß 2025-11-17 13:00 ` Jan Beulich 0 siblings, 1 reply; 29+ messages in thread From: Jürgen Groß @ 2025-11-17 12:55 UTC (permalink / raw) To: Jan Beulich; +Cc: Anthony PERARD, Andrew Cooper, xen-devel [-- Attachment #1.1.1: Type: text/plain, Size: 1542 bytes --] On 17.11.25 13:33, Jan Beulich wrote: > On 14.11.2025 14:00, Jürgen Groß wrote: >> On 14.11.25 12:40, Andrew Cooper wrote: >>> On 14/11/2025 11:32 am, Juergen Gross wrote: >>>> diff --git a/docs/Makefile b/docs/Makefile >>>> index 37776d303c..e5f4a8ca86 100644 >>>> --- a/docs/Makefile >>>> +++ b/docs/Makefile >>>> @@ -8,8 +8,11 @@ DATE := $(call date,"+%Y-%m-%d") >>>> DOC_ARCHES := arm ppc riscv x86_32 x86_64 >>>> MAN_SECTIONS := 1 5 7 8 >>>> >>>> +IN_FILES := man/xl-disk-configuration.5.pod man/xl-network-configuration.5.pod >>>> +IN_FILES += man/xl.1.pod man/xl.cfg.5.pod man/xl.conf.5.pod >>> >>> Sorry, I meant to say this on the previous revision. Can we please list >>> these one per line, for the future ease of inserting/removing. >> >> Okay. >> >>> Is IN_FILES really correct? These are the generated (non-.in) files, >>> rather than the .in files themselves. GEN_FILES from v1 would seem to >>> be a better fit. >> >> I wanted to make clear this is related to *.in files. And IMHO GEN_FILES >> was too generic on a second thought. >> >> GENERATED_FROM_IN_SUFFIXED_FILES seems a little bit clumsy. ;-) >> Seriously, if you have any better name, I'd be happy to use it. > > GEN_POD_FILES, seeing they're all *.pod? For this case, maybe. OTOH in case someone adds a .podman file we'd need to rename again. And I think using the same make variable name in all Makefiles needing to specify *.in derived files would be preferable. Maybe IN_TARGETS? Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 2/4] docs: replace @xxx@ markers at build time 2025-11-17 12:55 ` Jürgen Groß @ 2025-11-17 13:00 ` Jan Beulich 2025-11-17 13:17 ` Jürgen Groß 0 siblings, 1 reply; 29+ messages in thread From: Jan Beulich @ 2025-11-17 13:00 UTC (permalink / raw) To: Jürgen Groß; +Cc: Anthony PERARD, Andrew Cooper, xen-devel On 17.11.2025 13:55, Jürgen Groß wrote: > On 17.11.25 13:33, Jan Beulich wrote: >> On 14.11.2025 14:00, Jürgen Groß wrote: >>> On 14.11.25 12:40, Andrew Cooper wrote: >>>> On 14/11/2025 11:32 am, Juergen Gross wrote: >>>>> diff --git a/docs/Makefile b/docs/Makefile >>>>> index 37776d303c..e5f4a8ca86 100644 >>>>> --- a/docs/Makefile >>>>> +++ b/docs/Makefile >>>>> @@ -8,8 +8,11 @@ DATE := $(call date,"+%Y-%m-%d") >>>>> DOC_ARCHES := arm ppc riscv x86_32 x86_64 >>>>> MAN_SECTIONS := 1 5 7 8 >>>>> >>>>> +IN_FILES := man/xl-disk-configuration.5.pod man/xl-network-configuration.5.pod >>>>> +IN_FILES += man/xl.1.pod man/xl.cfg.5.pod man/xl.conf.5.pod >>>> >>>> Sorry, I meant to say this on the previous revision. Can we please list >>>> these one per line, for the future ease of inserting/removing. >>> >>> Okay. >>> >>>> Is IN_FILES really correct? These are the generated (non-.in) files, >>>> rather than the .in files themselves. GEN_FILES from v1 would seem to >>>> be a better fit. >>> >>> I wanted to make clear this is related to *.in files. And IMHO GEN_FILES >>> was too generic on a second thought. >>> >>> GENERATED_FROM_IN_SUFFIXED_FILES seems a little bit clumsy. ;-) >>> Seriously, if you have any better name, I'd be happy to use it. >> >> GEN_POD_FILES, seeing they're all *.pod? > > For this case, maybe. OTOH in case someone adds a .podman file we'd need > to rename again. > > And I think using the same make variable name in all Makefiles needing to > specify *.in derived files would be preferable. > > Maybe IN_TARGETS? Better than IN_FILES, but still potentially ambiguous. How about sticking to IN_FILES but indeed enumerating the .in there (zapping the suffix upon use)? And/or would $(wildcard <path>/*.in) perhaps make sense to use? Jan ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 2/4] docs: replace @xxx@ markers at build time 2025-11-17 13:00 ` Jan Beulich @ 2025-11-17 13:17 ` Jürgen Groß 2025-11-17 14:06 ` Jan Beulich 0 siblings, 1 reply; 29+ messages in thread From: Jürgen Groß @ 2025-11-17 13:17 UTC (permalink / raw) To: Jan Beulich; +Cc: Anthony PERARD, Andrew Cooper, xen-devel [-- Attachment #1.1.1: Type: text/plain, Size: 2493 bytes --] On 17.11.25 14:00, Jan Beulich wrote: > On 17.11.2025 13:55, Jürgen Groß wrote: >> On 17.11.25 13:33, Jan Beulich wrote: >>> On 14.11.2025 14:00, Jürgen Groß wrote: >>>> On 14.11.25 12:40, Andrew Cooper wrote: >>>>> On 14/11/2025 11:32 am, Juergen Gross wrote: >>>>>> diff --git a/docs/Makefile b/docs/Makefile >>>>>> index 37776d303c..e5f4a8ca86 100644 >>>>>> --- a/docs/Makefile >>>>>> +++ b/docs/Makefile >>>>>> @@ -8,8 +8,11 @@ DATE := $(call date,"+%Y-%m-%d") >>>>>> DOC_ARCHES := arm ppc riscv x86_32 x86_64 >>>>>> MAN_SECTIONS := 1 5 7 8 >>>>>> >>>>>> +IN_FILES := man/xl-disk-configuration.5.pod man/xl-network-configuration.5.pod >>>>>> +IN_FILES += man/xl.1.pod man/xl.cfg.5.pod man/xl.conf.5.pod >>>>> >>>>> Sorry, I meant to say this on the previous revision. Can we please list >>>>> these one per line, for the future ease of inserting/removing. >>>> >>>> Okay. >>>> >>>>> Is IN_FILES really correct? These are the generated (non-.in) files, >>>>> rather than the .in files themselves. GEN_FILES from v1 would seem to >>>>> be a better fit. >>>> >>>> I wanted to make clear this is related to *.in files. And IMHO GEN_FILES >>>> was too generic on a second thought. >>>> >>>> GENERATED_FROM_IN_SUFFIXED_FILES seems a little bit clumsy. ;-) >>>> Seriously, if you have any better name, I'd be happy to use it. >>> >>> GEN_POD_FILES, seeing they're all *.pod? >> >> For this case, maybe. OTOH in case someone adds a .podman file we'd need >> to rename again. >> >> And I think using the same make variable name in all Makefiles needing to >> specify *.in derived files would be preferable. >> >> Maybe IN_TARGETS? > > Better than IN_FILES, but still potentially ambiguous. How about sticking > to IN_FILES but indeed enumerating the .in there (zapping the suffix upon > use)? And/or would $(wildcard <path>/*.in) perhaps make sense to use? Zapping the suffix upon use would be possible, but more clumsy (there are normally at least 3 direct uses of IN_FILES in each affected Makefile, while there are 0 use cases of the .in suffixed source files). Using a local make variable for speeding that up would have the same problem as before: how to name it? And using $(wildcard <path>/*.in) is not an option, as that would reintroduce the need to distinguish the configure-time and build-time *.in files, which I solved in V1 of my series by renaming the build-time ones to *.src. Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 2/4] docs: replace @xxx@ markers at build time 2025-11-17 13:17 ` Jürgen Groß @ 2025-11-17 14:06 ` Jan Beulich 0 siblings, 0 replies; 29+ messages in thread From: Jan Beulich @ 2025-11-17 14:06 UTC (permalink / raw) To: Jürgen Groß; +Cc: Anthony PERARD, Andrew Cooper, xen-devel On 17.11.2025 14:17, Jürgen Groß wrote: > And using $(wildcard <path>/*.in) is not an option, as that would reintroduce > the need to distinguish the configure-time and build-time *.in files, Hmm, yes, if there's a mix of them in any one directory, that wouldn't work. Jan > which > I solved in V1 of my series by renaming the build-time ones to *.src. > > > Juergen ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v2 3/4] config: remove unused paths from config/Paths.mk.in 2025-11-14 11:32 [PATCH v2 0/4] configure: reduce number of files created Juergen Gross 2025-11-14 11:32 ` [PATCH v2 1/4] build: add make macro for making file from file.in Juergen Gross 2025-11-14 11:32 ` [PATCH v2 2/4] docs: replace @xxx@ markers at build time Juergen Gross @ 2025-11-14 11:32 ` Juergen Gross 2025-11-14 11:47 ` Andrew Cooper 2025-11-14 11:32 ` [PATCH v2 4/4] tools: replace @xxx@ markers at build time Juergen Gross 3 siblings, 1 reply; 29+ messages in thread From: Juergen Gross @ 2025-11-14 11:32 UTC (permalink / raw) To: xen-devel; +Cc: Juergen Gross, Anthony PERARD Some paths in config/Paths.mk.in are used nowhere, so remove them. Signed-off-by: Juergen Gross <jgross@suse.com> --- config/Paths.mk.in | 5 ----- 1 file changed, 5 deletions(-) diff --git a/config/Paths.mk.in b/config/Paths.mk.in index bc42748b7a..668545be2f 100644 --- a/config/Paths.mk.in +++ b/config/Paths.mk.in @@ -20,10 +20,7 @@ libexecdir := @libexecdir@ datarootdir := @datarootdir@ mandir := @mandir@ docdir := @docdir@ -dvidir := @dvidir@ htmldir := @htmldir@ -pdfdir := @pdfdir@ -psdir := @psdir@ includedir := @includedir@ localstatedir := @localstatedir@ sysconfdir := @sysconfdir@ @@ -34,8 +31,6 @@ LIBEXEC_LIB := @LIBEXEC_LIB@ LIBEXEC_INC := @LIBEXEC_INC@ SHAREDIR := @SHAREDIR@ -MAN1DIR := $(mandir)/man1 -MAN8DIR := $(mandir)/man8 XEN_RUN_DIR := @XEN_RUN_DIR@ XEN_LOG_DIR := @XEN_LOG_DIR@ -- 2.51.0 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v2 3/4] config: remove unused paths from config/Paths.mk.in 2025-11-14 11:32 ` [PATCH v2 3/4] config: remove unused paths from config/Paths.mk.in Juergen Gross @ 2025-11-14 11:47 ` Andrew Cooper 2025-11-14 13:00 ` Jürgen Groß 0 siblings, 1 reply; 29+ messages in thread From: Andrew Cooper @ 2025-11-14 11:47 UTC (permalink / raw) To: Juergen Gross, xen-devel; +Cc: Anthony PERARD On 14/11/2025 11:32 am, Juergen Gross wrote: > Some paths in config/Paths.mk.in are used nowhere, so remove them. > > Signed-off-by: Juergen Gross <jgross@suse.com> > --- > config/Paths.mk.in | 5 ----- > 1 file changed, 5 deletions(-) > > diff --git a/config/Paths.mk.in b/config/Paths.mk.in > index bc42748b7a..668545be2f 100644 > --- a/config/Paths.mk.in > +++ b/config/Paths.mk.in > @@ -20,10 +20,7 @@ libexecdir := @libexecdir@ > datarootdir := @datarootdir@ > mandir := @mandir@ > docdir := @docdir@ > -dvidir := @dvidir@ > htmldir := @htmldir@ > -pdfdir := @pdfdir@ > -psdir := @psdir@ The point I apparently didn't make very well was this: We generate both HTML and PDFs, yet use neither of htmldir nor pdfdir. Whatever is done to one should be done to the other. Leave just docdir, and let whomever tidies up the mess in docs/ adjust the paths as necessary. ~Andrew ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 3/4] config: remove unused paths from config/Paths.mk.in 2025-11-14 11:47 ` Andrew Cooper @ 2025-11-14 13:00 ` Jürgen Groß 0 siblings, 0 replies; 29+ messages in thread From: Jürgen Groß @ 2025-11-14 13:00 UTC (permalink / raw) To: Andrew Cooper, xen-devel; +Cc: Anthony PERARD [-- Attachment #1.1.1: Type: text/plain, Size: 1163 bytes --] On 14.11.25 12:47, Andrew Cooper wrote: > On 14/11/2025 11:32 am, Juergen Gross wrote: >> Some paths in config/Paths.mk.in are used nowhere, so remove them. >> >> Signed-off-by: Juergen Gross <jgross@suse.com> >> --- >> config/Paths.mk.in | 5 ----- >> 1 file changed, 5 deletions(-) >> >> diff --git a/config/Paths.mk.in b/config/Paths.mk.in >> index bc42748b7a..668545be2f 100644 >> --- a/config/Paths.mk.in >> +++ b/config/Paths.mk.in >> @@ -20,10 +20,7 @@ libexecdir := @libexecdir@ >> datarootdir := @datarootdir@ >> mandir := @mandir@ >> docdir := @docdir@ >> -dvidir := @dvidir@ >> htmldir := @htmldir@ >> -pdfdir := @pdfdir@ >> -psdir := @psdir@ > > The point I apparently didn't make very well was this: > > We generate both HTML and PDFs, yet use neither of htmldir nor pdfdir. > Whatever is done to one should be done to the other. > > Leave just docdir, and let whomever tidies up the mess in docs/ adjust > the paths as necessary. Ah, okay. No problem. Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* [PATCH v2 4/4] tools: replace @xxx@ markers at build time 2025-11-14 11:32 [PATCH v2 0/4] configure: reduce number of files created Juergen Gross ` (2 preceding siblings ...) 2025-11-14 11:32 ` [PATCH v2 3/4] config: remove unused paths from config/Paths.mk.in Juergen Gross @ 2025-11-14 11:32 ` Juergen Gross 2025-11-14 11:54 ` Andrew Cooper 3 siblings, 1 reply; 29+ messages in thread From: Juergen Gross @ 2025-11-14 11:32 UTC (permalink / raw) To: xen-devel Cc: Juergen Gross, Andrew Cooper, Anthony PERARD, Michal Orzel, Jan Beulich, Julien Grall, Roger Pau Monné, Stefano Stabellini, Christian Lindig, David Scott Use the apply-build-vars make macro to replace the @xxx@ markers in most *.in files only at build time. As some of the markers are local to tools/configure, introduce config/Tools-paths.mk.in and add the related make variables to it. Add Tools-paths to the PATH_FILES make variable in order to include the definitions for replacing them in the *.in files. Add the generated files to the distclean target. Signed-off-by: Juergen Gross <jgross@suse.com> --- V2: - don't rename source files --- .gitignore | 1 + Config.mk | 2 +- config/Tools-paths.mk.in | 10 ++++++++++ tools/configure | 21 ++------------------- tools/configure.ac | 19 +------------------ tools/hotplug/FreeBSD/Makefile | 7 ++++++- tools/hotplug/Linux/Makefile | 10 +++++++++- tools/hotplug/NetBSD/Makefile | 7 ++++++- tools/hotplug/common/Makefile | 7 ++++++- tools/ocaml/libs/xs/Makefile | 9 +++++++++ tools/ocaml/xenstored/Makefile | 9 ++++++++- 11 files changed, 59 insertions(+), 43 deletions(-) create mode 100644 config/Tools-paths.mk.in diff --git a/.gitignore b/.gitignore index d83427aba8..57d54f676f 100644 --- a/.gitignore +++ b/.gitignore @@ -47,6 +47,7 @@ config.status config.cache config/Toplevel.mk config/Paths.mk +config/Tools-paths.mk dist/* extras/ diff --git a/Config.mk b/Config.mk index d21d67945a..8d1368d25b 100644 --- a/Config.mk +++ b/Config.mk @@ -159,7 +159,7 @@ define move-if-changed if ! cmp -s $(1) $(2); then mv -f $(1) $(2); else rm -f $(1); fi endef -PATH_FILES := Paths +PATH_FILES := Paths Tools-paths INC_FILES := $(foreach f, $(PATH_FILES), $(XEN_ROOT)/config/$(f).mk) include $(INC_FILES) diff --git a/config/Tools-paths.mk.in b/config/Tools-paths.mk.in new file mode 100644 index 0000000000..ac6298e761 --- /dev/null +++ b/config/Tools-paths.mk.in @@ -0,0 +1,10 @@ +-include $(XEN_ROOT)/config/Paths.mk + +XENSTORED := @XENSTORED@ +XENSTORED_KVA := @XENSTORED_KVA@ +XENSTORED_PORT := @XENSTORED_PORT@ +XEN_RUN_STORED := @XEN_RUN_STORED@ + +LINUX_BACKEND_MODULES := @LINUX_BACKEND_MODULES@ + +qemu_xen_path := @qemu_xen_path@ diff --git a/tools/configure b/tools/configure index 3111f5688c..479c7c9a3c 100755 --- a/tools/configure +++ b/tools/configure @@ -2742,7 +2742,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -ac_config_files="$ac_config_files ../config/Tools.mk hotplug/common/hotplugpath.sh hotplug/FreeBSD/rc.d/xencommons hotplug/FreeBSD/rc.d/xendriverdomain hotplug/Linux/init.d/sysconfig.xencommons hotplug/Linux/init.d/sysconfig.xendomains hotplug/Linux/init.d/xen-watchdog hotplug/Linux/init.d/xencommons hotplug/Linux/init.d/xendomains hotplug/Linux/init.d/xendriverdomain hotplug/Linux/launch-xenstore hotplug/Linux/vif-setup hotplug/Linux/xen-hotplug-common.sh hotplug/Linux/xendomains hotplug/NetBSD/rc.d/xencommons hotplug/NetBSD/rc.d/xendriverdomain ocaml/libs/xs/paths.ml ocaml/xenstored/paths.ml ocaml/xenstored/oxenstored.conf" +ac_config_files="$ac_config_files ../config/Tools.mk ../config/Tools-paths.mk" ac_config_headers="$ac_config_headers config.h" @@ -11268,24 +11268,7 @@ for ac_config_target in $ac_config_targets do case $ac_config_target in "../config/Tools.mk") CONFIG_FILES="$CONFIG_FILES ../config/Tools.mk" ;; - "hotplug/common/hotplugpath.sh") CONFIG_FILES="$CONFIG_FILES hotplug/common/hotplugpath.sh" ;; - "hotplug/FreeBSD/rc.d/xencommons") CONFIG_FILES="$CONFIG_FILES hotplug/FreeBSD/rc.d/xencommons" ;; - "hotplug/FreeBSD/rc.d/xendriverdomain") CONFIG_FILES="$CONFIG_FILES hotplug/FreeBSD/rc.d/xendriverdomain" ;; - "hotplug/Linux/init.d/sysconfig.xencommons") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/sysconfig.xencommons" ;; - "hotplug/Linux/init.d/sysconfig.xendomains") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/sysconfig.xendomains" ;; - "hotplug/Linux/init.d/xen-watchdog") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/xen-watchdog" ;; - "hotplug/Linux/init.d/xencommons") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/xencommons" ;; - "hotplug/Linux/init.d/xendomains") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/xendomains" ;; - "hotplug/Linux/init.d/xendriverdomain") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/init.d/xendriverdomain" ;; - "hotplug/Linux/launch-xenstore") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/launch-xenstore" ;; - "hotplug/Linux/vif-setup") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/vif-setup" ;; - "hotplug/Linux/xen-hotplug-common.sh") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/xen-hotplug-common.sh" ;; - "hotplug/Linux/xendomains") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/xendomains" ;; - "hotplug/NetBSD/rc.d/xencommons") CONFIG_FILES="$CONFIG_FILES hotplug/NetBSD/rc.d/xencommons" ;; - "hotplug/NetBSD/rc.d/xendriverdomain") CONFIG_FILES="$CONFIG_FILES hotplug/NetBSD/rc.d/xendriverdomain" ;; - "ocaml/libs/xs/paths.ml") CONFIG_FILES="$CONFIG_FILES ocaml/libs/xs/paths.ml" ;; - "ocaml/xenstored/paths.ml") CONFIG_FILES="$CONFIG_FILES ocaml/xenstored/paths.ml" ;; - "ocaml/xenstored/oxenstored.conf") CONFIG_FILES="$CONFIG_FILES ocaml/xenstored/oxenstored.conf" ;; + "../config/Tools-paths.mk") CONFIG_FILES="$CONFIG_FILES ../config/Tools-paths.mk" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "hotplug/Linux/systemd/proc-xen.mount") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/systemd/proc-xen.mount" ;; "hotplug/Linux/systemd/xen-init-dom0.service") CONFIG_FILES="$CONFIG_FILES hotplug/Linux/systemd/xen-init-dom0.service" ;; diff --git a/tools/configure.ac b/tools/configure.ac index 285b4ea128..ecd45e782e 100644 --- a/tools/configure.ac +++ b/tools/configure.ac @@ -7,24 +7,7 @@ AC_INIT([Xen Hypervisor Tools], m4_esyscmd([../version.sh ../xen/Makefile]), AC_CONFIG_SRCDIR([libs/light/libxl.c]) AC_CONFIG_FILES([ ../config/Tools.mk -hotplug/common/hotplugpath.sh -hotplug/FreeBSD/rc.d/xencommons -hotplug/FreeBSD/rc.d/xendriverdomain -hotplug/Linux/init.d/sysconfig.xencommons -hotplug/Linux/init.d/sysconfig.xendomains -hotplug/Linux/init.d/xen-watchdog -hotplug/Linux/init.d/xencommons -hotplug/Linux/init.d/xendomains -hotplug/Linux/init.d/xendriverdomain -hotplug/Linux/launch-xenstore -hotplug/Linux/vif-setup -hotplug/Linux/xen-hotplug-common.sh -hotplug/Linux/xendomains -hotplug/NetBSD/rc.d/xencommons -hotplug/NetBSD/rc.d/xendriverdomain -ocaml/libs/xs/paths.ml -ocaml/xenstored/paths.ml -ocaml/xenstored/oxenstored.conf +../config/Tools-paths.mk ]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_AUX_DIR([../]) diff --git a/tools/hotplug/FreeBSD/Makefile b/tools/hotplug/FreeBSD/Makefile index a6552c9884..8de923781c 100644 --- a/tools/hotplug/FreeBSD/Makefile +++ b/tools/hotplug/FreeBSD/Makefile @@ -8,9 +8,13 @@ XEN_SCRIPT_DATA := XEN_RCD_PROG := rc.d/xencommons rc.d/xendriverdomain +IN_FILES := rc.d/xencommons rc.d/xendriverdomain + .PHONY: all all: +$(foreach file,$(IN_FILES),$(eval $(call apply-build-vars,$(file)))) + .PHONY: install install: install-scripts install-rcd @@ -35,7 +39,7 @@ uninstall-scripts: rm -f $(addprefix $(DESTDIR)$(XEN_SCRIPT_DIR)/, $(XEN_SCRIPT_DATA)) .PHONY: install-rcd -install-rcd: +install-rcd: $(IN_FILES) $(INSTALL_DIR) $(DESTDIR)$(INITD_DIR) set -e; for i in $(XEN_RCD_PROG); \ do \ @@ -51,3 +55,4 @@ clean: .PHONY: distclean distclean: clean + rm -rf $(IN_FILES) diff --git a/tools/hotplug/Linux/Makefile b/tools/hotplug/Linux/Makefile index 9a7b3a3515..6fcf84a6f4 100644 --- a/tools/hotplug/Linux/Makefile +++ b/tools/hotplug/Linux/Makefile @@ -26,9 +26,16 @@ XEN_SCRIPT_DATA := xen-script-common.sh locking.sh logging.sh XEN_SCRIPT_DATA += xen-hotplug-common.sh xen-network-common.sh vif-common.sh XEN_SCRIPT_DATA += block-common.sh +IN_FILES := launch-xenstore vif-setup xendomains xen-hotplug-common.sh +IN_FILES += init.d/sysconfig.xendomains init.d/xen-watchdog +IN_FILES += init.d/xencommons init.d/xendomains +IN_FILES += init.d/xendriverdomain init.d/sysconfig.xencommons + .PHONY: all all: subdirs-all +$(foreach file,$(IN_FILES),$(eval $(call apply-build-vars,$(file)))) + .PHONY: install install: install-initd install-scripts subdirs-install @@ -37,7 +44,7 @@ uninstall: uninstall-initd uninstall-scripts subdirs-uninstall # See docs/misc/distro_mapping.txt for INITD_DIR location .PHONY: install-initd -install-initd: +install-initd: $(IN_FILES) $(INSTALL_DIR) $(DESTDIR)$(INITD_DIR) $(INSTALL_DIR) $(DESTDIR)$(SYSCONFIG_DIR) $(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN) @@ -81,3 +88,4 @@ clean: subdirs-clean .PHONY: distclean distclean: clean + rm -rf $(IN_FILES) diff --git a/tools/hotplug/NetBSD/Makefile b/tools/hotplug/NetBSD/Makefile index 1cd3db2ccb..4ac6bd8fa7 100644 --- a/tools/hotplug/NetBSD/Makefile +++ b/tools/hotplug/NetBSD/Makefile @@ -12,9 +12,13 @@ XEN_SCRIPTS += qemu-ifup XEN_SCRIPT_DATA := XEN_RCD_PROG := rc.d/xencommons rc.d/xendomains rc.d/xen-watchdog rc.d/xendriverdomain +IN_FILES := rc.d/xencommons rc.d/xendriverdomain + .PHONY: all all: +$(foreach file,$(IN_FILES),$(eval $(call apply-build-vars,$(file)))) + .PHONY: install install: install-scripts install-rcd @@ -39,7 +43,7 @@ uninstall-scripts: rm -f $(addprefix $(DESTDIR)$(XEN_SCRIPT_DIR)/, $(XEN_SCRIPT_DATA)) .PHONY: install-rcd -install-rcd: +install-rcd: $(IN_FILES) $(INSTALL_DIR) $(DESTDIR)$(INITD_DIR) set -e; for i in $(XEN_RCD_PROG); \ do \ @@ -57,3 +61,4 @@ clean: .PHONY: distclean distclean: clean + rm -rf $(IN_FILES) diff --git a/tools/hotplug/common/Makefile b/tools/hotplug/common/Makefile index 62afe1019e..0017332293 100644 --- a/tools/hotplug/common/Makefile +++ b/tools/hotplug/common/Makefile @@ -7,9 +7,13 @@ include $(XEN_ROOT)/tools/Rules.mk XEN_SCRIPTS := XEN_SCRIPT_DATA := hotplugpath.sh +IN_FILES := hotplugpath.sh + .PHONY: all all: +$(foreach file,$(IN_FILES),$(eval $(call apply-build-vars,$(file)))) + .PHONY: install install: install-scripts @@ -17,7 +21,7 @@ install: install-scripts uninstall: uninstall-scripts .PHONY: install-scripts -install-scripts: all +install-scripts: all $(IN_FILES) $(INSTALL_DIR) $(DESTDIR)$(XEN_SCRIPT_DIR) set -e; for i in $(XEN_SCRIPTS); \ do \ @@ -38,3 +42,4 @@ clean: .PHONY: distclean distclean: clean + rm -rf $(IN_FILES) diff --git a/tools/ocaml/libs/xs/Makefile b/tools/ocaml/libs/xs/Makefile index e160e6a711..7d70d0904c 100644 --- a/tools/ocaml/libs/xs/Makefile +++ b/tools/ocaml/libs/xs/Makefile @@ -8,6 +8,8 @@ OCAMLOPTFLAGS += -for-pack Xenstore .NOTPARALLEL: # Ocaml is such a PITA! +IN_FILES := paths.ml + PREINTF = xsraw.cmi xst.cmi PREOBJS = queueop xsraw xst PRELIBS = $(foreach obj, $(PREOBJS),$(obj).cmo) $(foreach obj,$(PREOJBS),$(obj).cmx) @@ -17,6 +19,10 @@ LIBS = xenstore.cma xenstore.cmxa all: $(PREINTF) $(PRELIBS) $(INTF) $(LIBS) $(PROGRAMS) +$(foreach file,$(IN_FILES),$(eval $(call apply-build-vars,$(file)))) + +$(OBJS): $(IN_FILES) + bins: $(PROGRAMS) libs: $(LIBS) @@ -43,4 +49,7 @@ install: $(LIBS) META uninstall: $(OCAMLFIND) remove -destdir $(OCAMLDESTDIR) xenstore +.PHONY: distclean + rm -rf $(IN_FILES) + include $(OCAML_TOPLEVEL)/Makefile.rules diff --git a/tools/ocaml/xenstored/Makefile b/tools/ocaml/xenstored/Makefile index c333394a34..2576991030 100644 --- a/tools/ocaml/xenstored/Makefile +++ b/tools/ocaml/xenstored/Makefile @@ -72,6 +72,8 @@ XENSTOREDLIBS = \ -ccopt -L -ccopt $(OCAML_TOPLEVEL)/libs/xsd_glue $(OCAML_TOPLEVEL)/libs/xsd_glue/plugin_interface_v1.cmxa \ -ccopt -L -ccopt $(XEN_ROOT)/tools/libs/ctrl +IN_FILES := paths.ml oxenstored.conf + PROGRAMS = oxenstored oxenstored_LIBS = $(XENSTOREDLIBS) @@ -83,7 +85,9 @@ oxenstored_OBJS = $(oxenstored_MLSORTED:.ml=) OCAML_PROGRAM = oxenstored -all: $(INTF) $(LIBS) $(PROGRAMS) +all: $(IN_FILES) $(INTF) $(LIBS) $(PROGRAMS) + +$(foreach file,$(IN_FILES),$(eval $(call apply-build-vars,$(file)))) bins: $(PROGRAMS) @@ -99,4 +103,7 @@ uninstall: rm -f $(DESTDIR)$(XEN_CONFIG_DIR)/oxenstored.conf rm -f $(DESTDIR)$(sbindir)/oxenstored +distclean: + rm -rf $(IN_FILES) + include $(OCAML_TOPLEVEL)/Makefile.rules -- 2.51.0 ^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [PATCH v2 4/4] tools: replace @xxx@ markers at build time 2025-11-14 11:32 ` [PATCH v2 4/4] tools: replace @xxx@ markers at build time Juergen Gross @ 2025-11-14 11:54 ` Andrew Cooper 2025-11-14 13:03 ` Jürgen Groß 0 siblings, 1 reply; 29+ messages in thread From: Andrew Cooper @ 2025-11-14 11:54 UTC (permalink / raw) To: Juergen Gross, xen-devel Cc: Anthony PERARD, Michal Orzel, Jan Beulich, Julien Grall, Roger Pau Monné, Stefano Stabellini, Christian Lindig, David Scott On 14/11/2025 11:32 am, Juergen Gross wrote: > diff --git a/tools/hotplug/FreeBSD/Makefile b/tools/hotplug/FreeBSD/Makefile > index a6552c9884..8de923781c 100644 > --- a/tools/hotplug/FreeBSD/Makefile > +++ b/tools/hotplug/FreeBSD/Makefile > @@ -51,3 +55,4 @@ clean: > > .PHONY: distclean > distclean: clean > + rm -rf $(IN_FILES) In addition to the points in patch 2, can we use $(RM) (which includes -f IIRC) when adding these. None of the generated files are directories, so the -r wants dropping. But again, this is far nicer than v1 overall. > diff --git a/tools/hotplug/Linux/Makefile b/tools/hotplug/Linux/Makefile > index 9a7b3a3515..6fcf84a6f4 100644 > --- a/tools/hotplug/Linux/Makefile > +++ b/tools/hotplug/Linux/Makefile > @@ -37,7 +44,7 @@ uninstall: uninstall-initd uninstall-scripts subdirs-uninstall > > # See docs/misc/distro_mapping.txt for INITD_DIR location > .PHONY: install-initd > -install-initd: > +install-initd: $(IN_FILES) > $(INSTALL_DIR) $(DESTDIR)$(INITD_DIR) > $(INSTALL_DIR) $(DESTDIR)$(SYSCONFIG_DIR) > $(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN) Hmm. Logically, generating the files should be part of the build step, not the install step. I see you already had to adapt this way for Ocaml, where the generated files are source files, not just config. ~Andrew ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [PATCH v2 4/4] tools: replace @xxx@ markers at build time 2025-11-14 11:54 ` Andrew Cooper @ 2025-11-14 13:03 ` Jürgen Groß 0 siblings, 0 replies; 29+ messages in thread From: Jürgen Groß @ 2025-11-14 13:03 UTC (permalink / raw) To: Andrew Cooper, xen-devel Cc: Anthony PERARD, Michal Orzel, Jan Beulich, Julien Grall, Roger Pau Monné, Stefano Stabellini, Christian Lindig, David Scott [-- Attachment #1.1.1: Type: text/plain, Size: 1372 bytes --] On 14.11.25 12:54, Andrew Cooper wrote: > On 14/11/2025 11:32 am, Juergen Gross wrote: >> diff --git a/tools/hotplug/FreeBSD/Makefile b/tools/hotplug/FreeBSD/Makefile >> index a6552c9884..8de923781c 100644 >> --- a/tools/hotplug/FreeBSD/Makefile >> +++ b/tools/hotplug/FreeBSD/Makefile >> @@ -51,3 +55,4 @@ clean: >> >> .PHONY: distclean >> distclean: clean >> + rm -rf $(IN_FILES) > > In addition to the points in patch 2, can we use $(RM) (which includes > -f IIRC) when adding these. None of the generated files are > directories, so the -r wants dropping. Okay. > > But again, this is far nicer than v1 overall. > >> diff --git a/tools/hotplug/Linux/Makefile b/tools/hotplug/Linux/Makefile >> index 9a7b3a3515..6fcf84a6f4 100644 >> --- a/tools/hotplug/Linux/Makefile >> +++ b/tools/hotplug/Linux/Makefile >> @@ -37,7 +44,7 @@ uninstall: uninstall-initd uninstall-scripts subdirs-uninstall >> >> # See docs/misc/distro_mapping.txt for INITD_DIR location >> .PHONY: install-initd >> -install-initd: >> +install-initd: $(IN_FILES) >> $(INSTALL_DIR) $(DESTDIR)$(INITD_DIR) >> $(INSTALL_DIR) $(DESTDIR)$(SYSCONFIG_DIR) >> $(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN) > > Hmm. Logically, generating the files should be part of the build step, > not the install step. Agreed. Will change this. Juergen [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3743 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 495 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
end of thread, other threads:[~2025-11-17 14:06 UTC | newest] Thread overview: 29+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-11-14 11:32 [PATCH v2 0/4] configure: reduce number of files created Juergen Gross 2025-11-14 11:32 ` [PATCH v2 1/4] build: add make macro for making file from file.in Juergen Gross 2025-11-14 11:42 ` Andrew Cooper 2025-11-14 12:54 ` Jürgen Groß 2025-11-17 12:24 ` Jan Beulich 2025-11-17 12:30 ` Andrew Cooper 2025-11-17 12:51 ` Jürgen Groß 2025-11-17 12:37 ` Jürgen Groß 2025-11-17 12:51 ` Jan Beulich 2025-11-17 13:03 ` Jürgen Groß 2025-11-17 12:29 ` Jan Beulich 2025-11-17 12:48 ` Jürgen Groß 2025-11-17 12:54 ` Jan Beulich 2025-11-17 13:10 ` Jürgen Groß 2025-11-17 14:05 ` Jan Beulich 2025-11-14 11:32 ` [PATCH v2 2/4] docs: replace @xxx@ markers at build time Juergen Gross 2025-11-14 11:40 ` Andrew Cooper 2025-11-14 13:00 ` Jürgen Groß 2025-11-17 12:33 ` Jan Beulich 2025-11-17 12:55 ` Jürgen Groß 2025-11-17 13:00 ` Jan Beulich 2025-11-17 13:17 ` Jürgen Groß 2025-11-17 14:06 ` Jan Beulich 2025-11-14 11:32 ` [PATCH v2 3/4] config: remove unused paths from config/Paths.mk.in Juergen Gross 2025-11-14 11:47 ` Andrew Cooper 2025-11-14 13:00 ` Jürgen Groß 2025-11-14 11:32 ` [PATCH v2 4/4] tools: replace @xxx@ markers at build time Juergen Gross 2025-11-14 11:54 ` Andrew Cooper 2025-11-14 13:03 ` Jürgen Groß
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.