Version:  2.0.40 2.2.26 2.4.37 3.13 3.14 3.15 3.16 3.17 3.18 3.19 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10

Linux/Kbuild

  1 #
  2 # Kbuild for top-level directory of the kernel
  3 # This file takes care of the following:
  4 # 1) Generate bounds.h
  5 # 2) Generate timeconst.h
  6 # 3) Generate asm-offsets.h (may need bounds.h and timeconst.h)
  7 # 4) Check for missing system calls
  8 # 5) Generate constants.py (may need bounds.h)
  9 
 10 # Default sed regexp - multiline due to syntax constraints
 11 define sed-y
 12         "/^->/{s:->#\(.*\):/* \1 */:; \
 13         s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
 14         s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
 15         s:->::; p;}"
 16 endef
 17 
 18 # Use filechk to avoid rebuilds when a header changes, but the resulting file
 19 # does not
 20 define filechk_offsets
 21         (set -e; \
 22          echo "#ifndef $2"; \
 23          echo "#define $2"; \
 24          echo "/*"; \
 25          echo " * DO NOT MODIFY."; \
 26          echo " *"; \
 27          echo " * This file was generated by Kbuild"; \
 28          echo " */"; \
 29          echo ""; \
 30          sed -ne $(sed-y); \
 31          echo ""; \
 32          echo "#endif" )
 33 endef
 34 
 35 #####
 36 # 1) Generate bounds.h
 37 
 38 bounds-file := include/generated/bounds.h
 39 
 40 always  := $(bounds-file)
 41 targets := kernel/bounds.s
 42 
 43 # We use internal kbuild rules to avoid the "is up to date" message from make
 44 kernel/bounds.s: kernel/bounds.c FORCE
 45         $(Q)mkdir -p $(dir $@)
 46         $(call if_changed_dep,cc_s_c)
 47 
 48 $(obj)/$(bounds-file): kernel/bounds.s FORCE
 49         $(call filechk,offsets,__LINUX_BOUNDS_H__)
 50 
 51 #####
 52 # 2) Generate timeconst.h
 53 
 54 timeconst-file := include/generated/timeconst.h
 55 
 56 targets += $(timeconst-file)
 57 
 58 quiet_cmd_gentimeconst = GEN     $@
 59 define cmd_gentimeconst
 60         (echo $(CONFIG_HZ) | bc -q $< ) > $@
 61 endef
 62 define filechk_gentimeconst
 63         (echo $(CONFIG_HZ) | bc -q $< )
 64 endef
 65 
 66 $(obj)/$(timeconst-file): kernel/time/timeconst.bc FORCE
 67         $(call filechk,gentimeconst)
 68 
 69 #####
 70 # 3) Generate asm-offsets.h
 71 #
 72 
 73 offsets-file := include/generated/asm-offsets.h
 74 
 75 always  += $(offsets-file)
 76 targets += arch/$(SRCARCH)/kernel/asm-offsets.s
 77 
 78 # We use internal kbuild rules to avoid the "is up to date" message from make
 79 arch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \
 80                                       $(obj)/$(timeconst-file) $(obj)/$(bounds-file) FORCE
 81         $(Q)mkdir -p $(dir $@)
 82         $(call if_changed_dep,cc_s_c)
 83 
 84 $(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s FORCE
 85         $(call filechk,offsets,__ASM_OFFSETS_H__)
 86 
 87 #####
 88 # 4) Check for missing system calls
 89 #
 90 
 91 always += missing-syscalls
 92 targets += missing-syscalls
 93 
 94 quiet_cmd_syscalls = CALL    $<
 95       cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) $(missing_syscalls_flags)
 96 
 97 missing-syscalls: scripts/checksyscalls.sh $(offsets-file) FORCE
 98         $(call cmd,syscalls)
 99 
100 #####
101 # 5) Generate constants for Python GDB integration
102 #
103 
104 extra-$(CONFIG_GDB_SCRIPTS) += build_constants_py
105 
106 build_constants_py: $(obj)/$(timeconst-file) $(obj)/$(bounds-file)
107         @$(MAKE) $(build)=scripts/gdb/linux $@
108 
109 # Keep these three files during make clean
110 no-clean-files := $(bounds-file) $(offsets-file) $(timeconst-file)

This page was automatically generated by LXR 0.3.1 (source).  •  Linux is a registered trademark of Linus Torvalds  •  Contact us