mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	kbuild: modpost: read modules.order instead of $(MODVERDIR)/*.mod
Towards the goal of removing MODVERDIR, read out modules.order to get the list of modules to be processed. This is simpler than parsing *.mod files in $(MODVERDIR). For external modules, $(KBUILD_EXTMOD)/modules.order should be read. I removed the single target %.ko from the top Makefile. To make sure modpost works correctly, vmlinux and the other modules must be built. You cannot build a particular .ko file alone. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
		
							parent
							
								
									c35c87d6f2
								
							
						
					
					
						commit
						ff9b45c55b
					
				
					 2 changed files with 9 additions and 8 deletions
				
			
		
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							|  | @ -1772,8 +1772,6 @@ build-dir = $(patsubst %/,%,$(dir $(build-target))) | |||
| 	$(Q)$(MAKE) $(build)=$(build-dir) $(build-target) | ||||
| %.symtypes: prepare FORCE | ||||
| 	$(Q)$(MAKE) $(build)=$(build-dir) $(build-target) | ||||
| %.ko: %.o | ||||
| 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost | ||||
| 
 | ||||
| # Modules
 | ||||
| PHONY += / | ||||
|  |  | |||
|  | @ -8,9 +8,10 @@ | |||
| # b) A <module>.o file which is the .o files above linked together | ||||
| # c) A <module>.mod file in $(MODVERDIR)/, listing the name of the | ||||
| #    the preliminary <module>.o file, plus all .o files | ||||
| # d) modules.order, which lists all the modules | ||||
| 
 | ||||
| # Stage 2 is handled by this file and does the following | ||||
| # 1) Find all modules from the files listed in $(MODVERDIR)/ | ||||
| # 1) Find all modules listed in modules.order | ||||
| # 2) modpost is then used to | ||||
| # 3)  create one <module>.mod.c file pr. module | ||||
| # 4)  create one Module.symvers file with CRC for all exported symbols | ||||
|  | @ -60,10 +61,12 @@ include scripts/Makefile.lib | |||
| kernelsymfile := $(objtree)/Module.symvers | ||||
| modulesymfile := $(firstword $(KBUILD_EXTMOD))/Module.symvers | ||||
| 
 | ||||
| # Step 1), find all modules listed in $(MODVERDIR)/ | ||||
| MODLISTCMD := find $(MODVERDIR) -name '*.mod' | xargs -r grep -h '\.ko$$' | sort -u | ||||
| __modules := $(shell $(MODLISTCMD)) | ||||
| modules   := $(patsubst %.o,%.ko, $(wildcard $(__modules:.ko=.o))) | ||||
| modorder := $(if $(KBUILD_EXTMOD),$(KBUILD_EXTMOD)/)modules.order | ||||
| 
 | ||||
| # Step 1), find all modules listed in modules.order | ||||
| ifdef CONFIG_MODULES | ||||
| modules := $(sort $(shell cat $(modorder))) | ||||
| endif | ||||
| 
 | ||||
| # Stop after building .o files if NOFINAL is set. Makes compile tests quicker | ||||
| _modpost: $(if $(KBUILD_MODPOST_NOFINAL), $(modules:.ko:.o),$(modules)) | ||||
|  | @ -84,7 +87,7 @@ MODPOST_OPT=$(subst -i,-n,$(filter -i,$(MAKEFLAGS))) | |||
| 
 | ||||
| # We can go over command line length here, so be careful. | ||||
| quiet_cmd_modpost = MODPOST $(words $(filter-out vmlinux FORCE, $^)) modules | ||||
|       cmd_modpost = $(MODLISTCMD) | sed 's/\.ko$$/.o/' | $(modpost) $(MODPOST_OPT) -s -T - | ||||
|       cmd_modpost = sed 's/ko$$/o/' $(modorder) | $(modpost) $(MODPOST_OPT) -s -T - | ||||
| 
 | ||||
| PHONY += __modpost | ||||
| __modpost: $(modules:.ko=.o) FORCE | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Masahiro Yamada
						Masahiro Yamada