~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/x86/Makefile

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/x86/Makefile (Version linux-6.12-rc7) and /arch/ppc/Makefile (Version linux-5.3.18)


  1 # SPDX-License-Identifier: GPL-2.0                
  2 # Unified Makefile for i386 and x86_64            
  3                                                   
  4 # select defconfig based on actual architectur    
  5 ifeq ($(ARCH),x86)                                
  6   ifeq ($(shell uname -m | sed -e 's/i.86/i386    
  7         KBUILD_DEFCONFIG := i386_defconfig        
  8   else                                            
  9         KBUILD_DEFCONFIG := x86_64_defconfig      
 10   endif                                           
 11 else                                              
 12         KBUILD_DEFCONFIG := $(ARCH)_defconfig     
 13 endif                                             
 14                                                   
 15 ifdef CONFIG_CC_IS_GCC                            
 16 RETPOLINE_CFLAGS        := $(call cc-option,-m    
 17 RETPOLINE_VDSO_CFLAGS   := $(call cc-option,-m    
 18 endif                                             
 19 ifdef CONFIG_CC_IS_CLANG                          
 20 RETPOLINE_CFLAGS        := -mretpoline-externa    
 21 RETPOLINE_VDSO_CFLAGS   := -mretpoline            
 22 endif                                             
 23 RETPOLINE_CFLAGS        += $(call cc-option,-m    
 24                                                   
 25 ifdef CONFIG_MITIGATION_RETHUNK                   
 26 RETHUNK_CFLAGS          := -mfunction-return=t    
 27 RETHUNK_RUSTFLAGS       := -Zfunction-return=t    
 28 RETPOLINE_CFLAGS        += $(RETHUNK_CFLAGS)      
 29 RETPOLINE_RUSTFLAGS     += $(RETHUNK_RUSTFLAGS    
 30 endif                                             
 31                                                   
 32 export RETHUNK_CFLAGS                             
 33 export RETHUNK_RUSTFLAGS                          
 34 export RETPOLINE_CFLAGS                           
 35 export RETPOLINE_RUSTFLAGS                        
 36 export RETPOLINE_VDSO_CFLAGS                      
 37                                                   
 38 # For gcc stack alignment is specified with -m    
 39 # clang has the option -mstack-alignment for t    
 40 ifneq ($(call cc-option, -mpreferred-stack-bou    
 41       cc_stack_align4 := -mpreferred-stack-bou    
 42       cc_stack_align8 := -mpreferred-stack-bou    
 43 else ifneq ($(call cc-option, -mstack-alignmen    
 44       cc_stack_align4 := -mstack-alignment=4      
 45       cc_stack_align8 := -mstack-alignment=8      
 46 endif                                             
 47                                                   
 48 # How to compile the 16-bit code.  Note we alw    
 49 # that way we can complain to the user if the     
 50 REALMODE_CFLAGS := -std=gnu11 -m16 -g -Os -DDI    
 51                    -Wall -Wstrict-prototypes -    
 52                    -fno-strict-aliasing -fomit    
 53                    -mno-mmx -mno-sse $(call cc    
 54                                                   
 55 REALMODE_CFLAGS += -ffreestanding                 
 56 REALMODE_CFLAGS += -fno-stack-protector           
 57 REALMODE_CFLAGS += -Wno-address-of-packed-memb    
 58 REALMODE_CFLAGS += $(cc_stack_align4)             
 59 REALMODE_CFLAGS += $(CLANG_FLAGS)                 
 60 ifdef CONFIG_CC_IS_CLANG                          
 61 REALMODE_CFLAGS += -Wno-gnu                       
 62 endif                                             
 63 export REALMODE_CFLAGS                            
 64                                                   
 65 # BITS is used as extension for files which ar    
 66 # and a 64 bit version to simplify shared Make    
 67 # e.g.: obj-y += foo_$(BITS).o                    
 68 export BITS                                       
 69                                                   
 70 #                                                 
 71 # Prevent GCC from generating any FP code by m    
 72 #                                                 
 73 # This must happen before we try the -mpreferr    
 74 #                                                 
 75 #    https://gcc.gnu.org/bugzilla/show_bug.cgi    
 76 #                                                 
 77 KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -    
 78 KBUILD_RUSTFLAGS += --target=$(objtree)/script    
 79 KBUILD_RUSTFLAGS += -Ctarget-feature=-sse,-sse    
 80                                                   
 81 #                                                 
 82 # CFLAGS for compiling floating point code ins    
 83 #                                                 
 84 CC_FLAGS_FPU := -msse -msse2                      
 85 ifdef CONFIG_CC_IS_GCC                            
 86 # Stack alignment mismatch, proceed with cauti    
 87 # GCC < 7.1 cannot compile code using `double`    
 88 # (8B stack alignment).                           
 89 # See https://gcc.gnu.org/bugzilla/show_bug.cg    
 90 #                                                 
 91 # The "-msse" in the first argument is there s    
 92 # -mpreferred-stack-boundary=3 build error:       
 93 #                                                 
 94 #  -mpreferred-stack-boundary=3 is not between    
 95 #                                                 
 96 # can be triggered. Otherwise gcc doesn't comp    
 97 CC_FLAGS_FPU += -mhard-float                      
 98 CC_FLAGS_FPU += $(call cc-option,-msse -mprefe    
 99 endif                                             
100                                                   
101 ifeq ($(CONFIG_X86_KERNEL_IBT),y)                 
102 #                                                 
103 # Kernel IBT has S_CET.NOTRACK_EN=0, as such t    
104 # NOTRACK prefixes. Current generation compile    
105 # for jump-tables, as such, disable jump-table    
106 #                                                 
107 # (jump-tables are implicitly disabled by RETP    
108 #                                                 
109 #   https://gcc.gnu.org/bugzilla/show_bug.cgi?    
110 #                                                 
111 KBUILD_CFLAGS += $(call cc-option,-fcf-protect    
112 KBUILD_RUSTFLAGS += -Zcf-protection=branch -Zn    
113 else                                              
114 KBUILD_CFLAGS += $(call cc-option,-fcf-protect    
115 endif                                             
116                                                   
117 ifeq ($(CONFIG_X86_32),y)                         
118         BITS := 32                                
119         UTS_MACHINE := i386                       
120         CHECKFLAGS += -D__i386__                  
121                                                   
122         KBUILD_AFLAGS += -m32                     
123         KBUILD_CFLAGS += -m32                     
124                                                   
125         KBUILD_CFLAGS += -msoft-float -mregpar    
126                                                   
127         # Never want PIC in a 32-bit kernel, p    
128         # with nonstandard options                
129         KBUILD_CFLAGS += -fno-pic                 
130                                                   
131         # Align the stack to the register widt    
132         # alignment of 16 bytes. This reduces     
133         # alignment instructions.                 
134         KBUILD_CFLAGS += $(cc_stack_align4)       
135                                                   
136         # CPU-specific tuning. Anything which     
137         include $(srctree)/arch/x86/Makefile_3    
138         KBUILD_CFLAGS += $(cflags-y)              
139                                                   
140         # temporary until string.h is fixed       
141         KBUILD_CFLAGS += -ffreestanding           
142                                                   
143     ifeq ($(CONFIG_STACKPROTECTOR),y)             
144         ifeq ($(CONFIG_SMP),y)                    
145                         KBUILD_CFLAGS += -msta    
146         else                                      
147                         KBUILD_CFLAGS += -msta    
148         endif                                     
149     endif                                         
150 else                                              
151         BITS := 64                                
152         UTS_MACHINE := x86_64                     
153         CHECKFLAGS += -D__x86_64__                
154                                                   
155         KBUILD_AFLAGS += -m64                     
156         KBUILD_CFLAGS += -m64                     
157                                                   
158         # Align jump targets to 1 byte, not th    
159         KBUILD_CFLAGS += $(call cc-option,-fal    
160                                                   
161         # Pack loops tightly as well:             
162         KBUILD_CFLAGS += $(call cc-option,-fal    
163                                                   
164         # Don't autogenerate traditional x87 i    
165         KBUILD_CFLAGS += -mno-80387               
166         KBUILD_CFLAGS += $(call cc-option,-mno    
167                                                   
168         # By default gcc and clang use a stack    
169         # However the standard kernel entry on    
170         # 8-byte boundary. If the compiler isn    
171         # alignment it will generate extra ali    
172         # default alignment which keep the sta    
173         # Furthermore an alignment to the regi    
174         # and the number of alignment instruct    
175         KBUILD_CFLAGS += $(cc_stack_align8)       
176                                                   
177         # Use -mskip-rax-setup if supported.      
178         KBUILD_CFLAGS += $(call cc-option,-msk    
179                                                   
180         # FIXME - should be integrated in Make    
181         cflags-$(CONFIG_MK8)            += -ma    
182         cflags-$(CONFIG_MPSC)           += -ma    
183         cflags-$(CONFIG_MCORE2)         += -ma    
184         cflags-$(CONFIG_MATOM)          += -ma    
185         cflags-$(CONFIG_GENERIC_CPU)    += -mt    
186         KBUILD_CFLAGS += $(cflags-y)              
187                                                   
188         rustflags-$(CONFIG_MK8)         += -Ct    
189         rustflags-$(CONFIG_MPSC)        += -Ct    
190         rustflags-$(CONFIG_MCORE2)      += -Ct    
191         rustflags-$(CONFIG_MATOM)       += -Ct    
192         rustflags-$(CONFIG_GENERIC_CPU) += -Zt    
193         KBUILD_RUSTFLAGS += $(rustflags-y)        
194                                                   
195         KBUILD_CFLAGS += -mno-red-zone            
196         KBUILD_CFLAGS += -mcmodel=kernel          
197         KBUILD_RUSTFLAGS += -Cno-redzone=y        
198         KBUILD_RUSTFLAGS += -Ccode-model=kerne    
199 endif                                             
200                                                   
201 #                                                 
202 # If the function graph tracer is used with mc    
203 # '-maccumulate-outgoing-args' is needed to pr    
204 # (https://gcc.gnu.org/bugzilla/show_bug.cgi?i    
205 #                                                 
206 ifdef CONFIG_FUNCTION_GRAPH_TRACER                
207   ifndef CONFIG_HAVE_FENTRY                       
208         ACCUMULATE_OUTGOING_ARGS := 1             
209   endif                                           
210 endif                                             
211                                                   
212 ifeq ($(ACCUMULATE_OUTGOING_ARGS), 1)             
213         # This compiler flag is not supported     
214         KBUILD_CFLAGS += $(call cc-option,-mac    
215 endif                                             
216                                                   
217 # Workaround for a gcc prelease that unfortuna    
218 KBUILD_CFLAGS += -Wno-sign-compare                
219 #                                                 
220 KBUILD_CFLAGS += -fno-asynchronous-unwind-tabl    
221                                                   
222 # Avoid indirect branches in kernel to deal wi    
223 ifdef CONFIG_MITIGATION_RETPOLINE                 
224   KBUILD_CFLAGS += $(RETPOLINE_CFLAGS)            
225   KBUILD_RUSTFLAGS += $(RETPOLINE_RUSTFLAGS)      
226   # Additionally, avoid generating expensive i    
227   # are subject to retpolines for small number    
228   # LLVM turns off jump table generation by de    
229   # retpoline builds, however, gcc does not fo    
230   # only been fixed starting from gcc stable v    
231   # onwards, but not for older ones. See gcc b    
232   ifndef CONFIG_CC_IS_CLANG                       
233     KBUILD_CFLAGS += -fno-jump-tables             
234   endif                                           
235 endif                                             
236                                                   
237 ifdef CONFIG_MITIGATION_SLS                       
238   KBUILD_CFLAGS += -mharden-sls=all               
239 endif                                             
240                                                   
241 ifdef CONFIG_CALL_PADDING                         
242 PADDING_CFLAGS := -fpatchable-function-entry=$    
243 KBUILD_CFLAGS += $(PADDING_CFLAGS)                
244 export PADDING_CFLAGS                             
245                                                   
246 PADDING_RUSTFLAGS := -Zpatchable-function-entr    
247 KBUILD_RUSTFLAGS += $(PADDING_RUSTFLAGS)          
248 export PADDING_RUSTFLAGS                          
249 endif                                             
250                                                   
251 KBUILD_LDFLAGS += -m elf_$(UTS_MACHINE)           
252                                                   
253 ifdef CONFIG_X86_NEED_RELOCS                      
254 LDFLAGS_vmlinux := --emit-relocs --discard-non    
255 else                                              
256 LDFLAGS_vmlinux :=                                
257 endif                                             
258                                                   
259 #                                                 
260 # The 64-bit kernel must be aligned to 2MB.  P    
261 # the linker to force 2MB page size regardless    
262 # by the linker.                                  
263 #                                                 
264 ifdef CONFIG_X86_64                               
265 LDFLAGS_vmlinux += -z max-page-size=0x200000      
266 endif                                             
267                                                   
268                                                   
269 archscripts: scripts_basic                        
270         $(Q)$(MAKE) $(build)=arch/x86/tools re    
271                                                   
272 ###                                               
273 # Syscall table generation                        
274                                                   
275 archheaders:                                      
276         $(Q)$(MAKE) $(build)=arch/x86/entry/sy    
277                                                   
278 ###                                               
279 # Kernel objects                                  
280                                                   
281 libs-y  += arch/x86/lib/                          
282                                                   
283 # drivers-y are linked after core-y               
284 drivers-$(CONFIG_MATH_EMULATION) += arch/x86/m    
285 drivers-$(CONFIG_PCI)            += arch/x86/p    
286                                                   
287 # suspend and hibernation support                 
288 drivers-$(CONFIG_PM) += arch/x86/power/           
289                                                   
290 drivers-$(CONFIG_VIDEO) += arch/x86/video/        
291                                                   
292 ####                                              
293 # boot loader support. Several targets are kep    
294                                                   
295 boot := arch/x86/boot                             
296                                                   
297 BOOT_TARGETS = bzdisk fdimage fdimage144 fdima    
298                                                   
299 PHONY += bzImage $(BOOT_TARGETS)                  
300                                                   
301 # Default kernel to build                         
302 all: bzImage                                      
303                                                   
304 # KBUILD_IMAGE specify target image being buil    
305 KBUILD_IMAGE := $(boot)/bzImage                   
306                                                   
307 bzImage: vmlinux                                  
308 ifeq ($(CONFIG_X86_DECODER_SELFTEST),y)           
309         $(Q)$(MAKE) $(build)=arch/x86/tools po    
310 endif                                             
311         $(Q)$(MAKE) $(build)=$(boot) $(KBUILD_    
312         $(Q)mkdir -p $(objtree)/arch/$(UTS_MAC    
313         $(Q)ln -fsn ../../x86/boot/bzImage $(o    
314                                                   
315 $(BOOT_TARGETS): vmlinux                          
316         $(Q)$(MAKE) $(build)=$(boot) $@           
317                                                   
318 PHONY += install                                  
319 install:                                          
320         $(call cmd,install)                       
321                                                   
322 vdso-install-$(CONFIG_X86_64)           += arc    
323 vdso-install-$(CONFIG_X86_X32_ABI)      += arc    
324 vdso-install-$(CONFIG_COMPAT_32)        += arc    
325                                                   
326 archprepare: checkbin                             
327 checkbin:                                         
328 ifdef CONFIG_MITIGATION_RETPOLINE                 
329 ifeq ($(RETPOLINE_CFLAGS),)                       
330         @echo "You are building kernel with no    
331         @echo "Please update your compiler." >    
332         @false                                    
333 endif                                             
334 endif                                             
335                                                   
336 ifdef CONFIG_UNWINDER_ORC                         
337 orc_hash_h := arch/$(SRCARCH)/include/generate    
338 orc_hash_sh := $(srctree)/scripts/orc_hash.sh     
339 targets += $(orc_hash_h)                          
340 quiet_cmd_orc_hash = GEN     $@                   
341       cmd_orc_hash = mkdir -p $(dir $@); \        
342                      $(CONFIG_SHELL) $(orc_has    
343 $(orc_hash_h): $(srctree)/arch/x86/include/asm    
344         $(call if_changed,orc_hash)               
345 archprepare: $(orc_hash_h)                        
346 endif                                             
347                                                   
348 archclean:                                        
349         $(Q)rm -rf $(objtree)/arch/i386           
350         $(Q)rm -rf $(objtree)/arch/x86_64         
351                                                   
352 define archhelp                                   
353   echo  '* bzImage              - Compressed k    
354   echo  '  install              - Install kern    
355   echo  '                         (distributio    
356   echo  '                         $$(INSTALL_P    
357   echo  ''                                        
358   echo  '  fdimage              - Create 1.4MB    
359   echo  '  fdimage144           - Create 1.4MB    
360   echo  '  fdimage288           - Create 2.8MB    
361   echo  '  hdimage              - Create a BIO    
362   echo  '  isoimage             - Create a boo    
363   echo  '                         bzdisk/fdima    
364   echo  '                         FDARGS="..."    
365   echo  '                         FDINITRD=fil    
366                                                   
367 endef                                             
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php