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