forked from mirrors/linux
		
	kbuild: handle multi-objs dependency appropriately
The comment in scripts/Makefile.build says as follows:
  We would rather have a list of rules like
        foo.o: $(foo-objs)
  but that's not so easy, so we rather make all composite objects depend
  on the set of all their parts
This commit makes it possible!
For example, assume a Makefile like this
  obj-m = foo.o bar.o
  foo-objs := foo1.o foo2.o
  bar-objs := bar1.o bar2.o
Without this patch, foo.o depends on all of
foo1.o foo2.o bar1.o bar2.o.
It looks funny that foo.o is regenerated when bar1.c is updated.
Now we can handle the dependency of foo.o and bar.o separately.
Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>
			
			
This commit is contained in:
		
							parent
							
								
									7d1311b93e
								
							
						
					
					
						commit
						c8589d1e9e
					
				
					 2 changed files with 13 additions and 6 deletions
				
			
		|  | @ -382,16 +382,14 @@ cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalys | |||
| quiet_cmd_link_multi-m = LD [M]  $@ | ||||
| cmd_link_multi-m = $(cmd_link_multi-y) | ||||
| 
 | ||||
| # We would rather have a list of rules like | ||||
| # 	foo.o: $(foo-objs) | ||||
| # but that's not so easy, so we rather make all composite objects depend | ||||
| # on the set of all their parts | ||||
| $(multi-used-y) : %.o: $(multi-objs-y) FORCE | ||||
| $(multi-used-y): FORCE | ||||
| 	$(call if_changed,link_multi-y) | ||||
| $(call multi_depend, $(multi-used-y), .o, -objs -y) | ||||
| 
 | ||||
| $(multi-used-m) : %.o: $(multi-objs-m) FORCE | ||||
| $(multi-used-m): FORCE | ||||
| 	$(call if_changed,link_multi-m) | ||||
| 	@{ echo $(@:.o=.ko); echo $(link_multi_deps); } > $(MODVERDIR)/$(@F:.o=.mod) | ||||
| $(call multi_depend, $(multi-used-m), .o, -objs -y) | ||||
| 
 | ||||
| targets += $(multi-used-y) $(multi-used-m) | ||||
| 
 | ||||
|  |  | |||
|  | @ -159,6 +159,15 @@ dtc_cpp_flags  = -Wp,-MD,$(depfile).pre.tmp -nostdinc                    \ | |||
| modname-multi = $(sort $(foreach m,$(multi-used),\ | ||||
| 		$(if $(filter $(subst $(obj)/,,$*.o), $($(m:.o=-objs)) $($(m:.o=-y))),$(m:.o=)))) | ||||
| 
 | ||||
| # Useful for describing the dependency of composite objects | ||||
| # Usage: | ||||
| #   $(call multi_depend, multi_used_targets, suffix_to_remove, suffix_to_add) | ||||
| define multi_depend | ||||
| $(foreach m, $(notdir $1), \ | ||||
| 	$(eval $(obj)/$m: \ | ||||
| 	$(addprefix $(obj)/, $(foreach s, $3, $($(m:%$(strip $2)=%$(s))))))) | ||||
| endef | ||||
| 
 | ||||
| ifdef REGENERATE_PARSERS | ||||
| 
 | ||||
| # GPERF | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Masahiro Yamada
						Masahiro Yamada