xref: /linux/Kbuild (revision 559df2e0210352f83926d178c40c51142292a18c)
186feeaa8SSam Ravnborg#
286feeaa8SSam Ravnborg# Kbuild for top-level directory of the kernel
386feeaa8SSam Ravnborg# This file takes care of the following:
41cdf25d7SChristoph Lameter# 1) Generate bounds.h
51cdf25d7SChristoph Lameter# 2) Generate asm-offsets.h (may need bounds.h)
61cdf25d7SChristoph Lameter# 3) Check for missing system calls
786feeaa8SSam Ravnborg
886feeaa8SSam Ravnborg#####
91cdf25d7SChristoph Lameter# 1) Generate bounds.h
101cdf25d7SChristoph Lameter
1101fc0ac1SSam Ravnborgbounds-file := include/generated/bounds.h
121cdf25d7SChristoph Lameter
131cdf25d7SChristoph Lameteralways  := $(bounds-file)
141cdf25d7SChristoph Lametertargets := $(bounds-file) kernel/bounds.s
151cdf25d7SChristoph Lameter
161cdf25d7SChristoph Lameterquiet_cmd_bounds = GEN     $@
171cdf25d7SChristoph Lameterdefine cmd_bounds
181cdf25d7SChristoph Lameter	(set -e; \
191cdf25d7SChristoph Lameter	 echo "#ifndef __LINUX_BOUNDS_H__"; \
201cdf25d7SChristoph Lameter	 echo "#define __LINUX_BOUNDS_H__"; \
211cdf25d7SChristoph Lameter	 echo "/*"; \
221cdf25d7SChristoph Lameter	 echo " * DO NOT MODIFY."; \
231cdf25d7SChristoph Lameter	 echo " *"; \
241cdf25d7SChristoph Lameter	 echo " * This file was generated by Kbuild"; \
251cdf25d7SChristoph Lameter	 echo " *"; \
261cdf25d7SChristoph Lameter	 echo " */"; \
271cdf25d7SChristoph Lameter	 echo ""; \
281cdf25d7SChristoph Lameter	 sed -ne $(sed-y) $<; \
291cdf25d7SChristoph Lameter	 echo ""; \
301cdf25d7SChristoph Lameter	 echo "#endif" ) > $@
311cdf25d7SChristoph Lameterendef
321cdf25d7SChristoph Lameter
331cdf25d7SChristoph Lameter# We use internal kbuild rules to avoid the "is up to date" message from make
341cdf25d7SChristoph Lameterkernel/bounds.s: kernel/bounds.c FORCE
351cdf25d7SChristoph Lameter	$(Q)mkdir -p $(dir $@)
361cdf25d7SChristoph Lameter	$(call if_changed_dep,cc_s_c)
371cdf25d7SChristoph Lameter
381cdf25d7SChristoph Lameter$(obj)/$(bounds-file): kernel/bounds.s Kbuild
391cdf25d7SChristoph Lameter	$(Q)mkdir -p $(dir $@)
401cdf25d7SChristoph Lameter	$(call cmd,bounds)
411cdf25d7SChristoph Lameter
421cdf25d7SChristoph Lameter#####
431cdf25d7SChristoph Lameter# 2) Generate asm-offsets.h
4486feeaa8SSam Ravnborg#
4586feeaa8SSam Ravnborg
46*559df2e0SSam Ravnborgoffsets-file := include/generated/asm-offsets.h
4786feeaa8SSam Ravnborg
481cdf25d7SChristoph Lameteralways  += $(offsets-file)
491cdf25d7SChristoph Lametertargets += $(offsets-file)
506752ed90SThomas Gleixnertargets += arch/$(SRCARCH)/kernel/asm-offsets.s
511cdf25d7SChristoph Lameter
5286feeaa8SSam Ravnborg
53048eb582SSam Ravnborg# Default sed regexp - multiline due to syntax constraints
54048eb582SSam Ravnborgdefine sed-y
55bf2ae2b3SChristoph Lameter	"/^->/{s:->#\(.*\):/* \1 */:; \
56bf2ae2b3SChristoph Lameter	s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
57bf2ae2b3SChristoph Lameter	s:->::; p;}"
58048eb582SSam Ravnborgendef
59048eb582SSam Ravnborg
6086feeaa8SSam Ravnborgquiet_cmd_offsets = GEN     $@
6186feeaa8SSam Ravnborgdefine cmd_offsets
6286feeaa8SSam Ravnborg	(set -e; \
6386feeaa8SSam Ravnborg	 echo "#ifndef __ASM_OFFSETS_H__"; \
6486feeaa8SSam Ravnborg	 echo "#define __ASM_OFFSETS_H__"; \
6586feeaa8SSam Ravnborg	 echo "/*"; \
6686feeaa8SSam Ravnborg	 echo " * DO NOT MODIFY."; \
6786feeaa8SSam Ravnborg	 echo " *"; \
6865ff22eeSOlaf Hering	 echo " * This file was generated by Kbuild"; \
6986feeaa8SSam Ravnborg	 echo " *"; \
7086feeaa8SSam Ravnborg	 echo " */"; \
7186feeaa8SSam Ravnborg	 echo ""; \
72ac448afbSBrian Gerst	 sed -ne $(sed-y) $<; \
7386feeaa8SSam Ravnborg	 echo ""; \
7486feeaa8SSam Ravnborg	 echo "#endif" ) > $@
7586feeaa8SSam Ravnborgendef
7686feeaa8SSam Ravnborg
7786feeaa8SSam Ravnborg# We use internal kbuild rules to avoid the "is up to date" message from make
781cdf25d7SChristoph Lameterarch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c \
791cdf25d7SChristoph Lameter                                      $(obj)/$(bounds-file) FORCE
8086feeaa8SSam Ravnborg	$(Q)mkdir -p $(dir $@)
8186feeaa8SSam Ravnborg	$(call if_changed_dep,cc_s_c)
8286feeaa8SSam Ravnborg
836752ed90SThomas Gleixner$(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild
8486feeaa8SSam Ravnborg	$(call cmd,offsets)
8586feeaa8SSam Ravnborg
86c53aeca0SSam Ravnborg#####
871cdf25d7SChristoph Lameter# 3) Check for missing system calls
88c53aeca0SSam Ravnborg#
89c53aeca0SSam Ravnborg
90c53aeca0SSam Ravnborgquiet_cmd_syscalls = CALL    $<
91c53aeca0SSam Ravnborg      cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags)
92c53aeca0SSam Ravnborg
93c53aeca0SSam RavnborgPHONY += missing-syscalls
94c53aeca0SSam Ravnborgmissing-syscalls: scripts/checksyscalls.sh FORCE
95c53aeca0SSam Ravnborg	$(call cmd,syscalls)
961cdf25d7SChristoph Lameter
971cdf25d7SChristoph Lameter# Delete all targets during make clean
987d3cc8b6SJan Blunckclean-files := $(addprefix $(objtree)/,$(filter-out $(bounds-file) $(offsets-file),$(targets)))
99