Patchwork make: automatically include dependencies in recursive subdir rules

login
register
mail settings
Submitter Andreas Färber
Date June 17, 2012, 3:33 p.m.
Message ID <4FDDF8E6.6050606@suse.de>
Download mbox | patch
Permalink /patch/165346/
State New
Headers show

Comments

Andreas Färber - June 17, 2012, 3:33 p.m.
Am 17.06.2012 16:57, schrieb Anthony Liguori:
> I think I understand enough of what's going on in these rules to ensure this is
> right.  But I could certainly use a second or third opinion...
> 
> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
> ---
>  Makefile  |    4 ++--
>  rules.mak |    1 +
>  2 files changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index cce45fb..593bd9b 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -405,5 +405,5 @@ tar:
>  Makefile: $(GENERATED_HEADERS)
>  
>  # Include automatically generated dependency files
> --include $(wildcard *.d audio/*.d slirp/*.d block/*.d net/*.d ui/*.d qapi/*.d)
> --include $(wildcard qga/*.d hw/*.d hw/usb/*.d qom/*.d)

This was based on my QOM Makefile patch and doesn't apply to master.

If I understand this patch correctly, we could further apply this diff
on top:


/-F

> +# All subdir dependencies come automatically from our recursive subdir rules
> +-include $(wildcard *.d)
> diff --git a/rules.mak b/rules.mak
> index 4bc5e52..8c5ef95 100644
> --- a/rules.mak
> +++ b/rules.mak
> @@ -94,6 +94,7 @@ define unnest-dir
>  $(foreach var,$(nested-vars),$(call push-var,$(var),$1/))
>  $(eval obj := $(obj)/$1)
>  $(eval include $(SRC_PATH)/$1/Makefile.objs)
> +$(eval -include $(wildcard $(SRC_PATH)/$1/*.d))
>  $(eval obj := $(patsubst %/$1,%,$(obj)))
>  $(foreach var,$(nested-vars),$(call pop-var,$(var),$1/))
>  endef

Patch

diff --git a/Makefile.dis b/Makefile.dis
index 3e1fcaf..09060f0 100644
--- a/Makefile.dis
+++ b/Makefile.dis
@@ -20,4 +20,4 @@  clean:
 	rm -f *.o *.d *.a *~

 # Include automatically generated dependency files
--include $(wildcard *.d */*.d)
+-include $(wildcard *.d)
diff --git a/Makefile.hw b/Makefile.hw
index 2bcbaff..3e794e1 100644
--- a/Makefile.hw
+++ b/Makefile.hw
@@ -23,4 +23,4 @@  clean:
 	rm -f $(addsuffix /*.d, $(dir $(sort $(hw-obj-y))))

 # Include automatically generated dependency files
--include $(patsubst %.o, %.d, $(hw-obj-y))
+-include $(wildcard *.d)
diff --git a/Makefile.target b/Makefile.target
index 2907aad..550d889 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -216,4 +216,4 @@  GENERATED_HEADERS += config-target.h
 Makefile: $(GENERATED_HEADERS)

 # Include automatically generated dependency files
--include $(wildcard *.d */*.d)
+-include $(wildcard *.d)
diff --git a/Makefile.user b/Makefile.user
index b717820..0ffefe8 100644
--- a/Makefile.user
+++ b/Makefile.user
@@ -23,4 +23,4 @@  clean:
 	done

 # Include automatically generated dependency files
--include $(wildcard *.d */*.d)
+-include $(wildcard *.d)