xref: /linux/Kbuild (revision 6752ed90da032af72f2f1fa23d1abf0889b56db0)
186feeaa8SSam Ravnborg#
286feeaa8SSam Ravnborg# Kbuild for top-level directory of the kernel
386feeaa8SSam Ravnborg# This file takes care of the following:
486feeaa8SSam Ravnborg# 1) Generate asm-offsets.h
5c53aeca0SSam Ravnborg# 2) Check for missing system calls
686feeaa8SSam Ravnborg
786feeaa8SSam Ravnborg#####
886feeaa8SSam Ravnborg# 1) Generate asm-offsets.h
986feeaa8SSam Ravnborg#
1086feeaa8SSam Ravnborg
1186feeaa8SSam Ravnborgoffsets-file := include/asm-$(ARCH)/asm-offsets.h
1286feeaa8SSam Ravnborg
1386feeaa8SSam Ravnborgalways  := $(offsets-file)
1486feeaa8SSam Ravnborgtargets := $(offsets-file)
15*6752ed90SThomas Gleixnertargets += arch/$(SRCARCH)/kernel/asm-offsets.s
16f241182bSSam Ravnborgclean-files := $(addprefix $(objtree)/,$(targets))
1786feeaa8SSam Ravnborg
18048eb582SSam Ravnborg# Default sed regexp - multiline due to syntax constraints
19048eb582SSam Ravnborgdefine sed-y
20048eb582SSam Ravnborg	"/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"
21048eb582SSam Ravnborgendef
22048eb582SSam Ravnborg# Override default regexp for specific architectures
230947640fSAtsushi Nemotosed-$(CONFIG_MIPS) := "/^@@@/{s/^@@@//; s/ \#.*\$$//; p;}"
24048eb582SSam Ravnborg
2586feeaa8SSam Ravnborgquiet_cmd_offsets = GEN     $@
2686feeaa8SSam Ravnborgdefine cmd_offsets
2786feeaa8SSam Ravnborg	(set -e; \
2886feeaa8SSam Ravnborg	 echo "#ifndef __ASM_OFFSETS_H__"; \
2986feeaa8SSam Ravnborg	 echo "#define __ASM_OFFSETS_H__"; \
3086feeaa8SSam Ravnborg	 echo "/*"; \
3186feeaa8SSam Ravnborg	 echo " * DO NOT MODIFY."; \
3286feeaa8SSam Ravnborg	 echo " *"; \
3365ff22eeSOlaf Hering	 echo " * This file was generated by Kbuild"; \
3486feeaa8SSam Ravnborg	 echo " *"; \
3586feeaa8SSam Ravnborg	 echo " */"; \
3686feeaa8SSam Ravnborg	 echo ""; \
37ac448afbSBrian Gerst	 sed -ne $(sed-y) $<; \
3886feeaa8SSam Ravnborg	 echo ""; \
3986feeaa8SSam Ravnborg	 echo "#endif" ) > $@
4086feeaa8SSam Ravnborgendef
4186feeaa8SSam Ravnborg
4286feeaa8SSam Ravnborg# We use internal kbuild rules to avoid the "is up to date" message from make
43*6752ed90SThomas Gleixnerarch/$(SRCARCH)/kernel/asm-offsets.s: arch/$(SRCARCH)/kernel/asm-offsets.c FORCE
4486feeaa8SSam Ravnborg	$(Q)mkdir -p $(dir $@)
4586feeaa8SSam Ravnborg	$(call if_changed_dep,cc_s_c)
4686feeaa8SSam Ravnborg
47*6752ed90SThomas Gleixner$(obj)/$(offsets-file): arch/$(SRCARCH)/kernel/asm-offsets.s Kbuild
48ac448afbSBrian Gerst	$(Q)mkdir -p $(dir $@)
4986feeaa8SSam Ravnborg	$(call cmd,offsets)
5086feeaa8SSam Ravnborg
51c53aeca0SSam Ravnborg#####
52c53aeca0SSam Ravnborg# 2) Check for missing system calls
53c53aeca0SSam Ravnborg#
54c53aeca0SSam Ravnborg
55c53aeca0SSam Ravnborgquiet_cmd_syscalls = CALL    $<
56c53aeca0SSam Ravnborg      cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags)
57c53aeca0SSam Ravnborg
58c53aeca0SSam RavnborgPHONY += missing-syscalls
59c53aeca0SSam Ravnborgmissing-syscalls: scripts/checksyscalls.sh FORCE
60c53aeca0SSam Ravnborg	$(call cmd,syscalls)
61