forked from mirrors/linux
		
	kbuild: Fix build with binutils <= 2.19
The D option of ar is only available in newer versions. Signed-off-by: Michal Marek <mmarek@suse.cz>
This commit is contained in:
		
							parent
							
								
									a8b8017c34
								
							
						
					
					
						commit
						40df759e2b
					
				
					 4 changed files with 16 additions and 2 deletions
				
			
		|  | @ -955,6 +955,11 @@ When kbuild executes, the following steps are followed (roughly): | ||||||
| 	used when linking modules. This is often a linker script. | 	used when linking modules. This is often a linker script. | ||||||
| 	From commandline LDFLAGS_MODULE shall be used (see kbuild.txt). | 	From commandline LDFLAGS_MODULE shall be used (see kbuild.txt). | ||||||
| 
 | 
 | ||||||
|  |     KBUILD_ARFLAGS   Options for $(AR) when creating archives | ||||||
|  | 
 | ||||||
|  | 	$(KBUILD_ARFLAGS) set by the top level Makefile to "D" (deterministic | ||||||
|  | 	mode) if this option is supported by $(AR). | ||||||
|  | 
 | ||||||
| --- 6.2 Add prerequisites to archprepare: | --- 6.2 Add prerequisites to archprepare: | ||||||
| 
 | 
 | ||||||
| 	The archprepare: rule is used to list prerequisites that need to be | 	The archprepare: rule is used to list prerequisites that need to be | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							|  | @ -382,6 +382,7 @@ export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE CFLAGS_GCOV | ||||||
| export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE | export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE | ||||||
| export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE | export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE | ||||||
| export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL | export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL | ||||||
|  | export KBUILD_ARFLAGS | ||||||
| 
 | 
 | ||||||
| # When compiling out-of-tree modules, put MODVERDIR in the module
 | # When compiling out-of-tree modules, put MODVERDIR in the module
 | ||||||
| # tree rather than in the kernel tree. The kernel tree might
 | # tree rather than in the kernel tree. The kernel tree might
 | ||||||
|  | @ -612,6 +613,9 @@ KBUILD_CFLAGS	+= $(call cc-option,-fno-strict-overflow) | ||||||
| # conserve stack if available
 | # conserve stack if available
 | ||||||
| KBUILD_CFLAGS   += $(call cc-option,-fconserve-stack) | KBUILD_CFLAGS   += $(call cc-option,-fconserve-stack) | ||||||
| 
 | 
 | ||||||
|  | # use the deterministic mode of AR if available
 | ||||||
|  | KBUILD_ARFLAGS := $(call ar-option,D) | ||||||
|  | 
 | ||||||
| # check for 'asm goto'
 | # check for 'asm goto'
 | ||||||
| ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y) | ifeq ($(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-goto.sh $(CC)), y) | ||||||
| 	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO | 	KBUILD_CFLAGS += -DCC_HAVE_ASM_GOTO | ||||||
|  |  | ||||||
|  | @ -141,6 +141,11 @@ cc-ldoption = $(call try-run,\ | ||||||
| ld-option = $(call try-run,\ | ld-option = $(call try-run,\ | ||||||
| 	$(CC) /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) | 	$(CC) /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2)) | ||||||
| 
 | 
 | ||||||
|  | # ar-option | ||||||
|  | # Usage: KBUILD_ARFLAGS := $(call ar-option,D) | ||||||
|  | # Important: no spaces around options | ||||||
|  | ar-option = $(call try-run, $(AR) rc$(1) "$$TMP",$(1),$(2)) | ||||||
|  | 
 | ||||||
| ###### | ###### | ||||||
| 
 | 
 | ||||||
| ### | ### | ||||||
|  |  | ||||||
|  | @ -345,7 +345,7 @@ quiet_cmd_link_o_target = LD      $@ | ||||||
| cmd_link_o_target = $(if $(strip $(obj-y)),\ | cmd_link_o_target = $(if $(strip $(obj-y)),\ | ||||||
| 		      $(LD) $(ld_flags) -r -o $@ $(filter $(obj-y), $^) \ | 		      $(LD) $(ld_flags) -r -o $@ $(filter $(obj-y), $^) \ | ||||||
| 		      $(cmd_secanalysis),\ | 		      $(cmd_secanalysis),\ | ||||||
| 		      rm -f $@; $(AR) rcsD $@) | 		      rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) $@) | ||||||
| 
 | 
 | ||||||
| $(builtin-target): $(obj-y) FORCE | $(builtin-target): $(obj-y) FORCE | ||||||
| 	$(call if_changed,link_o_target) | 	$(call if_changed,link_o_target) | ||||||
|  | @ -371,7 +371,7 @@ $(modorder-target): $(subdir-ym) FORCE | ||||||
| # | # | ||||||
| ifdef lib-target | ifdef lib-target | ||||||
| quiet_cmd_link_l_target = AR      $@ | quiet_cmd_link_l_target = AR      $@ | ||||||
| cmd_link_l_target = rm -f $@; $(AR) rcsD $@ $(lib-y) | cmd_link_l_target = rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) $@ $(lib-y) | ||||||
| 
 | 
 | ||||||
| $(lib-target): $(lib-y) FORCE | $(lib-target): $(lib-y) FORCE | ||||||
| 	$(call if_changed,link_l_target) | 	$(call if_changed,link_l_target) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Michal Marek
						Michal Marek