mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
				synced 2025-10-31 06:54:45 +10:00 
			
		
		
		
	One of the most remarkable improvements in this cycle is, Kbuild is
 now able to cache the result of shell commands.  Some variables are
 expensive to compute, for example, $(call cc-option,...) invokes the
 compiler.  It is not efficient to redo this computation every time,
 even when we are not actually building anything.  Kbuild creates a
 hidden file ".cache.mk" that contains invoked shell commands and
 their results.  The speed-up should be noticeable.
 
 Summary:
 
 - Fix arch build issues (hexagon, sh)
 
 - Clean up various Makefiles and scripts
 
 - Fix wrong usage of {CFLAGS,LDFLAGS}_MODULE in arch Makefiles
 
 - Cache variables that are expensive to compute
 
 - Improve cc-ldopton and ld-option for Clang
 
 - Optimize output directory creation
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJaDxaLAAoJED2LAQed4NsGIHQP/isMxxaIxIAWU56+ZcII74k7
 639VgrKi9n5y25d1dBRTQg+vReHE6E2JbkCqpVOu11t7m0LT7yUK8v3WwyLf1qTN
 GxnqZ/WMQU5/AYVqIWo8jN4FGHpivHJ6qbeiNJM9qN4RAkzG0sZUq746VaFZYmIR
 Lu0Gf4m4qjifkkhXsQdWT5i7yNTidPqaL6GNb+FcFkEHlVre8jma0kJlgfHxru84
 WmETpjQXvHAZ/R61vY6ekAWpqFhw3ecJY96A9npnx+SQVQdSNAdpaU0SK29jB0ON
 /SAfpHg9oa/gD0LFOKV6zkjnAkd4TEjrJEiHHhz5gjT/SbS3T1llBIGZ1oV4X7Y0
 Vlh9KWlm1FJJI4SIzc9qUaQMp6JtLfEfHKJCc45xVaN3fNrDnR8jl80x5+95ELga
 dCkZgnq5u82MtTysCbHBESwDYQaVPyIrh7In+mduglaCqhqj9KoDjoLoiGfCg7SA
 3tPflYVd629w5l5GrazJ40jWn1+ggMtgMOVooJNJ+dINCP+GxsUpH84Ww2Pdic+/
 qLdud6TeqxrZDGzWXqKNLu8alM8NGgSr101l9gIf1oqSyy63duBpMrxGDoIJS3FU
 rFDoFFUhlfkAXNbQHtVGNzKtcpCjURh992j9Fa1+NfMwSce5IHkMwTvPmNSRowi8
 0llLjXhD/bxK6FpdvlV8
 =zIdO
 -----END PGP SIGNATURE-----
Merge tag 'kbuild-v4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
Pull Kbuild updates from Masahiro Yamada:
 "One of the most remarkable improvements in this cycle is, Kbuild is
  now able to cache the result of shell commands. Some variables are
  expensive to compute, for example, $(call cc-option,...) invokes the
  compiler. It is not efficient to redo this computation every time,
  even when we are not actually building anything. Kbuild creates a
  hidden file ".cache.mk" that contains invoked shell commands and their
  results. The speed-up should be noticeable.
  Summary:
   - Fix arch build issues (hexagon, sh)
   - Clean up various Makefiles and scripts
   - Fix wrong usage of {CFLAGS,LDFLAGS}_MODULE in arch Makefiles
   - Cache variables that are expensive to compute
   - Improve cc-ldopton and ld-option for Clang
   - Optimize output directory creation"
* tag 'kbuild-v4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (30 commits)
  kbuild: move coccicheck help from scripts/Makefile.help to top Makefile
  sh: decompressor: add shipped files to .gitignore
  frv: .gitignore: ignore vmlinux.lds
  selinux: remove unnecessary assignment to subdir-
  kbuild: specify FORCE in Makefile.headersinst as .PHONY target
  kbuild: remove redundant mkdir from ./Kbuild
  kbuild: optimize object directory creation for incremental build
  kbuild: create object directories simpler and faster
  kbuild: filter-out PHONY targets from "targets"
  kbuild: remove redundant $(wildcard ...) for cmd_files calculation
  kbuild: create directory for make cache only when necessary
  sh: select KBUILD_DEFCONFIG depending on ARCH
  kbuild: fix linker feature test macros when cross compiling with Clang
  kbuild: shrink .cache.mk when it exceeds 1000 lines
  kbuild: do not call cc-option before KBUILD_CFLAGS initialization
  kbuild: Cache a few more calls to the compiler
  kbuild: Add a cache for generated variables
  kbuild: add forward declaration of default target to Makefile.asm-generic
  kbuild: remove KBUILD_SUBDIR_ASFLAGS and KBUILD_SUBDIR_CCFLAGS
  hexagon/kbuild: replace CFLAGS_MODULE with KBUILD_CFLAGS_MODULE
  ...
		
	
			
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| # SPDX-License-Identifier: GPL-2.0
 | |
