1# 2# Kbuild for top-level directory of the kernel 3# This file takes care of the following: 4# 1) Generate asm-offsets.h 5# 2) Check for missing system calls 6 7##### 8# 1) Generate asm-offsets.h 9# 10 11offsets-file := include/asm-$(ARCH)/asm-offsets.h 12 13always := $(offsets-file) 14targets := $(offsets-file) 15targets += arch/$(ARCH)/kernel/asm-offsets.s 16 17# Default sed regexp - multiline due to syntax constraints 18define sed-y 19 "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}" 20endef 21# Override default regexp for specific architectures 22sed-$(CONFIG_MIPS) := "/^@@@/{s/^@@@//; s/ \#.*\$$//; p;}" 23 24quiet_cmd_offsets = GEN $@ 25define cmd_offsets 26 (set -e; \ 27 echo "#ifndef __ASM_OFFSETS_H__"; \ 28 echo "#define __ASM_OFFSETS_H__"; \ 29 echo "/*"; \ 30 echo " * DO NOT MODIFY."; \ 31 echo " *"; \ 32 echo " * This file was generated by Kbuild"; \ 33 echo " *"; \ 34 echo " */"; \ 35 echo ""; \ 36 sed -ne $(sed-y) $<; \ 37 echo ""; \ 38 echo "#endif" ) > $@ 39endef 40 41# We use internal kbuild rules to avoid the "is up to date" message from make 42arch/$(ARCH)/kernel/asm-offsets.s: arch/$(ARCH)/kernel/asm-offsets.c FORCE 43 $(Q)mkdir -p $(dir $@) 44 $(call if_changed_dep,cc_s_c) 45 46$(obj)/$(offsets-file): arch/$(ARCH)/kernel/asm-offsets.s Kbuild 47 $(Q)mkdir -p $(dir $@) 48 $(call cmd,offsets) 49 50##### 51# 2) Check for missing system calls 52# 53 54quiet_cmd_syscalls = CALL $< 55 cmd_syscalls = $(CONFIG_SHELL) $< $(CC) $(c_flags) 56 57PHONY += missing-syscalls 58missing-syscalls: scripts/checksyscalls.sh FORCE 59 $(call cmd,syscalls) 60