| #
 | |
| # Kbuild for top-level directory of the kernel
 | |
| # This file takes care of the following:
 | |
| # 1) Generate bounds.h
 | |
| # 2) Generate timeconst.h
 | |
| # 3) Generate asm-offsets.h (may need bounds.h and timeconst.h)
 | |
| # 4) Check for missing system calls
 | |
| # 5) Generate constants.py (may need bounds.h)
 | |
| 
 | |
| #####
 | |
| # 1) Generate bounds.h
 | |
| 
 | |
| bounds-file := include/generated/bounds.h
 | |
| 
 | |
| always  := $(bounds-file)
 | |
| targets := kernel/bounds.s
 | |
| 
 | |
| # We use internal kbuild rules to avoid the "is up to date" message from make
 | |
| kernel/bounds.s: kernel/bounds.c FORCE
 | |
| 	$(call if_changed_dep,cc_s_c)
 | |
| 
 | |
| $(obj)/$(bounds-file): kernel/bounds.s FORCE
 | |
| 	$(call filechk,offsets,__LINUX_BOUNDS_H__)
 | |
| 
 | |
| #####
 | |
| # 2) Generate timeconst.h
 | |
| 
 | |
| timeconst-file := include/generated/timeconst.h
 | |
| 
 | |
| targets += $(timeconst-file)
 | |
| 
 | |
| quiet_cmd_gentimeconst = GEN     $@
 | |
| define cmd_gentimeconst
 | |
| 	(echo $(CONFIG_HZ) | bc -q $< ) > $@
 | |
| endef
 | |
| define filechk_gentimeconst
 | |
| 	(echo $(CONFIG_HZ) | bc -q $< )
 | |
| endef
 | |
| 
 | |
| $(obj)/$(timeconst-file): kernel/time/timeconst.bc FORCE
 | |
| 	$(call filechk,gentimeconst)
 | |
| 
 | |
| #####
 | |
| # 3) Generate asm-offsets.h
 | |
| #
 | |
| 
 | |
| offsets-file := include/generated/asm-offsets.h
 | |
| 
 | |
| always  += $(offsets-file)
 | |
| targets += arch/$(SRCARCH)/kernel/asm-offsets.s
 | |
| 
 | |
| # We use internal kbuild rules to avoid the "is up to date" message from make
 | |
| arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \
 | |
|                                       $(obj)/$(timeconst-file) $(obj)/$(bounds-file) FORCE
 | |
| 	$(call if_changed_dep,cc_s_c)
 | |
| 
 | |
| $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s FORCE
 | |
| 	$(call filechk,offsets,__ASM_OFFSETS_H__)
 | |
| 
 | |
| #####
 | |
| # 4) Check for missing system calls
 | |
| #
 | |
| 
 | |
| always += missing-syscalls
 | |
| targets += missing-syscalls
 | |
| 
 | |
| quiet_cmd_syscalls = CALL    $<
 | |
|       cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags)
 | |
| 
 | |
| missing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE
 | |
| 	$(call cmd,syscalls)
 | |
| 
 | |
| #####
 | |
| # 5) Generate constants for Python GDB integration
 | |
| #
 | |
| 
 | |
| extra-$(CONFIG_GDB_SCRIPTS) += build_constants_py
 | |
| 
 | |
| build_constants_py: $(obj)/$(timeconst-file) $(obj)/$(bounds-file)
 | |
| 	@$(MAKE) $(build)=scripts/gdb/linux $@
 | |
| 
 | |
| # Keep these three files during make clean
 | |
| no-clean-files := $(bounds-file) $(offsets-file) $(timeconst-file)
 |